From eca19c5d361c85ca52ed83f08b7434282f7c3560 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Fri, 25 Aug 2023 20:04:39 +0000 Subject: [PATCH 001/167] Mainline 3566 work starts. --- Makefile | 5 + .../RK3566-ML/linux/linux.aarch64.conf | 6216 +++++++++++++++++ projects/Rockchip/devices/RK3566-ML/options | 158 + projects/Rockchip/packages/linux/package.mk | 4 + projects/Rockchip/packages/u-boot/package.mk | 4 + 5 files changed, 6387 insertions(+) create mode 100644 projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf create mode 100644 projects/Rockchip/devices/RK3566-ML/options diff --git a/Makefile b/Makefile index 715228b06d..159dd3dd2f 100644 --- a/Makefile +++ b/Makefile @@ -51,6 +51,11 @@ RK3566-X55: DEVICE_ROOT=RK3566 PROJECT=Rockchip DEVICE=RK3566-X55 ARCH=arm ./scripts/build_distro DEVICE_ROOT=RK3566 PROJECT=Rockchip DEVICE=RK3566-X55 ARCH=aarch64 ./scripts/build_distro +RK3566-ML: + unset DEVICE_ROOT + PROJECT=Rockchip DEVICE=RK3566-ML ARCH=arm ./scripts/build_distro + PROJECT=Rockchip DEVICE=RK3566-ML ARCH=aarch64 ./scripts/build_distro + RK3326: unset DEVICE_ROOT PROJECT=Rockchip DEVICE=RK3326 ARCH=arm ./scripts/build_distro diff --git a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf new file mode 100644 index 0000000000..a84c5c04c9 --- /dev/null +++ b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf @@ -0,0 +1,6216 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/arm64 4.19.172 Kernel Configuration +# + +# +# Compiler: aarch64-libreelec-linux-gnueabi-gcc-10.3.0 (GCC) 10.3.0 +# +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=100300 +CONFIG_CLANG_VERSION=0 +CONFIG_CC_HAS_ASM_GOTO=y +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_EXTABLE_SORT=y +CONFIG_THREAD_INFO_IN_TASK=y + +# +# General setup +# +CONFIG_INIT_ENV_ARG_LIMIT=32 +# CONFIG_COMPILE_TEST is not set +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_BUILD_SALT="" +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_LZ4=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_LZ4 is not set +CONFIG_DEFAULT_HOSTNAME="@DEVICENAME@" +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +# CONFIG_POSIX_MQUEUE is not set +CONFIG_CROSS_MEMORY_ATTACH=y +# CONFIG_USELIB is not set +# CONFIG_AUDIT is not set +CONFIG_HAVE_ARCH_AUDITSYSCALL=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y +CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y +CONFIG_GENERIC_IRQ_MIGRATION=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_CHIP=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_GENERIC_MSI_IRQ=y +CONFIG_GENERIC_MSI_IRQ_DOMAIN=y +CONFIG_HANDLE_DOMAIN_IRQ=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_SPARSE_IRQ=y +# CONFIG_GENERIC_IRQ_DEBUGFS is not set +CONFIG_GENERIC_IRQ_MULTI_HANDLER=y +CONFIG_ARCH_CLOCKSOURCE_DATA=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_ARCH_HAS_TICK_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y + +# +# Timers subsystem +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ_COMMON=y +# CONFIG_HZ_PERIODIC is not set +CONFIG_NO_HZ_IDLE=y +# CONFIG_NO_HZ_FULL is not set +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +# CONFIG_PREEMPT is not set + +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +# CONFIG_IRQ_TIME_ACCOUNTING is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_TASKSTATS is not set +# CONFIG_PSI is not set +CONFIG_CPU_ISOLATION=y + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_SRCU=y +CONFIG_TREE_SRCU=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_RCU_NEED_SEGCBLIST=y +CONFIG_BUILD_BIN2C=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +# CONFIG_IKHEADERS is not set +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 +CONFIG_GENERIC_SCHED_CLOCK=y + +# +# Scheduler features +# +CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_ARCH_SUPPORTS_INT128=y +CONFIG_CGROUPS=y +# CONFIG_MEMCG is not set +CONFIG_BLK_CGROUP=y +# CONFIG_DEBUG_BLK_CGROUP is not set +CONFIG_CGROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y +# CONFIG_RT_GROUP_SCHED is not set +# CONFIG_CGROUP_PIDS is not set +# CONFIG_CGROUP_RDMA is not set +CONFIG_CGROUP_FREEZER=y +CONFIG_CPUSETS=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +# CONFIG_CGROUP_DEBUG is not set +CONFIG_SOCK_CGROUP_DATA=y +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_IPC_NS=y +CONFIG_USER_NS=y +CONFIG_PID_NS=y +CONFIG_NET_NS=y +# CONFIG_CHECKPOINT_RESTORE is not set +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_SCHED_TUNE is not set +# CONFIG_SYSFS_DEPRECATED is not set +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_INITRAMFS_ROOT_UID=0 +CONFIG_INITRAMFS_ROOT_GID=0 +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_RD_XZ=y +CONFIG_RD_LZO=y +CONFIG_RD_LZ4=y +CONFIG_INITRAMFS_COMPRESSION=".gz" +# CONFIG_INITRD_ASYNC is not set +# CONFIG_ROCKCHIP_ONE_INITRD is not set +CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_SYSCTL=y +CONFIG_HAVE_UID16=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_BPF=y +CONFIG_EXPERT=y +CONFIG_UID16=y +CONFIG_MULTIUSER=y +# CONFIG_SGETMASK_SYSCALL is not set +CONFIG_SYSFS_SYSCALL=y +# CONFIG_SYSCTL_SYSCALL is not set +CONFIG_FHANDLE=y +CONFIG_POSIX_TIMERS=y +CONFIG_PRINTK=y +CONFIG_PRINTK_NMI=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_FUTEX_PI=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_ADVISE_SYSCALLS=y +CONFIG_MEMBARRIER=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +CONFIG_KALLSYMS_BASE_RELATIVE=y +# CONFIG_BPF_SYSCALL is not set +# CONFIG_USERFAULTFD is not set +CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y +CONFIG_RSEQ=y +# CONFIG_DEBUG_RSEQ is not set +CONFIG_EMBEDDED=y +CONFIG_HAVE_PERF_EVENTS=y +# CONFIG_PC104 is not set + +# +# Kernel Performance Events And Counters +# +# CONFIG_PERF_EVENTS is not set +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_SLUB_SYSFS=y +CONFIG_SLUB_DEBUG=y +# CONFIG_COMPAT_BRK is not set +# CONFIG_SLAB is not set +CONFIG_SLUB=y +# CONFIG_SLOB is not set +CONFIG_SLAB_MERGE_DEFAULT=y +# CONFIG_SLAB_FREELIST_RANDOM is not set +# CONFIG_SLAB_FREELIST_HARDENED is not set +CONFIG_SLUB_CPU_PARTIAL=y +CONFIG_SYSTEM_DATA_VERIFICATION=y +CONFIG_PROFILING=y +CONFIG_TRACEPOINTS=y +CONFIG_ARM64=y +CONFIG_64BIT=y +CONFIG_MMU=y +CONFIG_ARM64_PAGE_SHIFT=12 +CONFIG_ARM64_CONT_SHIFT=4 +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_STACKTRACE_SUPPORT=y +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CSUM=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_ZONE_DMA32=y +CONFIG_HAVE_GENERIC_GUP=y +CONFIG_SMP=y +CONFIG_KERNEL_MODE_NEON=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_PGTABLE_LEVELS=3 +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_ARCH_PROC_KCORE_TEXT=y + +# +# Platform selection +# +# CONFIG_ARCH_ACTIONS is not set +# CONFIG_ARCH_SUNXI is not set +# CONFIG_ARCH_ALPINE is not set +# CONFIG_ARCH_BCM2835 is not set +# CONFIG_ARCH_BCM_IPROC is not set +# CONFIG_ARCH_BERLIN is not set +# CONFIG_ARCH_BRCMSTB is not set +# CONFIG_ARCH_EXYNOS is not set +# CONFIG_ARCH_K3 is not set +# CONFIG_ARCH_LAYERSCAPE is not set +# CONFIG_ARCH_LG1K is not set +# CONFIG_ARCH_HISI is not set +# CONFIG_ARCH_MEDIATEK is not set +# CONFIG_ARCH_MESON is not set +# CONFIG_ARCH_MVEBU is not set +# CONFIG_ARCH_QCOM is not set +# CONFIG_ARCH_REALTEK is not set +CONFIG_ARCH_ROCKCHIP=y +# CONFIG_ARCH_SEATTLE is not set +# CONFIG_ARCH_SYNQUACER is not set +# CONFIG_ARCH_RENESAS is not set +# CONFIG_ARCH_STRATIX10 is not set +# CONFIG_ARCH_TEGRA is not set +# CONFIG_ARCH_SPRD is not set +# CONFIG_ARCH_THUNDER is not set +# CONFIG_ARCH_THUNDER2 is not set +# CONFIG_ARCH_UNIPHIER is not set +# CONFIG_ARCH_VEXPRESS is not set +# CONFIG_ARCH_XGENE is not set +# CONFIG_ARCH_ZX is not set +# CONFIG_ARCH_ZYNQMP is not set + +# +# Bus support +# +CONFIG_PCI=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_DOMAINS_GENERIC=y +CONFIG_PCI_SYSCALL=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCIEAER=y +# CONFIG_PCIEAER_INJECT is not set +# CONFIG_PCIE_ECRC is not set +CONFIG_PCIEASPM=y +# CONFIG_PCIEASPM_DEBUG is not set +CONFIG_PCIEASPM_DEFAULT=y +# CONFIG_PCIEASPM_POWERSAVE is not set +# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set +# CONFIG_PCIEASPM_PERFORMANCE is not set +CONFIG_PCIE_PME=y +# CONFIG_PCIE_DPC is not set +# CONFIG_PCIE_PTM is not set +CONFIG_PCI_MSI=y +CONFIG_PCI_MSI_IRQ_DOMAIN=y +CONFIG_PCI_QUIRKS=y +# CONFIG_PCI_DEBUG is not set +# CONFIG_PCI_STUB is not set +# CONFIG_PCI_IOV is not set +# CONFIG_PCI_PRI is not set +# CONFIG_PCI_PASID is not set +# CONFIG_HOTPLUG_PCI is not set + +# +# PCI controller drivers +# + +# +# Cadence PCIe controllers support +# +# CONFIG_PCIE_CADENCE_HOST is not set +# CONFIG_PCI_FTPCI100 is not set +# CONFIG_PCI_HOST_GENERIC is not set +# CONFIG_PCIE_XILINX is not set +# CONFIG_PCI_XGENE is not set +# CONFIG_PCI_HOST_THUNDER_PEM is not set +# CONFIG_PCI_HOST_THUNDER_ECAM is not set +# CONFIG_PCIE_ROCKCHIP_HOST is not set +# CONFIG_ROCKCHIP_PCIE_DMA_OBJ is not set + +# +# DesignWare PCI Core Support +# +CONFIG_PCIE_DW=y +CONFIG_PCIE_DW_HOST=y +# CONFIG_PCIE_DW_PLAT_HOST is not set +CONFIG_PCIE_DW_ROCKCHIP=y +# CONFIG_PCI_HISI is not set +# CONFIG_PCIE_KIRIN is not set + +# +# PCI Endpoint +# +# CONFIG_PCI_ENDPOINT is not set + +# +# PCI switch controller drivers +# +# CONFIG_PCI_SW_SWITCHTEC is not set + +# +# Kernel Features +# + +# +# ARM errata workarounds via the alternatives framework +# +# CONFIG_ARM64_ERRATUM_826319 is not set +# CONFIG_ARM64_ERRATUM_827319 is not set +# CONFIG_ARM64_ERRATUM_824069 is not set +# CONFIG_ARM64_ERRATUM_819472 is not set +# CONFIG_ARM64_ERRATUM_832075 is not set +CONFIG_ARM64_ERRATUM_845719=y +CONFIG_ARM64_ERRATUM_843419=y +CONFIG_ARM64_ERRATUM_1024718=y +CONFIG_ARM64_ERRATUM_1463225=y +CONFIG_ARM64_ERRATUM_1542419=y +# CONFIG_CAVIUM_ERRATUM_22375 is not set +# CONFIG_CAVIUM_ERRATUM_23154 is not set +CONFIG_CAVIUM_ERRATUM_27456=y +CONFIG_CAVIUM_ERRATUM_30115=y +CONFIG_QCOM_FALKOR_ERRATUM_1003=y +CONFIG_QCOM_FALKOR_ERRATUM_1009=y +CONFIG_QCOM_QDF2400_ERRATUM_0065=y +CONFIG_SOCIONEXT_SYNQUACER_PREITS=y +CONFIG_HISILICON_ERRATUM_161600802=y +CONFIG_QCOM_FALKOR_ERRATUM_E1041=y +CONFIG_ARM64_4K_PAGES=y +# CONFIG_ARM64_16K_PAGES is not set +# 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_PA_BITS_48=y +CONFIG_ARM64_PA_BITS=48 +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_SCHED_MC=y +# CONFIG_SCHED_SMT is not set +CONFIG_NR_CPUS=8 +CONFIG_HOTPLUG_CPU=y +CONFIG_ARCH_NR_GPIO=256 +# CONFIG_NUMA is not set +CONFIG_HOLES_IN_ZONE=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_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_HAVE_ARCH_PFN_VALID=y +CONFIG_SYS_SUPPORTS_HUGETLBFS=y +CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +# CONFIG_ARM64_DMA_USE_IOMMU is not set +CONFIG_SECCOMP=y +# CONFIG_PARAVIRT is not set +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +# CONFIG_KEXEC is not set +# CONFIG_CRASH_DUMP is not set +# CONFIG_XEN is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_UNMAP_KERNEL_AT_EL0=y +CONFIG_HARDEN_BRANCH_PREDICTOR=y +CONFIG_HARDEN_EL2_VECTORS=y +CONFIG_ARM64_SSBD=y +CONFIG_ARM64_TAGGED_ADDR_ABI=y +CONFIG_ARMV8_DEPRECATED=y +CONFIG_SWP_EMULATION=y +CONFIG_CP15_BARRIER_EMULATION=y +CONFIG_SETEND_EMULATION=y +# CONFIG_ARM64_SW_TTBR0_PAN is not set + +# +# ARMv8.1 architectural features +# +CONFIG_ARM64_HW_AFDBM=y +CONFIG_ARM64_PAN=y +CONFIG_ARM64_LSE_ATOMICS=y +CONFIG_ARM64_VHE=y + +# +# ARMv8.2 architectural features +# +CONFIG_ARM64_UAO=y +# CONFIG_ARM64_PMEM is not set +CONFIG_ARM64_RAS_EXTN=y +CONFIG_ARM64_SVE=y +CONFIG_ARM64_MODULE_PLTS=y +# CONFIG_RANDOMIZE_BASE is not set + +# +# Boot options +# +CONFIG_CMDLINE="" +# CONFIG_EFI is not set +CONFIG_COMPAT=y +CONFIG_KUSER_HELPERS=y +CONFIG_SYSVIPC_COMPAT=y + +# +# Power management options +# +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +# CONFIG_SUSPEND_SKIP_SYNC is not set +CONFIG_HAS_WAKELOCK=y +CONFIG_WAKELOCK=y +# CONFIG_HIBERNATION is not set +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +# CONFIG_PM_AUTOSLEEP is not set +# CONFIG_PM_WAKELOCKS is not set +CONFIG_PM=y +CONFIG_PM_DEBUG=y +CONFIG_PM_ADVANCED_DEBUG=y +# CONFIG_PM_TEST_SUSPEND is not set +CONFIG_PM_SLEEP_DEBUG=y +# CONFIG_DPM_WATCHDOG is not set +CONFIG_PM_CLK=y +CONFIG_PM_GENERIC_DOMAINS=y +CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y +CONFIG_PM_GENERIC_DOMAINS_SLEEP=y +CONFIG_PM_GENERIC_DOMAINS_OF=y +CONFIG_CPU_PM=y +CONFIG_ENERGY_MODEL=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y + +# +# CPU Power Management +# + +# +# CPU Idle +# +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y +# CONFIG_CPU_IDLE_GOV_LADDER is not set +CONFIG_CPU_IDLE_GOV_MENU=y +CONFIG_DT_IDLE_STATES=y + +# +# ARM CPU Idle Drivers +# +CONFIG_ARM_CPUIDLE=y + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_GOV_ATTR_SET=y +CONFIG_CPU_FREQ_GOV_COMMON=y +# CONFIG_CPU_FREQ_STAT is not set +# CONFIG_CPU_FREQ_TIMES is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set +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_CONSERVATIVE=y +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y +CONFIG_CPU_FREQ_GOV_INTERACTIVE=y + +# +# CPU frequency scaling drivers +# +CONFIG_CPUFREQ_DT=y +CONFIG_CPUFREQ_DT_PLATDEV=y +# CONFIG_CPUFREQ_DUMMY is not set +# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set +CONFIG_ARM_ROCKCHIP_CPUFREQ=y +# CONFIG_ARM_SCMI_CPUFREQ is not set +# CONFIG_QORIQ_CPUFREQ is not set + +# +# Firmware Drivers +# +CONFIG_ARM_PSCI_FW=y +# CONFIG_ARM_PSCI_CHECKER is not set +CONFIG_ARM_SCMI_PROTOCOL=y +CONFIG_ARM_SCMI_POWER_DOMAIN=y +# CONFIG_ARM_SCPI_PROTOCOL is not set +# CONFIG_ARM_SDE_INTERFACE is not set +# CONFIG_FIRMWARE_MEMMAP is not set +# CONFIG_FW_CFG_SYSFS is not set +CONFIG_ROCKCHIP_SIP=y +CONFIG_HAVE_ARM_SMCCC=y +# CONFIG_GOOGLE_FIRMWARE is not set + +# +# Tegra firmware driver +# +# CONFIG_VIRTUALIZATION is not set +CONFIG_ARM64_CRYPTO=y +CONFIG_CRYPTO_SHA256_ARM64=y +# CONFIG_CRYPTO_SHA512_ARM64 is not set +CONFIG_CRYPTO_SHA1_ARM64_CE=y +CONFIG_CRYPTO_SHA2_ARM64_CE=y +# CONFIG_CRYPTO_SHA512_ARM64_CE is not set +# CONFIG_CRYPTO_SHA3_ARM64 is not set +# CONFIG_CRYPTO_SM3_ARM64_CE is not set +# CONFIG_CRYPTO_SM4_ARM64_CE is not set +CONFIG_CRYPTO_GHASH_ARM64_CE=y +# CONFIG_CRYPTO_CRCT10DIF_ARM64_CE is not set +# CONFIG_CRYPTO_CRC32_ARM64_CE is not set +CONFIG_CRYPTO_AES_ARM64=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 is not set +# CONFIG_CRYPTO_CHACHA20_NEON is not set +# CONFIG_CRYPTO_POLY1305_NEON is not set +# CONFIG_CRYPTO_AES_ARM64_BS is not set + +# +# General architecture-dependent options +# +# CONFIG_KPROBES is not set +# CONFIG_JUMP_LABEL is not set +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_NMI=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GENERIC_IDLE_POLL_SETUP=y +CONFIG_ARCH_HAS_FORTIFY_SOURCE=y +CONFIG_ARCH_HAS_SET_MEMORY=y +CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_RSEQ=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_RCU_TABLE_FREE=y +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y +CONFIG_HAVE_CMPXCHG_LOCAL=y +CONFIG_HAVE_CMPXCHG_DOUBLE=y +CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_SECCOMP_FILTER=y +CONFIG_HAVE_STACKPROTECTOR=y +CONFIG_CC_HAS_STACKPROTECTOR_NONE=y +CONFIG_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR_STRONG=y +CONFIG_ARCH_SUPPORTS_LTO_CLANG=y +CONFIG_ARCH_SUPPORTS_THINLTO=y +CONFIG_LTO_NONE=y +CONFIG_HAVE_CONTEXT_TRACKING=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_HAVE_ARCH_HUGE_VMAP=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_MODULES_USE_ELF_RELA=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_ARCH_MMAP_RND_BITS=18 +CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 +CONFIG_CLONE_BACKWARDS=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_COMPAT_OLD_SIGACTION=y +CONFIG_COMPAT_32BIT_TIME=y +CONFIG_HAVE_ARCH_VMAP_STACK=y +CONFIG_VMAP_STACK=y +CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y +CONFIG_STRICT_KERNEL_RWX=y +CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y +CONFIG_STRICT_MODULE_RWX=y +CONFIG_REFCOUNT_FULL=y +CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +CONFIG_PLUGIN_HOSTCC="" +CONFIG_HAVE_GCC_PLUGINS=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODULE_SIG is not set +# CONFIG_MODULE_COMPRESS is not set +# CONFIG_TRIM_UNUSED_KSYMS is not set +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_BLOCK=y +CONFIG_BLK_SCSI_REQUEST=y +CONFIG_BLK_DEV_BSG=y +# CONFIG_BLK_DEV_BSGLIB is not set +# CONFIG_BLK_DEV_INTEGRITY is not set +# CONFIG_BLK_DEV_ZONED is not set +# CONFIG_BLK_DEV_THROTTLING is not set +# CONFIG_BLK_CMDLINE_PARSER is not set +# CONFIG_BLK_WBT is not set +# CONFIG_BLK_CGROUP_IOLATENCY is not set +CONFIG_BLK_DEBUG_FS=y +# CONFIG_BLK_SED_OPAL is not set +# CONFIG_BLK_INLINE_ENCRYPTION is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_AIX_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_KARMA_PARTITION is not set +CONFIG_EFI_PARTITION=y +# CONFIG_SYSV68_PARTITION is not set +# CONFIG_CMDLINE_PARTITION is not set +CONFIG_BLOCK_COMPAT=y +CONFIG_BLK_MQ_PCI=y + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_CFQ_GROUP_IOSCHED is not set +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="cfq" +CONFIG_MQ_IOSCHED_DEADLINE=y +CONFIG_MQ_IOSCHED_KYBER=y +# CONFIG_IOSCHED_BFQ is not set +CONFIG_ASN1=y +CONFIG_ARCH_INLINE_SPIN_TRYLOCK=y +CONFIG_ARCH_INLINE_SPIN_TRYLOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_LOCK=y +CONFIG_ARCH_INLINE_SPIN_LOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_LOCK_IRQ=y +CONFIG_ARCH_INLINE_SPIN_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE=y +CONFIG_ARCH_INLINE_READ_LOCK=y +CONFIG_ARCH_INLINE_READ_LOCK_BH=y +CONFIG_ARCH_INLINE_READ_LOCK_IRQ=y +CONFIG_ARCH_INLINE_READ_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_READ_UNLOCK=y +CONFIG_ARCH_INLINE_READ_UNLOCK_BH=y +CONFIG_ARCH_INLINE_READ_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_READ_UNLOCK_IRQRESTORE=y +CONFIG_ARCH_INLINE_WRITE_LOCK=y +CONFIG_ARCH_INLINE_WRITE_LOCK_BH=y +CONFIG_ARCH_INLINE_WRITE_LOCK_IRQ=y +CONFIG_ARCH_INLINE_WRITE_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_BH=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE=y +CONFIG_UNINLINE_SPIN_UNLOCK=y +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_LOCK_SPIN_ON_OWNER=y +CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y +CONFIG_ARCH_USE_QUEUED_RWLOCKS=y +CONFIG_QUEUED_RWLOCKS=y +CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y +# CONFIG_GKI_HIDDEN_DRM_CONFIGS is not set +# CONFIG_GKI_HIDDEN_REGMAP_CONFIGS is not set +# CONFIG_GKI_HIDDEN_CRYPTO_CONFIGS is not set +# CONFIG_GKI_HIDDEN_SND_CONFIGS is not set +# CONFIG_GKI_HIDDEN_SND_SOC_CONFIGS is not set +# CONFIG_GKI_HIDDEN_GPIO_CONFIGS is not set +# CONFIG_GKI_HIDDEN_VIRTUAL_CONFIGS is not set +# CONFIG_GKI_LEGACY_WEXT_ALLCONFIG is not set +# CONFIG_GKI_HIDDEN_SOC_PM_CONFIGS is not set +# CONFIG_GKI_HIDDEN_VIDEOBUF2_CONFIGS is not set +# CONFIG_GKI_HIDDEN_USB_CONFIGS is not set +# CONFIG_GKI_HIDDEN_SOC_BUS_CONFIGS is not set +# CONFIG_GKI_HIDDEN_GPU_CONFIGS is not set +# CONFIG_GKI_HIDDEN_IRQ_CONFIGS is not set +# CONFIG_GKI_HACKS_TO_FIX is not set +CONFIG_FREEZER=y + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +CONFIG_COMPAT_BINFMT_ELF=y +CONFIG_ELFCORE=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +CONFIG_BINFMT_SCRIPT=y +CONFIG_BINFMT_MISC=y +CONFIG_COREDUMP=y + +# +# Memory Management options +# +CONFIG_SELECT_MEMORY_MODEL=y +# CONFIG_FLATMEM_MANUAL is not set +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_MEMORY_ISOLATION=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_COMPACTION is not set +CONFIG_MIGRATION=y +CONFIG_PHYS_ADDR_T_64BIT=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +# CONFIG_MEMORY_FAILURE is not set +# CONFIG_TRANSPARENT_HUGEPAGE is not set +# CONFIG_CLEANCACHE is not set +# CONFIG_FRONTSWAP is not set +CONFIG_CMA=y +# CONFIG_CMA_DEBUG is not set +# CONFIG_CMA_DEBUGFS is not set +CONFIG_CMA_AREAS=7 +# 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_MM_EVENT_STAT is not set +CONFIG_GENERIC_EARLY_IOREMAP=y +# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set +# CONFIG_IDLE_PAGE_TRACKING is not set +CONFIG_FRAME_VECTOR=y +# CONFIG_PERCPU_STATS is not set +# CONFIG_GUP_BENCHMARK is not set +CONFIG_ARCH_HAS_PTE_SPECIAL=y +CONFIG_NET=y +CONFIG_COMPAT_NETLINK_MESSAGES=y +CONFIG_NET_INGRESS=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_DIAG=y +CONFIG_UNIX=y +CONFIG_UNIX_DIAG=y +# CONFIG_TLS is not set +CONFIG_XFRM=y +CONFIG_XFRM_ALGO=y +CONFIG_XFRM_USER=y +# CONFIG_XFRM_INTERFACE is not set +# CONFIG_XFRM_SUB_POLICY is not set +CONFIG_XFRM_MIGRATE=y +# CONFIG_XFRM_STATISTICS is not set +CONFIG_XFRM_IPCOMP=m +CONFIG_NET_KEY=m +CONFIG_NET_KEY_MIGRATE=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_FIB_TRIE_STATS=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_ROUTE_CLASSID=y +CONFIG_IP_PNP=y +# CONFIG_IP_PNP_DHCP is not set +# CONFIG_IP_PNP_BOOTP is not set +# CONFIG_IP_PNP_RARP is not set +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IP_TUNNEL=m +# CONFIG_NET_IPGRE is not set +CONFIG_IP_MROUTE_COMMON=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=m +CONFIG_NET_FOU=m +# CONFIG_NET_FOU_IP_TUNNELS is not set +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +# CONFIG_INET_ESP_OFFLOAD is not set +CONFIG_INET_IPCOMP=m +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_MODE_BEET=m +CONFIG_INET_DIAG=m +CONFIG_INET_TCP_DIAG=m +# CONFIG_INET_UDP_DIAG is not set +# CONFIG_INET_RAW_DIAG is not set +# CONFIG_INET_DIAG_DESTROY is not set +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CUBIC=m +CONFIG_TCP_CONG_WESTWOOD=m +CONFIG_TCP_CONG_HTCP=m +# CONFIG_TCP_CONG_HSTCP is not set +# CONFIG_TCP_CONG_HYBLA is not set +# CONFIG_TCP_CONG_VEGAS is not set +# CONFIG_TCP_CONG_NV is not set +# CONFIG_TCP_CONG_SCALABLE is not set +# CONFIG_TCP_CONG_LP is not set +# CONFIG_TCP_CONG_VENO is not set +# CONFIG_TCP_CONG_YEAH is not set +# CONFIG_TCP_CONG_ILLINOIS is not set +# CONFIG_TCP_CONG_DCTCP is not set +# CONFIG_TCP_CONG_CDG is not set +# CONFIG_TCP_CONG_BBR is not set +CONFIG_DEFAULT_RENO=y +CONFIG_DEFAULT_TCP_CONG="reno" +# CONFIG_TCP_MD5SIG is not set +CONFIG_IPV6=m +# CONFIG_IPV6_ROUTER_PREF is not set +CONFIG_IPV6_OPTIMISTIC_DAD=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +# CONFIG_INET6_ESP_OFFLOAD is not set +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_MIP6=m +CONFIG_IPV6_ILA=m +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m +# CONFIG_IPV6_VTI is not set +CONFIG_IPV6_SIT=m +# CONFIG_IPV6_SIT_6RD is not set +CONFIG_IPV6_NDISC_NODETYPE=y +CONFIG_IPV6_TUNNEL=m +# CONFIG_IPV6_GRE is not set +CONFIG_IPV6_FOU=m +CONFIG_IPV6_MULTIPLE_TABLES=y +# CONFIG_IPV6_SUBTREES is not set +CONFIG_IPV6_MROUTE=y +# CONFIG_IPV6_MROUTE_MULTIPLE_TABLES is not set +# CONFIG_IPV6_PIMSM_V2 is not set +# CONFIG_IPV6_SEG6_LWTUNNEL is not set +# CONFIG_IPV6_SEG6_HMAC is not set +CONFIG_NETWORK_SECMARK=y +CONFIG_NET_PTP_CLASSIFY=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=m + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_FAMILY_BRIDGE=y +CONFIG_NETFILTER_FAMILY_ARP=y +CONFIG_NETFILTER_NETLINK_ACCT=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_NETLINK_OSF=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_LOG_COMMON=m +# CONFIG_NF_LOG_NETDEV is not set +CONFIG_NETFILTER_CONNCOUNT=m +CONFIG_NF_CONNTRACK_MARK=y +# CONFIG_NF_CONNTRACK_SECMARK is not set +# CONFIG_NF_CONNTRACK_ZONES is not set +CONFIG_NF_CONNTRACK_PROCFS=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_TIMEOUT=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CONNTRACK_LABELS=y +CONFIG_NF_CT_PROTO_DCCP=y +CONFIG_NF_CT_PROTO_GRE=m +CONFIG_NF_CT_PROTO_SCTP=y +CONFIG_NF_CT_PROTO_UDPLITE=y +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_BROADCAST=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +# CONFIG_NF_CT_NETLINK_TIMEOUT is not set +# CONFIG_NETFILTER_NETLINK_GLUE_CT is not set +CONFIG_NF_NAT=m +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=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_SIP=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT_REDIRECT=y +CONFIG_NETFILTER_SYNPROXY=m +CONFIG_NF_TABLES=m +# CONFIG_NF_TABLES_SET is not set +# CONFIG_NF_TABLES_INET is not set +# CONFIG_NF_TABLES_NETDEV is not set +# CONFIG_NFT_NUMGEN is not set +# CONFIG_NFT_CT is not set +# CONFIG_NFT_COUNTER is not set +# CONFIG_NFT_CONNLIMIT is not set +# CONFIG_NFT_LOG is not set +# CONFIG_NFT_LIMIT is not set +# CONFIG_NFT_MASQ is not set +# CONFIG_NFT_REDIR is not set +# CONFIG_NFT_NAT is not set +# CONFIG_NFT_TUNNEL is not set +# CONFIG_NFT_OBJREF is not set +# CONFIG_NFT_QUEUE is not set +# CONFIG_NFT_QUOTA is not set +# CONFIG_NFT_REJECT is not set +# CONFIG_NFT_COMPAT is not set +# CONFIG_NFT_HASH is not set +# CONFIG_NFT_SOCKET is not set +# CONFIG_NFT_OSF is not set +# CONFIG_NFT_TPROXY is not set +# CONFIG_NF_FLOW_TABLE is not set +CONFIG_NETFILTER_XTABLES=y + +# +# Xtables combined modules +# +CONFIG_NETFILTER_XT_MARK=y +CONFIG_NETFILTER_XT_CONNMARK=m +# CONFIG_NETFILTER_XT_SET is not set + +# +# Xtables targets +# +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +# CONFIG_NETFILTER_XT_TARGET_CT is not set +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_NAT=m +CONFIG_NETFILTER_XT_TARGET_NETMAP=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +# CONFIG_NETFILTER_XT_TARGET_TRACE is not set +# CONFIG_NETFILTER_XT_TARGET_SECMARK is not set +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m + +# +# Xtables matches +# +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NETFILTER_XT_MATCH_CGROUP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ECN=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_IPCOMP=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +# CONFIG_NETFILTER_XT_MATCH_IPVS is not set +CONFIG_NETFILTER_XT_MATCH_L2TP=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_QUOTA2=m +# CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG is not set +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_IP_SET=m +CONFIG_IP_SET_MAX=256 +# CONFIG_IP_SET_BITMAP_IP is not set +# CONFIG_IP_SET_BITMAP_IPMAC is not set +# CONFIG_IP_SET_BITMAP_PORT is not set +# CONFIG_IP_SET_HASH_IP is not set +# CONFIG_IP_SET_HASH_IPMARK is not set +# CONFIG_IP_SET_HASH_IPPORT is not set +# CONFIG_IP_SET_HASH_IPPORTIP is not set +# CONFIG_IP_SET_HASH_IPPORTNET is not set +# CONFIG_IP_SET_HASH_IPMAC is not set +# CONFIG_IP_SET_HASH_MAC is not set +# CONFIG_IP_SET_HASH_NETPORTNET is not set +# CONFIG_IP_SET_HASH_NET is not set +# CONFIG_IP_SET_HASH_NETNET is not set +# CONFIG_IP_SET_HASH_NETPORT is not set +# CONFIG_IP_SET_HASH_NETIFACE is not set +# CONFIG_IP_SET_LIST_SET is not set +CONFIG_IP_VS=m +# CONFIG_IP_VS_IPV6 is not set +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +# CONFIG_IP_VS_PROTO_TCP is not set +# CONFIG_IP_VS_PROTO_UDP is not set +# CONFIG_IP_VS_PROTO_ESP is not set +# CONFIG_IP_VS_PROTO_AH is not set +# CONFIG_IP_VS_PROTO_SCTP is not set + +# +# IPVS scheduler +# +# CONFIG_IP_VS_RR is not set +# CONFIG_IP_VS_WRR is not set +# CONFIG_IP_VS_LC is not set +# CONFIG_IP_VS_WLC is not set +# CONFIG_IP_VS_FO is not set +# CONFIG_IP_VS_OVF is not set +# CONFIG_IP_VS_LBLC is not set +# CONFIG_IP_VS_LBLCR is not set +# CONFIG_IP_VS_DH is not set +# CONFIG_IP_VS_SH is not set +# CONFIG_IP_VS_MH is not set +# CONFIG_IP_VS_SED is not set +# CONFIG_IP_VS_NQ is not set + +# +# IPVS SH scheduler +# +CONFIG_IP_VS_SH_TAB_BITS=8 + +# +# IPVS MH scheduler +# +CONFIG_IP_VS_MH_TAB_INDEX=12 + +# +# IPVS application helper +# +# CONFIG_IP_VS_NFCT is not set + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_NF_SOCKET_IPV4=m +CONFIG_NF_TPROXY_IPV4=m +# CONFIG_NF_TABLES_IPV4 is not set +# CONFIG_NF_TABLES_ARP is not set +CONFIG_NF_DUP_IPV4=m +# CONFIG_NF_LOG_ARP is not set +CONFIG_NF_LOG_IPV4=m +CONFIG_NF_REJECT_IPV4=m +CONFIG_NF_NAT_IPV4=m +CONFIG_NF_NAT_MASQUERADE_IPV4=y +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_PROTO_GRE=m +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_H323=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SYNPROXY=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_ARPTABLES=m +# CONFIG_IP_NF_ARPFILTER is not set +# CONFIG_IP_NF_ARP_MANGLE is not set + +# +# IPv6: Netfilter Configuration +# +CONFIG_NF_SOCKET_IPV6=m +CONFIG_NF_TPROXY_IPV6=m +# CONFIG_NF_TABLES_IPV6 is not set +CONFIG_NF_DUP_IPV6=m +CONFIG_NF_REJECT_IPV6=m +CONFIG_NF_LOG_IPV6=m +CONFIG_NF_NAT_IPV6=m +CONFIG_IP6_NF_IPTABLES=m +# 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_RT is not set +# CONFIG_IP6_NF_MATCH_SRH is not set +# CONFIG_IP6_NF_FILTER is not set +# CONFIG_IP6_NF_TARGET_SYNPROXY is not set +# CONFIG_IP6_NF_MANGLE is not set +# CONFIG_IP6_NF_RAW is not set +# CONFIG_IP6_NF_NAT is not set +CONFIG_NF_DEFRAG_IPV6=m +# CONFIG_NF_TABLES_BRIDGE is not set +# CONFIG_BRIDGE_NF_EBTABLES is not set +# CONFIG_BPFILTER 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 is not set +CONFIG_STP=m +CONFIG_BRIDGE=m +CONFIG_BRIDGE_IGMP_SNOOPING=y +CONFIG_HAVE_NET_DSA=y +# CONFIG_NET_DSA is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +CONFIG_LLC=m +# CONFIG_LLC2 is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_PHONET is not set +# CONFIG_6LOWPAN is not set +# CONFIG_IEEE802154 is not set +# CONFIG_NET_SCHED is not set +# CONFIG_DCB is not set +# CONFIG_DNS_RESOLVER 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_MPLS is not set +# CONFIG_NET_NSH is not set +# CONFIG_HSR is not set +# CONFIG_NET_SWITCHDEV is not set +# CONFIG_NET_L3_MASTER_DEV is not set +# CONFIG_NET_NCSI is not set +CONFIG_RPS=y +CONFIG_RFS_ACCEL=y +CONFIG_XPS=y +# CONFIG_CGROUP_NET_PRIO is not set +CONFIG_CGROUP_NET_CLASSID=y +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y +# CONFIG_BPF_JIT is not set +CONFIG_NET_FLOW_LIMIT=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_NET_DROP_MONITOR is not set +# CONFIG_HAMRADIO is not set +CONFIG_CAN=y +CONFIG_CAN_RAW=y +CONFIG_CAN_BCM=y +CONFIG_CAN_GW=y + +# +# CAN Device Drivers +# +# CONFIG_CAN_VCAN is not set +# CONFIG_CAN_VXCAN is not set +# CONFIG_CAN_SLCAN is not set +CONFIG_CAN_DEV=y +CONFIG_CAN_CALC_BITTIMING=y +# CONFIG_CAN_GRCAN is not set +# CONFIG_CAN_XILINXCAN is not set +# CONFIG_CAN_C_CAN is not set +# CONFIG_CAN_CC770 is not set +# CONFIG_CAN_IFI_CANFD is not set +# CONFIG_CAN_M_CAN is not set +# CONFIG_CAN_PEAK_PCIEFD is not set +CONFIG_CAN_ROCKCHIP=y +CONFIG_CANFD_ROCKCHIP=y +# CONFIG_CAN_SJA1000 is not set +# CONFIG_CAN_SOFTING is not set + +# +# CAN SPI interfaces +# +# CONFIG_CAN_HI311X is not set +# CONFIG_CAN_MCP251X is not set + +# +# CAN USB interfaces +# +# CONFIG_CAN_8DEV_USB is not set +# CONFIG_CAN_EMS_USB is not set +# CONFIG_CAN_ESD_USB2 is not set +# CONFIG_CAN_GS_USB is not set +# CONFIG_CAN_KVASER_USB is not set +# CONFIG_CAN_MCBA_USB is not set +# CONFIG_CAN_PEAK_USB is not set +# CONFIG_CAN_UCAN is not set +# CONFIG_CAN_DEBUG_DEVICES is not set +CONFIG_BT=y +CONFIG_BT_BREDR=y +CONFIG_BT_RFCOMM=y +# CONFIG_BT_RFCOMM_TTY is not set +# CONFIG_BT_BNEP is not set +CONFIG_BT_HIDP=y +CONFIG_BT_HS=y +CONFIG_BT_LE=y +# CONFIG_BT_LEDS is not set +# CONFIG_BT_SELFTEST is not set +CONFIG_BT_DEBUGFS=y + +# +# Bluetooth device drivers +# +CONFIG_BT_INTEL=y +CONFIG_BT_BCM=y +CONFIG_BT_RTL=y +CONFIG_BT_HCIBTUSB=y +# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set +CONFIG_BT_HCIBTUSB_BCM=y +CONFIG_BT_HCIBTUSB_RTL=y +# CONFIG_BT_HCIBTSDIO is not set +CONFIG_BT_HCIUART=y +CONFIG_BT_HCIUART_SERDEV=y +CONFIG_BT_HCIUART_H4=y +# CONFIG_BT_HCIUART_NOKIA is not set +# CONFIG_BT_HCIUART_BCSP is not set +CONFIG_BT_HCIUART_ATH3K=y +# CONFIG_BT_HCIUART_LL is not set +CONFIG_BT_HCIUART_3WIRE=y +# CONFIG_BT_HCIUART_INTEL is not set +CONFIG_BT_HCIUART_BCM=y +# CONFIG_BT_HCIUART_QCA is not set +# CONFIG_BT_HCIUART_AG6XX is not set +# CONFIG_BT_HCIUART_MRVL is not set +# CONFIG_BT_HCIBCM203X is not set +# CONFIG_BT_HCIBPA10X is not set +CONFIG_BT_HCIBFUSB=y +CONFIG_BT_HCIVHCI=y +CONFIG_BT_MRVL=y +CONFIG_BT_MRVL_SDIO=y +# CONFIG_BT_ATH3K is not set +# CONFIG_BT_MTKUART is not set +# CONFIG_AF_RXRPC is not set +# CONFIG_AF_KCM 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 is not set +# CONFIG_CFG80211_CERTIFICATION_ONUS is not set +CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y +CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y +CONFIG_CFG80211_DEFAULT_PS=y +CONFIG_CFG80211_DEBUGFS=y +CONFIG_CFG80211_CRDA_SUPPORT=y +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=y +CONFIG_MAC80211_HAS_RC=y +CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_RC_MINSTREL_HT=y +# CONFIG_MAC80211_RC_MINSTREL_VHT is not set +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" +# CONFIG_MAC80211_MESH is not set +CONFIG_MAC80211_LEDS=y +CONFIG_MAC80211_DEBUGFS=y +# CONFIG_MAC80211_MESSAGE_TRACING is not set +CONFIG_MAC80211_DEBUG_MENU=y +# CONFIG_MAC80211_NOINLINE is not set +CONFIG_MAC80211_VERBOSE_DEBUG=y +# CONFIG_MAC80211_MLME_DEBUG is not set +# CONFIG_MAC80211_STA_DEBUG is not set +# CONFIG_MAC80211_HT_DEBUG is not set +# CONFIG_MAC80211_OCB_DEBUG is not set +# CONFIG_MAC80211_IBSS_DEBUG is not set +# CONFIG_MAC80211_PS_DEBUG is not set +# CONFIG_MAC80211_TDLS_DEBUG is not set +# CONFIG_MAC80211_DEBUG_COUNTERS is not set +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 +# CONFIG_WIMAX is not set +CONFIG_RFKILL=y +CONFIG_RFKILL_LEDS=y +# CONFIG_RFKILL_INPUT is not set +# CONFIG_RFKILL_GPIO is not set +CONFIG_RFKILL_RK=y +# CONFIG_NET_9P is not set +# CONFIG_CAIF is not set +# CONFIG_CEPH_LIB is not set +# CONFIG_NFC is not set +# CONFIG_PSAMPLE is not set +# CONFIG_NET_IFE is not set +CONFIG_LWTUNNEL=y +CONFIG_LWTUNNEL_BPF=y +CONFIG_DST_CACHE=y +CONFIG_GRO_CELLS=y +# CONFIG_NET_DEVLINK is not set +CONFIG_MAY_USE_DEVLINK=y +# CONFIG_FAILOVER is not set +CONFIG_HAVE_EBPF_JIT=y + +# +# Device Drivers +# +CONFIG_ARM_AMBA=y + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y + +# +# Firmware loader +# +CONFIG_FW_LOADER=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_FW_LOADER_USER_HELPER is not set +CONFIG_FW_CACHE=y +CONFIG_WANT_DEV_COREDUMP=y +CONFIG_ALLOW_DEV_COREDUMP=y +CONFIG_DEV_COREDUMP=y +# CONFIG_DEBUG_DRIVER is not set +CONFIG_DEBUG_DEVRES=y +# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set +# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set +CONFIG_GENERIC_CPU_AUTOPROBE=y +CONFIG_GENERIC_CPU_VULNERABILITIES=y +CONFIG_REGMAP=y +CONFIG_REGMAP_I2C=y +CONFIG_REGMAP_SPI=y +CONFIG_REGMAP_MMIO=y +CONFIG_REGMAP_IRQ=y +# CONFIG_MALI_MEMORY_GROUP_MANAGER is not set +CONFIG_DMA_SHARED_BUFFER=y +# CONFIG_DMA_FENCE_TRACE is not set +CONFIG_DMA_CMA=y + +# +# Default contiguous memory area size: +# +CONFIG_CMA_SIZE_MBYTES=16 +CONFIG_CMA_SIZE_SEL_MBYTES=y +# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set +# CONFIG_CMA_SIZE_SEL_MIN is not set +# CONFIG_CMA_SIZE_SEL_MAX is not set +CONFIG_CMA_ALIGNMENT=8 +CONFIG_GENERIC_ARCH_TOPOLOGY=y + +# +# Bus devices +# +# CONFIG_BRCMSTB_GISB_ARB is not set +# CONFIG_SIMPLE_PM_BUS is not set +# CONFIG_VEXPRESS_CONFIG is not set +CONFIG_CONNECTOR=y +CONFIG_PROC_EVENTS=y +# CONFIG_GNSS is not set +CONFIG_MTD=y +# CONFIG_MTD_TESTS is not set +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set +CONFIG_MTD_OF_PARTS=y +# CONFIG_MTD_AR7_PARTS is not set + +# +# Partition parsers +# + +# +# User Modules And Translation Layers +# +CONFIG_MTD_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 +# CONFIG_MTD_SWAP is not set +# CONFIG_MTD_PARTITIONED_MASTER 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_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# 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_INTEL_VR_NOR is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_MCHP23K256 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_ONENAND is not set +# CONFIG_MTD_NAND is not set +# CONFIG_MTD_SPI_NAND is not set + +# +# LPDDR & LPDDR2 PCM memory drivers +# +# CONFIG_MTD_LPDDR is not set +# CONFIG_MTD_SPI_NOR is not set +CONFIG_MTD_UBI=y +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTD_UBI_BEB_LIMIT=20 +# CONFIG_MTD_UBI_FASTMAP is not set +# CONFIG_MTD_UBI_GLUEBI is not set +# CONFIG_MTD_UBI_BLOCK is not set +CONFIG_DTC=y +CONFIG_OF=y +CONFIG_DTC_SYMBOLS=y +# CONFIG_DTC_OMIT_DISABLED is not set +# CONFIG_DTC_OMIT_EMPTY is not set +# CONFIG_OF_UNITTEST is not set +CONFIG_OF_FLATTREE=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_KOBJ=y +CONFIG_OF_ADDRESS=y +CONFIG_OF_IRQ=y +CONFIG_OF_NET=y +CONFIG_OF_MDIO=y +CONFIG_OF_RESERVED_MEM=y +# CONFIG_OF_OVERLAY is not set +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_NULL_BLK is not set +CONFIG_CDROM=y +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +CONFIG_ZRAM=y +# CONFIG_ZRAM_WRITEBACK is not set +# CONFIG_ZRAM_MEMORY_TRACKING is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM 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_SKD is not set +# CONFIG_BLK_DEV_SX8 is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=1 +CONFIG_BLK_DEV_RAM_SIZE=4096 +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_BLK_DEV_RBD is not set +# CONFIG_BLK_DEV_RSXX is not set + +# +# NVME Support +# +CONFIG_NVME_CORE=y +CONFIG_BLK_DEV_NVME=y +# CONFIG_NVME_MULTIPATH is not set +# CONFIG_NVME_FC is not set +# CONFIG_NVME_TARGET is not set + +# +# Misc devices +# +# CONFIG_ROCKCHIP_SCR is not set +# CONFIG_AD525X_DPOT is not set +# CONFIG_DUMMY_IRQ is not set +# CONFIG_PHANTOM is not set +# CONFIG_SGI_IOC4 is not set +# CONFIG_TIFM_CORE is not set +# CONFIG_ICS932S401 is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_HP_ILO 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_BH1770 is not set +# CONFIG_SENSORS_APDS990X is not set +# CONFIG_HMC6352 is not set +# CONFIG_DS1682 is not set +# CONFIG_USB_SWITCH_FSA9480 is not set +# CONFIG_LATTICE_ECP3_CONFIG is not set +CONFIG_SRAM=y +# CONFIG_PCI_ENDPOINT_TEST is not set +# CONFIG_PIR_ASCHIP is not set +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +# CONFIG_EEPROM_AT24 is not set +# CONFIG_EEPROM_AT25 is not set +# CONFIG_EEPROM_LEGACY is not set +# CONFIG_EEPROM_MAX6875 is not set +# CONFIG_EEPROM_93CX6 is not set +# CONFIG_EEPROM_93XX46 is not set +# CONFIG_EEPROM_IDT_89HPESX is not set +# CONFIG_CB710_CORE is not set + +# +# Texas Instruments shared transport line discipline +# +# CONFIG_TI_ST is not set +# CONFIG_SENSORS_LIS3_SPI is not set +# CONFIG_SENSORS_LIS3_I2C is not set +# CONFIG_ALTERA_STAPL is not set + +# +# Intel MIC & related support +# + +# +# Intel MIC Bus Driver +# + +# +# SCIF Bus Driver +# + +# +# VOP Bus Driver +# + +# +# Intel MIC Host Driver +# + +# +# Intel MIC Card Driver +# + +# +# SCIF Driver +# + +# +# Intel MIC Coprocessor State Management (COSM) Drivers +# + +# +# VOP Driver +# +# CONFIG_GENWQE is not set +# CONFIG_ECHO is not set +# CONFIG_MISC_RTSX_PCI is not set +# CONFIG_MISC_RTSX_USB is not set + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +CONFIG_SCSI_MQ_DEFAULT=y +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=y +# 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=y +# 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=y +# CONFIG_ISCSI_TCP is not set +# CONFIG_ISCSI_BOOT_SYSFS is not set +# CONFIG_SCSI_CXGB3_ISCSI is not set +# CONFIG_SCSI_CXGB4_ISCSI is not set +# CONFIG_SCSI_BNX2_ISCSI is not set +# CONFIG_BE2ISCSI is not set +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_HPSA is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_3W_SAS is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC94XX is not set +# CONFIG_SCSI_HISI_SAS is not set +# CONFIG_SCSI_MVSAS is not set +# CONFIG_SCSI_MVUMI is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_SCSI_ESAS2R is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_SAS is not set +# CONFIG_SCSI_MPT3SAS is not set +# CONFIG_SCSI_MPT2SAS is not set +# CONFIG_SCSI_SMARTPQI is not set +# CONFIG_SCSI_UFSHCD is not set +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_SNIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_STEX is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_QLA_ISCSI is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_WD719X is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_PMCRAID is not set +# CONFIG_SCSI_PM8001 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=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_SATA_PMP=y + +# +# Controllers with non-SFF native interface +# +CONFIG_SATA_AHCI=y +CONFIG_SATA_MOBILE_LPM_POLICY=0 +CONFIG_SATA_AHCI_PLATFORM=y +# CONFIG_AHCI_CEVA is not set +# CONFIG_AHCI_QORIQ is not set +# CONFIG_SATA_INIC162X is not set +# CONFIG_SATA_ACARD_AHCI is not set +# CONFIG_SATA_SIL24 is not set +# CONFIG_ATA_SFF is not set +CONFIG_MD=y +# CONFIG_BLK_DEV_MD is not set +# CONFIG_BCACHE is not set +# CONFIG_BLK_DEV_DM is not set +# CONFIG_TARGET_CORE is not set +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# +# CONFIG_FIREWIRE is not set +# CONFIG_FIREWIRE_NOSY is not set +CONFIG_NETDEVICES=y +CONFIG_MII=y +CONFIG_NET_CORE=y +# CONFIG_BONDING is not set +# CONFIG_DUMMY is not set +# CONFIG_WIREGUARD is not set +# CONFIG_EQUALIZER is not set +# CONFIG_NET_FC is not set +# CONFIG_NET_TEAM is not set +# CONFIG_MACVLAN is not set +# CONFIG_IPVLAN is not set +# CONFIG_VXLAN is not set +# CONFIG_GENEVE is not set +# CONFIG_GTP is not set +# CONFIG_MACSEC is not set +# CONFIG_NETCONSOLE is not set +CONFIG_TUN=y +# CONFIG_TUN_VNET_CROSS_LE is not set +# CONFIG_VETH is not set +# CONFIG_NLMON is not set +# CONFIG_ARCNET is not set + +# +# CAIF transport drivers +# + +# +# Distributed Switch Architecture drivers +# +CONFIG_ETHERNET=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_AGERE is not set +CONFIG_NET_VENDOR_ALACRITECH=y +# CONFIG_SLICOSS is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_ALTERA_TSE is not set +CONFIG_NET_VENDOR_AMAZON=y +# CONFIG_ENA_ETHERNET is not set +# CONFIG_NET_VENDOR_AMD is not set +CONFIG_NET_VENDOR_AQUANTIA=y +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +CONFIG_NET_VENDOR_AURORA=y +# CONFIG_AURORA_NB8800 is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_BROCADE is not set +CONFIG_NET_VENDOR_CADENCE=y +# CONFIG_MACB is not set +# CONFIG_NET_VENDOR_CAVIUM is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +CONFIG_NET_VENDOR_CORTINA=y +# CONFIG_GEMINI_ETHERNET is not set +# CONFIG_DNET is not set +# CONFIG_NET_VENDOR_DEC is not set +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_EZCHIP is not set +# CONFIG_NET_VENDOR_HISILICON is not set +# CONFIG_NET_VENDOR_HP is not set +CONFIG_NET_VENDOR_HUAWEI=y +# CONFIG_HINIC is not set +# CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_JME is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +CONFIG_NET_VENDOR_MICROSEMI=y +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_FEALNX is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +CONFIG_NET_VENDOR_NETERION=y +# CONFIG_S2IO is not set +# CONFIG_VXGE is not set +CONFIG_NET_VENDOR_NETRONOME=y +# CONFIG_NFP is not set +CONFIG_NET_VENDOR_NI=y +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_ETHOC is not set +CONFIG_NET_VENDOR_PACKET_ENGINES=y +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_QUALCOMM is not set +# CONFIG_NET_VENDOR_RDC is not set +# CONFIG_NET_VENDOR_REALTEK is not set +# CONFIG_NET_VENDOR_RENESAS is not set +# CONFIG_NET_VENDOR_ROCKER is not set +# CONFIG_NET_VENDOR_SAMSUNG is not set +# CONFIG_NET_VENDOR_SEEQ is not set +CONFIG_NET_VENDOR_SOLARFLARE=y +# CONFIG_SFC is not set +# CONFIG_SFC_FALCON is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SMSC is not set +CONFIG_NET_VENDOR_SOCIONEXT=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_STMMAC_ETH=y +CONFIG_STMMAC_PLATFORM=y +# CONFIG_DWMAC_DWC_QOS_ETH is not set +CONFIG_DWMAC_GENERIC=y +CONFIG_DWMAC_ROCKCHIP=y +# CONFIG_STMMAC_PCI is not set +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_SYNOPSYS is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +CONFIG_MDIO_DEVICE=y +CONFIG_MDIO_BUS=y +# CONFIG_MDIO_BCM_UNIMAC is not set +# CONFIG_MDIO_BITBANG is not set +# CONFIG_MDIO_BUS_MUX_GPIO is not set +# CONFIG_MDIO_BUS_MUX_MMIOREG is not set +# CONFIG_MDIO_HISI_FEMAC is not set +# CONFIG_MDIO_MSCC_MIIM is not set +# CONFIG_MDIO_OCTEON is not set +# CONFIG_MDIO_THUNDER is not set +CONFIG_PHYLIB=y +CONFIG_SWPHY=y +# CONFIG_LED_TRIGGER_PHY is not set + +# +# MII PHY device drivers +# +# CONFIG_AMD_PHY is not set +# CONFIG_AQUANTIA_PHY is not set +# CONFIG_AX88796B_PHY is not set +# CONFIG_AT803X_PHY is not set +# CONFIG_BCM7XXX_PHY is not set +# CONFIG_BCM87XX_PHY is not set +# CONFIG_BROADCOM_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_CORTINA_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_DP83822_PHY is not set +# CONFIG_DP83TC811_PHY is not set +# CONFIG_DP83848_PHY is not set +# CONFIG_DP83867_PHY is not set +CONFIG_FIXED_PHY=y +# CONFIG_ICPLUS_PHY is not set +# CONFIG_INTEL_XWAY_PHY is not set +# CONFIG_LSI_ET1011C_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_MARVELL_PHY is not set +# CONFIG_MARVELL_10G_PHY is not set +# CONFIG_MICREL_PHY is not set +# CONFIG_MICROCHIP_PHY is not set +# CONFIG_MICROCHIP_T1_PHY is not set +# CONFIG_MICROSEMI_PHY is not set +# CONFIG_NATIONAL_PHY is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_REALTEK_PHY is not set +# CONFIG_RENESAS_PHY is not set +CONFIG_ROCKCHIP_PHY=y +# CONFIG_SMSC_PHY is not set +# CONFIG_STE10XP is not set +# CONFIG_TERANETICS_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_XILINX_GMII2RGMII is not set +# CONFIG_MICREL_KS8995MA is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +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=y +CONFIG_USB_RTL8152=y +# CONFIG_USB_LAN78XX is not set +CONFIG_USB_USBNET=y +CONFIG_USB_NET_AX8817X=y +CONFIG_USB_NET_AX88179_178A=y +CONFIG_USB_NET_CDCETHER=y +# CONFIG_USB_NET_CDC_EEM is not set +CONFIG_USB_NET_CDC_NCM=y +# CONFIG_USB_NET_HUAWEI_CDC_NCM is not set +CONFIG_USB_NET_CDC_MBIM=y +# CONFIG_USB_NET_DM9601 is not set +# CONFIG_USB_NET_SR9700 is not set +# CONFIG_USB_NET_SR9800 is not set +# CONFIG_USB_NET_SMSC75XX is not set +# CONFIG_USB_NET_SMSC95XX is not set +# CONFIG_USB_NET_GL620A is not set +# CONFIG_USB_NET_NET1080 is not set +# CONFIG_USB_NET_PLUSB is not set +# CONFIG_USB_NET_MCS7830 is not set +CONFIG_USB_NET_RNDIS_HOST=y +# CONFIG_USB_NET_CDC_SUBSET is not set +# CONFIG_USB_NET_ZAURUS is not set +# CONFIG_USB_NET_CX82310_ETH is not set +# CONFIG_USB_NET_KALMIA is not set +CONFIG_USB_NET_QMI_WWAN=y +# CONFIG_USB_HSO is not set +# CONFIG_USB_NET_INT51X1 is not set +# CONFIG_USB_IPHETH is not set +# CONFIG_USB_SIERRA_NET is not set +# CONFIG_USB_VL600 is not set +# CONFIG_USB_NET_CH9200 is not set +CONFIG_WLAN=y +# CONFIG_WIRELESS_WDS is not set +CONFIG_WLAN_VENDOR_ADMTEK=y +# CONFIG_ADM8211 is not set +CONFIG_WLAN_VENDOR_ATH=y +# CONFIG_ATH_DEBUG is not set +# CONFIG_ATH5K is not set +# CONFIG_ATH5K_PCI is not set +# CONFIG_ATH9K is not set +# CONFIG_ATH9K_HTC is not set +# CONFIG_CARL9170 is not set +# CONFIG_ATH6KL is not set +# CONFIG_AR5523 is not set +# CONFIG_WIL6210 is not set +# CONFIG_ATH10K is not set +# CONFIG_WCN36XX is not set +CONFIG_WLAN_VENDOR_ATMEL=y +# CONFIG_ATMEL is not set +# CONFIG_AT76C50X_USB is not set +CONFIG_WLAN_VENDOR_BROADCOM=y +# CONFIG_B43 is not set +# CONFIG_B43LEGACY is not set +# CONFIG_BRCMSMAC is not set +# CONFIG_BRCMFMAC is not set +CONFIG_WLAN_VENDOR_CISCO=y +CONFIG_WLAN_VENDOR_INTEL=y +# CONFIG_IPW2100 is not set +# CONFIG_IPW2200 is not set +# CONFIG_IWL4965 is not set +# CONFIG_IWL3945 is not set +# CONFIG_IWLWIFI is not set +CONFIG_WLAN_VENDOR_INTERSIL=y +# CONFIG_HOSTAP is not set +# CONFIG_HERMES is not set +# CONFIG_P54_COMMON is not set +# CONFIG_PRISM54 is not set +CONFIG_WLAN_VENDOR_MARVELL=y +# CONFIG_LIBERTAS is not set +CONFIG_LIBERTAS_THINFIRM=y +# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set +# CONFIG_LIBERTAS_THINFIRM_USB is not set +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m +# CONFIG_MWIFIEX_PCIE is not set +# CONFIG_MWIFIEX_USB is not set +# CONFIG_MWL8K is not set +CONFIG_WLAN_VENDOR_MEDIATEK=y +# CONFIG_MT7601U is not set +# CONFIG_MT76x0U is not set +# CONFIG_MT76x2E is not set +# CONFIG_MT76x2U is not set +CONFIG_WLAN_VENDOR_RALINK=y +# CONFIG_RT2X00 is not set +CONFIG_WLAN_VENDOR_REALTEK=y +# CONFIG_RTL8180 is not set +# CONFIG_RTL8187 is not set +CONFIG_RTL_CARDS=y +# CONFIG_RTL8192CE is not set +# CONFIG_RTL8192SE is not set +# CONFIG_RTL8192DE is not set +# CONFIG_RTL8723AE is not set +# CONFIG_RTL8723BE is not set +# CONFIG_RTL8188EE is not set +# CONFIG_RTL8192EE is not set +# CONFIG_RTL8821AE is not set +# CONFIG_RTL8192CU is not set +# CONFIG_RTL8XXXU is not set +CONFIG_WLAN_VENDOR_RSI=y +# CONFIG_RSI_91X is not set +CONFIG_WLAN_VENDOR_ST=y +# CONFIG_CW1200 is not set +CONFIG_WLAN_VENDOR_TI=y +# CONFIG_WL1251 is not set +# CONFIG_WL12XX is not set +# CONFIG_WL18XX is not set +# CONFIG_WLCORE is not set +CONFIG_WLAN_VENDOR_ZYDAS=y +# CONFIG_USB_ZD1201 is not set +# CONFIG_ZD1211RW is not set +CONFIG_WLAN_VENDOR_QUANTENNA=y +# CONFIG_QTNFMAC_PEARL_PCIE is not set +CONFIG_WL_ROCKCHIP=y +CONFIG_WIFI_BUILD_MODULE=y +CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP=y +# CONFIG_WIFI_GENERATE_RANDOM_MAC_ADDR is not set +CONFIG_BCMDHD=y +CONFIG_AP6XXX=m +CONFIG_AP6XXX_WIFI6=m +# CONFIG_AP6XXX_INDEP_POWER is not set +CONFIG_BCMDHD_FW_PATH="/etc/firmware/fw_bcmdhd.bin" +CONFIG_BCMDHD_NVRAM_PATH="/etc/firmware/nvram.txt" +# CONFIG_BCMDHD_STATIC_IF is not set +CONFIG_RTL_WIRELESS_SOLUTION=y +CONFIG_RTL8188EU=m +CONFIG_RTL8188FU=y +CONFIG_RTL8189FS=m +# CONFIG_RTL8723CS is not set +CONFIG_RTL8723DS=m +CONFIG_RTL8821CS=m +# CONFIG_RTL8822BS is not set +# CONFIG_MVL88W8977 is not set +# CONFIG_CYW_BCMDHD is not set +# CONFIG_MAC80211_HWSIM is not set +CONFIG_USB_NET_RNDIS_WLAN=y +# CONFIG_VIRT_WIFI is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# +# CONFIG_WAN is not set +# CONFIG_VMXNET3 is not set +# CONFIG_LTE is not set +# CONFIG_NETDEVSIM is not set +# CONFIG_NET_FAILOVER is not set +# CONFIG_ISDN is not set +# CONFIG_NVM is not set + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_LEDS=y +CONFIG_INPUT_FF_MEMLESS=y +CONFIG_INPUT_POLLDEV=y +# CONFIG_INPUT_SPARSEKMAP is not set +CONFIG_INPUT_MATRIXKMAP=y + +# +# Userland interfaces +# +# CONFIG_INPUT_MOUSEDEV is not set +CONFIG_INPUT_JOYDEV=y +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ADC=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_DLINK_DIR685 is not set +# CONFIG_KEYBOARD_LKKBD is not set +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_GPIO_POLLED=y +# 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_TM2_TOUCHKEY is not set +# CONFIG_KEYBOARD_XTKBD is not set +CONFIG_KEYBOARD_CROS_EC=y +# CONFIG_KEYBOARD_CAP11XX is not set +# CONFIG_KEYBOARD_BCM is not set +CONFIG_INPUT_MOUSE=y +# CONFIG_MOUSE_PS2 is not set +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_APPLETOUCH is not set +# CONFIG_MOUSE_BCM5974 is not set +CONFIG_MOUSE_CYAPA=y +CONFIG_MOUSE_ELAN_I2C=y +CONFIG_MOUSE_ELAN_I2C_I2C=y +# CONFIG_MOUSE_ELAN_I2C_SMBUS is not set +# CONFIG_MOUSE_VSXXXAA is not set +# CONFIG_MOUSE_GPIO is not set +# CONFIG_MOUSE_SYNAPTICS_I2C is not set +# CONFIG_MOUSE_SYNAPTICS_USB is not set +CONFIG_INPUT_JOYSTICK=y +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_A3D=m +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_IFORCE_232=y +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TWIDJOY=m +CONFIG_JOYSTICK_ZHENHUA=m +CONFIG_JOYSTICK_AS5011=m +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_XPAD_LEDS=y +CONFIG_JOYSTICK_SINGLEADCJOY=y +# CONFIG_JOYSTICK_PSXPAD_SPI is not set +# CONFIG_JOYSTICK_PXRC is not set +# CONFIG_INPUT_TABLET is not set +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_PROPERTIES=y +# CONFIG_TOUCHSCREEN_ADS7846 is not set +# CONFIG_TOUCHSCREEN_AD7877 is not set +# CONFIG_TOUCHSCREEN_AD7879 is not set +# CONFIG_TOUCHSCREEN_ADC is not set +# CONFIG_TOUCHSCREEN_AR1021_I2C is not set +CONFIG_TOUCHSCREEN_ATMEL_MXT=y +# CONFIG_TOUCHSCREEN_ATMEL_MXT_T37 is not set +# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set +# CONFIG_TOUCHSCREEN_BU21013 is not set +# CONFIG_TOUCHSCREEN_BU21029 is not set +# CONFIG_TOUCHSCREEN_CHIPONE_ICN8318 is not set +# CONFIG_TOUCHSCREEN_CY8C40XX is not set +# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set +# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set +# CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set +# CONFIG_TOUCHSCREEN_DYNAPRO is not set +# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set +# CONFIG_TOUCHSCREEN_EETI is not set +# CONFIG_TOUCHSCREEN_EGALAX is not set +# CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set +# CONFIG_TOUCHSCREEN_EXC3000 is not set +# CONFIG_TOUCHSCREEN_FUJITSU is not set +# CONFIG_TOUCHSCREEN_GOODIX is not set +# CONFIG_TOUCHSCREEN_GSLX6801 is not set +# CONFIG_TOUCHSCREEN_GSLX680A is not set +# CONFIG_TOUCHSCREEN_GSLX680_D708 is not set +# CONFIG_TOUCHSCREEN_GSLX680_PAD is not set +# CONFIG_TOUCHSCREEN_GSLX680_VR is not set +CONFIG_TOUCHSCREEN_GSLX680_FIREFLY=y +# CONFIG_TOUCHSCREEN_GSL3673 is not set +# CONFIG_TOUCHSCREEN_GSL3673_800X1280 is not set +# CONFIG_TOUCHSCREEN_GSL3676 is not set +# CONFIG_TOUCHSCREEN_GT9XX is not set +# CONFIG_TOUCHSCREEN_HIDEEP is not set +# CONFIG_TOUCHSCREEN_HYN_CST2XX is not set +CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=y +# CONFIG_TOUCHSCREEN_ILI210X is not set +# CONFIG_TOUCHSCREEN_S6SY761 is not set +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_EKTF2127 is not set +CONFIG_TOUCHSCREEN_ELAN=y +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set +# CONFIG_TOUCHSCREEN_WACOM_I2C is not set +CONFIG_TOUCHSCREEN_WACOM_W9013=y +# CONFIG_TOUCHSCREEN_MAX11801 is not set +# CONFIG_TOUCHSCREEN_MCS5000 is not set +# CONFIG_TOUCHSCREEN_MMS114 is not set +# CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set +# CONFIG_TOUCHSCREEN_INEXIO is not set +# CONFIG_TOUCHSCREEN_MK712 is not set +# CONFIG_TOUCHSCREEN_PENMOUNT is not set +# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set +# CONFIG_TOUCHSCREEN_PIXCIR is not set +# CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set +CONFIG_TOUCHSCREEN_USB_COMPOSITE=y +CONFIG_TOUCHSCREEN_USB_EGALAX=y +CONFIG_TOUCHSCREEN_USB_PANJIT=y +CONFIG_TOUCHSCREEN_USB_3M=y +CONFIG_TOUCHSCREEN_USB_ITM=y +CONFIG_TOUCHSCREEN_USB_ETURBO=y +CONFIG_TOUCHSCREEN_USB_GUNZE=y +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y +CONFIG_TOUCHSCREEN_USB_IDEALTEK=y +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y +CONFIG_TOUCHSCREEN_USB_GOTOP=y +CONFIG_TOUCHSCREEN_USB_JASTEC=y +CONFIG_TOUCHSCREEN_USB_ELO=y +CONFIG_TOUCHSCREEN_USB_E2I=y +CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y +CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y +CONFIG_TOUCHSCREEN_USB_NEXIO=y +CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y +# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set +# CONFIG_TOUCHSCREEN_TSC_SERIO is not set +# CONFIG_TOUCHSCREEN_TSC2004 is not set +# CONFIG_TOUCHSCREEN_TSC2005 is not set +# CONFIG_TOUCHSCREEN_TSC2007 is not set +# CONFIG_TOUCHSCREEN_RM_TS is not set +# CONFIG_TOUCHSCREEN_SILEAD is not set +# CONFIG_TOUCHSCREEN_SIS_I2C is not set +# CONFIG_TOUCHSCREEN_ST1232 is not set +# CONFIG_TOUCHSCREEN_STMFTS is not set +# CONFIG_TOUCHSCREEN_SUR40 is not set +# CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set +# CONFIG_TOUCHSCREEN_SX8654 is not set +# CONFIG_TOUCHSCREEN_TPS6507X is not set +# CONFIG_TOUCHSCREEN_ZET6223 is not set +# CONFIG_TOUCHSCREEN_ZFORCE is not set +# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set +# CONFIG_TOUCHSCREEN_VTL_CT36X is not set +CONFIG_TOUCHSCREEN_GT1X=y +# CONFIG_TOUCHSCREEN_FTS is not set +# CONFIG_TOUCHSCREEN_FT5436 is not set +CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5=y +CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_DEVICETREE_SUPPORT=y +CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_I2C=y +# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_SPI is not set +# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_MT_A is not set +CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_MT_B=y +# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_BUTTON is not set +# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_PROXIMITY is not set +CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_DEVICE_ACCESS=y +# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_DEVICE_ACCESS_API is not set +CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_LOADER=y +# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_PLATFORM_FW_UPGRADE is not set +# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_BINARY_FW_UPGRADE is not set +# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_PLATFORM_TTCONFIG_UPGRADE is not set +# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_MANUAL_TTCONFIG_UPGRADE is not set +# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_DEBUG_MDL is not set +CONFIG_ROCKCHIP_REMOTECTL=y +CONFIG_ROCKCHIP_REMOTECTL_PWM=y + +# +# handle all sensors +# +CONFIG_SENSOR_DEVICE=y +# CONFIG_ANGLE_DEVICE is not set +CONFIG_GSENSOR_DEVICE=y +# CONFIG_GS_MMA8452 is not set +# CONFIG_STK8BAXX_ACC is not set +# CONFIG_MPU6880_ACC is not set +# CONFIG_MPU6500_ACC is not set +# CONFIG_GS_KXTIK is not set +# CONFIG_GS_KXTJ9 is not set +# CONFIG_GS_LIS3DH is not set +# CONFIG_GS_MMA7660 is not set +CONFIG_GS_MC3230=y +# CONFIG_GS_SC7660 is not set +# CONFIG_GS_SC7A20 is not set +# CONFIG_GS_SC7A30 is not set +# CONFIG_GS_MXC6225 is not set +# CONFIG_GS_MXC6655XA is not set +# CONFIG_GS_DMT10 is not set +# CONFIG_GS_LSM303D is not set +# CONFIG_GS_BMA023 is not set +# CONFIG_LSM330_ACC is not set +# CONFIG_BMA2XX_ACC is not set +# CONFIG_GS_DA223 is not set +# CONFIG_ICM2060X_ACC is not set +# CONFIG_COMPASS_DEVICE is not set +# CONFIG_GYROSCOPE_DEVICE is not set +# CONFIG_LIGHT_DEVICE is not set +# CONFIG_PROXIMITY_DEVICE is not set +# CONFIG_TEMPERATURE_DEVICE is not set +# CONFIG_PRESSURE_DEVICE is not set +# CONFIG_HALL_DEVICE is not set +CONFIG_INPUT_MISC=y +# CONFIG_INPUT_AD714X is not set +# CONFIG_INPUT_ATMEL_CAPTOUCH is not set +# CONFIG_INPUT_BMA150 is not set +# CONFIG_INPUT_E3X0_BUTTON is not set +# CONFIG_INPUT_MMA8450 is not set +# CONFIG_INPUT_GP2A is not set +# CONFIG_INPUT_GPIO_BEEPER is not set +# CONFIG_INPUT_GPIO_DECODER is not set +# CONFIG_INPUT_ATI_REMOTE2 is not set +# CONFIG_INPUT_KEYSPAN_REMOTE is not set +# CONFIG_INPUT_KXTJ9 is not set +# CONFIG_INPUT_POWERMATE is not set +# CONFIG_INPUT_YEALINK is not set +# CONFIG_INPUT_CM109 is not set +# CONFIG_INPUT_REGULATOR_HAPTIC is not set +CONFIG_INPUT_UINPUT=y +# CONFIG_INPUT_PCF8574 is not set +# CONFIG_INPUT_PWM_BEEPER is not set +# CONFIG_INPUT_PWM_VIBRA is not set +CONFIG_INPUT_RK805_PWRKEY=y +# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set +# CONFIG_INPUT_ADXL34X is not set +# CONFIG_INPUT_IMS_PCU is not set +# CONFIG_INPUT_CMA3000 is not set +# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set +# CONFIG_INPUT_DRV260X_HAPTICS is not set +# CONFIG_INPUT_DRV2665_HAPTICS is not set +# CONFIG_INPUT_DRV2667_HAPTICS is not set +# CONFIG_RMI4_CORE is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=m +CONFIG_SERIO_SERPORT=m +# CONFIG_SERIO_AMBAKMI is not set +# CONFIG_SERIO_PCIPS2 is not set +# CONFIG_SERIO_LIBPS2 is not set +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_ARC_PS2 is not set +# CONFIG_SERIO_APBPS2 is not set +# CONFIG_SERIO_GPIO_PS2 is not set +# CONFIG_USERIO is not set +CONFIG_GAMEPORT=m +# CONFIG_GAMEPORT_NS558 is not set +# CONFIG_GAMEPORT_L4 is not set +# CONFIG_GAMEPORT_EMU10K1 is not set +# CONFIG_GAMEPORT_FM801 is not set + +# +# Character devices +# +CONFIG_TTY=y +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_UNIX98_PTYS=y +# CONFIG_LEGACY_PTYS is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_NOZOMI is not set +# CONFIG_N_GSM is not set +# CONFIG_TRACE_SINK is not set +CONFIG_LDISC_AUTOLOAD=y +CONFIG_DEVMEM=y + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y +# CONFIG_SERIAL_8250_FINTEK is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DMA=y +# CONFIG_SERIAL_8250_PCI is not set +CONFIG_SERIAL_8250_NR_UARTS=10 +CONFIG_SERIAL_8250_RUNTIME_UARTS=10 +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_ASPEED_VUART is not set +CONFIG_SERIAL_8250_FSL=y +CONFIG_SERIAL_8250_DW=y +# CONFIG_SERIAL_8250_RT288X is not set +# CONFIG_SERIAL_8250_MOXA is not set +CONFIG_SERIAL_OF_PLATFORM=y + +# +# 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_UARTLITE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set +# CONFIG_SERIAL_MSM_GENI_HALF_SAMPLING is not set +# CONFIG_SERIAL_MSM_GENI_EARLY_CONSOLE is not set +# 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_RP2 is not set +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set +CONFIG_SERIAL_DEV_BUS=y +CONFIG_SERIAL_DEV_CTRL_TTYPORT=y +# CONFIG_TTY_PRINTK is not set +# CONFIG_HVC_DCC is not set +# CONFIG_IPMI_HANDLER is not set +CONFIG_HW_RANDOM=y +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +CONFIG_HW_RANDOM_CAVIUM=y +CONFIG_HW_RANDOM_ROCKCHIP=y +# CONFIG_APPLICOM is not set + +# +# PCMCIA character devices +# +# CONFIG_RAW_DRIVER is not set +CONFIG_TCG_TPM=y +CONFIG_HW_RANDOM_TPM=y +# CONFIG_TCG_TIS is not set +# CONFIG_TCG_TIS_SPI is not set +# CONFIG_TCG_TIS_I2C_ATMEL is not set +CONFIG_TCG_TIS_I2C_INFINEON=y +# CONFIG_TCG_TIS_I2C_NUVOTON is not set +# CONFIG_TCG_ATMEL is not set +# CONFIG_TCG_VTPM_PROXY is not set +# CONFIG_TCG_TIS_ST33ZP24_I2C is not set +# CONFIG_TCG_TIS_ST33ZP24_SPI is not set +CONFIG_DEVPORT=y +# CONFIG_XILLYBUS is not set +# CONFIG_RANDOM_TRUST_BOOTLOADER is not set + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX=y + +# +# Multiplexer I2C Chip support +# +# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set +# CONFIG_I2C_MUX_GPIO is not set +# CONFIG_I2C_MUX_GPMUX is not set +# CONFIG_I2C_MUX_LTC4306 is not set +# CONFIG_I2C_MUX_PCA9541 is not set +# CONFIG_I2C_MUX_PCA954x is not set +# CONFIG_I2C_MUX_PINCTRL is not set +# CONFIG_I2C_MUX_REG is not set +# CONFIG_I2C_DEMUX_PINCTRL is not set +# CONFIG_I2C_MUX_MLXCPLD is not set +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=y + +# +# I2C Hardware Bus support +# + +# +# PC SMBus host controller drivers +# +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +# CONFIG_I2C_AMD8111 is not set +# CONFIG_I2C_I801 is not set +# CONFIG_I2C_ISCH is not set +# CONFIG_I2C_PIIX4 is not set +# CONFIG_I2C_NFORCE2 is not set +# CONFIG_I2C_SIS5595 is not set +# CONFIG_I2C_SIS630 is not set +# CONFIG_I2C_SIS96X is not set +# CONFIG_I2C_VIA is not set +# CONFIG_I2C_VIAPRO is not set + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_CADENCE is not set +# CONFIG_I2C_CBUS_GPIO is not set +# CONFIG_I2C_DESIGNWARE_PLATFORM is not set +# CONFIG_I2C_DESIGNWARE_PCI is not set +# CONFIG_I2C_EMEV2 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_RK3X=y +# CONFIG_I2C_SIMTEC is not set +# CONFIG_I2C_THUNDERX 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_CROS_EC_TUNNEL=y +# CONFIG_I2C_STUB is not set +# CONFIG_I2C_SLAVE is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y +# CONFIG_SPI_MEM is not set + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_ALTERA is not set +# CONFIG_SPI_AXI_SPI_ENGINE is not set +CONFIG_SPI_BITBANG=y +# CONFIG_SPI_CADENCE is not set +# CONFIG_SPI_DESIGNWARE is not set +# CONFIG_SPI_GPIO is not set +# CONFIG_SPI_FSL_SPI is not set +# CONFIG_SPI_OC_TINY is not set +# CONFIG_SPI_PL022 is not set +# CONFIG_SPI_PXA2XX is not set +CONFIG_SPI_ROCKCHIP=y +# CONFIG_SPI_SC18IS602 is not set +# CONFIG_SPI_THUNDERX is not set +# CONFIG_SPI_XCOMM is not set +# CONFIG_SPI_XILINX is not set +# CONFIG_SPI_ZYNQMP_GQSPI is not set + +# +# SPI Protocol Masters +# +CONFIG_SPI_SPIDEV=y +# CONFIG_SPI_LOOPBACK_TEST is not set +# CONFIG_SPI_TLE62X0 is not set +# CONFIG_SPI_SLAVE is not set +# CONFIG_SPMI is not set +# CONFIG_HSI is not set +CONFIG_PPS=y +# CONFIG_PPS_DEBUG is not set + +# +# PPS clients support +# +# CONFIG_PPS_CLIENT_KTIMER is not set +# CONFIG_PPS_CLIENT_LDISC is not set +# CONFIG_PPS_CLIENT_GPIO is not set + +# +# PPS generators support +# + +# +# PTP clock support +# +CONFIG_PTP_1588_CLOCK=y + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +CONFIG_PINCTRL=y +CONFIG_PINMUX=y +CONFIG_PINCONF=y +CONFIG_GENERIC_PINCONF=y +# CONFIG_DEBUG_PINCTRL is not set +# CONFIG_PINCTRL_AMD is not set +# CONFIG_PINCTRL_MCP23S08 is not set +CONFIG_PINCTRL_ROCKCHIP=y +# CONFIG_PINCTRL_SINGLE is not set +# CONFIG_PINCTRL_SX150X is not set +CONFIG_PINCTRL_RK628=y +CONFIG_PINCTRL_RK805=y +CONFIG_GPIOLIB=y +CONFIG_GPIOLIB_FASTPATH_LIMIT=512 +CONFIG_OF_GPIO=y +CONFIG_GPIOLIB_IRQCHIP=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_GENERIC=y + +# +# Memory mapped GPIO drivers +# +# CONFIG_GPIO_74XX_MMIO is not set +# CONFIG_GPIO_ALTERA is not set +# CONFIG_GPIO_DWAPB is not set +# CONFIG_GPIO_FTGPIO010 is not set +CONFIG_GPIO_GENERIC_PLATFORM=y +# CONFIG_GPIO_GRGPIO is not set +# CONFIG_GPIO_HLWD is not set +# CONFIG_GPIO_MB86S7X is not set +# CONFIG_GPIO_MOCKUP is not set +# CONFIG_GPIO_PL061 is not set +CONFIG_GPIO_ROCKCHIP=y +# CONFIG_GPIO_SYSCON is not set +# CONFIG_GPIO_XGENE is not set +# CONFIG_GPIO_XILINX is not set + +# +# I2C GPIO expanders +# +# CONFIG_GPIO_ADP5588 is not set +# CONFIG_GPIO_ADNP is not set +# CONFIG_GPIO_MAX7300 is not set +# CONFIG_GPIO_MAX732X is not set +CONFIG_GPIO_PCA953X=y +# CONFIG_GPIO_PCA953X_IRQ is not set +# CONFIG_GPIO_PCF857X is not set +# CONFIG_GPIO_TPIC2810 is not set + +# +# MFD GPIO expanders +# +# CONFIG_GPIO_TPS6586X is not set + +# +# PCI GPIO expanders +# +# CONFIG_GPIO_BT8XX is not set +# CONFIG_GPIO_PCI_IDIO_16 is not set +# CONFIG_GPIO_PCIE_IDIO_24 is not set +# CONFIG_GPIO_RDC321X is not set + +# +# SPI GPIO expanders +# +# CONFIG_GPIO_74X164 is not set +# CONFIG_GPIO_MAX3191X is not set +# CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MC33880 is not set +# CONFIG_GPIO_PISOSR is not set +# CONFIG_GPIO_XRA1403 is not set + +# +# USB GPIO expanders +# +# CONFIG_W1 is not set +CONFIG_POWER_AVS=y +CONFIG_ROCKCHIP_IODOMAIN=y +CONFIG_POWER_RESET=y +# CONFIG_POWER_RESET_BRCMSTB is not set +CONFIG_POWER_RESET_GPIO=y +CONFIG_POWER_RESET_GPIO_RESTART=y +# CONFIG_POWER_RESET_LTC2952 is not set +# CONFIG_POWER_RESET_RESTART is not set +# CONFIG_POWER_RESET_XGENE is not set +# CONFIG_POWER_RESET_SYSCON is not set +# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set +CONFIG_REBOOT_MODE=y +CONFIG_SYSCON_REBOOT_MODE=y +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +# CONFIG_PDA_POWER is not set +# CONFIG_GENERIC_ADC_BATTERY is not set +# CONFIG_TEST_POWER is not set +# CONFIG_CHARGER_ADP5061 is not set +# CONFIG_BATTERY_DS2780 is not set +# CONFIG_BATTERY_DS2781 is not set +# CONFIG_BATTERY_DS2782 is not set +# CONFIG_BATTERY_LEGO_EV3 is not set +CONFIG_BATTERY_SBS=y +# CONFIG_CHARGER_SBS is not set +# CONFIG_MANAGER_SBS is not set +# CONFIG_BATTERY_BQ27XXX is not set +# CONFIG_BATTERY_MAX17040 is not set +# CONFIG_BATTERY_MAX17042 is not set +# CONFIG_CHARGER_ISP1704 is not set +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_CHARGER_LP8727 is not set +CONFIG_CHARGER_GPIO=y +# CONFIG_CHARGER_MANAGER is not set +# CONFIG_CHARGER_LTC3651 is not set +# CONFIG_CHARGER_DETECTOR_MAX14656 is not set +# CONFIG_CHARGER_BQ2415X is not set +# CONFIG_CHARGER_BQ24190 is not set +# CONFIG_CHARGER_BQ24257 is not set +CONFIG_CHARGER_BQ24735=y +# CONFIG_CHARGER_BQ25700 is not set +# CONFIG_CHARGER_BQ25890 is not set +# CONFIG_CHARGER_SMB347 is not set +# CONFIG_BATTERY_GAUGE_LTC2941 is not set +# CONFIG_CHARGER_RT9455 is not set +# CONFIG_CHARGER_CROS_USBPD is not set +CONFIG_BATTERY_CW2015=y +# CONFIG_BATTERY_RK816 is not set +CONFIG_BATTERY_RK817=y +CONFIG_CHARGER_RK817=y +# CONFIG_BATTERY_RK818 is not set +# CONFIG_CHARGER_RK818 is not set +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +# CONFIG_SENSORS_AD7314 is not set +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADT7310 is not set +# CONFIG_SENSORS_ADT7410 is not set +# CONFIG_SENSORS_ADT7411 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_ASC7621 is not set +# CONFIG_SENSORS_ARM_SCMI is not set +# CONFIG_SENSORS_ASPEED is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_DS620 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_I5K_AMB is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_FTSTEUTATES is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_G760A is not set +# CONFIG_SENSORS_G762 is not set +# CONFIG_SENSORS_GPIO_FAN is not set +# CONFIG_SENSORS_HIH6130 is not set +# CONFIG_SENSORS_IIO_HWMON is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_JC42 is not set +# CONFIG_SENSORS_POWR1220 is not set +# CONFIG_SENSORS_LINEAGE is not set +# CONFIG_SENSORS_LTC2945 is not set +# CONFIG_SENSORS_LTC2990 is not set +# CONFIG_SENSORS_LTC4151 is not set +# CONFIG_SENSORS_LTC4215 is not set +# CONFIG_SENSORS_LTC4222 is not set +# CONFIG_SENSORS_LTC4245 is not set +# CONFIG_SENSORS_LTC4260 is not set +# CONFIG_SENSORS_LTC4261 is not set +# CONFIG_SENSORS_MAX1111 is not set +# CONFIG_SENSORS_MAX16065 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX1668 is not set +# CONFIG_SENSORS_MAX197 is not set +# CONFIG_SENSORS_MAX31722 is not set +# CONFIG_SENSORS_MAX6621 is not set +# CONFIG_SENSORS_MAX6639 is not set +# CONFIG_SENSORS_MAX6642 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_MAX6697 is not set +# CONFIG_SENSORS_MAX31790 is not set +# CONFIG_SENSORS_MCP3021 is not set +# CONFIG_SENSORS_TC654 is not set +# CONFIG_SENSORS_ADCXX is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM70 is not set +# CONFIG_SENSORS_LM73 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_LM95234 is not set +# CONFIG_SENSORS_LM95241 is not set +# CONFIG_SENSORS_LM95245 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_NTC_THERMISTOR is not set +# CONFIG_SENSORS_NCT6683 is not set +# CONFIG_SENSORS_NCT6775 is not set +# CONFIG_SENSORS_NCT7802 is not set +# CONFIG_SENSORS_NCT7904 is not set +# CONFIG_SENSORS_NPCM7XX is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_PMBUS is not set +# CONFIG_SENSORS_PWM_FAN is not set +# CONFIG_SENSORS_SHT15 is not set +# CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SHT3x is not set +# CONFIG_SENSORS_SHTC1 is not set +# CONFIG_SENSORS_SIS5595 is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_EMC1403 is not set +# CONFIG_SENSORS_EMC2103 is not set +# CONFIG_SENSORS_EMC6W201 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_SCH5627 is not set +# CONFIG_SENSORS_SCH5636 is not set +# CONFIG_SENSORS_STTS751 is not set +# CONFIG_SENSORS_SMM665 is not set +# CONFIG_SENSORS_ADC128D818 is not set +# CONFIG_SENSORS_ADS1015 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_ADS7871 is not set +# CONFIG_SENSORS_AMC6821 is not set +# CONFIG_SENSORS_INA209 is not set +# CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_INA3221 is not set +# CONFIG_SENSORS_TC74 is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_TMP102 is not set +# CONFIG_SENSORS_TMP103 is not set +# CONFIG_SENSORS_TMP108 is not set +# CONFIG_SENSORS_TMP401 is not set +# CONFIG_SENSORS_TMP421 is not set +# CONFIG_SENSORS_VIA686A is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_VT8231 is not set +# CONFIG_SENSORS_W83773G is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83795 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set +CONFIG_THERMAL=y +# CONFIG_THERMAL_STATISTICS is not set +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_OF=y +CONFIG_THERMAL_WRITABLE_TRIPS=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_DEFAULT_GOV_POWER_ALLOCATOR=y +CONFIG_THERMAL_GOV_FAIR_SHARE=y +CONFIG_THERMAL_GOV_STEP_WISE=y +# CONFIG_THERMAL_GOV_BANG_BANG is not set +# CONFIG_THERMAL_GOV_USER_SPACE is not set +CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y +CONFIG_CPU_THERMAL=y +# CONFIG_CLOCK_THERMAL is not set +CONFIG_DEVFREQ_THERMAL=y +# CONFIG_THERMAL_EMULATION is not set +# CONFIG_QORIQ_THERMAL is not set +CONFIG_ROCKCHIP_THERMAL=y +# CONFIG_RK_VIRTUAL_THERMAL is not set +# CONFIG_RK3368_THERMAL is not set + +# +# ACPI INT340X thermal drivers +# +# CONFIG_GENERIC_ADC_THERMAL is not set +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y +# CONFIG_WATCHDOG_SYSFS is not set + +# +# Watchdog Device Drivers +# +# CONFIG_SOFT_WATCHDOG is not set +# CONFIG_GPIO_WATCHDOG is not set +# CONFIG_XILINX_WATCHDOG is not set +# CONFIG_ZIIRAVE_WATCHDOG is not set +# CONFIG_ARM_SP805_WATCHDOG is not set +# CONFIG_ARM_SBSA_WATCHDOG is not set +# CONFIG_CADENCE_WATCHDOG is not set +CONFIG_DW_WATCHDOG=y +# CONFIG_MAX63XX_WATCHDOG is not set +# CONFIG_ALIM7101_WDT is not set +# CONFIG_I6300ESB_WDT is not set +# CONFIG_MEN_A21_WDT is not set + +# +# PCI-based Watchdog Cards +# +# CONFIG_PCIPCWATCHDOG is not set +# CONFIG_WDTPCI is not set + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set + +# +# Watchdog Pretimeout Governors +# +# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set +CONFIG_SSB_POSSIBLE=y +# CONFIG_SSB is not set +CONFIG_BCMA_POSSIBLE=y +# CONFIG_BCMA is not set + +# +# Multifunction device drivers +# +CONFIG_MFD_CORE=y +# CONFIG_MFD_ACT8945A is not set +# CONFIG_MFD_AS3711 is not set +# CONFIG_MFD_AS3722 is not set +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_MFD_AAT2870_CORE is not set +# CONFIG_MFD_ATMEL_FLEXCOM is not set +# CONFIG_MFD_ATMEL_HLCDC is not set +# CONFIG_MFD_BCM590XX is not set +# CONFIG_MFD_BD9571MWV is not set +# CONFIG_MFD_AXP20X_I2C is not set +CONFIG_MFD_CROS_EC=y +# CONFIG_MFD_CROS_EC_CHARDEV is not set +# CONFIG_MFD_MADERA is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_MFD_DA9052_SPI is not set +# CONFIG_MFD_DA9052_I2C is not set +# CONFIG_MFD_DA9055 is not set +# CONFIG_MFD_DA9062 is not set +# CONFIG_MFD_DA9063 is not set +# CONFIG_MFD_DA9150 is not set +# CONFIG_MFD_DLN2 is not set +# CONFIG_MFD_MC13XXX_SPI is not set +# CONFIG_MFD_MC13XXX_I2C is not set +# CONFIG_MFD_HI6421_PMIC is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_HTC_I2CPLD is not set +# CONFIG_LPC_ICH is not set +# CONFIG_LPC_SCH is not set +# CONFIG_MFD_JANZ_CMODIO is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_88PM800 is not set +# CONFIG_MFD_88PM805 is not set +# CONFIG_MFD_88PM860X is not set +# CONFIG_MFD_MAX14577 is not set +# CONFIG_MFD_MAX77620 is not set +# CONFIG_MFD_MAX77686 is not set +# CONFIG_MFD_MAX77693 is not set +# CONFIG_MFD_MAX77843 is not set +# CONFIG_MFD_MAX8907 is not set +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8997 is not set +# CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_MT6397 is not set +# CONFIG_MFD_MENF21BMC is not set +# CONFIG_EZX_PCAP is not set +# CONFIG_MFD_CPCAP is not set +# CONFIG_MFD_VIPERBOARD is not set +# CONFIG_MFD_RETU is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_MFD_RDC321X is not set +# CONFIG_MFD_RT5033 is not set +# CONFIG_MFD_RC5T583 is not set +CONFIG_MFD_RK618=y +CONFIG_MFD_RK628=y +# CONFIG_MFD_RK630 is not set +# CONFIG_MFD_RK630_I2C is not set +# CONFIG_MFD_RK630_SPI is not set +CONFIG_MFD_RK808=y +# CONFIG_MFD_RK1000 is not set +# CONFIG_MFD_RN5T618 is not set +# CONFIG_MFD_SEC_CORE is not set +# CONFIG_MFD_SI476X_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SKY81452 is not set +# CONFIG_MFD_SMSC is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_MFD_STMPE 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_TI_LMU is not set +# CONFIG_MFD_PALMAS is not set +# CONFIG_TPS6105X is not set +# CONFIG_TPS65010 is not set +# CONFIG_TPS6507X is not set +# CONFIG_MFD_TPS65086 is not set +# CONFIG_MFD_TPS65090 is not set +# CONFIG_MFD_TPS65217 is not set +# CONFIG_MFD_TI_LP873X is not set +# CONFIG_MFD_TI_LP87565 is not set +# CONFIG_MFD_TPS65218 is not set +CONFIG_MFD_TPS6586X=y +# CONFIG_MFD_TPS65910 is not set +# CONFIG_MFD_TPS65912_I2C is not set +# CONFIG_MFD_TPS65912_SPI is not set +# CONFIG_MFD_TPS80031 is not set +# CONFIG_TWL4030_CORE is not set +# CONFIG_TWL6040_CORE is not set +# CONFIG_MFD_WL1273_CORE is not set +# CONFIG_MFD_LM3533 is not set +# CONFIG_MFD_TC3589X is not set +# CONFIG_MFD_VX855 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_MFD_ROHM_BD718XX is not set +# CONFIG_RAVE_SP_CORE is not set +CONFIG_FUSB_30X=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_DEBUG=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set +# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set +# CONFIG_REGULATOR_PROXY_CONSUMER is not set +# CONFIG_REGULATOR_88PG86X is not set +CONFIG_REGULATOR_ACT8865=y +# 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_FAN53555=y +CONFIG_REGULATOR_GPIO=y +# 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_LP8752=y +# CONFIG_REGULATOR_LP8755 is not set +# CONFIG_REGULATOR_LTC3589 is not set +# CONFIG_REGULATOR_LTC3676 is not set +# CONFIG_REGULATOR_MAX1586 is not set +# CONFIG_REGULATOR_MAX8649 is not set +# CONFIG_REGULATOR_MAX8660 is not set +# CONFIG_REGULATOR_MAX8952 is not set +# CONFIG_REGULATOR_MAX8973 is not set +CONFIG_REGULATOR_MP8865=y +# CONFIG_REGULATOR_MT6311 is not set +# CONFIG_REGULATOR_PFUZE100 is not set +# CONFIG_REGULATOR_PV88060 is not set +# CONFIG_REGULATOR_PV88080 is not set +# CONFIG_REGULATOR_PV88090 is not set +CONFIG_REGULATOR_PWM=y +CONFIG_REGULATOR_RK808=y +# CONFIG_REGULATOR_SY8106A is not set +# CONFIG_REGULATOR_TPS51632 is not set +# CONFIG_REGULATOR_TPS549B22 is not set +# CONFIG_REGULATOR_TPS62360 is not set +# CONFIG_REGULATOR_TPS65023 is not set +# CONFIG_REGULATOR_TPS6507X is not set +CONFIG_REGULATOR_TPS65132=y +# CONFIG_REGULATOR_TPS6524X is not set +CONFIG_REGULATOR_TPS6586X=y +# CONFIG_REGULATOR_VCTRL is not set +CONFIG_REGULATOR_XZ3216=y +# CONFIG_REGULATOR_DIO5632 is not set +CONFIG_CEC_CORE=y +CONFIG_CEC_NOTIFIER=y +# CONFIG_RC_CORE is not set +CONFIG_MEDIA_SUPPORT=y + +# +# Multimedia core support +# +CONFIG_MEDIA_CAMERA_SUPPORT=y +# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set +# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set +# CONFIG_MEDIA_RADIO_SUPPORT is not set +# CONFIG_MEDIA_SDR_SUPPORT is not set +CONFIG_MEDIA_CEC_SUPPORT=y +CONFIG_MEDIA_CONTROLLER=y +CONFIG_VIDEO_DEV=y +CONFIG_VIDEO_V4L2_SUBDEV_API=y +CONFIG_VIDEO_V4L2=y +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +# CONFIG_VIDEO_PCI_SKELETON is not set +CONFIG_V4L2_MEM2MEM_DEV=y +# CONFIG_V4L2_FLASH_LED_CLASS is not set +CONFIG_V4L2_FWNODE=y + +# +# Media drivers +# +CONFIG_MEDIA_USB_SUPPORT=y + +# +# Webcam devices +# +CONFIG_USB_VIDEO_CLASS=y +# CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV is not set +# CONFIG_USB_GSPCA is not set +# CONFIG_USB_PWC is not set +# CONFIG_VIDEO_CPIA2 is not set +# CONFIG_USB_ZR364XX is not set +# CONFIG_USB_STKWEBCAM is not set +# CONFIG_USB_S2255 is not set +# CONFIG_VIDEO_USBTV is not set + +# +# Webcam, TV (analog/digital) USB devices +# +# CONFIG_VIDEO_EM28XX is not set + +# +# USB HDMI CEC adapters +# +# CONFIG_USB_PULSE8_CEC is not set +# CONFIG_USB_RAINSHADOW_CEC is not set +# CONFIG_MEDIA_PCI_SUPPORT is not set +CONFIG_V4L_PLATFORM_DRIVERS=y +# CONFIG_VIDEO_CAFE_CCIC is not set +# CONFIG_VIDEO_CADENCE is not set +# CONFIG_VIDEO_MUX is not set +CONFIG_SOC_CAMERA=y +# CONFIG_SOC_CAMERA_PLATFORM is not set +# CONFIG_VIDEO_XILINX is not set +CONFIG_VIDEO_ROCKCHIP_CIF=y +CONFIG_ROCKCHIP_CIF_WORKMODE_PINGPONG=y +# CONFIG_ROCKCHIP_CIF_WORKMODE_ONEFRAME is not set +CONFIG_VIDEO_ROCKCHIP_ISP1=y +CONFIG_VIDEO_ROCKCHIP_ISP=y +# CONFIG_VIDEO_ROCKCHIP_ISPP is not set +CONFIG_V4L_MEM2MEM_DRIVERS=y +# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set +# CONFIG_VIDEO_SH_VEU is not set +CONFIG_VIDEO_ROCKCHIP_RGA=y +# CONFIG_V4L_TEST_DRIVERS is not set +# CONFIG_CEC_PLATFORM_DRIVERS is not set + +# +# Supported MMC/SDIO adapters +# +# CONFIG_CYPRESS_FIRMWARE is not set +CONFIG_VIDEOBUF2_CORE=y +CONFIG_VIDEOBUF2_V4L2=y +CONFIG_VIDEOBUF2_MEMOPS=y +CONFIG_VIDEOBUF2_DMA_CONTIG=y +CONFIG_VIDEOBUF2_VMALLOC=y +CONFIG_VIDEOBUF2_DMA_SG=y + +# +# Media ancillary drivers (tuners, sensors, i2c, spi, frontends) +# +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set + +# +# I2C Encoders, decoders, sensors and other helper chips +# + +# +# Audio decoders, processors and mixers +# +# CONFIG_VIDEO_TVAUDIO is not set +# CONFIG_VIDEO_TDA7432 is not set +# CONFIG_VIDEO_TDA9840 is not set +# CONFIG_VIDEO_TDA1997X is not set +# CONFIG_VIDEO_TEA6415C is not set +# CONFIG_VIDEO_TEA6420 is not set +# CONFIG_VIDEO_MSP3400 is not set +# CONFIG_VIDEO_CS3308 is not set +# CONFIG_VIDEO_CS5345 is not set +# CONFIG_VIDEO_CS53L32A is not set +# CONFIG_VIDEO_TLV320AIC23B is not set +# CONFIG_VIDEO_UDA1342 is not set +# CONFIG_VIDEO_WM8775 is not set +# CONFIG_VIDEO_WM8739 is not set +# CONFIG_VIDEO_VP27SMPX is not set +# CONFIG_VIDEO_SONY_BTF_MPX is not set + +# +# RDS decoders +# +# CONFIG_VIDEO_SAA6588 is not set + +# +# Video decoders +# +# CONFIG_VIDEO_ADV7180 is not set +# CONFIG_VIDEO_ADV7183 is not set +# CONFIG_VIDEO_ADV748X is not set +# CONFIG_VIDEO_ADV7604 is not set +# CONFIG_VIDEO_ADV7842 is not set +# CONFIG_VIDEO_BT819 is not set +# CONFIG_VIDEO_BT856 is not set +# CONFIG_VIDEO_BT866 is not set +# CONFIG_VIDEO_KS0127 is not set +# CONFIG_VIDEO_ML86V7667 is not set +# CONFIG_VIDEO_AD5820 is not set +# CONFIG_VIDEO_AK7375 is not set +# CONFIG_VIDEO_DW9714 is not set +# CONFIG_VIDEO_DW9807_VCM is not set +# CONFIG_VIDEO_FP5510 is not set +# CONFIG_VIDEO_GT9760S is not set +# CONFIG_VIDEO_VM149C is not set +# CONFIG_VIDEO_SAA7110 is not set +# CONFIG_VIDEO_SAA711X is not set +# CONFIG_VIDEO_TC358743 is not set +# CONFIG_VIDEO_TC35874X is not set +CONFIG_VIDEO_RK628_CSI=y +# CONFIG_VIDEO_TECHPOINT is not set +# CONFIG_VIDEO_TVP514X is not set +# CONFIG_VIDEO_TVP5150 is not set +# CONFIG_VIDEO_TVP7002 is not set +# CONFIG_VIDEO_TW2804 is not set +# CONFIG_VIDEO_TW9903 is not set +# CONFIG_VIDEO_TW9906 is not set +# CONFIG_VIDEO_TW9910 is not set +# CONFIG_VIDEO_VPX3220 is not set + +# +# Video and audio decoders +# +# CONFIG_VIDEO_SAA717X is not set +# CONFIG_VIDEO_CX25840 is not set + +# +# Video encoders +# +# CONFIG_VIDEO_SAA7127 is not set +# CONFIG_VIDEO_SAA7185 is not set +# CONFIG_VIDEO_ADV7170 is not set +# CONFIG_VIDEO_ADV7175 is not set +# CONFIG_VIDEO_ADV7343 is not set +# CONFIG_VIDEO_ADV7393 is not set +# CONFIG_VIDEO_ADV7511 is not set +# CONFIG_VIDEO_AD9389B is not set +# CONFIG_VIDEO_AK881X is not set +# CONFIG_VIDEO_THS8200 is not set + +# +# Camera sensor devices +# +# CONFIG_VIDEO_IMX178 is not set +# CONFIG_VIDEO_IMX219 is not set +# CONFIG_VIDEO_IMX258 is not set +# CONFIG_VIDEO_IMX274 is not set +# CONFIG_VIDEO_IMX307 is not set +# CONFIG_VIDEO_IMX317 is not set +# CONFIG_VIDEO_IMX323 is not set +# CONFIG_VIDEO_IMX327 is not set +# CONFIG_VIDEO_IMX334 is not set +# CONFIG_VIDEO_IMX335 is not set +# CONFIG_VIDEO_IMX347 is not set +# CONFIG_VIDEO_IMX378 is not set +# CONFIG_VIDEO_IMX415 is not set +# CONFIG_VIDEO_IMX464 is not set +# CONFIG_VIDEO_OS02G10 is not set +CONFIG_VIDEO_OS04A10=y +# CONFIG_VIDEO_OS04C10 is not set +# CONFIG_VIDEO_OS05A20 is not set +# CONFIG_VIDEO_OS08A10 is not set +# CONFIG_VIDEO_OV02B10 is not set +# CONFIG_VIDEO_OV02K10 is not set +# CONFIG_VIDEO_OV2640 is not set +# CONFIG_VIDEO_OV2659 is not set +# CONFIG_VIDEO_OV2680 is not set +# CONFIG_VIDEO_OV2685 is not set +# CONFIG_VIDEO_OV2718 is not set +# CONFIG_VIDEO_OV2735 is not set +# CONFIG_VIDEO_OV2775 is not set +# CONFIG_VIDEO_OV4686 is not set +# CONFIG_VIDEO_OV4688 is not set +CONFIG_VIDEO_OV4689=y +# CONFIG_VIDEO_OV5640 is not set +# CONFIG_VIDEO_OV5645 is not set +# CONFIG_VIDEO_OV5647 is not set +# CONFIG_VIDEO_OV5648 is not set +# CONFIG_VIDEO_OV5670 is not set +CONFIG_VIDEO_OV5695=y +# CONFIG_VIDEO_OV6650 is not set +CONFIG_VIDEO_OV7251=y +# CONFIG_VIDEO_OV772X is not set +# CONFIG_VIDEO_OV7640 is not set +# CONFIG_VIDEO_OV7670 is not set +# CONFIG_VIDEO_OV7740 is not set +# CONFIG_VIDEO_OV7750 is not set +# CONFIG_VIDEO_OV8858 is not set +# CONFIG_VIDEO_OV9281 is not set +# CONFIG_VIDEO_OV9650 is not set +# CONFIG_VIDEO_OV9750 is not set +# CONFIG_VIDEO_OV12D2Q is not set +CONFIG_VIDEO_OV13850=y +# CONFIG_VIDEO_OV13858 is not set +# CONFIG_VIDEO_PREISP_DUMMY_SENSOR is not set +# CONFIG_VIDEO_VS6624 is not set +# CONFIG_VIDEO_MT9M032 is not set +# CONFIG_VIDEO_MT9M111 is not set +# CONFIG_VIDEO_MT9P031 is not set +# CONFIG_VIDEO_MT9T001 is not set +# CONFIG_VIDEO_MT9T112 is not set +# CONFIG_VIDEO_MT9V011 is not set +# CONFIG_VIDEO_MT9V032 is not set +# CONFIG_VIDEO_MT9V111 is not set +# CONFIG_VIDEO_AR0230 is not set +# CONFIG_VIDEO_SR030PC30 is not set +# CONFIG_VIDEO_NOON010PC30 is not set +# CONFIG_VIDEO_M5MOLS is not set +# CONFIG_VIDEO_RJ54N1 is not set +# CONFIG_VIDEO_S5K6AA is not set +# CONFIG_VIDEO_S5K6A3 is not set +# CONFIG_VIDEO_S5KGM1SP is not set +# CONFIG_VIDEO_S5K4H7YX is not set +# CONFIG_VIDEO_S5K4ECGX is not set +# CONFIG_VIDEO_S5K5BAF is not set +# CONFIG_VIDEO_SMIAPP is not set +# CONFIG_VIDEO_ET8EK8 is not set +# CONFIG_VIDEO_S5C73M3 is not set +# CONFIG_VIDEO_GC02M2 is not set +# CONFIG_VIDEO_GC0312 is not set +# CONFIG_VIDEO_GC0329 is not set +# CONFIG_VIDEO_GC032A is not set +# CONFIG_VIDEO_GC0403 is not set +# CONFIG_VIDEO_GC2035 is not set +CONFIG_VIDEO_GC2053=y +CONFIG_VIDEO_GC2093=y +# CONFIG_VIDEO_GC2145 is not set +# CONFIG_VIDEO_GC2155 is not set +# CONFIG_VIDEO_GC2355 is not set +# CONFIG_VIDEO_GC2375H is not set +# CONFIG_VIDEO_GC2385 is not set +# CONFIG_VIDEO_GC4663 is not set +# CONFIG_VIDEO_GC4C33 is not set +# CONFIG_VIDEO_GC5024 is not set +# CONFIG_VIDEO_GC5025 is not set +# CONFIG_VIDEO_GC5035 is not set +CONFIG_VIDEO_GC8034=y +# CONFIG_VIDEO_BF3925 is not set +# CONFIG_VIDEO_JX_F37 is not set +# CONFIG_VIDEO_JX_H62 is not set +# CONFIG_VIDEO_JX_H65 is not set +# CONFIG_VIDEO_JX_K04 is not set +# CONFIG_VIDEO_SC031GS is not set +# CONFIG_VIDEO_SC035HGS is not set +# CONFIG_VIDEO_SC132GS is not set +# CONFIG_VIDEO_SC200AI is not set +# CONFIG_VIDEO_SC210IOT is not set +# CONFIG_VIDEO_SC2232 is not set +# CONFIG_VIDEO_SC2239 is not set +# CONFIG_VIDEO_SC2310 is not set +# CONFIG_VIDEO_SC2335 is not set +# CONFIG_VIDEO_SC401AI is not set +# CONFIG_VIDEO_SC4238 is not set +# CONFIG_VIDEO_SC430CS is not set +# CONFIG_VIDEO_SC500AI is not set +# CONFIG_VIDEO_SC8220 is not set +# CONFIG_VIDEO_SP250A is not set +# CONFIG_VIDEO_HYNIX_HI556 is not set +# CONFIG_VIDEO_HYNIX_HI846 is not set + +# +# Flash devices +# +# CONFIG_VIDEO_ADP1653 is not set +# CONFIG_VIDEO_LM3560 is not set +# CONFIG_VIDEO_LM3646 is not set +# CONFIG_VIDEO_SGM3784 is not set + +# +# Video improvement chips +# +# CONFIG_VIDEO_UPD64031A is not set +# CONFIG_VIDEO_UPD64083 is not set + +# +# Audio/Video compression chips +# +# CONFIG_VIDEO_SAA6752HS is not set + +# +# SDR tuner chips +# + +# +# Miscellaneous helper chips +# +# CONFIG_VIDEO_THS7303 is not set +# CONFIG_VIDEO_M52790 is not set +# CONFIG_VIDEO_I2C is not set +# CONFIG_VIDEO_NVP6158 is not set +# CONFIG_VIDEO_NVP6188 is not set +# CONFIG_VIDEO_NVP6324 is not set +# CONFIG_VIDEO_HALL_DC_MOTOR is not set +# CONFIG_VIDEO_RK_IRCUT is not set +# CONFIG_VIDEO_MP6507 is not set + +# +# Sensors used on soc_camera driver +# + +# +# soc_camera sensor drivers +# +# CONFIG_SOC_CAMERA_MT9M001 is not set +# CONFIG_SOC_CAMERA_MT9M111 is not set +# CONFIG_SOC_CAMERA_MT9T112 is not set +# CONFIG_SOC_CAMERA_MT9V022 is not set +# CONFIG_SOC_CAMERA_OV5642 is not set +# CONFIG_SOC_CAMERA_OV772X is not set +# CONFIG_SOC_CAMERA_OV9640 is not set +# CONFIG_SOC_CAMERA_OV9740 is not set +# CONFIG_SOC_CAMERA_RJ54N1 is not set +# CONFIG_SOC_CAMERA_TW9910 is not set + +# +# SPI helper chips +# +# CONFIG_VIDEO_GS1662 is not set +# CONFIG_VIDEO_ROCKCHIP_PREISP is not set + +# +# Media SPI Adapters +# + +# +# Customise DVB Frontends +# + +# +# Tools to develop new frontends +# + +# +# Graphics support +# +# CONFIG_VGA_ARB is not set +CONFIG_DRM=y +CONFIG_DRM_IGNORE_IOTCL_PERMIT=y +CONFIG_DRM_MIPI_DSI=y +# CONFIG_DRM_DP_AUX_CHARDEV is not set +# CONFIG_DRM_DEBUG_MM is not set +# CONFIG_DRM_DEBUG_SELFTEST is not set +CONFIG_DRM_KMS_HELPER=y +CONFIG_DRM_KMS_FB_HELPER=y +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_FBDEV_OVERALLOC=100 +# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +# CONFIG_DRM_DP_CEC is not set +CONFIG_DRM_TTM=m +CONFIG_DRM_GEM_CMA_HELPER=y + +# +# I2C encoder or helper chips +# +# CONFIG_DRM_I2C_CH7006 is not set +# CONFIG_DRM_I2C_SIL164 is not set +# CONFIG_DRM_I2C_NXP_TDA998X is not set +# CONFIG_DRM_I2C_NXP_TDA9950 is not set +# CONFIG_DRM_HDLCD is not set +# CONFIG_DRM_MALI_DISPLAY is not set +# CONFIG_DRM_RADEON is not set +# CONFIG_DRM_AMDGPU is not set + +# +# ACP (Audio CoProcessor) Configuration +# + +# +# AMD Library routines +# +# CONFIG_DRM_NOUVEAU is not set +# CONFIG_DRM_VGEM is not set +# CONFIG_DRM_VKMS is not set +CONFIG_DRM_ROCKCHIP=y +# CONFIG_ROCKCHIP_DRM_DEBUG is not set +CONFIG_ROCKCHIP_ANALOGIX_DP=y +CONFIG_ROCKCHIP_CDN_DP=y +CONFIG_ROCKCHIP_DW_HDMI=y +CONFIG_ROCKCHIP_DW_MIPI_DSI=y +CONFIG_ROCKCHIP_INNO_HDMI=y +CONFIG_ROCKCHIP_LVDS=y +CONFIG_ROCKCHIP_DRM_TVE=y +CONFIG_ROCKCHIP_RGB=y +# CONFIG_DRM_ROCKCHIP_VVOP is not set +# CONFIG_ROCKCHIP_EBC_DEV is not set +CONFIG_DRM_ROCKCHIP_RK618=y +# CONFIG_DRM_ROCKCHIP_RK628 is not set +# CONFIG_DRM_UDL is not set +# CONFIG_DRM_AST is not set +# CONFIG_DRM_MGAG200 is not set +# CONFIG_DRM_CIRRUS_QEMU is not set +# CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set +# CONFIG_DRM_QXL is not set +# CONFIG_DRM_BOCHS is not set +CONFIG_DRM_PANEL=y + +# +# Display Panels +# +# CONFIG_DRM_PANEL_ARM_VERSATILE is not set +# CONFIG_DRM_PANEL_LVDS is not set +CONFIG_DRM_PANEL_SIMPLE=y +# CONFIG_DRM_PANEL_SIMPLE_OF_ONLY is not set +# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set +# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set +# CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set +# CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set +# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set +# CONFIG_DRM_PANEL_LG_LG4573 is not set +# CONFIG_DRM_PANEL_ORISETECH_OTM8009A is not set +# CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set +# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set +# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set +# CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set +# CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 is not set +# CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set +# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set +CONFIG_DRM_BRIDGE=y +CONFIG_DRM_PANEL_BRIDGE=y + +# +# Display Interface Bridges +# +# CONFIG_DRM_ANALOGIX_ANX78XX is not set +# CONFIG_DRM_CDNS_DSI is not set +# CONFIG_DRM_DUMB_VGA_DAC is not set +# CONFIG_DRM_LVDS_ENCODER is not set +# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set +# CONFIG_DRM_NXP_PTN3460 is not set +# CONFIG_DRM_PARADE_PS8622 is not set +# CONFIG_DRM_RK1000_TVE is not set +# CONFIG_DRM_SIL_SII8620 is not set +CONFIG_DRM_SII902X=y +# CONFIG_DRM_SII9234 is not set +# CONFIG_DRM_THINE_THC63LVD1024 is not set +# CONFIG_DRM_TOSHIBA_TC358767 is not set +# CONFIG_DRM_TI_TFP410 is not set +CONFIG_DRM_ANALOGIX_DP=y +# CONFIG_DRM_I2C_ADV7511 is not set +CONFIG_DRM_DW_HDMI=y +# CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set +CONFIG_DRM_DW_HDMI_I2S_AUDIO=y +CONFIG_DRM_DW_HDMI_CEC=y +# CONFIG_DRM_ARCPGU is not set +# CONFIG_DRM_HISI_HIBMC is not set +# CONFIG_DRM_HISI_KIRIN is not set +# CONFIG_DRM_MXSFB is not set +# CONFIG_DRM_TINYDRM is not set +# CONFIG_DRM_PL111 is not set +# CONFIG_DRM_LEGACY is not set +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y +CONFIG_MALI400=y +CONFIG_MALI450=y +# CONFIG_MALI470 is not set +# CONFIG_MALI400_DEBUG is not set +# CONFIG_MALI400_PROFILING is not set +# CONFIG_MALI400_UMP is not set +CONFIG_MALI_DMA_BUF_MAP_ON_ATTACH=y +CONFIG_MALI_SHARED_INTERRUPTS=y +# CONFIG_MALI_PMU_PARALLEL_POWER_UP is not set +CONFIG_MALI_DT=y +CONFIG_MALI_DEVFREQ=y +# CONFIG_MALI_QUIET is not set +CONFIG_MALI_MIDGARD_FOR_ANDROID=y +# CONFIG_MALI_MIDGARD_FOR_LINUX is not set +CONFIG_MALI_MIDGARD=y +# CONFIG_MALI_GATOR_SUPPORT is not set +# CONFIG_MALI_MIDGARD_ENABLE_TRACE is not set +# CONFIG_MALI_DMA_FENCE is not set +CONFIG_MALI_EXPERT=y +# CONFIG_MALI_CORESTACK is not set +# CONFIG_MALI_PRFCNT_SET_SECONDARY is not set +# CONFIG_MALI_PLATFORM_FAKE is not set +# CONFIG_MALI_PLATFORM_DEVICETREE is not set +CONFIG_MALI_PLATFORM_THIRDPARTY=y +CONFIG_MALI_PLATFORM_THIRDPARTY_NAME="rk" +CONFIG_MALI_DEBUG=y +CONFIG_MALI_FENCE_DEBUG=y +# CONFIG_MALI_NO_MALI is not set +# CONFIG_MALI_TRACE_TIMELINE is not set +# CONFIG_MALI_SYSTEM_TRACE is not set +# CONFIG_MALI_GPU_MMU_AARCH64 is not set +CONFIG_MALI_PWRSOFT_765=y +# CONFIG_MALI_KUTF is not set +CONFIG_MALI_BIFROST_FOR_ANDROID=y +# CONFIG_MALI_BIFROST_FOR_LINUX is not set +CONFIG_MALI_BIFROST=y +CONFIG_MALI_BIFROST_GATOR_SUPPORT=y +# CONFIG_MALI_BIFROST_ENABLE_TRACE is not set +CONFIG_MALI_BIFROST_DEVFREQ=y +# CONFIG_MALI_BIFROST_DMA_FENCE is not set +CONFIG_MALI_PLATFORM_NAME="rk" +# CONFIG_MALI_ARBITER_SUPPORT is not set +# CONFIG_MALI_BIFROST_EXPERT is not set +CONFIG_MALI_REAL_HW=y +# CONFIG_MALI_DMA_BUF_MAP_ON_DEMAND is not set +# CONFIG_MALI_DMA_BUF_LEGACY_COMPAT is not set +# CONFIG_MALI_GEM5_BUILD is not set + +# +# Frame buffer Devices +# +CONFIG_FB_CMDLINE=y +CONFIG_FB_NOTIFY=y +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_IMAGEBLIT=y +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_DEFERRED_IO=y +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_CIRRUS is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_ARMCLCD is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +# CONFIG_FB_UVESA is not set +# CONFIG_FB_OPENCORES is not set +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_NVIDIA is not set +# CONFIG_FB_RIVA is not set +# CONFIG_FB_I740 is not set +# CONFIG_FB_MATROX is not set +# CONFIG_FB_RADEON is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_S3 is not set +# CONFIG_FB_SAVAGE is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_KYRO is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_VT8623 is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_ARK is not set +# CONFIG_FB_PM3 is not set +# CONFIG_FB_CARMINE is not set +# CONFIG_FB_SMSCUFX is not set +# CONFIG_FB_UDL is not set +# CONFIG_FB_IBM_GXT4500 is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_BROADSHEET is not set +# CONFIG_FB_SIMPLE is not set +# CONFIG_FB_SSD1307 is not set +# CONFIG_FB_SM712 is not set +CONFIG_BACKLIGHT_LCD_SUPPORT=y +# CONFIG_LCD_CLASS_DEVICE is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_GENERIC=y +CONFIG_BACKLIGHT_PWM=y +# CONFIG_BACKLIGHT_PM8941_WLED is not set +# CONFIG_BACKLIGHT_ADP8860 is not set +# CONFIG_BACKLIGHT_ADP8870 is not set +# CONFIG_BACKLIGHT_LM3630A is not set +# CONFIG_BACKLIGHT_LM3639 is not set +# CONFIG_BACKLIGHT_LP855X is not set +# CONFIG_BACKLIGHT_GPIO is not set +# CONFIG_BACKLIGHT_LV5207LP is not set +# CONFIG_BACKLIGHT_BD6107 is not set +# CONFIG_BACKLIGHT_ARCXCNN is not set + +# +# Rockchip Misc Video driver +# + +# +# RGA +# +# CONFIG_ROCKCHIP_RGA is not set + +# +# RGA2 +# +CONFIG_ROCKCHIP_RGA2=y + +# +# IEP +# +# CONFIG_IEP is not set +# CONFIG_IEP_MMU is not set +CONFIG_ROCKCHIP_MPP_SERVICE=y +CONFIG_ROCKCHIP_MPP_RKVDEC=y +CONFIG_ROCKCHIP_MPP_RKVDEC2=y +CONFIG_ROCKCHIP_MPP_RKVENC=y +CONFIG_ROCKCHIP_MPP_VDPU1=y +CONFIG_ROCKCHIP_MPP_VEPU1=y +CONFIG_ROCKCHIP_MPP_VDPU2=y +CONFIG_ROCKCHIP_MPP_VEPU2=y +CONFIG_ROCKCHIP_MPP_IEP2=y +CONFIG_ROCKCHIP_MPP_JPGDEC=y +CONFIG_VIDEOMODE_HELPERS=y +CONFIG_HDMI=y + +# +# Console display driver support +# +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set +# CONFIG_LOGO is not set +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_TIMER=y +CONFIG_SND_PCM=y +CONFIG_SND_PCM_ELD=y +CONFIG_SND_PCM_IEC958=y +CONFIG_SND_DMAENGINE_PCM=y +CONFIG_SND_HWDEP=y +CONFIG_SND_SEQ_DEVICE=y +CONFIG_SND_RAWMIDI=y +CONFIG_SND_JACK=y +CONFIG_SND_JACK_INPUT_DEV=y +# CONFIG_SND_OSSEMUL is not set +CONFIG_SND_PCM_TIMER=y +CONFIG_SND_HRTIMER=y +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_MAX_CARDS=32 +# CONFIG_SND_SUPPORT_OLD_API is not set +CONFIG_SND_PROC_FS=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set +CONFIG_SND_SEQUENCER=y +CONFIG_SND_SEQ_DUMMY=y +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +CONFIG_SND_SEQ_MIDI_EVENT=y +CONFIG_SND_SEQ_MIDI=y +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 +# CONFIG_SND_PCI is not set + +# +# HD-Audio +# +CONFIG_SND_HDA_PREALLOC_SIZE=64 +# 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_USB_POD is not set +# CONFIG_SND_USB_PODHD is not set +# CONFIG_SND_USB_TONEPORT is not set +# CONFIG_SND_USB_VARIAX is not set +CONFIG_SND_SOC=y +CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y +# CONFIG_SND_SOC_AMD_ACP is not set +# CONFIG_SND_ATMEL_SOC is not set +# CONFIG_SND_DESIGNWARE_I2S is not set + +# +# SoC Audio for Freescale CPUs +# + +# +# Common SoC Audio options for Freescale CPUs: +# +# CONFIG_SND_SOC_FSL_ASRC is not set +# CONFIG_SND_SOC_FSL_SAI is not set +# CONFIG_SND_SOC_FSL_SSI is not set +# CONFIG_SND_SOC_FSL_SPDIF is not set +# CONFIG_SND_SOC_FSL_ESAI is not set +# CONFIG_SND_SOC_IMX_AUDMUX is not set +# CONFIG_SND_I2S_HI6210_I2S is not set +# CONFIG_SND_SOC_IMG is not set +CONFIG_SND_SOC_ROCKCHIP=y +CONFIG_SND_SOC_ROCKCHIP_PREALLOC_BUFFER_SIZE=512 +# CONFIG_SND_SOC_ROCKCHIP_AUDIO_PWM is not set +CONFIG_SND_SOC_ROCKCHIP_I2S=y +CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=y +CONFIG_SND_SOC_ROCKCHIP_PDM=y +CONFIG_SND_SOC_ROCKCHIP_SPDIF=y +# CONFIG_SND_SOC_ROCKCHIP_VAD is not set +CONFIG_SND_SOC_ROCKCHIP_MAX98090=y +CONFIG_SND_SOC_ROCKCHIP_MULTICODECS=y +CONFIG_SND_SOC_ROCKCHIP_RT5645=y +# CONFIG_SND_SOC_ROCKCHIP_RT5651 is not set +CONFIG_SND_SOC_ROCKCHIP_RT5651_RK628=y +# CONFIG_SND_SOC_RK3288_HDMI_ANALOG is not set +# CONFIG_SND_SOC_RK3399_GRU_SOUND is not set + +# +# STMicroelectronics STM32 SOC audio support +# +# CONFIG_SND_SOC_XTFPGA_I2S is not set +# CONFIG_ZX_TDM is not set +CONFIG_SND_SOC_I2C_AND_SPI=y + +# +# CODEC drivers +# +# CONFIG_SND_SOC_AC97_CODEC is not set +# CONFIG_SND_SOC_ADAU1701 is not set +# CONFIG_SND_SOC_ADAU1761_I2C is not set +# CONFIG_SND_SOC_ADAU1761_SPI is not set +# CONFIG_SND_SOC_ADAU7002 is not set +# CONFIG_SND_SOC_AK4104 is not set +# CONFIG_SND_SOC_AK4458 is not set +# CONFIG_SND_SOC_AK4554 is not set +# CONFIG_SND_SOC_AK4613 is not set +# CONFIG_SND_SOC_AK4642 is not set +# CONFIG_SND_SOC_AK5386 is not set +# CONFIG_SND_SOC_AK5558 is not set +# CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_BD28623 is not set +# CONFIG_SND_SOC_BT_SCO is not set +# CONFIG_SND_SOC_CS35L32 is not set +# CONFIG_SND_SOC_CS35L33 is not set +# CONFIG_SND_SOC_CS35L34 is not set +# CONFIG_SND_SOC_CS35L35 is not set +# CONFIG_SND_SOC_CS42L42 is not set +# CONFIG_SND_SOC_CS42L51_I2C is not set +# CONFIG_SND_SOC_CS42L52 is not set +# CONFIG_SND_SOC_CS42L56 is not set +# CONFIG_SND_SOC_CS42L73 is not set +# CONFIG_SND_SOC_CS4265 is not set +# CONFIG_SND_SOC_CS4270 is not set +# CONFIG_SND_SOC_CS4271_I2C is not set +# CONFIG_SND_SOC_CS4271_SPI is not set +# CONFIG_SND_SOC_CS42XX8_I2C is not set +# CONFIG_SND_SOC_CS43130 is not set +# CONFIG_SND_SOC_CS4349 is not set +# CONFIG_SND_SOC_CS53L30 is not set +# CONFIG_SND_SOC_CX2072X is not set +CONFIG_SND_SOC_DUMMY_CODEC=y +CONFIG_SND_SOC_HDMI_CODEC=y +# CONFIG_SND_SOC_ES7134 is not set +CONFIG_SND_SOC_ES7202=y +# CONFIG_SND_SOC_ES7210 is not set +# CONFIG_SND_SOC_ES7241 is not set +CONFIG_SND_SOC_ES7243E=y +CONFIG_SND_SOC_ES8311=y +CONFIG_SND_SOC_ES8316=y +# CONFIG_SND_SOC_ES8323 is not set +# CONFIG_SND_SOC_ES8328_I2C is not set +# CONFIG_SND_SOC_ES8328_SPI is not set +# CONFIG_SND_SOC_ES8396 is not set +# CONFIG_SND_SOC_GTM601 is not set +# CONFIG_SND_SOC_INNO_RK3036 is not set +CONFIG_SND_SOC_MAX98090=y +# CONFIG_SND_SOC_MAX98504 is not set +# CONFIG_SND_SOC_MAX9867 is not set +# CONFIG_SND_SOC_MAX98927 is not set +# CONFIG_SND_SOC_MAX98373 is not set +# CONFIG_SND_SOC_MAX9860 is not set +# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set +# CONFIG_SND_SOC_PCM1681 is not set +# CONFIG_SND_SOC_PCM1789_I2C is not set +# CONFIG_SND_SOC_PCM179X_I2C is not set +# CONFIG_SND_SOC_PCM179X_SPI is not set +# CONFIG_SND_SOC_PCM186X_I2C is not set +# CONFIG_SND_SOC_PCM186X_SPI is not set +# CONFIG_SND_SOC_PCM3168A_I2C is not set +# CONFIG_SND_SOC_PCM3168A_SPI is not set +# CONFIG_SND_SOC_PCM512x_I2C is not set +# CONFIG_SND_SOC_PCM512x_SPI is not set +# CONFIG_SND_SOC_RK312X is not set +# CONFIG_SND_SOC_RK3228 is not set +CONFIG_SND_SOC_RK3308=y +CONFIG_SND_SOC_RK3328=y +CONFIG_SND_SOC_RK817=y +CONFIG_SND_SOC_RK_CODEC_DIGITAL=y +CONFIG_SND_SOC_RL6231=y +CONFIG_SND_SOC_RT5616=y +# CONFIG_SND_SOC_RT5631 is not set +CONFIG_SND_SOC_RT5640=y +CONFIG_SND_SOC_RT5645=y +CONFIG_SND_SOC_RT5651=y +# CONFIG_SND_SOC_SGTL5000 is not set +# CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set +# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set +CONFIG_SND_SOC_SPDIF=y +# CONFIG_SND_SOC_SSM2305 is not set +# CONFIG_SND_SOC_SSM2602_SPI is not set +# CONFIG_SND_SOC_SSM2602_I2C is not set +# CONFIG_SND_SOC_SSM4567 is not set +# CONFIG_SND_SOC_STA32X is not set +# CONFIG_SND_SOC_STA350 is not set +# CONFIG_SND_SOC_STI_SAS is not set +# CONFIG_SND_SOC_TAS2552 is not set +# CONFIG_SND_SOC_TAS5086 is not set +# CONFIG_SND_SOC_TAS571X is not set +# CONFIG_SND_SOC_TAS5720 is not set +# CONFIG_SND_SOC_TAS6424 is not set +# CONFIG_SND_SOC_TDA7419 is not set +# CONFIG_SND_SOC_TFA9879 is not set +# CONFIG_SND_SOC_TLV320AIC23_I2C is not set +# CONFIG_SND_SOC_TLV320AIC23_SPI is not set +# CONFIG_SND_SOC_TLV320AIC31XX is not set +# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set +# CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set +# CONFIG_SND_SOC_TLV320AIC3X is not set +CONFIG_SND_SOC_TS3A227E=y +# CONFIG_SND_SOC_TSCS42XX is not set +# CONFIG_SND_SOC_TSCS454 is not set +# CONFIG_SND_SOC_WM8510 is not set +# CONFIG_SND_SOC_WM8523 is not set +# CONFIG_SND_SOC_WM8524 is not set +# CONFIG_SND_SOC_WM8580 is not set +# CONFIG_SND_SOC_WM8711 is not set +# CONFIG_SND_SOC_WM8728 is not set +# CONFIG_SND_SOC_WM8731 is not set +# CONFIG_SND_SOC_WM8737 is not set +# CONFIG_SND_SOC_WM8741 is not set +# CONFIG_SND_SOC_WM8750 is not set +# CONFIG_SND_SOC_WM8753 is not set +# CONFIG_SND_SOC_WM8770 is not set +# CONFIG_SND_SOC_WM8776 is not set +# CONFIG_SND_SOC_WM8782 is not set +# CONFIG_SND_SOC_WM8804_I2C is not set +# CONFIG_SND_SOC_WM8804_SPI is not set +# CONFIG_SND_SOC_WM8903 is not set +# CONFIG_SND_SOC_WM8960 is not set +# CONFIG_SND_SOC_WM8962 is not set +# CONFIG_SND_SOC_WM8974 is not set +# CONFIG_SND_SOC_WM8978 is not set +# CONFIG_SND_SOC_WM8985 is not set +# CONFIG_SND_SOC_ZX_AUD96P22 is not set +# CONFIG_SND_SOC_MAX9759 is not set +# CONFIG_SND_SOC_MT6351 is not set +# CONFIG_SND_SOC_NAU8540 is not set +# CONFIG_SND_SOC_NAU8810 is not set +# CONFIG_SND_SOC_NAU8824 is not set +# CONFIG_SND_SOC_TPA6130A2 is not set +CONFIG_SND_SIMPLE_CARD_UTILS=y +CONFIG_SND_SIMPLE_CARD=y +# CONFIG_SND_SIMPLE_SCU_CARD is not set +# CONFIG_SND_AUDIO_GRAPH_CARD is not set +# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set + +# +# HID support +# +CONFIG_HID=y +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HIDRAW=y +CONFIG_UHID=y +CONFIG_HID_GENERIC=y + +# +# Special HID drivers +# +# CONFIG_HID_A4TECH is not set +# CONFIG_HID_ACCUTOUCH is not set +# CONFIG_HID_ACRUX is not set +# CONFIG_HID_APPLE is not set +# CONFIG_HID_APPLEIR is not set +# CONFIG_HID_ASUS is not set +# CONFIG_HID_AUREAL is not set +# CONFIG_HID_BELKIN is not set +# CONFIG_HID_BETOP_FF is not set +# CONFIG_HID_CHERRY is not set +# CONFIG_HID_CHICONY is not set +# CONFIG_HID_CORSAIR is not set +# CONFIG_HID_COUGAR is not set +# CONFIG_HID_PRODIKEYS is not set +# CONFIG_HID_CMEDIA is not set +# CONFIG_HID_CP2112 is not set +# CONFIG_HID_CYPRESS is not set +# CONFIG_HID_DRAGONRISE is not set +# CONFIG_HID_EMS_FF is not set +# CONFIG_HID_ELAN is not set +# CONFIG_HID_ELECOM is not set +# CONFIG_HID_ELO is not set +# CONFIG_HID_EZKEY is not set +# CONFIG_HID_GEMBIRD is not set +# CONFIG_HID_GFRM is not set +# CONFIG_HID_HOLTEK is not set +# CONFIG_HID_GOOGLE_HAMMER is not set +# CONFIG_HID_GT683R is not set +# CONFIG_HID_KEYTOUCH is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_UCLOGIC is not set +# CONFIG_HID_WALTOP is not set +# CONFIG_HID_GYRATION is not set +# CONFIG_HID_ICADE is not set +# CONFIG_HID_ITE is not set +# CONFIG_HID_JABRA is not set +# CONFIG_HID_TWINHAN is not set +CONFIG_HID_KENSINGTON=y +# CONFIG_HID_LCPOWER is not set +# CONFIG_HID_LED is not set +# CONFIG_HID_LENOVO is not set +# CONFIG_HID_LOGITECH is not set +# CONFIG_HID_MAGICMOUSE is not set +# CONFIG_HID_MAYFLASH is not set +# CONFIG_HID_REDRAGON is not set +# CONFIG_HID_MICROSOFT is not set +# CONFIG_HID_MONTEREY is not set +CONFIG_HID_MULTITOUCH=y +# CONFIG_HID_NINTENDO is not set +# CONFIG_HID_NTI is not set +# CONFIG_HID_NTRIG is not set +# CONFIG_HID_ORTEK is not set +# CONFIG_HID_PANTHERLORD is not set +# CONFIG_HID_PENMOUNT is not set +# CONFIG_HID_PETALYNX is not set +# CONFIG_HID_PICOLCD is not set +# CONFIG_HID_PLANTRONICS is not set +# CONFIG_HID_PRIMAX is not set +# CONFIG_HID_RETRODE is not set +# CONFIG_HID_ROCCAT is not set +# CONFIG_HID_SAITEK is not set +# CONFIG_HID_SAMSUNG is not set +# CONFIG_HID_SONY is not set +# CONFIG_HID_SPEEDLINK is not set +# CONFIG_HID_STEAM is not set +# CONFIG_HID_STEELSERIES is not set +# CONFIG_HID_SUNPLUS is not set +# CONFIG_HID_RMI is not set +# CONFIG_HID_GREENASIA is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_TIVO is not set +# CONFIG_HID_TOPSEED is not set +# CONFIG_HID_THINGM is not set +# CONFIG_HID_THRUSTMASTER is not set +# CONFIG_HID_UDRAW_PS3 is not set +# CONFIG_HID_WACOM is not set +# CONFIG_HID_WIIMOTE is not set +# CONFIG_HID_XINMO is not set +# CONFIG_HID_ZEROPLUS is not set +# CONFIG_HID_ZYDACRON is not set +# CONFIG_HID_SENSOR_HUB is not set +# CONFIG_HID_ALPS is not set + +# +# USB HID support +# +CONFIG_USB_HID=y +# CONFIG_HID_PID is not set +CONFIG_USB_HIDDEV=y + +# +# I2C HID support +# +CONFIG_I2C_HID=y +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_PCI=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + +# +# Miscellaneous USB options +# +# CONFIG_USB_DEFAULT_PERSIST is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +# CONFIG_USB_OTG_FSM is not set +# CONFIG_USB_LEDS_TRIGGER_USBPORT is not set +CONFIG_USB_MON=y +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +CONFIG_USB_XHCI_HCD=y +# CONFIG_USB_XHCI_DBGCAP is not set +CONFIG_USB_XHCI_PCI=y +CONFIG_USB_XHCI_PLATFORM=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_EHCI_PCI=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_FOTG210_HCD is not set +# CONFIG_USB_MAX3421_HCD is not set +CONFIG_USB_OHCI_HCD=y +# CONFIG_USB_OHCI_HCD_PCI is not set +CONFIG_USB_OHCI_HCD_PLATFORM=y +# CONFIG_USB_UHCI_HCD is not set +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_HCD_TEST_MODE is not set + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=y +# CONFIG_USB_PRINTER is not set +CONFIG_USB_WDM=y +# 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 is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_STORAGE_ENE_UB6250 is not set +CONFIG_USB_UAS=y + +# +# 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=y +# CONFIG_USB_DWC3_HOST is not set +# CONFIG_USB_DWC3_GADGET is not set +CONFIG_USB_DWC3_DUAL_ROLE=y + +# +# Platform Glue Driver Support +# +CONFIG_USB_DWC3_HAPS=y +CONFIG_USB_DWC3_OF_SIMPLE=y +CONFIG_USB_DWC3_ROCKCHIP_INNO=y +CONFIG_USB_DWC2=y +# CONFIG_USB_DWC2_HOST is not set + +# +# Gadget/Dual-role mode requires USB Gadget support to be enabled +# +# CONFIG_USB_DWC2_PERIPHERAL is not set +CONFIG_USB_DWC2_DUAL_ROLE=y +# CONFIG_USB_DWC2_PCI is not set +# CONFIG_USB_DWC2_DEBUG is not set +# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set +# CONFIG_USB_CHIPIDEA is not set +# CONFIG_USB_ISP1760 is not set + +# +# USB port drivers +# +CONFIG_USB_SERIAL=y +# CONFIG_USB_SERIAL_CONSOLE is not set +CONFIG_USB_SERIAL_GENERIC=y +# CONFIG_USB_SERIAL_SIMPLE is not set +# CONFIG_USB_SERIAL_AIRCABLE is not set +# CONFIG_USB_SERIAL_ARK3116 is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_CH341 is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +CONFIG_USB_SERIAL_CP210X=y +# CONFIG_USB_SERIAL_CYPRESS_M8 is not set +# CONFIG_USB_SERIAL_EMPEG is not set +CONFIG_USB_SERIAL_FTDI_SIO=y +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_EDGEPORT_TI is not set +# CONFIG_USB_SERIAL_F81232 is not set +# CONFIG_USB_SERIAL_F8153X is not set +# CONFIG_USB_SERIAL_GARMIN is not set +# CONFIG_USB_SERIAL_IPW is not set +# CONFIG_USB_SERIAL_IUU is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +CONFIG_USB_SERIAL_KEYSPAN=y +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_KOBIL_SCT is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_METRO is not set +# CONFIG_USB_SERIAL_MOS7720 is not set +# CONFIG_USB_SERIAL_MOS7840 is not set +# CONFIG_USB_SERIAL_MXUPORT is not set +# CONFIG_USB_SERIAL_NAVMAN is not set +CONFIG_USB_SERIAL_PL2303=y +CONFIG_USB_SERIAL_OTI6858=y +# CONFIG_USB_SERIAL_QCAUX is not set +CONFIG_USB_SERIAL_QUALCOMM=y +# CONFIG_USB_SERIAL_SPCP8X5 is not set +# CONFIG_USB_SERIAL_SAFE is not set +CONFIG_USB_SERIAL_SIERRAWIRELESS=y +# CONFIG_USB_SERIAL_SYMBOL is not set +# CONFIG_USB_SERIAL_TI is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +CONFIG_USB_SERIAL_WWAN=y +CONFIG_USB_SERIAL_OPTION=y +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_SERIAL_OPTICON is not set +# CONFIG_USB_SERIAL_XSENS_MT is not set +# CONFIG_USB_SERIAL_WISHBONE is not set +# CONFIG_USB_SERIAL_SSU100 is not set +# CONFIG_USB_SERIAL_QT2 is not set +# CONFIG_USB_SERIAL_UPD78F0730 is not set +# CONFIG_USB_SERIAL_DEBUG is not set + +# +# 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_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_EHSET_TEST_FIXTURE is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_YUREX is not set +CONFIG_USB_EZUSB_FX2=y +# CONFIG_USB_HUB_USB251XB is not set +# CONFIG_USB_HSIC_USB3503 is not set +# CONFIG_USB_HSIC_USB4604 is not set +# CONFIG_USB_LINK_LAYER_TEST is not set +# CONFIG_USB_CHAOSKEY is not set + +# +# USB Physical Layer drivers +# +CONFIG_USB_PHY=y +# CONFIG_NOP_USB_XCEIV is not set +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_USB_ISP1301 is not set +# CONFIG_USB_ULPI is not set +CONFIG_USB_GADGET=y +# CONFIG_USB_GADGET_DEBUG is not set +CONFIG_USB_GADGET_DEBUG_FILES=y +# CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_VBUS_DRAW=500 +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 +# CONFIG_U_SERIAL_CONSOLE is not set + +# +# 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_SNP_UDC_PLAT is not set +# CONFIG_USB_M66592 is not set +# CONFIG_USB_BDC_UDC is not set +# CONFIG_USB_AMD5536UDC is not set +# CONFIG_USB_NET2272 is not set +# CONFIG_USB_NET2280 is not set +# CONFIG_USB_GOKU is not set +# CONFIG_USB_EG20T 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_F_FS=y +CONFIG_USB_F_UVC=y +CONFIG_USB_CONFIGFS=y +CONFIG_USB_CONFIGFS_UEVENT=y +# CONFIG_USB_CONFIGFS_SERIAL is not set +CONFIG_USB_CONFIGFS_ACM=y +# CONFIG_USB_CONFIGFS_OBEX is not set +# CONFIG_USB_CONFIGFS_NCM is not set +# CONFIG_USB_CONFIGFS_ECM is not set +# CONFIG_USB_CONFIGFS_ECM_SUBSET is not set +# CONFIG_USB_CONFIGFS_RNDIS is not set +# CONFIG_USB_CONFIGFS_EEM is not set +CONFIG_USB_CONFIGFS_MASS_STORAGE=y +# CONFIG_USB_CONFIGFS_F_LB_SS is not set +CONFIG_USB_CONFIGFS_F_FS=y +# CONFIG_USB_CONFIGFS_F_ACC is not set +# CONFIG_USB_CONFIGFS_F_AUDIO_SRC is not set +# CONFIG_USB_CONFIGFS_F_UAC1 is not set +# CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set +# CONFIG_USB_CONFIGFS_F_UAC2 is not set +# CONFIG_USB_CONFIGFS_F_MIDI is not set +# CONFIG_USB_CONFIGFS_F_HID is not set +CONFIG_USB_CONFIGFS_F_UVC=y +# CONFIG_USB_CONFIGFS_F_PRINTER is not set +# CONFIG_TYPEC is not set +# CONFIG_USB_ROLE_SWITCH is not set +# CONFIG_USB_LED_TRIG is not set +# CONFIG_USB_ULPI_BUS is not set +# CONFIG_UWB is not set +# CONFIG_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=m +CONFIG_USB_FUNCTIONFS=m +# CONFIG_USB_FUNCTIONFS_ETH is not set +# CONFIG_USB_FUNCTIONFS_RNDIS is not set +CONFIG_USB_FUNCTIONFS_GENERIC=y +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_G_SERIAL=m +# CONFIG_USB_MIDI_GADGET is not set +# CONFIG_USB_G_PRINTER is not set +# CONFIG_USB_CDC_COMPOSITE is not set +# CONFIG_USB_G_ACM_MS is not set +# CONFIG_USB_G_MULTI is not set +# CONFIG_USB_G_HID is not set +# CONFIG_USB_G_DBGP is not set +# CONFIG_USB_G_WEBCAM is not set +# CONFIG_USB_RAW_GADGET is not set + +CONFIG_MMC=y +CONFIG_PWRSEQ_EMMC=y +# CONFIG_PWRSEQ_SD8787 is not set +CONFIG_PWRSEQ_SIMPLE=y +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_MINORS=32 +# CONFIG_SDIO_UART is not set +CONFIG_MMC_TEST=y +CONFIG_SDIO_KEEPALIVE=y + +# +# MMC/SD/SDIO Host Controller Drivers +# +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_ARMMMCI is not set +CONFIG_MMC_SDHCI=y +# CONFIG_MMC_SDHCI_PCI is not set +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_OF_ARASAN=y +# CONFIG_MMC_SDHCI_OF_AT91 is not set +CONFIG_MMC_SDHCI_OF_DWCMSHC=y +# CONFIG_MMC_SDHCI_CADENCE is not set +# CONFIG_MMC_SDHCI_F_SDH30 is not set +# CONFIG_MMC_TIFM_SD is not set +# CONFIG_MMC_SPI is not set +# CONFIG_MMC_CB710 is not set +# CONFIG_MMC_VIA_SDMMC is not set +CONFIG_MMC_DW=y +CONFIG_MMC_DW_PLTFM=y +# CONFIG_MMC_DW_BLUEFIELD is not set +# CONFIG_MMC_DW_EXYNOS is not set +# CONFIG_MMC_DW_HI3798CV200 is not set +# CONFIG_MMC_DW_K3 is not set +# CONFIG_MMC_DW_PCI is not set +CONFIG_MMC_DW_ROCKCHIP=y +# CONFIG_MMC_VUB300 is not set +# CONFIG_MMC_USHC is not set +# CONFIG_MMC_USDHI6ROL0 is not set +CONFIG_MMC_CQHCI=y +# CONFIG_MMC_TOSHIBA_PCI is not set +# CONFIG_MMC_MTK is not set +# CONFIG_MMC_SDHCI_XENON is not set +# CONFIG_MMC_SDHCI_OMAP is not set +# CONFIG_MEMSTICK is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_CLASS_FLASH=y +# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set + +# +# LED drivers +# +# CONFIG_LEDS_AAT1290 is not set +# CONFIG_LEDS_AS3645A is not set +# CONFIG_LEDS_BCM6328 is not set +# CONFIG_LEDS_BCM6358 is not set +# CONFIG_LEDS_CR0014114 is not set +# CONFIG_LEDS_LM3530 is not set +# CONFIG_LEDS_LM3642 is not set +# CONFIG_LEDS_LM3692X is not set +# CONFIG_LEDS_LM3601X is not set +# CONFIG_LEDS_PCA9532 is not set +CONFIG_LEDS_GPIO=y +# CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_LP3952 is not set +# CONFIG_LEDS_LP5521 is not set +# CONFIG_LEDS_LP5523 is not set +# CONFIG_LEDS_LP5562 is not set +# CONFIG_LEDS_LP8501 is not set +# CONFIG_LEDS_LP8860 is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_PCA963X is not set +# CONFIG_LEDS_DAC124S085 is not set +# CONFIG_LEDS_PWM is not set +# CONFIG_LEDS_REGULATOR is not set +# CONFIG_LEDS_BD2802 is not set +# CONFIG_LEDS_LT3593 is not set +# CONFIG_LEDS_TCA6507 is not set +# CONFIG_LEDS_TLC591XX is not set +# CONFIG_LEDS_LM355x is not set +# CONFIG_LEDS_KTD2692 is not set +# CONFIG_LEDS_IS31FL319X is not set +CONFIG_LEDS_IS31FL32XX=y +CONFIG_LEDS_RGB13H=y + +# +# 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 +# CONFIG_LEDS_MLXREG is not set +# CONFIG_LEDS_USER is not set + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +# CONFIG_LEDS_TRIGGER_ONESHOT is not set +# CONFIG_LEDS_TRIGGER_DISK is not set +# CONFIG_LEDS_TRIGGER_MTD 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_ACTIVITY 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_LEDS_TRIGGER_PANIC is not set +# CONFIG_LEDS_TRIGGER_NETDEV is not set +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +CONFIG_EDAC_SUPPORT=y +# CONFIG_EDAC is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +CONFIG_RTC_SYSTOHC=y +CONFIG_RTC_SYSTOHC_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set +CONFIG_RTC_NVMEM=y + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_ABB5ZES3 is not set +# CONFIG_RTC_DRV_ABX80X is not set +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_FAKE is not set +CONFIG_RTC_DRV_HYM8563=y +# CONFIG_RTC_DRV_MAX6900 is not set +CONFIG_RTC_DRV_RK808=y +# CONFIG_RTC_DRV_RK_TIMER 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_ISL12026 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8523 is not set +# CONFIG_RTC_DRV_PCF85063 is not set +# CONFIG_RTC_DRV_PCF85363 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +# CONFIG_RTC_DRV_BQ32K is not set +# CONFIG_RTC_DRV_TPS6586X is not set +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +# CONFIG_RTC_DRV_RX8010 is not set +# CONFIG_RTC_DRV_RX8581 is not set +# CONFIG_RTC_DRV_RX8025 is not set +# CONFIG_RTC_DRV_EM3027 is not set +# CONFIG_RTC_DRV_RV8803 is not set + +# +# SPI RTC drivers +# +# CONFIG_RTC_DRV_M41T93 is not set +# CONFIG_RTC_DRV_M41T94 is not set +# CONFIG_RTC_DRV_DS1302 is not set +# CONFIG_RTC_DRV_DS1305 is not set +# CONFIG_RTC_DRV_DS1343 is not set +# CONFIG_RTC_DRV_DS1347 is not set +# CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_MAX6916 is not set +# CONFIG_RTC_DRV_R9701 is not set +# CONFIG_RTC_DRV_RX4581 is not set +# CONFIG_RTC_DRV_RX6110 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_MAX6902 is not set +# CONFIG_RTC_DRV_PCF2123 is not set +# CONFIG_RTC_DRV_MCP795 is not set +CONFIG_RTC_I2C_AND_SPI=y + +# +# SPI and I2C RTC drivers +# +# CONFIG_RTC_DRV_DS3232 is not set +# CONFIG_RTC_DRV_PCF2127 is not set +# CONFIG_RTC_DRV_RV3029C2 is not set + +# +# Platform RTC drivers +# +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1685_FAMILY is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_DS2404 is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_MSM6242 is not set +# CONFIG_RTC_DRV_BQ4802 is not set +# CONFIG_RTC_DRV_RP5C01 is not set +# CONFIG_RTC_DRV_V3020 is not set +# CONFIG_RTC_DRV_ZYNQMP is not set +# CONFIG_RTC_DRV_CROS_EC is not set + +# +# on-CPU RTC drivers +# +# CONFIG_RTC_DRV_PL030 is not set +# CONFIG_RTC_DRV_PL031 is not set +# CONFIG_RTC_DRV_FTRTC010 is not set +# CONFIG_RTC_DRV_SNVS is not set +# CONFIG_RTC_DRV_R7301 is not set + +# +# HID Sensor RTC drivers +# +# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set +CONFIG_DMADEVICES=y +# CONFIG_DMADEVICES_DEBUG is not set + +# +# DMA Devices +# +CONFIG_DMA_ENGINE=y +CONFIG_DMA_OF=y +# CONFIG_ALTERA_MSGDMA is not set +# CONFIG_AMBA_PL08X is not set +# CONFIG_DW_AXI_DMAC is not set +# CONFIG_FSL_EDMA is not set +# CONFIG_INTEL_IDMA64 is not set +# CONFIG_MV_XOR_V2 is not set +CONFIG_PL330_DMA=y +# CONFIG_XILINX_DMA is not set +# CONFIG_XILINX_ZYNQMP_DMA is not set +# CONFIG_QCOM_HIDMA_MGMT is not set +# CONFIG_QCOM_HIDMA is not set +# CONFIG_DW_DMAC is not set +# CONFIG_DW_DMAC_PCI is not set + +# +# DMA Clients +# +# CONFIG_ASYNC_TX_DMA is not set +# CONFIG_DMATEST is not set + +# +# DMABUF options +# +CONFIG_SYNC_FILE=y +# CONFIG_SW_SYNC is not set +# CONFIG_AUXDISPLAY is not set +# CONFIG_UIO is not set +# CONFIG_VFIO is not set +# CONFIG_VIRT_DRIVERS is not set +CONFIG_VIRTIO_MENU=y +# CONFIG_VIRTIO_PCI is not set +# CONFIG_VIRTIO_MMIO is not set + +# +# Microsoft Hyper-V guest support +# +CONFIG_STAGING=y +# CONFIG_PRISM2_USB is not set +# CONFIG_COMEDI is not set +# CONFIG_RTL8192U is not set +# CONFIG_RTLLIB is not set +# CONFIG_RTL8723BS is not set +# CONFIG_R8712U is not set +# CONFIG_R8188EU is not set +# CONFIG_R8822BE is not set +# CONFIG_RTS5208 is not set +# CONFIG_VT6655 is not set +# CONFIG_VT6656 is not set + +# +# IIO staging drivers +# + +# +# Accelerometers +# +# CONFIG_ADIS16203 is not set +# CONFIG_ADIS16240 is not set + +# +# Analog to digital converters +# +# CONFIG_AD7606 is not set +# CONFIG_AD7780 is not set +# CONFIG_AD7816 is not set +# CONFIG_AD7192 is not set +# CONFIG_AD7280 is not set + +# +# Analog digital bi-direction converters +# +# CONFIG_ADT7316 is not set + +# +# Capacitance to digital converters +# +# CONFIG_AD7150 is not set +# CONFIG_AD7152 is not set +# CONFIG_AD7746 is not set + +# +# Direct Digital Synthesis +# +# CONFIG_AD9832 is not set +# CONFIG_AD9834 is not set + +# +# Network Analyzer, Impedance Converters +# +# CONFIG_AD5933 is not set + +# +# Active energy metering IC +# +# CONFIG_ADE7854 is not set + +# +# Resolver to digital converters +# +# CONFIG_AD2S90 is not set +# CONFIG_AD2S1210 is not set +# CONFIG_FB_SM750 is not set +# CONFIG_FB_XGI is not set + +# +# Speakup console speech +# +# CONFIG_SPEAKUP is not set +# CONFIG_STAGING_MEDIA is not set + +# +# Android +# +# CONFIG_ASHMEM is not set +# CONFIG_ANDROID_VSOC is not set +# CONFIG_ION is not set +CONFIG_FIQ_DEBUGGER=y +CONFIG_FIQ_DEBUGGER_NO_SLEEP=y +# CONFIG_FIQ_DEBUGGER_WAKEUP_IRQ_ALWAYS_ON is not set +CONFIG_FIQ_DEBUGGER_CONSOLE=y +CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE=y +CONFIG_FIQ_DEBUGGER_TRUST_ZONE=y +# CONFIG_FIQ_DEBUGGER_UART_OVERLAY is not set +CONFIG_RK_CONSOLE_THREAD=y +# CONFIG_STAGING_BOARD is not set +# CONFIG_LTE_GDM724X is not set +# CONFIG_DGNC is not set +# CONFIG_GS_FPGABOOT is not set +# CONFIG_UNISYSSPAR is not set +# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set +# CONFIG_FB_TFT is not set +# CONFIG_WILC1000_SDIO is not set +# CONFIG_WILC1000_SPI is not set +# CONFIG_MOST is not set +# CONFIG_KS7010 is not set +# CONFIG_GREYBUS is not set +# CONFIG_PI433 is not set +# CONFIG_MTK_MMC is not set + +# +# Gasket devices +# +# CONFIG_STAGING_GASKET_FRAMEWORK is not set +# CONFIG_XIL_AXIS_FIFO is not set +# CONFIG_EROFS_FS is not set +# CONFIG_POWERVR_ROGUE_N is not set +# CONFIG_GOLDFISH is not set +CONFIG_CHROME_PLATFORMS=y +# CONFIG_CROS_EC_I2C is not set +# CONFIG_CROS_EC_SPI is not set +CONFIG_CROS_EC_PROTO=y +CONFIG_CLKDEV_LOOKUP=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_COMMON_CLK=y + +# +# Common Clock Framework +# +CONFIG_COMMON_CLK_DEBUGFS=y +# CONFIG_COMMON_CLK_PROCFS is not set +# CONFIG_COMMON_CLK_VERSATILE is not set +# CONFIG_CLK_HSDK is not set +# CONFIG_COMMON_CLK_MAX9485 is not set +CONFIG_COMMON_CLK_RK808=y +CONFIG_COMMON_CLK_SCMI=y +# CONFIG_COMMON_CLK_SI5351 is not set +# CONFIG_COMMON_CLK_SI514 is not set +# CONFIG_COMMON_CLK_SI544 is not set +# CONFIG_COMMON_CLK_SI570 is not set +# CONFIG_COMMON_CLK_CDCE706 is not set +# CONFIG_COMMON_CLK_CDCE925 is not set +# CONFIG_COMMON_CLK_CS2000_CP is not set +# CONFIG_CLK_QORIQ is not set +CONFIG_COMMON_CLK_XGENE=y +# CONFIG_COMMON_CLK_PWM is not set +# CONFIG_COMMON_CLK_VC5 is not set +# CONFIG_ROCKCHIP_CLK_COMPENSATION is not set +CONFIG_COMMON_CLK_ROCKCHIP_REGMAP=y +CONFIG_CLK_RK618=y +CONFIG_CLK_RK628=y +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_TIMER_OF=y +CONFIG_TIMER_PROBE=y +CONFIG_CLKSRC_MMIO=y +CONFIG_ROCKCHIP_TIMER=y +CONFIG_ARM_ARCH_TIMER=y +CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y +CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y +CONFIG_FSL_ERRATUM_A008585=y +CONFIG_HISILICON_ERRATUM_161010101=y +CONFIG_ARM64_ERRATUM_858921=y +# CONFIG_ARM_TIMER_SP804 is not set +CONFIG_MAILBOX=y +# CONFIG_ARM_MHU is not set +# CONFIG_PLATFORM_MHU is not set +# CONFIG_PL320_MBOX is not set +# CONFIG_ROCKCHIP_MBOX is not set +# CONFIG_ALTERA_MBOX is not set +# CONFIG_MAILBOX_TEST is not set +# CONFIG_RK3368_MBOX is not set +CONFIG_IOMMU_API=y +CONFIG_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# +# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set +# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set +# CONFIG_IOMMU_DEBUGFS is not set +# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set +CONFIG_IOMMU_IOVA=y +CONFIG_OF_IOMMU=y +CONFIG_IOMMU_DMA=y +CONFIG_ROCKCHIP_IOMMU=y +# CONFIG_ARM_SMMU is not set +# CONFIG_ARM_SMMU_V3 is not set + +# +# Remoteproc drivers +# +# CONFIG_REMOTEPROC is not set + +# +# Rpmsg drivers +# +# CONFIG_RPMSG_QCOM_GLINK_RPM is not set +# CONFIG_RPMSG_VIRTIO is not set + +# +# SOC (System On Chip) specific Drivers +# + +# +# Amlogic SoC drivers +# + +# +# Broadcom SoC drivers +# +# CONFIG_SOC_BRCMSTB is not set + +# +# NXP/Freescale QorIQ SoC drivers +# + +# +# i.MX SoC drivers +# + +# +# Qualcomm SoC drivers +# + +# +# Rockchip CPU selection +# +CONFIG_CPU_PX30=y +CONFIG_CPU_RK1808=y +# CONFIG_CPU_RK3308 is not set +CONFIG_CPU_RK3328=y +# CONFIG_CPU_RK3368 is not set +CONFIG_CPU_RK3399=y +CONFIG_CPU_RK3568=y +CONFIG_ANDROID_VERSION=0x08010000 +CONFIG_ROCKCHIP_CPUINFO=y +CONFIG_ROCKCHIP_GRF=y +# CONFIG_ROCKCHIP_HW_DECOMPRESS is not set +CONFIG_ROCKCHIP_IPA=y +CONFIG_ROCKCHIP_OPP=y +CONFIG_ROCKCHIP_PM_DOMAINS=y +CONFIG_ROCKCHIP_PVTM=y +# CONFIG_ROCKCHIP_RAMDISK is not set +CONFIG_ROCKCHIP_SUSPEND_MODE=y +CONFIG_ROCKCHIP_SYSTEM_MONITOR=y +CONFIG_ROCKCHIP_MTD_VENDOR_STORAGE=y +CONFIG_ROCKCHIP_VENDOR_STORAGE_UPDATE_LOADER=y +CONFIG_ROCKCHIP_DEBUG=y +# CONFIG_ROCKCHIP_LOW_PERFORMANCE is not set +# CONFIG_ROCKCHIP_THUNDER_BOOT is not set +CONFIG_ROCKCHIP_SCHED_PERFORMANCE_BIAS=y +# CONFIG_SOC_TI is not set + +# +# Xilinx SoC drivers +# +# CONFIG_XILINX_VCU is not set +CONFIG_PM_DEVFREQ=y + +# +# DEVFREQ Governors +# +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y +CONFIG_DEVFREQ_GOV_PERFORMANCE=y +CONFIG_DEVFREQ_GOV_POWERSAVE=y +CONFIG_DEVFREQ_GOV_USERSPACE=y +# CONFIG_DEVFREQ_GOV_PASSIVE is not set + +# +# DEVFREQ Drivers +# +CONFIG_ARM_ROCKCHIP_BUS_DEVFREQ=y +CONFIG_ARM_ROCKCHIP_DMC_DEVFREQ=y +# CONFIG_ARM_ROCKCHIP_DMC_DEBUG is not set +CONFIG_PM_DEVFREQ_EVENT=y +CONFIG_DEVFREQ_EVENT_ROCKCHIP_DFI=y +# CONFIG_DEVFREQ_EVENT_ROCKCHIP_NOCP is not set +CONFIG_EXTCON=y + +# +# Extcon Device Drivers +# +# CONFIG_EXTCON_ADC_JACK is not set +# CONFIG_EXTCON_GPIO is not set +# CONFIG_EXTCON_MAX3355 is not set +# CONFIG_EXTCON_RT8973A is not set +# CONFIG_EXTCON_SM5502 is not set +# CONFIG_EXTCON_USB_GPIO is not set +# CONFIG_EXTCON_USBC_CROS_EC is not set +CONFIG_MEMORY=y +# CONFIG_ARM_PL172_MPMC is not set +CONFIG_IIO=y +CONFIG_IIO_BUFFER=y +# CONFIG_IIO_BUFFER_CB is not set +# CONFIG_IIO_BUFFER_HW_CONSUMER is not set +CONFIG_IIO_KFIFO_BUF=y +# CONFIG_IIO_CONFIGFS is not set +CONFIG_IIO_TRIGGER=y +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +# CONFIG_IIO_SW_DEVICE is not set +# CONFIG_IIO_SW_TRIGGER is not set + +# +# Accelerometers +# +# CONFIG_ADIS16201 is not set +# CONFIG_ADIS16209 is not set +# CONFIG_ADXL345_I2C is not set +# CONFIG_ADXL345_SPI is not set +# CONFIG_BMA180 is not set +# CONFIG_BMA220 is not set +# CONFIG_BMC150_ACCEL is not set +# CONFIG_DA280 is not set +# CONFIG_DA311 is not set +# CONFIG_DMARD06 is not set +# CONFIG_DMARD09 is not set +# CONFIG_DMARD10 is not set +# CONFIG_IIO_CROS_EC_ACCEL_LEGACY is not set +# CONFIG_IIO_ST_ACCEL_3AXIS is not set +# CONFIG_KXSD9 is not set +# CONFIG_KXCJK1013 is not set +# CONFIG_MC3230 is not set +# CONFIG_MMA7455_I2C is not set +# CONFIG_MMA7455_SPI is not set +# CONFIG_MMA7660 is not set +# CONFIG_MMA8452 is not set +# CONFIG_MMA9551 is not set +# CONFIG_MMA9553 is not set +# CONFIG_MXC4005 is not set +# CONFIG_MXC6255 is not set +# CONFIG_SCA3000 is not set +# CONFIG_STK8312 is not set +# CONFIG_STK8BA50 is not set + +# +# Analog to digital converters +# +# CONFIG_AD7266 is not set +# CONFIG_AD7291 is not set +# CONFIG_AD7298 is not set +# CONFIG_AD7476 is not set +# CONFIG_AD7766 is not set +# CONFIG_AD7791 is not set +# CONFIG_AD7793 is not set +# CONFIG_AD7887 is not set +# CONFIG_AD7923 is not set +# CONFIG_AD799X is not set +# CONFIG_CC10001_ADC is not set +# CONFIG_ENVELOPE_DETECTOR is not set +# CONFIG_HI8435 is not set +# CONFIG_HX711 is not set +# CONFIG_INA2XX_ADC is not set +# CONFIG_LTC2471 is not set +# CONFIG_LTC2485 is not set +# CONFIG_LTC2497 is not set +# CONFIG_MAX1027 is not set +# CONFIG_MAX11100 is not set +# CONFIG_MAX1118 is not set +# CONFIG_MAX1363 is not set +# CONFIG_MAX9611 is not set +# CONFIG_MCP320X is not set +# CONFIG_MCP3422 is not set +# CONFIG_NAU7802 is not set +CONFIG_ROCKCHIP_SARADC=y +# CONFIG_ROCKCHIP_SARADC_TEST_CHN is not set +# CONFIG_SD_ADC_MODULATOR is not set +# CONFIG_TI_ADC081C is not set +# CONFIG_TI_ADC0832 is not set +# CONFIG_TI_ADC084S021 is not set +# CONFIG_TI_ADC12138 is not set +# CONFIG_TI_ADC108S102 is not set +# CONFIG_TI_ADC128S052 is not set +# CONFIG_TI_ADC161S626 is not set +# CONFIG_TI_ADS1015 is not set +# CONFIG_TI_ADS7950 is not set +# CONFIG_TI_ADS8688 is not set +# CONFIG_TI_TLC4541 is not set +# CONFIG_VF610_ADC is not set + +# +# Analog Front Ends +# +# CONFIG_IIO_RESCALE is not set + +# +# Amplifiers +# +# CONFIG_AD8366 is not set + +# +# Chemical Sensors +# +# CONFIG_ATLAS_PH_SENSOR is not set +# CONFIG_BME680 is not set +# CONFIG_CCS811 is not set +# CONFIG_IAQCORE is not set +# CONFIG_VZ89X is not set +# CONFIG_IIO_CROS_EC_SENSORS_CORE is not set + +# +# Hid Sensor IIO Common +# + +# +# SSP Sensor Common +# +# CONFIG_IIO_SSP_SENSORHUB is not set + +# +# Counters +# + +# +# Digital to analog converters +# +# CONFIG_AD5064 is not set +# CONFIG_AD5360 is not set +# CONFIG_AD5380 is not set +# CONFIG_AD5421 is not set +# CONFIG_AD5446 is not set +# CONFIG_AD5449 is not set +# CONFIG_AD5592R is not set +# CONFIG_AD5593R is not set +# CONFIG_AD5504 is not set +# CONFIG_AD5624R_SPI is not set +# CONFIG_LTC2632 is not set +# CONFIG_AD5686_SPI is not set +# CONFIG_AD5696_I2C is not set +# CONFIG_AD5755 is not set +# CONFIG_AD5758 is not set +# CONFIG_AD5761 is not set +# CONFIG_AD5764 is not set +# CONFIG_AD5791 is not set +# CONFIG_AD7303 is not set +# CONFIG_AD8801 is not set +# CONFIG_DPOT_DAC is not set +# CONFIG_DS4424 is not set +# CONFIG_M62332 is not set +# CONFIG_MAX517 is not set +# CONFIG_MAX5821 is not set +# CONFIG_MCP4725 is not set +# CONFIG_MCP4922 is not set +# CONFIG_TI_DAC082S085 is not set +# CONFIG_TI_DAC5571 is not set +# CONFIG_VF610_DAC is not set + +# +# IIO dummy driver +# + +# +# Frequency Synthesizers DDS/PLL +# + +# +# Clock Generator/Distribution +# +# CONFIG_AD9523 is not set + +# +# Phase-Locked Loop (PLL) frequency synthesizers +# +# CONFIG_ADF4350 is not set + +# +# Digital gyroscope sensors +# +# CONFIG_ADIS16080 is not set +# CONFIG_ADIS16130 is not set +# CONFIG_ADIS16136 is not set +# CONFIG_ADIS16260 is not set +# CONFIG_ADXRS450 is not set +# CONFIG_BMG160 is not set +# CONFIG_MPU3050_I2C is not set +# CONFIG_IIO_ST_GYRO_3AXIS is not set +# CONFIG_ITG3200 is not set + +# +# Health Sensors +# + +# +# Heart Rate Monitors +# +# CONFIG_AFE4403 is not set +# CONFIG_AFE4404 is not set +# CONFIG_MAX30100 is not set +# CONFIG_MAX30102 is not set + +# +# Humidity sensors +# +# CONFIG_AM2315 is not set +# CONFIG_DHT11 is not set +# CONFIG_HDC100X is not set +# CONFIG_HTS221 is not set +# CONFIG_HTU21 is not set +# CONFIG_SI7005 is not set +# CONFIG_SI7020 is not set + +# +# Inertial measurement units +# +# CONFIG_ADIS16400 is not set +# CONFIG_ADIS16480 is not set +# CONFIG_BMI160_I2C is not set +# CONFIG_BMI160_SPI is not set +# CONFIG_KMX61 is not set +# CONFIG_INV_MPU6050_I2C is not set +# CONFIG_INV_MPU6050_SPI is not set +# CONFIG_IIO_ST_LSM6DSX is not set + +# +# Light sensors +# +# CONFIG_ADJD_S311 is not set +# CONFIG_AL3320A is not set +# CONFIG_APDS9300 is not set +# CONFIG_APDS9960 is not set +# CONFIG_BH1750 is not set +# CONFIG_BH1780 is not set +# CONFIG_CM32181 is not set +# CONFIG_CM3232 is not set +# CONFIG_CM3323 is not set +# CONFIG_CM3605 is not set +# CONFIG_CM36651 is not set +# CONFIG_GP2AP020A00F is not set +CONFIG_SENSORS_ISL29018=y +# CONFIG_SENSORS_ISL29028 is not set +# CONFIG_ISL29125 is not set +# CONFIG_JSA1212 is not set +# CONFIG_RPR0521 is not set +# CONFIG_LTR501 is not set +# CONFIG_LV0104CS is not set +# CONFIG_MAX44000 is not set +# CONFIG_OPT3001 is not set +# CONFIG_PA12203001 is not set +# CONFIG_SI1133 is not set +# CONFIG_SI1145 is not set +# CONFIG_STK3310 is not set +# CONFIG_ST_UVIS25 is not set +# CONFIG_TCS3414 is not set +# CONFIG_TCS3472 is not set +CONFIG_SENSORS_TSL2563=y +CONFIG_TSL2583=y +# CONFIG_TSL2772 is not set +# CONFIG_TSL4531 is not set +# CONFIG_US5182D is not set +# CONFIG_VCNL4000 is not set +# CONFIG_VEML6070 is not set +# CONFIG_VL6180 is not set +# CONFIG_ZOPT2201 is not set + +# +# Magnetometer sensors +# +# CONFIG_AK8974 is not set +# CONFIG_AK8975 is not set +# CONFIG_AK09911 is not set +# CONFIG_BMC150_MAGN_I2C is not set +# CONFIG_BMC150_MAGN_SPI is not set +# CONFIG_MAG3110 is not set +# CONFIG_MMC35240 is not set +# CONFIG_IIO_ST_MAGN_3AXIS is not set +# CONFIG_SENSORS_HMC5843_I2C is not set +# CONFIG_SENSORS_HMC5843_SPI is not set + +# +# Multiplexers +# +# CONFIG_IIO_MUX is not set + +# +# Inclinometer sensors +# + +# +# Triggers - standalone +# +# CONFIG_IIO_INTERRUPT_TRIGGER is not set +CONFIG_IIO_SYSFS_TRIGGER=y + +# +# Digital potentiometers +# +# CONFIG_AD5272 is not set +# CONFIG_DS1803 is not set +# CONFIG_MAX5481 is not set +# CONFIG_MAX5487 is not set +# CONFIG_MCP4018 is not set +# CONFIG_MCP4131 is not set +# CONFIG_MCP4531 is not set +# CONFIG_TPL0102 is not set + +# +# Digital potentiostats +# +# CONFIG_LMP91000 is not set + +# +# Pressure sensors +# +# CONFIG_ABP060MG is not set +# CONFIG_BMP280 is not set +# CONFIG_HP03 is not set +# CONFIG_MPL115_I2C is not set +# CONFIG_MPL115_SPI is not set +# CONFIG_MPL3115 is not set +# CONFIG_MS5611 is not set +# CONFIG_MS5637 is not set +# CONFIG_IIO_ST_PRESS is not set +# CONFIG_T5403 is not set +# CONFIG_HP206C is not set +# CONFIG_ZPA2326 is not set + +# +# Lightning sensors +# +# CONFIG_AS3935 is not set + +# +# Proximity and distance sensors +# +# CONFIG_ISL29501 is not set +# CONFIG_LIDAR_LITE_V2 is not set +# CONFIG_RFD77402 is not set +# CONFIG_SRF04 is not set +# CONFIG_SX9500 is not set +# CONFIG_SRF08 is not set + +# +# Resolver to digital converters +# +# CONFIG_AD2S1200 is not set + +# +# Temperature sensors +# +# CONFIG_MAXIM_THERMOCOUPLE is not set +# CONFIG_MLX90614 is not set +# CONFIG_MLX90632 is not set +# CONFIG_TMP006 is not set +# CONFIG_TMP007 is not set +# CONFIG_TSYS01 is not set +# CONFIG_TSYS02D is not set +# CONFIG_NTB is not set +# CONFIG_VME_BUS is not set +CONFIG_PWM=y +CONFIG_PWM_SYSFS=y +# CONFIG_PWM_CROS_EC is not set +# CONFIG_PWM_FSL_FTM is not set +# CONFIG_PWM_PCA9685 is not set +CONFIG_PWM_ROCKCHIP=y +# CONFIG_PWM_ROCKCHIP_ONESHOT is not set + +# +# IRQ chip support +# +CONFIG_IRQCHIP=y +CONFIG_ARM_GIC=y +CONFIG_ARM_GIC_MAX_NR=1 +CONFIG_ARM_GIC_V2M=y +CONFIG_ARM_GIC_V3=y +CONFIG_ARM_GIC_V3_ITS=y +CONFIG_ARM_GIC_V3_ITS_PCI=y +CONFIG_PARTITION_PERCPU=y +# CONFIG_IPACK_BUS is not set +CONFIG_ARCH_HAS_RESET_CONTROLLER=y +CONFIG_RESET_CONTROLLER=y +# CONFIG_RESET_TI_SYSCON is not set +# CONFIG_FMC is not set + +# +# PHY Subsystem +# +CONFIG_GENERIC_PHY=y +# CONFIG_PHY_XGENE is not set +# CONFIG_BCM_KONA_USB2_PHY is not set +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_PHY_CPCAP_USB is not set +# CONFIG_PHY_MAPPHONE_MDM6600 is not set +CONFIG_PHY_ROCKCHIP_CSI2_DPHY=y +CONFIG_PHY_ROCKCHIP_DP=y +CONFIG_PHY_ROCKCHIP_EMMC=y +# CONFIG_PHY_ROCKCHIP_INNO_COMBPHY is not set +CONFIG_PHY_ROCKCHIP_INNO_HDMI_PHY=y +CONFIG_PHY_ROCKCHIP_INNO_MIPI_DPHY=y +CONFIG_PHY_ROCKCHIP_INNO_USB2=y +CONFIG_PHY_ROCKCHIP_INNO_USB3=y +CONFIG_PHY_ROCKCHIP_INNO_VIDEO_COMBO_PHY=y +# CONFIG_PHY_ROCKCHIP_INNO_VIDEO_PHY is not set +CONFIG_PHY_ROCKCHIP_MIPI_RX=y +CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=y +CONFIG_PHY_ROCKCHIP_NANENG_EDP=y +# CONFIG_PHY_ROCKCHIP_NANENG_USB2 is not set +CONFIG_PHY_ROCKCHIP_PCIE=y +CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y +CONFIG_PHY_ROCKCHIP_TYPEC=y +CONFIG_PHY_ROCKCHIP_USB=y +# CONFIG_PHY_SAMSUNG_USB2 is not set +# CONFIG_POWERCAP is not set +# CONFIG_MCB is not set +CONFIG_RAS=y + +# +# Android +# +CONFIG_ANDROID=y +# CONFIG_ANDROID_BINDER_IPC is not set +# CONFIG_LIBNVDIMM is not set +# CONFIG_DAX is not set +CONFIG_NVMEM=y +CONFIG_NVMEM_SYSFS=y +CONFIG_ROCKCHIP_EFUSE=y +CONFIG_ROCKCHIP_OTP=y + +# +# HW tracing support +# +# CONFIG_STM is not set +# CONFIG_INTEL_TH is not set +# CONFIG_FPGA is not set +# CONFIG_FSI is not set +# CONFIG_TEE is not set +CONFIG_PM_OPP=y +# CONFIG_SIOX is not set +# CONFIG_SLIMBUS is not set +# CONFIG_LEGACY_ENERGY_MODEL_DT is not set +CONFIG_RK_FLASH=y + +# +# Rockchip Flash Devices +# +# CONFIG_RK_NANDC_NAND is not set +CONFIG_RK_SFC_NAND=y +CONFIG_RK_SFC_NAND_MTD=y +CONFIG_RK_SFC_NOR=y +CONFIG_RK_SFC_NOR_MTD=y +# CONFIG_RK_NAND is not set + +# +# Headset device support +# +CONFIG_RK_HEADSET=y + +# +# File systems +# +CONFIG_DCACHE_WORD_ACCESS=y +CONFIG_FS_IOMAP=y +# CONFIG_EXT2_FS is not set +# CONFIG_EXT3_FS is not set +CONFIG_EXT4_FS=y +CONFIG_EXT4_USE_FOR_EXT2=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +# CONFIG_EXT4_ENCRYPTION is not set +# 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=y +# CONFIG_XFS_QUOTA is not set +# CONFIG_XFS_POSIX_ACL is not set +# CONFIG_XFS_RT is not set +# CONFIG_XFS_ONLINE_SCRUB is not set +# CONFIG_XFS_WARN is not set +# CONFIG_XFS_DEBUG is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_F2FS_FS is not set +# CONFIG_FS_DAX is not set +CONFIG_FS_POSIX_ACL=y +CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set +CONFIG_FILE_LOCKING=y +CONFIG_MANDATORY_FILE_LOCKING=y +# CONFIG_FS_ENCRYPTION is not set +# CONFIG_FS_VERITY is not set +CONFIG_FSNOTIFY=y +# CONFIG_DNOTIFY is not set +CONFIG_INOTIFY_USER=y +# CONFIG_FANOTIFY is not set +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_AUTOFS_FS is not set +CONFIG_FUSE_FS=y +# CONFIG_CUSE is not set +CONFIG_OVERLAY_FS=y +# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set +CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y +# CONFIG_OVERLAY_FS_INDEX is not set +# CONFIG_OVERLAY_FS_XINO_AUTO is not set +# CONFIG_OVERLAY_FS_METACOPY is not set +# CONFIG_INCREMENTAL_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 is not set +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=936 +CONFIG_FAT_DEFAULT_IOCHARSET="utf8" +CONFIG_FAT_DEFAULT_UTF8=y +CONFIG_EXFAT_FS=y +CONFIG_EXFAT_DEFAULT_CODEPAGE=437 +CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8" +CONFIG_EXFAT_VIRTUAL_XATTR=y +CONFIG_EXFAT_VIRTUAL_XATTR_SELINUX_LABEL="u:object_r:exfat:s0" +# CONFIG_EXFAT_DEBUG is not set +# CONFIG_EXFAT_UEVENT is not set +# 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_PROC_CHILDREN is not set +# CONFIG_PROC_UID is not set +CONFIG_KERNFS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +# CONFIG_HUGETLBFS is not set +CONFIG_MEMFD_CREATE=y +CONFIG_ARCH_HAS_GIGANTIC_PAGE=y +CONFIG_CONFIGFS_FS=y +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ORANGEFS_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_ECRYPT_FS is not set +# CONFIG_SDCARD_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +# CONFIG_JFFS2_SUMMARY is not set +# CONFIG_JFFS2_FS_XATTR is not set +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_RTIME=y +CONFIG_UBIFS_FS=y +CONFIG_UBIFS_FS_ADVANCED_COMPR=y +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +# CONFIG_UBIFS_ATIME_SUPPORT is not set +CONFIG_UBIFS_FS_XATTR=y +CONFIG_UBIFS_FS_SECURITY=y +# CONFIG_CRAMFS is not set +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_FILE_CACHE=y +# CONFIG_SQUASHFS_FILE_DIRECT is not set +CONFIG_SQUASHFS_DECOMP_SINGLE=y +# CONFIG_SQUASHFS_DECOMP_MULTI is not set +# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set +# CONFIG_SQUASHFS_XATTR is not set +CONFIG_SQUASHFS_ZLIB=y +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +# CONFIG_SQUASHFS_ZSTD is not set +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +# CONFIG_SQUASHFS_EMBEDDED is not set +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX6FS_FS is not set +# CONFIG_ROMFS_FS is not set +CONFIG_PSTORE=y +CONFIG_PSTORE_DEFLATE_COMPRESS=y +# CONFIG_PSTORE_LZO_COMPRESS is not set +# CONFIG_PSTORE_LZ4_COMPRESS is not set +# CONFIG_PSTORE_LZ4HC_COMPRESS is not set +# CONFIG_PSTORE_842_COMPRESS is not set +# CONFIG_PSTORE_ZSTD_COMPRESS is not set +CONFIG_PSTORE_COMPRESS=y +CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y +CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" +CONFIG_PSTORE_CONSOLE=y +# CONFIG_PSTORE_CONSOLE_FORCE is not set +# CONFIG_PSTORE_PMSG is not set +# CONFIG_PSTORE_FTRACE is not set +CONFIG_PSTORE_RAM=y +# CONFIG_PSTORE_MCU_LOG is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +# CONFIG_NFS_FS is not set +# CONFIG_NFSD is not set +# CONFIG_CEPH_FS is not set +# CONFIG_CIFS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf8" +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=y +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ASCII=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_UNICODE=y +# CONFIG_UNICODE_NORMALIZATION_SELFTEST 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_TRUSTED_KEYS is not set +# CONFIG_ENCRYPTED_KEYS is not set +# CONFIG_KEY_DH_OPERATIONS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +# CONFIG_SECURITY is not set +CONFIG_SECURITYFS=y +CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y +# CONFIG_HARDENED_USERCOPY is not set +# CONFIG_FORTIFY_SOURCE is not set +# CONFIG_STATIC_USERMODEHELPER is not set +# CONFIG_TEE_SUPPORT is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_DEFAULT_SECURITY="" + +# +# Kernel hardening options +# + +# +# Memory initialization +# +CONFIG_INIT_STACK_NONE=y +# CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set +# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_RNG_DEFAULT=y +CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_AKCIPHER=y +CONFIG_CRYPTO_KPP2=y +CONFIG_CRYPTO_KPP=y +CONFIG_CRYPTO_ACOMP2=y +CONFIG_CRYPTO_RSA=y +# CONFIG_CRYPTO_DH is not set +CONFIG_CRYPTO_ECDH=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +# CONFIG_CRYPTO_USER is not set +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +CONFIG_CRYPTO_GF128MUL=y +CONFIG_CRYPTO_NULL=y +CONFIG_CRYPTO_NULL2=y +# CONFIG_CRYPTO_PCRYPT is not set +CONFIG_CRYPTO_WORKQUEUE=y +CONFIG_CRYPTO_CRYPTD=y +# CONFIG_CRYPTO_MCRYPTD is not set +CONFIG_CRYPTO_AUTHENC=m +# CONFIG_CRYPTO_TEST is not set +CONFIG_CRYPTO_SIMD=y +# CONFIG_CRYPTO_CURVE25519 is not set + +# +# Authenticated Encryption with Associated Data +# +CONFIG_CRYPTO_CCM=y +CONFIG_CRYPTO_GCM=y +# CONFIG_CRYPTO_CHACHA20POLY1305 is not set +# CONFIG_CRYPTO_AEGIS128 is not set +# CONFIG_CRYPTO_AEGIS128L is not set +# CONFIG_CRYPTO_AEGIS256 is not set +# CONFIG_CRYPTO_MORUS640 is not set +# CONFIG_CRYPTO_MORUS1280 is not set +CONFIG_CRYPTO_SEQIV=y +CONFIG_CRYPTO_ECHAINIV=m + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CFB=y +CONFIG_CRYPTO_CTR=y +# CONFIG_CRYPTO_CTS is not set +CONFIG_CRYPTO_ECB=y +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_PCBC is not set +CONFIG_CRYPTO_XTS=y +# CONFIG_CRYPTO_KEYWRAP is not set +# CONFIG_CRYPTO_ADIANTUM is not set + +# +# Hash modes +# +CONFIG_CRYPTO_CMAC=y +CONFIG_CRYPTO_HMAC=y +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_CRC32 is not set +# CONFIG_CRYPTO_BLAKE2S is not set +CONFIG_CRYPTO_CRCT10DIF=y +CONFIG_CRYPTO_GHASH=y +# CONFIG_CRYPTO_POLY1305 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=y +# CONFIG_CRYPTO_SHA3 is not set +CONFIG_CRYPTO_SM3=y +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_WP512 is not set + +# +# Ciphers +# +CONFIG_CRYPTO_AES=y +# CONFIG_CRYPTO_AES_TI is not set +# CONFIG_CRYPTO_ANUBIS is not set +CONFIG_CRYPTO_ARC4=y +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +CONFIG_CRYPTO_DES=y +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_CHACHA20 is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_SM4 is not set +# CONFIG_CRYPTO_TEA is not set +CONFIG_CRYPTO_TWOFISH=y +CONFIG_CRYPTO_TWOFISH_COMMON=y + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_LZO=y +# CONFIG_CRYPTO_842 is not set +# CONFIG_CRYPTO_LZ4 is not set +# CONFIG_CRYPTO_LZ4HC is not set +# CONFIG_CRYPTO_ZSTD is not set + +# +# Random Number Generation +# +CONFIG_CRYPTO_ANSI_CPRNG=y +CONFIG_CRYPTO_DRBG_MENU=y +CONFIG_CRYPTO_DRBG_HMAC=y +# CONFIG_CRYPTO_DRBG_HASH is not set +# CONFIG_CRYPTO_DRBG_CTR is not set +CONFIG_CRYPTO_DRBG=y +CONFIG_CRYPTO_JITTERENTROPY=y +CONFIG_CRYPTO_USER_API=y +CONFIG_CRYPTO_USER_API_HASH=y +CONFIG_CRYPTO_USER_API_SKCIPHER=y +# CONFIG_CRYPTO_USER_API_RNG is not set +# CONFIG_CRYPTO_USER_API_AEAD is not set +CONFIG_CRYPTO_HASH_INFO=y + +# +# Crypto library routines +# +# CONFIG_CRYPTO_LIB_BLAKE2S is not set +# CONFIG_CRYPTO_LIB_CHACHA is not set +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 +# CONFIG_CRYPTO_LIB_POLY1305 is not set +# CONFIG_CRYPTO_LIB_CURVE25519 is not set +# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set +CONFIG_CRYPTO_HW=y +# CONFIG_CRYPTO_DEV_CCP is not set +# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set +# CONFIG_CRYPTO_DEV_CAVIUM_ZIP is not set +CONFIG_CRYPTO_DEV_ROCKCHIP=y +# CONFIG_CRYPTO_DEV_CCREE is not set +# CONFIG_CRYPTO_DEV_HISI_SEC is not set +CONFIG_ASYMMETRIC_KEY_TYPE=y +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y +CONFIG_X509_CERTIFICATE_PARSER=y +CONFIG_PKCS7_MESSAGE_PARSER=y +# CONFIG_PKCS7_TEST_KEY is not set +# CONFIG_SIGNED_PE_FILE_VERIFICATION is not set + +# +# Certificates for signature checking +# +CONFIG_SYSTEM_TRUSTED_KEYRING=y +CONFIG_SYSTEM_TRUSTED_KEYS="" +# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set +# CONFIG_SECONDARY_TRUSTED_KEYRING is not set +# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set +CONFIG_BINARY_PRINTF=y + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_HAVE_ARCH_BITREVERSE=y +CONFIG_RATIONAL=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +CONFIG_ARCH_HAS_FAST_MULTIPLIER=y +# CONFIG_INDIRECT_PIO is not set +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +CONFIG_CRC_T10DIF=y +CONFIG_CRC_ITU_T=y +CONFIG_CRC32=y +# CONFIG_CRC32_SELFTEST is not set +CONFIG_CRC32_SLICEBY8=y +# CONFIG_CRC32_SLICEBY4 is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_BIT is not set +# CONFIG_CRC64 is not set +# CONFIG_CRC4 is not set +CONFIG_CRC7=y +CONFIG_LIBCRC32C=y +# CONFIG_CRC8 is not set +CONFIG_AUDIT_ARCH_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_LZ4_DECOMPRESS=y +CONFIG_XZ_DEC=y +# CONFIG_XZ_DEC_X86 is not set +# CONFIG_XZ_DEC_POWERPC is not set +# CONFIG_XZ_DEC_IA64 is not set +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +# CONFIG_XZ_DEC_SPARC is not set +CONFIG_XZ_DEC_BCJ=y +# CONFIG_XZ_DEC_TEST is not set +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_DECOMPRESS_XZ=y +CONFIG_DECOMPRESS_LZO=y +CONFIG_DECOMPRESS_LZ4=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=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_DMA_DIRECT_OPS=y +CONFIG_SWIOTLB=y +CONFIG_SGL_ALLOC=y +CONFIG_CPU_RMAP=y +CONFIG_DQL=y +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +CONFIG_NLATTR=y +CONFIG_CLZ_TAB=y +# CONFIG_CORDIC is not set +# CONFIG_DDR is not set +# CONFIG_IRQ_POLL is not set +CONFIG_MPILIB=y +CONFIG_LIBFDT=y +CONFIG_OID_REGISTRY=y +CONFIG_HAVE_GENERIC_VDSO=y +CONFIG_GENERIC_GETTIMEOFDAY=y +CONFIG_FONT_SUPPORT=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_SG_POOL=y +CONFIG_ARCH_HAS_SG_CHAIN=y +CONFIG_SBITMAP=y +# CONFIG_STRING_SELFTEST is not set + +# +# Kernel hacking +# + +# +# printk and dmesg options +# +CONFIG_PRINTK_TIME=y +# CONFIG_PRINTK_TIME_FROM_ARM_ARCH_TIMER is not set +# CONFIG_PRINTK_PROCESS is not set +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 +CONFIG_CONSOLE_LOGLEVEL_QUIET=4 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +# CONFIG_BOOT_PRINTK_DELAY is not set +CONFIG_DYNAMIC_DEBUG=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_GDB_SCRIPTS is not set +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=2048 +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_READABLE_ASM is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_PAGE_OWNER is not set +CONFIG_DEBUG_FS=y +# CONFIG_HEADERS_CHECK is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +CONFIG_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=0 +CONFIG_MAGIC_SYSRQ_SERIAL=y +CONFIG_DEBUG_KERNEL=y + +# +# Memory Debugging +# +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_PAGE_POISONING is not set +# CONFIG_DEBUG_PAGE_REF is not set +# CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SLUB_DEBUG_ON 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_ARCH_HAS_DEBUG_VIRTUAL=y +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +CONFIG_HAVE_ARCH_KASAN=y +CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y +CONFIG_CC_HAS_KASAN_GENERIC=y +# CONFIG_KASAN is not set +CONFIG_KASAN_STACK=1 +CONFIG_ARCH_HAS_KCOV=y +CONFIG_CC_HAS_SANCOV_TRACE_PC=y +# CONFIG_KCOV is not set +# CONFIG_DEBUG_SHIRQ is not set + +# +# Debug Lockups and Hangs +# +# CONFIG_SOFTLOCKUP_DETECTOR is not set +# CONFIG_DETECT_HUNG_TASK is not set +# CONFIG_WQ_WATCHDOG is not set +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +CONFIG_SCHED_DEBUG=y +CONFIG_SCHED_INFO=y +CONFIG_SCHEDSTATS=y +# CONFIG_SCHED_STACK_END_CHECK is not set +# CONFIG_DEBUG_TIMEKEEPING is not set + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +CONFIG_LOCK_DEBUGGING_SUPPORT=y +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +CONFIG_DEBUG_SPINLOCK=y +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +# CONFIG_DEBUG_RWSEMS is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_LOCK_TORTURE_TEST is not set +# CONFIG_WW_MUTEX_SELFTEST is not set +CONFIG_STACKTRACE=y +# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set +# CONFIG_DEBUG_KOBJECT is not set +CONFIG_HAVE_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_PI_LIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +CONFIG_DEBUG_CREDENTIALS=y + +# +# RCU Debugging +# +# CONFIG_RCU_PERF_TEST is not set +# CONFIG_RCU_TORTURE_TEST is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_RCU_TRACE=y +# CONFIG_RCU_EQS_DEBUG is not set +# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +# CONFIG_FAULT_INJECTION is not set +# CONFIG_LATENCYTOP is not set +CONFIG_NOP_TRACER=y +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_TRACE_CLOCK=y +CONFIG_RING_BUFFER=y +CONFIG_EVENT_TRACING=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_TRACING=y +CONFIG_GENERIC_TRACER=y +CONFIG_TRACING_SUPPORT=y +CONFIG_FTRACE=y +CONFIG_FUNCTION_TRACER=y +CONFIG_FUNCTION_GRAPH_TRACER=y +# CONFIG_PREEMPTIRQ_EVENTS is not set +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_HWLAT_TRACER is not set +# CONFIG_FTRACE_SYSCALLS is not set +# CONFIG_TRACER_SNAPSHOT is not set +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_STACK_TRACER is not set +CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_DYNAMIC_FTRACE=y +# CONFIG_FUNCTION_PROFILER is not set +CONFIG_FTRACE_MCOUNT_RECORD=y +# CONFIG_FTRACE_STARTUP_TEST is not set +# CONFIG_HIST_TRIGGERS is not set +# CONFIG_TRACEPOINT_BENCHMARK is not set +# CONFIG_RING_BUFFER_BENCHMARK is not set +# CONFIG_RING_BUFFER_STARTUP_TEST is not set +# CONFIG_PREEMPTIRQ_DELAY_TEST is not set +# CONFIG_TRACE_EVAL_MAP_FILE is not set +CONFIG_TRACING_EVENTS_GPIO=y +# CONFIG_DMA_API_DEBUG is not set +CONFIG_RUNTIME_TESTING_MENU=y +CONFIG_LKDTM=y +# CONFIG_TEST_LIST_SORT is not set +# CONFIG_TEST_SORT is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_RBTREE_TEST is not set +# CONFIG_INTERVAL_TREE_TEST is not set +# CONFIG_PERCPU_TEST is not set +# CONFIG_ATOMIC64_SELFTEST is not set +# CONFIG_TEST_HEXDUMP is not set +# CONFIG_TEST_STRING_HELPERS is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TEST_PRINTF is not set +# CONFIG_TEST_BITMAP is not set +# CONFIG_TEST_BITFIELD is not set +# CONFIG_TEST_UUID is not set +# CONFIG_TEST_OVERFLOW is not set +# CONFIG_TEST_RHASHTABLE is not set +# CONFIG_TEST_HASH is not set +# CONFIG_TEST_IDA is not set +# CONFIG_TEST_LKM is not set +# CONFIG_TEST_USER_COPY is not set +# CONFIG_TEST_BPF is not set +# CONFIG_FIND_BIT_BENCHMARK is not set +# CONFIG_TEST_FIRMWARE is not set +# CONFIG_TEST_SYSCTL is not set +# CONFIG_TEST_UDELAY is not set +# CONFIG_TEST_STATIC_KEYS is not set +# CONFIG_TEST_KMOD is not set +# CONFIG_TEST_MEMINIT is not set +# CONFIG_TEST_STACKINIT is not set +# CONFIG_MEMTEST is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y +# CONFIG_UBSAN is not set +CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y +CONFIG_STRICT_DEVMEM=y +# CONFIG_IO_STRICT_DEVMEM is not set +# CONFIG_ARM64_PTDUMP_DEBUGFS is not set +# CONFIG_PID_IN_CONTEXTIDR is not set +# CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set +# CONFIG_DEBUG_WX is not set +# CONFIG_DEBUG_ALIGN_RODATA is not set +# CONFIG_ARM64_RELOC_TEST is not set +# CONFIG_CORESIGHT is not set diff --git a/projects/Rockchip/devices/RK3566-ML/options b/projects/Rockchip/devices/RK3566-ML/options new file mode 100644 index 0000000000..81de2ea03f --- /dev/null +++ b/projects/Rockchip/devices/RK3566-ML/options @@ -0,0 +1,158 @@ +################################################################################ +# setup device defaults +################################################################################ + + # The TARGET_CPU variable controls which processor should be targeted for + # generated code. + case ${TARGET_ARCH} in + aarch64) + TARGET_KERNEL_ARCH="arm64" + TARGET_PATCH_ARCH="aarch64" + TARGET_CPU="cortex-a55" + TARGET_CPU_FLAGS="+crc+crypto+fp+simd" + TARGET_FPU="fp-armv8" + TARGET_FLOAT="hard" + TARGET_FEATURES="64bit" + ;; + arm) + TARGET_KERNEL_ARCH="arm64" + TARGET_PATCH_ARCH="aarch64" + TARGET_CPU="cortex-a55" + TARGET_CPU_FLAGS="+crc" + TARGET_FPU="neon-fp-armv8" + TARGET_FLOAT="hard" + TARGET_FEATURES="32bit" + ;; + esac + + # Kernel target + DEVICE_NAME="RK3566" + KERNEL_TARGET="Image" + BOOTLOADER="u-boot" + PARTITION_TABLE="gpt" + UBOOT_LABEL="uboot" + TRUST_LABEL="trust" + DEVICE_DTB=("rk3566-anbernic-rg353ps" "rk3566-anbernic-rg353vs" "rk3566-anbernic-rg503" "rk3566-anbernic-rg353p" "rk3566-anbernic-rg353v") + UBOOT_DTB="rk3566" + UBOOT_CONFIG="rk3568_defconfig" + PKG_SOC="rk356x" + PKG_DATAFILE="${PKG_RKBIN}/bin/rk35/rk3566_ddr_1056MHz_v1.16.bin" + PKG_LOADER="${PKG_RKBIN}/bin/rk35/rk356x_spl_v1.12.bin" + PKG_BL31="${PKG_RKBIN}/bin/rk35/rk3568_bl31_v1.42.elf" + PKG_LOAD_ADDR="0x0a100000" + BOOT_INI=false + EXT_LINUX_CONF=true + + # Additional kernel make parameters (for example to specify the u-boot loadaddress) + KERNEL_MAKE_EXTRACMD=" $(for DTB in "${DEVICE_DTB[@]}"; do echo -n "rockchip/${DTB}.dtb "; done)" + + # Define the CPU + HW_CPU="Rockchip RK3566" + + # Mali GPU family + MALI_FAMILY="bifrost-g52" + # MALI_VERSION="g2p0" + # OPENGLES="libmali" + VULKAN_SUPPORT="" + + # OpenGL(X) implementation to use (mesa / no) + OPENGL="mesa" + + # OpenGL-ES implementation to use (mesa / no) + OPENGLES="mesa" + + GRAPHIC_DRIVERS="panfrost" + + # Displayserver to use (weston / x11 / no) + DISPLAYSERVER="wl" + + # Windowmanager to use (fluxbox / weston / no) + WINDOWMANAGER="weston" + + # kernel serial console + EXTRA_CMDLINE="quiet rootwait console=ttyUSB0,1500000 console=tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20" + + # additional packages to install + # ADDITIONAL_PACKAGES="" + + # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) + # Space separated list is supported, + # e.g. FIRMWARE="dvb-firmware misc-firmware wlan-firmware" + FIRMWARE="misc-firmware wlan-firmware RTL8821CS-firmware" + + # additional drivers to install: + # for a list of additional drivers see packages/linux-drivers + # Space separated list is supported, + # e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" + # ADDITIONAL_DRIVERS="RTL8821AU RTL8821CU RTL88x2BU" + + # build and install driver addons (yes / no) + DRIVER_ADDONS_SUPPORT="no" + + # driver addons to install: + # for a list of additinoal drivers see packages/linux-driver-addons + # Space separated list is supported, + DRIVER_ADDONS="" #dvb-latest + + # debug tty path + DEBUG_TTY="/dev/ttyFIQ0" + + # build and install bluetooth support (yes / no) + BLUETOOTH_SUPPORT="yes" + + # build and install Avahi (Zeroconf) daemon (yes / no) + AVAHI_DAEMON="no" + + # build with NFS support (mounting nfs shares via the OS) (yes / no) + NFS_SUPPORT="no" + + # build with Samba Client support (mounting samba shares via the OS) (yes / no) + SAMBA_SUPPORT="no" + + # build and install Samba Server (yes / no) + SAMBA_SERVER="yes" + + # build and install SFTP Server (yes / no) + SFTP_SERVER="yes" + + # build and install OpenVPN support (yes / no) + OPENVPN_SUPPORT="no" + + # build and install ZeroTier support (yes / no) + ZEROTIER_SUPPORT="yes" + + # build and install diskmounter support (udevil) + # this service provide auto mounting support for external drives in the + # mediacenter also automount internally drives at boottime via udev (yes / no) + UDEVIL="yes" + + # build and install exFAT fuse support (yes / no) + EXFAT="yes" + + # build and install NTFS-3G fuse support (yes / no) + NTFS3G="no" + + # build and install hfs filesystem utilities (yes / no) + HFSTOOLS="no" + + # Support for partitioning and formating disks in initramfs (yes / no) + # This adds support for parted and mkfs.ext3/4 to initramfs for OEM usage + INITRAMFS_PARTED_SUPPORT="no" + + # build with swap support (yes / no) + SWAP_SUPPORT="yes" + + # swap support enabled per default (yes / no) + SWAP_ENABLED_DEFAULT="yes" + + # swapfile size if SWAP_SUPPORT=yes in MB + SWAPFILESIZE="384" + + # cron support (yes / no) + CRON_SUPPORT="no" + + # Settings package name - blank if not required + DISTRO_PKG_SETTINGS="" + + # htop tool (yes / no) + HTOP_TOOL="yes" diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index 5094dd3523..e9d8c7834f 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -30,6 +30,10 @@ case ${DEVICE} in GET_HANDLER_SUPPORT="git" PKG_GIT_CLONE_BRANCH="main" ;; + *ML) + PKG_VERSION="6.5-rc7" + PKG_URL="https://git.kernel.org/torvalds/t/${PKG_NAME}-${PKG_VERSION}.tar.gz" + ;; *X55) PKG_URL="${PKG_SITE}/rk3566-x55-kernel.git" PKG_VERSION="a514c4665" diff --git a/projects/Rockchip/packages/u-boot/package.mk b/projects/Rockchip/packages/u-boot/package.mk index d1face0c14..753050aac7 100644 --- a/projects/Rockchip/packages/u-boot/package.mk +++ b/projects/Rockchip/packages/u-boot/package.mk @@ -31,6 +31,10 @@ case ${DEVICE} in PKG_VERSION="0e26e35cb18a80005b7de45c95858c86a2f7f41e" PKG_GIT_CLONE_BRANCH="odroidgoA-v2017.09" ;; + *ML) + PKG_URL="https://github.com/u-boot/u-boot.git" + PKG_VERSION="e508b93" + ;; esac PKG_IS_KERNEL_PKG="yes" From 31ad5480e40686534b5dab2c61c2189e9dd5bf2e Mon Sep 17 00:00:00 2001 From: fewtarius Date: Fri, 25 Aug 2023 21:14:25 +0000 Subject: [PATCH 002/167] Base build completes with bsp u-boot, but we need mainline u-boot which fails with undefined reference to `__isoc23_strtoul'. --- packages/debug/strace/package.mk | 2 +- projects/Rockchip/bootloader/install | 2 +- projects/Rockchip/bootloader/mkimage | 2 +- projects/Rockchip/devices/RK3566-ML/options | 2 +- projects/Rockchip/packages/u-boot/package.mk | 50 +++++++++++--------- 5 files changed, 31 insertions(+), 27 deletions(-) diff --git a/packages/debug/strace/package.mk b/packages/debug/strace/package.mk index 2aca2669e8..f982f27337 100644 --- a/packages/debug/strace/package.mk +++ b/packages/debug/strace/package.mk @@ -11,5 +11,5 @@ PKG_LONGDESC="strace is a diagnostic, debugging and instructional userspace util PKG_TOOLCHAIN="autotools" if [ "${TARGET_ARCH}" = x86_64 -o "${TARGET_ARCH}" = "aarch64" ]; then - PKG_CONFIGURE_OPTS_TARGET="--enable-mpers=no" + PKG_CONFIGURE_OPTS_TARGET="--enable-mpers=no --enable-bundled" fi diff --git a/projects/Rockchip/bootloader/install b/projects/Rockchip/bootloader/install index 5c42c6d3f8..3c506f8cf5 100755 --- a/projects/Rockchip/bootloader/install +++ b/projects/Rockchip/bootloader/install @@ -124,7 +124,7 @@ then echo "boot: create extlinux.conf..." mkdir -p "${INSTALL}/usr/share/bootloader/extlinux" -if [ "${TRUST_LABEL}" = "resource" ] +if [ "${#DEVICE_DTB}" -gt 1 ] then FDTMODE="FDTDIR /" else diff --git a/projects/Rockchip/bootloader/mkimage b/projects/Rockchip/bootloader/mkimage index e6cb8b965f..b288fe7821 100755 --- a/projects/Rockchip/bootloader/mkimage +++ b/projects/Rockchip/bootloader/mkimage @@ -98,7 +98,7 @@ if [ "${EXT_LINUX_CONF}" == true ] then mkdir -p "${LE_TMP}/extlinux" -if [ "${TRUST_LABEL}" = "resource" ] +if [ "${#DEVICE_DTB}" -gt 1 ] then echo "image: Set FDTDIR to /..." FDTMODE="FDTDIR /" diff --git a/projects/Rockchip/devices/RK3566-ML/options b/projects/Rockchip/devices/RK3566-ML/options index 81de2ea03f..8e6da7ba1f 100644 --- a/projects/Rockchip/devices/RK3566-ML/options +++ b/projects/Rockchip/devices/RK3566-ML/options @@ -34,7 +34,7 @@ TRUST_LABEL="trust" DEVICE_DTB=("rk3566-anbernic-rg353ps" "rk3566-anbernic-rg353vs" "rk3566-anbernic-rg503" "rk3566-anbernic-rg353p" "rk3566-anbernic-rg353v") UBOOT_DTB="rk3566" - UBOOT_CONFIG="rk3568_defconfig" + UBOOT_CONFIG="anbernic-rgxx3-rk3566_defconfig" PKG_SOC="rk356x" PKG_DATAFILE="${PKG_RKBIN}/bin/rk35/rk3566_ddr_1056MHz_v1.16.bin" PKG_LOADER="${PKG_RKBIN}/bin/rk35/rk356x_spl_v1.12.bin" diff --git a/projects/Rockchip/packages/u-boot/package.mk b/projects/Rockchip/packages/u-boot/package.mk index 753050aac7..000738dd8d 100644 --- a/projects/Rockchip/packages/u-boot/package.mk +++ b/projects/Rockchip/packages/u-boot/package.mk @@ -7,7 +7,7 @@ PKG_NAME="u-boot" PKG_ARCH="arm aarch64" PKG_SITE="https://github.com/JustEnoughLinuxOS" PKG_LICENSE="GPL" -PKG_DEPENDS_TARGET="toolchain swig:host rkbin" +PKG_DEPENDS_TARGET="toolchain swig:host glibc rkbin openssl" PKG_LONGDESC="Rockchip U-Boot is a bootloader for embedded systems." GET_HANDLER_SUPPORT="git" PKG_PATCH_DIRS+="${DEVICE}" @@ -18,6 +18,10 @@ case ${DEVICE} in PKG_VERSION="d34ff0716" PKG_GIT_CLONE_BRANCH="v2017.09-rk3588" ;; + *ML) + PKG_URL="https://github.com/u-boot/u-boot.git" + PKG_VERSION="976fb2f" + ;; RK356*) PKG_URL="${PKG_SITE}/rk356x-uboot.git" PKG_VERSION="4dbf6b2" @@ -31,10 +35,6 @@ case ${DEVICE} in PKG_VERSION="0e26e35cb18a80005b7de45c95858c86a2f7f41e" PKG_GIT_CLONE_BRANCH="odroidgoA-v2017.09" ;; - *ML) - PKG_URL="https://github.com/u-boot/u-boot.git" - PKG_VERSION="e508b93" - ;; esac PKG_IS_KERNEL_PKG="yes" @@ -64,26 +64,30 @@ make_target() { cp ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/u-boot/${UBOOT_CONFIG} configs fi [ "${BUILD_WITH_DEBUG}" = "yes" ] && PKG_DEBUG=1 || PKG_DEBUG=0 - if [[ "${PKG_BL31}" =~ ^/bin ]] - then - PKG_BL31="$(get_build_dir rkbin)/${PKG_BL31}" - fi - if [[ "${PKG_LOADER}" =~ ^/bin ]] - then - PKG_LOADER="$(get_build_dir rkbin)/${PKG_LOADER}" - fi - if [[ "${PKG_SOC}" =~ "rk35" ]] + if [[ "${PKG_BL31}" =~ ^/bin ]] + then + PKG_BL31="$(get_build_dir rkbin)/${PKG_BL31}" + fi + if [[ "${PKG_LOADER}" =~ ^/bin ]] then - DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make mrproper - DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make ${UBOOT_CONFIG} BL31=${PKG_BL31} ${PKG_LOADER} u-boot.dtb u-boot.itb - DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 _python_sysroot="${TOOLCHAIN}" _python_prefix=/ _python_exec_prefix=/ make HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTSTRIP="true" CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" - else - echo "Building for MBR (${UBOOT_DTB})..." - [ -n "${ATF_PLATFORM}" ] && cp -av $(get_build_dir atf)/bl31.bin . - DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm make mrproper - DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm make ${UBOOT_CONFIG} - DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm _python_sysroot="${TOOLCHAIN}" _python_prefix=/ _python_exec_prefix=/ make HOSTCC="$HOST_CC" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTSTRIP="true" CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" + PKG_LOADER="$(get_build_dir rkbin)/${PKG_LOADER}" fi + + case ${PARTITION_TABLE} in + gpt) + echo "Building for GPT (${UBOOT_DTB})..." + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make mrproper + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make ${UBOOT_CONFIG} BL31=${PKG_BL31} ${PKG_LOADER} u-boot.dtb u-boot.itb + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 _python_sysroot="${TOOLCHAIN}" _python_prefix=/ _python_exec_prefix=/ make HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTSTRIP="true" CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" + ;; + mbr) + echo "Building for MBR (${UBOOT_DTB})..." + [ -n "${ATF_PLATFORM}" ] && cp -av $(get_build_dir atf)/bl31.bin . + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm make mrproper + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm make ${UBOOT_CONFIG} + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm _python_sysroot="${TOOLCHAIN}" _python_prefix=/ _python_exec_prefix=/ make HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTSTRIP="true" CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" + ;; + esac fi } From 7be5b5b3a3278036a08962c76a6c52d107e9d268 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Tue, 5 Sep 2023 19:54:55 +0000 Subject: [PATCH 003/167] Fix partition miss in u-boot. --- projects/Rockchip/packages/u-boot/package.mk | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/projects/Rockchip/packages/u-boot/package.mk b/projects/Rockchip/packages/u-boot/package.mk index 000738dd8d..145976809a 100644 --- a/projects/Rockchip/packages/u-boot/package.mk +++ b/projects/Rockchip/packages/u-boot/package.mk @@ -72,15 +72,14 @@ make_target() { then PKG_LOADER="$(get_build_dir rkbin)/${PKG_LOADER}" fi - case ${PARTITION_TABLE} in gpt) echo "Building for GPT (${UBOOT_DTB})..." DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make mrproper - DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make ${UBOOT_CONFIG} BL31=${PKG_BL31} ${PKG_LOADER} u-boot.dtb u-boot.itb + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make tools ${UBOOT_CONFIG} BL31=${PKG_BL31} ${PKG_LOADER} u-boot.dtb u-boot.itb DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 _python_sysroot="${TOOLCHAIN}" _python_prefix=/ _python_exec_prefix=/ make HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTSTRIP="true" CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" ;; - mbr) + msdos) echo "Building for MBR (${UBOOT_DTB})..." [ -n "${ATF_PLATFORM}" ] && cp -av $(get_build_dir atf)/bl31.bin . DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm make mrproper From 4e4eba0c950469edaa9bf0c3f27f9fe7fc9b0483 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Thu, 7 Sep 2023 20:33:42 +0000 Subject: [PATCH 004/167] Add Python3 dependency + tools is NOT a config, oopsy. --- projects/Rockchip/packages/u-boot/package.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/Rockchip/packages/u-boot/package.mk b/projects/Rockchip/packages/u-boot/package.mk index 145976809a..4c10d4ec6f 100644 --- a/projects/Rockchip/packages/u-boot/package.mk +++ b/projects/Rockchip/packages/u-boot/package.mk @@ -7,7 +7,7 @@ PKG_NAME="u-boot" PKG_ARCH="arm aarch64" PKG_SITE="https://github.com/JustEnoughLinuxOS" PKG_LICENSE="GPL" -PKG_DEPENDS_TARGET="toolchain swig:host glibc rkbin openssl" +PKG_DEPENDS_TARGET="toolchain Python3 swig:host glibc rkbin openssl" PKG_LONGDESC="Rockchip U-Boot is a bootloader for embedded systems." GET_HANDLER_SUPPORT="git" PKG_PATCH_DIRS+="${DEVICE}" @@ -76,7 +76,7 @@ make_target() { gpt) echo "Building for GPT (${UBOOT_DTB})..." DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make mrproper - DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make tools ${UBOOT_CONFIG} BL31=${PKG_BL31} ${PKG_LOADER} u-boot.dtb u-boot.itb + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make ${UBOOT_CONFIG} BL31=${PKG_BL31} ${PKG_LOADER} u-boot.dtb u-boot.itb tools DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 _python_sysroot="${TOOLCHAIN}" _python_prefix=/ _python_exec_prefix=/ make HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTSTRIP="true" CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" ;; msdos) From 879f72c1cbdd628757dc025281c190631f5cf4b7 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Thu, 7 Sep 2023 21:20:12 +0000 Subject: [PATCH 005/167] U-boot needs pyelftools, and add setup_pkg_config_host thanks to @macromorgan. --- licenses/pyelftools.txt | 32 ++++++++++++++++++++ packages/python/system/pyelftools/package.mk | 23 ++++++++++++++ projects/Rockchip/packages/u-boot/package.mk | 8 +++-- 3 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 licenses/pyelftools.txt create mode 100644 packages/python/system/pyelftools/package.mk diff --git a/licenses/pyelftools.txt b/licenses/pyelftools.txt new file mode 100644 index 0000000000..26c1b8ffa0 --- /dev/null +++ b/licenses/pyelftools.txt @@ -0,0 +1,32 @@ +pyelftools is in the public domain (see below if you need more details). + +pyelftools uses the construct library for structured parsing of a binary +stream. construct is packaged in pyelftools/construct - see its LICENSE +file for the license. + +------------------------------------------------------------------------------- + +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/packages/python/system/pyelftools/package.mk b/packages/python/system/pyelftools/package.mk new file mode 100644 index 0000000000..37915b0652 --- /dev/null +++ b/packages/python/system/pyelftools/package.mk @@ -0,0 +1,23 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023-present Fewtarius + +PKG_NAME="pyelftools" +PKG_VERSION="b5840ce" # 0.30 +PKG_LICENSE="public domain" +PKG_SITE="https://github.com/eliben/pyelftools" +PKG_URL="${PKG_SITE}.git" +PKG_DEPENDS_HOST="toolchain Python3:host" +PKG_LONGDESC="A pure-Python library for parsing and analyzing ELF files" +PKG_TOOLCHAIN="manual" + +make_host() { + python3 setup.py build +} + +makeinstall_host() { + exec_thread_safe python3 setup.py install --prefix=${TOOLCHAIN} --skip-build + + # Avoid using full path to python3 that may exceed 128 byte limit. + # Instead use PATH as we know our toolchain is first. + sed -e '1 s/^#!.*$/#!\/usr\/bin\/env python3/' -i ${TOOLCHAIN}/bin/meson +} diff --git a/projects/Rockchip/packages/u-boot/package.mk b/projects/Rockchip/packages/u-boot/package.mk index 4c10d4ec6f..1bc700628e 100644 --- a/projects/Rockchip/packages/u-boot/package.mk +++ b/projects/Rockchip/packages/u-boot/package.mk @@ -7,7 +7,7 @@ PKG_NAME="u-boot" PKG_ARCH="arm aarch64" PKG_SITE="https://github.com/JustEnoughLinuxOS" PKG_LICENSE="GPL" -PKG_DEPENDS_TARGET="toolchain Python3 swig:host glibc rkbin openssl" +PKG_DEPENDS_TARGET="toolchain Python3 swig:host glibc rkbin openssl pyelftools:host" PKG_LONGDESC="Rockchip U-Boot is a bootloader for embedded systems." GET_HANDLER_SUPPORT="git" PKG_PATCH_DIRS+="${DEVICE}" @@ -55,6 +55,7 @@ post_patch() { } make_target() { + setup_pkg_config_host . ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/options if [ -z "${UBOOT_CONFIG}" ]; then echo "UBOOT_CONFIG must be set to build an image" @@ -75,8 +76,11 @@ make_target() { case ${PARTITION_TABLE} in gpt) echo "Building for GPT (${UBOOT_DTB})..." + export PKG_RKBIN="$(get_build_dir rkbin)" + export BL31="${PKG_BL31}" + export ROCKCHIP_TPL="${PKG_RKBIN}/${PKG_DATAFILE}" DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make mrproper - DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make ${UBOOT_CONFIG} BL31=${PKG_BL31} ${PKG_LOADER} u-boot.dtb u-boot.itb tools + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make ${UBOOT_CONFIG} ${PKG_LOADER} u-boot.dtb u-boot.img tools DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 _python_sysroot="${TOOLCHAIN}" _python_prefix=/ _python_exec_prefix=/ make HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTSTRIP="true" CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" ;; msdos) From 3d6faa68acc8c1ed3e000bf27b03b5b5844789c6 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Thu, 7 Sep 2023 21:22:59 +0000 Subject: [PATCH 006/167] PKG_SOC needs to be rk3568. --- projects/Rockchip/devices/RK3566-ML/options | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/Rockchip/devices/RK3566-ML/options b/projects/Rockchip/devices/RK3566-ML/options index 8e6da7ba1f..32d931de9c 100644 --- a/projects/Rockchip/devices/RK3566-ML/options +++ b/projects/Rockchip/devices/RK3566-ML/options @@ -35,7 +35,7 @@ DEVICE_DTB=("rk3566-anbernic-rg353ps" "rk3566-anbernic-rg353vs" "rk3566-anbernic-rg503" "rk3566-anbernic-rg353p" "rk3566-anbernic-rg353v") UBOOT_DTB="rk3566" UBOOT_CONFIG="anbernic-rgxx3-rk3566_defconfig" - PKG_SOC="rk356x" + PKG_SOC="rk3568" PKG_DATAFILE="${PKG_RKBIN}/bin/rk35/rk3566_ddr_1056MHz_v1.16.bin" PKG_LOADER="${PKG_RKBIN}/bin/rk35/rk356x_spl_v1.12.bin" PKG_BL31="${PKG_RKBIN}/bin/rk35/rk3568_bl31_v1.42.elf" From cf79c25f8d37f08549f126a9e4f9b5556d15007f Mon Sep 17 00:00:00 2001 From: fewtarius Date: Thu, 7 Sep 2023 22:24:35 +0000 Subject: [PATCH 007/167] Fix rkbin variable, and ddr firmware. --- projects/Rockchip/devices/RK3566-ML/options | 2 +- projects/Rockchip/packages/u-boot/package.mk | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/Rockchip/devices/RK3566-ML/options b/projects/Rockchip/devices/RK3566-ML/options index 32d931de9c..5cdbc28f12 100644 --- a/projects/Rockchip/devices/RK3566-ML/options +++ b/projects/Rockchip/devices/RK3566-ML/options @@ -36,7 +36,7 @@ UBOOT_DTB="rk3566" UBOOT_CONFIG="anbernic-rgxx3-rk3566_defconfig" PKG_SOC="rk3568" - PKG_DATAFILE="${PKG_RKBIN}/bin/rk35/rk3566_ddr_1056MHz_v1.16.bin" + PKG_DATAFILE="${PKG_RKBIN}/bin/rk35/rk3568_ddr_1056MHz_v1.16.bin" PKG_LOADER="${PKG_RKBIN}/bin/rk35/rk356x_spl_v1.12.bin" PKG_BL31="${PKG_RKBIN}/bin/rk35/rk3568_bl31_v1.42.elf" PKG_LOAD_ADDR="0x0a100000" diff --git a/projects/Rockchip/packages/u-boot/package.mk b/projects/Rockchip/packages/u-boot/package.mk index 1bc700628e..7610b7320b 100644 --- a/projects/Rockchip/packages/u-boot/package.mk +++ b/projects/Rockchip/packages/u-boot/package.mk @@ -56,6 +56,7 @@ post_patch() { make_target() { setup_pkg_config_host + export PKG_RKBIN="$(get_build_dir rkbin)" . ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/options if [ -z "${UBOOT_CONFIG}" ]; then echo "UBOOT_CONFIG must be set to build an image" @@ -76,9 +77,8 @@ make_target() { case ${PARTITION_TABLE} in gpt) echo "Building for GPT (${UBOOT_DTB})..." - export PKG_RKBIN="$(get_build_dir rkbin)" export BL31="${PKG_BL31}" - export ROCKCHIP_TPL="${PKG_RKBIN}/${PKG_DATAFILE}" + export ROCKCHIP_TPL="${PKG_DATAFILE}" DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make mrproper DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make ${UBOOT_CONFIG} ${PKG_LOADER} u-boot.dtb u-boot.img tools DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 _python_sysroot="${TOOLCHAIN}" _python_prefix=/ _python_exec_prefix=/ make HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTSTRIP="true" CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" From 7c53818107aab6b9671eae91ec0d5f40f489702c Mon Sep 17 00:00:00 2001 From: fewtarius Date: Thu, 7 Sep 2023 22:57:40 +0000 Subject: [PATCH 008/167] Convert RK3326 boot.ini to a template to support using boot scripts for other devices. --- projects/Rockchip/bootloader/install | 41 +++++------------- projects/Rockchip/bootloader/mkimage | 43 ++++++------------- projects/Rockchip/bootloader/release | 4 +- projects/Rockchip/bootloader/update.sh | 8 ++-- .../Rockchip/devices/RK3326/boot/boot.scr | 26 +++++++++++ projects/Rockchip/devices/RK3326/options | 3 +- 6 files changed, 58 insertions(+), 67 deletions(-) create mode 100644 projects/Rockchip/devices/RK3326/boot/boot.scr diff --git a/projects/Rockchip/bootloader/install b/projects/Rockchip/bootloader/install index 3df964d3df..d6474a2464 100755 --- a/projects/Rockchip/bootloader/install +++ b/projects/Rockchip/bootloader/install @@ -86,39 +86,20 @@ fi ;; esac - +#Create boot.scr if [ "${BOOT_INI}" == true ] then - echo "boot: create boot.ini..." - cat >${INSTALL}/usr/share/bootloader/boot.ini <"${LE_TMP}/boot.ini" </dev/null +if [ -f $SYSTEM_ROOT/usr/share/bootloader/boot.scr ]; then + echo "Updating boot.scr..." + cp -p $SYSTEM_ROOT/usr/share/bootloader/boot.scr $BOOT_ROOT/boot.scr &>/dev/null sed -e "s/@BOOT_UUID@/$BOOT_UUID/" \ -e "s/@DISK_UUID@/$DISK_UUID/" \ - -i $BOOT_ROOT/boot.ini + -i $BOOT_ROOT/boot.scr fi # update device tree diff --git a/projects/Rockchip/devices/RK3326/boot/boot.scr b/projects/Rockchip/devices/RK3326/boot/boot.scr new file mode 100644 index 0000000000..71bca1e0a8 --- /dev/null +++ b/projects/Rockchip/devices/RK3326/boot/boot.scr @@ -0,0 +1,26 @@ +odroidgoa-uboot-config + +setenv bootargs "boot=UUID=@BOOT_UUID@ disk=UUID=@DISK_UUID@ @EXTRA_CMDLINE@ + +setenv loadaddr "@PKG_LOAD_ADDR@" +setenv dtb_loadaddr "@DTB_LOAD_ADDR@" + +load mmc 1:1 ${loadaddr} KERNEL + +if test ${hwrev} = 'v11'; then + if gpio input c22; then + load mmc 1:1 ${dtb_loadaddr} rk3326-odroid-go2-v11.dtb + else + load mmc 1:1 ${dtb_loadaddr} rk3326-anbernic-rg351m.dtb + fi +elif test ${hwrev} = 'v10-go3'; then + load mmc 1:1 ${dtb_loadaddr} rk3326-odroid-go3.dtb +elif test ${hwrev} = 'v10'; then + load mmc 1:1 ${dtb_loadaddr} rk3326-odroid-go2.dtb +elif test ${hwrev} = 'rg351v'; then + load mmc 1:1 ${dtb_loadaddr} rk3326-anbernic-rg351v.dtb +elif test ${hwrev} = 'rg351mp'; then + load mmc 1:1 ${dtb_loadaddr} rk3326-anbernic-rg351mp.dtb +fi + +booti ${loadaddr} - ${dtb_loadaddr} diff --git a/projects/Rockchip/devices/RK3326/options b/projects/Rockchip/devices/RK3326/options index e07eef7694..9a593c5836 100644 --- a/projects/Rockchip/devices/RK3326/options +++ b/projects/Rockchip/devices/RK3326/options @@ -38,7 +38,8 @@ PKG_DATAFILE="$PKG_RKBIN/bin/rk33/rk3326_ddr_333MHz_v1.15.bin" PKG_LOADER="$PKG_RKBIN/bin/rk33/rk3326_miniloader_v1.28.bin" PKG_BL31="$PKG_RKBIN/bin/rk33/rk3326_bl31_v1.22.elf" - PKG_LOAD_ADDR="0x00200000" + PKG_LOAD_ADDR="0x02000000" + DTB_LOAD_ADDR="0x01f00000" BOOT_INI=true BOOT_PART="1:1" EXT_LINUX_CONF=false From 8ac079806a1183e0a5707d634b2f41ba28d436e5 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Thu, 7 Sep 2023 23:06:41 +0000 Subject: [PATCH 009/167] Add RK3566 boot.scr, thanks to @macromorgan. Fix typo in RK3326 boot.scr. --- projects/Rockchip/devices/RK3326/boot/boot.scr | 2 +- projects/Rockchip/devices/RK3566/boot/boot.scr | 6 ++++++ projects/Rockchip/devices/RK3566/options | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 projects/Rockchip/devices/RK3566/boot/boot.scr diff --git a/projects/Rockchip/devices/RK3326/boot/boot.scr b/projects/Rockchip/devices/RK3326/boot/boot.scr index 71bca1e0a8..77b83055d8 100644 --- a/projects/Rockchip/devices/RK3326/boot/boot.scr +++ b/projects/Rockchip/devices/RK3326/boot/boot.scr @@ -1,6 +1,6 @@ odroidgoa-uboot-config -setenv bootargs "boot=UUID=@BOOT_UUID@ disk=UUID=@DISK_UUID@ @EXTRA_CMDLINE@ +setenv bootargs "boot=UUID=@BOOT_UUID@ disk=UUID=@DISK_UUID@ @EXTRA_CMDLINE@" setenv loadaddr "@PKG_LOAD_ADDR@" setenv dtb_loadaddr "@DTB_LOAD_ADDR@" diff --git a/projects/Rockchip/devices/RK3566/boot/boot.scr b/projects/Rockchip/devices/RK3566/boot/boot.scr new file mode 100644 index 0000000000..0abe31d3c7 --- /dev/null +++ b/projects/Rockchip/devices/RK3566/boot/boot.scr @@ -0,0 +1,6 @@ +setenv bootargs "boot=UUID=@BOOT_UUID@ disk=UUID=@DISK_UUID@ @EXTRA_CMDLINE@" +setenv kernel_comp_addr_r 0x03000000 +setenv kernel_comp_size 0x04000000 +load mmc 1 ${fdt_addr_r} ${fdtfile} +load mmc 1 ${kernel_addr_r} KERNEL +booti ${kernel_addr_r} - ${fdt_addr_r} diff --git a/projects/Rockchip/devices/RK3566/options b/projects/Rockchip/devices/RK3566/options index fdd5221b66..9ed5c3ee64 100644 --- a/projects/Rockchip/devices/RK3566/options +++ b/projects/Rockchip/devices/RK3566/options @@ -64,7 +64,7 @@ WINDOWMANAGER="no" # kernel serial console - EXTRA_CMDLINE="quiet rootwait console=ttyUSB0,1500000 console=tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20 video=HDMI-A-1:1280x720@60" + EXTRA_CMDLINE="quiet rootwait console=ttyS2,1500000 console=/dev/tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20" # additional packages to install # ADDITIONAL_PACKAGES="" From 026953c1752fb62d2e5ae1cb9e61d4be81fd6c07 Mon Sep 17 00:00:00 2001 From: mason Date: Thu, 7 Sep 2023 17:02:55 +0000 Subject: [PATCH 010/167] Bump kernel to 6.1.52 and Mesa to 23.1.7 --- packages/graphics/mesa/package.mk | 4 ++-- projects/Amlogic/packages/linux/package.mk | 2 +- projects/Rockchip/packages/linux/package.mk | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/graphics/mesa/package.mk b/packages/graphics/mesa/package.mk index 40daaf0aec..8ba1b3f51e 100644 --- a/packages/graphics/mesa/package.mk +++ b/packages/graphics/mesa/package.mk @@ -22,8 +22,8 @@ case ${DEVICE} in PKG_URL="https://mesa.freedesktop.org/archive/mesa-${PKG_VERSION}.tar.xz" ;; *) - PKG_VERSION="23.1.6" - PKG_SHA256="f4c7fd8e7b472a88da7d83e9a48f6f3bd17d4ea2cc4386f7231b796f3964157a" + PKG_VERSION="23.1.7" + PKG_SHA256="409641eadf0ed1c7794797a6f5a0b0195b5580b282166e5ec5629c6bcda6acd3" PKG_SITE="http://www.mesa3d.org/" PKG_URL="https://mesa.freedesktop.org/archive/mesa-${PKG_VERSION}.tar.xz" ;; diff --git a/projects/Amlogic/packages/linux/package.mk b/projects/Amlogic/packages/linux/package.mk index 64f53f387d..7df1474c3e 100644 --- a/projects/Amlogic/packages/linux/package.mk +++ b/projects/Amlogic/packages/linux/package.mk @@ -19,7 +19,7 @@ PKG_PATCH_DIRS+="${DEVICE}" case ${DEVICE} in S922X*) - PKG_VERSION="6.1.51" + PKG_VERSION="6.1.52" PKG_URL="https://www.kernel.org/pub/linux/kernel/v6.x/${PKG_NAME}-${PKG_VERSION}.tar.xz" ;; esac diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index 55b6b445f2..b262c0fe4d 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -41,7 +41,7 @@ case ${DEVICE} in PKG_GIT_CLONE_BRANCH="main" ;; RK33*) - PKG_VERSION="6.1.51" + PKG_VERSION="6.1.52" PKG_URL="https://www.kernel.org/pub/linux/kernel/v6.x/${PKG_NAME}-${PKG_VERSION}.tar.xz" ;; esac From dd73d0ce1e1ab09b94ba089ac0f2b97bccad9932 Mon Sep 17 00:00:00 2001 From: mason Date: Thu, 7 Sep 2023 21:08:45 +0000 Subject: [PATCH 011/167] Enable Vita3K support on AMD64 builds --- config/emulators/psvita.conf | 10 +++++++++ .../AMD64/SUPPORTED_EMULATORS_AND_CORES.md | 1 + .../emulators/standalone/vita3k-sa/package.mk | 6 ++++++ .../vita3k-sa/patches/001-base-path.patch | 2 +- .../vita3k-sa/scripts/start_vita3k.sh | 21 +++++++++++++++++++ packages/virtual/emulators/package.mk | 10 ++++++++- 6 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 config/emulators/psvita.conf create mode 100644 packages/emulators/standalone/vita3k-sa/scripts/start_vita3k.sh diff --git a/config/emulators/psvita.conf b/config/emulators/psvita.conf new file mode 100644 index 0000000000..fd33ea23a5 --- /dev/null +++ b/config/emulators/psvita.conf @@ -0,0 +1,10 @@ +SYSTEM_NAME="psvita" +SYSTEM_FULLNAME="PlayStation Vita" +SYSTEM_MANUFACTURER="Sony" +SYSTEM_RELEASE="2011" +SYSTEM_HARDWARE="portable" +SYSTEM_PATH="/usr/config/vita3k/launcher/" +SYSTEM_EXTENSION=".sh" +SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" +SYSTEM_PLATFORM="psvita" +SYSTEM_THEME="psvita" diff --git a/documentation/PER_DEVICE_DOCUMENTATION/AMD64/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/AMD64/SUPPORTED_EMULATORS_AND_CORES.md index d39514bbc9..7be43ea2a0 100644 --- a/documentation/PER_DEVICE_DOCUMENTATION/AMD64/SUPPORTED_EMULATORS_AND_CORES.md +++ b/documentation/PER_DEVICE_DOCUMENTATION/AMD64/SUPPORTED_EMULATORS_AND_CORES.md @@ -114,6 +114,7 @@ This document describes all available systems emulators and cores available for |Sony|PlayStation 2 (ps2)|2000|`ps2`|.iso .mdf .nrg .bin .img .dump .gz .cso .chd|**retroarch:** pcsx2 (default)
**pcsx2:** pcsx2-sa
| |Sony|PlayStation 3 (ps3)|2006|`ps3`|.ps3 .bin|**rpcs3:** rpcs3-sa (default)
| |Sony|PlayStation Portable (psp)|2004|`psp`|.iso .cso .pbp|**ppsspp:** ppsspp-sa (default)
**retroarch:** ppsspp
| +|Sony|PlayStation Vita (psvita)|2011|`launcher`|.sh|**vita3k:** vita3k-sa (default)
| |Sony|PSP Minis (pspminis)|2004|`pspminis`|.iso .cso .pbp|**ppsspp:** ppsspp-sa (default)
**retroarch:** ppsspp
| |Sun Microsystems|J2ME (j2me)|2002|`j2me`|.jar|**retroarch:** freej2me (default)
| |Various|EasyRPG (easyrpg)|2003|`easyrpg`|.zip .easyrpg .ldb|**retroarch:** easyrpg (default)
| diff --git a/packages/emulators/standalone/vita3k-sa/package.mk b/packages/emulators/standalone/vita3k-sa/package.mk index 380c437f5a..4e2407ea38 100644 --- a/packages/emulators/standalone/vita3k-sa/package.mk +++ b/packages/emulators/standalone/vita3k-sa/package.mk @@ -42,4 +42,10 @@ makeinstall_target() { cp -rf ${PKG_BUILD}/external/bin/Vita3K ${INSTALL}/usr/bin/ cp -rf ${PKG_BUILD}/external/bin/* ${INSTALL}/usr/config/vita3k/ rm -rf ${INSTALL}/usr/config/vita3k/Vita3K + cp ${PKG_DIR}/scripts/* ${INSTALL}/usr/bin + chmod 0755 ${INSTALL}/usr/bin/* + + mkdir -p ${INSTALL}/usr/config/vita3k/launcher + cp ${PKG_DIR}/scripts/start_vita3k.sh ${INSTALL}/usr/config/vita3k/launcher/Start\ Vita3K.sh + chmod 0755 ${INSTALL}/usr/config/vita3k/launcher/Start\ Vita3K.sh } diff --git a/packages/emulators/standalone/vita3k-sa/patches/001-base-path.patch b/packages/emulators/standalone/vita3k-sa/patches/001-base-path.patch index 4756a9aa29..1b0777c25d 100644 --- a/packages/emulators/standalone/vita3k-sa/patches/001-base-path.patch +++ b/packages/emulators/standalone/vita3k-sa/patches/001-base-path.patch @@ -9,7 +9,7 @@ index 4439ad9b6e..c26b84ff82 100644 - root_paths.set_base_path(string_utils::utf_to_wide(SDL_GetBasePath())); - root_paths.set_pref_path(string_utils::utf_to_wide(SDL_GetPrefPath(org_name, app_name))); + root_paths.set_base_path(string_utils::utf_to_wide("/storage/.config/vita3k/")); -+ root_paths.set_pref_path(string_utils::utf_to_wide("/storage/.config/vita3k/saves/")); ++ root_paths.set_pref_path(string_utils::utf_to_wide("/storage/psvita/vita3k/")); // Create default preference path for safety if (!fs::exists(root_paths.get_pref_path())) diff --git a/packages/emulators/standalone/vita3k-sa/scripts/start_vita3k.sh b/packages/emulators/standalone/vita3k-sa/scripts/start_vita3k.sh new file mode 100644 index 0000000000..8e35f2a492 --- /dev/null +++ b/packages/emulators/standalone/vita3k-sa/scripts/start_vita3k.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2023-present BrooksyTech (https://github.com/brooksytech) + +. /etc/profile +jslisten set "-9 Vita3K" + +#Check if vita3k folder exists in /storage/.config/vita3k +if [ ! -d "/storage/.config/vita3k" ]; then + mkdir -p "/storage/.config/vita3k" + cp -r "/usr/config/vita3k" "/storage/.config/" +fi + +#Check if vita3k folder exists in /storage/roms/psvita +if [ ! -d "/storage/roms/psvita/vita3k" ]; then + mkdir -p "/storage/roms/psvita/vita3k" +fi + +#Start Vita3K +/usr/bin/Vita3K diff --git a/packages/virtual/emulators/package.mk b/packages/virtual/emulators/package.mk index 67ae28cbc8..f061372fc9 100644 --- a/packages/virtual/emulators/package.mk +++ b/packages/virtual/emulators/package.mk @@ -33,7 +33,7 @@ case "${DEVICE}" in AMD64) [ "${ENABLE_32BIT}" == "true" ] && EMUS_32BIT="lutris-wine" PKG_EMUS+=" amiberry cemu-sa citra-sa dolphin-sa duckstation-sa melonds-sa minivmacsa mupen64plus-sa \ - nanoboyadvance-sa pcsx2-sa primehack rpcs3-sa ryujinx-sa scummvmsa xemu-sa yuzu-sa" + nanoboyadvance-sa pcsx2-sa primehack rpcs3-sa ryujinx-sa scummvmsa vita3k-sa xemu-sa yuzu-sa" LIBRETRO_CORES+=" beetle-psx-lr bsnes-hd-lr citra-lr desmume-lr dolphin-lr flycast-lr lrps2-lr mame-lr minivmac-lr \ play-lr" ;; @@ -753,6 +753,14 @@ makeinstall_target() { add_emu_core pspminis retroarch ppsspp false add_es_system pspminis + ### Sony Playstation Vita + case ${TARGET_ARCH} in + x86_64) + add_emu_core psvita vita3k vita3k-sa true + add_es_system psvita + ;; + esac + ### Nintendo Pokemon Mini add_emu_core pokemini retroarch pokemini true add_es_system pokemini From a10901b48430fb56b31a4d188dfb163964a907a3 Mon Sep 17 00:00:00 2001 From: xerootg Date: Sat, 30 Sep 2023 23:15:36 +0000 Subject: [PATCH 012/167] boots --- packages/compress/unzip/package.mk | 2 +- packages/devel/gmp/package.mk | 2 +- .../sources/RK3566-ML/TATE-MAME 2003-Plus.rmp | 27 + .../RK3566-ML/retroarch-core-options.cfg | 153 + .../retroarch/sources/RK3566-ML/retroarch.cfg | 822 ++++ .../RK3566-ML/retroarch32bit-append.cfg | 2 + .../RK3566-ML/retroarch64bit-append.cfg | 2 + projects/Rockchip/bootloader/mkimage | 1 + .../RK3566-ML/linux/linux.aarch64.conf | 4069 +++++++++++------ projects/Rockchip/devices/RK3566-ML/options | 3 +- projects/Rockchip/packages/u-boot/package.mk | 7 +- 11 files changed, 3719 insertions(+), 1371 deletions(-) create mode 100644 packages/emulators/standalone/retroarch/sources/RK3566-ML/TATE-MAME 2003-Plus.rmp create mode 100644 packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch-core-options.cfg create mode 100644 packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch.cfg create mode 100644 packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch32bit-append.cfg create mode 100644 packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch64bit-append.cfg diff --git a/packages/compress/unzip/package.mk b/packages/compress/unzip/package.mk index 2112d9ec95..1fb8258952 100644 --- a/packages/compress/unzip/package.mk +++ b/packages/compress/unzip/package.mk @@ -6,7 +6,7 @@ PKG_VERSION="60" PKG_SHA256="036d96991646d0449ed0aa952e4fbe21b476ce994abc276e49d30e686708bd37" PKG_LICENSE="OSS" PKG_SITE="http://www.info-zip.org/pub/infozip/" -PKG_URL="http://ftp.uk.i-scream.org/sites/www.ibiblio.org/gentoo/distfiles/${PKG_NAME}${PKG_VERSION}.tar.gz" +PKG_URL="https://sourceforge.net/projects/infozip/files/UnZip%206.x%20(latest)/UnZip%206.0/unzip60.tar.gz" PKG_DEPENDS_TARGET="toolchain" PKG_LONGDESC="UnZip is an extraction utility for archives compressed in .zip format." PKG_TOOLCHAIN="manual" diff --git a/packages/devel/gmp/package.mk b/packages/devel/gmp/package.mk index d5be433231..e2ce1f083a 100644 --- a/packages/devel/gmp/package.mk +++ b/packages/devel/gmp/package.mk @@ -6,7 +6,7 @@ PKG_NAME="gmp" PKG_VERSION="6.3.0" PKG_LICENSE="LGPLv3+" PKG_SITE="http://gmplib.org/" -PKG_URL="https://gmplib.org/download/gmp/${PKG_NAME}-${PKG_VERSION}.tar.xz" +PKG_URL="https://ftp.gnu.org/gnu/gmp/${PKG_NAME}-${PKG_VERSION}.tar.xz" PKG_DEPENDS_HOST="ccache:host m4:host" PKG_DEPENDS_TARGET="toolchain" PKG_LONGDESC="A library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating point numbers." diff --git a/packages/emulators/standalone/retroarch/sources/RK3566-ML/TATE-MAME 2003-Plus.rmp b/packages/emulators/standalone/retroarch/sources/RK3566-ML/TATE-MAME 2003-Plus.rmp new file mode 100644 index 0000000000..366e47afad --- /dev/null +++ b/packages/emulators/standalone/retroarch/sources/RK3566-ML/TATE-MAME 2003-Plus.rmp @@ -0,0 +1,27 @@ +input_libretro_device_p1 = "1" +input_libretro_device_p2 = "1" +input_libretro_device_p3 = "1" +input_libretro_device_p4 = "1" +input_libretro_device_p5 = "1" +input_player1_analog_dpad_mode = "1" +input_player1_btn_down = "6" +input_player1_btn_left = "4" +input_player1_btn_right = "5" +input_player1_btn_up = "7" +input_player1_stk_l_x+ = "5" +input_player1_stk_l_x- = "4" +input_player1_stk_l_y+ = "6" +input_player1_stk_l_y- = "7" +input_player1_stk_r_x+ = "5" +input_player1_stk_r_x- = "4" +input_player1_stk_r_y+ = "6" +input_player1_stk_r_y- = "7" +input_player2_analog_dpad_mode = "0" +input_player3_analog_dpad_mode = "0" +input_player4_analog_dpad_mode = "0" +input_player5_analog_dpad_mode = "0" +input_remap_port_p1 = "0" +input_remap_port_p2 = "1" +input_remap_port_p3 = "2" +input_remap_port_p4 = "3" +input_remap_port_p5 = "4" diff --git a/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch-core-options.cfg b/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch-core-options.cfg new file mode 100644 index 0000000000..38e4ab0646 --- /dev/null +++ b/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch-core-options.cfg @@ -0,0 +1,153 @@ +mupen64plus-alt-map = "False" +mupen64plus-aspect = "4:3" +mupen64plus-astick-deadzone = "15" +mupen64plus-astick-sensitivity = "100" +mupen64plus-BackgroundMode = "Stripped" +mupen64plus-BilinearMode = "standard" +mupen64plus-CorrectTexrectCoords = "Auto" +mupen64plus-CountPerOp = "0" +mupen64plus-CountPerOpDenomPot = "0" +mupen64plus-cpucore = "dynamic_recompiler" +mupen64plus-d-cbutton = "C3" +mupen64plus-DitheringPattern = "True" +mupen64plus-DitheringQuantization = "True" +mupen64plus-EnableCopyAuxToRDRAM = "True" +mupen64plus-EnableCopyColorToRDRAM = "Async" +mupen64plus-EnableCopyDepthToRDRAM = "Software" +mupen64plus-EnableEnhancedHighResStorage = "False" +mupen64plus-EnableEnhancedTextureStorage = "False" +mupen64plus-EnableFBEmulation = "True" +mupen64plus-EnableFragmentDepthWrite = "True" +mupen64plus-EnableHiResAltCRC = "False" +mupen64plus-EnableHWLighting = "False" +mupen64plus-EnableInaccurateTextureCoordinates = "False" +mupen64plus-EnableLegacyBlending = "False" +mupen64plus-EnableLODEmulation = "True" +mupen64plus-EnableNativeResFactor = "1" +mupen64plus-EnableNativeResTexrects = "Optimized" +mupen64plus-EnableOverscan = "Enabled" +mupen64plus-EnableTexCoordBounds = "False" +mupen64plus-EnableTextureCache = "True" +mupen64plus-ForceDisableExtraMem = "False" +mupen64plus-FrameDuping = "True" +mupen64plus-Framerate = "Original" +mupen64plus-FXAA = "0" +mupen64plus-GLideN64IniBehaviour = "late" +mupen64plus-HybridFilter = "True" +mupen64plus-IgnoreTLBExceptions = "False" +mupen64plus-l-cbutton = "C2" +mupen64plus-MaxHiResTxVramLimit = "0" +mupen64plus-MaxTxCacheSize = "8000" +mupen64plus-MultiSampling = "0" +mupen64plus-OverscanBottom = "0" +mupen64plus-OverscanLeft = "0" +mupen64plus-OverscanRight = "0" +mupen64plus-OverscanTop = "0" +mupen64plus-pak1 = "memory" +mupen64plus-pak2 = "none" +mupen64plus-pak3 = "none" +mupen64plus-pak4 = "none" +mupen64plus-r-cbutton = "C1" +mupen64plus-rdp-plugin = "gliden64" +mupen64plus-RDRAMImageDitheringMode = "BlueNoise" +mupen64plus-rsp-plugin = "hle" +mupen64plus-ThreadedRenderer = "True" +mupen64plus-txCacheCompression = "True" +mupen64plus-txEnhancementMode = "None" +mupen64plus-txFilterIgnoreBG = "True" +mupen64plus-txFilterMode = "None" +mupen64plus-txHiresEnable = "False" +mupen64plus-txHiresFullAlphaChannel = "False" +mupen64plus-u-cbutton = "C4" +mupen64plus-virefresh = "Auto" +pcsx_rearmed_analog_axis_modifier = "circle" +pcsx_rearmed_async_cd = "sync" +pcsx_rearmed_bios = "auto" +pcsx_rearmed_display_internal_fps = "disabled" +pcsx_rearmed_dithering = "enabled" +pcsx_rearmed_drc = "enabled" +pcsx_rearmed_duping_enable = "enabled" +pcsx_rearmed_frameskip_type = "disabled" +pcsx_rearmed_gteregsunneeded = "disabled" +pcsx_rearmed_gunconadjustratiox = "1" +pcsx_rearmed_gunconadjustratioy = "1" +pcsx_rearmed_gunconadjustx = "0" +pcsx_rearmed_gunconadjusty = "0" +pcsx_rearmed_idiablofix = "disabled" +pcsx_rearmed_input_sensitivity = "1.00" +pcsx_rearmed_inuyasha_fix = "disabled" +pcsx_rearmed_memcard2 = "disabled" +pcsx_rearmed_multitap1 = "auto" +pcsx_rearmed_multitap2 = "auto" +pcsx_rearmed_negcon_deadzone = "0" +pcsx_rearmed_negcon_response = "linear" +pcsx_rearmed_neon_enhancement_enable = "disabled" +pcsx_rearmed_neon_enhancement_no_main = "disabled" +pcsx_rearmed_neon_interlace_enable = "disabled" +pcsx_rearmed_nocdaudio = "enabled" +pcsx_rearmed_nogteflags = "disabled" +pcsx_rearmed_nosmccheck = "disabled" +pcsx_rearmed_noxadecoding = "enabled" +pcsx_rearmed_pad1type = "standard" +pcsx_rearmed_pad2type = "standard" +pcsx_rearmed_pad3type = "none" +pcsx_rearmed_pad4type = "none" +pcsx_rearmed_pad5type = "none" +pcsx_rearmed_pad6type = "none" +pcsx_rearmed_pad7type = "none" +pcsx_rearmed_pad8type = "none" +pcsx_rearmed_pe2_fix = "disabled" +pcsx_rearmed_psxclock = "57" +pcsx_rearmed_region = "auto" +pcsx_rearmed_show_bios_bootlogo = "disabled" +pcsx_rearmed_show_other_input_settings = "disabled" +pcsx_rearmed_spu_interpolation = "simple" +pcsx_rearmed_spu_reverb = "enabled" +pcsx_rearmed_spuirq = "disabled" +pcsx_rearmed_vibration = "enabled" +gambatte_gb_colorization = "disabled" +gambatte_gb_internal_palette = "" +mame2003-plus_analog = "digital" +mame2003-plus_art_resolution = "1" +mame2003-plus_brightness = "1.0" +mame2003-plus_cheat_input_ports = "disabled" +mame2003-plus_core_save_subfolder = "enabled" +mame2003-plus_core_sys_subfolder = "enabled" +mame2003-plus_dcs_speedhack = "enabled" +mame2003-plus_deadzone = "20" +mame2003-plus_digital_joy_centering = "enabled" +mame2003-plus_display_artwork = "enabled" +mame2003-plus_display_setup = "disabled" +mame2003-plus_four_way_emulation = "disabled" +mame2003-plus_frameskip = "0" +mame2003-plus_gamma = "1.0" +mame2003-plus_input_interface = "retropad" +mame2003-plus_machine_timing = "enabled" +mame2003-plus_mame_remapping = "enabled" +mame2003-plus_mouse_device = "mouse" +mame2003-plus_sample_rate = "48000" +mame2003-plus_skip_disclaimer = "disabled" +mame2003-plus_skip_warnings = "disabled" +flycast_internal_resolution = "640x480" +flycast_alpha_sorting = "per-strip (fast, least accurate)" +flycast_enable_dsp = "disabled" +flycast_threaded_rendering = "enabled" +flycast_anisotropic_filtering = "off" +flycast_synchronous_rendering = "enabled" +flycast_enable_rtt = "disabled" +flycast_enable_rttb = "disabled" +flycast_delay_frame_swapping = "disabled" +flycast_div_matching = "auto" +flycast_texupscale = "off" +flycast_auto_skip_frame = "normal" +opera_swi_hle = "enabled" +opera_dsp_threaded = "enabled" +opera_madam_matrix_engine = "software" +puae_deadzone = "25" +melonds_screen_layout = "Left/Right" +melonds_swapscreen_mode = "Toggle" +melonds_threaded_renderer = "enabled" +melonds_touch_mode = "Joystick" +duckstation_GPU.Renderer = "Software" +virtualjaguar_bios = "enabled" +virtualjaguar_usefastblitter = "enabled" diff --git a/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch.cfg b/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch.cfg new file mode 100644 index 0000000000..b04b9b3269 --- /dev/null +++ b/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch.cfg @@ -0,0 +1,822 @@ +accessibility_enable = "false" +accessibility_narrator_speech_speed = "5" +ai_service_enable = "true" +ai_service_mode = "1" +ai_service_pause = "false" +ai_service_source_lang = "0" +ai_service_target_lang = "0" +ai_service_url = "http://localhost:4404/" +all_users_control_menu = "true" +apply_cheats_after_load = "false" +apply_cheats_after_toggle = "false" +aspect_ratio_index = "22" +assets_directory = "/tmp/assets" +audio_block_frames = "0" +audio_device = "" +audio_driver = "pulse" +audio_dsp_plugin = "" +audio_enable_menu_bgm = "false" +audio_enable_menu_cancel = "false" +audio_enable_menu = "false" +audio_enable_menu_notice = "false" +audio_enable_menu_ok = "false" +audio_enable = "true" +audio_fastforward_mute = "false" +audio_filter_dir = "~/.config/retroarch/filters/audio" +audio_latency = "32" +audio_max_timing_skew = "0.049999" +audio_mixer_mute_enable = "false" +audio_mixer_volume = "0.000000" +audio_mute_enable = "false" +audio_out_rate = "48000" +audio_rate_control_delta = "0.004999" +audio_rate_control = "true" +audio_resampler_quality = "2" +audio_resampler = "sinc" +audio_sync = "true" +audio_volume = "0.000000" +auto_overrides_enable = "true" +auto_remaps_enable = "true" +autosave_interval = "10" +auto_screenshot_filename = "true" +auto_shaders_enable = "true" +block_sram_overwrite = "false" +bluetooth_driver = "null" +builtin_imageviewer_enable = "true" +builtin_mediaplayer_enable = "true" +bundle_assets_dst_path = "" +bundle_assets_dst_path_subdir = "" +bundle_assets_extract_enable = "false" +bundle_assets_extract_last_version = "0" +bundle_assets_extract_version_current = "0" +bundle_assets_src_path = "" +cache_directory = "/tmp/cache" +camera_allow = "false" +camera_device = "" +camera_driver = "null" +cheat_database_path = "/tmp/database/cht" +check_firmware_before_loading = "false" +cheevos_auto_screenshot = "false" +cheevos_badges_enable = "false" +cheevos_challenge_indicators = "true" +cheevos_enable = "false" +cheevos_hardcore_mode_enable = "false" +cheevos_leaderboards_enable = "" +cheevos_password = "" +cheevos_richpresence_enable = "true" +cheevos_start_active = "false" +cheevos_test_unofficial = "false" +cheevos_token = "" +cheevos_unlock_sound_enable = "false" +cheevos_username = "" +cheevos_verbose_enable = "false" +config_save_on_exit = "true" +content_database_path = "/tmp/database/rdb" +content_favorites_directory = "default" +content_favorites_path = "~/.config/retroarch/content_favorites.lpl" +content_favorites_size = "200" +content_history_dir = "" +content_history_directory = "default" +content_history_path = "~/.config/retroarch/content_history.lpl" +content_history_size = "200" +content_image_history_directory = "default" +content_image_history_path = "~/.config/retroarch/content_image_history.lpl" +content_music_history_directory = "default" +content_music_history_path = "~/.config/retroarch/content_music_history.lpl" +content_runtime_log_aggregate = "false" +content_runtime_log = "true" +content_show_add_entry = "2" +content_show_add = "true" +content_show_explore = "true" +content_show_favorites = "true" +content_show_history = "true" +content_show_images = "false" +content_show_music = "false" +content_show_netplay = "true" +content_show_playlists = "true" +content_show_settings_password = "" +content_show_settings = "true" +content_show_video = "false" +content_video_directory = "default" +content_video_history_path = "~/.config/retroarch/content_video_history.lpl" +core_assets_directory = "~/roms/downloads" +core_info_cache_enable = "true" +core_option_category_enable = "true" +core_options_path = "" +core_set_supports_no_game_enable = "true" +core_updater_auto_backup = "false" +core_updater_auto_backup_history_size = "1" +core_updater_auto_extract_archive = "true" +core_updater_buildbot_assets_url = "http://buildbot.libretro.com/assets/" +core_updater_buildbot_cores_url = "" +core_updater_buildbot_url = "http://buildbot.libretro.com/nightly/linux/armhf/latest/" +core_updater_show_experimental_cores = "false" +cpu_main_gov = "performance" +cpu_max_freq = "-1" +cpu_menu_gov = "interactive" +cpu_min_freq = "1" +cpu_scaling_mode = "0" +crt_switch_center_adjust = "0" +crt_switch_hires_menu = "false" +crt_switch_porch_adjust = "0" +crt_switch_resolution = "0" +crt_switch_resolution_super = "2560" +crt_switch_resolution_use_custom_refresh_rate = "false" +crt_switch_timings = "" +crt_video_refresh_rate = "60.000000" +current_resolution_id = "0" +cursor_directory = "~/.config/retroarch/database/cursors" +desktop_menu_enable = "true" +discord_allow = "false" +discord_app_id = "475456035851599874" +driver_switch_enable = "true" +dynamic_wallpapers_directory = "default" +emuelec_exit_to_kodi = "false" +enable_device_vibration = "true" +facebook_stream_key = "" +fastforward_ratio = "0.000000" +filter_by_current_core = "false" +flicker_filter_enable = "false" +flicker_filter_index = "0" +fps_show = "false" +fps_update_interval = "256" +framecount_show = "false" +frame_time_counter_reset_after_fastforwarding = "false" +frame_time_counter_reset_after_load_state = "false" +frame_time_counter_reset_after_save_state = "false" +frontend_log_level = "1" +game_specific_options = "true" +gamma_correction = "0" +global_core_options = "false" +history_list_enable = "true" +input_ai_service_axis = "nul" +input_ai_service_btn = "nul" +input_ai_service_mbtn = "nul" +input_ai_service = "nul" +input_analog_deadzone = "0.000000" +input_analog_sensitivity = "1.500000" +input_audio_mute_axis = "nul" +input_audio_mute_btn = "nul" +input_audio_mute = "f9" +input_audio_mute_mbtn = "nul" +input_autodetect_enable = "true" +input_auto_game_focus = "0" +input_auto_mouse_grab = "false" +input_axis_threshold = "0.500000" +input_bind_hold = "2" +input_bind_timeout = "5" +input_cheat_index_minus_axis = "nul" +input_cheat_index_minus_btn = "nul" +input_cheat_index_minus_mbtn = "nul" +input_cheat_index_minus = "t" +input_cheat_index_plus_axis = "nul" +input_cheat_index_plus_btn = "nul" +input_cheat_index_plus_mbtn = "nul" +input_cheat_index_plus = "y" +input_cheat_toggle_axis = "nul" +input_cheat_toggle_btn = "nul" +input_cheat_toggle_mbtn = "nul" +input_cheat_toggle = "u" +input_close_content_axis = "nul" +input_close_content_btn = "nul" +input_close_content_mbtn = "nul" +input_close_content = "nul" +input_descriptor_hide_unbound = "false" +input_descriptor_label_show = "true" +input_desktop_menu_toggle_axis = "nul" +input_desktop_menu_toggle_btn = "nul" +input_desktop_menu_toggle = "f5" +input_desktop_menu_toggle_mbtn = "nul" +input_device_p1 = "0" +input_device_p10 = "0" +input_device_p11 = "0" +input_device_p12 = "0" +input_device_p13 = "0" +input_device_p14 = "0" +input_device_p15 = "0" +input_device_p16 = "0" +input_device_p2 = "0" +input_device_p3 = "0" +input_device_p4 = "0" +input_device_p5 = "0" +input_device_p6 = "0" +input_device_p7 = "0" +input_device_p8 = "0" +input_device_p9 = "0" +input_disk_eject_toggle_axis = "nul" +input_disk_eject_toggle_btn = "nul" +input_disk_eject_toggle_mbtn = "nul" +input_disk_eject_toggle = "nul" +input_disk_next_axis = "nul" +input_disk_next_btn = "nul" +input_disk_next_mbtn = "nul" +input_disk_next = "nul" +input_disk_prev_axis = "nul" +input_disk_prev_btn = "nul" +input_disk_prev_mbtn = "nul" +input_disk_prev = "nul" +input_driver = "udev" +input_duty_cycle = "3" +input_enable_hotkey_axis = "nul" +input_enable_hotkey_btn = "8" +input_enable_hotkey_mbtn = "nul" +input_enable_hotkey = "nul" +input_exit_emulator_axis = "nul" +input_exit_emulator_btn = "9" +input_exit_emulator = "escape" +input_exit_emulator_mbtn = "nul" +input_fps_toggle_axis = "nul" +input_fps_toggle_btn = "3" +input_fps_toggle = "f3" +input_fps_toggle_mbtn = "nul" +input_frame_advance_axis = "nul" +input_frame_advance_btn = "nul" +input_frame_advance = "k" +input_frame_advance_mbtn = "nul" +input_game_focus_toggle_axis = "nul" +input_game_focus_toggle_btn = "nul" +input_game_focus_toggle_mbtn = "nul" +input_game_focus_toggle = "scroll_lock" +input_grab_mouse_toggle_axis = "nul" +input_grab_mouse_toggle_btn = "nul" +input_grab_mouse_toggle = "f11" +input_grab_mouse_toggle_mbtn = "nul" +input_hold_fast_forward_axis = "nul" +input_hold_fast_forward_btn = "nul" +input_hold_fast_forward = "l" +input_hold_fast_forward_mbtn = "nul" +input_hold_slowmotion_axis = "nul" +input_hold_slowmotion_btn = "nul" +input_hold_slowmotion = "e" +input_hold_slowmotion_mbtn = "nul" +input_hotkey_block_delay = "5" +input_joypad_driver = "udev" +input_keyboard_layout = "" +input_libretro_device_p10 = "1" +input_libretro_device_p1 = "1" +input_libretro_device_p11 = "1" +input_libretro_device_p12 = "1" +input_libretro_device_p13 = "1" +input_libretro_device_p14 = "1" +input_libretro_device_p15 = "1" +input_libretro_device_p16 = "1" +input_libretro_device_p2 = "1" +input_libretro_device_p3 = "1" +input_libretro_device_p4 = "1" +input_libretro_device_p5 = "1" +input_libretro_device_p6 = "1" +input_libretro_device_p7 = "1" +input_libretro_device_p8 = "1" +input_libretro_device_p9 = "1" +input_load_state_axis = "nul" +input_load_state_btn = "4" +input_load_state = "f4" +input_load_state_mbtn = "nul" +input_max_users = "5" +input_menu_toggle_axis = "nul" +input_menu_toggle_btn = "2" +input_menu_toggle = "f1" +input_menu_toggle_gamepad_combo = "2" +input_menu_toggle_mbtn = "nul" +input_movie_record_toggle_axis = "nul" +input_movie_record_toggle_btn = "nul" +input_movie_record_toggle_mbtn = "nul" +input_movie_record_toggle = "o" +input_netplay_game_watch_axis = "nul" +input_netplay_game_watch_btn = "nul" +input_netplay_game_watch = "i" +input_netplay_game_watch_mbtn = "nul" +input_netplay_host_toggle_axis = "nul" +input_netplay_host_toggle_btn = "nul" +input_netplay_host_toggle_mbtn = "nul" +input_netplay_host_toggle = "nul" +input_nowinkey_enable = "false" +input_osk_toggle_axis = "nul" +input_osk_toggle_btn = "nul" +input_osk_toggle = "f12" +input_osk_toggle_mbtn = "nul" +input_overlay = "" +input_overlay_aspect_adjust_landscape = "0.000000" +input_overlay_aspect_adjust_portrait = "0.000000" +input_overlay_auto_rotate = "false" +input_overlay_auto_scale = "false" +input_overlay_enable_autopreferred = "true" +input_overlay_enable = "false" +input_overlay_hide_in_menu = "true" +input_overlay_hide_when_gamepad_connected = "false" +input_overlay_next_axis = "nul" +input_overlay_next_btn = "nul" +input_overlay_next_mbtn = "nul" +input_overlay_next = "nul" +input_overlay_opacity = "0.700000" +input_overlay_scale_landscape = "1.000000" +input_overlay_scale_portrait = "1.000000" +input_overlay_show_inputs = "2" +input_overlay_show_inputs_port = "0" +input_overlay_show_mouse_cursor = "true" +input_overlay_x_offset_landscape = "0.000000" +input_overlay_x_offset_portrait = "0.000000" +input_overlay_x_separation_landscape = "0.000000" +input_overlay_x_separation_portrait = "0.000000" +input_overlay_y_offset_landscape = "0.000000" +input_overlay_y_offset_portrait = "0.000000" +input_overlay_y_separation_landscape = "0.000000" +input_overlay_y_separation_portrait = "0.000000" +input_pause_toggle_axis = "nul" +input_pause_toggle_btn = "nul" +input_pause_toggle_mbtn = "nul" +input_pause_toggle = "p" +input_poll_type_behavior = "2" +input_quit_gamepad_combo = "0" +input_recording_toggle_axis = "nul" +input_recording_toggle_btn = "nul" +input_recording_toggle_mbtn = "nul" +input_recording_toggle = "nul" +input_remap_binds_enable = "true" +input_remapping_directory = "~/remappings" +input_reset_axis = "nul" +input_reset_btn = "nul" +input_reset = "h" +input_reset_mbtn = "nul" +input_rewind_axis = "nul" +input_rewind_btn = "6" +input_rewind_mbtn = "nul" +input_rewind = "r" +input_rumble_gain = "100" +input_runahead_toggle_axis = "nul" +input_runahead_toggle_btn = "nul" +input_runahead_toggle_mbtn = "nul" +input_runahead_toggle = "nul" +input_save_state_axis = "nul" +input_save_state_btn = "5" +input_save_state = "f2" +input_save_state_mbtn = "nul" +input_screenshot_axis = "nul" +input_screenshot_btn = "nul" +input_screenshot = "f8" +input_screenshot_mbtn = "nul" +input_send_debug_info_axis = "nul" +input_send_debug_info_btn = "nul" +input_send_debug_info = "f10" +input_send_debug_info_mbtn = "nul" +input_sensors_enable = "true" +input_shader_next_axis = "nul" +input_shader_next_btn = "nul" +input_shader_next = "m" +input_shader_next_mbtn = "nul" +input_shader_prev_axis = "nul" +input_shader_prev_btn = "nul" +input_shader_prev_mbtn = "nul" +input_shader_prev = "n" +input_state_slot_decrease_axis = "nul" +input_state_slot_decrease_btn = "nul" +input_state_slot_decrease = "f6" +input_state_slot_decrease_mbtn = "nul" +input_state_slot_increase_axis = "nul" +input_state_slot_increase_btn = "nul" +input_state_slot_increase = "f7" +input_state_slot_increase_mbtn = "nul" +input_streaming_toggle_axis = "nul" +input_streaming_toggle_btn = "nul" +input_streaming_toggle_mbtn = "nul" +input_streaming_toggle = "nul" +input_toggle_fast_forward_axis = "nul" +input_toggle_fast_forward_btn = "7" +input_toggle_fast_forward_mbtn = "nul" +input_toggle_fast_forward = "space" +input_toggle_fullscreen_axis = "nul" +input_toggle_fullscreen_btn = "nul" +input_toggle_fullscreen = "f" +input_toggle_fullscreen_mbtn = "nul" +input_toggle_slowmotion_axis = "nul" +input_toggle_slowmotion_btn = "nul" +input_toggle_slowmotion_mbtn = "nul" +input_toggle_slowmotion = "nul" +input_touch_scale = "1" +input_turbo_default_button = "0" +input_turbo_mode = "0" +input_turbo_period = "6" +input_volume_down_axis = "nul" +input_volume_down_btn = "nul" +input_volume_down_mbtn = "nul" +input_volume_down = "subtract" +input_volume_up = "add" +input_volume_up_axis = "nul" +input_volume_up_btn = "nul" +input_volume_up_mbtn = "nul" +joypad_autoconfig_dir = "/tmp/joypads" +keyboard_gamepad_enable = "true" +keyboard_gamepad_mapping_type = "1" +kiosk_mode_enable = "false" +kiosk_mode_password = "" +led_driver = "null" +libretro_directory = "/tmp/cores" +libretro_info_path = "/tmp/cores" +libretro_log_level = "1" +load_dummy_on_core_shutdown = "true" +location_allow = "false" +location_driver = "null" +log_dir = "~/.config/retroarch/logs" +log_to_file = "false" +log_to_file_timestamp = "false" +log_verbosity = "true" +materialui_auto_rotate_nav_bar = "true" +materialui_dual_thumbnail_list_view_enable = "true" +materialui_icons_enable = "true" +materialui_landscape_layout_optimization = "1" +materialui_menu_color_theme = "9" +materialui_menu_transition_animation = "0" +materialui_playlist_icons_enable = "true" +materialui_show_nav_bar = "true" +materialui_thumbnail_background_enable = "true" +materialui_thumbnail_view_landscape = "2" +materialui_thumbnail_view_portrait = "1" +memory_show = "false" +memory_update_interval = "256" +menu_battery_level_enable = "true" +menu_core_enable = "true" +menu_driver = "xmb" +menu_dynamic_wallpaper_enable = "false" +menu_enable_widgets = "true" +menu_font_color_blue = "255" +menu_font_color_green = "255" +menu_font_color_red = "255" +menu_footer_opacity = "1.000000" +menu_framebuffer_opacity = "0.899999" +menu_header_opacity = "1.000000" +menu_horizontal_animation = "true" +menu_insert_disk_resume = "true" +menu_left_thumbnails = "0" +menu_linear_filter = "false" +menu_mouse_enable = "true" +menu_navigation_browser_filter_supported_extensions_enable = "true" +menu_navigation_wraparound_enable = "true" +menu_pause_libretro = "true" +menu_pointer_enable = "true" +menu_rgui_full_width_layout = "true" +menu_rgui_shadows = "false" +menu_rgui_transparency = "true" +menu_savestate_resume = "true" +menu_scale_factor = "0.800000" +menu_screensaver_animation = "0" +menu_screensaver_animation_speed = "1.000000" +menu_screensaver_timeout = "0" +menu_scroll_delay = "256" +menu_scroll_fast = "false" +menu_shader_pipeline = "2" +menu_show_advanced_settings = "true" +menu_show_configurations = "true" +menu_show_core_updater = "false" +menu_show_dump_disc = "true" +menu_show_help = "true" +menu_show_information = "true" +menu_show_latency = "true" +menu_show_legacy_thumbnail_updater = "false" +menu_show_load_content_animation = "false" +menu_show_load_content = "true" +menu_show_load_core = "true" +menu_show_load_disc = "true" +menu_show_online_updater = "true" +menu_show_overlays = "true" +menu_show_quit_retroarch = "true" +menu_show_reboot = "false" +menu_show_restart_retroarch = "true" +menu_show_rewind = "true" +menu_show_shutdown = "false" +menu_show_sublabels = "true" +menu_show_video_layout = "true" +menu_swap_ok_cancel_buttons = "false" +menu_throttle_framerate = "true" +menu_thumbnails = "3" +menu_thumbnail_upscale_threshold = "0" +menu_ticker_smooth = "true" +menu_ticker_speed = "2.000000" +menu_ticker_type = "1" +menu_timedate_date_separator = "0" +menu_timedate_enable = "true" +menu_timedate_style = "11" +menu_unified_controls = "false" +menu_use_preferred_system_color_theme = "false" +menu_wallpaper = "" +menu_wallpaper_opacity = "1.000000" +menu_widget_scale_auto = "false" +menu_widget_scale_factor = "1.000000" +menu_widget_scale_factor_windowed = "1.000000" +menu_xmb_animation_horizontal_highlight = "0" +menu_xmb_animation_move_up_down = "0" +menu_xmb_animation_opening_main_menu = "0" +menu_xmb_thumbnail_scale_factor = "100" +midi_driver = "alsa" +midi_input = "Off" +midi_output = "Off" +midi_volume = "100" +netplay_allow_slaves = "true" +netplay_check_frames = "600" +netplay_input_latency_frames_min = "0" +netplay_input_latency_frames_range = "0" +netplay_ip_address = "" +netplay_ip_port = "55435" +netplay_max_connections = "3" +netplay_mitm_server = "nyc" +netplay_nat_traversal = "true" +netplay_nickname = "" +netplay_password = "" +netplay_public_announce = "true" +netplay_request_device_p10 = "false" +netplay_request_device_p11 = "false" +netplay_request_device_p12 = "false" +netplay_request_device_p13 = "false" +netplay_request_device_p14 = "false" +netplay_request_device_p15 = "false" +netplay_request_device_p16 = "false" +netplay_request_device_p1 = "false" +netplay_request_device_p2 = "false" +netplay_request_device_p3 = "false" +netplay_request_device_p4 = "false" +netplay_request_device_p5 = "false" +netplay_request_device_p6 = "false" +netplay_request_device_p7 = "false" +netplay_request_device_p8 = "false" +netplay_request_device_p9 = "false" +netplay_require_slaves = "false" +netplay_share_analog = "1" +netplay_share_digital = "1" +netplay_spectate_password = "" +netplay_start_as_spectator = "false" +netplay_stateless_mode = "false" +netplay_use_mitm_server = "false" +network_cmd_enable = "false" +network_cmd_port = "55355" +network_on_demand_thumbnails = "false" +network_remote_base_port = "55400" +network_remote_enable = "false" +network_remote_enable_user_p10 = "false" +network_remote_enable_user_p11 = "false" +network_remote_enable_user_p12 = "false" +network_remote_enable_user_p13 = "false" +network_remote_enable_user_p14 = "false" +network_remote_enable_user_p15 = "false" +network_remote_enable_user_p16 = "false" +network_remote_enable_user_p1 = "false" +network_remote_enable_user_p2 = "false" +network_remote_enable_user_p3 = "false" +network_remote_enable_user_p4 = "false" +network_remote_enable_user_p5 = "false" +network_remote_enable_user_p6 = "false" +network_remote_enable_user_p7 = "false" +network_remote_enable_user_p8 = "false" +network_remote_enable_user_p9 = "false" +notification_show_autoconfig = "false" +notification_show_cheats_applied = "true" +notification_show_config_override_load = "false" +notification_show_fast_forward = "true" +notification_show_netplay_extra = "false" +notification_show_patch_applied = "true" +notification_show_refresh_rate = "true" +notification_show_remap_load = "false" +notification_show_screenshot_duration = "2" +notification_show_screenshot = "false" +notification_show_screenshot_flash = "1" +notification_show_set_initial_disk = "true" +overlay_directory = "/tmp/overlays" +ozone_collapse_sidebar = "false" +ozone_menu_color_theme = "1" +ozone_scroll_content_metadata = "false" +ozone_sort_after_truncate_playlist_name = "true" +ozone_truncate_playlist_name = "true" +pause_nonactive = "true" +perfcnt_enable = "false" +playlist_compression = "false" +playlist_cores = "" +playlist_directory = "~/playlists" +playlist_entry_remove_enable = "1" +playlist_entry_remove = "false" +playlist_entry_rename = "false" +playlist_fuzzy_archive_match = "false" +playlist_names = "" +playlist_portable_paths = "false" +playlist_show_entry_idx = "true" +playlist_show_inline_core_name = "0" +playlist_show_sublabels = "true" +playlist_sort_alphabetical = "true" +playlist_sublabel_last_played_style = "0" +playlist_sublabel_runtime_type = "0" +playlist_use_old_format = "false" +quick_menu_show_add_to_favorites = "true" +quick_menu_show_cheats = "true" +quick_menu_show_close_content = "true" +quick_menu_show_controls = "true" +quick_menu_show_core_options_flush = "false" +quick_menu_show_download_thumbnails = "true" +quick_menu_show_information = "true" +quick_menu_show_options = "true" +quick_menu_show_recording = "true" +quick_menu_show_reset_core_association = "true" +quick_menu_show_restart_content = "true" +quick_menu_show_resume_content = "true" +quick_menu_show_save_content_dir_overrides = "true" +quick_menu_show_save_core_overrides = "false" +quick_menu_show_save_game_overrides = "false" +quick_menu_show_save_load_state = "true" +quick_menu_show_set_core_association = "true" +quick_menu_show_shaders = "true" +quick_menu_show_start_recording = "true" +quick_menu_show_start_streaming = "true" +quick_menu_show_streaming = "true" +quick_menu_show_take_screenshot = "true" +quick_menu_show_undo_save_load_state = "false" +quit_on_close_content = "0" +quit_press_twice = "true" +record_driver = "null" +recording_config_directory = "" +recording_output_directory = "~/roms/screenshots" +resampler_directory = "" +rewind_buffer_size = "20971520" +rewind_buffer_size_step = "10" +rewind_enable = "false" +rewind_granularity = "1" +rgui_aspect_ratio = "0" +rgui_aspect_ratio_lock = "0" +rgui_background_filler_thickness_enable = "true" +rgui_border_filler_enable = "true" +rgui_border_filler_thickness_enable = "true" +rgui_browser_directory = "~/roms" +rgui_config_directory = "~/.config/retroarch/config" +rgui_extended_ascii = "false" +rgui_inline_thumbnails = "false" +rgui_internal_upscale_level = "0" +rgui_menu_color_theme = "4" +rgui_menu_theme_preset = "" +rgui_particle_effect = "0" +rgui_particle_effect_screensaver = "true" +rgui_particle_effect_speed = "1.000000" +rgui_show_start_screen = "false" +rgui_swap_thumbnails = "false" +rgui_switch_icons = "true" +rgui_thumbnail_delay = "0" +rgui_thumbnail_downscaler = "0" +run_ahead_enabled = "false" +run_ahead_frames = "1" +run_ahead_hide_warnings = "false" +run_ahead_secondary_instance = "true" +runtime_log_directory = "default" +save_file_compression = "false" +savefile_directory = "~/.config/retroarch/saves" +savefiles_in_content_dir = "true" +savestate_auto_index = "false" +savestate_auto_load = "false" +savestate_auto_save = "false" +savestate_directory = "~/.config/retroarch/states" +savestate_file_compression = "true" +savestate_max_keep = "0" +savestates_in_content_dir = "false" +savestate_thumbnail_enable = "true" +scan_without_core_match = "false" +screen_brightness = "100" +screen_orientation = "0" +screenshot_directory = "~/roms/screenshots" +screenshots_in_content_dir = "false" +settings_show_accessibility = "true" +settings_show_achievements = "true" +settings_show_ai_service = "true" +settings_show_audio = "true" +settings_show_configuration = "true" +settings_show_core = "true" +settings_show_directory = "true" +settings_show_drivers = "true" +settings_show_file_browser = "true" +settings_show_frame_throttle = "true" +settings_show_input = "true" +settings_show_latency = "true" +settings_show_logging = "true" +settings_show_network = "true" +settings_show_onscreen_display = "true" +settings_show_playlists = "true" +settings_show_power_management = "true" +settings_show_recording = "true" +settings_show_saving = "true" +settings_show_user_interface = "true" +settings_show_user = "true" +settings_show_video = "true" +show_hidden_files = "false" +slowmotion_ratio = "3.000000" +soft_filter_enable = "false" +soft_filter_index = "0" +sort_savefiles_by_content_enable = "false" +sort_savefiles_enable = "false" +sort_savestates_by_content_enable = "false" +sort_savestates_enable = "false" +sort_screenshots_by_content_enable = "false" +state_slot = "0" +statistics_show = "false" +stdin_cmd_enable = "false" +streaming_mode = "0" +suspend_screensaver_enable = "true" +sustained_performance_mode = "false" +system_directory = "~/roms/bios" +systemfiles_in_content_dir = "false" +threaded_data_runloop_enable = "true" +thumbnails_directory = "~/thumbnails" +twitch_stream_key = "" +ui_companion_enable = "false" +ui_companion_start_on_boot = "true" +ui_companion_toggle = "false" +ui_menubar_enable = "true" +use_last_start_directory = "false" +user_language = "0" +vibrate_on_keypress = "true" +video_adaptive_vsync = "false" +video_allow_rotate = "true" +video_aspect_ratio = "-1.000000" +video_aspect_ratio_auto = "true" +video_black_frame_insertion = "0" +video_context_driver = "" +video_crop_overscan = "true" +video_ctx_scaling = "false" +video_disable_composition = "false" +video_driver = "gl" +video_filter = "" +video_filter_dir = "~/.config/retroarch/filters/video" +video_font_enable = "true" +video_font_path = "/usr/share/retroarch-assets/xmb/monochrome/font.ttf" +video_font_size = "32.000000" +video_force_aspect = "true" +video_force_srgb_disable = "false" +video_frame_delay = "0" +video_frame_delay_auto = "false" +video_fullscreen = "true" +video_fullscreen_x = "0" +video_fullscreen_y = "0" +video_gpu_record = "false" +video_gpu_screenshot = "false" +video_hard_sync = "false" +video_hard_sync_frames = "0" +video_hdr_display_contrast = "5.000000" +video_hdr_enable = "false" +video_hdr_expand_gamut = "true" +video_hdr_max_nits = "1000.000000" +video_hdr_paper_white_nits = "200.000000" +video_layout_directory = "~/.config/retroarch/layouts" +video_layout_enable = "true" +video_layout_path = "" +video_layout_selected_view = "0" +video_max_swapchain_images = "3" +video_message_color = "ffff00" +video_message_pos_x = "0.049999" +video_message_pos_y = "0.049999" +video_monitor_index = "0" +video_msg_bgcolor_blue = "0" +video_msg_bgcolor_enable = "false" +video_msg_bgcolor_green = "0" +video_msg_bgcolor_opacity = "1.000000" +video_msg_bgcolor_red = "0" +video_notch_write_over_enable = "false" +video_oga_vertical_enable = "false" +video_post_filter_record = "false" +video_record_config = "" +video_record_quality = "4" +video_record_scale_factor = "1" +video_record_threads = "2" +video_refresh_rate = "60.000000" +video_rotation = "0" +video_scale = "3.000000" +video_scale_integer = "false" +video_scale_integer_overscale = "false" +video_shader_delay = "0" +video_shader_dir = "/tmp/shaders" +video_shader_enable = "false" +video_shader_preset_save_reference_enable = "true" +video_shader_remember_last_dir = "false" +video_shader_watch_files = "false" +video_shared_context = "false" +video_smooth = "false" +video_stream_config = "" +video_stream_port = "56400" +video_stream_quality = "10" +video_stream_scale_factor = "1" +video_stream_url = "" +video_swap_interval = "1" +video_threaded = "true" +video_vsync = "true" +video_window_auto_height_max = "1080" +video_window_auto_width_max = "1920" +video_window_custom_size_enable = "false" +video_windowed_fullscreen = "false" +video_windowed_position_height = "720" +video_windowed_position_width = "1280" +video_windowed_position_x = "0" +video_windowed_position_y = "0" +video_window_opacity = "100" +video_window_save_positions = "false" +video_window_show_decorations = "true" +vrr_runloop_enable = "false" +wifi_driver = "null" +wifi_enabled = "true" +xmb_alpha_factor = "75" +xmb_font = "/usr/share/retroarch-assets/xmb/monochrome/font.ttf" +xmb_layout = "2" +xmb_menu_color_theme = "4" +xmb_shadows_enable = "true" +xmb_theme = "0" +xmb_vertical_thumbnails = "false" +youtube_stream_key = "" diff --git a/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch32bit-append.cfg b/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch32bit-append.cfg new file mode 100644 index 0000000000..9e743a38f1 --- /dev/null +++ b/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch32bit-append.cfg @@ -0,0 +1,2 @@ +audio_filter_dir = "/usr/share/retroarch/filters/32bit/audio" +video_filter_dir = "/usr/share/retroarch/filters/32bit/video" diff --git a/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch64bit-append.cfg b/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch64bit-append.cfg new file mode 100644 index 0000000000..b6cbf68312 --- /dev/null +++ b/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch64bit-append.cfg @@ -0,0 +1,2 @@ +audio_filter_dir = "/usr/share/retroarch/filters/64bit/audio" +video_filter_dir = "/usr/share/retroarch/filters/64bit/video" diff --git a/projects/Rockchip/bootloader/mkimage b/projects/Rockchip/bootloader/mkimage index 9d599c6f31..eea265e573 100755 --- a/projects/Rockchip/bootloader/mkimage +++ b/projects/Rockchip/bootloader/mkimage @@ -74,6 +74,7 @@ do then echo "image: copy device trees to image..." mcopy -o "${DTB}.dtb" :: + mcopy -o "${DTB}.dtb" ::/rockchip/ fi done diff --git a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf index a84c5c04c9..1b5ff1a5d1 100644 --- a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf @@ -1,17 +1,25 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm64 4.19.172 Kernel Configuration -# - -# -# Compiler: aarch64-libreelec-linux-gnueabi-gcc-10.3.0 (GCC) 10.3.0 +# Linux/arm64 6.5.0-rc7 Kernel Configuration # +CONFIG_CC_VERSION_TEXT="aarch64-libreelec-linux-gnueabi-gcc-12.3.0 (GCC) 12.3.0" CONFIG_CC_IS_GCC=y -CONFIG_GCC_VERSION=100300 +CONFIG_GCC_VERSION=120300 CONFIG_CLANG_VERSION=0 -CONFIG_CC_HAS_ASM_GOTO=y +CONFIG_AS_IS_GNU=y +CONFIG_AS_VERSION=24100 +CONFIG_LD_IS_BFD=y +CONFIG_LD_VERSION=24100 +CONFIG_LLD_VERSION=0 +CONFIG_CC_CAN_LINK=y +CONFIG_CC_CAN_LINK_STATIC=y +CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y +CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y +CONFIG_CC_HAS_ASM_INLINE=y +CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y +CONFIG_PAHOLE_VERSION=0 CONFIG_IRQ_WORK=y -CONFIG_BUILDTIME_EXTABLE_SORT=y +CONFIG_BUILDTIME_TABLE_SORT=y CONFIG_THREAD_INFO_IN_TASK=y # @@ -19,18 +27,17 @@ CONFIG_THREAD_INFO_IN_TASK=y # CONFIG_INIT_ENV_ARG_LIMIT=32 # CONFIG_COMPILE_TEST is not set +# CONFIG_WERROR is not set CONFIG_LOCALVERSION="" # CONFIG_LOCALVERSION_AUTO is not set CONFIG_BUILD_SALT="" -CONFIG_HAVE_KERNEL_GZIP=y -CONFIG_HAVE_KERNEL_LZ4=y -CONFIG_KERNEL_GZIP=y -# CONFIG_KERNEL_LZ4 is not set +CONFIG_DEFAULT_INIT="" CONFIG_DEFAULT_HOSTNAME="@DEVICENAME@" -CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y +CONFIG_SYSVIPC_COMPAT=y # CONFIG_POSIX_MQUEUE is not set +# CONFIG_WATCH_QUEUE is not set CONFIG_CROSS_MEMORY_ATTACH=y # CONFIG_USELIB is not set # CONFIG_AUDIT is not set @@ -48,18 +55,22 @@ CONFIG_HARDIRQS_SW_RESEND=y CONFIG_GENERIC_IRQ_CHIP=y CONFIG_IRQ_DOMAIN=y CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_GENERIC_IRQ_IPI=y CONFIG_GENERIC_MSI_IRQ=y -CONFIG_GENERIC_MSI_IRQ_DOMAIN=y -CONFIG_HANDLE_DOMAIN_IRQ=y +CONFIG_IRQ_MSI_IOMMU=y CONFIG_IRQ_FORCED_THREADING=y CONFIG_SPARSE_IRQ=y # CONFIG_GENERIC_IRQ_DEBUGFS is not set -CONFIG_GENERIC_IRQ_MULTI_HANDLER=y -CONFIG_ARCH_CLOCKSOURCE_DATA=y +# end of IRQ subsystem + CONFIG_GENERIC_TIME_VSYSCALL=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_ARCH_HAS_TICK_BROADCAST=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_HAVE_POSIX_CPU_TIMERS_TASK_WORK=y +CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y +CONFIG_CONTEXT_TRACKING=y +CONFIG_CONTEXT_TRACKING_IDLE=y # # Timers subsystem @@ -71,9 +82,24 @@ CONFIG_NO_HZ_IDLE=y # CONFIG_NO_HZ_FULL is not set CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y +# end of Timers subsystem + +CONFIG_BPF=y +CONFIG_HAVE_EBPF_JIT=y +CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y + +# +# BPF subsystem +# +# CONFIG_BPF_SYSCALL is not set +# CONFIG_BPF_JIT is not set +# end of BPF subsystem + +CONFIG_PREEMPT_VOLUNTARY_BUILD=y # CONFIG_PREEMPT_NONE is not set CONFIG_PREEMPT_VOLUNTARY=y # CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_DYNAMIC is not set # # CPU/Task time and stats accounting @@ -81,9 +107,12 @@ CONFIG_PREEMPT_VOLUNTARY=y CONFIG_TICK_CPU_ACCOUNTING=y # CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set # CONFIG_IRQ_TIME_ACCOUNTING is not set +CONFIG_SCHED_THERMAL_PRESSURE=y # CONFIG_BSD_PROCESS_ACCT is not set # CONFIG_TASKSTATS is not set # CONFIG_PSI is not set +# end of CPU/Task time and stats accounting + CONFIG_CPU_ISOLATION=y # @@ -91,32 +120,42 @@ CONFIG_CPU_ISOLATION=y # CONFIG_TREE_RCU=y # CONFIG_RCU_EXPERT is not set -CONFIG_SRCU=y CONFIG_TREE_SRCU=y +CONFIG_TASKS_RCU_GENERIC=y +CONFIG_TASKS_RUDE_RCU=y CONFIG_RCU_STALL_COMMON=y CONFIG_RCU_NEED_SEGCBLIST=y -CONFIG_BUILD_BIN2C=y +# end of RCU Subsystem + CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y # CONFIG_IKHEADERS is not set CONFIG_LOG_BUF_SHIFT=18 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 -CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 +# CONFIG_PRINTK_INDEX is not set CONFIG_GENERIC_SCHED_CLOCK=y # # Scheduler features # +# CONFIG_UCLAMP_TASK is not set +# end of Scheduler features + CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_CC_HAS_INT128=y +CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" +CONFIG_GCC11_NO_ARRAY_BOUNDS=y +CONFIG_CC_NO_ARRAY_BOUNDS=y CONFIG_ARCH_SUPPORTS_INT128=y CONFIG_CGROUPS=y +# CONFIG_CGROUP_FAVOR_DYNMODS is not set # CONFIG_MEMCG is not set CONFIG_BLK_CGROUP=y -# CONFIG_DEBUG_BLK_CGROUP is not set CONFIG_CGROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y CONFIG_CFS_BANDWIDTH=y # CONFIG_RT_GROUP_SCHED is not set +CONFIG_SCHED_MM_CID=y # CONFIG_CGROUP_PIDS is not set # CONFIG_CGROUP_RDMA is not set CONFIG_CGROUP_FREEZER=y @@ -124,21 +163,21 @@ CONFIG_CPUSETS=y CONFIG_PROC_PID_CPUSET=y CONFIG_CGROUP_DEVICE=y CONFIG_CGROUP_CPUACCT=y +# CONFIG_CGROUP_MISC is not set # CONFIG_CGROUP_DEBUG is not set CONFIG_SOCK_CGROUP_DATA=y CONFIG_NAMESPACES=y CONFIG_UTS_NS=y +CONFIG_TIME_NS=y CONFIG_IPC_NS=y CONFIG_USER_NS=y CONFIG_PID_NS=y CONFIG_NET_NS=y # CONFIG_CHECKPOINT_RESTORE is not set # CONFIG_SCHED_AUTOGROUP is not set -# CONFIG_SCHED_TUNE is not set -# CONFIG_SYSFS_DEPRECATED is not set CONFIG_RELAY=y CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="" +CONFIG_INITRAMFS_SOURCE="@INITRAMFS_SOURCE@" CONFIG_INITRAMFS_ROOT_UID=0 CONFIG_INITRAMFS_ROOT_GID=0 CONFIG_RD_GZIP=y @@ -147,25 +186,32 @@ CONFIG_RD_LZMA=y CONFIG_RD_XZ=y CONFIG_RD_LZO=y CONFIG_RD_LZ4=y -CONFIG_INITRAMFS_COMPRESSION=".gz" -# CONFIG_INITRD_ASYNC is not set -# CONFIG_ROCKCHIP_ONE_INITRD is not set +CONFIG_RD_ZSTD=y +CONFIG_INITRAMFS_COMPRESSION_GZIP=y +# CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set +# CONFIG_INITRAMFS_COMPRESSION_LZMA is not set +# CONFIG_INITRAMFS_COMPRESSION_XZ is not set +# CONFIG_INITRAMFS_COMPRESSION_LZO is not set +# CONFIG_INITRAMFS_COMPRESSION_LZ4 is not set +# CONFIG_INITRAMFS_COMPRESSION_ZSTD is not set +# CONFIG_INITRAMFS_COMPRESSION_NONE is not set +# CONFIG_BOOT_CONFIG is not set +CONFIG_INITRAMFS_PRESERVE_MTIME=y CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_LD_ORPHAN_WARN=y +CONFIG_LD_ORPHAN_WARN_LEVEL="warn" CONFIG_SYSCTL=y CONFIG_HAVE_UID16=y CONFIG_SYSCTL_EXCEPTION_TRACE=y -CONFIG_BPF=y CONFIG_EXPERT=y CONFIG_UID16=y CONFIG_MULTIUSER=y # CONFIG_SGETMASK_SYSCALL is not set CONFIG_SYSFS_SYSCALL=y -# CONFIG_SYSCTL_SYSCALL is not set CONFIG_FHANDLE=y CONFIG_POSIX_TIMERS=y CONFIG_PRINTK=y -CONFIG_PRINTK_NMI=y CONFIG_BUG=y CONFIG_ELF_CORE=y CONFIG_BASE_FULL=y @@ -177,15 +223,17 @@ CONFIG_TIMERFD=y CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_AIO=y +CONFIG_IO_URING=y CONFIG_ADVISE_SYSCALLS=y CONFIG_MEMBARRIER=y CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_SELFTEST is not set # CONFIG_KALLSYMS_ALL is not set CONFIG_KALLSYMS_BASE_RELATIVE=y -# CONFIG_BPF_SYSCALL is not set -# CONFIG_USERFAULTFD is not set CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y +CONFIG_KCMP=y CONFIG_RSEQ=y +CONFIG_CACHESTAT_SYSCALL=y # CONFIG_DEBUG_RSEQ is not set CONFIG_EMBEDDED=y CONFIG_HAVE_PERF_EVENTS=y @@ -195,25 +243,20 @@ CONFIG_HAVE_PERF_EVENTS=y # Kernel Performance Events And Counters # # CONFIG_PERF_EVENTS is not set -CONFIG_VM_EVENT_COUNTERS=y -CONFIG_SLUB_SYSFS=y -CONFIG_SLUB_DEBUG=y -# CONFIG_COMPAT_BRK is not set -# CONFIG_SLAB is not set -CONFIG_SLUB=y -# CONFIG_SLOB is not set -CONFIG_SLAB_MERGE_DEFAULT=y -# CONFIG_SLAB_FREELIST_RANDOM is not set -# CONFIG_SLAB_FREELIST_HARDENED is not set -CONFIG_SLUB_CPU_PARTIAL=y +# end of Kernel Performance Events And Counters + CONFIG_SYSTEM_DATA_VERIFICATION=y CONFIG_PROFILING=y CONFIG_TRACEPOINTS=y +# end of General setup + CONFIG_ARM64=y +CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS=y CONFIG_64BIT=y CONFIG_MMU=y CONFIG_ARM64_PAGE_SHIFT=12 -CONFIG_ARM64_CONT_SHIFT=4 +CONFIG_ARM64_CONT_PTE_SHIFT=4 +CONFIG_ARM64_CONT_PMD_SHIFT=4 CONFIG_ARCH_MMAP_RND_BITS_MIN=18 CONFIG_ARCH_MMAP_RND_BITS_MAX=24 CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 @@ -221,21 +264,19 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 CONFIG_STACKTRACE_SUPPORT=y CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 CONFIG_LOCKDEP_SUPPORT=y -CONFIG_TRACE_IRQFLAGS_SUPPORT=y -CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_GENERIC_BUG=y CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CSUM=y CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_ZONE_DMA32=y -CONFIG_HAVE_GENERIC_GUP=y +CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y CONFIG_SMP=y CONFIG_KERNEL_MODE_NEON=y CONFIG_FIX_EARLYCON_MEM=y CONFIG_PGTABLE_LEVELS=3 CONFIG_ARCH_SUPPORTS_UPROBES=y CONFIG_ARCH_PROC_KCORE_TEXT=y +CONFIG_BUILTIN_RETURN_ADDRESS_STRIPS_PAC=y # # Platform selection @@ -243,101 +284,40 @@ CONFIG_ARCH_PROC_KCORE_TEXT=y # CONFIG_ARCH_ACTIONS is not set # CONFIG_ARCH_SUNXI is not set # CONFIG_ARCH_ALPINE is not set -# CONFIG_ARCH_BCM2835 is not set -# CONFIG_ARCH_BCM_IPROC is not set +# CONFIG_ARCH_APPLE is not set +# CONFIG_ARCH_BCM is not set # CONFIG_ARCH_BERLIN is not set -# CONFIG_ARCH_BRCMSTB is not set +# CONFIG_ARCH_BITMAIN is not set # CONFIG_ARCH_EXYNOS is not set +# CONFIG_ARCH_SPARX5 is not set # CONFIG_ARCH_K3 is not set -# CONFIG_ARCH_LAYERSCAPE is not set # CONFIG_ARCH_LG1K is not set # CONFIG_ARCH_HISI is not set +# CONFIG_ARCH_KEEMBAY is not set # CONFIG_ARCH_MEDIATEK is not set # CONFIG_ARCH_MESON is not set # CONFIG_ARCH_MVEBU is not set +# CONFIG_ARCH_NXP is not set +# CONFIG_ARCH_MA35 is not set +# CONFIG_ARCH_NPCM is not set # CONFIG_ARCH_QCOM is not set # CONFIG_ARCH_REALTEK is not set +# CONFIG_ARCH_RENESAS is not set CONFIG_ARCH_ROCKCHIP=y # CONFIG_ARCH_SEATTLE is not set +# CONFIG_ARCH_INTEL_SOCFPGA is not set +# CONFIG_ARCH_STM32 is not set # CONFIG_ARCH_SYNQUACER is not set -# CONFIG_ARCH_RENESAS is not set -# CONFIG_ARCH_STRATIX10 is not set # CONFIG_ARCH_TEGRA is not set # CONFIG_ARCH_SPRD is not set # CONFIG_ARCH_THUNDER is not set # CONFIG_ARCH_THUNDER2 is not set # CONFIG_ARCH_UNIPHIER is not set # CONFIG_ARCH_VEXPRESS is not set +# CONFIG_ARCH_VISCONTI is not set # CONFIG_ARCH_XGENE is not set -# CONFIG_ARCH_ZX is not set # CONFIG_ARCH_ZYNQMP is not set - -# -# Bus support -# -CONFIG_PCI=y -CONFIG_PCI_DOMAINS=y -CONFIG_PCI_DOMAINS_GENERIC=y -CONFIG_PCI_SYSCALL=y -CONFIG_PCIEPORTBUS=y -CONFIG_PCIEAER=y -# CONFIG_PCIEAER_INJECT is not set -# CONFIG_PCIE_ECRC is not set -CONFIG_PCIEASPM=y -# CONFIG_PCIEASPM_DEBUG is not set -CONFIG_PCIEASPM_DEFAULT=y -# CONFIG_PCIEASPM_POWERSAVE is not set -# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set -# CONFIG_PCIEASPM_PERFORMANCE is not set -CONFIG_PCIE_PME=y -# CONFIG_PCIE_DPC is not set -# CONFIG_PCIE_PTM is not set -CONFIG_PCI_MSI=y -CONFIG_PCI_MSI_IRQ_DOMAIN=y -CONFIG_PCI_QUIRKS=y -# CONFIG_PCI_DEBUG is not set -# CONFIG_PCI_STUB is not set -# CONFIG_PCI_IOV is not set -# CONFIG_PCI_PRI is not set -# CONFIG_PCI_PASID is not set -# CONFIG_HOTPLUG_PCI is not set - -# -# PCI controller drivers -# - -# -# Cadence PCIe controllers support -# -# CONFIG_PCIE_CADENCE_HOST is not set -# CONFIG_PCI_FTPCI100 is not set -# CONFIG_PCI_HOST_GENERIC is not set -# CONFIG_PCIE_XILINX is not set -# CONFIG_PCI_XGENE is not set -# CONFIG_PCI_HOST_THUNDER_PEM is not set -# CONFIG_PCI_HOST_THUNDER_ECAM is not set -# CONFIG_PCIE_ROCKCHIP_HOST is not set -# CONFIG_ROCKCHIP_PCIE_DMA_OBJ is not set - -# -# DesignWare PCI Core Support -# -CONFIG_PCIE_DW=y -CONFIG_PCIE_DW_HOST=y -# CONFIG_PCIE_DW_PLAT_HOST is not set -CONFIG_PCIE_DW_ROCKCHIP=y -# CONFIG_PCI_HISI is not set -# CONFIG_PCIE_KIRIN is not set - -# -# PCI Endpoint -# -# CONFIG_PCI_ENDPOINT is not set - -# -# PCI switch controller drivers -# -# CONFIG_PCI_SW_SWITCHTEC is not set +# end of Platform selection # # Kernel Features @@ -346,26 +326,53 @@ CONFIG_PCIE_DW_ROCKCHIP=y # # ARM errata workarounds via the alternatives framework # +CONFIG_AMPERE_ERRATUM_AC03_CPU_38=y # CONFIG_ARM64_ERRATUM_826319 is not set # CONFIG_ARM64_ERRATUM_827319 is not set # CONFIG_ARM64_ERRATUM_824069 is not set # CONFIG_ARM64_ERRATUM_819472 is not set # CONFIG_ARM64_ERRATUM_832075 is not set +CONFIG_ARM64_ERRATUM_1742098=y CONFIG_ARM64_ERRATUM_845719=y CONFIG_ARM64_ERRATUM_843419=y +CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y CONFIG_ARM64_ERRATUM_1024718=y +CONFIG_ARM64_ERRATUM_1418040=y +CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y +CONFIG_ARM64_ERRATUM_1165522=y +CONFIG_ARM64_ERRATUM_1319367=y +CONFIG_ARM64_ERRATUM_1530923=y +CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y +CONFIG_ARM64_ERRATUM_2441007=y +CONFIG_ARM64_ERRATUM_1286807=y CONFIG_ARM64_ERRATUM_1463225=y CONFIG_ARM64_ERRATUM_1542419=y +CONFIG_ARM64_ERRATUM_1508412=y +CONFIG_ARM64_ERRATUM_2051678=y +CONFIG_ARM64_ERRATUM_2077057=y +CONFIG_ARM64_ERRATUM_2658417=y +CONFIG_ARM64_WORKAROUND_TSB_FLUSH_FAILURE=y +CONFIG_ARM64_ERRATUM_2054223=y +CONFIG_ARM64_ERRATUM_2067961=y +CONFIG_ARM64_ERRATUM_2441009=y +CONFIG_ARM64_ERRATUM_2457168=y +CONFIG_ARM64_ERRATUM_2645198=y # CONFIG_CAVIUM_ERRATUM_22375 is not set # CONFIG_CAVIUM_ERRATUM_23154 is not set CONFIG_CAVIUM_ERRATUM_27456=y CONFIG_CAVIUM_ERRATUM_30115=y +CONFIG_CAVIUM_TX2_ERRATUM_219=y +CONFIG_FUJITSU_ERRATUM_010001=y +CONFIG_HISILICON_ERRATUM_161600802=y CONFIG_QCOM_FALKOR_ERRATUM_1003=y CONFIG_QCOM_FALKOR_ERRATUM_1009=y CONFIG_QCOM_QDF2400_ERRATUM_0065=y -CONFIG_SOCIONEXT_SYNQUACER_PREITS=y -CONFIG_HISILICON_ERRATUM_161600802=y CONFIG_QCOM_FALKOR_ERRATUM_E1041=y +CONFIG_NVIDIA_CARMEL_CNP_ERRATUM=y +CONFIG_ROCKCHIP_ERRATUM_3588001=y +CONFIG_SOCIONEXT_SYNQUACER_PREITS=y +# end of ARM errata workarounds via the alternatives framework + CONFIG_ARM64_4K_PAGES=y # CONFIG_ARM64_16K_PAGES is not set # CONFIG_ARM64_64K_PAGES is not set @@ -375,74 +382,113 @@ CONFIG_ARM64_VA_BITS=39 CONFIG_ARM64_PA_BITS_48=y CONFIG_ARM64_PA_BITS=48 # CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_CPU_LITTLE_ENDIAN=y CONFIG_SCHED_MC=y +# CONFIG_SCHED_CLUSTER is not set # CONFIG_SCHED_SMT is not set CONFIG_NR_CPUS=8 CONFIG_HOTPLUG_CPU=y -CONFIG_ARCH_NR_GPIO=256 # CONFIG_NUMA is not set -CONFIG_HOLES_IN_ZONE=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_SUPPORTS_DEBUG_PAGEALLOC=y -CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y CONFIG_ARCH_SPARSEMEM_ENABLE=y -CONFIG_ARCH_SPARSEMEM_DEFAULT=y -CONFIG_ARCH_SELECT_MEMORY_MODEL=y -CONFIG_ARCH_FLATMEM_ENABLE=y -CONFIG_HAVE_ARCH_PFN_VALID=y -CONFIG_SYS_SUPPORTS_HUGETLBFS=y -CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y -CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y -# CONFIG_ARM64_DMA_USE_IOMMU is not set -CONFIG_SECCOMP=y +CONFIG_CC_HAVE_SHADOW_CALL_STACK=y # CONFIG_PARAVIRT is not set # CONFIG_PARAVIRT_TIME_ACCOUNTING is not set # CONFIG_KEXEC is not set +# CONFIG_KEXEC_FILE is not set # CONFIG_CRASH_DUMP is not set # CONFIG_XEN is not set -CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_ARCH_FORCE_MAX_ORDER=10 CONFIG_UNMAP_KERNEL_AT_EL0=y -CONFIG_HARDEN_BRANCH_PREDICTOR=y -CONFIG_HARDEN_EL2_VECTORS=y -CONFIG_ARM64_SSBD=y +CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY=y +CONFIG_RODATA_FULL_DEFAULT_ENABLED=y +# CONFIG_ARM64_SW_TTBR0_PAN is not set CONFIG_ARM64_TAGGED_ADDR_ABI=y +CONFIG_COMPAT=y +CONFIG_KUSER_HELPERS=y +# CONFIG_COMPAT_ALIGNMENT_FIXUPS is not set CONFIG_ARMV8_DEPRECATED=y CONFIG_SWP_EMULATION=y CONFIG_CP15_BARRIER_EMULATION=y CONFIG_SETEND_EMULATION=y -# CONFIG_ARM64_SW_TTBR0_PAN is not set # # ARMv8.1 architectural features # CONFIG_ARM64_HW_AFDBM=y CONFIG_ARM64_PAN=y +CONFIG_AS_HAS_LDAPR=y +CONFIG_AS_HAS_LSE_ATOMICS=y CONFIG_ARM64_LSE_ATOMICS=y -CONFIG_ARM64_VHE=y +CONFIG_ARM64_USE_LSE_ATOMICS=y +# end of ARMv8.1 architectural features # # ARMv8.2 architectural features # -CONFIG_ARM64_UAO=y +CONFIG_AS_HAS_ARMV8_2=y +CONFIG_AS_HAS_SHA3=y # CONFIG_ARM64_PMEM is not set CONFIG_ARM64_RAS_EXTN=y +CONFIG_ARM64_CNP=y +# end of ARMv8.2 architectural features + +# +# ARMv8.3 architectural features +# +CONFIG_ARM64_PTR_AUTH=y +CONFIG_ARM64_PTR_AUTH_KERNEL=y +CONFIG_CC_HAS_BRANCH_PROT_PAC_RET=y +CONFIG_CC_HAS_SIGN_RETURN_ADDRESS=y +CONFIG_AS_HAS_ARMV8_3=y +CONFIG_AS_HAS_CFI_NEGATE_RA_STATE=y +# end of ARMv8.3 architectural features + +# +# ARMv8.4 architectural features +# +CONFIG_ARM64_AMU_EXTN=y +CONFIG_AS_HAS_ARMV8_4=y +CONFIG_ARM64_TLB_RANGE=y +# end of ARMv8.4 architectural features + +# +# ARMv8.5 architectural features +# +CONFIG_AS_HAS_ARMV8_5=y +CONFIG_ARM64_BTI=y +CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI=y +CONFIG_ARM64_E0PD=y +CONFIG_ARM64_AS_HAS_MTE=y +CONFIG_ARM64_MTE=y +# end of ARMv8.5 architectural features + +# +# ARMv8.7 architectural features +# +CONFIG_ARM64_EPAN=y +# end of ARMv8.7 architectural features + CONFIG_ARM64_SVE=y -CONFIG_ARM64_MODULE_PLTS=y +CONFIG_ARM64_SME=y +# CONFIG_ARM64_PSEUDO_NMI is not set +CONFIG_RELOCATABLE=y # CONFIG_RANDOMIZE_BASE is not set +CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y +CONFIG_STACKPROTECTOR_PER_TASK=y +# end of Kernel Features # # Boot options # CONFIG_CMDLINE="" # CONFIG_EFI is not set -CONFIG_COMPAT=y -CONFIG_KUSER_HELPERS=y -CONFIG_SYSVIPC_COMPAT=y +# end of Boot options # # Power management options @@ -450,12 +496,11 @@ CONFIG_SYSVIPC_COMPAT=y CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y # CONFIG_SUSPEND_SKIP_SYNC is not set -CONFIG_HAS_WAKELOCK=y -CONFIG_WAKELOCK=y # CONFIG_HIBERNATION is not set CONFIG_PM_SLEEP=y CONFIG_PM_SLEEP_SMP=y # CONFIG_PM_AUTOSLEEP is not set +# CONFIG_PM_USERSPACE_AUTOSLEEP is not set # CONFIG_PM_WAKELOCKS is not set CONFIG_PM=y CONFIG_PM_DEBUG=y @@ -472,6 +517,7 @@ CONFIG_CPU_PM=y CONFIG_ENERGY_MODEL=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y +# end of Power management options # # CPU Power Management @@ -481,15 +527,16 @@ CONFIG_ARCH_SUSPEND_POSSIBLE=y # CPU Idle # CONFIG_CPU_IDLE=y -CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y # CONFIG_CPU_IDLE_GOV_LADDER is not set CONFIG_CPU_IDLE_GOV_MENU=y -CONFIG_DT_IDLE_STATES=y +# CONFIG_CPU_IDLE_GOV_TEO is not set # # ARM CPU Idle Drivers # -CONFIG_ARM_CPUIDLE=y +# CONFIG_ARM_PSCI_CPUIDLE is not set +# end of ARM CPU Idle Drivers +# end of CPU Idle # # CPU Frequency scaling @@ -498,164 +545,180 @@ CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_GOV_ATTR_SET=y CONFIG_CPU_FREQ_GOV_COMMON=y # CONFIG_CPU_FREQ_STAT is not set -# CONFIG_CPU_FREQ_TIMES is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y -# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set 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_CONSERVATIVE=y CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y -CONFIG_CPU_FREQ_GOV_INTERACTIVE=y # # CPU frequency scaling drivers # CONFIG_CPUFREQ_DT=y CONFIG_CPUFREQ_DT_PLATDEV=y -# CONFIG_CPUFREQ_DUMMY is not set -# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set -CONFIG_ARM_ROCKCHIP_CPUFREQ=y # CONFIG_ARM_SCMI_CPUFREQ is not set -# CONFIG_QORIQ_CPUFREQ is not set - -# -# Firmware Drivers -# -CONFIG_ARM_PSCI_FW=y -# CONFIG_ARM_PSCI_CHECKER is not set -CONFIG_ARM_SCMI_PROTOCOL=y -CONFIG_ARM_SCMI_POWER_DOMAIN=y -# CONFIG_ARM_SCPI_PROTOCOL is not set -# CONFIG_ARM_SDE_INTERFACE is not set -# CONFIG_FIRMWARE_MEMMAP is not set -# CONFIG_FW_CFG_SYSFS is not set -CONFIG_ROCKCHIP_SIP=y -CONFIG_HAVE_ARM_SMCCC=y -# CONFIG_GOOGLE_FIRMWARE is not set +# end of CPU Frequency scaling +# end of CPU Power Management -# -# Tegra firmware driver -# +CONFIG_HAVE_KVM=y # CONFIG_VIRTUALIZATION is not set -CONFIG_ARM64_CRYPTO=y -CONFIG_CRYPTO_SHA256_ARM64=y -# CONFIG_CRYPTO_SHA512_ARM64 is not set -CONFIG_CRYPTO_SHA1_ARM64_CE=y -CONFIG_CRYPTO_SHA2_ARM64_CE=y -# CONFIG_CRYPTO_SHA512_ARM64_CE is not set -# CONFIG_CRYPTO_SHA3_ARM64 is not set -# CONFIG_CRYPTO_SM3_ARM64_CE is not set -# CONFIG_CRYPTO_SM4_ARM64_CE is not set -CONFIG_CRYPTO_GHASH_ARM64_CE=y -# CONFIG_CRYPTO_CRCT10DIF_ARM64_CE is not set -# CONFIG_CRYPTO_CRC32_ARM64_CE is not set -CONFIG_CRYPTO_AES_ARM64=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 is not set -# CONFIG_CRYPTO_CHACHA20_NEON is not set -# CONFIG_CRYPTO_POLY1305_NEON is not set -# CONFIG_CRYPTO_AES_ARM64_BS is not set # # General architecture-dependent options # +CONFIG_ARCH_HAS_SUBPAGE_FAULTS=y +CONFIG_HOTPLUG_CORE_SYNC=y +CONFIG_HOTPLUG_CORE_SYNC_DEAD=y # CONFIG_KPROBES is not set # CONFIG_JUMP_LABEL is not set CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y +CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y +CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y CONFIG_HAVE_NMI=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y CONFIG_HAVE_ARCH_TRACEHOOK=y CONFIG_HAVE_DMA_CONTIGUOUS=y CONFIG_GENERIC_SMP_IDLE_THREAD=y CONFIG_GENERIC_IDLE_POLL_SETUP=y CONFIG_ARCH_HAS_FORTIFY_SOURCE=y +CONFIG_ARCH_HAS_KEEPINITRD=y CONFIG_ARCH_HAS_SET_MEMORY=y +CONFIG_ARCH_HAS_SET_DIRECT_MAP=y CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y +CONFIG_ARCH_WANTS_NO_INSTR=y +CONFIG_HAVE_ASM_MODVERSIONS=y CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y CONFIG_HAVE_RSEQ=y -CONFIG_HAVE_CLK=y +CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=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_HAVE_ARCH_JUMP_LABEL_RELATIVE=y +CONFIG_MMU_GATHER_TABLE_FREE=y +CONFIG_MMU_GATHER_RCU_TABLE_FREE=y +CONFIG_MMU_LAZY_TLB_REFCOUNT=y CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_ARCH_HAS_NMI_SAFE_THIS_CPU_OPS=y CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y CONFIG_HAVE_CMPXCHG_LOCAL=y CONFIG_HAVE_CMPXCHG_DOUBLE=y CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y +CONFIG_HAVE_ARCH_SECCOMP=y CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_SECCOMP=y CONFIG_SECCOMP_FILTER=y +# CONFIG_SECCOMP_CACHE_DEBUG is not set +CONFIG_HAVE_ARCH_STACKLEAK=y CONFIG_HAVE_STACKPROTECTOR=y -CONFIG_CC_HAS_STACKPROTECTOR_NONE=y CONFIG_STACKPROTECTOR=y CONFIG_STACKPROTECTOR_STRONG=y +CONFIG_ARCH_SUPPORTS_SHADOW_CALL_STACK=y +# CONFIG_SHADOW_CALL_STACK is not set CONFIG_ARCH_SUPPORTS_LTO_CLANG=y -CONFIG_ARCH_SUPPORTS_THINLTO=y +CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y CONFIG_LTO_NONE=y -CONFIG_HAVE_CONTEXT_TRACKING=y +CONFIG_ARCH_SUPPORTS_CFI_CLANG=y +CONFIG_HAVE_CONTEXT_TRACKING_USER=y CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_MOVE_PUD=y +CONFIG_HAVE_MOVE_PMD=y CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y CONFIG_HAVE_ARCH_HUGE_VMAP=y +CONFIG_HAVE_ARCH_HUGE_VMALLOC=y +CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y CONFIG_HAVE_MOD_ARCH_SPECIFIC=y CONFIG_MODULES_USE_ELF_RELA=y +CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK=y +CONFIG_SOFTIRQ_ON_OWN_STACK=y CONFIG_ARCH_HAS_ELF_RANDOMIZE=y CONFIG_HAVE_ARCH_MMAP_RND_BITS=y CONFIG_ARCH_MMAP_RND_BITS=18 CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 +CONFIG_PAGE_SIZE_LESS_THAN_64KB=y +CONFIG_PAGE_SIZE_LESS_THAN_256KB=y +CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y CONFIG_CLONE_BACKWARDS=y CONFIG_OLD_SIGSUSPEND3=y CONFIG_COMPAT_OLD_SIGACTION=y CONFIG_COMPAT_32BIT_TIME=y CONFIG_HAVE_ARCH_VMAP_STACK=y CONFIG_VMAP_STACK=y +CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y +CONFIG_RANDOMIZE_KSTACK_OFFSET=y +# CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT is not set CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y CONFIG_STRICT_KERNEL_RWX=y CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y CONFIG_STRICT_MODULE_RWX=y -CONFIG_REFCOUNT_FULL=y +CONFIG_HAVE_ARCH_COMPILER_H=y CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y +# CONFIG_LOCK_EVENT_COUNTS is not set +CONFIG_ARCH_HAS_RELR=y +CONFIG_HAVE_PREEMPT_DYNAMIC=y +CONFIG_HAVE_PREEMPT_DYNAMIC_KEY=y +CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_SUPPORTS_PAGE_TABLE_CHECK=y +CONFIG_ARCH_HAVE_TRACE_MMIO_ACCESS=y # # GCOV-based kernel profiling # # CONFIG_GCOV_KERNEL is not set CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y -CONFIG_PLUGIN_HOSTCC="" +# end of GCOV-based kernel profiling + CONFIG_HAVE_GCC_PLUGINS=y +CONFIG_GCC_PLUGINS=y +# CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set +CONFIG_FUNCTION_ALIGNMENT_4B=y +CONFIG_FUNCTION_ALIGNMENT_8B=y +CONFIG_FUNCTION_ALIGNMENT=8 +# end of General architecture-dependent options + CONFIG_RT_MUTEXES=y CONFIG_BASE_SMALL=0 CONFIG_MODULES=y +# CONFIG_MODULE_DEBUG is not set CONFIG_MODULE_FORCE_LOAD=y CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_MODULE_UNLOAD_TAINT_TRACKING is not set # CONFIG_MODVERSIONS is not set # CONFIG_MODULE_SRCVERSION_ALL is not set # CONFIG_MODULE_SIG is not set -# CONFIG_MODULE_COMPRESS is not set +CONFIG_MODULE_COMPRESS_NONE=y +# CONFIG_MODULE_COMPRESS_GZIP is not set +# CONFIG_MODULE_COMPRESS_XZ is not set +# CONFIG_MODULE_COMPRESS_ZSTD is not set +# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set +CONFIG_MODPROBE_PATH="/sbin/modprobe" # CONFIG_TRIM_UNUSED_KSYMS is not set CONFIG_MODULES_TREE_LOOKUP=y CONFIG_BLOCK=y -CONFIG_BLK_SCSI_REQUEST=y -CONFIG_BLK_DEV_BSG=y +CONFIG_BLOCK_LEGACY_AUTOLOAD=y +CONFIG_BLK_DEV_BSG_COMMON=y # CONFIG_BLK_DEV_BSGLIB is not set # CONFIG_BLK_DEV_INTEGRITY is not set # CONFIG_BLK_DEV_ZONED is not set # CONFIG_BLK_DEV_THROTTLING is not set -# CONFIG_BLK_CMDLINE_PARSER is not set # CONFIG_BLK_WBT is not set # CONFIG_BLK_CGROUP_IOLATENCY is not set +# CONFIG_BLK_CGROUP_IOCOST is not set +# CONFIG_BLK_CGROUP_IOPRIO is not set CONFIG_BLK_DEBUG_FS=y # CONFIG_BLK_SED_OPAL is not set # CONFIG_BLK_INLINE_ENCRYPTION is not set @@ -683,23 +746,19 @@ CONFIG_MSDOS_PARTITION=y CONFIG_EFI_PARTITION=y # CONFIG_SYSV68_PARTITION is not set # CONFIG_CMDLINE_PARTITION is not set -CONFIG_BLOCK_COMPAT=y +# end of Partition Types + CONFIG_BLK_MQ_PCI=y +CONFIG_BLK_PM=y # # IO Schedulers # -CONFIG_IOSCHED_NOOP=y -CONFIG_IOSCHED_DEADLINE=y -CONFIG_IOSCHED_CFQ=y -# CONFIG_CFQ_GROUP_IOSCHED is not set -# CONFIG_DEFAULT_DEADLINE is not set -CONFIG_DEFAULT_CFQ=y -# CONFIG_DEFAULT_NOOP is not set -CONFIG_DEFAULT_IOSCHED="cfq" CONFIG_MQ_IOSCHED_DEADLINE=y CONFIG_MQ_IOSCHED_KYBER=y # CONFIG_IOSCHED_BFQ is not set +# end of IO Schedulers + CONFIG_ASN1=y CONFIG_ARCH_INLINE_SPIN_TRYLOCK=y CONFIG_ARCH_INLINE_SPIN_TRYLOCK_BH=y @@ -736,22 +795,8 @@ CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y CONFIG_QUEUED_SPINLOCKS=y CONFIG_ARCH_USE_QUEUED_RWLOCKS=y CONFIG_QUEUED_RWLOCKS=y +CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y -# CONFIG_GKI_HIDDEN_DRM_CONFIGS is not set -# CONFIG_GKI_HIDDEN_REGMAP_CONFIGS is not set -# CONFIG_GKI_HIDDEN_CRYPTO_CONFIGS is not set -# CONFIG_GKI_HIDDEN_SND_CONFIGS is not set -# CONFIG_GKI_HIDDEN_SND_SOC_CONFIGS is not set -# CONFIG_GKI_HIDDEN_GPIO_CONFIGS is not set -# CONFIG_GKI_HIDDEN_VIRTUAL_CONFIGS is not set -# CONFIG_GKI_LEGACY_WEXT_ALLCONFIG is not set -# CONFIG_GKI_HIDDEN_SOC_PM_CONFIGS is not set -# CONFIG_GKI_HIDDEN_VIDEOBUF2_CONFIGS is not set -# CONFIG_GKI_HIDDEN_USB_CONFIGS is not set -# CONFIG_GKI_HIDDEN_SOC_BUS_CONFIGS is not set -# CONFIG_GKI_HIDDEN_GPU_CONFIGS is not set -# CONFIG_GKI_HIDDEN_IRQ_CONFIGS is not set -# CONFIG_GKI_HACKS_TO_FIX is not set CONFIG_FREEZER=y # @@ -759,57 +804,106 @@ CONFIG_FREEZER=y # CONFIG_BINFMT_ELF=y CONFIG_COMPAT_BINFMT_ELF=y +CONFIG_ARCH_BINFMT_ELF_STATE=y +CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y +CONFIG_ARCH_HAVE_ELF_PROT=y +CONFIG_ARCH_USE_GNU_PROPERTY=y CONFIG_ELFCORE=y CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y CONFIG_BINFMT_SCRIPT=y CONFIG_BINFMT_MISC=y CONFIG_COREDUMP=y +# end of Executable file formats # # Memory Management options # -CONFIG_SELECT_MEMORY_MODEL=y -# CONFIG_FLATMEM_MANUAL is not set -CONFIG_SPARSEMEM_MANUAL=y +CONFIG_SWAP=y +# CONFIG_ZSWAP is not set +CONFIG_ZSMALLOC=y +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_ZSMALLOC_CHAIN_SIZE=8 + +# +# SLAB allocator options +# +# CONFIG_SLAB_DEPRECATED is not set +CONFIG_SLUB=y +# CONFIG_SLUB_TINY is not set +CONFIG_SLAB_MERGE_DEFAULT=y +# CONFIG_SLAB_FREELIST_RANDOM is not set +# CONFIG_SLAB_FREELIST_HARDENED is not set +# CONFIG_SLUB_STATS is not set +CONFIG_SLUB_CPU_PARTIAL=y +# end of SLAB allocator options + +# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set +# CONFIG_COMPAT_BRK is not set 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_FAST_GUP=y +CONFIG_ARCH_KEEP_MEMBLOCK=y CONFIG_MEMORY_ISOLATION=y +CONFIG_EXCLUSIVE_SYSTEM_RAM=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y +# CONFIG_MEMORY_HOTPLUG is not set CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y # CONFIG_COMPACTION is not set +# CONFIG_PAGE_REPORTING is not set CONFIG_MIGRATION=y +CONFIG_CONTIG_ALLOC=y CONFIG_PHYS_ADDR_T_64BIT=y # CONFIG_KSM is not set CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y # CONFIG_MEMORY_FAILURE is not set +CONFIG_ARCH_WANTS_THP_SWAP=y # CONFIG_TRANSPARENT_HUGEPAGE is not set -# CONFIG_CLEANCACHE is not set -# CONFIG_FRONTSWAP is not set CONFIG_CMA=y # CONFIG_CMA_DEBUG is not set # CONFIG_CMA_DEBUGFS is not set +# CONFIG_CMA_SYSFS is not set CONFIG_CMA_AREAS=7 -# 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_MM_EVENT_STAT is not set CONFIG_GENERIC_EARLY_IOREMAP=y # CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set # CONFIG_IDLE_PAGE_TRACKING is not set -CONFIG_FRAME_VECTOR=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_ARCH_HAS_CURRENT_STACK_POINTER=y +CONFIG_ARCH_HAS_PTE_DEVMAP=y +CONFIG_ARCH_HAS_ZONE_DMA_SET=y +CONFIG_ZONE_DMA=y +CONFIG_ZONE_DMA32=y +CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y +CONFIG_ARCH_USES_PG_ARCH_X=y +CONFIG_VM_EVENT_COUNTERS=y # CONFIG_PERCPU_STATS is not set -# CONFIG_GUP_BENCHMARK is not set +# CONFIG_GUP_TEST is not set +# CONFIG_DMAPOOL_TEST is not set CONFIG_ARCH_HAS_PTE_SPECIAL=y +CONFIG_SECRETMEM=y +# CONFIG_ANON_VMA_NAME is not set +# CONFIG_USERFAULTFD is not set +# CONFIG_LRU_GEN is not set +CONFIG_ARCH_SUPPORTS_PER_VMA_LOCK=y +CONFIG_PER_VMA_LOCK=y +CONFIG_LOCK_MM_AND_FIND_VMA=y + +# +# Data Access Monitoring +# +# CONFIG_DAMON is not set +# end of Data Access Monitoring +# end of Memory Management options + CONFIG_NET=y CONFIG_COMPAT_NETLINK_MESSAGES=y CONFIG_NET_INGRESS=y +CONFIG_NET_EGRESS=y +CONFIG_SKB_EXTENSIONS=y # # Networking options @@ -817,6 +911,8 @@ CONFIG_NET_INGRESS=y CONFIG_PACKET=y CONFIG_PACKET_DIAG=y CONFIG_UNIX=y +CONFIG_UNIX_SCM=y +CONFIG_AF_UNIX_OOB=y CONFIG_UNIX_DIAG=y # CONFIG_TLS is not set CONFIG_XFRM=y @@ -826,6 +922,8 @@ CONFIG_XFRM_USER=y # CONFIG_XFRM_SUB_POLICY is not set CONFIG_XFRM_MIGRATE=y # CONFIG_XFRM_STATISTICS is not set +CONFIG_XFRM_AH=m +CONFIG_XFRM_ESP=m CONFIG_XFRM_IPCOMP=m CONFIG_NET_KEY=m CONFIG_NET_KEY_MIGRATE=y @@ -858,12 +956,11 @@ CONFIG_NET_FOU=m CONFIG_INET_AH=m CONFIG_INET_ESP=m # CONFIG_INET_ESP_OFFLOAD is not set +# CONFIG_INET_ESPINTCP is not set CONFIG_INET_IPCOMP=m +CONFIG_INET_TABLE_PERTURB_ORDER=16 CONFIG_INET_XFRM_TUNNEL=m CONFIG_INET_TUNNEL=m -CONFIG_INET_XFRM_MODE_TRANSPORT=m -CONFIG_INET_XFRM_MODE_TUNNEL=m -CONFIG_INET_XFRM_MODE_BEET=m CONFIG_INET_DIAG=m CONFIG_INET_TCP_DIAG=m # CONFIG_INET_UDP_DIAG is not set @@ -895,15 +992,12 @@ CONFIG_IPV6_OPTIMISTIC_DAD=y CONFIG_INET6_AH=m CONFIG_INET6_ESP=m # CONFIG_INET6_ESP_OFFLOAD is not set +# CONFIG_INET6_ESPINTCP is not set CONFIG_INET6_IPCOMP=m CONFIG_IPV6_MIP6=m CONFIG_IPV6_ILA=m CONFIG_INET6_XFRM_TUNNEL=m CONFIG_INET6_TUNNEL=m -CONFIG_INET6_XFRM_MODE_TRANSPORT=m -CONFIG_INET6_XFRM_MODE_TUNNEL=m -CONFIG_INET6_XFRM_MODE_BEET=m -CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m # CONFIG_IPV6_VTI is not set CONFIG_IPV6_SIT=m # CONFIG_IPV6_SIT_6RD is not set @@ -918,6 +1012,9 @@ CONFIG_IPV6_MROUTE=y # CONFIG_IPV6_PIMSM_V2 is not set # CONFIG_IPV6_SEG6_LWTUNNEL is not set # CONFIG_IPV6_SEG6_HMAC is not set +# CONFIG_IPV6_RPL_LWTUNNEL is not set +# CONFIG_IPV6_IOAM6_LWTUNNEL is not set +# CONFIG_MPTCP is not set CONFIG_NETWORK_SECMARK=y CONFIG_NET_PTP_CLASSIFY=y # CONFIG_NETWORK_PHY_TIMESTAMPING is not set @@ -929,16 +1026,17 @@ CONFIG_BRIDGE_NETFILTER=m # Core Netfilter Configuration # CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_EGRESS=y CONFIG_NETFILTER_NETLINK=m CONFIG_NETFILTER_FAMILY_BRIDGE=y CONFIG_NETFILTER_FAMILY_ARP=y +# CONFIG_NETFILTER_NETLINK_HOOK is not set CONFIG_NETFILTER_NETLINK_ACCT=m CONFIG_NETFILTER_NETLINK_QUEUE=m CONFIG_NETFILTER_NETLINK_LOG=m CONFIG_NETFILTER_NETLINK_OSF=m CONFIG_NF_CONNTRACK=m -CONFIG_NF_LOG_COMMON=m -# CONFIG_NF_LOG_NETDEV is not set +CONFIG_NF_LOG_SYSLOG=m CONFIG_NETFILTER_CONNCOUNT=m CONFIG_NF_CONNTRACK_MARK=y # CONFIG_NF_CONNTRACK_SECMARK is not set @@ -949,7 +1047,7 @@ CONFIG_NF_CONNTRACK_TIMEOUT=y CONFIG_NF_CONNTRACK_TIMESTAMP=y CONFIG_NF_CONNTRACK_LABELS=y CONFIG_NF_CT_PROTO_DCCP=y -CONFIG_NF_CT_PROTO_GRE=m +CONFIG_NF_CT_PROTO_GRE=y CONFIG_NF_CT_PROTO_SCTP=y CONFIG_NF_CT_PROTO_UDPLITE=y CONFIG_NF_CONNTRACK_AMANDA=m @@ -967,42 +1065,38 @@ CONFIG_NF_CT_NETLINK=m # CONFIG_NF_CT_NETLINK_TIMEOUT is not set # CONFIG_NETFILTER_NETLINK_GLUE_CT is not set CONFIG_NF_NAT=m -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=m CONFIG_NF_NAT_FTP=m CONFIG_NF_NAT_IRC=m CONFIG_NF_NAT_SIP=m CONFIG_NF_NAT_TFTP=m CONFIG_NF_NAT_REDIRECT=y +CONFIG_NF_NAT_MASQUERADE=y CONFIG_NETFILTER_SYNPROXY=m CONFIG_NF_TABLES=m -# CONFIG_NF_TABLES_SET is not set # CONFIG_NF_TABLES_INET is not set # CONFIG_NF_TABLES_NETDEV is not set # CONFIG_NFT_NUMGEN is not set # CONFIG_NFT_CT is not set -# CONFIG_NFT_COUNTER is not set # CONFIG_NFT_CONNLIMIT is not set # CONFIG_NFT_LOG is not set # CONFIG_NFT_LIMIT is not set # CONFIG_NFT_MASQ is not set # CONFIG_NFT_REDIR is not set -# CONFIG_NFT_NAT is not set # CONFIG_NFT_TUNNEL is not set -# CONFIG_NFT_OBJREF is not set # CONFIG_NFT_QUEUE is not set # CONFIG_NFT_QUOTA is not set # CONFIG_NFT_REJECT is not set # CONFIG_NFT_COMPAT is not set # CONFIG_NFT_HASH is not set +# CONFIG_NFT_XFRM is not set # CONFIG_NFT_SOCKET is not set # CONFIG_NFT_OSF is not set # CONFIG_NFT_TPROXY is not set +# CONFIG_NFT_SYNPROXY is not set # CONFIG_NF_FLOW_TABLE is not set CONFIG_NETFILTER_XTABLES=y +# CONFIG_NETFILTER_XTABLES_COMPAT is not set # # Xtables combined modules @@ -1032,6 +1126,7 @@ CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m # CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set CONFIG_NETFILTER_XT_TARGET_RATEEST=m CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m CONFIG_NETFILTER_XT_TARGET_TEE=m CONFIG_NETFILTER_XT_TARGET_TPROXY=m # CONFIG_NETFILTER_XT_TARGET_TRACE is not set @@ -1077,8 +1172,6 @@ CONFIG_NETFILTER_XT_MATCH_POLICY=m # CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m CONFIG_NETFILTER_XT_MATCH_QUOTA=m -CONFIG_NETFILTER_XT_MATCH_QUOTA2=m -# CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG is not set CONFIG_NETFILTER_XT_MATCH_RATEEST=m CONFIG_NETFILTER_XT_MATCH_REALM=m CONFIG_NETFILTER_XT_MATCH_RECENT=m @@ -1090,6 +1183,8 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m CONFIG_NETFILTER_XT_MATCH_TCPMSS=m CONFIG_NETFILTER_XT_MATCH_TIME=m CONFIG_NETFILTER_XT_MATCH_U32=m +# end of Core Netfilter Configuration + CONFIG_IP_SET=m CONFIG_IP_SET_MAX=256 # CONFIG_IP_SET_BITMAP_IP is not set @@ -1138,6 +1233,7 @@ CONFIG_IP_VS_TAB_BITS=12 # CONFIG_IP_VS_MH is not set # CONFIG_IP_VS_SED is not set # CONFIG_IP_VS_NQ is not set +# CONFIG_IP_VS_TWOS is not set # # IPVS SH scheduler @@ -1166,10 +1262,7 @@ CONFIG_NF_DUP_IPV4=m # CONFIG_NF_LOG_ARP is not set CONFIG_NF_LOG_IPV4=m CONFIG_NF_REJECT_IPV4=m -CONFIG_NF_NAT_IPV4=m -CONFIG_NF_NAT_MASQUERADE_IPV4=y CONFIG_NF_NAT_SNMP_BASIC=m -CONFIG_NF_NAT_PROTO_GRE=m CONFIG_NF_NAT_PPTP=m CONFIG_NF_NAT_H323=m CONFIG_IP_NF_IPTABLES=m @@ -1185,13 +1278,13 @@ CONFIG_IP_NF_TARGET_MASQUERADE=m CONFIG_IP_NF_TARGET_NETMAP=m CONFIG_IP_NF_TARGET_REDIRECT=m CONFIG_IP_NF_MANGLE=m -CONFIG_IP_NF_TARGET_CLUSTERIP=m CONFIG_IP_NF_TARGET_ECN=m CONFIG_IP_NF_TARGET_TTL=m CONFIG_IP_NF_RAW=m CONFIG_IP_NF_ARPTABLES=m # CONFIG_IP_NF_ARPFILTER is not set # CONFIG_IP_NF_ARP_MANGLE is not set +# end of IP: Netfilter Configuration # # IPv6: Netfilter Configuration @@ -1202,7 +1295,6 @@ CONFIG_NF_TPROXY_IPV6=m CONFIG_NF_DUP_IPV6=m CONFIG_NF_REJECT_IPV6=m CONFIG_NF_LOG_IPV6=m -CONFIG_NF_NAT_IPV6=m CONFIG_IP6_NF_IPTABLES=m # CONFIG_IP6_NF_MATCH_AH is not set # CONFIG_IP6_NF_MATCH_EUI64 is not set @@ -1218,8 +1310,11 @@ CONFIG_IP6_NF_IPTABLES=m # CONFIG_IP6_NF_MANGLE is not set # CONFIG_IP6_NF_RAW is not set # CONFIG_IP6_NF_NAT is not set +# end of IPv6: Netfilter Configuration + CONFIG_NF_DEFRAG_IPV6=m # CONFIG_NF_TABLES_BRIDGE is not set +# CONFIG_NF_CONNTRACK_BRIDGE is not set # CONFIG_BRIDGE_NF_EBTABLES is not set # CONFIG_BPFILTER is not set # CONFIG_IP_DCCP is not set @@ -1231,10 +1326,10 @@ CONFIG_NF_DEFRAG_IPV6=m CONFIG_STP=m CONFIG_BRIDGE=m CONFIG_BRIDGE_IGMP_SNOOPING=y -CONFIG_HAVE_NET_DSA=y +# CONFIG_BRIDGE_MRP is not set +# CONFIG_BRIDGE_CFM is not set # CONFIG_NET_DSA is not set # CONFIG_VLAN_8021Q is not set -# CONFIG_DECNET is not set CONFIG_LLC=m # CONFIG_LLC2 is not set # CONFIG_ATALK is not set @@ -1255,15 +1350,18 @@ CONFIG_LLC=m # CONFIG_HSR is not set # CONFIG_NET_SWITCHDEV is not set # CONFIG_NET_L3_MASTER_DEV is not set +# CONFIG_QRTR is not set # CONFIG_NET_NCSI is not set +CONFIG_PCPU_DEV_REFCNT=y +CONFIG_MAX_SKB_FRAGS=17 CONFIG_RPS=y CONFIG_RFS_ACCEL=y +CONFIG_SOCK_RX_QUEUE_MAPPING=y CONFIG_XPS=y # CONFIG_CGROUP_NET_PRIO is not set CONFIG_CGROUP_NET_CLASSID=y CONFIG_NET_RX_BUSY_POLL=y CONFIG_BQL=y -# CONFIG_BPF_JIT is not set CONFIG_NET_FLOW_LIMIT=y # @@ -1271,50 +1369,16 @@ CONFIG_NET_FLOW_LIMIT=y # # CONFIG_NET_PKTGEN is not set # CONFIG_NET_DROP_MONITOR is not set +# end of Network testing +# end of Networking options + # CONFIG_HAMRADIO is not set CONFIG_CAN=y CONFIG_CAN_RAW=y CONFIG_CAN_BCM=y CONFIG_CAN_GW=y - -# -# CAN Device Drivers -# -# CONFIG_CAN_VCAN is not set -# CONFIG_CAN_VXCAN is not set -# CONFIG_CAN_SLCAN is not set -CONFIG_CAN_DEV=y -CONFIG_CAN_CALC_BITTIMING=y -# CONFIG_CAN_GRCAN is not set -# CONFIG_CAN_XILINXCAN is not set -# CONFIG_CAN_C_CAN is not set -# CONFIG_CAN_CC770 is not set -# CONFIG_CAN_IFI_CANFD is not set -# CONFIG_CAN_M_CAN is not set -# CONFIG_CAN_PEAK_PCIEFD is not set -CONFIG_CAN_ROCKCHIP=y -CONFIG_CANFD_ROCKCHIP=y -# CONFIG_CAN_SJA1000 is not set -# CONFIG_CAN_SOFTING is not set - -# -# CAN SPI interfaces -# -# CONFIG_CAN_HI311X is not set -# CONFIG_CAN_MCP251X is not set - -# -# CAN USB interfaces -# -# CONFIG_CAN_8DEV_USB is not set -# CONFIG_CAN_EMS_USB is not set -# CONFIG_CAN_ESD_USB2 is not set -# CONFIG_CAN_GS_USB is not set -# CONFIG_CAN_KVASER_USB is not set -# CONFIG_CAN_MCBA_USB is not set -# CONFIG_CAN_PEAK_USB is not set -# CONFIG_CAN_UCAN is not set -# CONFIG_CAN_DEBUG_DEVICES is not set +# CONFIG_CAN_J1939 is not set +# CONFIG_CAN_ISOTP is not set CONFIG_BT=y CONFIG_BT_BREDR=y CONFIG_BT_RFCOMM=y @@ -1323,9 +1387,12 @@ CONFIG_BT_RFCOMM=y CONFIG_BT_HIDP=y CONFIG_BT_HS=y CONFIG_BT_LE=y +CONFIG_BT_LE_L2CAP_ECRED=y # CONFIG_BT_LEDS is not set -# CONFIG_BT_SELFTEST is not set +# CONFIG_BT_MSFTEXT is not set +# CONFIG_BT_AOSPEXT is not set CONFIG_BT_DEBUGFS=y +# CONFIG_BT_SELFTEST is not set # # Bluetooth device drivers @@ -1335,7 +1402,9 @@ CONFIG_BT_BCM=y CONFIG_BT_RTL=y CONFIG_BT_HCIBTUSB=y # CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set +CONFIG_BT_HCIBTUSB_POLL_SYNC=y CONFIG_BT_HCIBTUSB_BCM=y +# CONFIG_BT_HCIBTUSB_MTK is not set CONFIG_BT_HCIBTUSB_RTL=y # CONFIG_BT_HCIBTSDIO is not set CONFIG_BT_HCIUART=y @@ -1348,25 +1417,30 @@ CONFIG_BT_HCIUART_ATH3K=y CONFIG_BT_HCIUART_3WIRE=y # CONFIG_BT_HCIUART_INTEL is not set CONFIG_BT_HCIUART_BCM=y +# CONFIG_BT_HCIUART_RTL is not set # CONFIG_BT_HCIUART_QCA is not set # CONFIG_BT_HCIUART_AG6XX is not set # CONFIG_BT_HCIUART_MRVL is not set # CONFIG_BT_HCIBCM203X is not set +# CONFIG_BT_HCIBCM4377 is not set # CONFIG_BT_HCIBPA10X is not set CONFIG_BT_HCIBFUSB=y CONFIG_BT_HCIVHCI=y CONFIG_BT_MRVL=y CONFIG_BT_MRVL_SDIO=y # CONFIG_BT_ATH3K is not set +# CONFIG_BT_MTKSDIO is not set # CONFIG_BT_MTKUART is not set +# CONFIG_BT_NXPUART is not set +# end of Bluetooth device drivers + # CONFIG_AF_RXRPC is not set # CONFIG_AF_KCM is not set +# CONFIG_MCTP 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 is not set @@ -1380,8 +1454,6 @@ CONFIG_CFG80211_WEXT=y CONFIG_MAC80211=y CONFIG_MAC80211_HAS_RC=y CONFIG_MAC80211_RC_MINSTREL=y -CONFIG_MAC80211_RC_MINSTREL_HT=y -# CONFIG_MAC80211_RC_MINSTREL_VHT is not set CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" # CONFIG_MAC80211_MESH is not set @@ -1400,12 +1472,10 @@ CONFIG_MAC80211_VERBOSE_DEBUG=y # CONFIG_MAC80211_TDLS_DEBUG is not set # CONFIG_MAC80211_DEBUG_COUNTERS is not set CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 -# CONFIG_WIMAX is not set CONFIG_RFKILL=y CONFIG_RFKILL_LEDS=y # CONFIG_RFKILL_INPUT is not set # CONFIG_RFKILL_GPIO is not set -CONFIG_RFKILL_RK=y # CONFIG_NET_9P is not set # CONFIG_CAIF is not set # CONFIG_CEPH_LIB is not set @@ -1416,89 +1486,216 @@ CONFIG_LWTUNNEL=y CONFIG_LWTUNNEL_BPF=y CONFIG_DST_CACHE=y CONFIG_GRO_CELLS=y -# CONFIG_NET_DEVLINK is not set -CONFIG_MAY_USE_DEVLINK=y +CONFIG_NET_SELFTESTS=y +CONFIG_PAGE_POOL=y +# CONFIG_PAGE_POOL_STATS is not set # CONFIG_FAILOVER is not set -CONFIG_HAVE_EBPF_JIT=y +CONFIG_ETHTOOL_NETLINK=y # # Device Drivers # CONFIG_ARM_AMBA=y - -# -# Generic Driver Options -# -CONFIG_UEVENT_HELPER=y -CONFIG_UEVENT_HELPER_PATH="" -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -CONFIG_STANDALONE=y -CONFIG_PREVENT_FIRMWARE_BUILD=y - -# -# Firmware loader -# -CONFIG_FW_LOADER=y -CONFIG_EXTRA_FIRMWARE="" -# CONFIG_FW_LOADER_USER_HELPER is not set -CONFIG_FW_CACHE=y -CONFIG_WANT_DEV_COREDUMP=y -CONFIG_ALLOW_DEV_COREDUMP=y -CONFIG_DEV_COREDUMP=y -# CONFIG_DEBUG_DRIVER is not set -CONFIG_DEBUG_DEVRES=y -# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set +CONFIG_HAVE_PCI=y +CONFIG_PCI=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_DOMAINS_GENERIC=y +CONFIG_PCI_SYSCALL=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCIEAER=y +# CONFIG_PCIEAER_INJECT is not set +# CONFIG_PCIE_ECRC is not set +CONFIG_PCIEASPM=y +CONFIG_PCIEASPM_DEFAULT=y +# CONFIG_PCIEASPM_POWERSAVE is not set +# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set +# CONFIG_PCIEASPM_PERFORMANCE is not set +CONFIG_PCIE_PME=y +# CONFIG_PCIE_DPC is not set +# CONFIG_PCIE_PTM is not set +CONFIG_PCI_MSI=y +CONFIG_PCI_QUIRKS=y +# CONFIG_PCI_DEBUG is not set +# CONFIG_PCI_STUB is not set +# CONFIG_PCI_IOV is not set +# CONFIG_PCI_PRI is not set +# CONFIG_PCI_PASID is not set +# CONFIG_PCIE_BUS_TUNE_OFF is not set +CONFIG_PCIE_BUS_DEFAULT=y +# CONFIG_PCIE_BUS_SAFE is not set +# CONFIG_PCIE_BUS_PERFORMANCE is not set +# CONFIG_PCIE_BUS_PEER2PEER is not set +# CONFIG_VGA_ARB is not set +# CONFIG_HOTPLUG_PCI is not set + +# +# PCI controller drivers +# +# CONFIG_PCIE_ALTERA is not set +# CONFIG_PCI_HOST_THUNDER_PEM is not set +# CONFIG_PCI_HOST_THUNDER_ECAM is not set +# CONFIG_PCI_FTPCI100 is not set +# CONFIG_PCI_HOST_GENERIC is not set +# CONFIG_PCIE_MICROCHIP_HOST is not set +# CONFIG_PCIE_ROCKCHIP_HOST is not set +# CONFIG_PCI_XGENE is not set +# CONFIG_PCIE_XILINX is not set + +# +# Cadence-based PCIe controllers +# +# CONFIG_PCIE_CADENCE_PLAT_HOST is not set +# CONFIG_PCI_J721E_HOST is not set +# end of Cadence-based PCIe controllers + +# +# DesignWare-based PCIe controllers +# +# CONFIG_PCIE_AL is not set +# CONFIG_PCI_MESON is not set +# CONFIG_PCI_HISI is not set +# CONFIG_PCIE_KIRIN is not set +# CONFIG_PCIE_DW_PLAT_HOST is not set +# CONFIG_PCIE_ROCKCHIP_DW_HOST is not set +# end of DesignWare-based PCIe controllers + +# +# Mobiveil-based PCIe controllers +# +# end of Mobiveil-based PCIe controllers +# end of PCI controller drivers + +# +# PCI Endpoint +# +# CONFIG_PCI_ENDPOINT is not set +# end of PCI Endpoint + +# +# PCI switch controller drivers +# +# CONFIG_PCI_SW_SWITCHTEC is not set +# end of PCI switch controller drivers + +# CONFIG_CXL_BUS is not set +# CONFIG_PCCARD is not set +# CONFIG_RAPIDIO is not set + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_DEVTMPFS_SAFE is not set +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y + +# +# Firmware loader +# +CONFIG_FW_LOADER=y +CONFIG_FW_LOADER_DEBUG=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_FW_LOADER_USER_HELPER is not set +# CONFIG_FW_LOADER_COMPRESS is not set +CONFIG_FW_CACHE=y +# CONFIG_FW_UPLOAD is not set +# end of Firmware loader + +CONFIG_WANT_DEV_COREDUMP=y +CONFIG_ALLOW_DEV_COREDUMP=y +CONFIG_DEV_COREDUMP=y +# CONFIG_DEBUG_DRIVER is not set +CONFIG_DEBUG_DEVRES=y +# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set # CONFIG_TEST_ASYNC_DRIVER_PROBE is not set CONFIG_GENERIC_CPU_AUTOPROBE=y CONFIG_GENERIC_CPU_VULNERABILITIES=y +CONFIG_SOC_BUS=y CONFIG_REGMAP=y CONFIG_REGMAP_I2C=y CONFIG_REGMAP_SPI=y CONFIG_REGMAP_MMIO=y CONFIG_REGMAP_IRQ=y -# CONFIG_MALI_MEMORY_GROUP_MANAGER is not set CONFIG_DMA_SHARED_BUFFER=y # CONFIG_DMA_FENCE_TRACE is not set -CONFIG_DMA_CMA=y - -# -# Default contiguous memory area size: -# -CONFIG_CMA_SIZE_MBYTES=16 -CONFIG_CMA_SIZE_SEL_MBYTES=y -# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set -# CONFIG_CMA_SIZE_SEL_MIN is not set -# CONFIG_CMA_SIZE_SEL_MAX is not set -CONFIG_CMA_ALIGNMENT=8 CONFIG_GENERIC_ARCH_TOPOLOGY=y +# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set +# end of Generic Driver Options # # Bus devices # # CONFIG_BRCMSTB_GISB_ARB is not set -# CONFIG_SIMPLE_PM_BUS is not set +# CONFIG_MOXTET is not set # CONFIG_VEXPRESS_CONFIG is not set +# CONFIG_MHI_BUS is not set +# CONFIG_MHI_BUS_EP is not set +# end of Bus devices + CONFIG_CONNECTOR=y CONFIG_PROC_EVENTS=y + +# +# Firmware Drivers +# + +# +# ARM System Control and Management Interface Protocol +# +CONFIG_ARM_SCMI_PROTOCOL=y +# CONFIG_ARM_SCMI_RAW_MODE_SUPPORT is not set +CONFIG_ARM_SCMI_HAVE_TRANSPORT=y +CONFIG_ARM_SCMI_HAVE_SHMEM=y +CONFIG_ARM_SCMI_TRANSPORT_MAILBOX=y +CONFIG_ARM_SCMI_TRANSPORT_SMC=y +# CONFIG_ARM_SCMI_TRANSPORT_SMC_ATOMIC_ENABLE is not set +CONFIG_ARM_SCMI_POWER_DOMAIN=y +# CONFIG_ARM_SCMI_POWER_CONTROL is not set +# end of ARM System Control and Management Interface Protocol + +# CONFIG_ARM_SCPI_PROTOCOL is not set +# CONFIG_FIRMWARE_MEMMAP is not set +# CONFIG_FW_CFG_SYSFS is not set +# CONFIG_ARM_FFA_TRANSPORT is not set +# CONFIG_GOOGLE_FIRMWARE is not set +CONFIG_ARM_PSCI_FW=y +# CONFIG_ARM_PSCI_CHECKER is not set +CONFIG_HAVE_ARM_SMCCC=y +CONFIG_HAVE_ARM_SMCCC_DISCOVERY=y +CONFIG_ARM_SMCCC_SOC_ID=y + +# +# Tegra firmware driver +# +# end of Tegra firmware driver +# end of Firmware Drivers + # CONFIG_GNSS is not set CONFIG_MTD=y # CONFIG_MTD_TESTS is not set -# CONFIG_MTD_REDBOOT_PARTS is not set -CONFIG_MTD_CMDLINE_PARTS=y -# CONFIG_MTD_AFS_PARTS is not set -CONFIG_MTD_OF_PARTS=y -# CONFIG_MTD_AR7_PARTS is not set # # Partition parsers # +# CONFIG_MTD_AR7_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_OF_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_REDBOOT_PARTS is not set +# end of Partition parsers # # User Modules And Translation Layers # CONFIG_MTD_BLKDEVS=y CONFIG_MTD_BLOCK=y + +# +# Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK. +# # CONFIG_FTL is not set # CONFIG_NFTL is not set # CONFIG_INFTL is not set @@ -1522,6 +1719,7 @@ CONFIG_MTD_CFI_I2=y # CONFIG_MTD_RAM is not set # CONFIG_MTD_ROM is not set # CONFIG_MTD_ABSENT is not set +# end of RAM/ROM/Flash chip drivers # # Mapping drivers for chip access @@ -1529,6 +1727,7 @@ CONFIG_MTD_CFI_I2=y # CONFIG_MTD_COMPLEX_MAPPINGS is not set # CONFIG_MTD_INTEL_VR_NOR is not set # CONFIG_MTD_PLATRAM is not set +# end of Mapping drivers for chip access # # Self-contained MTD device drivers @@ -1536,6 +1735,7 @@ CONFIG_MTD_CFI_I2=y # CONFIG_MTD_PMC551 is not set # CONFIG_MTD_DATAFLASH is not set # CONFIG_MTD_MCHP23K256 is not set +# CONFIG_MTD_MCHP48L640 is not set # CONFIG_MTD_SST25L is not set # CONFIG_MTD_SLRAM is not set # CONFIG_MTD_PHRAM is not set @@ -1546,14 +1746,30 @@ CONFIG_MTD_CFI_I2=y # Disk-On-Chip Device Drivers # # CONFIG_MTD_DOCG3 is not set +# end of Self-contained MTD device drivers + +# +# NAND +# # CONFIG_MTD_ONENAND is not set -# CONFIG_MTD_NAND is not set +# CONFIG_MTD_RAW_NAND is not set # CONFIG_MTD_SPI_NAND is not set +# +# ECC engine support +# +# CONFIG_MTD_NAND_ECC_SW_HAMMING is not set +# CONFIG_MTD_NAND_ECC_SW_BCH is not set +# CONFIG_MTD_NAND_ECC_MXIC is not set +# end of ECC engine support +# end of NAND + # # LPDDR & LPDDR2 PCM memory drivers # # CONFIG_MTD_LPDDR is not set +# end of LPDDR & LPDDR2 PCM memory drivers + # CONFIG_MTD_SPI_NOR is not set CONFIG_MTD_UBI=y CONFIG_MTD_UBI_WL_THRESHOLD=4096 @@ -1561,19 +1777,15 @@ CONFIG_MTD_UBI_BEB_LIMIT=20 # CONFIG_MTD_UBI_FASTMAP is not set # CONFIG_MTD_UBI_GLUEBI is not set # CONFIG_MTD_UBI_BLOCK is not set +# CONFIG_MTD_HYPERBUS is not set CONFIG_DTC=y CONFIG_OF=y -CONFIG_DTC_SYMBOLS=y -# CONFIG_DTC_OMIT_DISABLED is not set -# CONFIG_DTC_OMIT_EMPTY is not set # CONFIG_OF_UNITTEST is not set CONFIG_OF_FLATTREE=y CONFIG_OF_EARLY_FLATTREE=y CONFIG_OF_KOBJ=y CONFIG_OF_ADDRESS=y CONFIG_OF_IRQ=y -CONFIG_OF_NET=y -CONFIG_OF_MDIO=y CONFIG_OF_RESERVED_MEM=y # CONFIG_OF_OVERLAY is not set # CONFIG_PARPORT is not set @@ -1582,24 +1794,24 @@ CONFIG_BLK_DEV=y CONFIG_CDROM=y # CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set CONFIG_ZRAM=y +CONFIG_ZRAM_DEF_COMP_LZORLE=y +# CONFIG_ZRAM_DEF_COMP_ZSTD is not set +# CONFIG_ZRAM_DEF_COMP_LZO is not set +CONFIG_ZRAM_DEF_COMP="lzo-rle" # CONFIG_ZRAM_WRITEBACK is not set # CONFIG_ZRAM_MEMORY_TRACKING is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_ZRAM_MULTI_COMP 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_SKD is not set -# CONFIG_BLK_DEV_SX8 is not set CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=1 CONFIG_BLK_DEV_RAM_SIZE=4096 # CONFIG_CDROM_PKTCDVD is not set # CONFIG_ATA_OVER_ETH is not set # CONFIG_BLK_DEV_RBD is not set -# CONFIG_BLK_DEV_RSXX is not set +# CONFIG_BLK_DEV_UBLK is not set # # NVME Support @@ -1607,17 +1819,20 @@ CONFIG_BLK_DEV_RAM_SIZE=4096 CONFIG_NVME_CORE=y CONFIG_BLK_DEV_NVME=y # CONFIG_NVME_MULTIPATH is not set +# CONFIG_NVME_VERBOSE_ERRORS is not set +# CONFIG_NVME_HWMON is not set # CONFIG_NVME_FC is not set +# CONFIG_NVME_TCP is not set +# CONFIG_NVME_AUTH is not set # CONFIG_NVME_TARGET is not set +# end of NVME Support # # Misc devices # -# CONFIG_ROCKCHIP_SCR is not set # CONFIG_AD525X_DPOT is not set # CONFIG_DUMMY_IRQ is not set # CONFIG_PHANTOM is not set -# CONFIG_SGI_IOC4 is not set # CONFIG_TIFM_CORE is not set # CONFIG_ICS932S401 is not set # CONFIG_ENCLOSURE_SERVICES is not set @@ -1630,11 +1845,14 @@ CONFIG_BLK_DEV_NVME=y # CONFIG_SENSORS_APDS990X is not set # CONFIG_HMC6352 is not set # CONFIG_DS1682 is not set -# CONFIG_USB_SWITCH_FSA9480 is not set # CONFIG_LATTICE_ECP3_CONFIG is not set CONFIG_SRAM=y +# CONFIG_DW_XDATA_PCIE is not set # CONFIG_PCI_ENDPOINT_TEST is not set -# CONFIG_PIR_ASCHIP is not set +# CONFIG_XILINX_SDFEC is not set +# CONFIG_HISI_HIKEY_USB is not set +# CONFIG_OPEN_DICE is not set +# CONFIG_VCPU_STALL_DETECTOR is not set # CONFIG_C2PORT is not set # @@ -1647,64 +1865,40 @@ CONFIG_SRAM=y # CONFIG_EEPROM_93CX6 is not set # CONFIG_EEPROM_93XX46 is not set # CONFIG_EEPROM_IDT_89HPESX is not set +# CONFIG_EEPROM_EE1004 is not set +# end of EEPROM support + # CONFIG_CB710_CORE is not set # # Texas Instruments shared transport line discipline # # CONFIG_TI_ST is not set +# end of Texas Instruments shared transport line discipline + # CONFIG_SENSORS_LIS3_SPI is not set # CONFIG_SENSORS_LIS3_I2C is not set # CONFIG_ALTERA_STAPL is not set - -# -# Intel MIC & related support -# - -# -# Intel MIC Bus Driver -# - -# -# SCIF Bus Driver -# - -# -# VOP Bus Driver -# - -# -# Intel MIC Host Driver -# - -# -# Intel MIC Card Driver -# - -# -# SCIF Driver -# - -# -# Intel MIC Coprocessor State Management (COSM) Drivers -# - -# -# VOP Driver -# +# CONFIG_VMWARE_VMCI is not set # CONFIG_GENWQE is not set # CONFIG_ECHO is not set +# CONFIG_BCM_VK is not set +# CONFIG_MISC_ALCOR_PCI is not set # CONFIG_MISC_RTSX_PCI is not set # CONFIG_MISC_RTSX_USB is not set +# CONFIG_UACCE is not set +# CONFIG_PVPANIC is not set +# CONFIG_GP_PCI1XXXX is not set +# end of Misc devices # # SCSI device support # CONFIG_SCSI_MOD=y # CONFIG_RAID_ATTRS is not set +CONFIG_SCSI_COMMON=y CONFIG_SCSI=y CONFIG_SCSI_DMA=y -CONFIG_SCSI_MQ_DEFAULT=y CONFIG_SCSI_PROC_FS=y # @@ -1712,9 +1906,9 @@ CONFIG_SCSI_PROC_FS=y # CONFIG_BLK_DEV_SD=y # CONFIG_CHR_DEV_ST is not set -# CONFIG_CHR_DEV_OSST is not set CONFIG_BLK_DEV_SR=y # CONFIG_CHR_DEV_SG is not set +CONFIG_BLK_DEV_BSG=y # CONFIG_CHR_DEV_SCH is not set # CONFIG_SCSI_CONSTANTS is not set # CONFIG_SCSI_LOGGING is not set @@ -1729,6 +1923,8 @@ CONFIG_SCSI_SPI_ATTRS=y # CONFIG_SCSI_SAS_ATTRS is not set # CONFIG_SCSI_SAS_LIBSAS is not set # CONFIG_SCSI_SRP_ATTRS is not set +# end of SCSI Transports + CONFIG_SCSI_LOWLEVEL=y # CONFIG_ISCSI_TCP is not set # CONFIG_ISCSI_BOOT_SYSFS is not set @@ -1756,11 +1952,15 @@ CONFIG_SCSI_LOWLEVEL=y # CONFIG_MEGARAID_SAS is not set # CONFIG_SCSI_MPT3SAS is not set # CONFIG_SCSI_MPT2SAS is not set +# CONFIG_SCSI_MPI3MR is not set # CONFIG_SCSI_SMARTPQI is not set -# CONFIG_SCSI_UFSHCD is not set # CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_MYRB is not set +# CONFIG_SCSI_MYRS is not set # CONFIG_SCSI_SNIC is not set # CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_FDOMAIN_PCI is not set # CONFIG_SCSI_IPS is not set # CONFIG_SCSI_INITIO is not set # CONFIG_SCSI_INIA100 is not set @@ -1775,12 +1975,13 @@ CONFIG_SCSI_LOWLEVEL=y # CONFIG_SCSI_DEBUG is not set # CONFIG_SCSI_PMCRAID is not set # CONFIG_SCSI_PM8001 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 +# end of SCSI device support + CONFIG_ATA=y +CONFIG_SATA_HOST=y CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATA_FORCE=y CONFIG_SATA_PMP=y # @@ -1789,8 +1990,8 @@ CONFIG_SATA_PMP=y CONFIG_SATA_AHCI=y CONFIG_SATA_MOBILE_LPM_POLICY=0 CONFIG_SATA_AHCI_PLATFORM=y +# CONFIG_AHCI_DWC is not set # CONFIG_AHCI_CEVA is not set -# CONFIG_AHCI_QORIQ is not set # CONFIG_SATA_INIC162X is not set # CONFIG_SATA_ACARD_AHCI is not set # CONFIG_SATA_SIL24 is not set @@ -1807,6 +2008,8 @@ CONFIG_MD=y # # CONFIG_FIREWIRE is not set # CONFIG_FIREWIRE_NOSY is not set +# end of IEEE 1394 (FireWire) support + CONFIG_NETDEVICES=y CONFIG_MII=y CONFIG_NET_CORE=y @@ -1820,7 +2023,9 @@ CONFIG_NET_CORE=y # CONFIG_IPVLAN is not set # CONFIG_VXLAN is not set # CONFIG_GENEVE is not set +# CONFIG_BAREUDP is not set # CONFIG_GTP is not set +# CONFIG_AMT is not set # CONFIG_MACSEC is not set # CONFIG_NETCONSOLE is not set CONFIG_TUN=y @@ -1828,14 +2033,6 @@ CONFIG_TUN=y # CONFIG_VETH is not set # CONFIG_NLMON is not set # CONFIG_ARCNET is not set - -# -# CAIF transport drivers -# - -# -# Distributed Switch Architecture drivers -# CONFIG_ETHERNET=y # CONFIG_NET_VENDOR_3COM is not set # CONFIG_NET_VENDOR_ADAPTEC is not set @@ -1848,12 +2045,12 @@ CONFIG_NET_VENDOR_AMAZON=y # CONFIG_ENA_ETHERNET is not set # CONFIG_NET_VENDOR_AMD is not set CONFIG_NET_VENDOR_AQUANTIA=y +# CONFIG_AQTION is not set # CONFIG_NET_VENDOR_ARC is not set +CONFIG_NET_VENDOR_ASIX=y +# CONFIG_SPI_AX88796C is not set # CONFIG_NET_VENDOR_ATHEROS is not set -CONFIG_NET_VENDOR_AURORA=y -# CONFIG_AURORA_NB8800 is not set # CONFIG_NET_VENDOR_BROADCOM is not set -# CONFIG_NET_VENDOR_BROCADE is not set CONFIG_NET_VENDOR_CADENCE=y # CONFIG_MACB is not set # CONFIG_NET_VENDOR_CAVIUM is not set @@ -1861,38 +2058,52 @@ CONFIG_NET_VENDOR_CADENCE=y # CONFIG_NET_VENDOR_CISCO is not set CONFIG_NET_VENDOR_CORTINA=y # CONFIG_GEMINI_ETHERNET is not set +CONFIG_NET_VENDOR_DAVICOM=y +# CONFIG_DM9051 is not set # CONFIG_DNET is not set # CONFIG_NET_VENDOR_DEC is not set # CONFIG_NET_VENDOR_DLINK is not set # CONFIG_NET_VENDOR_EMULEX is not set +CONFIG_NET_VENDOR_ENGLEDER=y +# CONFIG_TSNEP is not set # CONFIG_NET_VENDOR_EZCHIP is not set +CONFIG_NET_VENDOR_FUNGIBLE=y +# CONFIG_FUN_ETH is not set +CONFIG_NET_VENDOR_GOOGLE=y +# CONFIG_GVE is not set # CONFIG_NET_VENDOR_HISILICON is not set -# CONFIG_NET_VENDOR_HP is not set CONFIG_NET_VENDOR_HUAWEI=y # CONFIG_HINIC is not set # CONFIG_NET_VENDOR_INTEL is not set # CONFIG_JME is not set +CONFIG_NET_VENDOR_ADI=y +CONFIG_NET_VENDOR_LITEX=y +# CONFIG_LITEX_LITEETH is not set # CONFIG_NET_VENDOR_MARVELL is not set # CONFIG_NET_VENDOR_MELLANOX is not set # CONFIG_NET_VENDOR_MICREL is not set # CONFIG_NET_VENDOR_MICROCHIP is not set CONFIG_NET_VENDOR_MICROSEMI=y +CONFIG_NET_VENDOR_MICROSOFT=y # CONFIG_NET_VENDOR_MYRI is not set # CONFIG_FEALNX is not set +CONFIG_NET_VENDOR_NI=y +# CONFIG_NI_XGE_MANAGEMENT_ENET is not set # CONFIG_NET_VENDOR_NATSEMI is not set CONFIG_NET_VENDOR_NETERION=y # CONFIG_S2IO is not set -# CONFIG_VXGE is not set CONFIG_NET_VENDOR_NETRONOME=y # CONFIG_NFP is not set -CONFIG_NET_VENDOR_NI=y # CONFIG_NET_VENDOR_NVIDIA is not set # CONFIG_NET_VENDOR_OKI is not set # CONFIG_ETHOC is not set CONFIG_NET_VENDOR_PACKET_ENGINES=y # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set +CONFIG_NET_VENDOR_PENSANDO=y +# CONFIG_IONIC is not set # CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_BROCADE is not set # CONFIG_NET_VENDOR_QUALCOMM is not set # CONFIG_NET_VENDOR_RDC is not set # CONFIG_NET_VENDOR_REALTEK is not set @@ -1900,71 +2111,86 @@ CONFIG_NET_VENDOR_PACKET_ENGINES=y # CONFIG_NET_VENDOR_ROCKER is not set # CONFIG_NET_VENDOR_SAMSUNG is not set # CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set CONFIG_NET_VENDOR_SOLARFLARE=y # CONFIG_SFC is not set # CONFIG_SFC_FALCON is not set -# CONFIG_NET_VENDOR_SILAN is not set -# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_SFC_SIENA is not set # CONFIG_NET_VENDOR_SMSC is not set CONFIG_NET_VENDOR_SOCIONEXT=y CONFIG_NET_VENDOR_STMICRO=y CONFIG_STMMAC_ETH=y +# CONFIG_STMMAC_SELFTESTS is not set CONFIG_STMMAC_PLATFORM=y # CONFIG_DWMAC_DWC_QOS_ETH is not set CONFIG_DWMAC_GENERIC=y CONFIG_DWMAC_ROCKCHIP=y +# CONFIG_DWMAC_INTEL_PLAT is not set +# CONFIG_DWMAC_LOONGSON is not set # CONFIG_STMMAC_PCI is not set # CONFIG_NET_VENDOR_SUN is not set # CONFIG_NET_VENDOR_SYNOPSYS is not set # CONFIG_NET_VENDOR_TEHUTI is not set # CONFIG_NET_VENDOR_TI is not set +CONFIG_NET_VENDOR_VERTEXCOM=y +# CONFIG_MSE102X is not set # CONFIG_NET_VENDOR_VIA is not set +CONFIG_NET_VENDOR_WANGXUN=y +# CONFIG_NGBE is not set +# CONFIG_TXGBE is not set # CONFIG_NET_VENDOR_WIZNET is not set +CONFIG_NET_VENDOR_XILINX=y +# CONFIG_XILINX_EMACLITE is not set +# CONFIG_XILINX_AXI_EMAC is not set +# CONFIG_XILINX_LL_TEMAC is not set # CONFIG_FDDI is not set # CONFIG_HIPPI is not set -CONFIG_MDIO_DEVICE=y -CONFIG_MDIO_BUS=y -# CONFIG_MDIO_BCM_UNIMAC is not set -# CONFIG_MDIO_BITBANG is not set -# CONFIG_MDIO_BUS_MUX_GPIO is not set -# CONFIG_MDIO_BUS_MUX_MMIOREG is not set -# CONFIG_MDIO_HISI_FEMAC is not set -# CONFIG_MDIO_MSCC_MIIM is not set -# CONFIG_MDIO_OCTEON is not set -# CONFIG_MDIO_THUNDER is not set +CONFIG_PHYLINK=y CONFIG_PHYLIB=y CONFIG_SWPHY=y # CONFIG_LED_TRIGGER_PHY is not set +CONFIG_PHYLIB_LEDS=y +CONFIG_FIXED_PHY=y +# CONFIG_SFP is not set # # MII PHY device drivers # # CONFIG_AMD_PHY is not set +# CONFIG_ADIN_PHY is not set +# CONFIG_ADIN1100_PHY is not set # CONFIG_AQUANTIA_PHY is not set -# CONFIG_AX88796B_PHY is not set -# CONFIG_AT803X_PHY is not set +CONFIG_AX88796B_PHY=y +# CONFIG_BROADCOM_PHY is not set +# CONFIG_BCM54140_PHY is not set # CONFIG_BCM7XXX_PHY is not set +# CONFIG_BCM84881_PHY is not set # CONFIG_BCM87XX_PHY is not set -# CONFIG_BROADCOM_PHY is not set # CONFIG_CICADA_PHY is not set # CONFIG_CORTINA_PHY is not set # CONFIG_DAVICOM_PHY is not set -# CONFIG_DP83822_PHY is not set -# CONFIG_DP83TC811_PHY is not set -# CONFIG_DP83848_PHY is not set -# CONFIG_DP83867_PHY is not set -CONFIG_FIXED_PHY=y # CONFIG_ICPLUS_PHY is not set +# CONFIG_LXT_PHY is not set # CONFIG_INTEL_XWAY_PHY is not set # CONFIG_LSI_ET1011C_PHY is not set -# CONFIG_LXT_PHY is not set # CONFIG_MARVELL_PHY is not set # CONFIG_MARVELL_10G_PHY is not set +# CONFIG_MARVELL_88X2222_PHY is not set +# CONFIG_MAXLINEAR_GPHY is not set +# CONFIG_MEDIATEK_GE_PHY is not set # CONFIG_MICREL_PHY is not set +# CONFIG_MICROCHIP_T1S_PHY is not set # CONFIG_MICROCHIP_PHY is not set # CONFIG_MICROCHIP_T1_PHY is not set # CONFIG_MICROSEMI_PHY is not set +# CONFIG_MOTORCOMM_PHY is not set # CONFIG_NATIONAL_PHY is not set +# CONFIG_NXP_CBTX_PHY is not set +# CONFIG_NXP_C45_TJA11XX_PHY is not set +# CONFIG_NXP_TJA11XX_PHY is not set +# CONFIG_NCN26000_PHY is not set +# CONFIG_AT803X_PHY is not set # CONFIG_QSEMI_PHY is not set # CONFIG_REALTEK_PHY is not set # CONFIG_RENESAS_PHY is not set @@ -1972,9 +2198,89 @@ CONFIG_ROCKCHIP_PHY=y # CONFIG_SMSC_PHY is not set # CONFIG_STE10XP is not set # CONFIG_TERANETICS_PHY is not set +# CONFIG_DP83822_PHY is not set +# CONFIG_DP83TC811_PHY is not set +# CONFIG_DP83848_PHY is not set +# CONFIG_DP83867_PHY is not set +# CONFIG_DP83869_PHY is not set +# CONFIG_DP83TD510_PHY is not set # CONFIG_VITESSE_PHY is not set # CONFIG_XILINX_GMII2RGMII is not set # CONFIG_MICREL_KS8995MA is not set +# CONFIG_PSE_CONTROLLER is not set +CONFIG_CAN_DEV=y +# CONFIG_CAN_VCAN is not set +# CONFIG_CAN_VXCAN is not set +CONFIG_CAN_NETLINK=y +CONFIG_CAN_CALC_BITTIMING=y +# CONFIG_CAN_CAN327 is not set +# CONFIG_CAN_FLEXCAN is not set +# CONFIG_CAN_GRCAN is not set +# CONFIG_CAN_KVASER_PCIEFD is not set +# CONFIG_CAN_SLCAN is not set +# CONFIG_CAN_XILINXCAN is not set +# CONFIG_CAN_C_CAN is not set +# CONFIG_CAN_CC770 is not set +# CONFIG_CAN_CTUCANFD_PCI is not set +# CONFIG_CAN_CTUCANFD_PLATFORM is not set +# CONFIG_CAN_IFI_CANFD is not set +# CONFIG_CAN_M_CAN is not set +# CONFIG_CAN_PEAK_PCIEFD is not set +# CONFIG_CAN_SJA1000 is not set +# CONFIG_CAN_SOFTING is not set + +# +# CAN SPI interfaces +# +# CONFIG_CAN_HI311X is not set +# CONFIG_CAN_MCP251X is not set +# CONFIG_CAN_MCP251XFD is not set +# end of CAN SPI interfaces + +# +# CAN USB interfaces +# +# CONFIG_CAN_8DEV_USB is not set +# CONFIG_CAN_EMS_USB is not set +# CONFIG_CAN_ESD_USB is not set +# CONFIG_CAN_ETAS_ES58X is not set +# CONFIG_CAN_F81604 is not set +# CONFIG_CAN_GS_USB is not set +# CONFIG_CAN_KVASER_USB is not set +# CONFIG_CAN_MCBA_USB is not set +# CONFIG_CAN_PEAK_USB is not set +# CONFIG_CAN_UCAN is not set +# end of CAN USB interfaces + +# CONFIG_CAN_DEBUG_DEVICES is not set +CONFIG_MDIO_DEVICE=y +CONFIG_MDIO_BUS=y +CONFIG_FWNODE_MDIO=y +CONFIG_OF_MDIO=y +CONFIG_MDIO_DEVRES=y +# CONFIG_MDIO_BITBANG is not set +# CONFIG_MDIO_BCM_UNIMAC is not set +# CONFIG_MDIO_HISI_FEMAC is not set +# CONFIG_MDIO_MVUSB is not set +# CONFIG_MDIO_MSCC_MIIM is not set +# CONFIG_MDIO_OCTEON is not set +# CONFIG_MDIO_IPQ4019 is not set +# CONFIG_MDIO_IPQ8064 is not set +# CONFIG_MDIO_THUNDER is not set + +# +# MDIO Multiplexers +# +# CONFIG_MDIO_BUS_MUX_GPIO is not set +# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set +# CONFIG_MDIO_BUS_MUX_MMIOREG is not set + +# +# PCS device drivers +# +CONFIG_PCS_XPCS=y +# end of PCS device drivers + # CONFIG_PPP is not set # CONFIG_SLIP is not set CONFIG_USB_NET_DRIVERS=y @@ -2013,8 +2319,9 @@ CONFIG_USB_NET_QMI_WWAN=y # CONFIG_USB_SIERRA_NET is not set # CONFIG_USB_VL600 is not set # CONFIG_USB_NET_CH9200 is not set +# CONFIG_USB_NET_AQC111 is not set +CONFIG_USB_RTL8153_ECM=y CONFIG_WLAN=y -# CONFIG_WIRELESS_WDS is not set CONFIG_WLAN_VENDOR_ADMTEK=y # CONFIG_ADM8211 is not set CONFIG_WLAN_VENDOR_ATH=y @@ -2038,6 +2345,7 @@ CONFIG_WLAN_VENDOR_BROADCOM=y # CONFIG_BRCMSMAC is not set # CONFIG_BRCMFMAC is not set CONFIG_WLAN_VENDOR_CISCO=y +# CONFIG_AIRO is not set CONFIG_WLAN_VENDOR_INTEL=y # CONFIG_IPW2100 is not set # CONFIG_IPW2200 is not set @@ -2048,7 +2356,6 @@ CONFIG_WLAN_VENDOR_INTERSIL=y # CONFIG_HOSTAP is not set # CONFIG_HERMES is not set # CONFIG_P54_COMMON is not set -# CONFIG_PRISM54 is not set CONFIG_WLAN_VENDOR_MARVELL=y # CONFIG_LIBERTAS is not set CONFIG_LIBERTAS_THINFIRM=y @@ -2062,8 +2369,23 @@ CONFIG_MWIFIEX_SDIO=m CONFIG_WLAN_VENDOR_MEDIATEK=y # CONFIG_MT7601U is not set # CONFIG_MT76x0U is not set +# CONFIG_MT76x0E is not set # CONFIG_MT76x2E is not set # CONFIG_MT76x2U is not set +# CONFIG_MT7603E is not set +# CONFIG_MT7615E is not set +# CONFIG_MT7663U is not set +# CONFIG_MT7663S is not set +# CONFIG_MT7915E is not set +# CONFIG_MT7921E is not set +# CONFIG_MT7921S is not set +# CONFIG_MT7921U is not set +# CONFIG_MT7996E is not set +CONFIG_WLAN_VENDOR_MICROCHIP=y +# CONFIG_WILC1000_SDIO is not set +# CONFIG_WILC1000_SPI is not set +CONFIG_WLAN_VENDOR_PURELIFI=y +# CONFIG_PLFXLC is not set CONFIG_WLAN_VENDOR_RALINK=y # CONFIG_RT2X00 is not set CONFIG_WLAN_VENDOR_REALTEK=y @@ -2080,8 +2402,12 @@ CONFIG_RTL_CARDS=y # CONFIG_RTL8821AE is not set # CONFIG_RTL8192CU is not set # CONFIG_RTL8XXXU is not set +# CONFIG_RTW88 is not set +# CONFIG_RTW89 is not set CONFIG_WLAN_VENDOR_RSI=y # CONFIG_RSI_91X is not set +CONFIG_WLAN_VENDOR_SILABS=y +# CONFIG_WFX is not set CONFIG_WLAN_VENDOR_ST=y # CONFIG_CW1200 is not set CONFIG_WLAN_VENDOR_TI=y @@ -2093,42 +2419,22 @@ CONFIG_WLAN_VENDOR_ZYDAS=y # CONFIG_USB_ZD1201 is not set # CONFIG_ZD1211RW is not set CONFIG_WLAN_VENDOR_QUANTENNA=y -# CONFIG_QTNFMAC_PEARL_PCIE is not set -CONFIG_WL_ROCKCHIP=y -CONFIG_WIFI_BUILD_MODULE=y -CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP=y -# CONFIG_WIFI_GENERATE_RANDOM_MAC_ADDR is not set -CONFIG_BCMDHD=y -CONFIG_AP6XXX=m -CONFIG_AP6XXX_WIFI6=m -# CONFIG_AP6XXX_INDEP_POWER is not set -CONFIG_BCMDHD_FW_PATH="/etc/firmware/fw_bcmdhd.bin" -CONFIG_BCMDHD_NVRAM_PATH="/etc/firmware/nvram.txt" -# CONFIG_BCMDHD_STATIC_IF is not set -CONFIG_RTL_WIRELESS_SOLUTION=y -CONFIG_RTL8188EU=m -CONFIG_RTL8188FU=y -CONFIG_RTL8189FS=m -# CONFIG_RTL8723CS is not set -CONFIG_RTL8723DS=m -CONFIG_RTL8821CS=m -# CONFIG_RTL8822BS is not set -# CONFIG_MVL88W8977 is not set -# CONFIG_CYW_BCMDHD is not set -# CONFIG_MAC80211_HWSIM is not set +# CONFIG_QTNFMAC_PCIE is not set CONFIG_USB_NET_RNDIS_WLAN=y +# CONFIG_MAC80211_HWSIM is not set # CONFIG_VIRT_WIFI is not set +# CONFIG_WAN is not set # -# Enable WiMAX (Networking options) to see the WiMAX drivers +# Wireless WAN # -# CONFIG_WAN is not set +# CONFIG_WWAN is not set +# end of Wireless WAN + # CONFIG_VMXNET3 is not set -# CONFIG_LTE is not set # CONFIG_NETDEVSIM is not set # CONFIG_NET_FAILOVER is not set # CONFIG_ISDN is not set -# CONFIG_NVM is not set # # Input device support @@ -2136,7 +2442,6 @@ CONFIG_USB_NET_RNDIS_WLAN=y CONFIG_INPUT=y CONFIG_INPUT_LEDS=y CONFIG_INPUT_FF_MEMLESS=y -CONFIG_INPUT_POLLDEV=y # CONFIG_INPUT_SPARSEKMAP is not set CONFIG_INPUT_MATRIXKMAP=y @@ -2156,6 +2461,7 @@ CONFIG_KEYBOARD_ADC=y # CONFIG_KEYBOARD_ADP5588 is not set # CONFIG_KEYBOARD_ADP5589 is not set # CONFIG_KEYBOARD_ATKBD is not set +# CONFIG_KEYBOARD_QT1050 is not set # CONFIG_KEYBOARD_QT1070 is not set # CONFIG_KEYBOARD_QT2160 is not set # CONFIG_KEYBOARD_DLINK_DIR685 is not set @@ -2172,15 +2478,16 @@ CONFIG_KEYBOARD_GPIO_POLLED=y # CONFIG_KEYBOARD_MPR121 is not set # CONFIG_KEYBOARD_NEWTON is not set # CONFIG_KEYBOARD_OPENCORES is not set +# CONFIG_KEYBOARD_PINEPHONE 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_TM2_TOUCHKEY is not set # CONFIG_KEYBOARD_XTKBD is not set -CONFIG_KEYBOARD_CROS_EC=y # CONFIG_KEYBOARD_CAP11XX is not set # CONFIG_KEYBOARD_BCM is not set +# CONFIG_KEYBOARD_CYPRESS_SF is not set CONFIG_INPUT_MOUSE=y # CONFIG_MOUSE_PS2 is not set # CONFIG_MOUSE_SERIAL is not set @@ -2197,6 +2504,7 @@ CONFIG_MOUSE_ELAN_I2C_I2C=y CONFIG_INPUT_JOYSTICK=y CONFIG_JOYSTICK_ANALOG=m CONFIG_JOYSTICK_A3D=m +# CONFIG_JOYSTICK_ADC is not set CONFIG_JOYSTICK_ADI=m CONFIG_JOYSTICK_COBRA=m CONFIG_JOYSTICK_GF2K=m @@ -2207,8 +2515,8 @@ CONFIG_JOYSTICK_INTERACT=m CONFIG_JOYSTICK_SIDEWINDER=m CONFIG_JOYSTICK_TMDC=m CONFIG_JOYSTICK_IFORCE=m -CONFIG_JOYSTICK_IFORCE_USB=y -CONFIG_JOYSTICK_IFORCE_232=y +CONFIG_JOYSTICK_IFORCE_USB=m +CONFIG_JOYSTICK_IFORCE_232=m CONFIG_JOYSTICK_WARRIOR=m CONFIG_JOYSTICK_MAGELLAN=m CONFIG_JOYSTICK_SPACEORB=m @@ -2221,12 +2529,13 @@ CONFIG_JOYSTICK_JOYDUMP=m CONFIG_JOYSTICK_XPAD=m CONFIG_JOYSTICK_XPAD_FF=y CONFIG_JOYSTICK_XPAD_LEDS=y -CONFIG_JOYSTICK_SINGLEADCJOY=y # CONFIG_JOYSTICK_PSXPAD_SPI is not set # CONFIG_JOYSTICK_PXRC is not set +# CONFIG_JOYSTICK_QWIIC is not set +# CONFIG_JOYSTICK_FSIA6B is not set +# CONFIG_JOYSTICK_SENSEHAT is not set # CONFIG_INPUT_TABLET is not set CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_PROPERTIES=y # CONFIG_TOUCHSCREEN_ADS7846 is not set # CONFIG_TOUCHSCREEN_AD7877 is not set # CONFIG_TOUCHSCREEN_AD7879 is not set @@ -2238,10 +2547,11 @@ CONFIG_TOUCHSCREEN_ATMEL_MXT=y # CONFIG_TOUCHSCREEN_BU21013 is not set # CONFIG_TOUCHSCREEN_BU21029 is not set # CONFIG_TOUCHSCREEN_CHIPONE_ICN8318 is not set -# CONFIG_TOUCHSCREEN_CY8C40XX is not set +# CONFIG_TOUCHSCREEN_CY8CTMA140 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_CYTTSP5 is not set # CONFIG_TOUCHSCREEN_DYNAPRO is not set # CONFIG_TOUCHSCREEN_HAMPSHIRE is not set # CONFIG_TOUCHSCREEN_EETI is not set @@ -2250,20 +2560,11 @@ CONFIG_TOUCHSCREEN_ATMEL_MXT=y # CONFIG_TOUCHSCREEN_EXC3000 is not set # CONFIG_TOUCHSCREEN_FUJITSU is not set # CONFIG_TOUCHSCREEN_GOODIX is not set -# CONFIG_TOUCHSCREEN_GSLX6801 is not set -# CONFIG_TOUCHSCREEN_GSLX680A is not set -# CONFIG_TOUCHSCREEN_GSLX680_D708 is not set -# CONFIG_TOUCHSCREEN_GSLX680_PAD is not set -# CONFIG_TOUCHSCREEN_GSLX680_VR is not set -CONFIG_TOUCHSCREEN_GSLX680_FIREFLY=y -# CONFIG_TOUCHSCREEN_GSL3673 is not set -# CONFIG_TOUCHSCREEN_GSL3673_800X1280 is not set -# CONFIG_TOUCHSCREEN_GSL3676 is not set -# CONFIG_TOUCHSCREEN_GT9XX is not set # CONFIG_TOUCHSCREEN_HIDEEP is not set -# CONFIG_TOUCHSCREEN_HYN_CST2XX is not set +# CONFIG_TOUCHSCREEN_HYCON_HY46XX is not set CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=y # CONFIG_TOUCHSCREEN_ILI210X is not set +# CONFIG_TOUCHSCREEN_ILITEK is not set # CONFIG_TOUCHSCREEN_S6SY761 is not set # CONFIG_TOUCHSCREEN_GUNZE is not set # CONFIG_TOUCHSCREEN_EKTF2127 is not set @@ -2271,15 +2572,16 @@ CONFIG_TOUCHSCREEN_ELAN=y # CONFIG_TOUCHSCREEN_ELO is not set # CONFIG_TOUCHSCREEN_WACOM_W8001 is not set # CONFIG_TOUCHSCREEN_WACOM_I2C is not set -CONFIG_TOUCHSCREEN_WACOM_W9013=y # CONFIG_TOUCHSCREEN_MAX11801 is not set # CONFIG_TOUCHSCREEN_MCS5000 is not set # CONFIG_TOUCHSCREEN_MMS114 is not set # CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set +# CONFIG_TOUCHSCREEN_MSG2638 is not set # CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_NOVATEK_NVT_TS is not set +# CONFIG_TOUCHSCREEN_IMAGIS is not set # CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set # CONFIG_TOUCHSCREEN_INEXIO is not set -# CONFIG_TOUCHSCREEN_MK712 is not set # CONFIG_TOUCHSCREEN_PENMOUNT is not set # CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set @@ -2321,73 +2623,20 @@ CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y # CONFIG_TOUCHSCREEN_TPS6507X is not set # CONFIG_TOUCHSCREEN_ZET6223 is not set # CONFIG_TOUCHSCREEN_ZFORCE is not set +# CONFIG_TOUCHSCREEN_COLIBRI_VF50 is not set # CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set -# CONFIG_TOUCHSCREEN_VTL_CT36X is not set -CONFIG_TOUCHSCREEN_GT1X=y -# CONFIG_TOUCHSCREEN_FTS is not set -# CONFIG_TOUCHSCREEN_FT5436 is not set -CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5=y -CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_DEVICETREE_SUPPORT=y -CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_I2C=y -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_SPI is not set -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_MT_A is not set -CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_MT_B=y -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_BUTTON is not set -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_PROXIMITY is not set -CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_DEVICE_ACCESS=y -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_DEVICE_ACCESS_API is not set -CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_LOADER=y -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_PLATFORM_FW_UPGRADE is not set -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_BINARY_FW_UPGRADE is not set -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_PLATFORM_TTCONFIG_UPGRADE is not set -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_MANUAL_TTCONFIG_UPGRADE is not set -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_DEBUG_MDL is not set -CONFIG_ROCKCHIP_REMOTECTL=y -CONFIG_ROCKCHIP_REMOTECTL_PWM=y - -# -# handle all sensors -# -CONFIG_SENSOR_DEVICE=y -# CONFIG_ANGLE_DEVICE is not set -CONFIG_GSENSOR_DEVICE=y -# CONFIG_GS_MMA8452 is not set -# CONFIG_STK8BAXX_ACC is not set -# CONFIG_MPU6880_ACC is not set -# CONFIG_MPU6500_ACC is not set -# CONFIG_GS_KXTIK is not set -# CONFIG_GS_KXTJ9 is not set -# CONFIG_GS_LIS3DH is not set -# CONFIG_GS_MMA7660 is not set -CONFIG_GS_MC3230=y -# CONFIG_GS_SC7660 is not set -# CONFIG_GS_SC7A20 is not set -# CONFIG_GS_SC7A30 is not set -# CONFIG_GS_MXC6225 is not set -# CONFIG_GS_MXC6655XA is not set -# CONFIG_GS_DMT10 is not set -# CONFIG_GS_LSM303D is not set -# CONFIG_GS_BMA023 is not set -# CONFIG_LSM330_ACC is not set -# CONFIG_BMA2XX_ACC is not set -# CONFIG_GS_DA223 is not set -# CONFIG_ICM2060X_ACC is not set -# CONFIG_COMPASS_DEVICE is not set -# CONFIG_GYROSCOPE_DEVICE is not set -# CONFIG_LIGHT_DEVICE is not set -# CONFIG_PROXIMITY_DEVICE is not set -# CONFIG_TEMPERATURE_DEVICE is not set -# CONFIG_PRESSURE_DEVICE is not set -# CONFIG_HALL_DEVICE is not set +# CONFIG_TOUCHSCREEN_IQS5XX is not set +# CONFIG_TOUCHSCREEN_ZINITIX is not set +# CONFIG_TOUCHSCREEN_HIMAX_HX83112B is not set CONFIG_INPUT_MISC=y # CONFIG_INPUT_AD714X is not set # CONFIG_INPUT_ATMEL_CAPTOUCH is not set # CONFIG_INPUT_BMA150 is not set # CONFIG_INPUT_E3X0_BUTTON is not set # CONFIG_INPUT_MMA8450 is not set -# CONFIG_INPUT_GP2A is not set # CONFIG_INPUT_GPIO_BEEPER is not set # CONFIG_INPUT_GPIO_DECODER is not set +# CONFIG_INPUT_GPIO_VIBRA is not set # CONFIG_INPUT_ATI_REMOTE2 is not set # CONFIG_INPUT_KEYSPAN_REMOTE is not set # CONFIG_INPUT_KXTJ9 is not set @@ -2401,10 +2650,13 @@ CONFIG_INPUT_UINPUT=y # CONFIG_INPUT_PWM_VIBRA is not set CONFIG_INPUT_RK805_PWRKEY=y # CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set +# CONFIG_INPUT_DA7280_HAPTICS is not set # CONFIG_INPUT_ADXL34X is not set # CONFIG_INPUT_IMS_PCU is not set +# CONFIG_INPUT_IQS269A is not set +# CONFIG_INPUT_IQS626A is not set +# CONFIG_INPUT_IQS7222 is not set # CONFIG_INPUT_CMA3000 is not set -# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set # CONFIG_INPUT_DRV260X_HAPTICS is not set # CONFIG_INPUT_DRV2665_HAPTICS is not set # CONFIG_INPUT_DRV2667_HAPTICS is not set @@ -2430,6 +2682,8 @@ CONFIG_GAMEPORT=m # CONFIG_GAMEPORT_L4 is not set # CONFIG_GAMEPORT_EMU10K1 is not set # CONFIG_GAMEPORT_FM801 is not set +# end of Hardware I/O ports +# end of Input device support # # Character devices @@ -2443,12 +2697,8 @@ CONFIG_HW_CONSOLE=y CONFIG_VT_HW_CONSOLE_BINDING=y CONFIG_UNIX98_PTYS=y # CONFIG_LEGACY_PTYS is not set -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_NOZOMI is not set -# CONFIG_N_GSM is not set -# CONFIG_TRACE_SINK is not set +CONFIG_LEGACY_TIOCSTI=y CONFIG_LDISC_AUTOLOAD=y -CONFIG_DEVMEM=y # # Serial drivers @@ -2456,6 +2706,7 @@ CONFIG_DEVMEM=y CONFIG_SERIAL_EARLYCON=y CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y +CONFIG_SERIAL_8250_16550A_VARIANTS=y # CONFIG_SERIAL_8250_FINTEK is not set CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_DMA=y @@ -2463,11 +2714,12 @@ CONFIG_SERIAL_8250_DMA=y CONFIG_SERIAL_8250_NR_UARTS=10 CONFIG_SERIAL_8250_RUNTIME_UARTS=10 # CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_ASPEED_VUART is not set +# CONFIG_SERIAL_8250_PCI1XXXX is not set +CONFIG_SERIAL_8250_DWLIB=y CONFIG_SERIAL_8250_FSL=y CONFIG_SERIAL_8250_DW=y # CONFIG_SERIAL_8250_RT288X is not set -# CONFIG_SERIAL_8250_MOXA is not set +CONFIG_SERIAL_8250_PERICOM=y CONFIG_SERIAL_OF_PLATFORM=y # @@ -2475,44 +2727,54 @@ CONFIG_SERIAL_OF_PLATFORM=y # # CONFIG_SERIAL_AMBA_PL010 is not set # CONFIG_SERIAL_AMBA_PL011 is not set -# CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set +# CONFIG_SERIAL_EARLYCON_SEMIHOST is not set # CONFIG_SERIAL_MAX3100 is not set # CONFIG_SERIAL_MAX310X is not set # CONFIG_SERIAL_UARTLITE is not set CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y # CONFIG_SERIAL_JSM is not set -# CONFIG_SERIAL_MSM_GENI_HALF_SAMPLING is not set -# CONFIG_SERIAL_MSM_GENI_EARLY_CONSOLE is not set +# CONFIG_SERIAL_SIFIVE is not set # 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_RP2 is not set # CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_FSL_LINFLEXUART is not set # CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set +# CONFIG_SERIAL_SPRD is not set +# end of Serial drivers + +CONFIG_SERIAL_MCTRL_GPIO=y +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_N_GSM is not set +# CONFIG_NOZOMI is not set +# CONFIG_NULL_TTY is not set +# CONFIG_HVC_DCC is not set CONFIG_SERIAL_DEV_BUS=y CONFIG_SERIAL_DEV_CTRL_TTYPORT=y # CONFIG_TTY_PRINTK is not set -# CONFIG_HVC_DCC is not set +# CONFIG_VIRTIO_CONSOLE is not set # CONFIG_IPMI_HANDLER is not set CONFIG_HW_RANDOM=y # CONFIG_HW_RANDOM_TIMERIOMEM is not set -CONFIG_HW_RANDOM_CAVIUM=y -CONFIG_HW_RANDOM_ROCKCHIP=y +# CONFIG_HW_RANDOM_BA431 is not set +# CONFIG_HW_RANDOM_CCTRNG is not set +# CONFIG_HW_RANDOM_XIPHERA is not set +CONFIG_HW_RANDOM_ARM_SMCCC_TRNG=y +CONFIG_HW_RANDOM_CN10K=y # CONFIG_APPLICOM is not set - -# -# PCMCIA character devices -# -# CONFIG_RAW_DRIVER is not set +CONFIG_DEVMEM=y +CONFIG_DEVPORT=y CONFIG_TCG_TPM=y CONFIG_HW_RANDOM_TPM=y # CONFIG_TCG_TIS is not set # CONFIG_TCG_TIS_SPI is not set +# CONFIG_TCG_TIS_I2C is not set +# CONFIG_TCG_TIS_I2C_CR50 is not set # CONFIG_TCG_TIS_I2C_ATMEL is not set CONFIG_TCG_TIS_I2C_INFINEON=y # CONFIG_TCG_TIS_I2C_NUVOTON is not set @@ -2520,9 +2782,9 @@ CONFIG_TCG_TIS_I2C_INFINEON=y # CONFIG_TCG_VTPM_PROXY is not set # CONFIG_TCG_TIS_ST33ZP24_I2C is not set # CONFIG_TCG_TIS_ST33ZP24_SPI is not set -CONFIG_DEVPORT=y # CONFIG_XILLYBUS is not set -# CONFIG_RANDOM_TRUST_BOOTLOADER is not set +# CONFIG_XILLYUSB is not set +# end of Character devices # # I2C support @@ -2546,8 +2808,9 @@ CONFIG_I2C_MUX=y # CONFIG_I2C_MUX_REG is not set # CONFIG_I2C_DEMUX_PINCTRL is not set # CONFIG_I2C_MUX_MLXCPLD is not set +# end of Multiplexer I2C Chip support + CONFIG_I2C_HELPER_AUTO=y -CONFIG_I2C_ALGOBIT=y # # I2C Hardware Bus support @@ -2565,6 +2828,7 @@ CONFIG_I2C_ALGOBIT=y # CONFIG_I2C_ISCH is not set # CONFIG_I2C_PIIX4 is not set # CONFIG_I2C_NFORCE2 is not set +# CONFIG_I2C_NVIDIA_GPU is not set # CONFIG_I2C_SIS5595 is not set # CONFIG_I2C_SIS630 is not set # CONFIG_I2C_SIS96X is not set @@ -2580,6 +2844,7 @@ CONFIG_I2C_ALGOBIT=y # CONFIG_I2C_DESIGNWARE_PCI is not set # CONFIG_I2C_EMEV2 is not set # CONFIG_I2C_GPIO is not set +# CONFIG_I2C_HISI is not set # CONFIG_I2C_NOMADIK is not set # CONFIG_I2C_OCORES is not set # CONFIG_I2C_PCA_PLATFORM is not set @@ -2592,7 +2857,8 @@ CONFIG_I2C_RK3X=y # External I2C/SMBus adapter drivers # # CONFIG_I2C_DIOLAN_U2C is not set -# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_CP2615 is not set +# CONFIG_I2C_PCI1XXXX is not set # CONFIG_I2C_ROBOTFUZZ_OSIF is not set # CONFIG_I2C_TAOS_EVM is not set # CONFIG_I2C_TINY_USB is not set @@ -2600,12 +2866,17 @@ CONFIG_I2C_RK3X=y # # Other I2C/SMBus bus drivers # -CONFIG_I2C_CROS_EC_TUNNEL=y +# CONFIG_I2C_VIRTIO is not set +# end of I2C Hardware Bus support + # CONFIG_I2C_STUB is not set # CONFIG_I2C_SLAVE is not set # CONFIG_I2C_DEBUG_CORE is not set # CONFIG_I2C_DEBUG_ALGO is not set # CONFIG_I2C_DEBUG_BUS is not set +# end of I2C support + +# CONFIG_I3C is not set CONFIG_SPI=y # CONFIG_SPI_DEBUG is not set CONFIG_SPI_MASTER=y @@ -2618,18 +2889,31 @@ CONFIG_SPI_MASTER=y # CONFIG_SPI_AXI_SPI_ENGINE is not set CONFIG_SPI_BITBANG=y # CONFIG_SPI_CADENCE is not set +# CONFIG_SPI_CADENCE_QUADSPI is not set # CONFIG_SPI_DESIGNWARE is not set # CONFIG_SPI_GPIO is not set # CONFIG_SPI_FSL_SPI is not set +# CONFIG_SPI_MICROCHIP_CORE is not set +# CONFIG_SPI_MICROCHIP_CORE_QSPI is not set # CONFIG_SPI_OC_TINY is not set +# CONFIG_SPI_PCI1XXXX is not set # CONFIG_SPI_PL022 is not set # CONFIG_SPI_PXA2XX is not set CONFIG_SPI_ROCKCHIP=y +# CONFIG_SPI_ROCKCHIP_SFC is not set # CONFIG_SPI_SC18IS602 is not set +# CONFIG_SPI_SIFIVE is not set +# CONFIG_SPI_MXIC is not set # CONFIG_SPI_THUNDERX is not set # CONFIG_SPI_XCOMM is not set # CONFIG_SPI_XILINX is not set # CONFIG_SPI_ZYNQMP_GQSPI is not set +# CONFIG_SPI_AMD is not set + +# +# SPI Multiplexer support +# +# CONFIG_SPI_MUX is not set # # SPI Protocol Masters @@ -2658,28 +2942,45 @@ CONFIG_PPS=y # PTP clock support # CONFIG_PTP_1588_CLOCK=y +CONFIG_PTP_1588_CLOCK_OPTIONAL=y # # Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. # +CONFIG_PTP_1588_CLOCK_KVM=y +# CONFIG_PTP_1588_CLOCK_IDT82P33 is not set +# CONFIG_PTP_1588_CLOCK_IDTCM is not set +# CONFIG_PTP_1588_CLOCK_OCP is not set +# end of PTP clock support + CONFIG_PINCTRL=y CONFIG_PINMUX=y CONFIG_PINCONF=y CONFIG_GENERIC_PINCONF=y # CONFIG_DEBUG_PINCTRL is not set -# CONFIG_PINCTRL_AMD is not set +# CONFIG_PINCTRL_CY8C95X0 is not set # CONFIG_PINCTRL_MCP23S08 is not set +# CONFIG_PINCTRL_MICROCHIP_SGPIO is not set +# CONFIG_PINCTRL_OCELOT is not set +CONFIG_PINCTRL_RK805=y CONFIG_PINCTRL_ROCKCHIP=y # CONFIG_PINCTRL_SINGLE is not set +# CONFIG_PINCTRL_STMFX is not set # CONFIG_PINCTRL_SX150X is not set -CONFIG_PINCTRL_RK628=y -CONFIG_PINCTRL_RK805=y + +# +# Renesas pinctrl drivers +# +# end of Renesas pinctrl drivers + CONFIG_GPIOLIB=y CONFIG_GPIOLIB_FASTPATH_LIMIT=512 CONFIG_OF_GPIO=y CONFIG_GPIOLIB_IRQCHIP=y # CONFIG_DEBUG_GPIO is not set CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_CDEV=y +CONFIG_GPIO_CDEV_V1=y CONFIG_GPIO_GENERIC=y # @@ -2687,35 +2988,44 @@ CONFIG_GPIO_GENERIC=y # # CONFIG_GPIO_74XX_MMIO is not set # CONFIG_GPIO_ALTERA is not set +# CONFIG_GPIO_CADENCE is not set # CONFIG_GPIO_DWAPB is not set # CONFIG_GPIO_FTGPIO010 is not set CONFIG_GPIO_GENERIC_PLATFORM=y # CONFIG_GPIO_GRGPIO is not set +# CONFIG_GPIO_HISI is not set # CONFIG_GPIO_HLWD is not set +# CONFIG_GPIO_LOGICVC is not set # CONFIG_GPIO_MB86S7X is not set -# CONFIG_GPIO_MOCKUP is not set # CONFIG_GPIO_PL061 is not set CONFIG_GPIO_ROCKCHIP=y +# CONFIG_GPIO_SIFIVE is not set # CONFIG_GPIO_SYSCON is not set # CONFIG_GPIO_XGENE is not set # CONFIG_GPIO_XILINX is not set +# CONFIG_GPIO_AMD_FCH is not set +# end of Memory mapped GPIO drivers # # I2C GPIO expanders # -# CONFIG_GPIO_ADP5588 is not set # CONFIG_GPIO_ADNP is not set +# CONFIG_GPIO_FXL6408 is not set +# CONFIG_GPIO_GW_PLD is not set # CONFIG_GPIO_MAX7300 is not set # CONFIG_GPIO_MAX732X is not set CONFIG_GPIO_PCA953X=y # CONFIG_GPIO_PCA953X_IRQ is not set +# CONFIG_GPIO_PCA9570 is not set # CONFIG_GPIO_PCF857X is not set # CONFIG_GPIO_TPIC2810 is not set +# end of I2C GPIO expanders # # MFD GPIO expanders # # CONFIG_GPIO_TPS6586X is not set +# end of MFD GPIO expanders # # PCI GPIO expanders @@ -2724,6 +3034,7 @@ CONFIG_GPIO_PCA953X=y # CONFIG_GPIO_PCI_IDIO_16 is not set # CONFIG_GPIO_PCIE_IDIO_24 is not set # CONFIG_GPIO_RDC321X is not set +# end of PCI GPIO expanders # # SPI GPIO expanders @@ -2734,63 +3045,81 @@ CONFIG_GPIO_PCA953X=y # CONFIG_GPIO_MC33880 is not set # CONFIG_GPIO_PISOSR is not set # CONFIG_GPIO_XRA1403 is not set +# end of SPI GPIO expanders # # USB GPIO expanders # +# end of USB GPIO expanders + +# +# Virtual GPIO drivers +# +# CONFIG_GPIO_AGGREGATOR is not set +# CONFIG_GPIO_LATCH is not set +# CONFIG_GPIO_MOCKUP is not set +# CONFIG_GPIO_SIM is not set +# end of Virtual GPIO drivers + # CONFIG_W1 is not set -CONFIG_POWER_AVS=y -CONFIG_ROCKCHIP_IODOMAIN=y CONFIG_POWER_RESET=y # CONFIG_POWER_RESET_BRCMSTB is not set CONFIG_POWER_RESET_GPIO=y CONFIG_POWER_RESET_GPIO_RESTART=y # CONFIG_POWER_RESET_LTC2952 is not set +# CONFIG_POWER_RESET_REGULATOR is not set # CONFIG_POWER_RESET_RESTART is not set # CONFIG_POWER_RESET_XGENE is not set # CONFIG_POWER_RESET_SYSCON is not set # CONFIG_POWER_RESET_SYSCON_POWEROFF is not set CONFIG_REBOOT_MODE=y CONFIG_SYSCON_REBOOT_MODE=y +# CONFIG_NVMEM_REBOOT_MODE is not set CONFIG_POWER_SUPPLY=y # CONFIG_POWER_SUPPLY_DEBUG is not set -# CONFIG_PDA_POWER is not set +CONFIG_POWER_SUPPLY_HWMON=y # CONFIG_GENERIC_ADC_BATTERY is not set +# CONFIG_IP5XXX_POWER is not set # CONFIG_TEST_POWER is not set # CONFIG_CHARGER_ADP5061 is not set +CONFIG_BATTERY_CW2015=y # CONFIG_BATTERY_DS2780 is not set # CONFIG_BATTERY_DS2781 is not set # CONFIG_BATTERY_DS2782 is not set -# CONFIG_BATTERY_LEGO_EV3 is not set +# CONFIG_BATTERY_SAMSUNG_SDI is not set CONFIG_BATTERY_SBS=y # CONFIG_CHARGER_SBS is not set # CONFIG_MANAGER_SBS is not set # CONFIG_BATTERY_BQ27XXX is not set # CONFIG_BATTERY_MAX17040 is not set # CONFIG_BATTERY_MAX17042 is not set -# CONFIG_CHARGER_ISP1704 is not set # CONFIG_CHARGER_MAX8903 is not set # CONFIG_CHARGER_LP8727 is not set CONFIG_CHARGER_GPIO=y # CONFIG_CHARGER_MANAGER is not set -# CONFIG_CHARGER_LTC3651 is not set +# CONFIG_CHARGER_LT3651 is not set +# CONFIG_CHARGER_LTC4162L is not set # CONFIG_CHARGER_DETECTOR_MAX14656 is not set +# CONFIG_CHARGER_MAX77976 is not set # CONFIG_CHARGER_BQ2415X is not set # CONFIG_CHARGER_BQ24190 is not set # CONFIG_CHARGER_BQ24257 is not set CONFIG_CHARGER_BQ24735=y -# CONFIG_CHARGER_BQ25700 is not set +# CONFIG_CHARGER_BQ2515X is not set # CONFIG_CHARGER_BQ25890 is not set +# CONFIG_CHARGER_BQ25980 is not set +# CONFIG_CHARGER_BQ256XX is not set +CONFIG_CHARGER_RK817=y # CONFIG_CHARGER_SMB347 is not set # CONFIG_BATTERY_GAUGE_LTC2941 is not set +# CONFIG_BATTERY_GOLDFISH is not set +# CONFIG_BATTERY_RT5033 is not set # CONFIG_CHARGER_RT9455 is not set -# CONFIG_CHARGER_CROS_USBPD is not set -CONFIG_BATTERY_CW2015=y -# CONFIG_BATTERY_RK816 is not set -CONFIG_BATTERY_RK817=y -CONFIG_CHARGER_RK817=y -# CONFIG_BATTERY_RK818 is not set -# CONFIG_CHARGER_RK818 is not set +# CONFIG_CHARGER_RT9467 is not set +# CONFIG_CHARGER_RT9471 is not set +# CONFIG_CHARGER_UCS1002 is not set +# CONFIG_CHARGER_BD99954 is not set +# CONFIG_BATTERY_UG3105 is not set CONFIG_HWMON=y # CONFIG_HWMON_DEBUG_CHIP is not set @@ -2805,6 +3134,7 @@ CONFIG_HWMON=y # CONFIG_SENSORS_ADM1026 is not set # CONFIG_SENSORS_ADM1029 is not set # CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM1177 is not set # CONFIG_SENSORS_ADM9240 is not set # CONFIG_SENSORS_ADT7310 is not set # CONFIG_SENSORS_ADT7410 is not set @@ -2812,10 +3142,16 @@ CONFIG_HWMON=y # CONFIG_SENSORS_ADT7462 is not set # CONFIG_SENSORS_ADT7470 is not set # CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_AHT10 is not set +# CONFIG_SENSORS_AQUACOMPUTER_D5NEXT is not set +# CONFIG_SENSORS_AS370 is not set # CONFIG_SENSORS_ASC7621 is not set +# CONFIG_SENSORS_AXI_FAN_CONTROL is not set # CONFIG_SENSORS_ARM_SCMI is not set -# CONFIG_SENSORS_ASPEED is not set # CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_CORSAIR_CPRO is not set +# CONFIG_SENSORS_CORSAIR_PSU is not set +# CONFIG_SENSORS_DRIVETEMP is not set # CONFIG_SENSORS_DS620 is not set # CONFIG_SENSORS_DS1621 is not set # CONFIG_SENSORS_I5K_AMB is not set @@ -2835,7 +3171,10 @@ CONFIG_HWMON=y # CONFIG_SENSORS_POWR1220 is not set # CONFIG_SENSORS_LINEAGE is not set # CONFIG_SENSORS_LTC2945 is not set +# CONFIG_SENSORS_LTC2947_I2C is not set +# CONFIG_SENSORS_LTC2947_SPI is not set # CONFIG_SENSORS_LTC2990 is not set +# CONFIG_SENSORS_LTC2992 is not set # CONFIG_SENSORS_LTC4151 is not set # CONFIG_SENSORS_LTC4215 is not set # CONFIG_SENSORS_LTC4222 is not set @@ -2843,19 +3182,27 @@ CONFIG_HWMON=y # CONFIG_SENSORS_LTC4260 is not set # CONFIG_SENSORS_LTC4261 is not set # CONFIG_SENSORS_MAX1111 is not set +# CONFIG_SENSORS_MAX127 is not set # CONFIG_SENSORS_MAX16065 is not set # CONFIG_SENSORS_MAX1619 is not set # CONFIG_SENSORS_MAX1668 is not set # CONFIG_SENSORS_MAX197 is not set # CONFIG_SENSORS_MAX31722 is not set +# CONFIG_SENSORS_MAX31730 is not set +# CONFIG_SENSORS_MAX31760 is not set +# CONFIG_MAX31827 is not set +# CONFIG_SENSORS_MAX6620 is not set # CONFIG_SENSORS_MAX6621 is not set # CONFIG_SENSORS_MAX6639 is not set # CONFIG_SENSORS_MAX6642 is not set # CONFIG_SENSORS_MAX6650 is not set # CONFIG_SENSORS_MAX6697 is not set # CONFIG_SENSORS_MAX31790 is not set +# CONFIG_SENSORS_MC34VR500 is not set # CONFIG_SENSORS_MCP3021 is not set # CONFIG_SENSORS_TC654 is not set +# CONFIG_SENSORS_TPS23861 is not set +# CONFIG_SENSORS_MR75203 is not set # CONFIG_SENSORS_ADCXX is not set # CONFIG_SENSORS_LM63 is not set # CONFIG_SENSORS_LM70 is not set @@ -2878,20 +3225,28 @@ CONFIG_HWMON=y # CONFIG_SENSORS_NTC_THERMISTOR is not set # CONFIG_SENSORS_NCT6683 is not set # CONFIG_SENSORS_NCT6775 is not set +# CONFIG_SENSORS_NCT6775_I2C is not set # CONFIG_SENSORS_NCT7802 is not set # CONFIG_SENSORS_NCT7904 is not set # CONFIG_SENSORS_NPCM7XX is not set +# CONFIG_SENSORS_NZXT_KRAKEN2 is not set +# CONFIG_SENSORS_NZXT_SMART2 is not set +# CONFIG_SENSORS_OCC_P8_I2C is not set # CONFIG_SENSORS_PCF8591 is not set # CONFIG_PMBUS is not set # CONFIG_SENSORS_PWM_FAN is not set +# CONFIG_SENSORS_SBTSI is not set +# CONFIG_SENSORS_SBRMI is not set # CONFIG_SENSORS_SHT15 is not set # CONFIG_SENSORS_SHT21 is not set # CONFIG_SENSORS_SHT3x is not set +# CONFIG_SENSORS_SHT4x is not set # CONFIG_SENSORS_SHTC1 is not set # CONFIG_SENSORS_SIS5595 is not set # CONFIG_SENSORS_DME1737 is not set # CONFIG_SENSORS_EMC1403 is not set # CONFIG_SENSORS_EMC2103 is not set +# CONFIG_SENSORS_EMC2305 is not set # CONFIG_SENSORS_EMC6W201 is not set # CONFIG_SENSORS_SMSC47M1 is not set # CONFIG_SENSORS_SMSC47M192 is not set @@ -2901,12 +3256,12 @@ CONFIG_HWMON=y # CONFIG_SENSORS_STTS751 is not set # CONFIG_SENSORS_SMM665 is not set # CONFIG_SENSORS_ADC128D818 is not set -# CONFIG_SENSORS_ADS1015 is not set # CONFIG_SENSORS_ADS7828 is not set # CONFIG_SENSORS_ADS7871 is not set # CONFIG_SENSORS_AMC6821 is not set # CONFIG_SENSORS_INA209 is not set # CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_INA238 is not set # CONFIG_SENSORS_INA3221 is not set # CONFIG_SENSORS_TC74 is not set # CONFIG_SENSORS_THMC50 is not set @@ -2915,6 +3270,8 @@ CONFIG_HWMON=y # CONFIG_SENSORS_TMP108 is not set # CONFIG_SENSORS_TMP401 is not set # CONFIG_SENSORS_TMP421 is not set +# CONFIG_SENSORS_TMP464 is not set +# CONFIG_SENSORS_TMP513 is not set # CONFIG_SENSORS_VIA686A is not set # CONFIG_SENSORS_VT1211 is not set # CONFIG_SENSORS_VT8231 is not set @@ -2929,6 +3286,7 @@ CONFIG_HWMON=y # CONFIG_SENSORS_W83627HF is not set # CONFIG_SENSORS_W83627EHF is not set CONFIG_THERMAL=y +# CONFIG_THERMAL_NETLINK is not set # CONFIG_THERMAL_STATISTICS is not set CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 CONFIG_THERMAL_HWMON=y @@ -2944,23 +3302,24 @@ CONFIG_THERMAL_GOV_STEP_WISE=y # CONFIG_THERMAL_GOV_USER_SPACE is not set CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y CONFIG_CPU_THERMAL=y -# CONFIG_CLOCK_THERMAL is not set +CONFIG_CPU_FREQ_THERMAL=y CONFIG_DEVFREQ_THERMAL=y # CONFIG_THERMAL_EMULATION is not set -# CONFIG_QORIQ_THERMAL is not set +# CONFIG_THERMAL_MMIO is not set CONFIG_ROCKCHIP_THERMAL=y -# CONFIG_RK_VIRTUAL_THERMAL is not set -# CONFIG_RK3368_THERMAL is not set - -# -# ACPI INT340X thermal drivers -# # CONFIG_GENERIC_ADC_THERMAL is not set CONFIG_WATCHDOG=y CONFIG_WATCHDOG_CORE=y # CONFIG_WATCHDOG_NOWAYOUT is not set CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y +CONFIG_WATCHDOG_OPEN_TIMEOUT=0 # CONFIG_WATCHDOG_SYSFS is not set +# CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set + +# +# Watchdog Pretimeout Governors +# +# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set # # Watchdog Device Drivers @@ -2968,14 +3327,17 @@ CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y # CONFIG_SOFT_WATCHDOG is not set # CONFIG_GPIO_WATCHDOG is not set # CONFIG_XILINX_WATCHDOG is not set +# CONFIG_XILINX_WINDOW_WATCHDOG is not set # CONFIG_ZIIRAVE_WATCHDOG is not set # CONFIG_ARM_SP805_WATCHDOG is not set # CONFIG_ARM_SBSA_WATCHDOG is not set # CONFIG_CADENCE_WATCHDOG is not set CONFIG_DW_WATCHDOG=y # CONFIG_MAX63XX_WATCHDOG is not set +# CONFIG_ARM_SMC_WATCHDOG is not set # CONFIG_ALIM7101_WDT is not set # CONFIG_I6300ESB_WDT is not set +# CONFIG_HP_WATCHDOG is not set # CONFIG_MEN_A21_WDT is not set # @@ -2988,11 +3350,6 @@ CONFIG_DW_WATCHDOG=y # USB-based Watchdog Cards # # CONFIG_USBPCWATCHDOG is not set - -# -# Watchdog Pretimeout Governors -# -# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set CONFIG_SSB_POSSIBLE=y # CONFIG_SSB is not set CONFIG_BCMA_POSSIBLE=y @@ -3004,6 +3361,7 @@ CONFIG_BCMA_POSSIBLE=y CONFIG_MFD_CORE=y # CONFIG_MFD_ACT8945A is not set # CONFIG_MFD_AS3711 is not set +# CONFIG_MFD_SMPRO is not set # CONFIG_MFD_AS3722 is not set # CONFIG_PMIC_ADP5520 is not set # CONFIG_MFD_AAT2870_CORE is not set @@ -3012,9 +3370,8 @@ CONFIG_MFD_CORE=y # CONFIG_MFD_BCM590XX is not set # CONFIG_MFD_BD9571MWV is not set # CONFIG_MFD_AXP20X_I2C is not set -CONFIG_MFD_CROS_EC=y -# CONFIG_MFD_CROS_EC_CHARDEV is not set # CONFIG_MFD_MADERA is not set +# CONFIG_MFD_MAX5970 is not set # CONFIG_PMIC_DA903X is not set # CONFIG_MFD_DA9052_SPI is not set # CONFIG_MFD_DA9052_I2C is not set @@ -3023,51 +3380,56 @@ CONFIG_MFD_CROS_EC=y # CONFIG_MFD_DA9063 is not set # CONFIG_MFD_DA9150 is not set # CONFIG_MFD_DLN2 is not set +# CONFIG_MFD_GATEWORKS_GSC is not set # CONFIG_MFD_MC13XXX_SPI is not set # CONFIG_MFD_MC13XXX_I2C is not set +# CONFIG_MFD_MP2629 is not set # CONFIG_MFD_HI6421_PMIC is not set -# CONFIG_HTC_PASIC3 is not set -# CONFIG_HTC_I2CPLD is not set # CONFIG_LPC_ICH is not set # CONFIG_LPC_SCH is not set +# CONFIG_MFD_IQS62X is not set # CONFIG_MFD_JANZ_CMODIO 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_MAX77541 is not set # CONFIG_MFD_MAX77620 is not set +# CONFIG_MFD_MAX77650 is not set # CONFIG_MFD_MAX77686 is not set # CONFIG_MFD_MAX77693 is not set +# CONFIG_MFD_MAX77714 is not set # CONFIG_MFD_MAX77843 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_MT6360 is not set +# CONFIG_MFD_MT6370 is not set # CONFIG_MFD_MT6397 is not set # CONFIG_MFD_MENF21BMC is not set +# CONFIG_MFD_OCELOT is not set # CONFIG_EZX_PCAP is not set # CONFIG_MFD_CPCAP is not set # CONFIG_MFD_VIPERBOARD is not set +# CONFIG_MFD_NTXEC is not set # CONFIG_MFD_RETU is not set # CONFIG_MFD_PCF50633 is not set +# CONFIG_MFD_SY7636A is not set # CONFIG_MFD_RDC321X is not set +# CONFIG_MFD_RT4831 is not set # CONFIG_MFD_RT5033 is not set +# CONFIG_MFD_RT5120 is not set # CONFIG_MFD_RC5T583 is not set -CONFIG_MFD_RK618=y -CONFIG_MFD_RK628=y -# CONFIG_MFD_RK630 is not set -# CONFIG_MFD_RK630_I2C is not set -# CONFIG_MFD_RK630_SPI is not set -CONFIG_MFD_RK808=y -# CONFIG_MFD_RK1000 is not set +CONFIG_MFD_RK8XX=y +CONFIG_MFD_RK8XX_I2C=y +CONFIG_MFD_RK8XX_SPI=y # CONFIG_MFD_RN5T618 is not set # CONFIG_MFD_SEC_CORE is not set # CONFIG_MFD_SI476X_CORE is not set # CONFIG_MFD_SM501 is not set # CONFIG_MFD_SKY81452 is not set -# CONFIG_MFD_SMSC is not set -# CONFIG_ABX500_CORE is not set # CONFIG_MFD_STMPE is not set CONFIG_MFD_SYSCON=y # CONFIG_MFD_TI_AM335X_TSCADC is not set @@ -3084,17 +3446,21 @@ CONFIG_MFD_SYSCON=y # CONFIG_MFD_TI_LP873X is not set # CONFIG_MFD_TI_LP87565 is not set # CONFIG_MFD_TPS65218 is not set +# CONFIG_MFD_TPS65219 is not set CONFIG_MFD_TPS6586X=y # CONFIG_MFD_TPS65910 is not set # CONFIG_MFD_TPS65912_I2C is not set # CONFIG_MFD_TPS65912_SPI is not set -# CONFIG_MFD_TPS80031 is not set +# CONFIG_MFD_TPS6594_I2C is not set +# CONFIG_MFD_TPS6594_SPI 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_TQMX86 is not set # CONFIG_MFD_VX855 is not set +# CONFIG_MFD_LOCHNAGAR is not set # CONFIG_MFD_ARIZONA_I2C is not set # CONFIG_MFD_ARIZONA_SPI is not set # CONFIG_MFD_WM8400 is not set @@ -3103,80 +3469,162 @@ CONFIG_MFD_TPS6586X=y # CONFIG_MFD_WM8350_I2C is not set # CONFIG_MFD_WM8994 is not set # CONFIG_MFD_ROHM_BD718XX is not set +# CONFIG_MFD_ROHM_BD71828 is not set +# CONFIG_MFD_ROHM_BD957XMUF is not set +# CONFIG_MFD_STPMIC1 is not set +# CONFIG_MFD_STMFX is not set +# CONFIG_MFD_ATC260X_I2C is not set +# CONFIG_MFD_KHADAS_MCU is not set +# CONFIG_MFD_QCOM_PM8008 is not set # CONFIG_RAVE_SP_CORE is not set -CONFIG_FUSB_30X=y +# CONFIG_MFD_INTEL_M10_BMC_SPI is not set +# CONFIG_MFD_RSMU_I2C is not set +# CONFIG_MFD_RSMU_SPI is not set +# end of Multifunction device drivers + CONFIG_REGULATOR=y CONFIG_REGULATOR_DEBUG=y CONFIG_REGULATOR_FIXED_VOLTAGE=y # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set # CONFIG_REGULATOR_USERSPACE_CONSUMER is not set -# CONFIG_REGULATOR_PROXY_CONSUMER is not set # CONFIG_REGULATOR_88PG86X is not set CONFIG_REGULATOR_ACT8865=y # CONFIG_REGULATOR_AD5398 is not set -# CONFIG_REGULATOR_ANATOP is not set +# CONFIG_REGULATOR_ARM_SCMI is not set +# CONFIG_REGULATOR_DA9121 is not set # CONFIG_REGULATOR_DA9210 is not set # CONFIG_REGULATOR_DA9211 is not set CONFIG_REGULATOR_FAN53555=y +# CONFIG_REGULATOR_FAN53880 is not set CONFIG_REGULATOR_GPIO=y # 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_LP8752=y # CONFIG_REGULATOR_LP8755 is not set # CONFIG_REGULATOR_LTC3589 is not set # CONFIG_REGULATOR_LTC3676 is not set # CONFIG_REGULATOR_MAX1586 is not set # CONFIG_REGULATOR_MAX8649 is not set # CONFIG_REGULATOR_MAX8660 is not set +# CONFIG_REGULATOR_MAX8893 is not set # CONFIG_REGULATOR_MAX8952 is not set # CONFIG_REGULATOR_MAX8973 is not set -CONFIG_REGULATOR_MP8865=y +# CONFIG_REGULATOR_MAX20086 is not set +# CONFIG_REGULATOR_MAX20411 is not set +# CONFIG_REGULATOR_MAX77826 is not set +# CONFIG_REGULATOR_MCP16502 is not set +# CONFIG_REGULATOR_MP5416 is not set +# CONFIG_REGULATOR_MP8859 is not set +# CONFIG_REGULATOR_MP886X is not set +# CONFIG_REGULATOR_MPQ7920 is not set # CONFIG_REGULATOR_MT6311 is not set +# CONFIG_REGULATOR_PCA9450 is not set +# CONFIG_REGULATOR_PF8X00 is not set # CONFIG_REGULATOR_PFUZE100 is not set # CONFIG_REGULATOR_PV88060 is not set # CONFIG_REGULATOR_PV88080 is not set # CONFIG_REGULATOR_PV88090 is not set CONFIG_REGULATOR_PWM=y +# CONFIG_REGULATOR_RAA215300 is not set +# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set CONFIG_REGULATOR_RK808=y +# CONFIG_REGULATOR_RT4801 is not set +# CONFIG_REGULATOR_RT4803 is not set +# CONFIG_REGULATOR_RT5190A is not set +# CONFIG_REGULATOR_RT5739 is not set +# CONFIG_REGULATOR_RT5759 is not set +# CONFIG_REGULATOR_RT6160 is not set +# CONFIG_REGULATOR_RT6190 is not set +# CONFIG_REGULATOR_RT6245 is not set +# CONFIG_REGULATOR_RTQ2134 is not set +# CONFIG_REGULATOR_RTMV20 is not set +# CONFIG_REGULATOR_RTQ6752 is not set +# CONFIG_REGULATOR_SLG51000 is not set # CONFIG_REGULATOR_SY8106A is not set +# CONFIG_REGULATOR_SY8824X is not set +# CONFIG_REGULATOR_SY8827N is not set # CONFIG_REGULATOR_TPS51632 is not set -# CONFIG_REGULATOR_TPS549B22 is not set # CONFIG_REGULATOR_TPS62360 is not set +# CONFIG_REGULATOR_TPS6286X is not set +# CONFIG_REGULATOR_TPS6287X is not set # CONFIG_REGULATOR_TPS65023 is not set # CONFIG_REGULATOR_TPS6507X is not set CONFIG_REGULATOR_TPS65132=y # CONFIG_REGULATOR_TPS6524X is not set CONFIG_REGULATOR_TPS6586X=y # CONFIG_REGULATOR_VCTRL is not set -CONFIG_REGULATOR_XZ3216=y -# CONFIG_REGULATOR_DIO5632 is not set +# CONFIG_RC_CORE is not set CONFIG_CEC_CORE=y CONFIG_CEC_NOTIFIER=y -# CONFIG_RC_CORE is not set + +# +# CEC support +# +CONFIG_MEDIA_CEC_SUPPORT=y +# CONFIG_CEC_CH7322 is not set +# CONFIG_USB_PULSE8_CEC is not set +# CONFIG_USB_RAINSHADOW_CEC is not set +# end of CEC support + CONFIG_MEDIA_SUPPORT=y +# CONFIG_MEDIA_SUPPORT_FILTER is not set +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set # -# Multimedia core support +# Media device types # CONFIG_MEDIA_CAMERA_SUPPORT=y -# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set -# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set -# CONFIG_MEDIA_RADIO_SUPPORT is not set -# CONFIG_MEDIA_SDR_SUPPORT is not set -CONFIG_MEDIA_CEC_SUPPORT=y -CONFIG_MEDIA_CONTROLLER=y +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +CONFIG_MEDIA_PLATFORM_SUPPORT=y +CONFIG_MEDIA_TEST_SUPPORT=y +# end of Media device types + +# +# Media core support +# CONFIG_VIDEO_DEV=y +CONFIG_MEDIA_CONTROLLER=y +CONFIG_DVB_CORE=y +# end of Media core support + +# +# Video4Linux options +# +CONFIG_VIDEO_V4L2_I2C=y CONFIG_VIDEO_V4L2_SUBDEV_API=y -CONFIG_VIDEO_V4L2=y # CONFIG_VIDEO_ADV_DEBUG is not set # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set -# CONFIG_VIDEO_PCI_SKELETON is not set CONFIG_V4L2_MEM2MEM_DEV=y # CONFIG_V4L2_FLASH_LED_CLASS is not set CONFIG_V4L2_FWNODE=y +CONFIG_V4L2_ASYNC=y +# end of Video4Linux options + +# +# Media controller options +# +# CONFIG_MEDIA_CONTROLLER_DVB is not set +# end of Media controller options + +# +# Digital TV options +# +# CONFIG_DVB_MMAP is not set +CONFIG_DVB_NET=y +CONFIG_DVB_MAX_ADAPTERS=16 +CONFIG_DVB_DYNAMIC_MINORS=y +# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set +# CONFIG_DVB_ULE_DEBUG is not set +# end of Digital TV options + +# +# Media drivers +# # # Media drivers @@ -3186,15 +3634,35 @@ CONFIG_MEDIA_USB_SUPPORT=y # # Webcam devices # -CONFIG_USB_VIDEO_CLASS=y -# CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV is not set # CONFIG_USB_GSPCA is not set # CONFIG_USB_PWC is not set -# CONFIG_VIDEO_CPIA2 is not set -# CONFIG_USB_ZR364XX is not set -# CONFIG_USB_STKWEBCAM is not set # CONFIG_USB_S2255 is not set # CONFIG_VIDEO_USBTV is not set +# CONFIG_USB_VIDEO_CLASS is not set + +# +# Analog TV USB devices +# +# CONFIG_VIDEO_GO7007 is not set +# CONFIG_VIDEO_HDPVR is not set +# CONFIG_VIDEO_PVRUSB2 is not set +# CONFIG_VIDEO_STK1160 is not set + +# +# Analog/digital TV USB devices +# +# CONFIG_VIDEO_AU0828 is not set +# CONFIG_VIDEO_CX231XX is not set + +# +# Digital TV USB devices +# +# CONFIG_DVB_AS102 is not set +# CONFIG_DVB_B2C2_FLEXCOP_USB is not set +# CONFIG_DVB_USB_V2 is not set +# CONFIG_SMS_USB_DRV is not set +# CONFIG_DVB_TTUSB_BUDGET is not set +# CONFIG_DVB_TTUSB_DEC is not set # # Webcam, TV (analog/digital) USB devices @@ -3202,75 +3670,268 @@ CONFIG_USB_VIDEO_CLASS=y # CONFIG_VIDEO_EM28XX is not set # -# USB HDMI CEC adapters +# Software defined radio USB devices # -# CONFIG_USB_PULSE8_CEC is not set -# CONFIG_USB_RAINSHADOW_CEC is not set +# CONFIG_USB_AIRSPY is not set +# CONFIG_USB_HACKRF is not set +# CONFIG_USB_MSI2500 is not set # CONFIG_MEDIA_PCI_SUPPORT is not set +CONFIG_RADIO_ADAPTERS=y +# CONFIG_RADIO_MAXIRADIO is not set +# CONFIG_RADIO_SAA7706H is not set +# CONFIG_RADIO_SHARK is not set +# CONFIG_RADIO_SHARK2 is not set +# CONFIG_RADIO_SI4713 is not set +# CONFIG_RADIO_TEA5764 is not set +# CONFIG_RADIO_TEF6862 is not set +# CONFIG_RADIO_WL1273 is not set +# CONFIG_USB_DSBR is not set +# CONFIG_USB_KEENE is not set +# CONFIG_USB_MA901 is not set +# CONFIG_USB_MR800 is not set +# CONFIG_USB_RAREMONO is not set +# CONFIG_RADIO_SI470X is not set +CONFIG_MEDIA_PLATFORM_DRIVERS=y CONFIG_V4L_PLATFORM_DRIVERS=y -# CONFIG_VIDEO_CAFE_CCIC is not set -# CONFIG_VIDEO_CADENCE is not set -# CONFIG_VIDEO_MUX is not set -CONFIG_SOC_CAMERA=y -# CONFIG_SOC_CAMERA_PLATFORM is not set -# CONFIG_VIDEO_XILINX is not set -CONFIG_VIDEO_ROCKCHIP_CIF=y -CONFIG_ROCKCHIP_CIF_WORKMODE_PINGPONG=y -# CONFIG_ROCKCHIP_CIF_WORKMODE_ONEFRAME is not set -CONFIG_VIDEO_ROCKCHIP_ISP1=y -CONFIG_VIDEO_ROCKCHIP_ISP=y -# CONFIG_VIDEO_ROCKCHIP_ISPP is not set +# CONFIG_SDR_PLATFORM_DRIVERS is not set +# CONFIG_DVB_PLATFORM_DRIVERS is not set CONFIG_V4L_MEM2MEM_DRIVERS=y # CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set -# CONFIG_VIDEO_SH_VEU is not set +# CONFIG_VIDEO_MUX is not set + +# +# Allegro DVT media platform drivers +# + +# +# Amlogic media platform drivers +# + +# +# Amphion drivers +# + +# +# Aspeed media platform drivers +# + +# +# Atmel media platform drivers +# + +# +# Cadence media platform drivers +# +# CONFIG_VIDEO_CADENCE_CSI2RX is not set +# CONFIG_VIDEO_CADENCE_CSI2TX is not set + +# +# Chips&Media media platform drivers +# + +# +# Intel media platform drivers +# + +# +# Marvell media platform drivers +# +# CONFIG_VIDEO_CAFE_CCIC is not set + +# +# Mediatek media platform drivers +# + +# +# Microchip Technology, Inc. media platform drivers +# + +# +# NVidia media platform drivers +# + +# +# NXP media platform drivers +# + +# +# Qualcomm media platform drivers +# + +# +# Renesas media platform drivers +# + +# +# Rockchip media platform drivers +# CONFIG_VIDEO_ROCKCHIP_RGA=y -# CONFIG_V4L_TEST_DRIVERS is not set -# CONFIG_CEC_PLATFORM_DRIVERS is not set +CONFIG_VIDEO_ROCKCHIP_ISP1=y + +# +# Samsung media platform drivers +# + +# +# STMicroelectronics media platform drivers +# + +# +# Sunxi media platform drivers +# + +# +# Texas Instruments drivers +# + +# +# Verisilicon media platform drivers +# +# CONFIG_VIDEO_HANTRO is not set # -# Supported MMC/SDIO adapters +# VIA media platform drivers # -# CONFIG_CYPRESS_FIRMWARE is not set + +# +# Xilinx media platform drivers +# +# CONFIG_VIDEO_XILINX is not set + +# +# MMC/SDIO DVB adapters +# +# CONFIG_SMS_SDIO_DRV is not set +# CONFIG_V4L_TEST_DRIVERS is not set +# CONFIG_DVB_TEST_DRIVERS is not set +CONFIG_UVC_COMMON=y CONFIG_VIDEOBUF2_CORE=y CONFIG_VIDEOBUF2_V4L2=y CONFIG_VIDEOBUF2_MEMOPS=y CONFIG_VIDEOBUF2_DMA_CONTIG=y CONFIG_VIDEOBUF2_VMALLOC=y CONFIG_VIDEOBUF2_DMA_SG=y +# end of Media drivers # -# Media ancillary drivers (tuners, sensors, i2c, spi, frontends) +# Media ancillary drivers # -# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set +CONFIG_MEDIA_ATTACH=y + +# +# Camera sensor devices +# +# CONFIG_VIDEO_AR0521 is not set +# CONFIG_VIDEO_HI556 is not set +# CONFIG_VIDEO_HI846 is not set +# CONFIG_VIDEO_HI847 is not set +# CONFIG_VIDEO_IMX208 is not set +# CONFIG_VIDEO_IMX214 is not set +# CONFIG_VIDEO_IMX219 is not set +# CONFIG_VIDEO_IMX258 is not set +# CONFIG_VIDEO_IMX274 is not set +# CONFIG_VIDEO_IMX290 is not set +# CONFIG_VIDEO_IMX296 is not set +# CONFIG_VIDEO_IMX319 is not set +# CONFIG_VIDEO_IMX334 is not set +# CONFIG_VIDEO_IMX335 is not set +# CONFIG_VIDEO_IMX355 is not set +# CONFIG_VIDEO_IMX412 is not set +# CONFIG_VIDEO_IMX415 is not set +# CONFIG_VIDEO_MT9M001 is not set +# CONFIG_VIDEO_MT9M111 is not set +# CONFIG_VIDEO_MT9P031 is not set +# CONFIG_VIDEO_MT9T112 is not set +# CONFIG_VIDEO_MT9V011 is not set +# CONFIG_VIDEO_MT9V032 is not set +# CONFIG_VIDEO_MT9V111 is not set +# CONFIG_VIDEO_OG01A1B is not set +# CONFIG_VIDEO_OV01A10 is not set +# CONFIG_VIDEO_OV02A10 is not set +# CONFIG_VIDEO_OV08D10 is not set +# CONFIG_VIDEO_OV08X40 is not set +# CONFIG_VIDEO_OV13858 is not set +# CONFIG_VIDEO_OV13B10 is not set +# CONFIG_VIDEO_OV2640 is not set +# CONFIG_VIDEO_OV2659 is not set +# CONFIG_VIDEO_OV2680 is not set +# CONFIG_VIDEO_OV2685 is not set +CONFIG_VIDEO_OV4689=y +# CONFIG_VIDEO_OV5640 is not set +# CONFIG_VIDEO_OV5645 is not set +# CONFIG_VIDEO_OV5647 is not set +# CONFIG_VIDEO_OV5648 is not set +# CONFIG_VIDEO_OV5670 is not set +# CONFIG_VIDEO_OV5675 is not set +# CONFIG_VIDEO_OV5693 is not set +CONFIG_VIDEO_OV5695=y +# CONFIG_VIDEO_OV6650 is not set +CONFIG_VIDEO_OV7251=y +# CONFIG_VIDEO_OV7640 is not set +# CONFIG_VIDEO_OV7670 is not set +# CONFIG_VIDEO_OV772X is not set +# CONFIG_VIDEO_OV7740 is not set +# CONFIG_VIDEO_OV8856 is not set +# CONFIG_VIDEO_OV8858 is not set +# CONFIG_VIDEO_OV8865 is not set +# CONFIG_VIDEO_OV9282 is not set +# CONFIG_VIDEO_OV9640 is not set +# CONFIG_VIDEO_OV9650 is not set +# CONFIG_VIDEO_RDACM20 is not set +# CONFIG_VIDEO_RDACM21 is not set +# CONFIG_VIDEO_RJ54N1 is not set +# CONFIG_VIDEO_S5C73M3 is not set +# CONFIG_VIDEO_S5K5BAF is not set +# CONFIG_VIDEO_S5K6A3 is not set +# CONFIG_VIDEO_ST_VGXY61 is not set +# CONFIG_VIDEO_CCS is not set +# CONFIG_VIDEO_ET8EK8 is not set +# end of Camera sensor devices # -# I2C Encoders, decoders, sensors and other helper chips +# Lens drivers # +# CONFIG_VIDEO_AD5820 is not set +# CONFIG_VIDEO_AK7375 is not set +# CONFIG_VIDEO_DW9714 is not set +# CONFIG_VIDEO_DW9768 is not set +# CONFIG_VIDEO_DW9807_VCM is not set +# end of Lens drivers + +# +# Flash devices +# +# CONFIG_VIDEO_ADP1653 is not set +# CONFIG_VIDEO_LM3560 is not set +# CONFIG_VIDEO_LM3646 is not set +# end of Flash devices # # Audio decoders, processors and mixers # -# CONFIG_VIDEO_TVAUDIO is not set +# CONFIG_VIDEO_CS3308 is not set +# CONFIG_VIDEO_CS5345 is not set +# CONFIG_VIDEO_CS53L32A is not set +# CONFIG_VIDEO_MSP3400 is not set +# CONFIG_VIDEO_SONY_BTF_MPX is not set +# CONFIG_VIDEO_TDA1997X is not set # CONFIG_VIDEO_TDA7432 is not set # CONFIG_VIDEO_TDA9840 is not set -# CONFIG_VIDEO_TDA1997X is not set # CONFIG_VIDEO_TEA6415C is not set # CONFIG_VIDEO_TEA6420 is not set -# CONFIG_VIDEO_MSP3400 is not set -# CONFIG_VIDEO_CS3308 is not set -# CONFIG_VIDEO_CS5345 is not set -# CONFIG_VIDEO_CS53L32A is not set # CONFIG_VIDEO_TLV320AIC23B is not set +# CONFIG_VIDEO_TVAUDIO is not set # CONFIG_VIDEO_UDA1342 is not set -# CONFIG_VIDEO_WM8775 is not set -# CONFIG_VIDEO_WM8739 is not set # CONFIG_VIDEO_VP27SMPX is not set -# CONFIG_VIDEO_SONY_BTF_MPX is not set +# CONFIG_VIDEO_WM8739 is not set +# CONFIG_VIDEO_WM8775 is not set +# end of Audio decoders, processors and mixers # # RDS decoders # # CONFIG_VIDEO_SAA6588 is not set +# end of RDS decoders # # Video decoders @@ -3283,21 +3944,14 @@ CONFIG_VIDEOBUF2_DMA_SG=y # CONFIG_VIDEO_BT819 is not set # CONFIG_VIDEO_BT856 is not set # CONFIG_VIDEO_BT866 is not set +# CONFIG_VIDEO_ISL7998X is not set # CONFIG_VIDEO_KS0127 is not set +# CONFIG_VIDEO_MAX9286 is not set # CONFIG_VIDEO_ML86V7667 is not set -# CONFIG_VIDEO_AD5820 is not set -# CONFIG_VIDEO_AK7375 is not set -# CONFIG_VIDEO_DW9714 is not set -# CONFIG_VIDEO_DW9807_VCM is not set -# CONFIG_VIDEO_FP5510 is not set -# CONFIG_VIDEO_GT9760S is not set -# CONFIG_VIDEO_VM149C is not set # CONFIG_VIDEO_SAA7110 is not set # CONFIG_VIDEO_SAA711X is not set # CONFIG_VIDEO_TC358743 is not set -# CONFIG_VIDEO_TC35874X is not set -CONFIG_VIDEO_RK628_CSI=y -# CONFIG_VIDEO_TECHPOINT is not set +# CONFIG_VIDEO_TC358746 is not set # CONFIG_VIDEO_TVP514X is not set # CONFIG_VIDEO_TVP5150 is not set # CONFIG_VIDEO_TVP7002 is not set @@ -3312,232 +3966,294 @@ CONFIG_VIDEO_RK628_CSI=y # # CONFIG_VIDEO_SAA717X is not set # CONFIG_VIDEO_CX25840 is not set +# end of Video decoders # # Video encoders # -# CONFIG_VIDEO_SAA7127 is not set -# CONFIG_VIDEO_SAA7185 is not set # CONFIG_VIDEO_ADV7170 is not set # CONFIG_VIDEO_ADV7175 is not set # CONFIG_VIDEO_ADV7343 is not set # CONFIG_VIDEO_ADV7393 is not set # CONFIG_VIDEO_ADV7511 is not set -# CONFIG_VIDEO_AD9389B is not set # CONFIG_VIDEO_AK881X is not set +# CONFIG_VIDEO_SAA7127 is not set +# CONFIG_VIDEO_SAA7185 is not set # CONFIG_VIDEO_THS8200 is not set - -# -# Camera sensor devices -# -# CONFIG_VIDEO_IMX178 is not set -# CONFIG_VIDEO_IMX219 is not set -# CONFIG_VIDEO_IMX258 is not set -# CONFIG_VIDEO_IMX274 is not set -# CONFIG_VIDEO_IMX307 is not set -# CONFIG_VIDEO_IMX317 is not set -# CONFIG_VIDEO_IMX323 is not set -# CONFIG_VIDEO_IMX327 is not set -# CONFIG_VIDEO_IMX334 is not set -# CONFIG_VIDEO_IMX335 is not set -# CONFIG_VIDEO_IMX347 is not set -# CONFIG_VIDEO_IMX378 is not set -# CONFIG_VIDEO_IMX415 is not set -# CONFIG_VIDEO_IMX464 is not set -# CONFIG_VIDEO_OS02G10 is not set -CONFIG_VIDEO_OS04A10=y -# CONFIG_VIDEO_OS04C10 is not set -# CONFIG_VIDEO_OS05A20 is not set -# CONFIG_VIDEO_OS08A10 is not set -# CONFIG_VIDEO_OV02B10 is not set -# CONFIG_VIDEO_OV02K10 is not set -# CONFIG_VIDEO_OV2640 is not set -# CONFIG_VIDEO_OV2659 is not set -# CONFIG_VIDEO_OV2680 is not set -# CONFIG_VIDEO_OV2685 is not set -# CONFIG_VIDEO_OV2718 is not set -# CONFIG_VIDEO_OV2735 is not set -# CONFIG_VIDEO_OV2775 is not set -# CONFIG_VIDEO_OV4686 is not set -# CONFIG_VIDEO_OV4688 is not set -CONFIG_VIDEO_OV4689=y -# CONFIG_VIDEO_OV5640 is not set -# CONFIG_VIDEO_OV5645 is not set -# CONFIG_VIDEO_OV5647 is not set -# CONFIG_VIDEO_OV5648 is not set -# CONFIG_VIDEO_OV5670 is not set -CONFIG_VIDEO_OV5695=y -# CONFIG_VIDEO_OV6650 is not set -CONFIG_VIDEO_OV7251=y -# CONFIG_VIDEO_OV772X is not set -# CONFIG_VIDEO_OV7640 is not set -# CONFIG_VIDEO_OV7670 is not set -# CONFIG_VIDEO_OV7740 is not set -# CONFIG_VIDEO_OV7750 is not set -# CONFIG_VIDEO_OV8858 is not set -# CONFIG_VIDEO_OV9281 is not set -# CONFIG_VIDEO_OV9650 is not set -# CONFIG_VIDEO_OV9750 is not set -# CONFIG_VIDEO_OV12D2Q is not set -CONFIG_VIDEO_OV13850=y -# CONFIG_VIDEO_OV13858 is not set -# CONFIG_VIDEO_PREISP_DUMMY_SENSOR is not set -# CONFIG_VIDEO_VS6624 is not set -# CONFIG_VIDEO_MT9M032 is not set -# CONFIG_VIDEO_MT9M111 is not set -# CONFIG_VIDEO_MT9P031 is not set -# CONFIG_VIDEO_MT9T001 is not set -# CONFIG_VIDEO_MT9T112 is not set -# CONFIG_VIDEO_MT9V011 is not set -# CONFIG_VIDEO_MT9V032 is not set -# CONFIG_VIDEO_MT9V111 is not set -# CONFIG_VIDEO_AR0230 is not set -# CONFIG_VIDEO_SR030PC30 is not set -# CONFIG_VIDEO_NOON010PC30 is not set -# CONFIG_VIDEO_M5MOLS is not set -# CONFIG_VIDEO_RJ54N1 is not set -# CONFIG_VIDEO_S5K6AA is not set -# CONFIG_VIDEO_S5K6A3 is not set -# CONFIG_VIDEO_S5KGM1SP is not set -# CONFIG_VIDEO_S5K4H7YX is not set -# CONFIG_VIDEO_S5K4ECGX is not set -# CONFIG_VIDEO_S5K5BAF is not set -# CONFIG_VIDEO_SMIAPP is not set -# CONFIG_VIDEO_ET8EK8 is not set -# CONFIG_VIDEO_S5C73M3 is not set -# CONFIG_VIDEO_GC02M2 is not set -# CONFIG_VIDEO_GC0312 is not set -# CONFIG_VIDEO_GC0329 is not set -# CONFIG_VIDEO_GC032A is not set -# CONFIG_VIDEO_GC0403 is not set -# CONFIG_VIDEO_GC2035 is not set -CONFIG_VIDEO_GC2053=y -CONFIG_VIDEO_GC2093=y -# CONFIG_VIDEO_GC2145 is not set -# CONFIG_VIDEO_GC2155 is not set -# CONFIG_VIDEO_GC2355 is not set -# CONFIG_VIDEO_GC2375H is not set -# CONFIG_VIDEO_GC2385 is not set -# CONFIG_VIDEO_GC4663 is not set -# CONFIG_VIDEO_GC4C33 is not set -# CONFIG_VIDEO_GC5024 is not set -# CONFIG_VIDEO_GC5025 is not set -# CONFIG_VIDEO_GC5035 is not set -CONFIG_VIDEO_GC8034=y -# CONFIG_VIDEO_BF3925 is not set -# CONFIG_VIDEO_JX_F37 is not set -# CONFIG_VIDEO_JX_H62 is not set -# CONFIG_VIDEO_JX_H65 is not set -# CONFIG_VIDEO_JX_K04 is not set -# CONFIG_VIDEO_SC031GS is not set -# CONFIG_VIDEO_SC035HGS is not set -# CONFIG_VIDEO_SC132GS is not set -# CONFIG_VIDEO_SC200AI is not set -# CONFIG_VIDEO_SC210IOT is not set -# CONFIG_VIDEO_SC2232 is not set -# CONFIG_VIDEO_SC2239 is not set -# CONFIG_VIDEO_SC2310 is not set -# CONFIG_VIDEO_SC2335 is not set -# CONFIG_VIDEO_SC401AI is not set -# CONFIG_VIDEO_SC4238 is not set -# CONFIG_VIDEO_SC430CS is not set -# CONFIG_VIDEO_SC500AI is not set -# CONFIG_VIDEO_SC8220 is not set -# CONFIG_VIDEO_SP250A is not set -# CONFIG_VIDEO_HYNIX_HI556 is not set -# CONFIG_VIDEO_HYNIX_HI846 is not set - -# -# Flash devices -# -# CONFIG_VIDEO_ADP1653 is not set -# CONFIG_VIDEO_LM3560 is not set -# CONFIG_VIDEO_LM3646 is not set -# CONFIG_VIDEO_SGM3784 is not set +# end of Video encoders # # Video improvement chips # # CONFIG_VIDEO_UPD64031A is not set # CONFIG_VIDEO_UPD64083 is not set +# end of Video improvement chips # # Audio/Video compression chips # # CONFIG_VIDEO_SAA6752HS is not set +# end of Audio/Video compression chips # # SDR tuner chips # +# CONFIG_SDR_MAX2175 is not set +# end of SDR tuner chips # # Miscellaneous helper chips # -# CONFIG_VIDEO_THS7303 is not set -# CONFIG_VIDEO_M52790 is not set # CONFIG_VIDEO_I2C is not set -# CONFIG_VIDEO_NVP6158 is not set -# CONFIG_VIDEO_NVP6188 is not set -# CONFIG_VIDEO_NVP6324 is not set -# CONFIG_VIDEO_HALL_DC_MOTOR is not set -# CONFIG_VIDEO_RK_IRCUT is not set -# CONFIG_VIDEO_MP6507 is not set - -# -# Sensors used on soc_camera driver -# - -# -# soc_camera sensor drivers -# -# CONFIG_SOC_CAMERA_MT9M001 is not set -# CONFIG_SOC_CAMERA_MT9M111 is not set -# CONFIG_SOC_CAMERA_MT9T112 is not set -# CONFIG_SOC_CAMERA_MT9V022 is not set -# CONFIG_SOC_CAMERA_OV5642 is not set -# CONFIG_SOC_CAMERA_OV772X is not set -# CONFIG_SOC_CAMERA_OV9640 is not set -# CONFIG_SOC_CAMERA_OV9740 is not set -# CONFIG_SOC_CAMERA_RJ54N1 is not set -# CONFIG_SOC_CAMERA_TW9910 is not set +# CONFIG_VIDEO_M52790 is not set +# CONFIG_VIDEO_ST_MIPID02 is not set +# CONFIG_VIDEO_THS7303 is not set +# end of Miscellaneous helper chips # -# SPI helper chips +# Media SPI Adapters # +CONFIG_CXD2880_SPI_DRV=m # CONFIG_VIDEO_GS1662 is not set -# CONFIG_VIDEO_ROCKCHIP_PREISP is not set +# end of Media SPI Adapters + +CONFIG_MEDIA_TUNER=y + +# +# Customize TV tuners +# +CONFIG_MEDIA_TUNER_E4000=m +CONFIG_MEDIA_TUNER_FC0011=m +CONFIG_MEDIA_TUNER_FC0012=m +CONFIG_MEDIA_TUNER_FC0013=m +CONFIG_MEDIA_TUNER_FC2580=m +CONFIG_MEDIA_TUNER_IT913X=m +CONFIG_MEDIA_TUNER_M88RS6000T=m +CONFIG_MEDIA_TUNER_MAX2165=m +CONFIG_MEDIA_TUNER_MC44S803=m +CONFIG_MEDIA_TUNER_MSI001=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2063=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_MT2266=m +CONFIG_MEDIA_TUNER_MXL301RF=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m +CONFIG_MEDIA_TUNER_QM1D1B0004=m +CONFIG_MEDIA_TUNER_QM1D1C0042=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_R820T=m +CONFIG_MEDIA_TUNER_SI2157=m +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA18212=m +CONFIG_MEDIA_TUNER_TDA18218=m +CONFIG_MEDIA_TUNER_TDA18250=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_TUA9001=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC4000=m +CONFIG_MEDIA_TUNER_XC5000=m +# end of Customize TV tuners # -# Media SPI Adapters +# Customise DVB Frontends # # -# Customise DVB Frontends -# +# Multistandard (satellite) frontends +# +CONFIG_DVB_M88DS3103=m +CONFIG_DVB_MXL5XX=m +CONFIG_DVB_STB0899=m +CONFIG_DVB_STB6100=m +CONFIG_DVB_STV090x=m +CONFIG_DVB_STV0910=m +CONFIG_DVB_STV6110x=m +CONFIG_DVB_STV6111=m + +# +# Multistandard (cable + terrestrial) frontends +# +CONFIG_DVB_DRXK=m +CONFIG_DVB_MN88472=m +CONFIG_DVB_MN88473=m +CONFIG_DVB_SI2165=m +CONFIG_DVB_TDA18271C2DD=m + +# +# DVB-S (satellite) frontends +# +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_CX24117=m +CONFIG_DVB_CX24120=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_DS3000=m +CONFIG_DVB_MB86A16=m +CONFIG_DVB_MT312=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_SI21XX=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV0900=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_TDA10071=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA8261=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TS2020=m +CONFIG_DVB_TUA6100=m +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TUNER_ITD1000=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_ZL10036=m +CONFIG_DVB_ZL10039=m + +# +# DVB-T (terrestrial) frontends +# +CONFIG_DVB_AF9013=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_CXD2820R=m +CONFIG_DVB_CXD2841ER=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_DIB9000=m +CONFIG_DVB_DRXD=m +CONFIG_DVB_EC100=m +CONFIG_DVB_L64781=m +CONFIG_DVB_MT352=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_RTL2830=m +CONFIG_DVB_RTL2832=m +CONFIG_DVB_RTL2832_SDR=m +CONFIG_DVB_S5H1432=m +CONFIG_DVB_SI2168=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_STV0367=m +CONFIG_DVB_TDA10048=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_ZD1301_DEMOD=m +CONFIG_DVB_ZL10353=m +CONFIG_DVB_CXD2880=m + +# +# DVB-C (cable) frontends +# +CONFIG_DVB_STV0297=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_VES1820=m + +# +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends +# +CONFIG_DVB_AU8522=m +CONFIG_DVB_AU8522_DTV=m +CONFIG_DVB_AU8522_V4L=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LG2160=m +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LGDT3306A=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_MXL692=m +CONFIG_DVB_NXT200X=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_S5H1411=m + +# +# ISDB-T (terrestrial) frontends +# +CONFIG_DVB_DIB8000=m +CONFIG_DVB_MB86A20S=m +CONFIG_DVB_S921=m + +# +# ISDB-S (satellite) & ISDB-T (terrestrial) frontends +# +CONFIG_DVB_MN88443X=m +CONFIG_DVB_TC90522=m + +# +# Digital terrestrial only tuners/PLL +# +CONFIG_DVB_PLL=m +CONFIG_DVB_TUNER_DIB0070=m +CONFIG_DVB_TUNER_DIB0090=m + +# +# SEC control devices for DVB-S +# +CONFIG_DVB_A8293=m +CONFIG_DVB_AF9033=m +CONFIG_DVB_ASCOT2E=m +CONFIG_DVB_ATBM8830=m +CONFIG_DVB_HELENE=m +CONFIG_DVB_HORUS3A=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +CONFIG_DVB_ISL6423=m +CONFIG_DVB_IX2505V=m +CONFIG_DVB_LGS8GL5=m +CONFIG_DVB_LGS8GXX=m +CONFIG_DVB_LNBH25=m +CONFIG_DVB_LNBH29=m +CONFIG_DVB_LNBP21=m +CONFIG_DVB_LNBP22=m +CONFIG_DVB_M88RS2000=m +CONFIG_DVB_TDA665x=m +CONFIG_DVB_DRX39XYJ=m + +# +# Common Interface (EN50221) controller drivers +# +CONFIG_DVB_CXD2099=m +CONFIG_DVB_SP2=m +# end of Customise DVB Frontends # # Tools to develop new frontends # +# CONFIG_DVB_DUMMY_FE is not set +# end of Media ancillary drivers # # Graphics support # -# CONFIG_VGA_ARB is not set +CONFIG_VIDEO_CMDLINE=y +CONFIG_VIDEO_NOMODESET=y CONFIG_DRM=y -CONFIG_DRM_IGNORE_IOTCL_PERMIT=y +CONFIG_DRM_MIPI_DBI=y CONFIG_DRM_MIPI_DSI=y -# CONFIG_DRM_DP_AUX_CHARDEV is not set # CONFIG_DRM_DEBUG_MM is not set -# CONFIG_DRM_DEBUG_SELFTEST is not set CONFIG_DRM_KMS_HELPER=y -CONFIG_DRM_KMS_FB_HELPER=y +# CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set +# CONFIG_DRM_DEBUG_MODESET_LOCK is not set CONFIG_DRM_FBDEV_EMULATION=y CONFIG_DRM_FBDEV_OVERALLOC=100 # CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_DISPLAY_HELPER=y +CONFIG_DRM_DISPLAY_DP_HELPER=y +CONFIG_DRM_DISPLAY_HDMI_HELPER=y +# CONFIG_DRM_DP_AUX_CHARDEV is not set # CONFIG_DRM_DP_CEC is not set -CONFIG_DRM_TTM=m -CONFIG_DRM_GEM_CMA_HELPER=y +CONFIG_DRM_GEM_DMA_HELPER=y +CONFIG_DRM_GEM_SHMEM_HELPER=y +CONFIG_DRM_SCHED=y # # I2C encoder or helper chips @@ -3546,167 +4262,221 @@ CONFIG_DRM_GEM_CMA_HELPER=y # CONFIG_DRM_I2C_SIL164 is not set # CONFIG_DRM_I2C_NXP_TDA998X is not set # CONFIG_DRM_I2C_NXP_TDA9950 is not set -# CONFIG_DRM_HDLCD is not set -# CONFIG_DRM_MALI_DISPLAY is not set -# CONFIG_DRM_RADEON is not set -# CONFIG_DRM_AMDGPU is not set +# end of I2C encoder or helper chips # -# ACP (Audio CoProcessor) Configuration +# ARM devices # +# CONFIG_DRM_HDLCD is not set +# CONFIG_DRM_MALI_DISPLAY is not set +# CONFIG_DRM_KOMEDA is not set +# end of ARM devices -# -# AMD Library routines -# +# CONFIG_DRM_RADEON is not set +# CONFIG_DRM_AMDGPU is not set # CONFIG_DRM_NOUVEAU is not set # CONFIG_DRM_VGEM is not set # CONFIG_DRM_VKMS is not set CONFIG_DRM_ROCKCHIP=y -# CONFIG_ROCKCHIP_DRM_DEBUG is not set +CONFIG_ROCKCHIP_VOP=y +CONFIG_ROCKCHIP_VOP2=y CONFIG_ROCKCHIP_ANALOGIX_DP=y CONFIG_ROCKCHIP_CDN_DP=y CONFIG_ROCKCHIP_DW_HDMI=y CONFIG_ROCKCHIP_DW_MIPI_DSI=y CONFIG_ROCKCHIP_INNO_HDMI=y CONFIG_ROCKCHIP_LVDS=y -CONFIG_ROCKCHIP_DRM_TVE=y CONFIG_ROCKCHIP_RGB=y -# CONFIG_DRM_ROCKCHIP_VVOP is not set -# CONFIG_ROCKCHIP_EBC_DEV is not set -CONFIG_DRM_ROCKCHIP_RK618=y -# CONFIG_DRM_ROCKCHIP_RK628 is not set +# CONFIG_ROCKCHIP_RK3066_HDMI is not set +# CONFIG_DRM_VMWGFX is not set # CONFIG_DRM_UDL is not set # CONFIG_DRM_AST is not set # CONFIG_DRM_MGAG200 is not set -# CONFIG_DRM_CIRRUS_QEMU is not set -# CONFIG_DRM_RCAR_DW_HDMI is not set -# CONFIG_DRM_RCAR_LVDS is not set # CONFIG_DRM_QXL is not set -# CONFIG_DRM_BOCHS is not set +# CONFIG_DRM_VIRTIO_GPU is not set CONFIG_DRM_PANEL=y # # Display Panels # +# CONFIG_DRM_PANEL_ABT_Y030XX067A is not set # CONFIG_DRM_PANEL_ARM_VERSATILE is not set +# CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596 is not set +# CONFIG_DRM_PANEL_AUO_A030JTN01 is not set +# CONFIG_DRM_PANEL_BOE_BF060Y8M_AJ0 is not set +# CONFIG_DRM_PANEL_BOE_HIMAX8279D is not set +# CONFIG_DRM_PANEL_BOE_TV101WUM_NL6 is not set +CONFIG_DRM_PANEL_DSI_CM=y # CONFIG_DRM_PANEL_LVDS is not set CONFIG_DRM_PANEL_SIMPLE=y -# CONFIG_DRM_PANEL_SIMPLE_OF_ONLY is not set +# CONFIG_DRM_PANEL_EDP is not set +# CONFIG_DRM_PANEL_EBBG_FT8719 is not set +CONFIG_DRM_PANEL_ELIDA_KD35T133=y +# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set +# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set +# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set # CONFIG_DRM_PANEL_ILITEK_IL9322 is not set +# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set # CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set +# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set # CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set +# CONFIG_DRM_PANEL_JADARD_JD9365DA_H3 is not set # CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set +# CONFIG_DRM_PANEL_JDI_R63452 is not set +# CONFIG_DRM_PANEL_KHADAS_TS050 is not set +# CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04 is not set +# CONFIG_DRM_PANEL_LEADTEK_LTK050H3146W is not set +# CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 is not set # CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set +# CONFIG_DRM_PANEL_LG_LB035Q02 is not set # CONFIG_DRM_PANEL_LG_LG4573 is not set +# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set +# CONFIG_DRM_PANEL_NEC_NL8048HL11 is not set +CONFIG_DRM_PANEL_NEWVISION_NV3051D=y +CONFIG_DRM_PANEL_NEWVISION_NV3052C=y +# CONFIG_DRM_PANEL_NOVATEK_NT35510 is not set +# CONFIG_DRM_PANEL_NOVATEK_NT35560 is not set +# CONFIG_DRM_PANEL_NOVATEK_NT35950 is not set +# CONFIG_DRM_PANEL_NOVATEK_NT36523 is not set +# CONFIG_DRM_PANEL_NOVATEK_NT36672A is not set +# CONFIG_DRM_PANEL_NOVATEK_NT39016 is not set +# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set +# CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO is not set +# CONFIG_DRM_PANEL_ORISETECH_OTA5601A is not set # CONFIG_DRM_PANEL_ORISETECH_OTM8009A is not set +# CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS is not set # CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set # CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set +# CONFIG_DRM_PANEL_RAYDIUM_RM67191 is not set # CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set +# CONFIG_DRM_PANEL_RONBO_RB070D30 is not set +# CONFIG_DRM_PANEL_SAMSUNG_ATNA33XC20 is not set +# CONFIG_DRM_PANEL_SAMSUNG_DB7430 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6D16D0 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6D27A1 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6D7AA0 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set +# CONFIG_DRM_PANEL_SAMSUNG_SOFEF00 is not set # CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set # CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 is not set +# CONFIG_DRM_PANEL_SHARP_LS037V7DW01 is not set # CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set +# CONFIG_DRM_PANEL_SHARP_LS060T1SX01 is not set +# CONFIG_DRM_PANEL_SITRONIX_ST7701 is not set +# CONFIG_DRM_PANEL_SITRONIX_ST7703 is not set # CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set +# CONFIG_DRM_PANEL_SONY_ACX565AKM is not set +# CONFIG_DRM_PANEL_SONY_TD4353_JDI is not set +# CONFIG_DRM_PANEL_SONY_TULIP_TRULY_NT35521 is not set +# CONFIG_DRM_PANEL_TDO_TL070WSH30 is not set +# CONFIG_DRM_PANEL_TPO_TD028TTEC1 is not set +# CONFIG_DRM_PANEL_TPO_TD043MTEA1 is not set +# CONFIG_DRM_PANEL_TPO_TPG110 is not set +# CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA is not set +# CONFIG_DRM_PANEL_VISIONOX_RM69299 is not set +# CONFIG_DRM_PANEL_VISIONOX_VTDR6130 is not set +# CONFIG_DRM_PANEL_WIDECHIPS_WS2401 is not set +# CONFIG_DRM_PANEL_XINPENG_XPP055C272 is not set +# end of Display Panels + CONFIG_DRM_BRIDGE=y CONFIG_DRM_PANEL_BRIDGE=y # # Display Interface Bridges # -# CONFIG_DRM_ANALOGIX_ANX78XX is not set -# CONFIG_DRM_CDNS_DSI is not set -# CONFIG_DRM_DUMB_VGA_DAC is not set -# CONFIG_DRM_LVDS_ENCODER is not set +# CONFIG_DRM_CHIPONE_ICN6211 is not set +# CONFIG_DRM_CHRONTEL_CH7033 is not set +# CONFIG_DRM_DISPLAY_CONNECTOR is not set +# CONFIG_DRM_ITE_IT6505 is not set +# CONFIG_DRM_LONTIUM_LT8912B is not set +# CONFIG_DRM_LONTIUM_LT9211 is not set +# CONFIG_DRM_LONTIUM_LT9611 is not set +# CONFIG_DRM_LONTIUM_LT9611UXC is not set +# CONFIG_DRM_ITE_IT66121 is not set +# CONFIG_DRM_LVDS_CODEC is not set # CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set +# CONFIG_DRM_NWL_MIPI_DSI is not set # CONFIG_DRM_NXP_PTN3460 is not set # CONFIG_DRM_PARADE_PS8622 is not set -# CONFIG_DRM_RK1000_TVE is not set +# CONFIG_DRM_PARADE_PS8640 is not set +# CONFIG_DRM_SAMSUNG_DSIM is not set # CONFIG_DRM_SIL_SII8620 is not set CONFIG_DRM_SII902X=y # CONFIG_DRM_SII9234 is not set +# CONFIG_DRM_SIMPLE_BRIDGE is not set # CONFIG_DRM_THINE_THC63LVD1024 is not set +# CONFIG_DRM_TOSHIBA_TC358762 is not set +# CONFIG_DRM_TOSHIBA_TC358764 is not set # CONFIG_DRM_TOSHIBA_TC358767 is not set +# CONFIG_DRM_TOSHIBA_TC358768 is not set +# CONFIG_DRM_TOSHIBA_TC358775 is not set +# CONFIG_DRM_TI_DLPC3433 is not set # CONFIG_DRM_TI_TFP410 is not set +# CONFIG_DRM_TI_SN65DSI83 is not set +# CONFIG_DRM_TI_SN65DSI86 is not set +# CONFIG_DRM_TI_TPD12S015 is not set +# CONFIG_DRM_ANALOGIX_ANX6345 is not set +# CONFIG_DRM_ANALOGIX_ANX78XX is not set CONFIG_DRM_ANALOGIX_DP=y +# CONFIG_DRM_ANALOGIX_ANX7625 is not set # CONFIG_DRM_I2C_ADV7511 is not set +# CONFIG_DRM_CDNS_DSI is not set +# CONFIG_DRM_CDNS_MHDP8546 is not set CONFIG_DRM_DW_HDMI=y # CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set CONFIG_DRM_DW_HDMI_I2S_AUDIO=y +# CONFIG_DRM_DW_HDMI_GP_AUDIO is not set CONFIG_DRM_DW_HDMI_CEC=y -# CONFIG_DRM_ARCPGU is not set +CONFIG_DRM_DW_MIPI_DSI=y +# end of Display Interface Bridges + +# CONFIG_DRM_ETNAVIV is not set # CONFIG_DRM_HISI_HIBMC is not set # CONFIG_DRM_HISI_KIRIN is not set -# CONFIG_DRM_MXSFB is not set -# CONFIG_DRM_TINYDRM is not set +# CONFIG_DRM_LOGICVC is not set +# CONFIG_DRM_ARCPGU is not set +# CONFIG_DRM_BOCHS is not set +# CONFIG_DRM_CIRRUS_QEMU is not set +# CONFIG_DRM_GM12U320 is not set +# CONFIG_DRM_PANEL_MIPI_DBI is not set +# CONFIG_DRM_SIMPLEDRM is not set +# CONFIG_TINYDRM_HX8357D is not set +# CONFIG_TINYDRM_ILI9163 is not set +# CONFIG_TINYDRM_ILI9225 is not set +# CONFIG_TINYDRM_ILI9341 is not set +# CONFIG_TINYDRM_ILI9486 is not set +# CONFIG_TINYDRM_MI0283QT is not set +# CONFIG_TINYDRM_REPAPER is not set +# CONFIG_TINYDRM_ST7586 is not set +# CONFIG_TINYDRM_ST7735R is not set # CONFIG_DRM_PL111 is not set +# CONFIG_DRM_LIMA is not set +CONFIG_DRM_PANFROST=y +# CONFIG_DRM_TIDSS is not set +# CONFIG_DRM_GUD is not set +# CONFIG_DRM_SSD130X is not set # CONFIG_DRM_LEGACY is not set CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y -CONFIG_MALI400=y -CONFIG_MALI450=y -# CONFIG_MALI470 is not set -# CONFIG_MALI400_DEBUG is not set -# CONFIG_MALI400_PROFILING is not set -# CONFIG_MALI400_UMP is not set -CONFIG_MALI_DMA_BUF_MAP_ON_ATTACH=y -CONFIG_MALI_SHARED_INTERRUPTS=y -# CONFIG_MALI_PMU_PARALLEL_POWER_UP is not set -CONFIG_MALI_DT=y -CONFIG_MALI_DEVFREQ=y -# CONFIG_MALI_QUIET is not set -CONFIG_MALI_MIDGARD_FOR_ANDROID=y -# CONFIG_MALI_MIDGARD_FOR_LINUX is not set -CONFIG_MALI_MIDGARD=y -# CONFIG_MALI_GATOR_SUPPORT is not set -# CONFIG_MALI_MIDGARD_ENABLE_TRACE is not set -# CONFIG_MALI_DMA_FENCE is not set -CONFIG_MALI_EXPERT=y -# CONFIG_MALI_CORESTACK is not set -# CONFIG_MALI_PRFCNT_SET_SECONDARY is not set -# CONFIG_MALI_PLATFORM_FAKE is not set -# CONFIG_MALI_PLATFORM_DEVICETREE is not set -CONFIG_MALI_PLATFORM_THIRDPARTY=y -CONFIG_MALI_PLATFORM_THIRDPARTY_NAME="rk" -CONFIG_MALI_DEBUG=y -CONFIG_MALI_FENCE_DEBUG=y -# CONFIG_MALI_NO_MALI is not set -# CONFIG_MALI_TRACE_TIMELINE is not set -# CONFIG_MALI_SYSTEM_TRACE is not set -# CONFIG_MALI_GPU_MMU_AARCH64 is not set -CONFIG_MALI_PWRSOFT_765=y -# CONFIG_MALI_KUTF is not set -CONFIG_MALI_BIFROST_FOR_ANDROID=y -# CONFIG_MALI_BIFROST_FOR_LINUX is not set -CONFIG_MALI_BIFROST=y -CONFIG_MALI_BIFROST_GATOR_SUPPORT=y -# CONFIG_MALI_BIFROST_ENABLE_TRACE is not set -CONFIG_MALI_BIFROST_DEVFREQ=y -# CONFIG_MALI_BIFROST_DMA_FENCE is not set -CONFIG_MALI_PLATFORM_NAME="rk" -# CONFIG_MALI_ARBITER_SUPPORT is not set -# CONFIG_MALI_BIFROST_EXPERT is not set -CONFIG_MALI_REAL_HW=y -# CONFIG_MALI_DMA_BUF_MAP_ON_DEMAND is not set -# CONFIG_MALI_DMA_BUF_LEGACY_COMPAT is not set -# CONFIG_MALI_GEM5_BUILD is not set # # Frame buffer Devices # -CONFIG_FB_CMDLINE=y CONFIG_FB_NOTIFY=y CONFIG_FB=y # CONFIG_FIRMWARE_EDID is not set -CONFIG_FB_CFB_FILLRECT=y -CONFIG_FB_CFB_COPYAREA=y -CONFIG_FB_CFB_IMAGEBLIT=y CONFIG_FB_SYS_FILLRECT=y CONFIG_FB_SYS_COPYAREA=y CONFIG_FB_SYS_IMAGEBLIT=y # CONFIG_FB_FOREIGN_ENDIAN is not set CONFIG_FB_SYS_FOPS=y CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_SYS_HELPERS=y +CONFIG_FB_SYS_HELPERS_DEFERRED=y # CONFIG_FB_MODE_HELPERS is not set # CONFIG_FB_TILEBLITTING is not set @@ -3747,16 +4517,20 @@ CONFIG_FB_DEFERRED_IO=y # CONFIG_FB_VIRTUAL is not set # CONFIG_FB_METRONOME is not set # CONFIG_FB_MB862XX is not set -# CONFIG_FB_BROADSHEET is not set # CONFIG_FB_SIMPLE is not set # CONFIG_FB_SSD1307 is not set # CONFIG_FB_SM712 is not set -CONFIG_BACKLIGHT_LCD_SUPPORT=y +# end of Frame buffer Devices + +# +# Backlight & LCD device support +# # CONFIG_LCD_CLASS_DEVICE is not set CONFIG_BACKLIGHT_CLASS_DEVICE=y -CONFIG_BACKLIGHT_GENERIC=y +# CONFIG_BACKLIGHT_KTD253 is not set +# CONFIG_BACKLIGHT_KTZ8866 is not set CONFIG_BACKLIGHT_PWM=y -# CONFIG_BACKLIGHT_PM8941_WLED is not set +# CONFIG_BACKLIGHT_QCOM_WLED is not set # CONFIG_BACKLIGHT_ADP8860 is not set # CONFIG_BACKLIGHT_ADP8870 is not set # CONFIG_BACKLIGHT_LM3630A is not set @@ -3766,36 +4540,9 @@ CONFIG_BACKLIGHT_PWM=y # CONFIG_BACKLIGHT_LV5207LP is not set # CONFIG_BACKLIGHT_BD6107 is not set # CONFIG_BACKLIGHT_ARCXCNN is not set +# CONFIG_BACKLIGHT_LED is not set +# end of Backlight & LCD device support -# -# Rockchip Misc Video driver -# - -# -# RGA -# -# CONFIG_ROCKCHIP_RGA is not set - -# -# RGA2 -# -CONFIG_ROCKCHIP_RGA2=y - -# -# IEP -# -# CONFIG_IEP is not set -# CONFIG_IEP_MMU is not set -CONFIG_ROCKCHIP_MPP_SERVICE=y -CONFIG_ROCKCHIP_MPP_RKVDEC=y -CONFIG_ROCKCHIP_MPP_RKVDEC2=y -CONFIG_ROCKCHIP_MPP_RKVENC=y -CONFIG_ROCKCHIP_MPP_VDPU1=y -CONFIG_ROCKCHIP_MPP_VEPU1=y -CONFIG_ROCKCHIP_MPP_VDPU2=y -CONFIG_ROCKCHIP_MPP_VEPU2=y -CONFIG_ROCKCHIP_MPP_IEP2=y -CONFIG_ROCKCHIP_MPP_JPGDEC=y CONFIG_VIDEOMODE_HELPERS=y CONFIG_HDMI=y @@ -3806,10 +4553,16 @@ CONFIG_DUMMY_CONSOLE=y CONFIG_DUMMY_CONSOLE_COLUMNS=80 CONFIG_DUMMY_CONSOLE_ROWS=25 CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION is not set CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y # CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set +# end of Console display driver support + # CONFIG_LOGO is not set +# end of Graphics support + +# CONFIG_DRM_ACCEL is not set CONFIG_SOUND=y CONFIG_SND=y CONFIG_SND_TIMER=y @@ -3831,28 +4584,37 @@ CONFIG_SND_MAX_CARDS=32 CONFIG_SND_PROC_FS=y CONFIG_SND_VERBOSE_PROCFS=y # CONFIG_SND_VERBOSE_PRINTK is not set +CONFIG_SND_CTL_FAST_LOOKUP=y # CONFIG_SND_DEBUG is not set +# CONFIG_SND_CTL_INPUT_VALIDATION is not set CONFIG_SND_SEQUENCER=y CONFIG_SND_SEQ_DUMMY=y CONFIG_SND_SEQ_HRTIMER_DEFAULT=y CONFIG_SND_SEQ_MIDI_EVENT=y CONFIG_SND_SEQ_MIDI=y +# CONFIG_SND_SEQ_UMP is not set CONFIG_SND_DRIVERS=y # CONFIG_SND_DUMMY is not set # CONFIG_SND_ALOOP is not set +# CONFIG_SND_PCMTEST is not set # CONFIG_SND_VIRMIDI is not set # CONFIG_SND_MTPAV is not set # CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_SERIAL_GENERIC is not set # CONFIG_SND_MPU401 is not set # CONFIG_SND_PCI is not set # # HD-Audio # +# end of HD-Audio + CONFIG_SND_HDA_PREALLOC_SIZE=64 # CONFIG_SND_SPI is not set CONFIG_SND_USB=y CONFIG_SND_USB_AUDIO=y +# CONFIG_SND_USB_AUDIO_MIDI_V2 is not set +CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y # CONFIG_SND_USB_UA101 is not set # CONFIG_SND_USB_CAIAQ is not set # CONFIG_SND_USB_6FIRE is not set @@ -3864,8 +4626,11 @@ CONFIG_SND_USB_AUDIO=y # CONFIG_SND_USB_VARIAX is not set CONFIG_SND_SOC=y CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y +# CONFIG_SND_SOC_ADI is not set # CONFIG_SND_SOC_AMD_ACP is not set +# CONFIG_SND_AMD_ACP_CONFIG is not set # CONFIG_SND_ATMEL_SOC is not set +# CONFIG_SND_BCM63XX_I2S_WHISTLER is not set # CONFIG_SND_DESIGNWARE_I2S is not set # @@ -3877,44 +4642,56 @@ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y # # CONFIG_SND_SOC_FSL_ASRC is not set # CONFIG_SND_SOC_FSL_SAI is not set +# CONFIG_SND_SOC_FSL_AUDMIX 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_FSL_MICFIL is not set +# CONFIG_SND_SOC_FSL_XCVR is not set # CONFIG_SND_SOC_IMX_AUDMUX is not set +# end of SoC Audio for Freescale CPUs + +# CONFIG_SND_SOC_CHV3_I2S is not set # CONFIG_SND_I2S_HI6210_I2S is not set # CONFIG_SND_SOC_IMG is not set +# CONFIG_SND_SOC_MTK_BTCVSD is not set CONFIG_SND_SOC_ROCKCHIP=y -CONFIG_SND_SOC_ROCKCHIP_PREALLOC_BUFFER_SIZE=512 -# CONFIG_SND_SOC_ROCKCHIP_AUDIO_PWM is not set CONFIG_SND_SOC_ROCKCHIP_I2S=y CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=y CONFIG_SND_SOC_ROCKCHIP_PDM=y CONFIG_SND_SOC_ROCKCHIP_SPDIF=y -# CONFIG_SND_SOC_ROCKCHIP_VAD is not set CONFIG_SND_SOC_ROCKCHIP_MAX98090=y -CONFIG_SND_SOC_ROCKCHIP_MULTICODECS=y CONFIG_SND_SOC_ROCKCHIP_RT5645=y -# CONFIG_SND_SOC_ROCKCHIP_RT5651 is not set -CONFIG_SND_SOC_ROCKCHIP_RT5651_RK628=y # CONFIG_SND_SOC_RK3288_HDMI_ANALOG is not set # CONFIG_SND_SOC_RK3399_GRU_SOUND is not set +# CONFIG_SND_SOC_SOF_TOPLEVEL is not set # # STMicroelectronics STM32 SOC audio support # +# end of STMicroelectronics STM32 SOC audio support + +# CONFIG_SND_SOC_XILINX_I2S is not set +# CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set +# CONFIG_SND_SOC_XILINX_SPDIF is not set # CONFIG_SND_SOC_XTFPGA_I2S is not set -# CONFIG_ZX_TDM is not set CONFIG_SND_SOC_I2C_AND_SPI=y # # CODEC drivers # # CONFIG_SND_SOC_AC97_CODEC is not set +# CONFIG_SND_SOC_ADAU1372_I2C is not set +# CONFIG_SND_SOC_ADAU1372_SPI is not set # CONFIG_SND_SOC_ADAU1701 is not set # CONFIG_SND_SOC_ADAU1761_I2C is not set # CONFIG_SND_SOC_ADAU1761_SPI is not set # CONFIG_SND_SOC_ADAU7002 is not set +# CONFIG_SND_SOC_ADAU7118_HW is not set +# CONFIG_SND_SOC_ADAU7118_I2C is not set # CONFIG_SND_SOC_AK4104 is not set +# CONFIG_SND_SOC_AK4118 is not set +# CONFIG_SND_SOC_AK4375 is not set # CONFIG_SND_SOC_AK4458 is not set # CONFIG_SND_SOC_AK4554 is not set # CONFIG_SND_SOC_AK4613 is not set @@ -3922,46 +4699,64 @@ CONFIG_SND_SOC_I2C_AND_SPI=y # CONFIG_SND_SOC_AK5386 is not set # CONFIG_SND_SOC_AK5558 is not set # CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_AW8738 is not set +# CONFIG_SND_SOC_AW88395 is not set # CONFIG_SND_SOC_BD28623 is not set # CONFIG_SND_SOC_BT_SCO is not set +# CONFIG_SND_SOC_CHV3_CODEC is not set # CONFIG_SND_SOC_CS35L32 is not set # CONFIG_SND_SOC_CS35L33 is not set # CONFIG_SND_SOC_CS35L34 is not set # CONFIG_SND_SOC_CS35L35 is not set +# CONFIG_SND_SOC_CS35L36 is not set +# CONFIG_SND_SOC_CS35L41_SPI is not set +# CONFIG_SND_SOC_CS35L41_I2C is not set +# CONFIG_SND_SOC_CS35L45_SPI is not set +# CONFIG_SND_SOC_CS35L45_I2C is not set +# CONFIG_SND_SOC_CS35L56_I2C is not set +# CONFIG_SND_SOC_CS35L56_SPI is not set # CONFIG_SND_SOC_CS42L42 is not set # CONFIG_SND_SOC_CS42L51_I2C is not set # CONFIG_SND_SOC_CS42L52 is not set # CONFIG_SND_SOC_CS42L56 is not set # CONFIG_SND_SOC_CS42L73 is not set +# CONFIG_SND_SOC_CS42L83 is not set +# CONFIG_SND_SOC_CS4234 is not set # CONFIG_SND_SOC_CS4265 is not set # CONFIG_SND_SOC_CS4270 is not set # CONFIG_SND_SOC_CS4271_I2C is not set # CONFIG_SND_SOC_CS4271_SPI is not set # CONFIG_SND_SOC_CS42XX8_I2C is not set # CONFIG_SND_SOC_CS43130 is not set +# CONFIG_SND_SOC_CS4341 is not set # CONFIG_SND_SOC_CS4349 is not set # CONFIG_SND_SOC_CS53L30 is not set # CONFIG_SND_SOC_CX2072X is not set -CONFIG_SND_SOC_DUMMY_CODEC=y +# CONFIG_SND_SOC_DA7213 is not set +# CONFIG_SND_SOC_DMIC is not set CONFIG_SND_SOC_HDMI_CODEC=y # CONFIG_SND_SOC_ES7134 is not set -CONFIG_SND_SOC_ES7202=y -# CONFIG_SND_SOC_ES7210 is not set # CONFIG_SND_SOC_ES7241 is not set -CONFIG_SND_SOC_ES7243E=y -CONFIG_SND_SOC_ES8311=y CONFIG_SND_SOC_ES8316=y -# CONFIG_SND_SOC_ES8323 is not set +# CONFIG_SND_SOC_ES8326 is not set # CONFIG_SND_SOC_ES8328_I2C is not set # CONFIG_SND_SOC_ES8328_SPI is not set -# CONFIG_SND_SOC_ES8396 is not set # CONFIG_SND_SOC_GTM601 is not set +# CONFIG_SND_SOC_HDA is not set +# CONFIG_SND_SOC_ICS43432 is not set +# CONFIG_SND_SOC_IDT821034 is not set # CONFIG_SND_SOC_INNO_RK3036 is not set +# CONFIG_SND_SOC_MAX98088 is not set CONFIG_SND_SOC_MAX98090=y +# CONFIG_SND_SOC_MAX98357A is not set # CONFIG_SND_SOC_MAX98504 is not set # CONFIG_SND_SOC_MAX9867 is not set # CONFIG_SND_SOC_MAX98927 is not set -# CONFIG_SND_SOC_MAX98373 is not set +# CONFIG_SND_SOC_MAX98520 is not set +# CONFIG_SND_SOC_MAX98373_I2C is not set +# CONFIG_SND_SOC_MAX98388 is not set +# CONFIG_SND_SOC_MAX98390 is not set +# CONFIG_SND_SOC_MAX98396 is not set # CONFIG_SND_SOC_MAX9860 is not set # CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set # CONFIG_SND_SOC_PCM1681 is not set @@ -3970,56 +4765,73 @@ CONFIG_SND_SOC_MAX98090=y # CONFIG_SND_SOC_PCM179X_SPI is not set # CONFIG_SND_SOC_PCM186X_I2C is not set # CONFIG_SND_SOC_PCM186X_SPI is not set +# CONFIG_SND_SOC_PCM3060_I2C is not set +# CONFIG_SND_SOC_PCM3060_SPI is not set # CONFIG_SND_SOC_PCM3168A_I2C is not set # CONFIG_SND_SOC_PCM3168A_SPI is not set +# CONFIG_SND_SOC_PCM5102A is not set # CONFIG_SND_SOC_PCM512x_I2C is not set # CONFIG_SND_SOC_PCM512x_SPI is not set -# CONFIG_SND_SOC_RK312X is not set -# CONFIG_SND_SOC_RK3228 is not set -CONFIG_SND_SOC_RK3308=y +# CONFIG_SND_SOC_PEB2466 is not set CONFIG_SND_SOC_RK3328=y CONFIG_SND_SOC_RK817=y -CONFIG_SND_SOC_RK_CODEC_DIGITAL=y CONFIG_SND_SOC_RL6231=y CONFIG_SND_SOC_RT5616=y # CONFIG_SND_SOC_RT5631 is not set CONFIG_SND_SOC_RT5640=y CONFIG_SND_SOC_RT5645=y -CONFIG_SND_SOC_RT5651=y +# CONFIG_SND_SOC_RT5659 is not set +# CONFIG_SND_SOC_RT9120 is not set # CONFIG_SND_SOC_SGTL5000 is not set # CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set -# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set +# CONFIG_SND_SOC_SIMPLE_MUX is not set +# CONFIG_SND_SOC_SMA1303 is not set CONFIG_SND_SOC_SPDIF=y +# CONFIG_SND_SOC_SRC4XXX_I2C is not set # CONFIG_SND_SOC_SSM2305 is not set +# CONFIG_SND_SOC_SSM2518 is not set # CONFIG_SND_SOC_SSM2602_SPI is not set # CONFIG_SND_SOC_SSM2602_I2C is not set +# CONFIG_SND_SOC_SSM3515 is not set # CONFIG_SND_SOC_SSM4567 is not set # CONFIG_SND_SOC_STA32X is not set # CONFIG_SND_SOC_STA350 is not set # CONFIG_SND_SOC_STI_SAS is not set # CONFIG_SND_SOC_TAS2552 is not set +# CONFIG_SND_SOC_TAS2562 is not set +# CONFIG_SND_SOC_TAS2764 is not set +# CONFIG_SND_SOC_TAS2770 is not set +# CONFIG_SND_SOC_TAS2780 is not set +# CONFIG_SND_SOC_TAS2781_I2C is not set # CONFIG_SND_SOC_TAS5086 is not set # CONFIG_SND_SOC_TAS571X is not set # CONFIG_SND_SOC_TAS5720 is not set +# CONFIG_SND_SOC_TAS5805M is not set # CONFIG_SND_SOC_TAS6424 is not set # CONFIG_SND_SOC_TDA7419 is not set # CONFIG_SND_SOC_TFA9879 is not set +# CONFIG_SND_SOC_TFA989X is not set +# CONFIG_SND_SOC_TLV320ADC3XXX is not set # CONFIG_SND_SOC_TLV320AIC23_I2C is not set # CONFIG_SND_SOC_TLV320AIC23_SPI is not set # CONFIG_SND_SOC_TLV320AIC31XX is not set # CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set # CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set -# CONFIG_SND_SOC_TLV320AIC3X is not set +# CONFIG_SND_SOC_TLV320AIC3X_I2C is not set +# CONFIG_SND_SOC_TLV320AIC3X_SPI is not set +# CONFIG_SND_SOC_TLV320ADCX140 is not set CONFIG_SND_SOC_TS3A227E=y # CONFIG_SND_SOC_TSCS42XX is not set # CONFIG_SND_SOC_TSCS454 is not set +# CONFIG_SND_SOC_UDA1334 is not set # CONFIG_SND_SOC_WM8510 is not set # CONFIG_SND_SOC_WM8523 is not set # CONFIG_SND_SOC_WM8524 is not set # CONFIG_SND_SOC_WM8580 is not set # CONFIG_SND_SOC_WM8711 is not set # CONFIG_SND_SOC_WM8728 is not set -# CONFIG_SND_SOC_WM8731 is not set +# CONFIG_SND_SOC_WM8731_I2C is not set +# CONFIG_SND_SOC_WM8731_SPI is not set # CONFIG_SND_SOC_WM8737 is not set # CONFIG_SND_SOC_WM8741 is not set # CONFIG_SND_SOC_WM8750 is not set @@ -4030,27 +4842,38 @@ CONFIG_SND_SOC_TS3A227E=y # CONFIG_SND_SOC_WM8804_I2C is not set # CONFIG_SND_SOC_WM8804_SPI is not set # CONFIG_SND_SOC_WM8903 is not set +# CONFIG_SND_SOC_WM8904 is not set +# CONFIG_SND_SOC_WM8940 is not set # CONFIG_SND_SOC_WM8960 is not set +# CONFIG_SND_SOC_WM8961 is not set # CONFIG_SND_SOC_WM8962 is not set # CONFIG_SND_SOC_WM8974 is not set # CONFIG_SND_SOC_WM8978 is not set # CONFIG_SND_SOC_WM8985 is not set -# CONFIG_SND_SOC_ZX_AUD96P22 is not set +# CONFIG_SND_SOC_ZL38060 is not set # CONFIG_SND_SOC_MAX9759 is not set # CONFIG_SND_SOC_MT6351 is not set +# CONFIG_SND_SOC_MT6358 is not set +# CONFIG_SND_SOC_MT6660 is not set +# CONFIG_SND_SOC_NAU8315 is not set # CONFIG_SND_SOC_NAU8540 is not set # CONFIG_SND_SOC_NAU8810 is not set +# CONFIG_SND_SOC_NAU8821 is not set +# CONFIG_SND_SOC_NAU8822 is not set # CONFIG_SND_SOC_NAU8824 is not set # CONFIG_SND_SOC_TPA6130A2 is not set +# CONFIG_SND_SOC_LPASS_WSA_MACRO is not set +# CONFIG_SND_SOC_LPASS_VA_MACRO is not set +# CONFIG_SND_SOC_LPASS_RX_MACRO is not set +# CONFIG_SND_SOC_LPASS_TX_MACRO is not set +# end of CODEC drivers + CONFIG_SND_SIMPLE_CARD_UTILS=y CONFIG_SND_SIMPLE_CARD=y -# CONFIG_SND_SIMPLE_SCU_CARD is not set # CONFIG_SND_AUDIO_GRAPH_CARD is not set -# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set - -# -# HID support -# +# CONFIG_SND_AUDIO_GRAPH_CARD2 is not set +# CONFIG_SND_TEST_COMPONENT is not set +CONFIG_HID_SUPPORT=y CONFIG_HID=y CONFIG_HID_BATTERY_STRENGTH=y CONFIG_HIDRAW=y @@ -4069,29 +4892,38 @@ CONFIG_HID_GENERIC=y # CONFIG_HID_AUREAL is not set # CONFIG_HID_BELKIN is not set # CONFIG_HID_BETOP_FF is not set +# CONFIG_HID_BIGBEN_FF is not set # CONFIG_HID_CHERRY is not set # CONFIG_HID_CHICONY is not set # CONFIG_HID_CORSAIR is not set # CONFIG_HID_COUGAR is not set +# CONFIG_HID_MACALLY is not set # CONFIG_HID_PRODIKEYS is not set # CONFIG_HID_CMEDIA is not set # CONFIG_HID_CP2112 is not set +# CONFIG_HID_CREATIVE_SB0540 is not set # CONFIG_HID_CYPRESS is not set # CONFIG_HID_DRAGONRISE is not set # CONFIG_HID_EMS_FF is not set # CONFIG_HID_ELAN is not set # CONFIG_HID_ELECOM is not set # CONFIG_HID_ELO is not set +# CONFIG_HID_EVISION is not set # CONFIG_HID_EZKEY is not set +# CONFIG_HID_FT260 is not set # CONFIG_HID_GEMBIRD is not set # CONFIG_HID_GFRM is not set +# CONFIG_HID_GLORIOUS is not set # CONFIG_HID_HOLTEK is not set -# CONFIG_HID_GOOGLE_HAMMER is not set +# CONFIG_HID_VIVALDI is not set # CONFIG_HID_GT683R is not set # CONFIG_HID_KEYTOUCH is not set # CONFIG_HID_KYE is not set # CONFIG_HID_UCLOGIC is not set # CONFIG_HID_WALTOP is not set +# CONFIG_HID_VIEWSONIC is not set +# CONFIG_HID_VRC2 is not set +# CONFIG_HID_XIAOMI is not set # CONFIG_HID_GYRATION is not set # CONFIG_HID_ICADE is not set # CONFIG_HID_ITE is not set @@ -4101,9 +4933,12 @@ CONFIG_HID_KENSINGTON=y # CONFIG_HID_LCPOWER is not set # CONFIG_HID_LED is not set # CONFIG_HID_LENOVO is not set +# CONFIG_HID_LETSKETCH is not set # CONFIG_HID_LOGITECH is not set # CONFIG_HID_MAGICMOUSE is not set +# CONFIG_HID_MALTRON is not set # CONFIG_HID_MAYFLASH is not set +# CONFIG_HID_MEGAWORLD_FF is not set # CONFIG_HID_REDRAGON is not set # CONFIG_HID_MICROSOFT is not set # CONFIG_HID_MONTEREY is not set @@ -4111,17 +4946,22 @@ CONFIG_HID_MULTITOUCH=y # CONFIG_HID_NINTENDO is not set # CONFIG_HID_NTI is not set # CONFIG_HID_NTRIG is not set +# CONFIG_HID_NVIDIA_SHIELD is not set # CONFIG_HID_ORTEK is not set # CONFIG_HID_PANTHERLORD is not set # CONFIG_HID_PENMOUNT is not set # CONFIG_HID_PETALYNX is not set # CONFIG_HID_PICOLCD is not set # CONFIG_HID_PLANTRONICS is not set +# CONFIG_HID_PXRC is not set +# CONFIG_HID_RAZER is not set # CONFIG_HID_PRIMAX is not set # CONFIG_HID_RETRODE is not set # CONFIG_HID_ROCCAT is not set # CONFIG_HID_SAITEK is not set # CONFIG_HID_SAMSUNG is not set +# CONFIG_HID_SEMITEK is not set +# CONFIG_HID_SIGMAMICRO is not set # CONFIG_HID_SONY is not set # CONFIG_HID_SPEEDLINK is not set # CONFIG_HID_STEAM is not set @@ -4132,9 +4972,11 @@ CONFIG_HID_MULTITOUCH=y # CONFIG_HID_SMARTJOYPLUS is not set # CONFIG_HID_TIVO is not set # CONFIG_HID_TOPSEED is not set +# CONFIG_HID_TOPRE is not set # CONFIG_HID_THINGM is not set # CONFIG_HID_THRUSTMASTER is not set # CONFIG_HID_UDRAW_PS3 is not set +# CONFIG_HID_U2FZERO is not set # CONFIG_HID_WACOM is not set # CONFIG_HID_WIIMOTE is not set # CONFIG_HID_XINMO is not set @@ -4142,6 +4984,13 @@ CONFIG_HID_MULTITOUCH=y # CONFIG_HID_ZYDACRON is not set # CONFIG_HID_SENSOR_HUB is not set # CONFIG_HID_ALPS is not set +# CONFIG_HID_MCP2221 is not set +# end of Special HID drivers + +# +# HID-BPF support +# +# end of HID-BPF support # # USB HID support @@ -4149,14 +4998,18 @@ CONFIG_HID_MULTITOUCH=y CONFIG_USB_HID=y # CONFIG_HID_PID is not set CONFIG_USB_HIDDEV=y +# end of USB HID support -# -# I2C HID support -# CONFIG_I2C_HID=y +# CONFIG_I2C_HID_OF is not set +# CONFIG_I2C_HID_OF_ELAN is not set +# CONFIG_I2C_HID_OF_GOODIX is not set CONFIG_USB_OHCI_LITTLE_ENDIAN=y CONFIG_USB_SUPPORT=y CONFIG_USB_COMMON=y +# CONFIG_USB_LED_TRIG is not set +# CONFIG_USB_ULPI_BUS is not set +# CONFIG_USB_CONN_GPIO is not set CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB=y CONFIG_USB_PCI=y @@ -4166,14 +5019,15 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y # Miscellaneous USB options # # CONFIG_USB_DEFAULT_PERSIST is not set +# CONFIG_USB_FEW_INIT_RETRIES is not set # CONFIG_USB_DYNAMIC_MINORS is not set CONFIG_USB_OTG=y -# CONFIG_USB_OTG_WHITELIST is not set -# CONFIG_USB_OTG_BLACKLIST_HUB is not set +# CONFIG_USB_OTG_PRODUCTLIST is not set +# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set # CONFIG_USB_OTG_FSM is not set # CONFIG_USB_LEDS_TRIGGER_USBPORT is not set +CONFIG_USB_AUTOSUSPEND_DELAY=2 CONFIG_USB_MON=y -# CONFIG_USB_WUSB_CBAF is not set # # USB Host Controller Drivers @@ -4182,15 +5036,16 @@ CONFIG_USB_MON=y CONFIG_USB_XHCI_HCD=y # CONFIG_USB_XHCI_DBGCAP is not set CONFIG_USB_XHCI_PCI=y +# CONFIG_USB_XHCI_PCI_RENESAS is not set CONFIG_USB_XHCI_PLATFORM=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y CONFIG_USB_EHCI_TT_NEWSCHED=y CONFIG_USB_EHCI_PCI=y +# CONFIG_USB_EHCI_FSL is not set CONFIG_USB_EHCI_HCD_PLATFORM=y # CONFIG_USB_OXU210HP_HCD is not set # CONFIG_USB_ISP116X_HCD is not set -# CONFIG_USB_FOTG210_HCD is not set # CONFIG_USB_MAX3421_HCD is not set CONFIG_USB_OHCI_HCD=y # CONFIG_USB_OHCI_HCD_PCI is not set @@ -4238,6 +5093,11 @@ CONFIG_USB_UAS=y # CONFIG_USB_MDC800 is not set # CONFIG_USB_MICROTEK is not set # CONFIG_USBIP_CORE is not set + +# +# USB dual-mode controller drivers +# +# CONFIG_USB_CDNS_SUPPORT is not set # CONFIG_USB_MUSB_HDRC is not set CONFIG_USB_DWC3=y # CONFIG_USB_DWC3_HOST is not set @@ -4249,7 +5109,6 @@ CONFIG_USB_DWC3_DUAL_ROLE=y # CONFIG_USB_DWC3_HAPS=y CONFIG_USB_DWC3_OF_SIMPLE=y -CONFIG_USB_DWC3_ROCKCHIP_INNO=y CONFIG_USB_DWC2=y # CONFIG_USB_DWC2_HOST is not set @@ -4311,7 +5170,6 @@ CONFIG_USB_SERIAL_SIERRAWIRELESS=y # CONFIG_USB_SERIAL_SYMBOL is not set # CONFIG_USB_SERIAL_TI is not set # CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_XIRCOM is not set CONFIG_USB_SERIAL_WWAN=y CONFIG_USB_SERIAL_OPTION=y # CONFIG_USB_SERIAL_OMNINET is not set @@ -4321,6 +5179,7 @@ CONFIG_USB_SERIAL_OPTION=y # CONFIG_USB_SERIAL_SSU100 is not set # CONFIG_USB_SERIAL_QT2 is not set # CONFIG_USB_SERIAL_UPD78F0730 is not set +# CONFIG_USB_SERIAL_XR is not set # CONFIG_USB_SERIAL_DEBUG is not set # @@ -4335,8 +5194,8 @@ CONFIG_USB_SERIAL_OPTION=y # 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_APPLE_MFI_FASTCHARGE is not set # CONFIG_USB_SISUSBVGA is not set # CONFIG_USB_LD is not set # CONFIG_USB_TRANCEVIBRATOR is not set @@ -4351,15 +5210,17 @@ CONFIG_USB_EZUSB_FX2=y # CONFIG_USB_HSIC_USB4604 is not set # CONFIG_USB_LINK_LAYER_TEST is not set # CONFIG_USB_CHAOSKEY is not set +# CONFIG_USB_ONBOARD_HUB is not set # # USB Physical Layer drivers # -CONFIG_USB_PHY=y # CONFIG_NOP_USB_XCEIV is not set # CONFIG_USB_GPIO_VBUS is not set # CONFIG_USB_ISP1301 is not set # CONFIG_USB_ULPI is not set +# end of USB Physical Layer drivers + CONFIG_USB_GADGET=y # CONFIG_USB_GADGET_DEBUG is not set CONFIG_USB_GADGET_DEBUG_FILES=y @@ -4371,7 +5232,6 @@ 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 @@ -4386,15 +5246,19 @@ CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 # CONFIG_USB_GOKU is not set # CONFIG_USB_EG20T is not set # CONFIG_USB_GADGET_XILINX is not set +# CONFIG_USB_MAX3420_UDC is not set # CONFIG_USB_DUMMY_HCD is not set +# end of USB Peripheral Controller + CONFIG_USB_LIBCOMPOSITE=y CONFIG_USB_F_ACM=y CONFIG_USB_U_SERIAL=y +CONFIG_USB_F_SERIAL=m +CONFIG_USB_F_OBEX=m CONFIG_USB_F_MASS_STORAGE=y CONFIG_USB_F_FS=y CONFIG_USB_F_UVC=y CONFIG_USB_CONFIGFS=y -CONFIG_USB_CONFIGFS_UEVENT=y # CONFIG_USB_CONFIGFS_SERIAL is not set CONFIG_USB_CONFIGFS_ACM=y # CONFIG_USB_CONFIGFS_OBEX is not set @@ -4406,8 +5270,6 @@ CONFIG_USB_CONFIGFS_ACM=y CONFIG_USB_CONFIGFS_MASS_STORAGE=y # CONFIG_USB_CONFIGFS_F_LB_SS is not set CONFIG_USB_CONFIGFS_F_FS=y -# CONFIG_USB_CONFIGFS_F_ACC is not set -# CONFIG_USB_CONFIGFS_F_AUDIO_SRC is not set # CONFIG_USB_CONFIGFS_F_UAC1 is not set # CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set # CONFIG_USB_CONFIGFS_F_UAC2 is not set @@ -4415,11 +5277,10 @@ CONFIG_USB_CONFIGFS_F_FS=y # CONFIG_USB_CONFIGFS_F_HID is not set CONFIG_USB_CONFIGFS_F_UVC=y # CONFIG_USB_CONFIGFS_F_PRINTER is not set -# CONFIG_TYPEC is not set -# CONFIG_USB_ROLE_SWITCH is not set -# CONFIG_USB_LED_TRIG is not set -# CONFIG_USB_ULPI_BUS is not set -# CONFIG_UWB is not set + +# +# USB Gadget precomposed configurations +# # CONFIG_USB_ZERO is not set # CONFIG_USB_AUDIO is not set # CONFIG_USB_ETH is not set @@ -4440,7 +5301,10 @@ CONFIG_USB_G_SERIAL=m # CONFIG_USB_G_DBGP is not set # CONFIG_USB_G_WEBCAM is not set # CONFIG_USB_RAW_GADGET is not set +# end of USB Gadget precomposed configurations +# CONFIG_TYPEC is not set +CONFIG_USB_ROLE_SWITCH=y CONFIG_MMC=y CONFIG_PWRSEQ_EMMC=y # CONFIG_PWRSEQ_SD8787 is not set @@ -4449,7 +5313,6 @@ CONFIG_MMC_BLOCK=y CONFIG_MMC_BLOCK_MINORS=32 # CONFIG_SDIO_UART is not set CONFIG_MMC_TEST=y -CONFIG_SDIO_KEEPALIVE=y # # MMC/SD/SDIO Host Controller Drivers @@ -4464,6 +5327,7 @@ CONFIG_MMC_SDHCI_OF_ARASAN=y CONFIG_MMC_SDHCI_OF_DWCMSHC=y # CONFIG_MMC_SDHCI_CADENCE is not set # CONFIG_MMC_SDHCI_F_SDH30 is not set +# CONFIG_MMC_SDHCI_MILBEAUT is not set # CONFIG_MMC_TIFM_SD is not set # CONFIG_MMC_SPI is not set # CONFIG_MMC_CB710 is not set @@ -4480,51 +5344,54 @@ CONFIG_MMC_DW_ROCKCHIP=y # CONFIG_MMC_USHC is not set # CONFIG_MMC_USDHI6ROL0 is not set CONFIG_MMC_CQHCI=y +# CONFIG_MMC_HSQ is not set # CONFIG_MMC_TOSHIBA_PCI is not set # CONFIG_MMC_MTK is not set # CONFIG_MMC_SDHCI_XENON is not set # CONFIG_MMC_SDHCI_OMAP is not set +# CONFIG_MMC_SDHCI_AM654 is not set +# CONFIG_SCSI_UFSHCD is not set # CONFIG_MEMSTICK is not set CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y CONFIG_LEDS_CLASS_FLASH=y +# CONFIG_LEDS_CLASS_MULTICOLOR is not set # CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set # # LED drivers # -# CONFIG_LEDS_AAT1290 is not set -# CONFIG_LEDS_AS3645A is not set +# CONFIG_LEDS_AN30259A is not set +# CONFIG_LEDS_AW200XX is not set +# CONFIG_LEDS_AW2013 is not set # CONFIG_LEDS_BCM6328 is not set # CONFIG_LEDS_BCM6358 is not set # CONFIG_LEDS_CR0014114 is not set +# CONFIG_LEDS_EL15203000 is not set # CONFIG_LEDS_LM3530 is not set +# CONFIG_LEDS_LM3532 is not set # CONFIG_LEDS_LM3642 is not set # CONFIG_LEDS_LM3692X is not set -# CONFIG_LEDS_LM3601X is not set # CONFIG_LEDS_PCA9532 is not set CONFIG_LEDS_GPIO=y # CONFIG_LEDS_LP3944 is not set # CONFIG_LEDS_LP3952 is not set -# CONFIG_LEDS_LP5521 is not set -# CONFIG_LEDS_LP5523 is not set -# CONFIG_LEDS_LP5562 is not set -# CONFIG_LEDS_LP8501 is not set +# CONFIG_LEDS_LP50XX is not set +# CONFIG_LEDS_LP55XX_COMMON is not set # CONFIG_LEDS_LP8860 is not set # CONFIG_LEDS_PCA955X is not set # CONFIG_LEDS_PCA963X is not set # CONFIG_LEDS_DAC124S085 is not set -# CONFIG_LEDS_PWM is not set +CONFIG_LEDS_PWM=y # CONFIG_LEDS_REGULATOR is not set +# CONFIG_LEDS_BD2606MVV is not set # CONFIG_LEDS_BD2802 is not set # CONFIG_LEDS_LT3593 is not set # CONFIG_LEDS_TCA6507 is not set # CONFIG_LEDS_TLC591XX is not set # CONFIG_LEDS_LM355x is not set -# CONFIG_LEDS_KTD2692 is not set # CONFIG_LEDS_IS31FL319X is not set CONFIG_LEDS_IS31FL32XX=y -CONFIG_LEDS_RGB13H=y # # LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) @@ -4533,6 +5400,23 @@ CONFIG_LEDS_RGB13H=y # CONFIG_LEDS_SYSCON is not set # CONFIG_LEDS_MLXREG is not set # CONFIG_LEDS_USER is not set +# CONFIG_LEDS_SPI_BYTE is not set +# CONFIG_LEDS_LM3697 is not set + +# +# Flash and Torch LED drivers +# +# CONFIG_LEDS_AAT1290 is not set +# CONFIG_LEDS_AS3645A is not set +# CONFIG_LEDS_KTD2692 is not set +# CONFIG_LEDS_LM3601X is not set +# CONFIG_LEDS_RT4505 is not set +# CONFIG_LEDS_RT8515 is not set +# CONFIG_LEDS_SGM3140 is not set + +# +# RGB LED drivers +# # # LED Triggers @@ -4546,7 +5430,6 @@ CONFIG_LEDS_TRIGGER_TIMER=y # CONFIG_LEDS_TRIGGER_BACKLIGHT is not set # CONFIG_LEDS_TRIGGER_CPU is not set # CONFIG_LEDS_TRIGGER_ACTIVITY is not set -# CONFIG_LEDS_TRIGGER_GPIO is not set # CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set # @@ -4556,6 +5439,13 @@ CONFIG_LEDS_TRIGGER_TIMER=y # CONFIG_LEDS_TRIGGER_CAMERA is not set # CONFIG_LEDS_TRIGGER_PANIC is not set # CONFIG_LEDS_TRIGGER_NETDEV is not set +# CONFIG_LEDS_TRIGGER_PATTERN is not set +# CONFIG_LEDS_TRIGGER_AUDIO is not set +# CONFIG_LEDS_TRIGGER_TTY is not set + +# +# Simple LED drivers +# # CONFIG_ACCESSIBILITY is not set # CONFIG_INFINIBAND is not set CONFIG_EDAC_SUPPORT=y @@ -4582,15 +5472,15 @@ CONFIG_RTC_INTF_DEV=y # I2C RTC drivers # # CONFIG_RTC_DRV_ABB5ZES3 is not set +# CONFIG_RTC_DRV_ABEOZ9 is not set # CONFIG_RTC_DRV_ABX80X is not set # CONFIG_RTC_DRV_DS1307 is not set # CONFIG_RTC_DRV_DS1374 is not set # CONFIG_RTC_DRV_DS1672 is not set -# CONFIG_RTC_DRV_FAKE is not set CONFIG_RTC_DRV_HYM8563=y # CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_NCT3018Y is not set CONFIG_RTC_DRV_RK808=y -# CONFIG_RTC_DRV_RK_TIMER is not set # CONFIG_RTC_DRV_RS5C372 is not set # CONFIG_RTC_DRV_ISL1208 is not set # CONFIG_RTC_DRV_ISL12022 is not set @@ -4610,7 +5500,10 @@ CONFIG_RTC_DRV_RK808=y # CONFIG_RTC_DRV_RX8581 is not set # CONFIG_RTC_DRV_RX8025 is not set # CONFIG_RTC_DRV_EM3027 is not set +# CONFIG_RTC_DRV_RV3028 is not set +# CONFIG_RTC_DRV_RV3032 is not set # CONFIG_RTC_DRV_RV8803 is not set +# CONFIG_RTC_DRV_SD3078 is not set # # SPI RTC drivers @@ -4625,7 +5518,6 @@ CONFIG_RTC_DRV_RK808=y # CONFIG_RTC_DRV_MAX6916 is not set # CONFIG_RTC_DRV_R9701 is not set # CONFIG_RTC_DRV_RX4581 is not set -# CONFIG_RTC_DRV_RX6110 is not set # CONFIG_RTC_DRV_RS5C348 is not set # CONFIG_RTC_DRV_MAX6902 is not set # CONFIG_RTC_DRV_PCF2123 is not set @@ -4638,6 +5530,7 @@ CONFIG_RTC_I2C_AND_SPI=y # CONFIG_RTC_DRV_DS3232 is not set # CONFIG_RTC_DRV_PCF2127 is not set # CONFIG_RTC_DRV_RV3029C2 is not set +# CONFIG_RTC_DRV_RX6110 is not set # # Platform RTC drivers @@ -4655,23 +5548,21 @@ CONFIG_RTC_I2C_AND_SPI=y # CONFIG_RTC_DRV_MSM6242 is not set # CONFIG_RTC_DRV_BQ4802 is not set # CONFIG_RTC_DRV_RP5C01 is not set -# CONFIG_RTC_DRV_V3020 is not set # CONFIG_RTC_DRV_ZYNQMP is not set -# CONFIG_RTC_DRV_CROS_EC is not set # # on-CPU RTC drivers # # CONFIG_RTC_DRV_PL030 is not set # CONFIG_RTC_DRV_PL031 is not set +# CONFIG_RTC_DRV_CADENCE is not set # CONFIG_RTC_DRV_FTRTC010 is not set -# CONFIG_RTC_DRV_SNVS is not set # CONFIG_RTC_DRV_R7301 is not set # # HID Sensor RTC drivers # -# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set +# CONFIG_RTC_DRV_GOLDFISH is not set CONFIG_DMADEVICES=y # CONFIG_DMADEVICES_DEBUG is not set @@ -4684,15 +5575,21 @@ CONFIG_DMA_OF=y # CONFIG_AMBA_PL08X is not set # CONFIG_DW_AXI_DMAC is not set # CONFIG_FSL_EDMA is not set +# CONFIG_FSL_QDMA is not set # CONFIG_INTEL_IDMA64 is not set # CONFIG_MV_XOR_V2 is not set CONFIG_PL330_DMA=y +# CONFIG_PLX_DMA is not set # CONFIG_XILINX_DMA is not set +# CONFIG_XILINX_XDMA is not set # CONFIG_XILINX_ZYNQMP_DMA is not set +# CONFIG_XILINX_ZYNQMP_DPDMA is not set # CONFIG_QCOM_HIDMA_MGMT is not set # CONFIG_QCOM_HIDMA is not set # CONFIG_DW_DMAC is not set # CONFIG_DW_DMAC_PCI is not set +# CONFIG_DW_EDMA is not set +# CONFIG_SF_PDMA is not set # # DMA Clients @@ -4705,6 +5602,14 @@ CONFIG_PL330_DMA=y # CONFIG_SYNC_FILE=y # CONFIG_SW_SYNC is not set +# CONFIG_UDMABUF is not set +# CONFIG_DMABUF_MOVE_NOTIFY is not set +# CONFIG_DMABUF_DEBUG is not set +# CONFIG_DMABUF_SELFTESTS is not set +# CONFIG_DMABUF_HEAPS is not set +# CONFIG_DMABUF_SYSFS_STATS is not set +# end of DMABUF options + # CONFIG_AUXDISPLAY is not set # CONFIG_UIO is not set # CONFIG_VFIO is not set @@ -4712,19 +5617,24 @@ CONFIG_SYNC_FILE=y CONFIG_VIRTIO_MENU=y # CONFIG_VIRTIO_PCI is not set # CONFIG_VIRTIO_MMIO is not set +# CONFIG_VDPA is not set +CONFIG_VHOST_MENU=y +# CONFIG_VHOST_NET is not set +# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set # # Microsoft Hyper-V guest support # +# end of Microsoft Hyper-V guest support + +# CONFIG_GREYBUS is not set +# CONFIG_COMEDI is not set CONFIG_STAGING=y # CONFIG_PRISM2_USB is not set -# CONFIG_COMEDI is not set # CONFIG_RTL8192U is not set # CONFIG_RTLLIB is not set # CONFIG_RTL8723BS is not set # CONFIG_R8712U is not set -# CONFIG_R8188EU is not set -# CONFIG_R8822BE is not set # CONFIG_RTS5208 is not set # CONFIG_VT6655 is not set # CONFIG_VT6656 is not set @@ -4738,113 +5648,73 @@ CONFIG_STAGING=y # # CONFIG_ADIS16203 is not set # CONFIG_ADIS16240 is not set +# end of Accelerometers # # Analog to digital converters # -# CONFIG_AD7606 is not set -# CONFIG_AD7780 is not set # CONFIG_AD7816 is not set -# CONFIG_AD7192 is not set -# CONFIG_AD7280 is not set +# end of Analog to digital converters # # Analog digital bi-direction converters # # CONFIG_ADT7316 is not set - -# -# Capacitance to digital converters -# -# CONFIG_AD7150 is not set -# CONFIG_AD7152 is not set -# CONFIG_AD7746 is not set +# end of Analog digital bi-direction converters # # Direct Digital Synthesis # # CONFIG_AD9832 is not set # CONFIG_AD9834 is not set +# end of Direct Digital Synthesis # # Network Analyzer, Impedance Converters # # CONFIG_AD5933 is not set - -# -# Active energy metering IC -# -# CONFIG_ADE7854 is not set +# end of Network Analyzer, Impedance Converters # # Resolver to digital converters # -# CONFIG_AD2S90 is not set # CONFIG_AD2S1210 is not set -# CONFIG_FB_SM750 is not set -# CONFIG_FB_XGI is not set +# end of Resolver to digital converters +# end of IIO staging drivers -# -# Speakup console speech -# -# CONFIG_SPEAKUP is not set +# CONFIG_FB_SM750 is not set # CONFIG_STAGING_MEDIA is not set - -# -# Android -# -# CONFIG_ASHMEM is not set -# CONFIG_ANDROID_VSOC is not set -# CONFIG_ION is not set -CONFIG_FIQ_DEBUGGER=y -CONFIG_FIQ_DEBUGGER_NO_SLEEP=y -# CONFIG_FIQ_DEBUGGER_WAKEUP_IRQ_ALWAYS_ON is not set -CONFIG_FIQ_DEBUGGER_CONSOLE=y -CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE=y -CONFIG_FIQ_DEBUGGER_TRUST_ZONE=y -# CONFIG_FIQ_DEBUGGER_UART_OVERLAY is not set -CONFIG_RK_CONSOLE_THREAD=y # CONFIG_STAGING_BOARD is not set # CONFIG_LTE_GDM724X is not set -# CONFIG_DGNC is not set -# CONFIG_GS_FPGABOOT is not set -# CONFIG_UNISYSSPAR is not set -# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set # CONFIG_FB_TFT is not set -# CONFIG_WILC1000_SDIO is not set -# CONFIG_WILC1000_SPI is not set -# CONFIG_MOST is not set # CONFIG_KS7010 is not set -# CONFIG_GREYBUS is not set # CONFIG_PI433 is not set -# CONFIG_MTK_MMC is not set - -# -# Gasket devices -# -# CONFIG_STAGING_GASKET_FRAMEWORK is not set # CONFIG_XIL_AXIS_FIFO is not set -# CONFIG_EROFS_FS is not set -# CONFIG_POWERVR_ROGUE_N is not set +# CONFIG_FIELDBUS_DEV is not set +# CONFIG_QLGE is not set +# CONFIG_VME_BUS is not set # CONFIG_GOLDFISH is not set CONFIG_CHROME_PLATFORMS=y -# CONFIG_CROS_EC_I2C is not set -# CONFIG_CROS_EC_SPI is not set -CONFIG_CROS_EC_PROTO=y -CONFIG_CLKDEV_LOOKUP=y +# CONFIG_CROS_EC is not set +# CONFIG_CROS_HPS_I2C is not set +# CONFIG_MELLANOX_PLATFORM is not set +CONFIG_SURFACE_PLATFORMS=y +CONFIG_HAVE_CLK=y CONFIG_HAVE_CLK_PREPARE=y CONFIG_COMMON_CLK=y # -# Common Clock Framework +# Clock driver for ARM Reference designs # -CONFIG_COMMON_CLK_DEBUGFS=y -# CONFIG_COMMON_CLK_PROCFS is not set -# CONFIG_COMMON_CLK_VERSATILE is not set -# CONFIG_CLK_HSDK is not set +# CONFIG_CLK_ICST is not set +# CONFIG_CLK_SP810 is not set +# end of Clock driver for ARM Reference designs + +# CONFIG_LMK04832 is not set # CONFIG_COMMON_CLK_MAX9485 is not set -CONFIG_COMMON_CLK_RK808=y +# CONFIG_COMMON_CLK_RK808 is not set CONFIG_COMMON_CLK_SCMI=y +# CONFIG_COMMON_CLK_SI5341 is not set # CONFIG_COMMON_CLK_SI5351 is not set # CONFIG_COMMON_CLK_SI514 is not set # CONFIG_COMMON_CLK_SI544 is not set @@ -4852,14 +5722,24 @@ CONFIG_COMMON_CLK_SCMI=y # CONFIG_COMMON_CLK_CDCE706 is not set # CONFIG_COMMON_CLK_CDCE925 is not set # CONFIG_COMMON_CLK_CS2000_CP is not set -# CONFIG_CLK_QORIQ is not set +# CONFIG_COMMON_CLK_AXI_CLKGEN is not set CONFIG_COMMON_CLK_XGENE=y # CONFIG_COMMON_CLK_PWM is not set +# CONFIG_COMMON_CLK_RS9_PCIE is not set +# CONFIG_COMMON_CLK_SI521XX is not set # CONFIG_COMMON_CLK_VC5 is not set -# CONFIG_ROCKCHIP_CLK_COMPENSATION is not set -CONFIG_COMMON_CLK_ROCKCHIP_REGMAP=y -CONFIG_CLK_RK618=y -CONFIG_CLK_RK628=y +# CONFIG_COMMON_CLK_VC7 is not set +# CONFIG_COMMON_CLK_FIXED_MMIO is not set +CONFIG_COMMON_CLK_ROCKCHIP=y +CONFIG_CLK_PX30=y +CONFIG_CLK_RK3308=y +CONFIG_CLK_RK3328=y +CONFIG_CLK_RK3368=y +CONFIG_CLK_RK3399=y +CONFIG_CLK_RK3568=y +CONFIG_CLK_RK3588=y +# CONFIG_XILINX_VCU is not set +# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set # CONFIG_HWSPINLOCK is not set # @@ -4875,28 +5755,37 @@ CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y CONFIG_FSL_ERRATUM_A008585=y CONFIG_HISILICON_ERRATUM_161010101=y CONFIG_ARM64_ERRATUM_858921=y -# CONFIG_ARM_TIMER_SP804 is not set +# end of Clock Source drivers + CONFIG_MAILBOX=y # CONFIG_ARM_MHU is not set +# CONFIG_ARM_MHU_V2 is not set # CONFIG_PLATFORM_MHU is not set # CONFIG_PL320_MBOX is not set # CONFIG_ROCKCHIP_MBOX is not set # CONFIG_ALTERA_MBOX is not set # CONFIG_MAILBOX_TEST is not set -# CONFIG_RK3368_MBOX is not set +CONFIG_IOMMU_IOVA=y CONFIG_IOMMU_API=y CONFIG_IOMMU_SUPPORT=y # # Generic IOMMU Pagetable Support # -# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set +CONFIG_IOMMU_IO_PGTABLE=y +CONFIG_IOMMU_IO_PGTABLE_LPAE=y +# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set # CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set +# CONFIG_IOMMU_IO_PGTABLE_DART is not set +# end of Generic IOMMU Pagetable Support + # CONFIG_IOMMU_DEBUGFS is not set +CONFIG_IOMMU_DEFAULT_DMA_STRICT=y +# CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set # CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set -CONFIG_IOMMU_IOVA=y CONFIG_OF_IOMMU=y CONFIG_IOMMU_DMA=y +# CONFIG_IOMMUFD is not set CONFIG_ROCKCHIP_IOMMU=y # CONFIG_ARM_SMMU is not set # CONFIG_ARM_SMMU_V3 is not set @@ -4905,12 +5794,16 @@ CONFIG_ROCKCHIP_IOMMU=y # Remoteproc drivers # # CONFIG_REMOTEPROC is not set +# end of Remoteproc drivers # # Rpmsg drivers # # CONFIG_RPMSG_QCOM_GLINK_RPM is not set # CONFIG_RPMSG_VIRTIO is not set +# end of Rpmsg drivers + +# CONFIG_SOUNDWIRE is not set # # SOC (System On Chip) specific Drivers @@ -4919,57 +5812,55 @@ CONFIG_ROCKCHIP_IOMMU=y # # Amlogic SoC drivers # +# end of Amlogic SoC drivers # # Broadcom SoC drivers # # CONFIG_SOC_BRCMSTB is not set +# end of Broadcom SoC drivers # # NXP/Freescale QorIQ SoC drivers # +# CONFIG_QUICC_ENGINE is not set +# CONFIG_FSL_RCPM is not set +# end of NXP/Freescale QorIQ SoC drivers + +# +# fujitsu SoC drivers +# +# end of fujitsu SoC drivers # # i.MX SoC drivers # +# end of i.MX SoC drivers # -# Qualcomm SoC drivers +# Enable LiteX SoC Builder specific drivers # +# CONFIG_LITEX_SOC_CONTROLLER is not set +# end of Enable LiteX SoC Builder specific drivers + +# CONFIG_WPCM450_SOC is not set # -# Rockchip CPU selection +# Qualcomm SoC drivers # -CONFIG_CPU_PX30=y -CONFIG_CPU_RK1808=y -# CONFIG_CPU_RK3308 is not set -CONFIG_CPU_RK3328=y -# CONFIG_CPU_RK3368 is not set -CONFIG_CPU_RK3399=y -CONFIG_CPU_RK3568=y -CONFIG_ANDROID_VERSION=0x08010000 -CONFIG_ROCKCHIP_CPUINFO=y +# end of Qualcomm SoC drivers + CONFIG_ROCKCHIP_GRF=y -# CONFIG_ROCKCHIP_HW_DECOMPRESS is not set -CONFIG_ROCKCHIP_IPA=y -CONFIG_ROCKCHIP_OPP=y +CONFIG_ROCKCHIP_IODOMAIN=y CONFIG_ROCKCHIP_PM_DOMAINS=y -CONFIG_ROCKCHIP_PVTM=y -# CONFIG_ROCKCHIP_RAMDISK is not set -CONFIG_ROCKCHIP_SUSPEND_MODE=y -CONFIG_ROCKCHIP_SYSTEM_MONITOR=y -CONFIG_ROCKCHIP_MTD_VENDOR_STORAGE=y -CONFIG_ROCKCHIP_VENDOR_STORAGE_UPDATE_LOADER=y -CONFIG_ROCKCHIP_DEBUG=y -# CONFIG_ROCKCHIP_LOW_PERFORMANCE is not set -# CONFIG_ROCKCHIP_THUNDER_BOOT is not set -CONFIG_ROCKCHIP_SCHED_PERFORMANCE_BIAS=y # CONFIG_SOC_TI is not set # # Xilinx SoC drivers # -# CONFIG_XILINX_VCU is not set +# end of Xilinx SoC drivers +# end of SOC (System On Chip) specific Drivers + CONFIG_PM_DEVFREQ=y # @@ -4984,54 +5875,69 @@ CONFIG_DEVFREQ_GOV_USERSPACE=y # # DEVFREQ Drivers # -CONFIG_ARM_ROCKCHIP_BUS_DEVFREQ=y -CONFIG_ARM_ROCKCHIP_DMC_DEVFREQ=y -# CONFIG_ARM_ROCKCHIP_DMC_DEBUG is not set +# CONFIG_ARM_RK3399_DMC_DEVFREQ is not set CONFIG_PM_DEVFREQ_EVENT=y CONFIG_DEVFREQ_EVENT_ROCKCHIP_DFI=y -# CONFIG_DEVFREQ_EVENT_ROCKCHIP_NOCP is not set CONFIG_EXTCON=y # # Extcon Device Drivers # # CONFIG_EXTCON_ADC_JACK is not set +# CONFIG_EXTCON_FSA9480 is not set # CONFIG_EXTCON_GPIO is not set # CONFIG_EXTCON_MAX3355 is not set +# CONFIG_EXTCON_PTN5150 is not set # CONFIG_EXTCON_RT8973A is not set # CONFIG_EXTCON_SM5502 is not set # CONFIG_EXTCON_USB_GPIO is not set -# CONFIG_EXTCON_USBC_CROS_EC is not set CONFIG_MEMORY=y # CONFIG_ARM_PL172_MPMC is not set CONFIG_IIO=y CONFIG_IIO_BUFFER=y # CONFIG_IIO_BUFFER_CB is not set +# CONFIG_IIO_BUFFER_DMA is not set +# CONFIG_IIO_BUFFER_DMAENGINE is not set # CONFIG_IIO_BUFFER_HW_CONSUMER is not set CONFIG_IIO_KFIFO_BUF=y +CONFIG_IIO_TRIGGERED_BUFFER=y # CONFIG_IIO_CONFIGFS is not set CONFIG_IIO_TRIGGER=y CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_IIO_SW_DEVICE is not set # CONFIG_IIO_SW_TRIGGER is not set +# CONFIG_IIO_TRIGGERED_EVENT is not set # # Accelerometers # # CONFIG_ADIS16201 is not set # CONFIG_ADIS16209 is not set +# CONFIG_ADXL313_I2C is not set +# CONFIG_ADXL313_SPI is not set # CONFIG_ADXL345_I2C is not set # CONFIG_ADXL345_SPI is not set +# CONFIG_ADXL355_I2C is not set +# CONFIG_ADXL355_SPI is not set +# CONFIG_ADXL367_SPI is not set +# CONFIG_ADXL367_I2C is not set +# CONFIG_ADXL372_SPI is not set +# CONFIG_ADXL372_I2C is not set # CONFIG_BMA180 is not set # CONFIG_BMA220 is not set +# CONFIG_BMA400 is not set # CONFIG_BMC150_ACCEL is not set +# CONFIG_BMI088_ACCEL is not set # CONFIG_DA280 is not set # CONFIG_DA311 is not set # CONFIG_DMARD06 is not set # CONFIG_DMARD09 is not set # CONFIG_DMARD10 is not set -# CONFIG_IIO_CROS_EC_ACCEL_LEGACY is not set +# CONFIG_FXLS8962AF_I2C is not set +# CONFIG_FXLS8962AF_SPI is not set # CONFIG_IIO_ST_ACCEL_3AXIS is not set +# CONFIG_IIO_KX022A_SPI is not set +# CONFIG_IIO_KX022A_I2C is not set # CONFIG_KXSD9 is not set # CONFIG_KXCJK1013 is not set # CONFIG_MC3230 is not set @@ -5041,25 +5947,40 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_MMA8452 is not set # CONFIG_MMA9551 is not set # CONFIG_MMA9553 is not set +# CONFIG_MSA311 is not set # CONFIG_MXC4005 is not set # CONFIG_MXC6255 is not set # CONFIG_SCA3000 is not set +# CONFIG_SCA3300 is not set # CONFIG_STK8312 is not set # CONFIG_STK8BA50 is not set +# end of Accelerometers # # Analog to digital converters # +# CONFIG_AD4130 is not set +# CONFIG_AD7091R5 is not set +# CONFIG_AD7124 is not set +# CONFIG_AD7192 is not set # CONFIG_AD7266 is not set +# CONFIG_AD7280 is not set # CONFIG_AD7291 is not set +# CONFIG_AD7292 is not set # CONFIG_AD7298 is not set # CONFIG_AD7476 is not set +# CONFIG_AD7606_IFACE_PARALLEL is not set +# CONFIG_AD7606_IFACE_SPI is not set # CONFIG_AD7766 is not set +# CONFIG_AD7768_1 is not set +# CONFIG_AD7780 is not set # CONFIG_AD7791 is not set # CONFIG_AD7793 is not set # CONFIG_AD7887 is not set # CONFIG_AD7923 is not set +# CONFIG_AD7949 is not set # CONFIG_AD799X is not set +# CONFIG_ADI_AXI_ADC is not set # CONFIG_CC10001_ADC is not set # CONFIG_ENVELOPE_DETECTOR is not set # CONFIG_HI8435 is not set @@ -5067,17 +5988,22 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_INA2XX_ADC is not set # CONFIG_LTC2471 is not set # CONFIG_LTC2485 is not set +# CONFIG_LTC2496 is not set # CONFIG_LTC2497 is not set # CONFIG_MAX1027 is not set # CONFIG_MAX11100 is not set # CONFIG_MAX1118 is not set +# CONFIG_MAX11205 is not set +# CONFIG_MAX11410 is not set +# CONFIG_MAX1241 is not set # CONFIG_MAX1363 is not set # CONFIG_MAX9611 is not set # CONFIG_MCP320X is not set # CONFIG_MCP3422 is not set +# CONFIG_MCP3911 is not set # CONFIG_NAU7802 is not set CONFIG_ROCKCHIP_SARADC=y -# CONFIG_ROCKCHIP_SARADC_TEST_CHN is not set +# CONFIG_RICHTEK_RTQ6056 is not set # CONFIG_SD_ADC_MODULATOR is not set # CONFIG_TI_ADC081C is not set # CONFIG_TI_ADC0832 is not set @@ -5087,47 +6013,88 @@ CONFIG_ROCKCHIP_SARADC=y # CONFIG_TI_ADC128S052 is not set # CONFIG_TI_ADC161S626 is not set # CONFIG_TI_ADS1015 is not set +# CONFIG_TI_ADS7924 is not set +# CONFIG_TI_ADS1100 is not set # CONFIG_TI_ADS7950 is not set +# CONFIG_TI_ADS8344 is not set # CONFIG_TI_ADS8688 is not set +# CONFIG_TI_ADS124S08 is not set +# CONFIG_TI_ADS131E08 is not set +# CONFIG_TI_LMP92064 is not set # CONFIG_TI_TLC4541 is not set +# CONFIG_TI_TSC2046 is not set # CONFIG_VF610_ADC is not set +# CONFIG_XILINX_XADC is not set +# end of Analog to digital converters + +# +# Analog to digital and digital to analog converters +# +# CONFIG_AD74115 is not set +# CONFIG_AD74413R is not set +# end of Analog to digital and digital to analog converters # # Analog Front Ends # # CONFIG_IIO_RESCALE is not set +# end of Analog Front Ends # # Amplifiers # # CONFIG_AD8366 is not set +# CONFIG_ADA4250 is not set +# CONFIG_HMC425 is not set +# end of Amplifiers + +# +# Capacitance to digital converters +# +# CONFIG_AD7150 is not set +# CONFIG_AD7746 is not set +# end of Capacitance to digital converters # # Chemical Sensors # # CONFIG_ATLAS_PH_SENSOR is not set +# CONFIG_ATLAS_EZO_SENSOR is not set # CONFIG_BME680 is not set # CONFIG_CCS811 is not set # CONFIG_IAQCORE is not set +# CONFIG_PMS7003 is not set +# CONFIG_SCD30_CORE is not set +# CONFIG_SCD4X is not set +# CONFIG_SENSIRION_SGP30 is not set +# CONFIG_SENSIRION_SGP40 is not set +# CONFIG_SPS30_I2C is not set +# CONFIG_SPS30_SERIAL is not set +# CONFIG_SENSEAIR_SUNRISE_CO2 is not set # CONFIG_VZ89X is not set -# CONFIG_IIO_CROS_EC_SENSORS_CORE is not set +# end of Chemical Sensors # # Hid Sensor IIO Common # +# end of Hid Sensor IIO Common # -# SSP Sensor Common +# IIO SCMI Sensors # -# CONFIG_IIO_SSP_SENSORHUB is not set +# CONFIG_IIO_SCMI is not set +# end of IIO SCMI Sensors # -# Counters +# SSP Sensor Common # +# CONFIG_IIO_SSP_SENSORHUB is not set +# end of SSP Sensor Common # # Digital to analog converters # +# CONFIG_AD3552R is not set # CONFIG_AD5064 is not set # CONFIG_AD5360 is not set # CONFIG_AD5380 is not set @@ -5138,30 +6105,46 @@ CONFIG_ROCKCHIP_SARADC=y # CONFIG_AD5593R is not set # CONFIG_AD5504 is not set # CONFIG_AD5624R_SPI is not set -# CONFIG_LTC2632 is not set +# CONFIG_LTC2688 is not set # CONFIG_AD5686_SPI is not set # CONFIG_AD5696_I2C is not set # CONFIG_AD5755 is not set # CONFIG_AD5758 is not set # CONFIG_AD5761 is not set # CONFIG_AD5764 is not set +# CONFIG_AD5766 is not set +# CONFIG_AD5770R is not set # CONFIG_AD5791 is not set +# CONFIG_AD7293 is not set # CONFIG_AD7303 is not set # CONFIG_AD8801 is not set # CONFIG_DPOT_DAC is not set # CONFIG_DS4424 is not set +# CONFIG_LTC1660 is not set +# CONFIG_LTC2632 is not set # CONFIG_M62332 is not set # CONFIG_MAX517 is not set +# CONFIG_MAX5522 is not set # CONFIG_MAX5821 is not set # CONFIG_MCP4725 is not set # CONFIG_MCP4922 is not set # CONFIG_TI_DAC082S085 is not set # CONFIG_TI_DAC5571 is not set +# CONFIG_TI_DAC7311 is not set +# CONFIG_TI_DAC7612 is not set # CONFIG_VF610_DAC is not set +# end of Digital to analog converters # # IIO dummy driver # +# end of IIO dummy driver + +# +# Filters +# +# CONFIG_ADMV8818 is not set +# end of Filters # # Frequency Synthesizers DDS/PLL @@ -5171,11 +6154,20 @@ CONFIG_ROCKCHIP_SARADC=y # Clock Generator/Distribution # # CONFIG_AD9523 is not set +# end of Clock Generator/Distribution # # Phase-Locked Loop (PLL) frequency synthesizers # # CONFIG_ADF4350 is not set +# CONFIG_ADF4371 is not set +# CONFIG_ADF4377 is not set +# CONFIG_ADMV1013 is not set +# CONFIG_ADMV1014 is not set +# CONFIG_ADMV4420 is not set +# CONFIG_ADRF6780 is not set +# end of Phase-Locked Loop (PLL) frequency synthesizers +# end of Frequency Synthesizers DDS/PLL # # Digital gyroscope sensors @@ -5184,11 +6176,14 @@ CONFIG_ROCKCHIP_SARADC=y # CONFIG_ADIS16130 is not set # CONFIG_ADIS16136 is not set # CONFIG_ADIS16260 is not set +# CONFIG_ADXRS290 is not set # CONFIG_ADXRS450 is not set # CONFIG_BMG160 is not set +# CONFIG_FXAS21002C is not set # CONFIG_MPU3050_I2C is not set # CONFIG_IIO_ST_GYRO_3AXIS is not set # CONFIG_ITG3200 is not set +# end of Digital gyroscope sensors # # Health Sensors @@ -5201,6 +6196,8 @@ CONFIG_ROCKCHIP_SARADC=y # CONFIG_AFE4404 is not set # CONFIG_MAX30100 is not set # CONFIG_MAX30102 is not set +# end of Heart Rate Monitors +# end of Health Sensors # # Humidity sensors @@ -5208,30 +6205,45 @@ CONFIG_ROCKCHIP_SARADC=y # CONFIG_AM2315 is not set # CONFIG_DHT11 is not set # CONFIG_HDC100X is not set +# CONFIG_HDC2010 is not set # CONFIG_HTS221 is not set # CONFIG_HTU21 is not set # CONFIG_SI7005 is not set # CONFIG_SI7020 is not set +# end of Humidity sensors # # Inertial measurement units # # CONFIG_ADIS16400 is not set +# CONFIG_ADIS16460 is not set +# CONFIG_ADIS16475 is not set # CONFIG_ADIS16480 is not set # CONFIG_BMI160_I2C is not set # CONFIG_BMI160_SPI is not set +# CONFIG_BOSCH_BNO055_SERIAL is not set +# CONFIG_BOSCH_BNO055_I2C is not set +# CONFIG_FXOS8700_I2C is not set +# CONFIG_FXOS8700_SPI is not set # CONFIG_KMX61 is not set +# CONFIG_INV_ICM42600_I2C is not set +# CONFIG_INV_ICM42600_SPI is not set # CONFIG_INV_MPU6050_I2C is not set # CONFIG_INV_MPU6050_SPI is not set # CONFIG_IIO_ST_LSM6DSX is not set +# CONFIG_IIO_ST_LSM9DS0 is not set +# end of Inertial measurement units # # Light sensors # # CONFIG_ADJD_S311 is not set +# CONFIG_ADUX1020 is not set +# CONFIG_AL3010 is not set # CONFIG_AL3320A is not set # CONFIG_APDS9300 is not set # CONFIG_APDS9960 is not set +# CONFIG_AS73211 is not set # CONFIG_BH1750 is not set # CONFIG_BH1780 is not set # CONFIG_CM32181 is not set @@ -5239,16 +6251,23 @@ CONFIG_ROCKCHIP_SARADC=y # CONFIG_CM3323 is not set # CONFIG_CM3605 is not set # CONFIG_CM36651 is not set +# CONFIG_GP2AP002 is not set # CONFIG_GP2AP020A00F is not set CONFIG_SENSORS_ISL29018=y # CONFIG_SENSORS_ISL29028 is not set # CONFIG_ISL29125 is not set # CONFIG_JSA1212 is not set +# CONFIG_ROHM_BU27008 is not set +# CONFIG_ROHM_BU27034 is not set # CONFIG_RPR0521 is not set # CONFIG_LTR501 is not set +# CONFIG_LTRF216A is not set # CONFIG_LV0104CS is not set # CONFIG_MAX44000 is not set +# CONFIG_MAX44009 is not set +# CONFIG_NOA1305 is not set # CONFIG_OPT3001 is not set +# CONFIG_OPT4001 is not set # CONFIG_PA12203001 is not set # CONFIG_SI1133 is not set # CONFIG_SI1145 is not set @@ -5258,13 +6277,17 @@ CONFIG_SENSORS_ISL29018=y # CONFIG_TCS3472 is not set CONFIG_SENSORS_TSL2563=y CONFIG_TSL2583=y +# CONFIG_TSL2591 is not set # CONFIG_TSL2772 is not set # CONFIG_TSL4531 is not set # CONFIG_US5182D is not set # CONFIG_VCNL4000 is not set +# CONFIG_VCNL4035 is not set +# CONFIG_VEML6030 is not set # CONFIG_VEML6070 is not set # CONFIG_VL6180 is not set # CONFIG_ZOPT2201 is not set +# end of Light sensors # # Magnetometer sensors @@ -5279,94 +6302,138 @@ CONFIG_TSL2583=y # CONFIG_IIO_ST_MAGN_3AXIS is not set # CONFIG_SENSORS_HMC5843_I2C is not set # CONFIG_SENSORS_HMC5843_SPI is not set +# CONFIG_SENSORS_RM3100_I2C is not set +# CONFIG_SENSORS_RM3100_SPI is not set +# CONFIG_TI_TMAG5273 is not set +# CONFIG_YAMAHA_YAS530 is not set +# end of Magnetometer sensors # # Multiplexers # # CONFIG_IIO_MUX is not set +# end of Multiplexers # # Inclinometer sensors # +# end of Inclinometer sensors # # Triggers - standalone # -# CONFIG_IIO_INTERRUPT_TRIGGER is not set -CONFIG_IIO_SYSFS_TRIGGER=y +# CONFIG_IIO_INTERRUPT_TRIGGER is not set +CONFIG_IIO_SYSFS_TRIGGER=y +# end of Triggers - standalone + +# +# Linear and angular position sensors +# +# end of Linear and angular position sensors # # Digital potentiometers # +# CONFIG_AD5110 is not set # CONFIG_AD5272 is not set # CONFIG_DS1803 is not set +# CONFIG_MAX5432 is not set # CONFIG_MAX5481 is not set # CONFIG_MAX5487 is not set # CONFIG_MCP4018 is not set # CONFIG_MCP4131 is not set # CONFIG_MCP4531 is not set +# CONFIG_MCP41010 is not set # CONFIG_TPL0102 is not set +# CONFIG_X9250 is not set +# end of Digital potentiometers # # Digital potentiostats # # CONFIG_LMP91000 is not set +# end of Digital potentiostats # # Pressure sensors # # CONFIG_ABP060MG is not set # CONFIG_BMP280 is not set +# CONFIG_DLHL60D is not set +# CONFIG_DPS310 is not set # CONFIG_HP03 is not set +# CONFIG_ICP10100 is not set # CONFIG_MPL115_I2C is not set # CONFIG_MPL115_SPI is not set # CONFIG_MPL3115 is not set +# CONFIG_MPRLS0025PA is not set # CONFIG_MS5611 is not set # CONFIG_MS5637 is not set # CONFIG_IIO_ST_PRESS is not set # CONFIG_T5403 is not set # CONFIG_HP206C is not set # CONFIG_ZPA2326 is not set +# end of Pressure sensors # # Lightning sensors # # CONFIG_AS3935 is not set +# end of Lightning sensors # # Proximity and distance sensors # # CONFIG_ISL29501 is not set # CONFIG_LIDAR_LITE_V2 is not set +# CONFIG_MB1232 is not set +# CONFIG_PING is not set # CONFIG_RFD77402 is not set # CONFIG_SRF04 is not set +# CONFIG_SX9310 is not set +# CONFIG_SX9324 is not set +# CONFIG_SX9360 is not set # CONFIG_SX9500 is not set # CONFIG_SRF08 is not set +# CONFIG_VCNL3020 is not set +# CONFIG_VL53L0X_I2C is not set +# end of Proximity and distance sensors # # Resolver to digital converters # +# CONFIG_AD2S90 is not set # CONFIG_AD2S1200 is not set +# end of Resolver to digital converters # # Temperature sensors # +# CONFIG_LTC2983 is not set # CONFIG_MAXIM_THERMOCOUPLE is not set # CONFIG_MLX90614 is not set # CONFIG_MLX90632 is not set # CONFIG_TMP006 is not set # CONFIG_TMP007 is not set +# CONFIG_TMP117 is not set # CONFIG_TSYS01 is not set # CONFIG_TSYS02D is not set +# CONFIG_MAX30208 is not set +# CONFIG_MAX31856 is not set +# CONFIG_MAX31865 is not set +# end of Temperature sensors + # CONFIG_NTB is not set -# CONFIG_VME_BUS is not set CONFIG_PWM=y CONFIG_PWM_SYSFS=y -# CONFIG_PWM_CROS_EC is not set +# CONFIG_PWM_DEBUG is not set +# CONFIG_PWM_ATMEL_TCB is not set +# CONFIG_PWM_CLK is not set +# CONFIG_PWM_DWC is not set # CONFIG_PWM_FSL_FTM is not set # CONFIG_PWM_PCA9685 is not set CONFIG_PWM_ROCKCHIP=y -# CONFIG_PWM_ROCKCHIP_ONESHOT is not set +# CONFIG_PWM_XILINX is not set # # IRQ chip support @@ -5378,99 +6445,120 @@ CONFIG_ARM_GIC_V2M=y CONFIG_ARM_GIC_V3=y CONFIG_ARM_GIC_V3_ITS=y CONFIG_ARM_GIC_V3_ITS_PCI=y +# CONFIG_AL_FIC is not set +# CONFIG_XILINX_INTC is not set CONFIG_PARTITION_PERCPU=y +# end of IRQ chip support + # CONFIG_IPACK_BUS is not set CONFIG_ARCH_HAS_RESET_CONTROLLER=y CONFIG_RESET_CONTROLLER=y +CONFIG_RESET_SCMI=y +# CONFIG_RESET_SIMPLE is not set # CONFIG_RESET_TI_SYSCON is not set -# CONFIG_FMC is not set +# CONFIG_RESET_TI_TPS380X is not set # # PHY Subsystem # CONFIG_GENERIC_PHY=y -# CONFIG_PHY_XGENE is not set +CONFIG_GENERIC_PHY_MIPI_DPHY=y +# CONFIG_PHY_CAN_TRANSCEIVER is not set + +# +# PHY drivers for Broadcom platforms +# # CONFIG_BCM_KONA_USB2_PHY is not set +# end of PHY drivers for Broadcom platforms + +# CONFIG_PHY_CADENCE_TORRENT is not set +# CONFIG_PHY_CADENCE_DPHY is not set +# CONFIG_PHY_CADENCE_DPHY_RX is not set +# CONFIG_PHY_CADENCE_SIERRA is not set +# CONFIG_PHY_CADENCE_SALVO is not set # CONFIG_PHY_PXA_28NM_HSIC is not set # CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_PHY_LAN966X_SERDES is not set # CONFIG_PHY_CPCAP_USB is not set # CONFIG_PHY_MAPPHONE_MDM6600 is not set -CONFIG_PHY_ROCKCHIP_CSI2_DPHY=y +# CONFIG_PHY_OCELOT_SERDES is not set CONFIG_PHY_ROCKCHIP_DP=y +CONFIG_PHY_ROCKCHIP_DPHY_RX0=y CONFIG_PHY_ROCKCHIP_EMMC=y -# CONFIG_PHY_ROCKCHIP_INNO_COMBPHY is not set -CONFIG_PHY_ROCKCHIP_INNO_HDMI_PHY=y -CONFIG_PHY_ROCKCHIP_INNO_MIPI_DPHY=y +CONFIG_PHY_ROCKCHIP_INNO_HDMI=y CONFIG_PHY_ROCKCHIP_INNO_USB2=y -CONFIG_PHY_ROCKCHIP_INNO_USB3=y -CONFIG_PHY_ROCKCHIP_INNO_VIDEO_COMBO_PHY=y -# CONFIG_PHY_ROCKCHIP_INNO_VIDEO_PHY is not set -CONFIG_PHY_ROCKCHIP_MIPI_RX=y +CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY=y +CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=y -CONFIG_PHY_ROCKCHIP_NANENG_EDP=y -# CONFIG_PHY_ROCKCHIP_NANENG_USB2 is not set CONFIG_PHY_ROCKCHIP_PCIE=y CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y CONFIG_PHY_ROCKCHIP_TYPEC=y CONFIG_PHY_ROCKCHIP_USB=y # CONFIG_PHY_SAMSUNG_USB2 is not set +# end of PHY Subsystem + # CONFIG_POWERCAP is not set # CONFIG_MCB is not set CONFIG_RAS=y +# CONFIG_USB4 is not set # # Android # -CONFIG_ANDROID=y # CONFIG_ANDROID_BINDER_IPC is not set +# end of Android + # CONFIG_LIBNVDIMM is not set # CONFIG_DAX is not set CONFIG_NVMEM=y CONFIG_NVMEM_SYSFS=y -CONFIG_ROCKCHIP_EFUSE=y -CONFIG_ROCKCHIP_OTP=y + +# +# Layout Types +# +# CONFIG_NVMEM_LAYOUT_SL28_VPD is not set +# CONFIG_NVMEM_LAYOUT_ONIE_TLV is not set +# end of Layout Types + +# CONFIG_NVMEM_RMEM is not set +# CONFIG_NVMEM_ROCKCHIP_EFUSE is not set +# CONFIG_NVMEM_ROCKCHIP_OTP is not set +# CONFIG_NVMEM_U_BOOT_ENV is not set # # HW tracing support # # CONFIG_STM is not set # CONFIG_INTEL_TH is not set +# end of HW tracing support + # CONFIG_FPGA is not set # CONFIG_FSI is not set # CONFIG_TEE is not set CONFIG_PM_OPP=y # CONFIG_SIOX is not set # CONFIG_SLIMBUS is not set -# CONFIG_LEGACY_ENERGY_MODEL_DT is not set -CONFIG_RK_FLASH=y - -# -# Rockchip Flash Devices -# -# CONFIG_RK_NANDC_NAND is not set -CONFIG_RK_SFC_NAND=y -CONFIG_RK_SFC_NAND_MTD=y -CONFIG_RK_SFC_NOR=y -CONFIG_RK_SFC_NOR_MTD=y -# CONFIG_RK_NAND is not set - -# -# Headset device support -# -CONFIG_RK_HEADSET=y +# CONFIG_INTERCONNECT is not set +# CONFIG_COUNTER is not set +# CONFIG_MOST is not set +# CONFIG_PECI is not set +# CONFIG_HTE is not set +# CONFIG_CDX_BUS is not set +# end of Device Drivers # # File systems # CONFIG_DCACHE_WORD_ACCESS=y +# CONFIG_VALIDATE_FS_PARSER is not set CONFIG_FS_IOMAP=y +CONFIG_LEGACY_DIRECT_IO=y # CONFIG_EXT2_FS is not set # CONFIG_EXT3_FS is not set CONFIG_EXT4_FS=y CONFIG_EXT4_USE_FOR_EXT2=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y -# CONFIG_EXT4_ENCRYPTION is not set # CONFIG_EXT4_DEBUG is not set CONFIG_JBD2=y # CONFIG_JBD2_DEBUG is not set @@ -5478,6 +6566,8 @@ CONFIG_FS_MBCACHE=y # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set CONFIG_XFS_FS=y +CONFIG_XFS_SUPPORT_V4=y +CONFIG_XFS_SUPPORT_ASCII_CI=y # CONFIG_XFS_QUOTA is not set # CONFIG_XFS_POSIX_ACL is not set # CONFIG_XFS_RT is not set @@ -5489,12 +6579,10 @@ CONFIG_XFS_FS=y # CONFIG_BTRFS_FS is not set # CONFIG_NILFS2_FS is not set # CONFIG_F2FS_FS is not set -# CONFIG_FS_DAX is not set CONFIG_FS_POSIX_ACL=y CONFIG_EXPORTFS=y # CONFIG_EXPORTFS_BLOCK_OPS is not set CONFIG_FILE_LOCKING=y -CONFIG_MANDATORY_FILE_LOCKING=y # CONFIG_FS_ENCRYPTION is not set # CONFIG_FS_VERITY is not set CONFIG_FSNOTIFY=y @@ -5502,22 +6590,22 @@ CONFIG_FSNOTIFY=y CONFIG_INOTIFY_USER=y # CONFIG_FANOTIFY is not set # CONFIG_QUOTA is not set -# CONFIG_AUTOFS4_FS is not set # CONFIG_AUTOFS_FS is not set CONFIG_FUSE_FS=y # CONFIG_CUSE is not set +# CONFIG_VIRTIO_FS is not set CONFIG_OVERLAY_FS=y # CONFIG_OVERLAY_FS_REDIRECT_DIR is not set CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y # CONFIG_OVERLAY_FS_INDEX is not set # CONFIG_OVERLAY_FS_XINO_AUTO is not set # CONFIG_OVERLAY_FS_METACOPY is not set -# CONFIG_INCREMENTAL_FS is not set # # Caches # # CONFIG_FSCACHE is not set +# end of Caches # # CD-ROM/DVD Filesystems @@ -5526,9 +6614,10 @@ CONFIG_ISO9660_FS=y CONFIG_JOLIET=y CONFIG_ZISOFS=y # CONFIG_UDF_FS is not set +# end of CD-ROM/DVD Filesystems # -# DOS/FAT/NT Filesystems +# DOS/FAT/EXFAT/NT Filesystems # CONFIG_FAT_FS=y # CONFIG_MSDOS_FS is not set @@ -5537,13 +6626,10 @@ CONFIG_FAT_DEFAULT_CODEPAGE=936 CONFIG_FAT_DEFAULT_IOCHARSET="utf8" CONFIG_FAT_DEFAULT_UTF8=y CONFIG_EXFAT_FS=y -CONFIG_EXFAT_DEFAULT_CODEPAGE=437 CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8" -CONFIG_EXFAT_VIRTUAL_XATTR=y -CONFIG_EXFAT_VIRTUAL_XATTR_SELINUX_LABEL="u:object_r:exfat:s0" -# CONFIG_EXFAT_DEBUG is not set -# CONFIG_EXFAT_UEVENT is not set # CONFIG_NTFS_FS is not set +# CONFIG_NTFS3_FS is not set +# end of DOS/FAT/EXFAT/NT Filesystems # # Pseudo filesystems @@ -5553,22 +6639,24 @@ CONFIG_PROC_FS=y CONFIG_PROC_SYSCTL=y CONFIG_PROC_PAGE_MONITOR=y # CONFIG_PROC_CHILDREN is not set -# CONFIG_PROC_UID is not set CONFIG_KERNFS=y CONFIG_SYSFS=y CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y CONFIG_TMPFS_XATTR=y +# CONFIG_TMPFS_INODE64 is not set +CONFIG_ARCH_SUPPORTS_HUGETLBFS=y # CONFIG_HUGETLBFS is not set CONFIG_MEMFD_CREATE=y CONFIG_ARCH_HAS_GIGANTIC_PAGE=y CONFIG_CONFIGFS_FS=y +# end of Pseudo filesystems + CONFIG_MISC_FILESYSTEMS=y # CONFIG_ORANGEFS_FS is not set # CONFIG_ADFS_FS is not set # CONFIG_AFFS_FS is not set # CONFIG_ECRYPT_FS is not set -# CONFIG_SDCARD_FS is not set # CONFIG_HFS_FS is not set # CONFIG_HFSPLUS_FS is not set # CONFIG_BEFS_FS is not set @@ -5587,16 +6675,20 @@ CONFIG_UBIFS_FS=y CONFIG_UBIFS_FS_ADVANCED_COMPR=y CONFIG_UBIFS_FS_LZO=y CONFIG_UBIFS_FS_ZLIB=y +CONFIG_UBIFS_FS_ZSTD=y # CONFIG_UBIFS_ATIME_SUPPORT is not set CONFIG_UBIFS_FS_XATTR=y CONFIG_UBIFS_FS_SECURITY=y +# CONFIG_UBIFS_FS_AUTHENTICATION is not set # CONFIG_CRAMFS is not set CONFIG_SQUASHFS=y CONFIG_SQUASHFS_FILE_CACHE=y # CONFIG_SQUASHFS_FILE_DIRECT is not set CONFIG_SQUASHFS_DECOMP_SINGLE=y -# CONFIG_SQUASHFS_DECOMP_MULTI is not set -# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set +# CONFIG_SQUASHFS_CHOICE_DECOMP_BY_MOUNT is not set +CONFIG_SQUASHFS_COMPILE_DECOMP_SINGLE=y +# CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI is not set +# CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI_PERCPU is not set # CONFIG_SQUASHFS_XATTR is not set CONFIG_SQUASHFS_ZLIB=y CONFIG_SQUASHFS_LZ4=y @@ -5614,6 +6706,7 @@ CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 # CONFIG_QNX6FS_FS is not set # CONFIG_ROMFS_FS is not set CONFIG_PSTORE=y +CONFIG_PSTORE_DEFAULT_KMSG_BYTES=10240 CONFIG_PSTORE_DEFLATE_COMPRESS=y # CONFIG_PSTORE_LZO_COMPRESS is not set # CONFIG_PSTORE_LZ4_COMPRESS is not set @@ -5624,18 +6717,19 @@ CONFIG_PSTORE_COMPRESS=y CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" CONFIG_PSTORE_CONSOLE=y -# CONFIG_PSTORE_CONSOLE_FORCE is not set # CONFIG_PSTORE_PMSG is not set # CONFIG_PSTORE_FTRACE is not set CONFIG_PSTORE_RAM=y -# CONFIG_PSTORE_MCU_LOG is not set +# CONFIG_PSTORE_BLK is not set # CONFIG_SYSV_FS is not set # CONFIG_UFS_FS is not set +# CONFIG_EROFS_FS is not set CONFIG_NETWORK_FILESYSTEMS=y # CONFIG_NFS_FS is not set # CONFIG_NFSD is not set # CONFIG_CEPH_FS is not set # CONFIG_CIFS is not set +# CONFIG_SMB_SERVER is not set # CONFIG_CODA_FS is not set # CONFIG_AFS_FS is not set CONFIG_NLS=y @@ -5692,27 +6786,26 @@ CONFIG_NLS_UTF8=y # CONFIG_DLM is not set CONFIG_UNICODE=y # CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set +CONFIG_IO_WQ=y +# end of File systems # # Security options # CONFIG_KEYS=y -CONFIG_KEYS_COMPAT=y +# CONFIG_KEYS_REQUEST_CACHE is not set # CONFIG_PERSISTENT_KEYRINGS is not set -# CONFIG_BIG_KEYS is not set # CONFIG_TRUSTED_KEYS is not set # CONFIG_ENCRYPTED_KEYS is not set # CONFIG_KEY_DH_OPERATIONS is not set # CONFIG_SECURITY_DMESG_RESTRICT is not set # CONFIG_SECURITY is not set CONFIG_SECURITYFS=y -CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y # CONFIG_HARDENED_USERCOPY is not set # CONFIG_FORTIFY_SOURCE is not set # CONFIG_STATIC_USERMODEHELPER is not set -# CONFIG_TEE_SUPPORT is not set CONFIG_DEFAULT_SECURITY_DAC=y -CONFIG_DEFAULT_SECURITY="" +CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,bpf" # # Kernel hardening options @@ -5721,9 +6814,25 @@ CONFIG_DEFAULT_SECURITY="" # # Memory initialization # +CONFIG_CC_HAS_AUTO_VAR_INIT_PATTERN=y +CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO_BARE=y +CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y CONFIG_INIT_STACK_NONE=y +# CONFIG_INIT_STACK_ALL_PATTERN is not set +# CONFIG_INIT_STACK_ALL_ZERO is not set +# CONFIG_GCC_PLUGIN_STACKLEAK is not set # CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set # CONFIG_INIT_ON_FREE_DEFAULT_ON is not set +CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y +# CONFIG_ZERO_CALL_USED_REGS is not set +# end of Memory initialization + +CONFIG_RANDSTRUCT_NONE=y +# CONFIG_RANDSTRUCT_FULL is not set +# CONFIG_RANDSTRUCT_PERFORMANCE is not set +# end of Kernel hardening options +# end of Security options + CONFIG_CRYPTO=y # @@ -5733,8 +6842,9 @@ 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_SIG2=y +CONFIG_CRYPTO_SKCIPHER=y +CONFIG_CRYPTO_SKCIPHER2=y CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_HASH2=y CONFIG_CRYPTO_RNG=y @@ -5745,107 +6855,117 @@ CONFIG_CRYPTO_AKCIPHER=y CONFIG_CRYPTO_KPP2=y CONFIG_CRYPTO_KPP=y CONFIG_CRYPTO_ACOMP2=y -CONFIG_CRYPTO_RSA=y -# CONFIG_CRYPTO_DH is not set -CONFIG_CRYPTO_ECDH=y CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER2=y # CONFIG_CRYPTO_USER is not set CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y -CONFIG_CRYPTO_GF128MUL=y CONFIG_CRYPTO_NULL=y CONFIG_CRYPTO_NULL2=y # CONFIG_CRYPTO_PCRYPT is not set -CONFIG_CRYPTO_WORKQUEUE=y CONFIG_CRYPTO_CRYPTD=y -# CONFIG_CRYPTO_MCRYPTD is not set CONFIG_CRYPTO_AUTHENC=m # CONFIG_CRYPTO_TEST is not set -CONFIG_CRYPTO_SIMD=y +CONFIG_CRYPTO_ENGINE=y +# end of Crypto core or helper + +# +# Public-key cryptography +# +CONFIG_CRYPTO_RSA=y +# CONFIG_CRYPTO_DH is not set +CONFIG_CRYPTO_ECC=y +CONFIG_CRYPTO_ECDH=y +# CONFIG_CRYPTO_ECDSA is not set +# CONFIG_CRYPTO_ECRDSA is not set +# CONFIG_CRYPTO_SM2 is not set # CONFIG_CRYPTO_CURVE25519 is not set +# end of Public-key cryptography # -# Authenticated Encryption with Associated Data +# Block ciphers # -CONFIG_CRYPTO_CCM=y -CONFIG_CRYPTO_GCM=y -# CONFIG_CRYPTO_CHACHA20POLY1305 is not set -# CONFIG_CRYPTO_AEGIS128 is not set -# CONFIG_CRYPTO_AEGIS128L is not set -# CONFIG_CRYPTO_AEGIS256 is not set -# CONFIG_CRYPTO_MORUS640 is not set -# CONFIG_CRYPTO_MORUS1280 is not set -CONFIG_CRYPTO_SEQIV=y -CONFIG_CRYPTO_ECHAINIV=m +CONFIG_CRYPTO_AES=y +# CONFIG_CRYPTO_AES_TI is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_ARIA is not set +# 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_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_SM4_GENERIC is not set +# CONFIG_CRYPTO_TEA is not set +CONFIG_CRYPTO_TWOFISH=y +CONFIG_CRYPTO_TWOFISH_COMMON=y +# end of Block ciphers # -# Block modes +# Length-preserving ciphers and modes # +# CONFIG_CRYPTO_ADIANTUM is not set +CONFIG_CRYPTO_ARC4=y +# CONFIG_CRYPTO_CHACHA20 is not set CONFIG_CRYPTO_CBC=y CONFIG_CRYPTO_CFB=y CONFIG_CRYPTO_CTR=y # CONFIG_CRYPTO_CTS is not set CONFIG_CRYPTO_ECB=y +# CONFIG_CRYPTO_HCTR2 is not set +# CONFIG_CRYPTO_KEYWRAP is not set # CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_OFB is not set # CONFIG_CRYPTO_PCBC is not set CONFIG_CRYPTO_XTS=y -# CONFIG_CRYPTO_KEYWRAP is not set -# CONFIG_CRYPTO_ADIANTUM is not set +# end of Length-preserving ciphers and modes # -# Hash modes +# AEAD (authenticated encryption with associated data) ciphers # -CONFIG_CRYPTO_CMAC=y -CONFIG_CRYPTO_HMAC=y -# CONFIG_CRYPTO_XCBC is not set -# CONFIG_CRYPTO_VMAC is not set +# CONFIG_CRYPTO_AEGIS128 is not set +# CONFIG_CRYPTO_CHACHA20POLY1305 is not set +CONFIG_CRYPTO_CCM=y +CONFIG_CRYPTO_GCM=y +CONFIG_CRYPTO_GENIV=y +CONFIG_CRYPTO_SEQIV=y +CONFIG_CRYPTO_ECHAINIV=m +# CONFIG_CRYPTO_ESSIV is not set +# end of AEAD (authenticated encryption with associated data) ciphers # -# Digest +# Hashes, digests, and MACs # -CONFIG_CRYPTO_CRC32C=y -# CONFIG_CRYPTO_CRC32 is not set -# CONFIG_CRYPTO_BLAKE2S is not set -CONFIG_CRYPTO_CRCT10DIF=y +# CONFIG_CRYPTO_BLAKE2B is not set +CONFIG_CRYPTO_CMAC=y CONFIG_CRYPTO_GHASH=y -# CONFIG_CRYPTO_POLY1305 is not set +CONFIG_CRYPTO_HMAC=y # 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_POLY1305 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=y -# CONFIG_CRYPTO_SHA3 is not set -CONFIG_CRYPTO_SM3=y -# CONFIG_CRYPTO_TGR192 is not set +CONFIG_CRYPTO_SHA3=y +# CONFIG_CRYPTO_SM3_GENERIC is not set +# CONFIG_CRYPTO_STREEBOG is not set +# CONFIG_CRYPTO_VMAC is not set # CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_XXHASH is not set +# end of Hashes, digests, and MACs # -# Ciphers +# CRCs (cyclic redundancy checks) # -CONFIG_CRYPTO_AES=y -# CONFIG_CRYPTO_AES_TI is not set -# CONFIG_CRYPTO_ANUBIS is not set -CONFIG_CRYPTO_ARC4=y -# CONFIG_CRYPTO_BLOWFISH is not set -# CONFIG_CRYPTO_CAMELLIA is not set -# CONFIG_CRYPTO_CAST5 is not set -# CONFIG_CRYPTO_CAST6 is not set -CONFIG_CRYPTO_DES=y -# CONFIG_CRYPTO_FCRYPT is not set -# CONFIG_CRYPTO_KHAZAD is not set -# CONFIG_CRYPTO_SALSA20 is not set -# CONFIG_CRYPTO_CHACHA20 is not set -# CONFIG_CRYPTO_SEED is not set -# CONFIG_CRYPTO_SERPENT is not set -# CONFIG_CRYPTO_SM4 is not set -# CONFIG_CRYPTO_TEA is not set -CONFIG_CRYPTO_TWOFISH=y -CONFIG_CRYPTO_TWOFISH_COMMON=y +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_CRC32 is not set +CONFIG_CRYPTO_CRCT10DIF=y +# end of CRCs (cyclic redundancy checks) # # Compression @@ -5855,10 +6975,11 @@ CONFIG_CRYPTO_LZO=y # CONFIG_CRYPTO_842 is not set # CONFIG_CRYPTO_LZ4 is not set # CONFIG_CRYPTO_LZ4HC is not set -# CONFIG_CRYPTO_ZSTD is not set +CONFIG_CRYPTO_ZSTD=y +# end of Compression # -# Random Number Generation +# Random number generation # CONFIG_CRYPTO_ANSI_CPRNG=y CONFIG_CRYPTO_DRBG_MENU=y @@ -5867,35 +6988,79 @@ CONFIG_CRYPTO_DRBG_HMAC=y # CONFIG_CRYPTO_DRBG_CTR is not set CONFIG_CRYPTO_DRBG=y CONFIG_CRYPTO_JITTERENTROPY=y +# CONFIG_CRYPTO_JITTERENTROPY_TESTINTERFACE is not set +# end of Random number generation + +# +# Userspace interface +# CONFIG_CRYPTO_USER_API=y CONFIG_CRYPTO_USER_API_HASH=y CONFIG_CRYPTO_USER_API_SKCIPHER=y # CONFIG_CRYPTO_USER_API_RNG is not set # CONFIG_CRYPTO_USER_API_AEAD is not set +CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y +# end of Userspace interface + CONFIG_CRYPTO_HASH_INFO=y +# CONFIG_CRYPTO_NHPOLY1305_NEON is not set +# CONFIG_CRYPTO_CHACHA20_NEON is not set # -# Crypto library routines +# Accelerated Cryptographic Algorithms for CPU (arm64) # -# CONFIG_CRYPTO_LIB_BLAKE2S is not set -# CONFIG_CRYPTO_LIB_CHACHA is not set -CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 -# CONFIG_CRYPTO_LIB_POLY1305 is not set -# CONFIG_CRYPTO_LIB_CURVE25519 is not set -# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set +CONFIG_CRYPTO_GHASH_ARM64_CE=y +# CONFIG_CRYPTO_POLY1305_NEON is not set +CONFIG_CRYPTO_SHA1_ARM64_CE=y +CONFIG_CRYPTO_SHA256_ARM64=y +CONFIG_CRYPTO_SHA2_ARM64_CE=y +# CONFIG_CRYPTO_SHA512_ARM64 is not set +# CONFIG_CRYPTO_SHA512_ARM64_CE is not set +# CONFIG_CRYPTO_SHA3_ARM64 is not set +# CONFIG_CRYPTO_SM3_NEON is not set +# CONFIG_CRYPTO_SM3_ARM64_CE is not set +# CONFIG_CRYPTO_POLYVAL_ARM64_CE is not set +CONFIG_CRYPTO_AES_ARM64=y +CONFIG_CRYPTO_AES_ARM64_CE=y +CONFIG_CRYPTO_AES_ARM64_CE_BLK=y +# CONFIG_CRYPTO_AES_ARM64_NEON_BLK is not set +# CONFIG_CRYPTO_AES_ARM64_BS is not set +# CONFIG_CRYPTO_SM4_ARM64_CE is not set +# CONFIG_CRYPTO_SM4_ARM64_CE_BLK is not set +# CONFIG_CRYPTO_SM4_ARM64_NEON_BLK is not set +CONFIG_CRYPTO_AES_ARM64_CE_CCM=y +# CONFIG_CRYPTO_SM4_ARM64_CE_CCM is not set +# CONFIG_CRYPTO_SM4_ARM64_CE_GCM is not set +# CONFIG_CRYPTO_CRCT10DIF_ARM64_CE is not set +# end of Accelerated Cryptographic Algorithms for CPU (arm64) + CONFIG_CRYPTO_HW=y +# CONFIG_CRYPTO_DEV_ATMEL_ECC is not set +# CONFIG_CRYPTO_DEV_ATMEL_SHA204A is not set # CONFIG_CRYPTO_DEV_CCP is not set # CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set +# CONFIG_CRYPTO_DEV_QAT_DH895xCC is not set +# CONFIG_CRYPTO_DEV_QAT_C3XXX is not set +# CONFIG_CRYPTO_DEV_QAT_C62X is not set +# CONFIG_CRYPTO_DEV_QAT_4XXX is not set +# CONFIG_CRYPTO_DEV_QAT_DH895xCCVF is not set +# CONFIG_CRYPTO_DEV_QAT_C3XXXVF is not set +# CONFIG_CRYPTO_DEV_QAT_C62XVF is not set # CONFIG_CRYPTO_DEV_CAVIUM_ZIP is not set CONFIG_CRYPTO_DEV_ROCKCHIP=y +# CONFIG_CRYPTO_DEV_ROCKCHIP_DEBUG is not set +# CONFIG_CRYPTO_DEV_SAFEXCEL is not set # CONFIG_CRYPTO_DEV_CCREE is not set # CONFIG_CRYPTO_DEV_HISI_SEC is not set +# CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set CONFIG_ASYMMETRIC_KEY_TYPE=y CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y CONFIG_X509_CERTIFICATE_PARSER=y +# CONFIG_PKCS8_PRIVATE_KEY_PARSER is not set CONFIG_PKCS7_MESSAGE_PARSER=y # CONFIG_PKCS7_TEST_KEY is not set # CONFIG_SIGNED_PE_FILE_VERIFICATION is not set +# CONFIG_FIPS_SIGNATURE_SELFTEST is not set # # Certificates for signature checking @@ -5905,24 +7070,52 @@ CONFIG_SYSTEM_TRUSTED_KEYS="" # CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set # CONFIG_SECONDARY_TRUSTED_KEYRING is not set # CONFIG_SYSTEM_BLACKLIST_KEYRING is not set +# end of Certificates for signature checking + CONFIG_BINARY_PRINTF=y # # Library routines # +CONFIG_LINEAR_RANGES=y +# CONFIG_PACKING is not set CONFIG_BITREVERSE=y CONFIG_HAVE_ARCH_BITREVERSE=y -CONFIG_RATIONAL=y CONFIG_GENERIC_STRNCPY_FROM_USER=y CONFIG_GENERIC_STRNLEN_USER=y CONFIG_GENERIC_NET_UTILS=y +# CONFIG_CORDIC is not set +# CONFIG_PRIME_NUMBERS is not set +CONFIG_RATIONAL=y CONFIG_GENERIC_PCI_IOMAP=y CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y CONFIG_ARCH_HAS_FAST_MULTIPLIER=y +CONFIG_ARCH_USE_SYM_ANNOTATIONS=y # CONFIG_INDIRECT_PIO is not set +# CONFIG_TRACE_MMIO_ACCESS is not set + +# +# Crypto library routines +# +CONFIG_CRYPTO_LIB_UTILS=y +CONFIG_CRYPTO_LIB_AES=y +CONFIG_CRYPTO_LIB_ARC4=y +CONFIG_CRYPTO_LIB_GF128MUL=y +CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y +# CONFIG_CRYPTO_LIB_CHACHA is not set +# CONFIG_CRYPTO_LIB_CURVE25519 is not set +CONFIG_CRYPTO_LIB_DES=y +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 +# CONFIG_CRYPTO_LIB_POLY1305 is not set +# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set +CONFIG_CRYPTO_LIB_SHA1=y +CONFIG_CRYPTO_LIB_SHA256=y +# end of Crypto library routines + CONFIG_CRC_CCITT=y CONFIG_CRC16=y CONFIG_CRC_T10DIF=y +# CONFIG_CRC64_ROCKSOFT is not set CONFIG_CRC_ITU_T=y CONFIG_CRC32=y # CONFIG_CRC32_SELFTEST is not set @@ -5935,6 +7128,7 @@ CONFIG_CRC32_SLICEBY8=y CONFIG_CRC7=y CONFIG_LIBCRC32C=y # CONFIG_CRC8 is not set +CONFIG_XXHASH=y CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y # CONFIG_RANDOM32_SELFTEST is not set CONFIG_ZLIB_INFLATE=y @@ -5942,6 +7136,9 @@ CONFIG_ZLIB_DEFLATE=y CONFIG_LZO_COMPRESS=y CONFIG_LZO_DECOMPRESS=y CONFIG_LZ4_DECOMPRESS=y +CONFIG_ZSTD_COMMON=y +CONFIG_ZSTD_COMPRESS=y +CONFIG_ZSTD_DECOMPRESS=y CONFIG_XZ_DEC=y # CONFIG_XZ_DEC_X86 is not set # CONFIG_XZ_DEC_POWERPC is not set @@ -5949,6 +7146,7 @@ CONFIG_XZ_DEC=y CONFIG_XZ_DEC_ARM=y CONFIG_XZ_DEC_ARMTHUMB=y # CONFIG_XZ_DEC_SPARC is not set +# CONFIG_XZ_DEC_MICROLZMA is not set CONFIG_XZ_DEC_BCJ=y # CONFIG_XZ_DEC_TEST is not set CONFIG_DECOMPRESS_GZIP=y @@ -5957,6 +7155,7 @@ CONFIG_DECOMPRESS_LZMA=y CONFIG_DECOMPRESS_XZ=y CONFIG_DECOMPRESS_LZO=y CONFIG_DECOMPRESS_LZ4=y +CONFIG_DECOMPRESS_ZSTD=y CONFIG_GENERIC_ALLOCATOR=y CONFIG_REED_SOLOMON=y CONFIG_REED_SOLOMON_ENC8=y @@ -5965,39 +7164,70 @@ CONFIG_TEXTSEARCH=y CONFIG_TEXTSEARCH_KMP=m CONFIG_TEXTSEARCH_BM=m CONFIG_TEXTSEARCH_FSM=m +CONFIG_XARRAY_MULTI=y CONFIG_ASSOCIATIVE_ARRAY=y CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y CONFIG_HAS_IOPORT_MAP=y CONFIG_HAS_DMA=y +CONFIG_DMA_OPS=y +CONFIG_NEED_SG_DMA_FLAGS=y CONFIG_NEED_SG_DMA_LENGTH=y CONFIG_NEED_DMA_MAP_STATE=y CONFIG_ARCH_DMA_ADDR_T_64BIT=y -CONFIG_HAVE_GENERIC_DMA_COHERENT=y -CONFIG_DMA_DIRECT_OPS=y +CONFIG_DMA_DECLARE_COHERENT=y +CONFIG_ARCH_HAS_SETUP_DMA_OPS=y +CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS=y +CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y +CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU=y +CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y CONFIG_SWIOTLB=y +CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC=y +# CONFIG_DMA_RESTRICTED_POOL is not set +CONFIG_DMA_NONCOHERENT_MMAP=y +CONFIG_DMA_COHERENT_POOL=y +CONFIG_DMA_DIRECT_REMAP=y +CONFIG_DMA_CMA=y +# CONFIG_DMA_PERNUMA_CMA is not set + +# +# Default contiguous memory area size: +# +CONFIG_CMA_SIZE_MBYTES=16 +CONFIG_CMA_SIZE_SEL_MBYTES=y +# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set +# CONFIG_CMA_SIZE_SEL_MIN is not set +# CONFIG_CMA_SIZE_SEL_MAX is not set +CONFIG_CMA_ALIGNMENT=8 +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_DMA_MAP_BENCHMARK is not set CONFIG_SGL_ALLOC=y +# CONFIG_FORCE_NR_CPUS is not set CONFIG_CPU_RMAP=y CONFIG_DQL=y CONFIG_GLOB=y # CONFIG_GLOB_SELFTEST is not set CONFIG_NLATTR=y CONFIG_CLZ_TAB=y -# CONFIG_CORDIC is not set -# CONFIG_DDR is not set # CONFIG_IRQ_POLL is not set CONFIG_MPILIB=y CONFIG_LIBFDT=y CONFIG_OID_REGISTRY=y CONFIG_HAVE_GENERIC_VDSO=y CONFIG_GENERIC_GETTIMEOFDAY=y +CONFIG_GENERIC_VDSO_TIME_NS=y CONFIG_FONT_SUPPORT=y # CONFIG_FONTS is not set CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y CONFIG_SG_POOL=y -CONFIG_ARCH_HAS_SG_CHAIN=y +CONFIG_ARCH_STACKWALK=y +CONFIG_STACKDEPOT=y CONFIG_SBITMAP=y -# CONFIG_STRING_SELFTEST is not set +# end of Library routines + +CONFIG_GENERIC_IOREMAP=y +CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y # # Kernel hacking @@ -6007,82 +7237,137 @@ CONFIG_SBITMAP=y # printk and dmesg options # CONFIG_PRINTK_TIME=y -# CONFIG_PRINTK_TIME_FROM_ARM_ARCH_TIMER is not set -# CONFIG_PRINTK_PROCESS is not set +# CONFIG_PRINTK_CALLER is not set +# CONFIG_STACKTRACE_BUILD_ID is not set CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 CONFIG_CONSOLE_LOGLEVEL_QUIET=4 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 # CONFIG_BOOT_PRINTK_DELAY is not set CONFIG_DYNAMIC_DEBUG=y +CONFIG_DYNAMIC_DEBUG_CORE=y +CONFIG_SYMBOLIC_ERRNAME=y +CONFIG_DEBUG_BUGVERBOSE=y +# end of printk and dmesg options + +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_MISC=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_AS_HAS_NON_CONST_LEB128=y +CONFIG_DEBUG_INFO_NONE=y +# CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set # CONFIG_DEBUG_INFO_DWARF4 is not set -# CONFIG_GDB_SCRIPTS is not set -CONFIG_ENABLE_MUST_CHECK=y +# CONFIG_DEBUG_INFO_DWARF5 is not set CONFIG_FRAME_WARN=2048 # CONFIG_STRIP_ASM_SYMS is not set # CONFIG_READABLE_ASM is not set -# CONFIG_UNUSED_SYMBOLS is not set -# CONFIG_PAGE_OWNER is not set -CONFIG_DEBUG_FS=y -# CONFIG_HEADERS_CHECK is not set +# CONFIG_HEADERS_INSTALL is not set # CONFIG_DEBUG_SECTION_MISMATCH is not set CONFIG_SECTION_MISMATCH_WARN_ONLY=y +# CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B is not set CONFIG_ARCH_WANT_FRAME_POINTERS=y CONFIG_FRAME_POINTER=y +# CONFIG_VMLINUX_MAP is not set # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# end of Compile-time checks and compiler options + +# +# Generic Kernel Debugging Instruments +# CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0 CONFIG_MAGIC_SYSRQ_SERIAL=y -CONFIG_DEBUG_KERNEL=y +CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE="" +CONFIG_DEBUG_FS=y +CONFIG_DEBUG_FS_ALLOW_ALL=y +# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set +# CONFIG_DEBUG_FS_ALLOW_NONE is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y +# CONFIG_UBSAN is not set +CONFIG_HAVE_ARCH_KCSAN=y +CONFIG_HAVE_KCSAN_COMPILER=y +# CONFIG_KCSAN is not set +# end of Generic Kernel Debugging Instruments + +# +# Networking Debugging +# +# CONFIG_NET_DEV_REFCNT_TRACKER is not set +# CONFIG_NET_NS_REFCNT_TRACKER is not set +# CONFIG_DEBUG_NET is not set +# end of Networking Debugging # # Memory Debugging # # CONFIG_PAGE_EXTENSION is not set # CONFIG_DEBUG_PAGEALLOC is not set +CONFIG_SLUB_DEBUG=y +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_PAGE_OWNER is not set +# CONFIG_PAGE_TABLE_CHECK is not set # CONFIG_PAGE_POISONING is not set # CONFIG_DEBUG_PAGE_REF is not set # CONFIG_DEBUG_RODATA_TEST is not set -# CONFIG_DEBUG_OBJECTS is not set -# CONFIG_SLUB_DEBUG_ON is not set -# CONFIG_SLUB_STATS is not set +CONFIG_ARCH_HAS_DEBUG_WX=y +# CONFIG_DEBUG_WX is not set +CONFIG_GENERIC_PTDUMP=y +# CONFIG_PTDUMP_DEBUGFS is not set CONFIG_HAVE_DEBUG_KMEMLEAK=y # CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_PER_VMA_LOCK_STATS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SHRINKER_DEBUG is not set # CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_SCHED_STACK_END_CHECK is not set +CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y # CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VM_PGTABLE is not set CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y # CONFIG_DEBUG_VIRTUAL is not set # CONFIG_DEBUG_MEMORY_INIT is not set # CONFIG_DEBUG_PER_CPU_MAPS is not set CONFIG_HAVE_ARCH_KASAN=y CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y +CONFIG_HAVE_ARCH_KASAN_HW_TAGS=y +CONFIG_HAVE_ARCH_KASAN_VMALLOC=y CONFIG_CC_HAS_KASAN_GENERIC=y +CONFIG_CC_HAS_KASAN_SW_TAGS=y +CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y # CONFIG_KASAN is not set -CONFIG_KASAN_STACK=1 -CONFIG_ARCH_HAS_KCOV=y -CONFIG_CC_HAS_SANCOV_TRACE_PC=y -# CONFIG_KCOV is not set +CONFIG_HAVE_ARCH_KFENCE=y +# CONFIG_KFENCE is not set +# end of Memory Debugging + # CONFIG_DEBUG_SHIRQ is not set # -# Debug Lockups and Hangs +# Debug Oops, Lockups and Hangs # -# CONFIG_SOFTLOCKUP_DETECTOR is not set -# CONFIG_DETECT_HUNG_TASK is not set -# CONFIG_WQ_WATCHDOG is not set # CONFIG_PANIC_ON_OOPS is not set CONFIG_PANIC_ON_OOPS_VALUE=0 CONFIG_PANIC_TIMEOUT=0 +# CONFIG_SOFTLOCKUP_DETECTOR is not set +CONFIG_HAVE_HARDLOCKUP_DETECTOR_BUDDY=y +# CONFIG_HARDLOCKUP_DETECTOR is not set +# CONFIG_DETECT_HUNG_TASK is not set +# CONFIG_WQ_WATCHDOG is not set +# CONFIG_WQ_CPU_INTENSIVE_REPORT is not set +# CONFIG_TEST_LOCKUP is not set +# end of Debug Oops, Lockups and Hangs + +# +# Scheduler Debugging +# CONFIG_SCHED_DEBUG=y CONFIG_SCHED_INFO=y CONFIG_SCHEDSTATS=y -# CONFIG_SCHED_STACK_END_CHECK is not set +# end of Scheduler Debugging + # CONFIG_DEBUG_TIMEKEEPING is not set # @@ -6101,35 +7386,52 @@ CONFIG_DEBUG_SPINLOCK=y # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set # CONFIG_LOCK_TORTURE_TEST is not set # CONFIG_WW_MUTEX_SELFTEST is not set +# CONFIG_SCF_TORTURE_TEST is not set +# CONFIG_CSD_LOCK_WAIT_DEBUG is not set +# end of Lock Debugging (spinlocks, mutexes, etc...) + +# CONFIG_DEBUG_IRQFLAGS is not set CONFIG_STACKTRACE=y # CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set # CONFIG_DEBUG_KOBJECT is not set -CONFIG_HAVE_DEBUG_BUGVERBOSE=y -CONFIG_DEBUG_BUGVERBOSE=y + +# +# Debug kernel data structures +# # CONFIG_DEBUG_LIST is not set -# CONFIG_DEBUG_PI_LIST is not set +# CONFIG_DEBUG_PLIST is not set # CONFIG_DEBUG_SG is not set # CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# CONFIG_DEBUG_MAPLE_TREE is not set +# end of Debug kernel data structures + CONFIG_DEBUG_CREDENTIALS=y # # RCU Debugging # -# CONFIG_RCU_PERF_TEST is not set +# CONFIG_RCU_SCALE_TEST is not set # CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_REF_SCALE_TEST is not set CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=0 +# CONFIG_RCU_CPU_STALL_CPUTIME is not set CONFIG_RCU_TRACE=y # CONFIG_RCU_EQS_DEBUG is not set +# end of RCU Debugging + # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set # CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set -# CONFIG_NOTIFIER_ERROR_INJECTION is not set -# CONFIG_FAULT_INJECTION is not set # CONFIG_LATENCYTOP is not set CONFIG_NOP_TRACER=y CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_CALL_OPS=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS=y CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y CONFIG_HAVE_SYSCALL_TRACEPOINTS=y CONFIG_HAVE_C_RECORDMCOUNT=y @@ -6141,76 +7443,111 @@ CONFIG_TRACING=y CONFIG_GENERIC_TRACER=y CONFIG_TRACING_SUPPORT=y CONFIG_FTRACE=y +# CONFIG_BOOTTIME_TRACING is not set CONFIG_FUNCTION_TRACER=y CONFIG_FUNCTION_GRAPH_TRACER=y -# CONFIG_PREEMPTIRQ_EVENTS is not set +# CONFIG_FUNCTION_GRAPH_RETVAL is not set +CONFIG_DYNAMIC_FTRACE=y +CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y +CONFIG_DYNAMIC_FTRACE_WITH_CALL_OPS=y +CONFIG_DYNAMIC_FTRACE_WITH_ARGS=y +# CONFIG_FUNCTION_PROFILER is not set +# CONFIG_STACK_TRACER is not set # CONFIG_IRQSOFF_TRACER is not set # CONFIG_SCHED_TRACER is not set # CONFIG_HWLAT_TRACER is not set +# CONFIG_OSNOISE_TRACER is not set +# CONFIG_TIMERLAT_TRACER is not set # CONFIG_FTRACE_SYSCALLS is not set # CONFIG_TRACER_SNAPSHOT is not set CONFIG_BRANCH_PROFILE_NONE=y # CONFIG_PROFILE_ANNOTATED_BRANCHES is not set # CONFIG_PROFILE_ALL_BRANCHES is not set -# CONFIG_STACK_TRACER is not set CONFIG_BLK_DEV_IO_TRACE=y -CONFIG_DYNAMIC_FTRACE=y -# CONFIG_FUNCTION_PROFILER is not set CONFIG_FTRACE_MCOUNT_RECORD=y -# CONFIG_FTRACE_STARTUP_TEST is not set +CONFIG_FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY=y +# CONFIG_SYNTH_EVENTS is not set +# CONFIG_USER_EVENTS is not set # CONFIG_HIST_TRIGGERS is not set +# CONFIG_TRACE_EVENT_INJECT is not set # CONFIG_TRACEPOINT_BENCHMARK is not set # CONFIG_RING_BUFFER_BENCHMARK is not set +# CONFIG_TRACE_EVAL_MAP_FILE is not set +# CONFIG_FTRACE_RECORD_RECURSION is not set +# CONFIG_FTRACE_STARTUP_TEST is not set # CONFIG_RING_BUFFER_STARTUP_TEST is not set +# CONFIG_RING_BUFFER_VALIDATE_TIME_DELTAS is not set # CONFIG_PREEMPTIRQ_DELAY_TEST is not set -# CONFIG_TRACE_EVAL_MAP_FILE is not set -CONFIG_TRACING_EVENTS_GPIO=y -# CONFIG_DMA_API_DEBUG is not set +# CONFIG_RV is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_SAMPLE_FTRACE_DIRECT=y +CONFIG_HAVE_SAMPLE_FTRACE_DIRECT_MULTI=y +CONFIG_STRICT_DEVMEM=y +# CONFIG_IO_STRICT_DEVMEM is not set + +# +# arm64 Debugging +# +# CONFIG_PID_IN_CONTEXTIDR is not set +# CONFIG_ARM64_RELOC_TEST is not set +# CONFIG_CORESIGHT is not set +# end of arm64 Debugging + +# +# Kernel Testing and Coverage +# +# CONFIG_KUNIT is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +# CONFIG_FAULT_INJECTION is not set +CONFIG_ARCH_HAS_KCOV=y +CONFIG_CC_HAS_SANCOV_TRACE_PC=y +# CONFIG_KCOV is not set CONFIG_RUNTIME_TESTING_MENU=y +# CONFIG_TEST_DHRY is not set CONFIG_LKDTM=y -# CONFIG_TEST_LIST_SORT is not set -# CONFIG_TEST_SORT is not set +# CONFIG_TEST_MIN_HEAP is not set +# CONFIG_TEST_DIV64 is not set # CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_TEST_REF_TRACKER is not set # CONFIG_RBTREE_TEST is not set +# CONFIG_REED_SOLOMON_TEST is not set # CONFIG_INTERVAL_TREE_TEST is not set # CONFIG_PERCPU_TEST is not set # CONFIG_ATOMIC64_SELFTEST is not set # CONFIG_TEST_HEXDUMP is not set +# CONFIG_STRING_SELFTEST is not set # CONFIG_TEST_STRING_HELPERS is not set # CONFIG_TEST_KSTRTOX is not set # CONFIG_TEST_PRINTF is not set +# CONFIG_TEST_SCANF is not set # CONFIG_TEST_BITMAP is not set -# CONFIG_TEST_BITFIELD is not set # CONFIG_TEST_UUID is not set -# CONFIG_TEST_OVERFLOW is not set +# CONFIG_TEST_XARRAY is not set +# CONFIG_TEST_MAPLE_TREE is not set # CONFIG_TEST_RHASHTABLE is not set -# CONFIG_TEST_HASH is not set # CONFIG_TEST_IDA is not set # CONFIG_TEST_LKM is not set +# CONFIG_TEST_BITOPS is not set +# CONFIG_TEST_VMALLOC is not set # CONFIG_TEST_USER_COPY is not set # CONFIG_TEST_BPF is not set +# CONFIG_TEST_BLACKHOLE_DEV is not set # CONFIG_FIND_BIT_BENCHMARK is not set # CONFIG_TEST_FIRMWARE is not set # CONFIG_TEST_SYSCTL is not set # CONFIG_TEST_UDELAY is not set # CONFIG_TEST_STATIC_KEYS is not set +# CONFIG_TEST_DYNAMIC_DEBUG is not set # CONFIG_TEST_KMOD is not set +# CONFIG_TEST_MEMCAT_P is not set # CONFIG_TEST_MEMINIT is not set -# CONFIG_TEST_STACKINIT is not set +# CONFIG_TEST_FREE_PAGES is not set +CONFIG_ARCH_USE_MEMTEST=y # CONFIG_MEMTEST is not set -# CONFIG_BUG_ON_DATA_CORRUPTION is not set -# CONFIG_SAMPLES is not set -CONFIG_HAVE_ARCH_KGDB=y -# CONFIG_KGDB is not set -CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y -# CONFIG_UBSAN is not set -CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y -CONFIG_STRICT_DEVMEM=y -# CONFIG_IO_STRICT_DEVMEM is not set -# CONFIG_ARM64_PTDUMP_DEBUGFS is not set -# CONFIG_PID_IN_CONTEXTIDR is not set -# CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set -# CONFIG_DEBUG_WX is not set -# CONFIG_DEBUG_ALIGN_RODATA is not set -# CONFIG_ARM64_RELOC_TEST is not set -# CONFIG_CORESIGHT is not set +# end of Kernel Testing and Coverage + +# +# Rust hacking +# +# end of Rust hacking +# end of Kernel hacking diff --git a/projects/Rockchip/devices/RK3566-ML/options b/projects/Rockchip/devices/RK3566-ML/options index 5cdbc28f12..466814e651 100644 --- a/projects/Rockchip/devices/RK3566-ML/options +++ b/projects/Rockchip/devices/RK3566-ML/options @@ -70,7 +70,7 @@ WINDOWMANAGER="weston" # kernel serial console - EXTRA_CMDLINE="quiet rootwait console=ttyUSB0,1500000 console=tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20" + EXTRA_CMDLINE="quiet rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20 initcall_blacklist=uvc_init log_buf_len=1M nopkmute debugging" # additional packages to install # ADDITIONAL_PACKAGES="" @@ -117,6 +117,7 @@ # build and install OpenVPN support (yes / no) OPENVPN_SUPPORT="no" + WIREGUARD_SUPPORT="no" # build and install ZeroTier support (yes / no) ZEROTIER_SUPPORT="yes" diff --git a/projects/Rockchip/packages/u-boot/package.mk b/projects/Rockchip/packages/u-boot/package.mk index 7610b7320b..8b896a662b 100644 --- a/projects/Rockchip/packages/u-boot/package.mk +++ b/projects/Rockchip/packages/u-boot/package.mk @@ -77,11 +77,14 @@ make_target() { case ${PARTITION_TABLE} in gpt) echo "Building for GPT (${UBOOT_DTB})..." + echo "toolchain (${TOOLCHAIN})" export BL31="${PKG_BL31}" export ROCKCHIP_TPL="${PKG_DATAFILE}" DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make mrproper - DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make ${UBOOT_CONFIG} ${PKG_LOADER} u-boot.dtb u-boot.img tools - DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 _python_sysroot="${TOOLCHAIN}" _python_prefix=/ _python_exec_prefix=/ make HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTSTRIP="true" CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" + echo "begin make" + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="--lssl -lcrypto" ARCH=arm64 make ${UBOOT_CONFIG} ${PKG_LOADER} u-boot.dtb u-boot.img tools HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTCFLAGS="-I${TOOLCHAIN}/include" + echo "end make" + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 _python_sysroot="${TOOLCHAIN}" _python_prefix=/ _python_exec_prefix=/ make HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTCFLAGS="-I${TOOLCHAIN}/include" HOSTSTRIP="true" CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" ;; msdos) echo "Building for MBR (${UBOOT_DTB})..." From d69063c5d42ecbc9def9fa7b33e919ac5fab1352 Mon Sep 17 00:00:00 2001 From: xerootg Date: Sun, 1 Oct 2023 17:07:24 +0000 Subject: [PATCH 013/167] 6.6-rc3 --- .../RK3566-ML/linux/linux.aarch64.conf | 148 ++++++++++++------ projects/Rockchip/packages/linux/package.mk | 2 +- 2 files changed, 97 insertions(+), 53 deletions(-) diff --git a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf index 1b5ff1a5d1..e6d4b4dec7 100644 --- a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf @@ -1,8 +1,8 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm64 6.5.0-rc7 Kernel Configuration +# Linux/arm64 6.6.0-rc3 Kernel Configuration # -CONFIG_CC_VERSION_TEXT="aarch64-libreelec-linux-gnueabi-gcc-12.3.0 (GCC) 12.3.0" +CONFIG_CC_VERSION_TEXT="aarch64-none-elf-gcc-12.3.0 (GCC) 12.3.0" CONFIG_CC_IS_GCC=y CONFIG_GCC_VERSION=120300 CONFIG_CLANG_VERSION=0 @@ -11,8 +11,6 @@ CONFIG_AS_VERSION=24100 CONFIG_LD_IS_BFD=y CONFIG_LD_VERSION=24100 CONFIG_LLD_VERSION=0 -CONFIG_CC_CAN_LINK=y -CONFIG_CC_CAN_LINK_STATIC=y CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y CONFIG_CC_HAS_ASM_INLINE=y @@ -142,6 +140,7 @@ CONFIG_GENERIC_SCHED_CLOCK=y # end of Scheduler features CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y CONFIG_CC_HAS_INT128=y CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" CONFIG_GCC11_NO_ARRAY_BOUNDS=y @@ -248,6 +247,14 @@ CONFIG_HAVE_PERF_EVENTS=y CONFIG_SYSTEM_DATA_VERIFICATION=y CONFIG_PROFILING=y CONFIG_TRACEPOINTS=y + +# +# Kexec and crash features +# +# CONFIG_KEXEC is not set +# CONFIG_KEXEC_FILE is not set +# CONFIG_CRASH_DUMP is not set +# end of Kexec and crash features # end of General setup CONFIG_ARM64=y @@ -269,7 +276,6 @@ CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CSUM=y CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y CONFIG_SMP=y CONFIG_KERNEL_MODE_NEON=y CONFIG_FIX_EARLYCON_MEM=y @@ -399,9 +405,12 @@ CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_CC_HAVE_SHADOW_CALL_STACK=y # CONFIG_PARAVIRT is not set # CONFIG_PARAVIRT_TIME_ACCOUNTING is not set -# CONFIG_KEXEC is not set -# CONFIG_KEXEC_FILE is not set -# CONFIG_CRASH_DUMP is not set +CONFIG_ARCH_SUPPORTS_KEXEC=y +CONFIG_ARCH_SUPPORTS_KEXEC_FILE=y +CONFIG_ARCH_SUPPORTS_KEXEC_SIG=y +CONFIG_ARCH_SUPPORTS_KEXEC_IMAGE_VERIFY_SIG=y +CONFIG_ARCH_DEFAULT_KEXEC_IMAGE_VERIFY_SIG=y +CONFIG_ARCH_SUPPORTS_CRASH_DUMP=y # CONFIG_XEN is not set CONFIG_ARCH_FORCE_MAX_ORDER=10 CONFIG_UNMAP_KERNEL_AT_EL0=y @@ -422,7 +431,6 @@ CONFIG_SETEND_EMULATION=y # CONFIG_ARM64_HW_AFDBM=y CONFIG_ARM64_PAN=y -CONFIG_AS_HAS_LDAPR=y CONFIG_AS_HAS_LSE_ATOMICS=y CONFIG_ARM64_LSE_ATOMICS=y CONFIG_ARM64_USE_LSE_ATOMICS=y @@ -447,6 +455,7 @@ CONFIG_CC_HAS_BRANCH_PROT_PAC_RET=y CONFIG_CC_HAS_SIGN_RETURN_ADDRESS=y CONFIG_AS_HAS_ARMV8_3=y CONFIG_AS_HAS_CFI_NEGATE_RA_STATE=y +CONFIG_AS_HAS_LDAPR=y # end of ARMv8.3 architectural features # @@ -835,6 +844,7 @@ CONFIG_SLAB_MERGE_DEFAULT=y # CONFIG_SLAB_FREELIST_HARDENED is not set # CONFIG_SLUB_STATS is not set CONFIG_SLUB_CPU_PARTIAL=y +# CONFIG_RANDOM_KMALLOC_CACHES is not set # end of SLAB allocator options # CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set @@ -850,6 +860,7 @@ CONFIG_EXCLUSIVE_SYSTEM_RAM=y CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y # CONFIG_MEMORY_HOTPLUG is not set +CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y # CONFIG_COMPACTION is not set @@ -884,6 +895,7 @@ CONFIG_VM_EVENT_COUNTERS=y # CONFIG_GUP_TEST is not set # CONFIG_DMAPOOL_TEST is not set CONFIG_ARCH_HAS_PTE_SPECIAL=y +CONFIG_MEMFD_CREATE=y CONFIG_SECRETMEM=y # CONFIG_ANON_VMA_NAME is not set # CONFIG_USERFAULTFD is not set @@ -1520,6 +1532,7 @@ CONFIG_PCI_QUIRKS=y # CONFIG_PCI_IOV is not set # CONFIG_PCI_PRI is not set # CONFIG_PCI_PASID is not set +# CONFIG_PCI_DYNAMIC_OF_NODES is not set # CONFIG_PCIE_BUS_TUNE_OFF is not set CONFIG_PCIE_BUS_DEFAULT=y # CONFIG_PCIE_BUS_SAFE is not set @@ -1537,7 +1550,8 @@ CONFIG_PCIE_BUS_DEFAULT=y # CONFIG_PCI_FTPCI100 is not set # CONFIG_PCI_HOST_GENERIC is not set # CONFIG_PCIE_MICROCHIP_HOST is not set -# CONFIG_PCIE_ROCKCHIP_HOST is not set +CONFIG_PCIE_ROCKCHIP=y +CONFIG_PCIE_ROCKCHIP_HOST=y # CONFIG_PCI_XGENE is not set # CONFIG_PCIE_XILINX is not set @@ -1551,12 +1565,14 @@ CONFIG_PCIE_BUS_DEFAULT=y # # DesignWare-based PCIe controllers # +CONFIG_PCIE_DW=y +CONFIG_PCIE_DW_HOST=y # CONFIG_PCIE_AL is not set # CONFIG_PCI_MESON is not set # CONFIG_PCI_HISI is not set # CONFIG_PCIE_KIRIN is not set # CONFIG_PCIE_DW_PLAT_HOST is not set -# CONFIG_PCIE_ROCKCHIP_DW_HOST is not set +CONFIG_PCIE_ROCKCHIP_DW_HOST=y # end of DesignWare-based PCIe controllers # @@ -1635,6 +1651,11 @@ CONFIG_GENERIC_ARCH_TOPOLOGY=y # CONFIG_MHI_BUS_EP is not set # end of Bus devices +# +# Cache Drivers +# +# end of Cache Drivers + CONFIG_CONNECTOR=y CONFIG_PROC_EVENTS=y @@ -1998,6 +2019,7 @@ CONFIG_SATA_AHCI_PLATFORM=y # CONFIG_ATA_SFF is not set CONFIG_MD=y # CONFIG_BLK_DEV_MD is not set +CONFIG_MD_BITMAP_FILE=y # CONFIG_BCACHE is not set # CONFIG_BLK_DEV_DM is not set # CONFIG_TARGET_CORE is not set @@ -2176,6 +2198,7 @@ CONFIG_AX88796B_PHY=y # CONFIG_LSI_ET1011C_PHY is not set # CONFIG_MARVELL_PHY is not set # CONFIG_MARVELL_10G_PHY is not set +# CONFIG_MARVELL_88Q2XXX_PHY is not set # CONFIG_MARVELL_88X2222_PHY is not set # CONFIG_MAXLINEAR_GPHY is not set # CONFIG_MEDIATEK_GE_PHY is not set @@ -2626,6 +2649,7 @@ CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y # CONFIG_TOUCHSCREEN_COLIBRI_VF50 is not set # CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set # CONFIG_TOUCHSCREEN_IQS5XX is not set +# CONFIG_TOUCHSCREEN_IQS7211 is not set # CONFIG_TOUCHSCREEN_ZINITIX is not set # CONFIG_TOUCHSCREEN_HIMAX_HX83112B is not set CONFIG_INPUT_MISC=y @@ -2678,8 +2702,6 @@ CONFIG_SERIO_SERPORT=m # CONFIG_SERIO_GPIO_PS2 is not set # CONFIG_USERIO is not set CONFIG_GAMEPORT=m -# CONFIG_GAMEPORT_NS558 is not set -# CONFIG_GAMEPORT_L4 is not set # CONFIG_GAMEPORT_EMU10K1 is not set # CONFIG_GAMEPORT_FM801 is not set # end of Hardware I/O ports @@ -2900,7 +2922,7 @@ CONFIG_SPI_BITBANG=y # CONFIG_SPI_PL022 is not set # CONFIG_SPI_PXA2XX is not set CONFIG_SPI_ROCKCHIP=y -# CONFIG_SPI_ROCKCHIP_SFC is not set +CONFIG_SPI_ROCKCHIP_SFC=y # CONFIG_SPI_SC18IS602 is not set # CONFIG_SPI_SIFIVE is not set # CONFIG_SPI_MXIC is not set @@ -2950,6 +2972,7 @@ CONFIG_PTP_1588_CLOCK_OPTIONAL=y CONFIG_PTP_1588_CLOCK_KVM=y # CONFIG_PTP_1588_CLOCK_IDT82P33 is not set # CONFIG_PTP_1588_CLOCK_IDTCM is not set +# CONFIG_PTP_1588_CLOCK_MOCK is not set # CONFIG_PTP_1588_CLOCK_OCP is not set # end of PTP clock support @@ -3011,6 +3034,7 @@ CONFIG_GPIO_ROCKCHIP=y # # CONFIG_GPIO_ADNP is not set # CONFIG_GPIO_FXL6408 is not set +# CONFIG_GPIO_DS4520 is not set # CONFIG_GPIO_GW_PLD is not set # CONFIG_GPIO_MAX7300 is not set # CONFIG_GPIO_MAX732X is not set @@ -3165,6 +3189,7 @@ CONFIG_HWMON=y # CONFIG_SENSORS_G762 is not set # CONFIG_SENSORS_GPIO_FAN is not set # CONFIG_SENSORS_HIH6130 is not set +# CONFIG_SENSORS_HS3001 is not set # CONFIG_SENSORS_IIO_HWMON is not set # CONFIG_SENSORS_IT87 is not set # CONFIG_SENSORS_JC42 is not set @@ -3254,7 +3279,6 @@ CONFIG_HWMON=y # CONFIG_SENSORS_SCH5627 is not set # CONFIG_SENSORS_SCH5636 is not set # CONFIG_SENSORS_STTS751 is not set -# CONFIG_SENSORS_SMM665 is not set # CONFIG_SENSORS_ADC128D818 is not set # CONFIG_SENSORS_ADS7828 is not set # CONFIG_SENSORS_ADS7871 is not set @@ -3370,6 +3394,7 @@ CONFIG_MFD_CORE=y # CONFIG_MFD_BCM590XX is not set # CONFIG_MFD_BD9571MWV is not set # CONFIG_MFD_AXP20X_I2C is not set +# CONFIG_MFD_CS42L43_I2C is not set # CONFIG_MFD_MADERA is not set # CONFIG_MFD_MAX5970 is not set # CONFIG_PMIC_DA903X is not set @@ -3491,6 +3516,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y CONFIG_REGULATOR_ACT8865=y # CONFIG_REGULATOR_AD5398 is not set # CONFIG_REGULATOR_ARM_SCMI is not set +# CONFIG_REGULATOR_AW37503 is not set # CONFIG_REGULATOR_DA9121 is not set # CONFIG_REGULATOR_DA9210 is not set # CONFIG_REGULATOR_DA9211 is not set @@ -3506,6 +3532,7 @@ CONFIG_REGULATOR_GPIO=y # CONFIG_REGULATOR_LTC3589 is not set # CONFIG_REGULATOR_LTC3676 is not set # CONFIG_REGULATOR_MAX1586 is not set +# CONFIG_REGULATOR_MAX77857 is not set # CONFIG_REGULATOR_MAX8649 is not set # CONFIG_REGULATOR_MAX8660 is not set # CONFIG_REGULATOR_MAX8893 is not set @@ -3541,6 +3568,7 @@ CONFIG_REGULATOR_RK808=y # CONFIG_REGULATOR_RTQ2134 is not set # CONFIG_REGULATOR_RTMV20 is not set # CONFIG_REGULATOR_RTQ6752 is not set +# CONFIG_REGULATOR_RTQ2208 is not set # CONFIG_REGULATOR_SLG51000 is not set # CONFIG_REGULATOR_SY8106A is not set # CONFIG_REGULATOR_SY8824X is not set @@ -3817,10 +3845,7 @@ CONFIG_VIDEOBUF2_DMA_SG=y # Media ancillary drivers # CONFIG_MEDIA_ATTACH=y - -# -# Camera sensor devices -# +CONFIG_VIDEO_CAMERA_SENSOR=y # CONFIG_VIDEO_AR0521 is not set # CONFIG_VIDEO_HI556 is not set # CONFIG_VIDEO_HI846 is not set @@ -3886,7 +3911,6 @@ CONFIG_VIDEO_OV7251=y # CONFIG_VIDEO_ST_VGXY61 is not set # CONFIG_VIDEO_CCS is not set # CONFIG_VIDEO_ET8EK8 is not set -# end of Camera sensor devices # # Lens drivers @@ -3894,6 +3918,7 @@ CONFIG_VIDEO_OV7251=y # CONFIG_VIDEO_AD5820 is not set # CONFIG_VIDEO_AK7375 is not set # CONFIG_VIDEO_DW9714 is not set +# CONFIG_VIDEO_DW9719 is not set # CONFIG_VIDEO_DW9768 is not set # CONFIG_VIDEO_DW9807_VCM is not set # end of Lens drivers @@ -4010,6 +4035,14 @@ CONFIG_VIDEO_OV7251=y # CONFIG_VIDEO_THS7303 is not set # end of Miscellaneous helper chips +# +# Video serializers and deserializers +# +# CONFIG_VIDEO_DS90UB913 is not set +# CONFIG_VIDEO_DS90UB953 is not set +# CONFIG_VIDEO_DS90UB960 is not set +# end of Video serializers and deserializers + # # Media SPI Adapters # @@ -4235,6 +4268,7 @@ CONFIG_DVB_SP2=m # CONFIG_VIDEO_CMDLINE=y CONFIG_VIDEO_NOMODESET=y +# CONFIG_AUXDISPLAY is not set CONFIG_DRM=y CONFIG_DRM_MIPI_DBI=y CONFIG_DRM_MIPI_DSI=y @@ -4372,6 +4406,7 @@ CONFIG_DRM_PANEL_NEWVISION_NV3052C=y # CONFIG_DRM_PANEL_SONY_ACX565AKM is not set # CONFIG_DRM_PANEL_SONY_TD4353_JDI is not set # CONFIG_DRM_PANEL_SONY_TULIP_TRULY_NT35521 is not set +# CONFIG_DRM_PANEL_STARTEK_KD070FHFID015 is not set # CONFIG_DRM_PANEL_TDO_TL070WSH30 is not set # CONFIG_DRM_PANEL_TPO_TD028TTEC1 is not set # CONFIG_DRM_PANEL_TPO_TD043MTEA1 is not set @@ -4379,6 +4414,7 @@ CONFIG_DRM_PANEL_NEWVISION_NV3052C=y # CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA is not set # CONFIG_DRM_PANEL_VISIONOX_RM69299 is not set # CONFIG_DRM_PANEL_VISIONOX_VTDR6130 is not set +# CONFIG_DRM_PANEL_VISIONOX_R66451 is not set # CONFIG_DRM_PANEL_WIDECHIPS_WS2401 is not set # CONFIG_DRM_PANEL_XINPENG_XPP055C272 is not set # end of Display Panels @@ -4435,6 +4471,7 @@ CONFIG_DRM_DW_HDMI_CEC=y CONFIG_DRM_DW_MIPI_DSI=y # end of Display Interface Bridges +# CONFIG_DRM_LOONGSON is not set # CONFIG_DRM_ETNAVIV is not set # CONFIG_DRM_HISI_HIBMC is not set # CONFIG_DRM_HISI_KIRIN is not set @@ -4466,23 +4503,7 @@ CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y # # Frame buffer Devices # -CONFIG_FB_NOTIFY=y CONFIG_FB=y -# CONFIG_FIRMWARE_EDID is not set -CONFIG_FB_SYS_FILLRECT=y -CONFIG_FB_SYS_COPYAREA=y -CONFIG_FB_SYS_IMAGEBLIT=y -# CONFIG_FB_FOREIGN_ENDIAN is not set -CONFIG_FB_SYS_FOPS=y -CONFIG_FB_DEFERRED_IO=y -CONFIG_FB_SYS_HELPERS=y -CONFIG_FB_SYS_HELPERS_DEFERRED=y -# CONFIG_FB_MODE_HELPERS is not set -# CONFIG_FB_TILEBLITTING is not set - -# -# Frame buffer hardware drivers -# # CONFIG_FB_CIRRUS is not set # CONFIG_FB_PM2 is not set # CONFIG_FB_ARMCLCD is not set @@ -4520,6 +4541,21 @@ CONFIG_FB_SYS_HELPERS_DEFERRED=y # CONFIG_FB_SIMPLE is not set # CONFIG_FB_SSD1307 is not set # CONFIG_FB_SM712 is not set +CONFIG_FB_CORE=y +CONFIG_FB_NOTIFY=y +# CONFIG_FIRMWARE_EDID is not set +CONFIG_FB_DEVICE=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_IMAGEBLIT=y +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_DMAMEM_HELPERS=y +CONFIG_FB_SYSMEM_HELPERS=y +CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set # end of Frame buffer Devices # @@ -4699,8 +4735,10 @@ CONFIG_SND_SOC_I2C_AND_SPI=y # CONFIG_SND_SOC_AK5386 is not set # CONFIG_SND_SOC_AK5558 is not set # CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_AUDIO_IIO_AUX is not set # CONFIG_SND_SOC_AW8738 is not set # CONFIG_SND_SOC_AW88395 is not set +# CONFIG_SND_SOC_AW88261 is not set # CONFIG_SND_SOC_BD28623 is not set # CONFIG_SND_SOC_BT_SCO is not set # CONFIG_SND_SOC_CHV3_CODEC is not set @@ -4915,6 +4953,7 @@ CONFIG_HID_GENERIC=y # CONFIG_HID_GFRM is not set # CONFIG_HID_GLORIOUS is not set # CONFIG_HID_HOLTEK is not set +# CONFIG_HID_GOOGLE_STADIA_FF is not set # CONFIG_HID_VIVALDI is not set # CONFIG_HID_GT683R is not set # CONFIG_HID_KEYTOUCH is not set @@ -5274,6 +5313,7 @@ CONFIG_USB_CONFIGFS_F_FS=y # CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set # CONFIG_USB_CONFIGFS_F_UAC2 is not set # CONFIG_USB_CONFIGFS_F_MIDI is not set +# CONFIG_USB_CONFIGFS_F_MIDI2 is not set # CONFIG_USB_CONFIGFS_F_HID is not set CONFIG_USB_CONFIGFS_F_UVC=y # CONFIG_USB_CONFIGFS_F_PRINTER is not set @@ -5381,6 +5421,7 @@ CONFIG_LEDS_GPIO=y # CONFIG_LEDS_LP8860 is not set # CONFIG_LEDS_PCA955X is not set # CONFIG_LEDS_PCA963X is not set +# CONFIG_LEDS_PCA995X is not set # CONFIG_LEDS_DAC124S085 is not set CONFIG_LEDS_PWM=y # CONFIG_LEDS_REGULATOR is not set @@ -5546,7 +5587,6 @@ CONFIG_RTC_I2C_AND_SPI=y # 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_ZYNQMP is not set @@ -5610,7 +5650,6 @@ CONFIG_SYNC_FILE=y # CONFIG_DMABUF_SYSFS_STATS is not set # end of DMABUF options -# CONFIG_AUXDISPLAY is not set # CONFIG_UIO is not set # CONFIG_VFIO is not set # CONFIG_VIRT_DRIVERS is not set @@ -5712,7 +5751,7 @@ CONFIG_COMMON_CLK=y # CONFIG_LMK04832 is not set # CONFIG_COMMON_CLK_MAX9485 is not set -# CONFIG_COMMON_CLK_RK808 is not set +CONFIG_COMMON_CLK_RK808=y CONFIG_COMMON_CLK_SCMI=y # CONFIG_COMMON_CLK_SI5341 is not set # CONFIG_COMMON_CLK_SI5351 is not set @@ -5727,6 +5766,7 @@ CONFIG_COMMON_CLK_XGENE=y # CONFIG_COMMON_CLK_PWM is not set # CONFIG_COMMON_CLK_RS9_PCIE is not set # CONFIG_COMMON_CLK_SI521XX is not set +# CONFIG_COMMON_CLK_VC3 is not set # CONFIG_COMMON_CLK_VC5 is not set # CONFIG_COMMON_CLK_VC7 is not set # CONFIG_COMMON_CLK_FIXED_MMIO is not set @@ -5762,7 +5802,7 @@ CONFIG_MAILBOX=y # CONFIG_ARM_MHU_V2 is not set # CONFIG_PLATFORM_MHU is not set # CONFIG_PL320_MBOX is not set -# CONFIG_ROCKCHIP_MBOX is not set +CONFIG_ROCKCHIP_MBOX=y # CONFIG_ALTERA_MBOX is not set # CONFIG_MAILBOX_TEST is not set CONFIG_IOMMU_IOVA=y @@ -6127,6 +6167,7 @@ CONFIG_ROCKCHIP_SARADC=y # CONFIG_MAX5522 is not set # CONFIG_MAX5821 is not set # CONFIG_MCP4725 is not set +# CONFIG_MCP4728 is not set # CONFIG_MCP4922 is not set # CONFIG_TI_DAC082S085 is not set # CONFIG_TI_DAC5571 is not set @@ -6384,6 +6425,7 @@ CONFIG_IIO_SYSFS_TRIGGER=y # # Proximity and distance sensors # +# CONFIG_IRSD200 is not set # CONFIG_ISL29501 is not set # CONFIG_LIDAR_LITE_V2 is not set # CONFIG_MB1232 is not set @@ -6482,6 +6524,8 @@ CONFIG_GENERIC_PHY_MIPI_DPHY=y # CONFIG_PHY_CPCAP_USB is not set # CONFIG_PHY_MAPPHONE_MDM6600 is not set # CONFIG_PHY_OCELOT_SERDES is not set +# CONFIG_PHY_RTK_RTD_USB2PHY is not set +# CONFIG_PHY_RTK_RTD_USB3PHY is not set CONFIG_PHY_ROCKCHIP_DP=y CONFIG_PHY_ROCKCHIP_DPHY_RX0=y CONFIG_PHY_ROCKCHIP_EMMC=y @@ -6552,6 +6596,7 @@ CONFIG_PM_OPP=y CONFIG_DCACHE_WORD_ACCESS=y # CONFIG_VALIDATE_FS_PARSER is not set CONFIG_FS_IOMAP=y +CONFIG_BUFFER_HEAD=y CONFIG_LEGACY_DIRECT_IO=y # CONFIG_EXT2_FS is not set # CONFIG_EXT3_FS is not set @@ -6600,6 +6645,7 @@ CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y # CONFIG_OVERLAY_FS_INDEX is not set # CONFIG_OVERLAY_FS_XINO_AUTO is not set # CONFIG_OVERLAY_FS_METACOPY is not set +# CONFIG_OVERLAY_FS_DEBUG is not set # # Caches @@ -6645,9 +6691,9 @@ CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y CONFIG_TMPFS_XATTR=y # CONFIG_TMPFS_INODE64 is not set +# CONFIG_TMPFS_QUOTA is not set CONFIG_ARCH_SUPPORTS_HUGETLBFS=y # CONFIG_HUGETLBFS is not set -CONFIG_MEMFD_CREATE=y CONFIG_ARCH_HAS_GIGANTIC_PAGE=y CONFIG_CONFIGFS_FS=y # end of Pseudo filesystems @@ -6694,7 +6740,7 @@ CONFIG_SQUASHFS_ZLIB=y CONFIG_SQUASHFS_LZ4=y CONFIG_SQUASHFS_LZO=y CONFIG_SQUASHFS_XZ=y -# CONFIG_SQUASHFS_ZSTD is not set +CONFIG_SQUASHFS_ZSTD=y # CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set # CONFIG_SQUASHFS_EMBEDDED is not set CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 @@ -6707,15 +6753,7 @@ CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 # CONFIG_ROMFS_FS is not set CONFIG_PSTORE=y CONFIG_PSTORE_DEFAULT_KMSG_BYTES=10240 -CONFIG_PSTORE_DEFLATE_COMPRESS=y -# CONFIG_PSTORE_LZO_COMPRESS is not set -# CONFIG_PSTORE_LZ4_COMPRESS is not set -# CONFIG_PSTORE_LZ4HC_COMPRESS is not set -# CONFIG_PSTORE_842_COMPRESS is not set -# CONFIG_PSTORE_ZSTD_COMPRESS is not set CONFIG_PSTORE_COMPRESS=y -CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y -CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" CONFIG_PSTORE_CONSOLE=y # CONFIG_PSTORE_PMSG is not set # CONFIG_PSTORE_FTRACE is not set @@ -6827,6 +6865,13 @@ CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y # CONFIG_ZERO_CALL_USED_REGS is not set # end of Memory initialization +# +# Hardening of kernel data structures +# +# CONFIG_LIST_HARDENED is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# end of Hardening of kernel data structures + CONFIG_RANDSTRUCT_NONE=y # CONFIG_RANDSTRUCT_FULL is not set # CONFIG_RANDSTRUCT_PERFORMANCE is not set @@ -7182,13 +7227,13 @@ CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU=y CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y CONFIG_SWIOTLB=y +# CONFIG_SWIOTLB_DYNAMIC is not set CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC=y # CONFIG_DMA_RESTRICTED_POOL is not set CONFIG_DMA_NONCOHERENT_MMAP=y CONFIG_DMA_COHERENT_POOL=y CONFIG_DMA_DIRECT_REMAP=y CONFIG_DMA_CMA=y -# CONFIG_DMA_PERNUMA_CMA is not set # # Default contiguous memory area size: @@ -7402,7 +7447,6 @@ CONFIG_STACKTRACE=y # CONFIG_DEBUG_PLIST is not set # CONFIG_DEBUG_SG is not set # CONFIG_DEBUG_NOTIFIERS is not set -# CONFIG_BUG_ON_DATA_CORRUPTION is not set # CONFIG_DEBUG_MAPLE_TREE is not set # end of Debug kernel data structures diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index b262c0fe4d..ab09f8c403 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -31,7 +31,7 @@ case ${DEVICE} in PKG_GIT_CLONE_BRANCH="main" ;; *ML) - PKG_VERSION="6.5-rc7" + PKG_VERSION="6.6-rc3" PKG_URL="https://git.kernel.org/torvalds/t/${PKG_NAME}-${PKG_VERSION}.tar.gz" ;; *X55) From 9ff5e5cde4b501dac42e6b83bb3864672205cc5f Mon Sep 17 00:00:00 2001 From: xerootg Date: Mon, 2 Oct 2023 01:55:35 +0000 Subject: [PATCH 014/167] uboot might use the right folder now? --- projects/Rockchip/bootloader/mkimage | 1 - .../RK3566-ML/001-fixup_locating_dts.patch | 58 +++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/001-fixup_locating_dts.patch diff --git a/projects/Rockchip/bootloader/mkimage b/projects/Rockchip/bootloader/mkimage index eea265e573..9d599c6f31 100755 --- a/projects/Rockchip/bootloader/mkimage +++ b/projects/Rockchip/bootloader/mkimage @@ -74,7 +74,6 @@ do then echo "image: copy device trees to image..." mcopy -o "${DTB}.dtb" :: - mcopy -o "${DTB}.dtb" ::/rockchip/ fi done diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/001-fixup_locating_dts.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/001-fixup_locating_dts.patch new file mode 100644 index 0000000000..fbc9379ac9 --- /dev/null +++ b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/001-fixup_locating_dts.patch @@ -0,0 +1,58 @@ +diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +index 3f1a42d184..6af078d390 100644 +--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c ++++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +@@ -33,8 +33,6 @@ + + #define GPIO_WRITEMASK(bits) ((bits) << 16) + +-#define DTB_DIR "rockchip/" +- + struct rg3xx_model { + const u16 adc_value; + const char *board; +@@ -57,38 +55,38 @@ static const struct rg3xx_model rg3xx_model_details[] = { + 517, /* Observed average from device */ + "rk3566-anbernic-rg353m", + "RG353M", +- DTB_DIR "rk3566-anbernic-rg353p.dtb", /* Identical devices */ ++ "rk3566-anbernic-rg353p.dtb", /* Identical devices */ + }, + [RG353P] = { + 860, /* Documented value of 860 */ + "rk3566-anbernic-rg353p", + "RG353P", +- DTB_DIR "rk3566-anbernic-rg353p.dtb", ++ "rk3566-anbernic-rg353p.dtb", + }, + [RG353V] = { + 695, /* Observed average from device */ + "rk3566-anbernic-rg353v", + "RG353V", +- DTB_DIR "rk3566-anbernic-rg353v.dtb", ++ "rk3566-anbernic-rg353v.dtb", + }, + [RG503] = { + 1023, /* Observed average from device */ + "rk3566-anbernic-rg503", + "RG503", +- DTB_DIR "rk3566-anbernic-rg503.dtb", ++ "rk3566-anbernic-rg503.dtb", + }, + /* Devices with duplicate ADC value */ + [RG353PS] = { + 860, /* Observed average from device */ + "rk3566-anbernic-rg353ps", + "RG353PS", +- DTB_DIR "rk3566-anbernic-rg353ps.dtb", ++ "rk3566-anbernic-rg353ps.dtb", + }, + [RG353VS] = { + 695, /* Gathered from second hand information */ + "rk3566-anbernic-rg353vs", + "RG353VS", +- DTB_DIR "rk3566-anbernic-rg353vs.dtb", ++ "rk3566-anbernic-rg353vs.dtb", + }, + }; + From 27f2a4859859f1fd6c1ccbd61c9d7769f72f8b47 Mon Sep 17 00:00:00 2001 From: xerootg Date: Mon, 2 Oct 2023 02:29:53 +0000 Subject: [PATCH 015/167] a possible kernel config --- .../RK3566-ML/linux/linux.aarch64.conf | 72 +++++++++---------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf index e6d4b4dec7..83ecde2e26 100644 --- a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf @@ -1674,7 +1674,7 @@ CONFIG_ARM_SCMI_TRANSPORT_MAILBOX=y CONFIG_ARM_SCMI_TRANSPORT_SMC=y # CONFIG_ARM_SCMI_TRANSPORT_SMC_ATOMIC_ENABLE is not set CONFIG_ARM_SCMI_POWER_DOMAIN=y -# CONFIG_ARM_SCMI_POWER_CONTROL is not set +CONFIG_ARM_SCMI_POWER_CONTROL=y # end of ARM System Control and Management Interface Protocol # CONFIG_ARM_SCPI_PROTOCOL is not set @@ -2525,31 +2525,31 @@ CONFIG_MOUSE_ELAN_I2C_I2C=y # CONFIG_MOUSE_SYNAPTICS_I2C is not set # CONFIG_MOUSE_SYNAPTICS_USB is not set CONFIG_INPUT_JOYSTICK=y -CONFIG_JOYSTICK_ANALOG=m -CONFIG_JOYSTICK_A3D=m -# CONFIG_JOYSTICK_ADC is not set -CONFIG_JOYSTICK_ADI=m -CONFIG_JOYSTICK_COBRA=m -CONFIG_JOYSTICK_GF2K=m -CONFIG_JOYSTICK_GRIP=m -CONFIG_JOYSTICK_GRIP_MP=m -CONFIG_JOYSTICK_GUILLEMOT=m -CONFIG_JOYSTICK_INTERACT=m -CONFIG_JOYSTICK_SIDEWINDER=m -CONFIG_JOYSTICK_TMDC=m -CONFIG_JOYSTICK_IFORCE=m -CONFIG_JOYSTICK_IFORCE_USB=m -CONFIG_JOYSTICK_IFORCE_232=m -CONFIG_JOYSTICK_WARRIOR=m -CONFIG_JOYSTICK_MAGELLAN=m -CONFIG_JOYSTICK_SPACEORB=m -CONFIG_JOYSTICK_SPACEBALL=m -CONFIG_JOYSTICK_STINGER=m -CONFIG_JOYSTICK_TWIDJOY=m -CONFIG_JOYSTICK_ZHENHUA=m -CONFIG_JOYSTICK_AS5011=m -CONFIG_JOYSTICK_JOYDUMP=m -CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_ANALOG=y +CONFIG_JOYSTICK_A3D=y +CONFIG_JOYSTICK_ADC=y +CONFIG_JOYSTICK_ADI=y +CONFIG_JOYSTICK_COBRA=y +CONFIG_JOYSTICK_GF2K=y +CONFIG_JOYSTICK_GRIP=y +CONFIG_JOYSTICK_GRIP_MP=y +CONFIG_JOYSTICK_GUILLEMOT=y +CONFIG_JOYSTICK_INTERACT=y +CONFIG_JOYSTICK_SIDEWINDER=y +CONFIG_JOYSTICK_TMDC=y +CONFIG_JOYSTICK_IFORCE=y +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_IFORCE_232=y +CONFIG_JOYSTICK_WARRIOR=y +CONFIG_JOYSTICK_MAGELLAN=y +CONFIG_JOYSTICK_SPACEORB=y +CONFIG_JOYSTICK_SPACEBALL=y +CONFIG_JOYSTICK_STINGER=y +CONFIG_JOYSTICK_TWIDJOY=y +CONFIG_JOYSTICK_ZHENHUA=y +CONFIG_JOYSTICK_AS5011=y +CONFIG_JOYSTICK_JOYDUMP=y +CONFIG_JOYSTICK_XPAD=y CONFIG_JOYSTICK_XPAD_FF=y CONFIG_JOYSTICK_XPAD_LEDS=y # CONFIG_JOYSTICK_PSXPAD_SPI is not set @@ -2689,8 +2689,8 @@ CONFIG_INPUT_RK805_PWRKEY=y # # Hardware I/O ports # -CONFIG_SERIO=m -CONFIG_SERIO_SERPORT=m +CONFIG_SERIO=y +CONFIG_SERIO_SERPORT=y # CONFIG_SERIO_AMBAKMI is not set # CONFIG_SERIO_PCIPS2 is not set # CONFIG_SERIO_LIBPS2 is not set @@ -2701,7 +2701,7 @@ CONFIG_SERIO_SERPORT=m # CONFIG_SERIO_APBPS2 is not set # CONFIG_SERIO_GPIO_PS2 is not set # CONFIG_USERIO is not set -CONFIG_GAMEPORT=m +CONFIG_GAMEPORT=y # CONFIG_GAMEPORT_EMU10K1 is not set # CONFIG_GAMEPORT_FM801 is not set # end of Hardware I/O ports @@ -2798,7 +2798,7 @@ CONFIG_HW_RANDOM_TPM=y # CONFIG_TCG_TIS_I2C is not set # CONFIG_TCG_TIS_I2C_CR50 is not set # CONFIG_TCG_TIS_I2C_ATMEL is not set -CONFIG_TCG_TIS_I2C_INFINEON=y +# CONFIG_TCG_TIS_I2C_INFINEON is not set # CONFIG_TCG_TIS_I2C_NUVOTON is not set # CONFIG_TCG_ATMEL is not set # CONFIG_TCG_VTPM_PROXY is not set @@ -3449,7 +3449,7 @@ CONFIG_MFD_CORE=y # CONFIG_MFD_RC5T583 is not set CONFIG_MFD_RK8XX=y CONFIG_MFD_RK8XX_I2C=y -CONFIG_MFD_RK8XX_SPI=y +# CONFIG_MFD_RK8XX_SPI is not set # CONFIG_MFD_RN5T618 is not set # CONFIG_MFD_SEC_CORE is not set # CONFIG_MFD_SI476X_CORE is not set @@ -3515,7 +3515,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y # CONFIG_REGULATOR_88PG86X is not set CONFIG_REGULATOR_ACT8865=y # CONFIG_REGULATOR_AD5398 is not set -# CONFIG_REGULATOR_ARM_SCMI is not set +CONFIG_REGULATOR_ARM_SCMI=y # CONFIG_REGULATOR_AW37503 is not set # CONFIG_REGULATOR_DA9121 is not set # CONFIG_REGULATOR_DA9210 is not set @@ -3794,7 +3794,7 @@ CONFIG_V4L_MEM2MEM_DRIVERS=y # Rockchip media platform drivers # CONFIG_VIDEO_ROCKCHIP_RGA=y -CONFIG_VIDEO_ROCKCHIP_ISP1=y +# CONFIG_VIDEO_ROCKCHIP_ISP1 is not set # # Samsung media platform drivers @@ -3815,7 +3815,7 @@ CONFIG_VIDEO_ROCKCHIP_ISP1=y # # Verisilicon media platform drivers # -# CONFIG_VIDEO_HANTRO is not set +CONFIG_VIDEO_HANTRO=y # # VIA media platform drivers @@ -4046,7 +4046,7 @@ CONFIG_VIDEO_OV7251=y # # Media SPI Adapters # -CONFIG_CXD2880_SPI_DRV=m +CONFIG_CXD2880_SPI_DRV=y # CONFIG_VIDEO_GS1662 is not set # end of Media SPI Adapters @@ -4318,7 +4318,7 @@ CONFIG_ROCKCHIP_ANALOGIX_DP=y CONFIG_ROCKCHIP_CDN_DP=y CONFIG_ROCKCHIP_DW_HDMI=y CONFIG_ROCKCHIP_DW_MIPI_DSI=y -CONFIG_ROCKCHIP_INNO_HDMI=y +# CONFIG_ROCKCHIP_INNO_HDMI is not set CONFIG_ROCKCHIP_LVDS=y CONFIG_ROCKCHIP_RGB=y # CONFIG_ROCKCHIP_RK3066_HDMI is not set From da10a86822cc0d27b708c2f4a9395824084990c3 Mon Sep 17 00:00:00 2001 From: xerootg Date: Mon, 2 Oct 2023 22:31:24 +0000 Subject: [PATCH 016/167] working panel --- .../RK3566-ML/linux/linux.aarch64.conf | 2877 ++++++++--------- projects/Rockchip/devices/RK3566-ML/options | 3 +- projects/Rockchip/packages/linux/package.mk | 1 + 3 files changed, 1338 insertions(+), 1543 deletions(-) diff --git a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf index 83ecde2e26..550864845a 100644 --- a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf @@ -2,7 +2,7 @@ # Automatically generated file; DO NOT EDIT. # Linux/arm64 6.6.0-rc3 Kernel Configuration # -CONFIG_CC_VERSION_TEXT="aarch64-none-elf-gcc-12.3.0 (GCC) 12.3.0" +CONFIG_CC_VERSION_TEXT="aarch64-libreelec-linux-gnueabi-gcc-12.3.0 (GCC) 12.3.0" CONFIG_CC_IS_GCC=y CONFIG_GCC_VERSION=120300 CONFIG_CLANG_VERSION=0 @@ -11,6 +11,8 @@ CONFIG_AS_VERSION=24100 CONFIG_LD_IS_BFD=y CONFIG_LD_VERSION=24100 CONFIG_LLD_VERSION=0 +CONFIG_CC_CAN_LINK=y +CONFIG_CC_CAN_LINK_STATIC=y CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y CONFIG_CC_HAS_ASM_INLINE=y @@ -25,21 +27,23 @@ CONFIG_THREAD_INFO_IN_TASK=y # CONFIG_INIT_ENV_ARG_LIMIT=32 # CONFIG_COMPILE_TEST is not set -# CONFIG_WERROR is not set +CONFIG_WERROR=y CONFIG_LOCALVERSION="" # CONFIG_LOCALVERSION_AUTO is not set CONFIG_BUILD_SALT="" CONFIG_DEFAULT_INIT="" -CONFIG_DEFAULT_HOSTNAME="@DEVICENAME@" +CONFIG_DEFAULT_HOSTNAME="localhost" CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_SYSVIPC_COMPAT=y -# CONFIG_POSIX_MQUEUE is not set +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y # CONFIG_WATCH_QUEUE is not set CONFIG_CROSS_MEMORY_ATTACH=y # CONFIG_USELIB is not set -# CONFIG_AUDIT is not set +CONFIG_AUDIT=y CONFIG_HAVE_ARCH_AUDITSYSCALL=y +CONFIG_AUDITSYSCALL=y # # IRQ subsystem @@ -58,7 +62,6 @@ CONFIG_GENERIC_MSI_IRQ=y CONFIG_IRQ_MSI_IOMMU=y CONFIG_IRQ_FORCED_THREADING=y CONFIG_SPARSE_IRQ=y -# CONFIG_GENERIC_IRQ_DEBUGFS is not set # end of IRQ subsystem CONFIG_GENERIC_TIME_VSYSCALL=y @@ -89,8 +92,12 @@ CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y # # BPF subsystem # -# CONFIG_BPF_SYSCALL is not set -# CONFIG_BPF_JIT is not set +CONFIG_BPF_SYSCALL=y +CONFIG_BPF_JIT=y +CONFIG_BPF_JIT_ALWAYS_ON=y +CONFIG_BPF_JIT_DEFAULT_ON=y +# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set +# CONFIG_BPF_PRELOAD is not set # end of BPF subsystem CONFIG_PREEMPT_VOLUNTARY_BUILD=y @@ -107,8 +114,12 @@ CONFIG_TICK_CPU_ACCOUNTING=y # CONFIG_IRQ_TIME_ACCOUNTING is not set CONFIG_SCHED_THERMAL_PRESSURE=y # CONFIG_BSD_PROCESS_ACCT is not set -# CONFIG_TASKSTATS is not set -# CONFIG_PSI is not set +CONFIG_TASKSTATS=y +# CONFIG_TASK_DELAY_ACCT is not set +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_PSI=y +# CONFIG_PSI_DEFAULT_DISABLED is not set # end of CPU/Task time and stats accounting CONFIG_CPU_ISOLATION=y @@ -121,16 +132,16 @@ CONFIG_TREE_RCU=y CONFIG_TREE_SRCU=y CONFIG_TASKS_RCU_GENERIC=y CONFIG_TASKS_RUDE_RCU=y +CONFIG_TASKS_TRACE_RCU=y CONFIG_RCU_STALL_COMMON=y CONFIG_RCU_NEED_SEGCBLIST=y # end of RCU Subsystem CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y -# CONFIG_IKHEADERS is not set -CONFIG_LOG_BUF_SHIFT=18 -CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 -# CONFIG_PRINTK_INDEX is not set +CONFIG_IKHEADERS=y +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=13 CONFIG_GENERIC_SCHED_CLOCK=y # @@ -147,21 +158,26 @@ CONFIG_GCC11_NO_ARRAY_BOUNDS=y CONFIG_CC_NO_ARRAY_BOUNDS=y CONFIG_ARCH_SUPPORTS_INT128=y CONFIG_CGROUPS=y +CONFIG_PAGE_COUNTER=y # CONFIG_CGROUP_FAVOR_DYNMODS is not set -# CONFIG_MEMCG is not set +CONFIG_MEMCG=y +CONFIG_MEMCG_KMEM=y CONFIG_BLK_CGROUP=y +CONFIG_CGROUP_WRITEBACK=y CONFIG_CGROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y CONFIG_CFS_BANDWIDTH=y # CONFIG_RT_GROUP_SCHED is not set CONFIG_SCHED_MM_CID=y -# CONFIG_CGROUP_PIDS is not set +CONFIG_CGROUP_PIDS=y # CONFIG_CGROUP_RDMA is not set CONFIG_CGROUP_FREEZER=y CONFIG_CPUSETS=y CONFIG_PROC_PID_CPUSET=y CONFIG_CGROUP_DEVICE=y CONFIG_CGROUP_CPUACCT=y +# CONFIG_CGROUP_PERF is not set +CONFIG_CGROUP_BPF=y # CONFIG_CGROUP_MISC is not set # CONFIG_CGROUP_DEBUG is not set CONFIG_SOCK_CGROUP_DATA=y @@ -176,7 +192,7 @@ CONFIG_NET_NS=y # CONFIG_SCHED_AUTOGROUP is not set CONFIG_RELAY=y CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="@INITRAMFS_SOURCE@" +CONFIG_INITRAMFS_SOURCE="/home/azureuser/distribution/build.JELOS-RK3566-ML.aarch64/image/initramfs.cpio" CONFIG_INITRAMFS_ROOT_UID=0 CONFIG_INITRAMFS_ROOT_GID=0 CONFIG_RD_GZIP=y @@ -186,20 +202,22 @@ CONFIG_RD_XZ=y CONFIG_RD_LZO=y CONFIG_RD_LZ4=y CONFIG_RD_ZSTD=y -CONFIG_INITRAMFS_COMPRESSION_GZIP=y +# CONFIG_INITRAMFS_COMPRESSION_GZIP is not set # CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set # CONFIG_INITRAMFS_COMPRESSION_LZMA is not set # CONFIG_INITRAMFS_COMPRESSION_XZ is not set -# CONFIG_INITRAMFS_COMPRESSION_LZO is not set +CONFIG_INITRAMFS_COMPRESSION_LZO=y # CONFIG_INITRAMFS_COMPRESSION_LZ4 is not set # CONFIG_INITRAMFS_COMPRESSION_ZSTD is not set # CONFIG_INITRAMFS_COMPRESSION_NONE is not set -# CONFIG_BOOT_CONFIG is not set +CONFIG_BOOT_CONFIG=y +# CONFIG_BOOT_CONFIG_FORCE is not set +# CONFIG_BOOT_CONFIG_EMBED is not set CONFIG_INITRAMFS_PRESERVE_MTIME=y -CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y -# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_LD_ORPHAN_WARN=y -CONFIG_LD_ORPHAN_WARN_LEVEL="warn" +CONFIG_LD_ORPHAN_WARN_LEVEL="error" CONFIG_SYSCTL=y CONFIG_HAVE_UID16=y CONFIG_SYSCTL_EXCEPTION_TRACE=y @@ -208,7 +226,7 @@ CONFIG_UID16=y CONFIG_MULTIUSER=y # CONFIG_SGETMASK_SYSCALL is not set CONFIG_SYSFS_SYSCALL=y -CONFIG_FHANDLE=y +# CONFIG_FHANDLE is not set CONFIG_POSIX_TIMERS=y CONFIG_PRINTK=y CONFIG_BUG=y @@ -227,21 +245,21 @@ CONFIG_ADVISE_SYSCALLS=y CONFIG_MEMBARRIER=y CONFIG_KALLSYMS=y # CONFIG_KALLSYMS_SELFTEST is not set -# CONFIG_KALLSYMS_ALL is not set +CONFIG_KALLSYMS_ALL=y CONFIG_KALLSYMS_BASE_RELATIVE=y CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y CONFIG_KCMP=y CONFIG_RSEQ=y CONFIG_CACHESTAT_SYSCALL=y # CONFIG_DEBUG_RSEQ is not set -CONFIG_EMBEDDED=y CONFIG_HAVE_PERF_EVENTS=y # CONFIG_PC104 is not set # # Kernel Performance Events And Counters # -# CONFIG_PERF_EVENTS is not set +CONFIG_PERF_EVENTS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set # end of Kernel Performance Events And Counters CONFIG_SYSTEM_DATA_VERIFICATION=y @@ -333,11 +351,12 @@ CONFIG_ARCH_ROCKCHIP=y # ARM errata workarounds via the alternatives framework # CONFIG_AMPERE_ERRATUM_AC03_CPU_38=y -# CONFIG_ARM64_ERRATUM_826319 is not set -# CONFIG_ARM64_ERRATUM_827319 is not set -# CONFIG_ARM64_ERRATUM_824069 is not set -# CONFIG_ARM64_ERRATUM_819472 is not set -# CONFIG_ARM64_ERRATUM_832075 is not set +CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y +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_ERRATUM_1742098=y CONFIG_ARM64_ERRATUM_845719=y CONFIG_ARM64_ERRATUM_843419=y @@ -365,18 +384,18 @@ CONFIG_ARM64_ERRATUM_2457168=y CONFIG_ARM64_ERRATUM_2645198=y # CONFIG_CAVIUM_ERRATUM_22375 is not set # CONFIG_CAVIUM_ERRATUM_23154 is not set -CONFIG_CAVIUM_ERRATUM_27456=y -CONFIG_CAVIUM_ERRATUM_30115=y -CONFIG_CAVIUM_TX2_ERRATUM_219=y -CONFIG_FUJITSU_ERRATUM_010001=y -CONFIG_HISILICON_ERRATUM_161600802=y -CONFIG_QCOM_FALKOR_ERRATUM_1003=y -CONFIG_QCOM_FALKOR_ERRATUM_1009=y -CONFIG_QCOM_QDF2400_ERRATUM_0065=y -CONFIG_QCOM_FALKOR_ERRATUM_E1041=y -CONFIG_NVIDIA_CARMEL_CNP_ERRATUM=y +# CONFIG_CAVIUM_ERRATUM_27456 is not set +# CONFIG_CAVIUM_ERRATUM_30115 is not set +# CONFIG_CAVIUM_TX2_ERRATUM_219 is not set +# CONFIG_FUJITSU_ERRATUM_010001 is not set +# CONFIG_HISILICON_ERRATUM_161600802 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_1003 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_1009 is not set +# CONFIG_QCOM_QDF2400_ERRATUM_0065 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_E1041 is not set +# CONFIG_NVIDIA_CARMEL_CNP_ERRATUM is not set CONFIG_ROCKCHIP_ERRATUM_3588001=y -CONFIG_SOCIONEXT_SYNQUACER_PREITS=y +# CONFIG_SOCIONEXT_SYNQUACER_PREITS is not set # end of ARM errata workarounds via the alternatives framework CONFIG_ARM64_4K_PAGES=y @@ -392,16 +411,17 @@ CONFIG_CPU_LITTLE_ENDIAN=y CONFIG_SCHED_MC=y # CONFIG_SCHED_CLUSTER is not set # CONFIG_SCHED_SMT is not set -CONFIG_NR_CPUS=8 +CONFIG_NR_CPUS=4 CONFIG_HOTPLUG_CPU=y # CONFIG_NUMA is not set # 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_HZ_300 is not set +CONFIG_HZ_1000=y +CONFIG_HZ=1000 CONFIG_SCHED_HRTICK=y CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_HW_PERF_EVENTS=y CONFIG_CC_HAVE_SHADOW_CALL_STACK=y # CONFIG_PARAVIRT is not set # CONFIG_PARAVIRT_TIME_ACCOUNTING is not set @@ -416,7 +436,7 @@ CONFIG_ARCH_FORCE_MAX_ORDER=10 CONFIG_UNMAP_KERNEL_AT_EL0=y CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY=y CONFIG_RODATA_FULL_DEFAULT_ENABLED=y -# CONFIG_ARM64_SW_TTBR0_PAN is not set +CONFIG_ARM64_SW_TTBR0_PAN=y CONFIG_ARM64_TAGGED_ADDR_ABI=y CONFIG_COMPAT=y CONFIG_KUSER_HELPERS=y @@ -441,7 +461,7 @@ CONFIG_ARM64_USE_LSE_ATOMICS=y # CONFIG_AS_HAS_ARMV8_2=y CONFIG_AS_HAS_SHA3=y -# CONFIG_ARM64_PMEM is not set +CONFIG_ARM64_PMEM=y CONFIG_ARM64_RAS_EXTN=y CONFIG_ARM64_CNP=y # end of ARMv8.2 architectural features @@ -470,7 +490,7 @@ CONFIG_ARM64_TLB_RANGE=y # ARMv8.5 architectural features # CONFIG_AS_HAS_ARMV8_5=y -CONFIG_ARM64_BTI=y +# CONFIG_ARM64_BTI is not set CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI=y CONFIG_ARM64_E0PD=y CONFIG_ARM64_AS_HAS_MTE=y @@ -487,7 +507,8 @@ CONFIG_ARM64_SVE=y CONFIG_ARM64_SME=y # CONFIG_ARM64_PSEUDO_NMI is not set CONFIG_RELOCATABLE=y -# CONFIG_RANDOMIZE_BASE is not set +CONFIG_RANDOMIZE_BASE=y +CONFIG_RANDOMIZE_MODULE_REGION_FULL=y CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y CONFIG_STACKPROTECTOR_PER_TASK=y # end of Kernel Features @@ -510,16 +531,14 @@ CONFIG_PM_SLEEP=y CONFIG_PM_SLEEP_SMP=y # CONFIG_PM_AUTOSLEEP is not set # CONFIG_PM_USERSPACE_AUTOSLEEP is not set -# CONFIG_PM_WAKELOCKS is not set +CONFIG_PM_WAKELOCKS=y +CONFIG_PM_WAKELOCKS_LIMIT=100 +CONFIG_PM_WAKELOCKS_GC=y CONFIG_PM=y -CONFIG_PM_DEBUG=y -CONFIG_PM_ADVANCED_DEBUG=y -# CONFIG_PM_TEST_SUSPEND is not set -CONFIG_PM_SLEEP_DEBUG=y -# CONFIG_DPM_WATCHDOG is not set +# CONFIG_PM_DEBUG is not set CONFIG_PM_CLK=y CONFIG_PM_GENERIC_DOMAINS=y -CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y +# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set CONFIG_PM_GENERIC_DOMAINS_SLEEP=y CONFIG_PM_GENERIC_DOMAINS_OF=y CONFIG_CPU_PM=y @@ -536,14 +555,18 @@ CONFIG_ARCH_SUSPEND_POSSIBLE=y # CPU Idle # CONFIG_CPU_IDLE=y -# CONFIG_CPU_IDLE_GOV_LADDER is not set +CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y +CONFIG_CPU_IDLE_GOV_LADDER=y CONFIG_CPU_IDLE_GOV_MENU=y # CONFIG_CPU_IDLE_GOV_TEO is not set +CONFIG_DT_IDLE_STATES=y +CONFIG_DT_IDLE_GENPD=y # # ARM CPU Idle Drivers # -# CONFIG_ARM_PSCI_CPUIDLE is not set +CONFIG_ARM_PSCI_CPUIDLE=y +CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y # end of ARM CPU Idle Drivers # end of CPU Idle @@ -553,13 +576,13 @@ CONFIG_CPU_IDLE_GOV_MENU=y CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_GOV_ATTR_SET=y CONFIG_CPU_FREQ_GOV_COMMON=y -# CONFIG_CPU_FREQ_STAT is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set -CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_POWERSAVE=y CONFIG_CPU_FREQ_GOV_USERSPACE=y @@ -572,7 +595,8 @@ CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y # CONFIG_CPUFREQ_DT=y CONFIG_CPUFREQ_DT_PLATDEV=y -# CONFIG_ARM_SCMI_CPUFREQ is not set +# CONFIG_ARM_SCPI_CPUFREQ is not set +CONFIG_ARM_SCMI_CPUFREQ=y # end of CPU Frequency scaling # end of CPU Power Management @@ -586,7 +610,8 @@ CONFIG_ARCH_HAS_SUBPAGE_FAULTS=y CONFIG_HOTPLUG_CORE_SYNC=y CONFIG_HOTPLUG_CORE_SYNC_DEAD=y # CONFIG_KPROBES is not set -# CONFIG_JUMP_LABEL is not set +CONFIG_JUMP_LABEL=y +# CONFIG_STATIC_KEYS_SELFTEST is not set CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y @@ -610,6 +635,7 @@ CONFIG_HAVE_ASM_MODVERSIONS=y CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y CONFIG_HAVE_RSEQ=y CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y +CONFIG_HAVE_HW_BREAKPOINT=y CONFIG_HAVE_PERF_REGS=y CONFIG_HAVE_PERF_USER_STACK_DUMP=y CONFIG_HAVE_ARCH_JUMP_LABEL=y @@ -674,7 +700,6 @@ CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y CONFIG_STRICT_MODULE_RWX=y CONFIG_HAVE_ARCH_COMPILER_H=y CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y -# CONFIG_LOCK_EVENT_COUNTS is not set CONFIG_ARCH_HAS_RELR=y CONFIG_HAVE_PREEMPT_DYNAMIC=y CONFIG_HAVE_PREEMPT_DYNAMIC_KEY=y @@ -686,7 +711,6 @@ CONFIG_ARCH_HAVE_TRACE_MMIO_ACCESS=y # # GCOV-based kernel profiling # -# CONFIG_GCOV_KERNEL is not set CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y # end of GCOV-based kernel profiling @@ -694,19 +718,18 @@ CONFIG_HAVE_GCC_PLUGINS=y CONFIG_GCC_PLUGINS=y # CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set CONFIG_FUNCTION_ALIGNMENT_4B=y -CONFIG_FUNCTION_ALIGNMENT_8B=y -CONFIG_FUNCTION_ALIGNMENT=8 +CONFIG_FUNCTION_ALIGNMENT=4 # end of General architecture-dependent options CONFIG_RT_MUTEXES=y CONFIG_BASE_SMALL=0 CONFIG_MODULES=y -# CONFIG_MODULE_DEBUG is not set -CONFIG_MODULE_FORCE_LOAD=y +# CONFIG_MODULE_FORCE_LOAD is not set CONFIG_MODULE_UNLOAD=y -CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set # CONFIG_MODULE_UNLOAD_TAINT_TRACKING is not set -# CONFIG_MODVERSIONS is not set +CONFIG_MODVERSIONS=y +CONFIG_ASM_MODVERSIONS=y # CONFIG_MODULE_SRCVERSION_ALL is not set # CONFIG_MODULE_SIG is not set CONFIG_MODULE_COMPRESS_NONE=y @@ -719,16 +742,19 @@ CONFIG_MODPROBE_PATH="/sbin/modprobe" CONFIG_MODULES_TREE_LOOKUP=y CONFIG_BLOCK=y CONFIG_BLOCK_LEGACY_AUTOLOAD=y +CONFIG_BLK_RQ_ALLOC_TIME=y +CONFIG_BLK_CGROUP_RWSTAT=y CONFIG_BLK_DEV_BSG_COMMON=y +CONFIG_BLK_ICQ=y # CONFIG_BLK_DEV_BSGLIB is not set # CONFIG_BLK_DEV_INTEGRITY is not set # CONFIG_BLK_DEV_ZONED is not set -# CONFIG_BLK_DEV_THROTTLING is not set +CONFIG_BLK_DEV_THROTTLING=y +# CONFIG_BLK_DEV_THROTTLING_LOW is not set # CONFIG_BLK_WBT is not set -# CONFIG_BLK_CGROUP_IOLATENCY is not set -# CONFIG_BLK_CGROUP_IOCOST is not set +CONFIG_BLK_CGROUP_IOLATENCY=y +CONFIG_BLK_CGROUP_IOCOST=y # CONFIG_BLK_CGROUP_IOPRIO is not set -CONFIG_BLK_DEBUG_FS=y # CONFIG_BLK_SED_OPAL is not set # CONFIG_BLK_INLINE_ENCRYPTION is not set @@ -759,15 +785,20 @@ CONFIG_EFI_PARTITION=y CONFIG_BLK_MQ_PCI=y CONFIG_BLK_PM=y +CONFIG_BLOCK_HOLDER_DEPRECATED=y +CONFIG_BLK_MQ_STACKING=y # # IO Schedulers # CONFIG_MQ_IOSCHED_DEADLINE=y CONFIG_MQ_IOSCHED_KYBER=y -# CONFIG_IOSCHED_BFQ is not set +CONFIG_IOSCHED_BFQ=y +CONFIG_BFQ_GROUP_IOSCHED=y +# CONFIG_BFQ_CGROUP_DEBUG is not set # end of IO Schedulers +CONFIG_PADATA=y CONFIG_ASN1=y CONFIG_ARCH_INLINE_SPIN_TRYLOCK=y CONFIG_ARCH_INLINE_SPIN_TRYLOCK_BH=y @@ -795,7 +826,31 @@ CONFIG_ARCH_INLINE_WRITE_UNLOCK=y CONFIG_ARCH_INLINE_WRITE_UNLOCK_BH=y CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQ=y CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE=y -CONFIG_UNINLINE_SPIN_UNLOCK=y +CONFIG_INLINE_SPIN_TRYLOCK=y +CONFIG_INLINE_SPIN_TRYLOCK_BH=y +CONFIG_INLINE_SPIN_LOCK=y +CONFIG_INLINE_SPIN_LOCK_BH=y +CONFIG_INLINE_SPIN_LOCK_IRQ=y +CONFIG_INLINE_SPIN_LOCK_IRQSAVE=y +CONFIG_INLINE_SPIN_UNLOCK_BH=y +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE=y +CONFIG_INLINE_READ_LOCK=y +CONFIG_INLINE_READ_LOCK_BH=y +CONFIG_INLINE_READ_LOCK_IRQ=y +CONFIG_INLINE_READ_LOCK_IRQSAVE=y +CONFIG_INLINE_READ_UNLOCK=y +CONFIG_INLINE_READ_UNLOCK_BH=y +CONFIG_INLINE_READ_UNLOCK_IRQ=y +CONFIG_INLINE_READ_UNLOCK_IRQRESTORE=y +CONFIG_INLINE_WRITE_LOCK=y +CONFIG_INLINE_WRITE_LOCK_BH=y +CONFIG_INLINE_WRITE_LOCK_IRQ=y +CONFIG_INLINE_WRITE_LOCK_IRQSAVE=y +CONFIG_INLINE_WRITE_UNLOCK=y +CONFIG_INLINE_WRITE_UNLOCK_BH=y +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE=y CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y CONFIG_MUTEX_SPIN_ON_OWNER=y CONFIG_RWSEM_SPIN_ON_OWNER=y @@ -827,8 +882,24 @@ CONFIG_COREDUMP=y # # Memory Management options # +CONFIG_ZPOOL=y CONFIG_SWAP=y -# CONFIG_ZSWAP is not set +CONFIG_ZSWAP=y +CONFIG_ZSWAP_DEFAULT_ON=y +# CONFIG_ZSWAP_EXCLUSIVE_LOADS_DEFAULT_ON is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set +CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO=y +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_842 is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4 is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4HC is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD is not set +CONFIG_ZSWAP_COMPRESSOR_DEFAULT="lzo" +CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y +# CONFIG_ZSWAP_ZPOOL_DEFAULT_Z3FOLD is not set +# CONFIG_ZSWAP_ZPOOL_DEFAULT_ZSMALLOC is not set +CONFIG_ZSWAP_ZPOOL_DEFAULT="zbud" +CONFIG_ZBUD=y +# CONFIG_Z3FOLD is not set CONFIG_ZSMALLOC=y # CONFIG_ZSMALLOC_STAT is not set CONFIG_ZSMALLOC_CHAIN_SIZE=8 @@ -855,7 +926,6 @@ CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y CONFIG_SPARSEMEM_VMEMMAP=y CONFIG_HAVE_FAST_GUP=y CONFIG_ARCH_KEEP_MEMBLOCK=y -CONFIG_MEMORY_ISOLATION=y CONFIG_EXCLUSIVE_SYSTEM_RAM=y CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y @@ -863,10 +933,10 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y -# CONFIG_COMPACTION is not set -# CONFIG_PAGE_REPORTING is not set +CONFIG_COMPACTION=y +CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1 +CONFIG_PAGE_REPORTING=y CONFIG_MIGRATION=y -CONFIG_CONTIG_ALLOC=y CONFIG_PHYS_ADDR_T_64BIT=y # CONFIG_KSM is not set CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 @@ -874,11 +944,7 @@ CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y # CONFIG_MEMORY_FAILURE is not set CONFIG_ARCH_WANTS_THP_SWAP=y # CONFIG_TRANSPARENT_HUGEPAGE is not set -CONFIG_CMA=y -# CONFIG_CMA_DEBUG is not set -# CONFIG_CMA_DEBUGFS is not set -# CONFIG_CMA_SYSFS is not set -CONFIG_CMA_AREAS=7 +# CONFIG_CMA is not set CONFIG_GENERIC_EARLY_IOREMAP=y # CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set # CONFIG_IDLE_PAGE_TRACKING is not set @@ -892,7 +958,10 @@ CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y CONFIG_ARCH_USES_PG_ARCH_X=y CONFIG_VM_EVENT_COUNTERS=y # CONFIG_PERCPU_STATS is not set -# CONFIG_GUP_TEST is not set + +# +# GUP_TEST needs to have DEBUG_FS enabled +# # CONFIG_DMAPOOL_TEST is not set CONFIG_ARCH_HAS_PTE_SPECIAL=y CONFIG_MEMFD_CREATE=y @@ -915,399 +984,287 @@ CONFIG_NET=y CONFIG_COMPAT_NETLINK_MESSAGES=y CONFIG_NET_INGRESS=y CONFIG_NET_EGRESS=y +CONFIG_NET_XGRESS=y CONFIG_SKB_EXTENSIONS=y # # Networking options # CONFIG_PACKET=y -CONFIG_PACKET_DIAG=y +# CONFIG_PACKET_DIAG is not set CONFIG_UNIX=y CONFIG_UNIX_SCM=y CONFIG_AF_UNIX_OOB=y -CONFIG_UNIX_DIAG=y +# CONFIG_UNIX_DIAG is not set # CONFIG_TLS is not set CONFIG_XFRM=y CONFIG_XFRM_ALGO=y CONFIG_XFRM_USER=y -# CONFIG_XFRM_INTERFACE is not set +CONFIG_XFRM_INTERFACE=y # CONFIG_XFRM_SUB_POLICY is not set -CONFIG_XFRM_MIGRATE=y -# CONFIG_XFRM_STATISTICS is not set -CONFIG_XFRM_AH=m -CONFIG_XFRM_ESP=m -CONFIG_XFRM_IPCOMP=m -CONFIG_NET_KEY=m -CONFIG_NET_KEY_MIGRATE=y +# CONFIG_XFRM_MIGRATE is not set +CONFIG_XFRM_STATISTICS=y +CONFIG_XFRM_ESP=y +CONFIG_XFRM_IPCOMP=y +CONFIG_NET_KEY=y +# CONFIG_NET_KEY_MIGRATE is not set +# CONFIG_XDP_SOCKETS is not set CONFIG_INET=y CONFIG_IP_MULTICAST=y CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_FIB_TRIE_STATS=y +# CONFIG_IP_FIB_TRIE_STATS is not set CONFIG_IP_MULTIPLE_TABLES=y -CONFIG_IP_ROUTE_MULTIPATH=y -CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_ROUTE_CLASSID=y -CONFIG_IP_PNP=y -# CONFIG_IP_PNP_DHCP is not set -# CONFIG_IP_PNP_BOOTP is not set -# CONFIG_IP_PNP_RARP is not set -CONFIG_NET_IPIP=m -CONFIG_NET_IPGRE_DEMUX=m -CONFIG_NET_IP_TUNNEL=m +# CONFIG_IP_ROUTE_MULTIPATH is not set +# CONFIG_IP_ROUTE_VERBOSE is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +CONFIG_NET_IPGRE_DEMUX=y +CONFIG_NET_IP_TUNNEL=y # CONFIG_NET_IPGRE is not set CONFIG_IP_MROUTE_COMMON=y CONFIG_IP_MROUTE=y -CONFIG_IP_MROUTE_MULTIPLE_TABLES=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=y +# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set +# CONFIG_IP_PIMSM_V1 is not set +# CONFIG_IP_PIMSM_V2 is not set CONFIG_SYN_COOKIES=y -# CONFIG_NET_IPVTI is not set -CONFIG_NET_UDP_TUNNEL=m -CONFIG_NET_FOU=m +CONFIG_NET_IPVTI=y +CONFIG_NET_UDP_TUNNEL=y +# CONFIG_NET_FOU is not set # CONFIG_NET_FOU_IP_TUNNELS is not set -CONFIG_INET_AH=m -CONFIG_INET_ESP=m +# CONFIG_INET_AH is not set +CONFIG_INET_ESP=y # CONFIG_INET_ESP_OFFLOAD is not set # CONFIG_INET_ESPINTCP is not set -CONFIG_INET_IPCOMP=m +# CONFIG_INET_IPCOMP is not set CONFIG_INET_TABLE_PERTURB_ORDER=16 -CONFIG_INET_XFRM_TUNNEL=m -CONFIG_INET_TUNNEL=m -CONFIG_INET_DIAG=m -CONFIG_INET_TCP_DIAG=m -# CONFIG_INET_UDP_DIAG is not set +CONFIG_INET_TUNNEL=y +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +CONFIG_INET_UDP_DIAG=y # CONFIG_INET_RAW_DIAG is not set -# CONFIG_INET_DIAG_DESTROY is not set -CONFIG_TCP_CONG_ADVANCED=y -CONFIG_TCP_CONG_BIC=m -CONFIG_TCP_CONG_CUBIC=m -CONFIG_TCP_CONG_WESTWOOD=m -CONFIG_TCP_CONG_HTCP=m -# CONFIG_TCP_CONG_HSTCP is not set -# CONFIG_TCP_CONG_HYBLA is not set -# CONFIG_TCP_CONG_VEGAS is not set -# CONFIG_TCP_CONG_NV is not set -# CONFIG_TCP_CONG_SCALABLE is not set -# CONFIG_TCP_CONG_LP is not set -# CONFIG_TCP_CONG_VENO is not set -# CONFIG_TCP_CONG_YEAH is not set -# CONFIG_TCP_CONG_ILLINOIS is not set -# CONFIG_TCP_CONG_DCTCP is not set -# CONFIG_TCP_CONG_CDG is not set -# CONFIG_TCP_CONG_BBR is not set -CONFIG_DEFAULT_RENO=y -CONFIG_DEFAULT_TCP_CONG="reno" +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=m -# CONFIG_IPV6_ROUTER_PREF is not set +CONFIG_IPV6=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y CONFIG_IPV6_OPTIMISTIC_DAD=y -CONFIG_INET6_AH=m -CONFIG_INET6_ESP=m +# CONFIG_INET6_AH is not set +CONFIG_INET6_ESP=y # CONFIG_INET6_ESP_OFFLOAD is not set # CONFIG_INET6_ESPINTCP is not set -CONFIG_INET6_IPCOMP=m -CONFIG_IPV6_MIP6=m -CONFIG_IPV6_ILA=m -CONFIG_INET6_XFRM_TUNNEL=m -CONFIG_INET6_TUNNEL=m -# CONFIG_IPV6_VTI is not set -CONFIG_IPV6_SIT=m +CONFIG_INET6_IPCOMP=y +CONFIG_IPV6_MIP6=y +# CONFIG_IPV6_ILA is not set +CONFIG_INET6_XFRM_TUNNEL=y +CONFIG_INET6_TUNNEL=y +CONFIG_IPV6_VTI=y +CONFIG_IPV6_SIT=y # CONFIG_IPV6_SIT_6RD is not set CONFIG_IPV6_NDISC_NODETYPE=y -CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_TUNNEL=y # CONFIG_IPV6_GRE is not set -CONFIG_IPV6_FOU=m CONFIG_IPV6_MULTIPLE_TABLES=y # CONFIG_IPV6_SUBTREES is not set -CONFIG_IPV6_MROUTE=y -# CONFIG_IPV6_MROUTE_MULTIPLE_TABLES is not set -# CONFIG_IPV6_PIMSM_V2 is not set +# CONFIG_IPV6_MROUTE is not set # CONFIG_IPV6_SEG6_LWTUNNEL is not set # CONFIG_IPV6_SEG6_HMAC is not set # CONFIG_IPV6_RPL_LWTUNNEL is not set # CONFIG_IPV6_IOAM6_LWTUNNEL is not set +# CONFIG_NETLABEL is not set # CONFIG_MPTCP is not set CONFIG_NETWORK_SECMARK=y CONFIG_NET_PTP_CLASSIFY=y # CONFIG_NETWORK_PHY_TIMESTAMPING is not set CONFIG_NETFILTER=y CONFIG_NETFILTER_ADVANCED=y -CONFIG_BRIDGE_NETFILTER=m # # Core Netfilter Configuration # CONFIG_NETFILTER_INGRESS=y CONFIG_NETFILTER_EGRESS=y -CONFIG_NETFILTER_NETLINK=m -CONFIG_NETFILTER_FAMILY_BRIDGE=y +CONFIG_NETFILTER_SKIP_EGRESS=y +CONFIG_NETFILTER_NETLINK=y CONFIG_NETFILTER_FAMILY_ARP=y -# CONFIG_NETFILTER_NETLINK_HOOK is not set -CONFIG_NETFILTER_NETLINK_ACCT=m -CONFIG_NETFILTER_NETLINK_QUEUE=m -CONFIG_NETFILTER_NETLINK_LOG=m -CONFIG_NETFILTER_NETLINK_OSF=m -CONFIG_NF_CONNTRACK=m -CONFIG_NF_LOG_SYSLOG=m -CONFIG_NETFILTER_CONNCOUNT=m +CONFIG_NETFILTER_BPF_LINK=y +# CONFIG_NETFILTER_NETLINK_ACCT is not set +CONFIG_NETFILTER_NETLINK_QUEUE=y +CONFIG_NETFILTER_NETLINK_LOG=y +# CONFIG_NETFILTER_NETLINK_OSF is not set +CONFIG_NF_CONNTRACK=y +# CONFIG_NF_LOG_SYSLOG is not set +CONFIG_NETFILTER_CONNCOUNT=y CONFIG_NF_CONNTRACK_MARK=y -# CONFIG_NF_CONNTRACK_SECMARK is not set +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=y -CONFIG_NF_CONNTRACK_TIMESTAMP=y -CONFIG_NF_CONNTRACK_LABELS=y +# CONFIG_NF_CONNTRACK_TIMEOUT is not set +# CONFIG_NF_CONNTRACK_TIMESTAMP is not set +# CONFIG_NF_CONNTRACK_LABELS 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=m -CONFIG_NF_CONNTRACK_FTP=m -CONFIG_NF_CONNTRACK_H323=m -CONFIG_NF_CONNTRACK_IRC=m -CONFIG_NF_CONNTRACK_BROADCAST=m -CONFIG_NF_CONNTRACK_NETBIOS_NS=m -CONFIG_NF_CONNTRACK_SNMP=m -CONFIG_NF_CONNTRACK_PPTP=m -CONFIG_NF_CONNTRACK_SANE=m -CONFIG_NF_CONNTRACK_SIP=m -CONFIG_NF_CONNTRACK_TFTP=m -CONFIG_NF_CT_NETLINK=m -# CONFIG_NF_CT_NETLINK_TIMEOUT is not set +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_NETFILTER_NETLINK_GLUE_CT is not set -CONFIG_NF_NAT=m -CONFIG_NF_NAT_AMANDA=m -CONFIG_NF_NAT_FTP=m -CONFIG_NF_NAT_IRC=m -CONFIG_NF_NAT_SIP=m -CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT=y +CONFIG_NF_NAT_AMANDA=y +CONFIG_NF_NAT_FTP=y +CONFIG_NF_NAT_IRC=y +CONFIG_NF_NAT_TFTP=y CONFIG_NF_NAT_REDIRECT=y CONFIG_NF_NAT_MASQUERADE=y -CONFIG_NETFILTER_SYNPROXY=m -CONFIG_NF_TABLES=m -# CONFIG_NF_TABLES_INET is not set -# CONFIG_NF_TABLES_NETDEV is not set -# CONFIG_NFT_NUMGEN is not set -# CONFIG_NFT_CT is not set -# CONFIG_NFT_CONNLIMIT is not set -# CONFIG_NFT_LOG is not set -# CONFIG_NFT_LIMIT is not set -# CONFIG_NFT_MASQ is not set -# CONFIG_NFT_REDIR is not set -# CONFIG_NFT_TUNNEL is not set -# CONFIG_NFT_QUEUE is not set -# CONFIG_NFT_QUOTA is not set -# CONFIG_NFT_REJECT is not set -# CONFIG_NFT_COMPAT is not set -# CONFIG_NFT_HASH is not set -# CONFIG_NFT_XFRM is not set -# CONFIG_NFT_SOCKET is not set -# CONFIG_NFT_OSF is not set -# CONFIG_NFT_TPROXY is not set -# CONFIG_NFT_SYNPROXY is not set -# CONFIG_NF_FLOW_TABLE is not set +# CONFIG_NF_TABLES is not set CONFIG_NETFILTER_XTABLES=y -# CONFIG_NETFILTER_XTABLES_COMPAT is not set +CONFIG_NETFILTER_XTABLES_COMPAT=y # # Xtables combined modules # CONFIG_NETFILTER_XT_MARK=y -CONFIG_NETFILTER_XT_CONNMARK=m -# CONFIG_NETFILTER_XT_SET is not set +CONFIG_NETFILTER_XT_CONNMARK=y # # Xtables targets # -CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m -CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -# CONFIG_NETFILTER_XT_TARGET_CT is not set -CONFIG_NETFILTER_XT_TARGET_DSCP=m -CONFIG_NETFILTER_XT_TARGET_HL=m -CONFIG_NETFILTER_XT_TARGET_HMARK=m -CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m -CONFIG_NETFILTER_XT_TARGET_LED=m -CONFIG_NETFILTER_XT_TARGET_LOG=m -CONFIG_NETFILTER_XT_TARGET_MARK=m -CONFIG_NETFILTER_XT_NAT=m -CONFIG_NETFILTER_XT_TARGET_NETMAP=m -CONFIG_NETFILTER_XT_TARGET_NFLOG=m -CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +# 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 is not set -CONFIG_NETFILTER_XT_TARGET_RATEEST=m -CONFIG_NETFILTER_XT_TARGET_REDIRECT=m -CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m -CONFIG_NETFILTER_XT_TARGET_TEE=m -CONFIG_NETFILTER_XT_TARGET_TPROXY=m -# CONFIG_NETFILTER_XT_TARGET_TRACE is not set -# CONFIG_NETFILTER_XT_TARGET_SECMARK is not set -CONFIG_NETFILTER_XT_TARGET_TCPMSS=m -CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set +CONFIG_NETFILTER_XT_TARGET_REDIRECT=y +CONFIG_NETFILTER_XT_TARGET_MASQUERADE=y +# CONFIG_NETFILTER_XT_TARGET_TEE is not set +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=m -CONFIG_NETFILTER_XT_MATCH_BPF=m -CONFIG_NETFILTER_XT_MATCH_CGROUP=m -CONFIG_NETFILTER_XT_MATCH_CLUSTER=m -CONFIG_NETFILTER_XT_MATCH_COMMENT=m -CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m -CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m -CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m -CONFIG_NETFILTER_XT_MATCH_CONNMARK=m -CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m -CONFIG_NETFILTER_XT_MATCH_CPU=m -CONFIG_NETFILTER_XT_MATCH_DCCP=m -CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m -CONFIG_NETFILTER_XT_MATCH_DSCP=m -CONFIG_NETFILTER_XT_MATCH_ECN=m -CONFIG_NETFILTER_XT_MATCH_ESP=m -CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m -CONFIG_NETFILTER_XT_MATCH_HELPER=m -CONFIG_NETFILTER_XT_MATCH_HL=m -CONFIG_NETFILTER_XT_MATCH_IPCOMP=m -CONFIG_NETFILTER_XT_MATCH_IPRANGE=m -# CONFIG_NETFILTER_XT_MATCH_IPVS is not set -CONFIG_NETFILTER_XT_MATCH_L2TP=m -CONFIG_NETFILTER_XT_MATCH_LENGTH=m -CONFIG_NETFILTER_XT_MATCH_LIMIT=m -CONFIG_NETFILTER_XT_MATCH_MAC=m -CONFIG_NETFILTER_XT_MATCH_MARK=m -CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m -CONFIG_NETFILTER_XT_MATCH_NFACCT=m -CONFIG_NETFILTER_XT_MATCH_OSF=m -CONFIG_NETFILTER_XT_MATCH_OWNER=m -CONFIG_NETFILTER_XT_MATCH_POLICY=m -# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set -CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m -CONFIG_NETFILTER_XT_MATCH_QUOTA=m -CONFIG_NETFILTER_XT_MATCH_RATEEST=m -CONFIG_NETFILTER_XT_MATCH_REALM=m -CONFIG_NETFILTER_XT_MATCH_RECENT=m -CONFIG_NETFILTER_XT_MATCH_SCTP=m -CONFIG_NETFILTER_XT_MATCH_SOCKET=m -CONFIG_NETFILTER_XT_MATCH_STATE=m -CONFIG_NETFILTER_XT_MATCH_STATISTIC=m -CONFIG_NETFILTER_XT_MATCH_STRING=m -CONFIG_NETFILTER_XT_MATCH_TCPMSS=m -CONFIG_NETFILTER_XT_MATCH_TIME=m -CONFIG_NETFILTER_XT_MATCH_U32=m +# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set +CONFIG_NETFILTER_XT_MATCH_BPF=y +# 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 is not set +CONFIG_NETFILTER_XT_MATCH_ECN=y +# CONFIG_NETFILTER_XT_MATCH_ESP is not set +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=y +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 is not set +# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set +# CONFIG_NETFILTER_XT_MATCH_OSF is not set +CONFIG_NETFILTER_XT_MATCH_OWNER=y +CONFIG_NETFILTER_XT_MATCH_POLICY=y +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y +CONFIG_NETFILTER_XT_MATCH_QUOTA=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 # end of Core Netfilter Configuration -CONFIG_IP_SET=m -CONFIG_IP_SET_MAX=256 -# CONFIG_IP_SET_BITMAP_IP is not set -# CONFIG_IP_SET_BITMAP_IPMAC is not set -# CONFIG_IP_SET_BITMAP_PORT is not set -# CONFIG_IP_SET_HASH_IP is not set -# CONFIG_IP_SET_HASH_IPMARK is not set -# CONFIG_IP_SET_HASH_IPPORT is not set -# CONFIG_IP_SET_HASH_IPPORTIP is not set -# CONFIG_IP_SET_HASH_IPPORTNET is not set -# CONFIG_IP_SET_HASH_IPMAC is not set -# CONFIG_IP_SET_HASH_MAC is not set -# CONFIG_IP_SET_HASH_NETPORTNET is not set -# CONFIG_IP_SET_HASH_NET is not set -# CONFIG_IP_SET_HASH_NETNET is not set -# CONFIG_IP_SET_HASH_NETPORT is not set -# CONFIG_IP_SET_HASH_NETIFACE is not set -# CONFIG_IP_SET_LIST_SET is not set -CONFIG_IP_VS=m -# CONFIG_IP_VS_IPV6 is not set -# CONFIG_IP_VS_DEBUG is not set -CONFIG_IP_VS_TAB_BITS=12 - -# -# IPVS transport protocol load balancing support -# -# CONFIG_IP_VS_PROTO_TCP is not set -# CONFIG_IP_VS_PROTO_UDP is not set -# CONFIG_IP_VS_PROTO_ESP is not set -# CONFIG_IP_VS_PROTO_AH is not set -# CONFIG_IP_VS_PROTO_SCTP is not set - -# -# IPVS scheduler -# -# CONFIG_IP_VS_RR is not set -# CONFIG_IP_VS_WRR is not set -# CONFIG_IP_VS_LC is not set -# CONFIG_IP_VS_WLC is not set -# CONFIG_IP_VS_FO is not set -# CONFIG_IP_VS_OVF is not set -# CONFIG_IP_VS_LBLC is not set -# CONFIG_IP_VS_LBLCR is not set -# CONFIG_IP_VS_DH is not set -# CONFIG_IP_VS_SH is not set -# CONFIG_IP_VS_MH is not set -# CONFIG_IP_VS_SED is not set -# CONFIG_IP_VS_NQ is not set -# CONFIG_IP_VS_TWOS is not set - -# -# IPVS SH scheduler -# -CONFIG_IP_VS_SH_TAB_BITS=8 - -# -# IPVS MH scheduler -# -CONFIG_IP_VS_MH_TAB_INDEX=12 - -# -# IPVS application helper -# -# CONFIG_IP_VS_NFCT is not set +# CONFIG_IP_SET is not set +# CONFIG_IP_VS is not set # # IP: Netfilter Configuration # -CONFIG_NF_DEFRAG_IPV4=m -CONFIG_NF_SOCKET_IPV4=m -CONFIG_NF_TPROXY_IPV4=m -# CONFIG_NF_TABLES_IPV4 is not set -# CONFIG_NF_TABLES_ARP is not set -CONFIG_NF_DUP_IPV4=m +CONFIG_NF_DEFRAG_IPV4=y +CONFIG_NF_SOCKET_IPV4=y +CONFIG_NF_TPROXY_IPV4=y +# CONFIG_NF_DUP_IPV4 is not set # CONFIG_NF_LOG_ARP is not set -CONFIG_NF_LOG_IPV4=m -CONFIG_NF_REJECT_IPV4=m -CONFIG_NF_NAT_SNMP_BASIC=m -CONFIG_NF_NAT_PPTP=m -CONFIG_NF_NAT_H323=m -CONFIG_IP_NF_IPTABLES=m -CONFIG_IP_NF_MATCH_AH=m -CONFIG_IP_NF_MATCH_ECN=m -CONFIG_IP_NF_MATCH_RPFILTER=m -CONFIG_IP_NF_MATCH_TTL=m -CONFIG_IP_NF_FILTER=m -CONFIG_IP_NF_TARGET_REJECT=m -CONFIG_IP_NF_TARGET_SYNPROXY=m -CONFIG_IP_NF_NAT=m -CONFIG_IP_NF_TARGET_MASQUERADE=m -CONFIG_IP_NF_TARGET_NETMAP=m -CONFIG_IP_NF_TARGET_REDIRECT=m -CONFIG_IP_NF_MANGLE=m -CONFIG_IP_NF_TARGET_ECN=m -CONFIG_IP_NF_TARGET_TTL=m -CONFIG_IP_NF_RAW=m -CONFIG_IP_NF_ARPTABLES=m -# CONFIG_IP_NF_ARPFILTER is not set -# CONFIG_IP_NF_ARP_MANGLE is not set +# CONFIG_NF_LOG_IPV4 is not set +CONFIG_NF_REJECT_IPV4=y +CONFIG_NF_NAT_PPTP=y +CONFIG_NF_NAT_H323=y +CONFIG_IP_NF_IPTABLES=y +# CONFIG_IP_NF_MATCH_AH is not set +CONFIG_IP_NF_MATCH_ECN=y +# CONFIG_IP_NF_MATCH_RPFILTER is not set +CONFIG_IP_NF_MATCH_TTL=y +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=y +# CONFIG_IP_NF_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_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 # end of IP: Netfilter Configuration # # IPv6: Netfilter Configuration # -CONFIG_NF_SOCKET_IPV6=m -CONFIG_NF_TPROXY_IPV6=m -# CONFIG_NF_TABLES_IPV6 is not set -CONFIG_NF_DUP_IPV6=m -CONFIG_NF_REJECT_IPV6=m -CONFIG_NF_LOG_IPV6=m -CONFIG_IP6_NF_IPTABLES=m +CONFIG_NF_SOCKET_IPV6=y +CONFIG_NF_TPROXY_IPV6=y +# CONFIG_NF_DUP_IPV6 is not set +CONFIG_NF_REJECT_IPV6=y +# CONFIG_NF_LOG_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 @@ -1315,34 +1272,32 @@ CONFIG_IP6_NF_IPTABLES=m # 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_MATCH_SRH is not set -# CONFIG_IP6_NF_FILTER 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 is not set -# CONFIG_IP6_NF_RAW 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 # end of IPv6: Netfilter Configuration -CONFIG_NF_DEFRAG_IPV6=m -# CONFIG_NF_TABLES_BRIDGE is not set +CONFIG_NF_DEFRAG_IPV6=y # CONFIG_NF_CONNTRACK_BRIDGE is not set -# CONFIG_BRIDGE_NF_EBTABLES is not set # CONFIG_BPFILTER 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 is not set -CONFIG_STP=m -CONFIG_BRIDGE=m -CONFIG_BRIDGE_IGMP_SNOOPING=y -# CONFIG_BRIDGE_MRP is not set -# CONFIG_BRIDGE_CFM is not set +CONFIG_L2TP=y +# CONFIG_L2TP_V3 is not set +# CONFIG_BRIDGE is not set # CONFIG_NET_DSA is not set # CONFIG_VLAN_8021Q is not set -CONFIG_LLC=m # CONFIG_LLC2 is not set # CONFIG_ATALK is not set # CONFIG_X25 is not set @@ -1350,13 +1305,92 @@ CONFIG_LLC=m # CONFIG_PHONET is not set # CONFIG_6LOWPAN is not set # CONFIG_IEEE802154 is not set -# CONFIG_NET_SCHED is not set +CONFIG_NET_SCHED=y + +# +# Queueing/Scheduling +# +CONFIG_NET_SCH_HTB=y +# CONFIG_NET_SCH_HFSC is not set +# CONFIG_NET_SCH_PRIO is not set +# CONFIG_NET_SCH_MULTIQ is not set +# 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_CBS is not set +# CONFIG_NET_SCH_ETF is not set +# CONFIG_NET_SCH_TAPRIO is not set +# CONFIG_NET_SCH_GRED 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_SKBPRIO 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_CAKE 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 +# CONFIG_NET_SCH_ETS is not set +# CONFIG_NET_SCH_DEFAULT is not set + +# +# Classification +# +CONFIG_NET_CLS=y +# CONFIG_NET_CLS_BASIC is not set +# CONFIG_NET_CLS_ROUTE4 is not set +# CONFIG_NET_CLS_FW is not set +CONFIG_NET_CLS_U32=y +# CONFIG_CLS_U32_PERF is not set +# CONFIG_CLS_U32_MARK is not set +# CONFIG_NET_CLS_FLOW is not set +# CONFIG_NET_CLS_CGROUP is not set +CONFIG_NET_CLS_BPF=y +# CONFIG_NET_CLS_FLOWER is not set +# CONFIG_NET_CLS_MATCHALL is not set +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_STACK=32 +# CONFIG_NET_EMATCH_CMP is not set +# CONFIG_NET_EMATCH_NBYTE is not set +CONFIG_NET_EMATCH_U32=y +# CONFIG_NET_EMATCH_META is not set +# CONFIG_NET_EMATCH_TEXT is not set +# CONFIG_NET_EMATCH_IPT is not set +CONFIG_NET_CLS_ACT=y +# CONFIG_NET_ACT_POLICE is not set +# CONFIG_NET_ACT_GACT is not set +# CONFIG_NET_ACT_MIRRED is not set +# CONFIG_NET_ACT_SAMPLE is not set +# CONFIG_NET_ACT_IPT is not set +# 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_ACT_MPLS is not set +# CONFIG_NET_ACT_VLAN is not set +# CONFIG_NET_ACT_BPF is not set +# CONFIG_NET_ACT_CONNMARK is not set +# CONFIG_NET_ACT_CTINFO is not set +# CONFIG_NET_ACT_SKBMOD is not set +# CONFIG_NET_ACT_IFE is not set +# CONFIG_NET_ACT_TUNNEL_KEY is not set +# CONFIG_NET_ACT_GATE is not set +# CONFIG_NET_TC_SKB_EXT is not set +CONFIG_NET_SCH_FIFO=y # CONFIG_DCB is not set -# CONFIG_DNS_RESOLVER is not set +CONFIG_DNS_RESOLVER=y # CONFIG_BATMAN_ADV is not set # CONFIG_OPENVSWITCH is not set # CONFIG_VSOCKETS is not set -# CONFIG_NETLINK_DIAG is not set +CONFIG_NETLINK_DIAG=y # CONFIG_MPLS is not set # CONFIG_NET_NSH is not set # CONFIG_HSR is not set @@ -1371,9 +1405,10 @@ CONFIG_RFS_ACCEL=y CONFIG_SOCK_RX_QUEUE_MAPPING=y CONFIG_XPS=y # CONFIG_CGROUP_NET_PRIO is not set -CONFIG_CGROUP_NET_CLASSID=y +# CONFIG_CGROUP_NET_CLASSID is not set CONFIG_NET_RX_BUSY_POLL=y CONFIG_BQL=y +# CONFIG_BPF_STREAM_PARSER is not set CONFIG_NET_FLOW_LIMIT=y # @@ -1385,61 +1420,56 @@ CONFIG_NET_FLOW_LIMIT=y # end of Networking options # CONFIG_HAMRADIO is not set -CONFIG_CAN=y -CONFIG_CAN_RAW=y -CONFIG_CAN_BCM=y -CONFIG_CAN_GW=y -# CONFIG_CAN_J1939 is not set -# CONFIG_CAN_ISOTP is not set +# CONFIG_CAN is not set CONFIG_BT=y CONFIG_BT_BREDR=y CONFIG_BT_RFCOMM=y -# CONFIG_BT_RFCOMM_TTY is not set -# CONFIG_BT_BNEP is not set +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=y +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y CONFIG_BT_HIDP=y CONFIG_BT_HS=y CONFIG_BT_LE=y CONFIG_BT_LE_L2CAP_ECRED=y -# CONFIG_BT_LEDS is not set -# CONFIG_BT_MSFTEXT is not set -# CONFIG_BT_AOSPEXT is not set -CONFIG_BT_DEBUGFS=y +CONFIG_BT_LEDS=y +CONFIG_BT_MSFTEXT=y +CONFIG_BT_AOSPEXT=y # CONFIG_BT_SELFTEST is not set +# CONFIG_BT_FEATURE_DEBUG is not set # # Bluetooth device drivers # CONFIG_BT_INTEL=y -CONFIG_BT_BCM=y CONFIG_BT_RTL=y CONFIG_BT_HCIBTUSB=y # CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set CONFIG_BT_HCIBTUSB_POLL_SYNC=y -CONFIG_BT_HCIBTUSB_BCM=y +# CONFIG_BT_HCIBTUSB_BCM is not set # CONFIG_BT_HCIBTUSB_MTK is not set CONFIG_BT_HCIBTUSB_RTL=y # CONFIG_BT_HCIBTSDIO is not set CONFIG_BT_HCIUART=y CONFIG_BT_HCIUART_SERDEV=y -CONFIG_BT_HCIUART_H4=y +# CONFIG_BT_HCIUART_H4 is not set # CONFIG_BT_HCIUART_NOKIA is not set # CONFIG_BT_HCIUART_BCSP is not set -CONFIG_BT_HCIUART_ATH3K=y +# CONFIG_BT_HCIUART_ATH3K is not set # CONFIG_BT_HCIUART_LL is not set CONFIG_BT_HCIUART_3WIRE=y # CONFIG_BT_HCIUART_INTEL is not set -CONFIG_BT_HCIUART_BCM=y -# CONFIG_BT_HCIUART_RTL is not set +# CONFIG_BT_HCIUART_BCM is not set +CONFIG_BT_HCIUART_RTL=y # CONFIG_BT_HCIUART_QCA is not set # CONFIG_BT_HCIUART_AG6XX is not set # CONFIG_BT_HCIUART_MRVL is not set # CONFIG_BT_HCIBCM203X is not set # CONFIG_BT_HCIBCM4377 is not set # CONFIG_BT_HCIBPA10X is not set -CONFIG_BT_HCIBFUSB=y -CONFIG_BT_HCIVHCI=y -CONFIG_BT_MRVL=y -CONFIG_BT_MRVL_SDIO=y +# CONFIG_BT_HCIBFUSB is not set +# CONFIG_BT_HCIVHCI is not set +# CONFIG_BT_MRVL is not set # CONFIG_BT_ATH3K is not set # CONFIG_BT_MTKSDIO is not set # CONFIG_BT_MTKUART is not set @@ -1454,13 +1484,12 @@ CONFIG_WIRELESS=y CONFIG_WEXT_CORE=y CONFIG_WEXT_PROC=y CONFIG_CFG80211=y -CONFIG_NL80211_TESTMODE=y +# CONFIG_NL80211_TESTMODE is not set # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set # CONFIG_CFG80211_CERTIFICATION_ONUS is not set CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y CONFIG_CFG80211_DEFAULT_PS=y -CONFIG_CFG80211_DEBUGFS=y CONFIG_CFG80211_CRDA_SUPPORT=y CONFIG_CFG80211_WEXT=y CONFIG_MAC80211=y @@ -1468,39 +1497,28 @@ CONFIG_MAC80211_HAS_RC=y CONFIG_MAC80211_RC_MINSTREL=y CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" -# CONFIG_MAC80211_MESH is not set +CONFIG_MAC80211_MESH=y CONFIG_MAC80211_LEDS=y -CONFIG_MAC80211_DEBUGFS=y # CONFIG_MAC80211_MESSAGE_TRACING is not set -CONFIG_MAC80211_DEBUG_MENU=y -# CONFIG_MAC80211_NOINLINE is not set -CONFIG_MAC80211_VERBOSE_DEBUG=y -# CONFIG_MAC80211_MLME_DEBUG is not set -# CONFIG_MAC80211_STA_DEBUG is not set -# CONFIG_MAC80211_HT_DEBUG is not set -# CONFIG_MAC80211_OCB_DEBUG is not set -# CONFIG_MAC80211_IBSS_DEBUG is not set -# CONFIG_MAC80211_PS_DEBUG is not set -# CONFIG_MAC80211_TDLS_DEBUG is not set -# CONFIG_MAC80211_DEBUG_COUNTERS is not set +# CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 CONFIG_RFKILL=y CONFIG_RFKILL_LEDS=y -# CONFIG_RFKILL_INPUT is not set -# CONFIG_RFKILL_GPIO is not set +CONFIG_RFKILL_INPUT=y +CONFIG_RFKILL_GPIO=y # CONFIG_NET_9P is not set # CONFIG_CAIF is not set # CONFIG_CEPH_LIB is not set # CONFIG_NFC is not set # CONFIG_PSAMPLE is not set # CONFIG_NET_IFE is not set -CONFIG_LWTUNNEL=y -CONFIG_LWTUNNEL_BPF=y +# CONFIG_LWTUNNEL is not set CONFIG_DST_CACHE=y CONFIG_GRO_CELLS=y CONFIG_NET_SELFTESTS=y +CONFIG_NET_SOCK_MSG=y CONFIG_PAGE_POOL=y -# CONFIG_PAGE_POOL_STATS is not set +CONFIG_PAGE_POOL_STATS=y # CONFIG_FAILOVER is not set CONFIG_ETHTOOL_NETLINK=y @@ -1513,17 +1531,12 @@ CONFIG_PCI=y CONFIG_PCI_DOMAINS=y CONFIG_PCI_DOMAINS_GENERIC=y CONFIG_PCI_SYSCALL=y -CONFIG_PCIEPORTBUS=y -CONFIG_PCIEAER=y -# CONFIG_PCIEAER_INJECT is not set -# CONFIG_PCIE_ECRC is not set +# CONFIG_PCIEPORTBUS is not set CONFIG_PCIEASPM=y CONFIG_PCIEASPM_DEFAULT=y # CONFIG_PCIEASPM_POWERSAVE is not set # CONFIG_PCIEASPM_POWER_SUPERSAVE is not set # CONFIG_PCIEASPM_PERFORMANCE is not set -CONFIG_PCIE_PME=y -# CONFIG_PCIE_DPC is not set # CONFIG_PCIE_PTM is not set CONFIG_PCI_MSI=y CONFIG_PCI_QUIRKS=y @@ -1538,7 +1551,8 @@ CONFIG_PCIE_BUS_DEFAULT=y # CONFIG_PCIE_BUS_SAFE is not set # CONFIG_PCIE_BUS_PERFORMANCE is not set # CONFIG_PCIE_BUS_PEER2PEER is not set -# CONFIG_VGA_ARB is not set +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 # CONFIG_HOTPLUG_PCI is not set # @@ -1612,11 +1626,10 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y # Firmware loader # CONFIG_FW_LOADER=y -CONFIG_FW_LOADER_DEBUG=y CONFIG_EXTRA_FIRMWARE="" # CONFIG_FW_LOADER_USER_HELPER is not set # CONFIG_FW_LOADER_COMPRESS is not set -CONFIG_FW_CACHE=y +# CONFIG_FW_CACHE is not set # CONFIG_FW_UPLOAD is not set # end of Firmware loader @@ -1624,7 +1637,7 @@ CONFIG_WANT_DEV_COREDUMP=y CONFIG_ALLOW_DEV_COREDUMP=y CONFIG_DEV_COREDUMP=y # CONFIG_DEBUG_DRIVER is not set -CONFIG_DEBUG_DEVRES=y +# CONFIG_DEBUG_DEVRES is not set # CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set # CONFIG_TEST_ASYNC_DRIVER_PROBE is not set CONFIG_GENERIC_CPU_AUTOPROBE=y @@ -1667,20 +1680,23 @@ CONFIG_PROC_EVENTS=y # ARM System Control and Management Interface Protocol # CONFIG_ARM_SCMI_PROTOCOL=y -# CONFIG_ARM_SCMI_RAW_MODE_SUPPORT is not set CONFIG_ARM_SCMI_HAVE_TRANSPORT=y CONFIG_ARM_SCMI_HAVE_SHMEM=y +CONFIG_ARM_SCMI_HAVE_MSG=y CONFIG_ARM_SCMI_TRANSPORT_MAILBOX=y +CONFIG_ARM_SCMI_TRANSPORT_OPTEE=y CONFIG_ARM_SCMI_TRANSPORT_SMC=y # CONFIG_ARM_SCMI_TRANSPORT_SMC_ATOMIC_ENABLE is not set CONFIG_ARM_SCMI_POWER_DOMAIN=y CONFIG_ARM_SCMI_POWER_CONTROL=y # end of ARM System Control and Management Interface Protocol -# CONFIG_ARM_SCPI_PROTOCOL is not set -# CONFIG_FIRMWARE_MEMMAP is not set +CONFIG_ARM_SCPI_PROTOCOL=y +CONFIG_ARM_SCPI_POWER_DOMAIN=y +CONFIG_FIRMWARE_MEMMAP=y # CONFIG_FW_CFG_SYSFS is not set -# CONFIG_ARM_FFA_TRANSPORT is not set +CONFIG_ARM_FFA_TRANSPORT=y +CONFIG_ARM_FFA_SMCCC=y # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_ARM_PSCI_FW=y # CONFIG_ARM_PSCI_CHECKER is not set @@ -1702,7 +1718,7 @@ CONFIG_MTD=y # Partition parsers # # CONFIG_MTD_AR7_PARTS is not set -CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_CMDLINE_PARTS is not set CONFIG_MTD_OF_PARTS=y # CONFIG_MTD_AFS_PARTS is not set # CONFIG_MTD_REDBOOT_PARTS is not set @@ -1791,13 +1807,12 @@ CONFIG_MTD_CFI_I2=y # CONFIG_MTD_LPDDR is not set # end of LPDDR & LPDDR2 PCM memory drivers -# CONFIG_MTD_SPI_NOR is not set -CONFIG_MTD_UBI=y -CONFIG_MTD_UBI_WL_THRESHOLD=4096 -CONFIG_MTD_UBI_BEB_LIMIT=20 -# CONFIG_MTD_UBI_FASTMAP is not set -# CONFIG_MTD_UBI_GLUEBI is not set -# CONFIG_MTD_UBI_BLOCK is not set +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y +# CONFIG_MTD_SPI_NOR_SWP_DISABLE is not set +CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y +# CONFIG_MTD_SPI_NOR_SWP_KEEP is not set +# CONFIG_MTD_UBI is not set # CONFIG_MTD_HYPERBUS is not set CONFIG_DTC=y CONFIG_OF=y @@ -1805,10 +1820,12 @@ CONFIG_OF=y CONFIG_OF_FLATTREE=y CONFIG_OF_EARLY_FLATTREE=y CONFIG_OF_KOBJ=y +CONFIG_OF_DYNAMIC=y CONFIG_OF_ADDRESS=y CONFIG_OF_IRQ=y CONFIG_OF_RESERVED_MEM=y -# CONFIG_OF_OVERLAY is not set +CONFIG_OF_RESOLVE=y +CONFIG_OF_OVERLAY=y # CONFIG_PARPORT is not set CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_NULL_BLK is not set @@ -1817,13 +1834,14 @@ CONFIG_CDROM=y CONFIG_ZRAM=y CONFIG_ZRAM_DEF_COMP_LZORLE=y # CONFIG_ZRAM_DEF_COMP_ZSTD is not set +# CONFIG_ZRAM_DEF_COMP_LZ4 is not set # CONFIG_ZRAM_DEF_COMP_LZO is not set +# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set CONFIG_ZRAM_DEF_COMP="lzo-rle" # CONFIG_ZRAM_WRITEBACK is not set -# CONFIG_ZRAM_MEMORY_TRACKING is not set # CONFIG_ZRAM_MULTI_COMP is not set CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +CONFIG_BLK_DEV_LOOP_MIN_COUNT=16 # CONFIG_BLK_DEV_DRBD is not set # CONFIG_BLK_DEV_NBD is not set CONFIG_BLK_DEV_RAM=y @@ -1837,14 +1855,9 @@ CONFIG_BLK_DEV_RAM_SIZE=4096 # # NVME Support # -CONFIG_NVME_CORE=y -CONFIG_BLK_DEV_NVME=y -# CONFIG_NVME_MULTIPATH is not set -# CONFIG_NVME_VERBOSE_ERRORS is not set -# CONFIG_NVME_HWMON is not set +# CONFIG_BLK_DEV_NVME is not set # CONFIG_NVME_FC is not set # CONFIG_NVME_TCP is not set -# CONFIG_NVME_AUTH is not set # CONFIG_NVME_TARGET is not set # end of NVME Support @@ -1883,7 +1896,7 @@ CONFIG_SRAM=y # 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_93CX6=y # CONFIG_EEPROM_93XX46 is not set # CONFIG_EEPROM_IDT_89HPESX is not set # CONFIG_EEPROM_EE1004 is not set @@ -1938,7 +1951,7 @@ CONFIG_SCSI_SCAN_ASYNC=y # # SCSI Transports # -CONFIG_SCSI_SPI_ATTRS=y +# 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 @@ -1946,82 +1959,45 @@ CONFIG_SCSI_SPI_ATTRS=y # CONFIG_SCSI_SRP_ATTRS is not set # end of SCSI Transports -CONFIG_SCSI_LOWLEVEL=y -# CONFIG_ISCSI_TCP is not set -# CONFIG_ISCSI_BOOT_SYSFS is not set -# CONFIG_SCSI_CXGB3_ISCSI is not set -# CONFIG_SCSI_CXGB4_ISCSI is not set -# CONFIG_SCSI_BNX2_ISCSI is not set -# CONFIG_BE2ISCSI is not set -# CONFIG_BLK_DEV_3W_XXXX_RAID is not set -# CONFIG_SCSI_HPSA is not set -# CONFIG_SCSI_3W_9XXX is not set -# CONFIG_SCSI_3W_SAS is not set -# CONFIG_SCSI_ACARD is not set -# CONFIG_SCSI_AACRAID is not set -# CONFIG_SCSI_AIC7XXX is not set -# CONFIG_SCSI_AIC79XX is not set -# CONFIG_SCSI_AIC94XX is not set -# CONFIG_SCSI_HISI_SAS is not set -# CONFIG_SCSI_MVSAS is not set -# CONFIG_SCSI_MVUMI is not set -# CONFIG_SCSI_ADVANSYS is not set -# CONFIG_SCSI_ARCMSR is not set -# CONFIG_SCSI_ESAS2R is not set -# CONFIG_MEGARAID_NEWGEN is not set -# CONFIG_MEGARAID_LEGACY is not set -# CONFIG_MEGARAID_SAS is not set -# CONFIG_SCSI_MPT3SAS is not set -# CONFIG_SCSI_MPT2SAS is not set -# CONFIG_SCSI_MPI3MR is not set -# CONFIG_SCSI_SMARTPQI is not set -# CONFIG_SCSI_HPTIOP is not set -# CONFIG_SCSI_BUSLOGIC is not set -# CONFIG_SCSI_MYRB is not set -# CONFIG_SCSI_MYRS is not set -# CONFIG_SCSI_SNIC is not set -# CONFIG_SCSI_DMX3191D is not set -# CONFIG_SCSI_FDOMAIN_PCI is not set -# CONFIG_SCSI_IPS is not set -# CONFIG_SCSI_INITIO is not set -# CONFIG_SCSI_INIA100 is not set -# CONFIG_SCSI_STEX is not set -# CONFIG_SCSI_SYM53C8XX_2 is not set -# CONFIG_SCSI_IPR is not set -# CONFIG_SCSI_QLOGIC_1280 is not set -# CONFIG_SCSI_QLA_ISCSI is not set -# CONFIG_SCSI_DC395x is not set -# CONFIG_SCSI_AM53C974 is not set -# CONFIG_SCSI_WD719X is not set -# CONFIG_SCSI_DEBUG is not set -# CONFIG_SCSI_PMCRAID is not set -# CONFIG_SCSI_PM8001 is not set +# CONFIG_SCSI_LOWLEVEL is not set # CONFIG_SCSI_DH is not set # end of SCSI device support -CONFIG_ATA=y -CONFIG_SATA_HOST=y -CONFIG_ATA_VERBOSE_ERROR=y -CONFIG_ATA_FORCE=y -CONFIG_SATA_PMP=y - -# -# Controllers with non-SFF native interface -# -CONFIG_SATA_AHCI=y -CONFIG_SATA_MOBILE_LPM_POLICY=0 -CONFIG_SATA_AHCI_PLATFORM=y -# CONFIG_AHCI_DWC is not set -# CONFIG_AHCI_CEVA is not set -# CONFIG_SATA_INIC162X is not set -# CONFIG_SATA_ACARD_AHCI is not set -# CONFIG_SATA_SIL24 is not set -# CONFIG_ATA_SFF is not set +# CONFIG_ATA is not set CONFIG_MD=y # CONFIG_BLK_DEV_MD is not set -CONFIG_MD_BITMAP_FILE=y +# CONFIG_MD_BITMAP_FILE is not set # CONFIG_BCACHE is not set -# CONFIG_BLK_DEV_DM 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_DEBUG_BLOCK_MANAGER_LOCKING is not set +# CONFIG_DM_UNSTRIPED is not set +CONFIG_DM_CRYPT=y +CONFIG_DM_SNAPSHOT=y +# CONFIG_DM_THIN_PROVISIONING is not set +# CONFIG_DM_CACHE is not set +# CONFIG_DM_WRITECACHE is not set +# CONFIG_DM_EBS is not set +# CONFIG_DM_ERA is not set +# CONFIG_DM_CLONE 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_DUST is not set +# CONFIG_DM_INIT is not set +# CONFIG_DM_UEVENT is not set +# CONFIG_DM_FLAKEY is not set +CONFIG_DM_VERITY=y +CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y +CONFIG_DM_VERITY_FEC=y +# CONFIG_DM_SWITCH is not set +# CONFIG_DM_LOG_WRITES is not set +# CONFIG_DM_INTEGRITY is not set +# CONFIG_DM_AUDIT is not set # CONFIG_TARGET_CORE is not set # CONFIG_FUSION is not set @@ -2036,7 +2012,7 @@ CONFIG_NETDEVICES=y CONFIG_MII=y CONFIG_NET_CORE=y # CONFIG_BONDING is not set -# CONFIG_DUMMY is not set +CONFIG_DUMMY=y # CONFIG_WIREGUARD is not set # CONFIG_EQUALIZER is not set # CONFIG_NET_FC is not set @@ -2052,120 +2028,132 @@ CONFIG_NET_CORE=y # CONFIG_NETCONSOLE is not set CONFIG_TUN=y # CONFIG_TUN_VNET_CROSS_LE is not set -# CONFIG_VETH is not set +CONFIG_VETH=y # CONFIG_NLMON is not set # CONFIG_ARCNET is not set CONFIG_ETHERNET=y -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_NET_VENDOR_ADAPTEC is not set -# CONFIG_NET_VENDOR_AGERE is not set -CONFIG_NET_VENDOR_ALACRITECH=y -# CONFIG_SLICOSS is not set -# CONFIG_NET_VENDOR_ALTEON is not set +CONFIG_NET_VENDOR_3COM=y +# CONFIG_VORTEX is not set +# CONFIG_TYPHOON is not set +CONFIG_NET_VENDOR_ADAPTEC=y +# CONFIG_ADAPTEC_STARFIRE is not set +CONFIG_NET_VENDOR_AGERE=y +# CONFIG_ET131X is not set +# CONFIG_NET_VENDOR_ALACRITECH is not set +CONFIG_NET_VENDOR_ALTEON=y +# CONFIG_ACENIC is not set # CONFIG_ALTERA_TSE is not set -CONFIG_NET_VENDOR_AMAZON=y -# CONFIG_ENA_ETHERNET is not set +# CONFIG_NET_VENDOR_AMAZON is not set # CONFIG_NET_VENDOR_AMD is not set -CONFIG_NET_VENDOR_AQUANTIA=y -# CONFIG_AQTION is not set +# CONFIG_NET_VENDOR_AQUANTIA is not set # CONFIG_NET_VENDOR_ARC is not set CONFIG_NET_VENDOR_ASIX=y # CONFIG_SPI_AX88796C is not set -# CONFIG_NET_VENDOR_ATHEROS is not set +CONFIG_NET_VENDOR_ATHEROS=y +# CONFIG_ATL2 is not set +# CONFIG_ATL1 is not set +# CONFIG_ATL1E is not set +# CONFIG_ATL1C is not set +# CONFIG_ALX is not set # CONFIG_NET_VENDOR_BROADCOM is not set -CONFIG_NET_VENDOR_CADENCE=y -# CONFIG_MACB is not set +# CONFIG_NET_VENDOR_CADENCE is not set # CONFIG_NET_VENDOR_CAVIUM is not set -# CONFIG_NET_VENDOR_CHELSIO is not set -# CONFIG_NET_VENDOR_CISCO is not set -CONFIG_NET_VENDOR_CORTINA=y -# CONFIG_GEMINI_ETHERNET is not set +CONFIG_NET_VENDOR_CHELSIO=y +# CONFIG_CHELSIO_T1 is not set +# CONFIG_CHELSIO_T3 is not set +# CONFIG_CHELSIO_T4 is not set +# CONFIG_CHELSIO_T4VF is not set +CONFIG_NET_VENDOR_CISCO=y +# CONFIG_ENIC is not set +# CONFIG_NET_VENDOR_CORTINA is not set CONFIG_NET_VENDOR_DAVICOM=y # CONFIG_DM9051 is not set # CONFIG_DNET is not set -# CONFIG_NET_VENDOR_DEC is not set -# CONFIG_NET_VENDOR_DLINK is not set -# CONFIG_NET_VENDOR_EMULEX is not set -CONFIG_NET_VENDOR_ENGLEDER=y -# CONFIG_TSNEP is not set +CONFIG_NET_VENDOR_DEC=y +# CONFIG_NET_TULIP is not set +CONFIG_NET_VENDOR_DLINK=y +# CONFIG_DL2K is not set +# CONFIG_SUNDANCE is not set +CONFIG_NET_VENDOR_EMULEX=y +# CONFIG_BE2NET is not set +# CONFIG_NET_VENDOR_ENGLEDER is not set # CONFIG_NET_VENDOR_EZCHIP is not set CONFIG_NET_VENDOR_FUNGIBLE=y # CONFIG_FUN_ETH is not set -CONFIG_NET_VENDOR_GOOGLE=y -# CONFIG_GVE is not set +# CONFIG_NET_VENDOR_GOOGLE is not set # CONFIG_NET_VENDOR_HISILICON is not set -CONFIG_NET_VENDOR_HUAWEI=y -# CONFIG_HINIC is not set +# CONFIG_NET_VENDOR_HUAWEI is not set # CONFIG_NET_VENDOR_INTEL is not set # CONFIG_JME is not set CONFIG_NET_VENDOR_ADI=y -CONFIG_NET_VENDOR_LITEX=y -# CONFIG_LITEX_LITEETH is not set +# CONFIG_NET_VENDOR_LITEX is not set # CONFIG_NET_VENDOR_MARVELL is not set # CONFIG_NET_VENDOR_MELLANOX is not set # CONFIG_NET_VENDOR_MICREL is not set # CONFIG_NET_VENDOR_MICROCHIP is not set -CONFIG_NET_VENDOR_MICROSEMI=y +# CONFIG_NET_VENDOR_MICROSEMI is not set CONFIG_NET_VENDOR_MICROSOFT=y -# CONFIG_NET_VENDOR_MYRI is not set +CONFIG_NET_VENDOR_MYRI=y +# CONFIG_MYRI10GE is not set # CONFIG_FEALNX is not set -CONFIG_NET_VENDOR_NI=y -# CONFIG_NI_XGE_MANAGEMENT_ENET is not set +# CONFIG_NET_VENDOR_NI is not set # CONFIG_NET_VENDOR_NATSEMI is not set CONFIG_NET_VENDOR_NETERION=y # CONFIG_S2IO is not set -CONFIG_NET_VENDOR_NETRONOME=y -# CONFIG_NFP is not set -# CONFIG_NET_VENDOR_NVIDIA is not set -# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_NET_VENDOR_NETRONOME is not set +CONFIG_NET_VENDOR_NVIDIA=y +# CONFIG_FORCEDETH is not set +CONFIG_NET_VENDOR_OKI=y # CONFIG_ETHOC is not set CONFIG_NET_VENDOR_PACKET_ENGINES=y # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set -CONFIG_NET_VENDOR_PENSANDO=y -# CONFIG_IONIC is not set -# CONFIG_NET_VENDOR_QLOGIC is not set -# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_PENSANDO is not set +CONFIG_NET_VENDOR_QLOGIC=y +# CONFIG_QLA3XXX is not set +# CONFIG_QLCNIC is not set +# CONFIG_NETXEN_NIC is not set +# CONFIG_QED is not set +CONFIG_NET_VENDOR_BROCADE=y +# CONFIG_BNA is not set # CONFIG_NET_VENDOR_QUALCOMM is not set -# CONFIG_NET_VENDOR_RDC is not set -# CONFIG_NET_VENDOR_REALTEK is not set +CONFIG_NET_VENDOR_RDC=y +# CONFIG_R6040 is not set +CONFIG_NET_VENDOR_REALTEK=y +# CONFIG_8139CP is not set +# CONFIG_8139TOO is not set +# CONFIG_R8169 is not set # CONFIG_NET_VENDOR_RENESAS is not set # CONFIG_NET_VENDOR_ROCKER is not set # CONFIG_NET_VENDOR_SAMSUNG is not set # CONFIG_NET_VENDOR_SEEQ is not set -# CONFIG_NET_VENDOR_SILAN is not set -# CONFIG_NET_VENDOR_SIS is not set -CONFIG_NET_VENDOR_SOLARFLARE=y -# CONFIG_SFC is not set -# CONFIG_SFC_FALCON is not set -# CONFIG_SFC_SIENA is not set +CONFIG_NET_VENDOR_SILAN=y +# CONFIG_SC92031 is not set +CONFIG_NET_VENDOR_SIS=y +# CONFIG_SIS900 is not set +# CONFIG_SIS190 is not set +# CONFIG_NET_VENDOR_SOLARFLARE is not set # CONFIG_NET_VENDOR_SMSC is not set -CONFIG_NET_VENDOR_SOCIONEXT=y -CONFIG_NET_VENDOR_STMICRO=y -CONFIG_STMMAC_ETH=y -# CONFIG_STMMAC_SELFTESTS is not set -CONFIG_STMMAC_PLATFORM=y -# CONFIG_DWMAC_DWC_QOS_ETH is not set -CONFIG_DWMAC_GENERIC=y -CONFIG_DWMAC_ROCKCHIP=y -# CONFIG_DWMAC_INTEL_PLAT is not set -# CONFIG_DWMAC_LOONGSON is not set -# CONFIG_STMMAC_PCI is not set -# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_SOCIONEXT is not set +# CONFIG_NET_VENDOR_STMICRO is not set +CONFIG_NET_VENDOR_SUN=y +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNGEM is not set +# CONFIG_CASSINI is not set +# CONFIG_NIU is not set # CONFIG_NET_VENDOR_SYNOPSYS is not set -# CONFIG_NET_VENDOR_TEHUTI is not set -# CONFIG_NET_VENDOR_TI is not set -CONFIG_NET_VENDOR_VERTEXCOM=y -# CONFIG_MSE102X is not set +CONFIG_NET_VENDOR_TEHUTI=y +# CONFIG_TEHUTI is not set +CONFIG_NET_VENDOR_TI=y +# CONFIG_TI_CPSW_PHY_SEL is not set +# CONFIG_TLAN is not set +# CONFIG_NET_VENDOR_VERTEXCOM is not set # CONFIG_NET_VENDOR_VIA is not set CONFIG_NET_VENDOR_WANGXUN=y # CONFIG_NGBE is not set # CONFIG_TXGBE is not set # CONFIG_NET_VENDOR_WIZNET is not set -CONFIG_NET_VENDOR_XILINX=y -# CONFIG_XILINX_EMACLITE is not set -# CONFIG_XILINX_AXI_EMAC is not set -# CONFIG_XILINX_LL_TEMAC is not set +# CONFIG_NET_VENDOR_XILINX is not set # CONFIG_FDDI is not set # CONFIG_HIPPI is not set CONFIG_PHYLINK=y @@ -2217,7 +2205,7 @@ CONFIG_AX88796B_PHY=y # CONFIG_QSEMI_PHY is not set # CONFIG_REALTEK_PHY is not set # CONFIG_RENESAS_PHY is not set -CONFIG_ROCKCHIP_PHY=y +# CONFIG_ROCKCHIP_PHY is not set # CONFIG_SMSC_PHY is not set # CONFIG_STE10XP is not set # CONFIG_TERANETICS_PHY is not set @@ -2231,51 +2219,6 @@ CONFIG_ROCKCHIP_PHY=y # CONFIG_XILINX_GMII2RGMII is not set # CONFIG_MICREL_KS8995MA is not set # CONFIG_PSE_CONTROLLER is not set -CONFIG_CAN_DEV=y -# CONFIG_CAN_VCAN is not set -# CONFIG_CAN_VXCAN is not set -CONFIG_CAN_NETLINK=y -CONFIG_CAN_CALC_BITTIMING=y -# CONFIG_CAN_CAN327 is not set -# CONFIG_CAN_FLEXCAN is not set -# CONFIG_CAN_GRCAN is not set -# CONFIG_CAN_KVASER_PCIEFD is not set -# CONFIG_CAN_SLCAN is not set -# CONFIG_CAN_XILINXCAN is not set -# CONFIG_CAN_C_CAN is not set -# CONFIG_CAN_CC770 is not set -# CONFIG_CAN_CTUCANFD_PCI is not set -# CONFIG_CAN_CTUCANFD_PLATFORM is not set -# CONFIG_CAN_IFI_CANFD is not set -# CONFIG_CAN_M_CAN is not set -# CONFIG_CAN_PEAK_PCIEFD is not set -# CONFIG_CAN_SJA1000 is not set -# CONFIG_CAN_SOFTING is not set - -# -# CAN SPI interfaces -# -# CONFIG_CAN_HI311X is not set -# CONFIG_CAN_MCP251X is not set -# CONFIG_CAN_MCP251XFD is not set -# end of CAN SPI interfaces - -# -# CAN USB interfaces -# -# CONFIG_CAN_8DEV_USB is not set -# CONFIG_CAN_EMS_USB is not set -# CONFIG_CAN_ESD_USB is not set -# CONFIG_CAN_ETAS_ES58X is not set -# CONFIG_CAN_F81604 is not set -# CONFIG_CAN_GS_USB is not set -# CONFIG_CAN_KVASER_USB is not set -# CONFIG_CAN_MCBA_USB is not set -# CONFIG_CAN_PEAK_USB is not set -# CONFIG_CAN_UCAN is not set -# end of CAN USB interfaces - -# CONFIG_CAN_DEBUG_DEVICES is not set CONFIG_MDIO_DEVICE=y CONFIG_MDIO_BUS=y CONFIG_FWNODE_MDIO=y @@ -2301,28 +2244,39 @@ CONFIG_MDIO_DEVRES=y # # PCS device drivers # -CONFIG_PCS_XPCS=y # end of PCS device drivers -# CONFIG_PPP is not set +CONFIG_PPP=y +CONFIG_PPP_BSDCOMP=y +CONFIG_PPP_DEFLATE=y +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_MPPE=y +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPPOE is not set +CONFIG_PPPOE_HASH_BITS=4 +CONFIG_PPTP=y +CONFIG_PPPOL2TP=y +# CONFIG_PPP_ASYNC is not set +# CONFIG_PPP_SYNC_TTY is not set # 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=y -CONFIG_USB_RTL8152=y +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_RTL8152 is not set # CONFIG_USB_LAN78XX is not set CONFIG_USB_USBNET=y CONFIG_USB_NET_AX8817X=y CONFIG_USB_NET_AX88179_178A=y -CONFIG_USB_NET_CDCETHER=y +# CONFIG_USB_NET_CDCETHER is not set # CONFIG_USB_NET_CDC_EEM is not set -CONFIG_USB_NET_CDC_NCM=y +# CONFIG_USB_NET_CDC_NCM is not set # CONFIG_USB_NET_HUAWEI_CDC_NCM is not set -CONFIG_USB_NET_CDC_MBIM=y -# CONFIG_USB_NET_DM9601 is not set -# CONFIG_USB_NET_SR9700 is not set +# CONFIG_USB_NET_CDC_MBIM is not set +CONFIG_USB_NET_DM9601=y +CONFIG_USB_NET_SR9700=y # CONFIG_USB_NET_SR9800 is not set # CONFIG_USB_NET_SMSC75XX is not set # CONFIG_USB_NET_SMSC95XX is not set @@ -2330,67 +2284,29 @@ CONFIG_USB_NET_CDC_MBIM=y # CONFIG_USB_NET_NET1080 is not set # CONFIG_USB_NET_PLUSB is not set # CONFIG_USB_NET_MCS7830 is not set -CONFIG_USB_NET_RNDIS_HOST=y +# CONFIG_USB_NET_RNDIS_HOST is not set # CONFIG_USB_NET_CDC_SUBSET is not set # CONFIG_USB_NET_ZAURUS is not set # CONFIG_USB_NET_CX82310_ETH is not set # CONFIG_USB_NET_KALMIA is not set -CONFIG_USB_NET_QMI_WWAN=y +# CONFIG_USB_NET_QMI_WWAN is not set # CONFIG_USB_HSO is not set # CONFIG_USB_NET_INT51X1 is not set # CONFIG_USB_IPHETH is not set # CONFIG_USB_SIERRA_NET is not set -# CONFIG_USB_VL600 is not set # CONFIG_USB_NET_CH9200 is not set # CONFIG_USB_NET_AQC111 is not set -CONFIG_USB_RTL8153_ECM=y CONFIG_WLAN=y -CONFIG_WLAN_VENDOR_ADMTEK=y -# CONFIG_ADM8211 is not set -CONFIG_WLAN_VENDOR_ATH=y -# CONFIG_ATH_DEBUG is not set -# CONFIG_ATH5K is not set -# CONFIG_ATH5K_PCI is not set -# CONFIG_ATH9K is not set -# CONFIG_ATH9K_HTC is not set -# CONFIG_CARL9170 is not set -# CONFIG_ATH6KL is not set -# CONFIG_AR5523 is not set -# CONFIG_WIL6210 is not set -# CONFIG_ATH10K is not set -# CONFIG_WCN36XX is not set -CONFIG_WLAN_VENDOR_ATMEL=y -# CONFIG_ATMEL is not set -# CONFIG_AT76C50X_USB is not set -CONFIG_WLAN_VENDOR_BROADCOM=y -# CONFIG_B43 is not set -# CONFIG_B43LEGACY is not set -# CONFIG_BRCMSMAC is not set -# CONFIG_BRCMFMAC is not set -CONFIG_WLAN_VENDOR_CISCO=y -# CONFIG_AIRO is not set -CONFIG_WLAN_VENDOR_INTEL=y -# CONFIG_IPW2100 is not set -# CONFIG_IPW2200 is not set -# CONFIG_IWL4965 is not set -# CONFIG_IWL3945 is not set -# CONFIG_IWLWIFI is not set -CONFIG_WLAN_VENDOR_INTERSIL=y -# CONFIG_HOSTAP is not set -# CONFIG_HERMES is not set -# CONFIG_P54_COMMON is not set -CONFIG_WLAN_VENDOR_MARVELL=y -# CONFIG_LIBERTAS is not set -CONFIG_LIBERTAS_THINFIRM=y -# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set -# CONFIG_LIBERTAS_THINFIRM_USB is not set -CONFIG_MWIFIEX=m -CONFIG_MWIFIEX_SDIO=m -# CONFIG_MWIFIEX_PCIE is not set -# CONFIG_MWIFIEX_USB is not set -# CONFIG_MWL8K is not set +# CONFIG_WLAN_VENDOR_ADMTEK is not set +# CONFIG_WLAN_VENDOR_ATH is not set +# CONFIG_WLAN_VENDOR_ATMEL is not set +# CONFIG_WLAN_VENDOR_BROADCOM is not set +# CONFIG_WLAN_VENDOR_CISCO is not set +# CONFIG_WLAN_VENDOR_INTEL is not set +# CONFIG_WLAN_VENDOR_INTERSIL is not set +# CONFIG_WLAN_VENDOR_MARVELL is not set CONFIG_WLAN_VENDOR_MEDIATEK=y -# CONFIG_MT7601U is not set +CONFIG_MT7601U=y # CONFIG_MT76x0U is not set # CONFIG_MT76x0E is not set # CONFIG_MT76x2E is not set @@ -2404,16 +2320,13 @@ CONFIG_WLAN_VENDOR_MEDIATEK=y # CONFIG_MT7921S is not set # CONFIG_MT7921U is not set # CONFIG_MT7996E is not set -CONFIG_WLAN_VENDOR_MICROCHIP=y -# CONFIG_WILC1000_SDIO is not set -# CONFIG_WILC1000_SPI is not set -CONFIG_WLAN_VENDOR_PURELIFI=y -# CONFIG_PLFXLC is not set -CONFIG_WLAN_VENDOR_RALINK=y -# CONFIG_RT2X00 is not set +# CONFIG_WLAN_VENDOR_MICROCHIP is not set +# CONFIG_WLAN_VENDOR_PURELIFI is not set +# CONFIG_WLAN_VENDOR_RALINK is not set CONFIG_WLAN_VENDOR_REALTEK=y # CONFIG_RTL8180 is not set -# CONFIG_RTL8187 is not set +CONFIG_RTL8187=y +CONFIG_RTL8187_LEDS=y CONFIG_RTL_CARDS=y # CONFIG_RTL8192CE is not set # CONFIG_RTL8192SE is not set @@ -2423,27 +2336,43 @@ CONFIG_RTL_CARDS=y # CONFIG_RTL8188EE is not set # CONFIG_RTL8192EE is not set # CONFIG_RTL8821AE is not set -# CONFIG_RTL8192CU is not set -# CONFIG_RTL8XXXU is not set -# CONFIG_RTW88 is not set +CONFIG_RTL8192CU=y +CONFIG_RTLWIFI=y +CONFIG_RTLWIFI_USB=y +# CONFIG_RTLWIFI_DEBUG is not set +CONFIG_RTL8192C_COMMON=y +CONFIG_RTL8XXXU=y +CONFIG_RTL8XXXU_UNTESTED=y +CONFIG_RTW88=y +CONFIG_RTW88_CORE=y +CONFIG_RTW88_SDIO=y +CONFIG_RTW88_USB=y +CONFIG_RTW88_8822B=y +CONFIG_RTW88_8822C=y +CONFIG_RTW88_8723D=y +CONFIG_RTW88_8821C=y +# CONFIG_RTW88_8822BE is not set +# CONFIG_RTW88_8822BS is not set +CONFIG_RTW88_8822BU=y +# CONFIG_RTW88_8822CE is not set +# CONFIG_RTW88_8822CS is not set +CONFIG_RTW88_8822CU=y +# CONFIG_RTW88_8723DE is not set +CONFIG_RTW88_8723DS=y +CONFIG_RTW88_8723DU=y +# CONFIG_RTW88_8821CE is not set +CONFIG_RTW88_8821CS=y +CONFIG_RTW88_8821CU=y +# CONFIG_RTW88_DEBUG is not set +# CONFIG_RTW88_DEBUGFS is not set # CONFIG_RTW89 is not set -CONFIG_WLAN_VENDOR_RSI=y -# CONFIG_RSI_91X is not set -CONFIG_WLAN_VENDOR_SILABS=y -# CONFIG_WFX is not set -CONFIG_WLAN_VENDOR_ST=y -# CONFIG_CW1200 is not set -CONFIG_WLAN_VENDOR_TI=y -# CONFIG_WL1251 is not set -# CONFIG_WL12XX is not set -# CONFIG_WL18XX is not set -# CONFIG_WLCORE is not set -CONFIG_WLAN_VENDOR_ZYDAS=y -# CONFIG_USB_ZD1201 is not set -# CONFIG_ZD1211RW is not set -CONFIG_WLAN_VENDOR_QUANTENNA=y -# CONFIG_QTNFMAC_PCIE is not set -CONFIG_USB_NET_RNDIS_WLAN=y +# CONFIG_WLAN_VENDOR_RSI is not set +# CONFIG_WLAN_VENDOR_SILABS is not set +# CONFIG_WLAN_VENDOR_ST is not set +# CONFIG_WLAN_VENDOR_TI is not set +# CONFIG_WLAN_VENDOR_ZYDAS is not set +# CONFIG_WLAN_VENDOR_QUANTENNA is not set +# CONFIG_USB_NET_RNDIS_WLAN is not set # CONFIG_MAC80211_HWSIM is not set # CONFIG_VIRT_WIFI is not set # CONFIG_WAN is not set @@ -2455,7 +2384,6 @@ CONFIG_USB_NET_RNDIS_WLAN=y # end of Wireless WAN # CONFIG_VMXNET3 is not set -# CONFIG_NETDEVSIM is not set # CONFIG_NET_FAILOVER is not set # CONFIG_ISDN is not set @@ -2472,7 +2400,7 @@ CONFIG_INPUT_MATRIXKMAP=y # Userland interfaces # # CONFIG_INPUT_MOUSEDEV is not set -CONFIG_INPUT_JOYDEV=y +# CONFIG_INPUT_JOYDEV is not set CONFIG_INPUT_EVDEV=y # CONFIG_INPUT_EVBUG is not set @@ -2516,39 +2444,35 @@ CONFIG_INPUT_MOUSE=y # CONFIG_MOUSE_SERIAL is not set # CONFIG_MOUSE_APPLETOUCH is not set # CONFIG_MOUSE_BCM5974 is not set -CONFIG_MOUSE_CYAPA=y -CONFIG_MOUSE_ELAN_I2C=y -CONFIG_MOUSE_ELAN_I2C_I2C=y -# CONFIG_MOUSE_ELAN_I2C_SMBUS is not set +# CONFIG_MOUSE_CYAPA is not set +# CONFIG_MOUSE_ELAN_I2C is not set # CONFIG_MOUSE_VSXXXAA is not set # CONFIG_MOUSE_GPIO is not set # CONFIG_MOUSE_SYNAPTICS_I2C is not set # CONFIG_MOUSE_SYNAPTICS_USB is not set CONFIG_INPUT_JOYSTICK=y -CONFIG_JOYSTICK_ANALOG=y -CONFIG_JOYSTICK_A3D=y +# CONFIG_JOYSTICK_ANALOG is not set +# CONFIG_JOYSTICK_A3D is not set CONFIG_JOYSTICK_ADC=y -CONFIG_JOYSTICK_ADI=y -CONFIG_JOYSTICK_COBRA=y -CONFIG_JOYSTICK_GF2K=y -CONFIG_JOYSTICK_GRIP=y -CONFIG_JOYSTICK_GRIP_MP=y -CONFIG_JOYSTICK_GUILLEMOT=y -CONFIG_JOYSTICK_INTERACT=y -CONFIG_JOYSTICK_SIDEWINDER=y -CONFIG_JOYSTICK_TMDC=y -CONFIG_JOYSTICK_IFORCE=y -CONFIG_JOYSTICK_IFORCE_USB=y -CONFIG_JOYSTICK_IFORCE_232=y -CONFIG_JOYSTICK_WARRIOR=y -CONFIG_JOYSTICK_MAGELLAN=y -CONFIG_JOYSTICK_SPACEORB=y -CONFIG_JOYSTICK_SPACEBALL=y -CONFIG_JOYSTICK_STINGER=y -CONFIG_JOYSTICK_TWIDJOY=y -CONFIG_JOYSTICK_ZHENHUA=y -CONFIG_JOYSTICK_AS5011=y -CONFIG_JOYSTICK_JOYDUMP=y +# CONFIG_JOYSTICK_ADI is not set +# CONFIG_JOYSTICK_COBRA is not set +# CONFIG_JOYSTICK_GF2K is not set +# CONFIG_JOYSTICK_GRIP is not set +# CONFIG_JOYSTICK_GRIP_MP is not set +# CONFIG_JOYSTICK_GUILLEMOT is not set +# CONFIG_JOYSTICK_INTERACT is not set +# CONFIG_JOYSTICK_SIDEWINDER is not set +# CONFIG_JOYSTICK_TMDC is not set +# CONFIG_JOYSTICK_IFORCE is not set +# CONFIG_JOYSTICK_WARRIOR is not set +# CONFIG_JOYSTICK_MAGELLAN is not set +# CONFIG_JOYSTICK_SPACEORB is not set +# CONFIG_JOYSTICK_SPACEBALL is not set +# CONFIG_JOYSTICK_STINGER is not set +# CONFIG_JOYSTICK_TWIDJOY is not set +# CONFIG_JOYSTICK_ZHENHUA is not set +# CONFIG_JOYSTICK_AS5011 is not set +# CONFIG_JOYSTICK_JOYDUMP is not set CONFIG_JOYSTICK_XPAD=y CONFIG_JOYSTICK_XPAD_FF=y CONFIG_JOYSTICK_XPAD_LEDS=y @@ -2564,8 +2488,7 @@ CONFIG_INPUT_TOUCHSCREEN=y # CONFIG_TOUCHSCREEN_AD7879 is not set # CONFIG_TOUCHSCREEN_ADC is not set # CONFIG_TOUCHSCREEN_AR1021_I2C is not set -CONFIG_TOUCHSCREEN_ATMEL_MXT=y -# CONFIG_TOUCHSCREEN_ATMEL_MXT_T37 is not set +# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set # CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set # CONFIG_TOUCHSCREEN_BU21013 is not set # CONFIG_TOUCHSCREEN_BU21029 is not set @@ -2591,7 +2514,7 @@ CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=y # CONFIG_TOUCHSCREEN_S6SY761 is not set # CONFIG_TOUCHSCREEN_GUNZE is not set # CONFIG_TOUCHSCREEN_EKTF2127 is not set -CONFIG_TOUCHSCREEN_ELAN=y +# CONFIG_TOUCHSCREEN_ELAN is not set # CONFIG_TOUCHSCREEN_ELO is not set # CONFIG_TOUCHSCREEN_WACOM_W8001 is not set # CONFIG_TOUCHSCREEN_WACOM_I2C is not set @@ -2611,25 +2534,7 @@ CONFIG_TOUCHSCREEN_ELAN=y # CONFIG_TOUCHSCREEN_TOUCHWIN is not set # CONFIG_TOUCHSCREEN_PIXCIR is not set # CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set -CONFIG_TOUCHSCREEN_USB_COMPOSITE=y -CONFIG_TOUCHSCREEN_USB_EGALAX=y -CONFIG_TOUCHSCREEN_USB_PANJIT=y -CONFIG_TOUCHSCREEN_USB_3M=y -CONFIG_TOUCHSCREEN_USB_ITM=y -CONFIG_TOUCHSCREEN_USB_ETURBO=y -CONFIG_TOUCHSCREEN_USB_GUNZE=y -CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y -CONFIG_TOUCHSCREEN_USB_IRTOUCH=y -CONFIG_TOUCHSCREEN_USB_IDEALTEK=y -CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y -CONFIG_TOUCHSCREEN_USB_GOTOP=y -CONFIG_TOUCHSCREEN_USB_JASTEC=y -CONFIG_TOUCHSCREEN_USB_ELO=y -CONFIG_TOUCHSCREEN_USB_E2I=y -CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y -CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y -CONFIG_TOUCHSCREEN_USB_NEXIO=y -CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y +# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set # CONFIG_TOUCHSCREEN_TOUCHIT213 is not set # CONFIG_TOUCHSCREEN_TSC_SERIO is not set # CONFIG_TOUCHSCREEN_TSC2004 is not set @@ -2640,7 +2545,6 @@ CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y # CONFIG_TOUCHSCREEN_SIS_I2C is not set # CONFIG_TOUCHSCREEN_ST1232 is not set # CONFIG_TOUCHSCREEN_STMFTS is not set -# CONFIG_TOUCHSCREEN_SUR40 is not set # CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set # CONFIG_TOUCHSCREEN_SX8654 is not set # CONFIG_TOUCHSCREEN_TPS6507X is not set @@ -2660,7 +2564,7 @@ CONFIG_INPUT_MISC=y # CONFIG_INPUT_MMA8450 is not set # CONFIG_INPUT_GPIO_BEEPER is not set # CONFIG_INPUT_GPIO_DECODER is not set -# CONFIG_INPUT_GPIO_VIBRA is not set +CONFIG_INPUT_GPIO_VIBRA=y # CONFIG_INPUT_ATI_REMOTE2 is not set # CONFIG_INPUT_KEYSPAN_REMOTE is not set # CONFIG_INPUT_KXTJ9 is not set @@ -2671,7 +2575,7 @@ CONFIG_INPUT_MISC=y CONFIG_INPUT_UINPUT=y # CONFIG_INPUT_PCF8574 is not set # CONFIG_INPUT_PWM_BEEPER is not set -# CONFIG_INPUT_PWM_VIBRA is not set +CONFIG_INPUT_PWM_VIBRA=y CONFIG_INPUT_RK805_PWRKEY=y # CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set # CONFIG_INPUT_DA7280_HAPTICS is not set @@ -2689,21 +2593,8 @@ CONFIG_INPUT_RK805_PWRKEY=y # # Hardware I/O ports # -CONFIG_SERIO=y -CONFIG_SERIO_SERPORT=y -# CONFIG_SERIO_AMBAKMI is not set -# CONFIG_SERIO_PCIPS2 is not set -# CONFIG_SERIO_LIBPS2 is not set -# CONFIG_SERIO_RAW is not set -# CONFIG_SERIO_ALTERA_PS2 is not set -# CONFIG_SERIO_PS2MULT is not set -# CONFIG_SERIO_ARC_PS2 is not set -# CONFIG_SERIO_APBPS2 is not set -# CONFIG_SERIO_GPIO_PS2 is not set -# CONFIG_USERIO is not set -CONFIG_GAMEPORT=y -# CONFIG_GAMEPORT_EMU10K1 is not set -# CONFIG_GAMEPORT_FM801 is not set +# CONFIG_SERIO is not set +# CONFIG_GAMEPORT is not set # end of Hardware I/O ports # end of Input device support @@ -2727,14 +2618,16 @@ CONFIG_LDISC_AUTOLOAD=y # CONFIG_SERIAL_EARLYCON=y CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y -CONFIG_SERIAL_8250_16550A_VARIANTS=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +# CONFIG_SERIAL_8250_16550A_VARIANTS is not set # CONFIG_SERIAL_8250_FINTEK is not set CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_DMA=y -# CONFIG_SERIAL_8250_PCI is not set -CONFIG_SERIAL_8250_NR_UARTS=10 -CONFIG_SERIAL_8250_RUNTIME_UARTS=10 +CONFIG_SERIAL_8250_PCILIB=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_EXAR=y +CONFIG_SERIAL_8250_NR_UARTS=5 +CONFIG_SERIAL_8250_RUNTIME_UARTS=5 # CONFIG_SERIAL_8250_EXTENDED is not set # CONFIG_SERIAL_8250_PCI1XXXX is not set CONFIG_SERIAL_8250_DWLIB=y @@ -2784,6 +2677,7 @@ CONFIG_SERIAL_DEV_CTRL_TTYPORT=y CONFIG_HW_RANDOM=y # CONFIG_HW_RANDOM_TIMERIOMEM is not set # CONFIG_HW_RANDOM_BA431 is not set +CONFIG_HW_RANDOM_OPTEE=y # CONFIG_HW_RANDOM_CCTRNG is not set # CONFIG_HW_RANDOM_XIPHERA is not set CONFIG_HW_RANDOM_ARM_SMCCC_TRNG=y @@ -2802,6 +2696,7 @@ CONFIG_HW_RANDOM_TPM=y # CONFIG_TCG_TIS_I2C_NUVOTON is not set # CONFIG_TCG_ATMEL is not set # CONFIG_TCG_VTPM_PROXY is not set +CONFIG_TCG_FTPM_TEE=y # CONFIG_TCG_TIS_ST33ZP24_I2C is not set # CONFIG_TCG_TIS_ST33ZP24_SPI is not set # CONFIG_XILLYBUS is not set @@ -2820,8 +2715,8 @@ 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_ARB_GPIO_CHALLENGE=y +CONFIG_I2C_MUX_GPIO=y # CONFIG_I2C_MUX_GPMUX is not set # CONFIG_I2C_MUX_LTC4306 is not set # CONFIG_I2C_MUX_PCA9541 is not set @@ -2902,7 +2797,7 @@ CONFIG_I2C_RK3X=y CONFIG_SPI=y # CONFIG_SPI_DEBUG is not set CONFIG_SPI_MASTER=y -# CONFIG_SPI_MEM is not set +CONFIG_SPI_MEM=y # # SPI Master Controller Drivers @@ -2912,8 +2807,9 @@ CONFIG_SPI_MASTER=y CONFIG_SPI_BITBANG=y # CONFIG_SPI_CADENCE is not set # CONFIG_SPI_CADENCE_QUADSPI is not set +# CONFIG_SPI_CADENCE_XSPI is not set # CONFIG_SPI_DESIGNWARE is not set -# CONFIG_SPI_GPIO is not set +CONFIG_SPI_GPIO=y # CONFIG_SPI_FSL_SPI is not set # CONFIG_SPI_MICROCHIP_CORE is not set # CONFIG_SPI_MICROCHIP_CORE_QSPI is not set @@ -2925,6 +2821,7 @@ CONFIG_SPI_ROCKCHIP=y CONFIG_SPI_ROCKCHIP_SFC=y # CONFIG_SPI_SC18IS602 is not set # CONFIG_SPI_SIFIVE is not set +# CONFIG_SPI_SN_F_OSPI is not set # CONFIG_SPI_MXIC is not set # CONFIG_SPI_THUNDERX is not set # CONFIG_SPI_XCOMM is not set @@ -2935,7 +2832,7 @@ CONFIG_SPI_ROCKCHIP_SFC=y # # SPI Multiplexer support # -# CONFIG_SPI_MUX is not set +CONFIG_SPI_MUX=y # # SPI Protocol Masters @@ -2944,6 +2841,7 @@ CONFIG_SPI_SPIDEV=y # CONFIG_SPI_LOOPBACK_TEST is not set # CONFIG_SPI_TLE62X0 is not set # CONFIG_SPI_SLAVE is not set +CONFIG_SPI_DYNAMIC=y # CONFIG_SPMI is not set # CONFIG_HSI is not set CONFIG_PPS=y @@ -2977,7 +2875,9 @@ CONFIG_PTP_1588_CLOCK_KVM=y # end of PTP clock support CONFIG_PINCTRL=y +CONFIG_GENERIC_PINCTRL_GROUPS=y CONFIG_PINMUX=y +CONFIG_GENERIC_PINMUX_FUNCTIONS=y CONFIG_PINCONF=y CONFIG_GENERIC_PINCONF=y # CONFIG_DEBUG_PINCTRL is not set @@ -2987,7 +2887,7 @@ CONFIG_GENERIC_PINCONF=y # CONFIG_PINCTRL_OCELOT is not set CONFIG_PINCTRL_RK805=y CONFIG_PINCTRL_ROCKCHIP=y -# CONFIG_PINCTRL_SINGLE is not set +CONFIG_PINCTRL_SINGLE=y # CONFIG_PINCTRL_STMFX is not set # CONFIG_PINCTRL_SX150X is not set @@ -3013,6 +2913,7 @@ CONFIG_GPIO_GENERIC=y # CONFIG_GPIO_ALTERA is not set # CONFIG_GPIO_CADENCE is not set # CONFIG_GPIO_DWAPB is not set +# CONFIG_GPIO_EXAR is not set # CONFIG_GPIO_FTGPIO010 is not set CONFIG_GPIO_GENERIC_PLATFORM=y # CONFIG_GPIO_GRGPIO is not set @@ -3020,7 +2921,7 @@ CONFIG_GPIO_GENERIC_PLATFORM=y # CONFIG_GPIO_HLWD is not set # CONFIG_GPIO_LOGICVC is not set # CONFIG_GPIO_MB86S7X is not set -# CONFIG_GPIO_PL061 is not set +CONFIG_GPIO_PL061=y CONFIG_GPIO_ROCKCHIP=y # CONFIG_GPIO_SIFIVE is not set # CONFIG_GPIO_SYSCON is not set @@ -3038,8 +2939,7 @@ CONFIG_GPIO_ROCKCHIP=y # CONFIG_GPIO_GW_PLD is not set # CONFIG_GPIO_MAX7300 is not set # CONFIG_GPIO_MAX732X is not set -CONFIG_GPIO_PCA953X=y -# CONFIG_GPIO_PCA953X_IRQ is not set +# CONFIG_GPIO_PCA953X is not set # CONFIG_GPIO_PCA9570 is not set # CONFIG_GPIO_PCF857X is not set # CONFIG_GPIO_TPIC2810 is not set @@ -3048,7 +2948,6 @@ CONFIG_GPIO_PCA953X=y # # MFD GPIO expanders # -# CONFIG_GPIO_TPS6586X is not set # end of MFD GPIO expanders # @@ -3094,8 +2993,8 @@ CONFIG_POWER_RESET_GPIO_RESTART=y # CONFIG_POWER_RESET_REGULATOR is not set # CONFIG_POWER_RESET_RESTART is not set # CONFIG_POWER_RESET_XGENE is not set -# CONFIG_POWER_RESET_SYSCON is not set -# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set +CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y CONFIG_REBOOT_MODE=y CONFIG_SYSCON_REBOOT_MODE=y # CONFIG_NVMEM_REBOOT_MODE is not set @@ -3117,6 +3016,7 @@ CONFIG_BATTERY_SBS=y # CONFIG_BATTERY_BQ27XXX 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=y @@ -3128,7 +3028,7 @@ CONFIG_CHARGER_GPIO=y # CONFIG_CHARGER_BQ2415X is not set # CONFIG_CHARGER_BQ24190 is not set # CONFIG_CHARGER_BQ24257 is not set -CONFIG_CHARGER_BQ24735=y +# CONFIG_CHARGER_BQ24735 is not set # CONFIG_CHARGER_BQ2515X is not set # CONFIG_CHARGER_BQ25890 is not set # CONFIG_CHARGER_BQ25980 is not set @@ -3172,17 +3072,16 @@ CONFIG_HWMON=y # CONFIG_SENSORS_ASC7621 is not set # CONFIG_SENSORS_AXI_FAN_CONTROL is not set # CONFIG_SENSORS_ARM_SCMI is not set +# CONFIG_SENSORS_ARM_SCPI is not set # CONFIG_SENSORS_ATXP1 is not set # CONFIG_SENSORS_CORSAIR_CPRO is not set # CONFIG_SENSORS_CORSAIR_PSU is not set -# CONFIG_SENSORS_DRIVETEMP is not set # CONFIG_SENSORS_DS620 is not set # CONFIG_SENSORS_DS1621 is not set # CONFIG_SENSORS_I5K_AMB is not set # CONFIG_SENSORS_F71805F is not set # CONFIG_SENSORS_F71882FG is not set # CONFIG_SENSORS_F75375S is not set -# CONFIG_SENSORS_FTSTEUTATES is not set # CONFIG_SENSORS_GL518SM is not set # CONFIG_SENSORS_GL520SM is not set # CONFIG_SENSORS_G760A is not set @@ -3252,7 +3151,6 @@ CONFIG_HWMON=y # CONFIG_SENSORS_NCT6775 is not set # CONFIG_SENSORS_NCT6775_I2C is not set # CONFIG_SENSORS_NCT7802 is not set -# CONFIG_SENSORS_NCT7904 is not set # CONFIG_SENSORS_NPCM7XX is not set # CONFIG_SENSORS_NZXT_KRAKEN2 is not set # CONFIG_SENSORS_NZXT_SMART2 is not set @@ -3276,8 +3174,6 @@ CONFIG_HWMON=y # CONFIG_SENSORS_SMSC47M1 is not set # CONFIG_SENSORS_SMSC47M192 is not set # CONFIG_SENSORS_SMSC47B397 is not set -# CONFIG_SENSORS_SCH5627 is not set -# CONFIG_SENSORS_SCH5636 is not set # CONFIG_SENSORS_STTS751 is not set # CONFIG_SENSORS_ADC128D818 is not set # CONFIG_SENSORS_ADS7828 is not set @@ -3316,14 +3212,14 @@ CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 CONFIG_THERMAL_HWMON=y CONFIG_THERMAL_OF=y CONFIG_THERMAL_WRITABLE_TRIPS=y -# CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE is not set +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y # CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set -CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR=y +# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set CONFIG_THERMAL_GOV_FAIR_SHARE=y CONFIG_THERMAL_GOV_STEP_WISE=y # CONFIG_THERMAL_GOV_BANG_BANG is not set -# CONFIG_THERMAL_GOV_USER_SPACE is not set +CONFIG_THERMAL_GOV_USER_SPACE=y CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y CONFIG_CPU_THERMAL=y CONFIG_CPU_FREQ_THERMAL=y @@ -3331,49 +3227,8 @@ CONFIG_DEVFREQ_THERMAL=y # CONFIG_THERMAL_EMULATION is not set # CONFIG_THERMAL_MMIO is not set CONFIG_ROCKCHIP_THERMAL=y -# CONFIG_GENERIC_ADC_THERMAL is not set -CONFIG_WATCHDOG=y -CONFIG_WATCHDOG_CORE=y -# CONFIG_WATCHDOG_NOWAYOUT is not set -CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y -CONFIG_WATCHDOG_OPEN_TIMEOUT=0 -# CONFIG_WATCHDOG_SYSFS is not set -# CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set - -# -# Watchdog Pretimeout Governors -# -# CONFIG_WATCHDOG_PRETIMEOUT_GOV 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_XILINX_WINDOW_WATCHDOG is not set -# CONFIG_ZIIRAVE_WATCHDOG is not set -# CONFIG_ARM_SP805_WATCHDOG is not set -# CONFIG_ARM_SBSA_WATCHDOG is not set -# CONFIG_CADENCE_WATCHDOG is not set -CONFIG_DW_WATCHDOG=y -# CONFIG_MAX63XX_WATCHDOG is not set -# CONFIG_ARM_SMC_WATCHDOG is not set -# CONFIG_ALIM7101_WDT is not set -# CONFIG_I6300ESB_WDT is not set -# CONFIG_HP_WATCHDOG is not set -# CONFIG_MEN_A21_WDT is not set - -# -# PCI-based Watchdog Cards -# -# CONFIG_PCIPCWATCHDOG is not set -# CONFIG_WDTPCI is not set - -# -# USB-based Watchdog Cards -# -# CONFIG_USBPCWATCHDOG is not set +CONFIG_GENERIC_ADC_THERMAL=y +# CONFIG_WATCHDOG is not set CONFIG_SSB_POSSIBLE=y # CONFIG_SSB is not set CONFIG_BCMA_POSSIBLE=y @@ -3472,7 +3327,7 @@ CONFIG_MFD_SYSCON=y # CONFIG_MFD_TI_LP87565 is not set # CONFIG_MFD_TPS65218 is not set # CONFIG_MFD_TPS65219 is not set -CONFIG_MFD_TPS6586X=y +# CONFIG_MFD_TPS6586X is not set # CONFIG_MFD_TPS65910 is not set # CONFIG_MFD_TPS65912_I2C is not set # CONFIG_MFD_TPS65912_SPI is not set @@ -3508,12 +3363,12 @@ CONFIG_MFD_TPS6586X=y # end of Multifunction device drivers CONFIG_REGULATOR=y -CONFIG_REGULATOR_DEBUG=y +# CONFIG_REGULATOR_DEBUG is not set CONFIG_REGULATOR_FIXED_VOLTAGE=y -# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set -# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set +CONFIG_REGULATOR_VIRTUAL_CONSUMER=y +CONFIG_REGULATOR_USERSPACE_CONSUMER=y # CONFIG_REGULATOR_88PG86X is not set -CONFIG_REGULATOR_ACT8865=y +# CONFIG_REGULATOR_ACT8865 is not set # CONFIG_REGULATOR_AD5398 is not set CONFIG_REGULATOR_ARM_SCMI=y # CONFIG_REGULATOR_AW37503 is not set @@ -3579,10 +3434,9 @@ CONFIG_REGULATOR_RK808=y # CONFIG_REGULATOR_TPS6287X is not set # CONFIG_REGULATOR_TPS65023 is not set # CONFIG_REGULATOR_TPS6507X is not set -CONFIG_REGULATOR_TPS65132=y +# CONFIG_REGULATOR_TPS65132 is not set # CONFIG_REGULATOR_TPS6524X is not set -CONFIG_REGULATOR_TPS6586X=y -# CONFIG_REGULATOR_VCTRL is not set +CONFIG_REGULATOR_VCTRL=y # CONFIG_RC_CORE is not set CONFIG_CEC_CORE=y CONFIG_CEC_NOTIFIER=y @@ -3624,28 +3478,28 @@ CONFIG_DVB_CORE=y # Video4Linux options # CONFIG_VIDEO_V4L2_I2C=y -CONFIG_VIDEO_V4L2_SUBDEV_API=y # CONFIG_VIDEO_ADV_DEBUG is not set # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +CONFIG_V4L2_H264=y +CONFIG_V4L2_VP9=y CONFIG_V4L2_MEM2MEM_DEV=y # CONFIG_V4L2_FLASH_LED_CLASS is not set -CONFIG_V4L2_FWNODE=y -CONFIG_V4L2_ASYNC=y # end of Video4Linux options # # Media controller options # # CONFIG_MEDIA_CONTROLLER_DVB is not set +CONFIG_MEDIA_CONTROLLER_REQUEST_API=y # end of Media controller options # # Digital TV options # # CONFIG_DVB_MMAP is not set -CONFIG_DVB_NET=y +# CONFIG_DVB_NET is not set CONFIG_DVB_MAX_ADAPTERS=16 -CONFIG_DVB_DYNAMIC_MINORS=y +# CONFIG_DVB_DYNAMIC_MINORS is not set # CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set # CONFIG_DVB_ULE_DEBUG is not set # end of Digital TV options @@ -3657,75 +3511,15 @@ CONFIG_DVB_DYNAMIC_MINORS=y # # Media drivers # -CONFIG_MEDIA_USB_SUPPORT=y - -# -# Webcam devices -# -# CONFIG_USB_GSPCA is not set -# CONFIG_USB_PWC is not set -# CONFIG_USB_S2255 is not set -# CONFIG_VIDEO_USBTV is not set -# CONFIG_USB_VIDEO_CLASS is not set - -# -# Analog TV USB devices -# -# CONFIG_VIDEO_GO7007 is not set -# CONFIG_VIDEO_HDPVR is not set -# CONFIG_VIDEO_PVRUSB2 is not set -# CONFIG_VIDEO_STK1160 is not set - -# -# Analog/digital TV USB devices -# -# CONFIG_VIDEO_AU0828 is not set -# CONFIG_VIDEO_CX231XX is not set - -# -# Digital TV USB devices -# -# CONFIG_DVB_AS102 is not set -# CONFIG_DVB_B2C2_FLEXCOP_USB is not set -# CONFIG_DVB_USB_V2 is not set -# CONFIG_SMS_USB_DRV is not set -# CONFIG_DVB_TTUSB_BUDGET is not set -# CONFIG_DVB_TTUSB_DEC is not set - -# -# Webcam, TV (analog/digital) USB devices -# -# CONFIG_VIDEO_EM28XX is not set - -# -# Software defined radio USB devices -# -# CONFIG_USB_AIRSPY is not set -# CONFIG_USB_HACKRF is not set -# CONFIG_USB_MSI2500 is not set +# CONFIG_MEDIA_USB_SUPPORT is not set # CONFIG_MEDIA_PCI_SUPPORT is not set -CONFIG_RADIO_ADAPTERS=y -# CONFIG_RADIO_MAXIRADIO is not set -# CONFIG_RADIO_SAA7706H is not set -# CONFIG_RADIO_SHARK is not set -# CONFIG_RADIO_SHARK2 is not set -# CONFIG_RADIO_SI4713 is not set -# CONFIG_RADIO_TEA5764 is not set -# CONFIG_RADIO_TEF6862 is not set -# CONFIG_RADIO_WL1273 is not set -# CONFIG_USB_DSBR is not set -# CONFIG_USB_KEENE is not set -# CONFIG_USB_MA901 is not set -# CONFIG_USB_MR800 is not set -# CONFIG_USB_RAREMONO is not set -# CONFIG_RADIO_SI470X is not set +# CONFIG_RADIO_ADAPTERS is not set CONFIG_MEDIA_PLATFORM_DRIVERS=y -CONFIG_V4L_PLATFORM_DRIVERS=y +# CONFIG_V4L_PLATFORM_DRIVERS is not set # CONFIG_SDR_PLATFORM_DRIVERS is not set # CONFIG_DVB_PLATFORM_DRIVERS is not set CONFIG_V4L_MEM2MEM_DRIVERS=y # CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set -# CONFIG_VIDEO_MUX is not set # # Allegro DVT media platform drivers @@ -3764,7 +3558,6 @@ CONFIG_V4L_MEM2MEM_DRIVERS=y # # Marvell media platform drivers # -# CONFIG_VIDEO_CAFE_CCIC is not set # # Mediatek media platform drivers @@ -3794,7 +3587,6 @@ CONFIG_V4L_MEM2MEM_DRIVERS=y # Rockchip media platform drivers # CONFIG_VIDEO_ROCKCHIP_RGA=y -# CONFIG_VIDEO_ROCKCHIP_ISP1 is not set # # Samsung media platform drivers @@ -3816,6 +3608,7 @@ CONFIG_VIDEO_ROCKCHIP_RGA=y # Verisilicon media platform drivers # CONFIG_VIDEO_HANTRO=y +CONFIG_VIDEO_HANTRO_ROCKCHIP=y # # VIA media platform drivers @@ -3824,7 +3617,6 @@ CONFIG_VIDEO_HANTRO=y # # Xilinx media platform drivers # -# CONFIG_VIDEO_XILINX is not set # # MMC/SDIO DVB adapters @@ -3832,7 +3624,6 @@ CONFIG_VIDEO_HANTRO=y # CONFIG_SMS_SDIO_DRV is not set # CONFIG_V4L_TEST_DRIVERS is not set # CONFIG_DVB_TEST_DRIVERS is not set -CONFIG_UVC_COMMON=y CONFIG_VIDEOBUF2_CORE=y CONFIG_VIDEOBUF2_V4L2=y CONFIG_VIDEOBUF2_MEMOPS=y @@ -3845,72 +3636,7 @@ CONFIG_VIDEOBUF2_DMA_SG=y # Media ancillary drivers # CONFIG_MEDIA_ATTACH=y -CONFIG_VIDEO_CAMERA_SENSOR=y -# CONFIG_VIDEO_AR0521 is not set -# CONFIG_VIDEO_HI556 is not set -# CONFIG_VIDEO_HI846 is not set -# CONFIG_VIDEO_HI847 is not set -# CONFIG_VIDEO_IMX208 is not set -# CONFIG_VIDEO_IMX214 is not set -# CONFIG_VIDEO_IMX219 is not set -# CONFIG_VIDEO_IMX258 is not set -# CONFIG_VIDEO_IMX274 is not set -# CONFIG_VIDEO_IMX290 is not set -# CONFIG_VIDEO_IMX296 is not set -# CONFIG_VIDEO_IMX319 is not set -# CONFIG_VIDEO_IMX334 is not set -# CONFIG_VIDEO_IMX335 is not set -# CONFIG_VIDEO_IMX355 is not set -# CONFIG_VIDEO_IMX412 is not set -# CONFIG_VIDEO_IMX415 is not set -# CONFIG_VIDEO_MT9M001 is not set -# CONFIG_VIDEO_MT9M111 is not set -# CONFIG_VIDEO_MT9P031 is not set -# CONFIG_VIDEO_MT9T112 is not set -# CONFIG_VIDEO_MT9V011 is not set -# CONFIG_VIDEO_MT9V032 is not set -# CONFIG_VIDEO_MT9V111 is not set -# CONFIG_VIDEO_OG01A1B is not set -# CONFIG_VIDEO_OV01A10 is not set -# CONFIG_VIDEO_OV02A10 is not set -# CONFIG_VIDEO_OV08D10 is not set -# CONFIG_VIDEO_OV08X40 is not set -# CONFIG_VIDEO_OV13858 is not set -# CONFIG_VIDEO_OV13B10 is not set -# CONFIG_VIDEO_OV2640 is not set -# CONFIG_VIDEO_OV2659 is not set -# CONFIG_VIDEO_OV2680 is not set -# CONFIG_VIDEO_OV2685 is not set -CONFIG_VIDEO_OV4689=y -# CONFIG_VIDEO_OV5640 is not set -# CONFIG_VIDEO_OV5645 is not set -# CONFIG_VIDEO_OV5647 is not set -# CONFIG_VIDEO_OV5648 is not set -# CONFIG_VIDEO_OV5670 is not set -# CONFIG_VIDEO_OV5675 is not set -# CONFIG_VIDEO_OV5693 is not set -CONFIG_VIDEO_OV5695=y -# CONFIG_VIDEO_OV6650 is not set -CONFIG_VIDEO_OV7251=y -# CONFIG_VIDEO_OV7640 is not set -# CONFIG_VIDEO_OV7670 is not set -# CONFIG_VIDEO_OV772X is not set -# CONFIG_VIDEO_OV7740 is not set -# CONFIG_VIDEO_OV8856 is not set -# CONFIG_VIDEO_OV8858 is not set -# CONFIG_VIDEO_OV8865 is not set -# CONFIG_VIDEO_OV9282 is not set -# CONFIG_VIDEO_OV9640 is not set -# CONFIG_VIDEO_OV9650 is not set -# CONFIG_VIDEO_RDACM20 is not set -# CONFIG_VIDEO_RDACM21 is not set -# CONFIG_VIDEO_RJ54N1 is not set -# CONFIG_VIDEO_S5C73M3 is not set -# CONFIG_VIDEO_S5K5BAF is not set -# CONFIG_VIDEO_S5K6A3 is not set -# CONFIG_VIDEO_ST_VGXY61 is not set -# CONFIG_VIDEO_CCS is not set -# CONFIG_VIDEO_ET8EK8 is not set +# CONFIG_VIDEO_CAMERA_SENSOR is not set # # Lens drivers @@ -4046,7 +3772,7 @@ CONFIG_VIDEO_OV7251=y # # Media SPI Adapters # -CONFIG_CXD2880_SPI_DRV=y +# CONFIG_CXD2880_SPI_DRV is not set # CONFIG_VIDEO_GS1662 is not set # end of Media SPI Adapters @@ -4055,43 +3781,43 @@ CONFIG_MEDIA_TUNER=y # # Customize TV tuners # -CONFIG_MEDIA_TUNER_E4000=m -CONFIG_MEDIA_TUNER_FC0011=m -CONFIG_MEDIA_TUNER_FC0012=m -CONFIG_MEDIA_TUNER_FC0013=m -CONFIG_MEDIA_TUNER_FC2580=m -CONFIG_MEDIA_TUNER_IT913X=m -CONFIG_MEDIA_TUNER_M88RS6000T=m -CONFIG_MEDIA_TUNER_MAX2165=m -CONFIG_MEDIA_TUNER_MC44S803=m -CONFIG_MEDIA_TUNER_MSI001=m -CONFIG_MEDIA_TUNER_MT2060=m -CONFIG_MEDIA_TUNER_MT2063=m -CONFIG_MEDIA_TUNER_MT20XX=m -CONFIG_MEDIA_TUNER_MT2131=m -CONFIG_MEDIA_TUNER_MT2266=m -CONFIG_MEDIA_TUNER_MXL301RF=m -CONFIG_MEDIA_TUNER_MXL5005S=m -CONFIG_MEDIA_TUNER_MXL5007T=m -CONFIG_MEDIA_TUNER_QM1D1B0004=m -CONFIG_MEDIA_TUNER_QM1D1C0042=m -CONFIG_MEDIA_TUNER_QT1010=m -CONFIG_MEDIA_TUNER_R820T=m -CONFIG_MEDIA_TUNER_SI2157=m -CONFIG_MEDIA_TUNER_SIMPLE=m -CONFIG_MEDIA_TUNER_TDA18212=m -CONFIG_MEDIA_TUNER_TDA18218=m -CONFIG_MEDIA_TUNER_TDA18250=m -CONFIG_MEDIA_TUNER_TDA18271=m -CONFIG_MEDIA_TUNER_TDA827X=m -CONFIG_MEDIA_TUNER_TDA8290=m -CONFIG_MEDIA_TUNER_TDA9887=m -CONFIG_MEDIA_TUNER_TEA5761=m -CONFIG_MEDIA_TUNER_TEA5767=m -CONFIG_MEDIA_TUNER_TUA9001=m -CONFIG_MEDIA_TUNER_XC2028=m -CONFIG_MEDIA_TUNER_XC4000=m -CONFIG_MEDIA_TUNER_XC5000=m +# CONFIG_MEDIA_TUNER_E4000 is not set +# CONFIG_MEDIA_TUNER_FC0011 is not set +# CONFIG_MEDIA_TUNER_FC0012 is not set +# CONFIG_MEDIA_TUNER_FC0013 is not set +# CONFIG_MEDIA_TUNER_FC2580 is not set +# CONFIG_MEDIA_TUNER_IT913X is not set +# CONFIG_MEDIA_TUNER_M88RS6000T is not set +# CONFIG_MEDIA_TUNER_MAX2165 is not set +# CONFIG_MEDIA_TUNER_MC44S803 is not set +# CONFIG_MEDIA_TUNER_MSI001 is not set +# CONFIG_MEDIA_TUNER_MT2060 is not set +# CONFIG_MEDIA_TUNER_MT2063 is not set +# CONFIG_MEDIA_TUNER_MT20XX is not set +# CONFIG_MEDIA_TUNER_MT2131 is not set +# CONFIG_MEDIA_TUNER_MT2266 is not set +# CONFIG_MEDIA_TUNER_MXL301RF is not set +# CONFIG_MEDIA_TUNER_MXL5005S is not set +# CONFIG_MEDIA_TUNER_MXL5007T is not set +# CONFIG_MEDIA_TUNER_QM1D1B0004 is not set +# CONFIG_MEDIA_TUNER_QM1D1C0042 is not set +# CONFIG_MEDIA_TUNER_QT1010 is not set +# CONFIG_MEDIA_TUNER_R820T is not set +# CONFIG_MEDIA_TUNER_SI2157 is not set +# CONFIG_MEDIA_TUNER_SIMPLE is not set +# CONFIG_MEDIA_TUNER_TDA18212 is not set +# CONFIG_MEDIA_TUNER_TDA18218 is not set +# CONFIG_MEDIA_TUNER_TDA18250 is not set +# CONFIG_MEDIA_TUNER_TDA18271 is not set +# CONFIG_MEDIA_TUNER_TDA827X is not set +# CONFIG_MEDIA_TUNER_TDA8290 is not set +# CONFIG_MEDIA_TUNER_TDA9887 is not set +# CONFIG_MEDIA_TUNER_TEA5761 is not set +# CONFIG_MEDIA_TUNER_TEA5767 is not set +# CONFIG_MEDIA_TUNER_TUA9001 is not set +# CONFIG_MEDIA_TUNER_XC2028 is not set +# CONFIG_MEDIA_TUNER_XC4000 is not set +# CONFIG_MEDIA_TUNER_XC5000 is not set # end of Customize TV tuners # @@ -4101,160 +3827,159 @@ CONFIG_MEDIA_TUNER_XC5000=m # # Multistandard (satellite) frontends # -CONFIG_DVB_M88DS3103=m -CONFIG_DVB_MXL5XX=m -CONFIG_DVB_STB0899=m -CONFIG_DVB_STB6100=m -CONFIG_DVB_STV090x=m -CONFIG_DVB_STV0910=m -CONFIG_DVB_STV6110x=m -CONFIG_DVB_STV6111=m +# CONFIG_DVB_M88DS3103 is not set +# CONFIG_DVB_MXL5XX is not set +# CONFIG_DVB_STB0899 is not set +# CONFIG_DVB_STB6100 is not set +# CONFIG_DVB_STV090x is not set +# CONFIG_DVB_STV0910 is not set +# CONFIG_DVB_STV6110x is not set +# CONFIG_DVB_STV6111 is not set # # Multistandard (cable + terrestrial) frontends # -CONFIG_DVB_DRXK=m -CONFIG_DVB_MN88472=m -CONFIG_DVB_MN88473=m -CONFIG_DVB_SI2165=m -CONFIG_DVB_TDA18271C2DD=m +# CONFIG_DVB_DRXK is not set +# CONFIG_DVB_MN88472 is not set +# CONFIG_DVB_MN88473 is not set +# CONFIG_DVB_SI2165 is not set +# CONFIG_DVB_TDA18271C2DD is not set # # DVB-S (satellite) frontends # -CONFIG_DVB_CX24110=m -CONFIG_DVB_CX24116=m -CONFIG_DVB_CX24117=m -CONFIG_DVB_CX24120=m -CONFIG_DVB_CX24123=m -CONFIG_DVB_DS3000=m -CONFIG_DVB_MB86A16=m -CONFIG_DVB_MT312=m -CONFIG_DVB_S5H1420=m -CONFIG_DVB_SI21XX=m -CONFIG_DVB_STB6000=m -CONFIG_DVB_STV0288=m -CONFIG_DVB_STV0299=m -CONFIG_DVB_STV0900=m -CONFIG_DVB_STV6110=m -CONFIG_DVB_TDA10071=m -CONFIG_DVB_TDA10086=m -CONFIG_DVB_TDA8083=m -CONFIG_DVB_TDA8261=m -CONFIG_DVB_TDA826X=m -CONFIG_DVB_TS2020=m -CONFIG_DVB_TUA6100=m -CONFIG_DVB_TUNER_CX24113=m -CONFIG_DVB_TUNER_ITD1000=m -CONFIG_DVB_VES1X93=m -CONFIG_DVB_ZL10036=m -CONFIG_DVB_ZL10039=m +# CONFIG_DVB_CX24110 is not set +# CONFIG_DVB_CX24116 is not set +# CONFIG_DVB_CX24117 is not set +# CONFIG_DVB_CX24120 is not set +# CONFIG_DVB_CX24123 is not set +# CONFIG_DVB_DS3000 is not set +# CONFIG_DVB_MB86A16 is not set +# CONFIG_DVB_MT312 is not set +# CONFIG_DVB_S5H1420 is not set +# CONFIG_DVB_SI21XX is not set +# CONFIG_DVB_STB6000 is not set +# CONFIG_DVB_STV0288 is not set +# CONFIG_DVB_STV0299 is not set +# CONFIG_DVB_STV0900 is not set +# CONFIG_DVB_STV6110 is not set +# CONFIG_DVB_TDA10071 is not set +# CONFIG_DVB_TDA10086 is not set +# CONFIG_DVB_TDA8083 is not set +# CONFIG_DVB_TDA8261 is not set +# CONFIG_DVB_TDA826X is not set +# CONFIG_DVB_TS2020 is not set +# CONFIG_DVB_TUA6100 is not set +# CONFIG_DVB_TUNER_CX24113 is not set +# CONFIG_DVB_TUNER_ITD1000 is not set +# CONFIG_DVB_VES1X93 is not set +# CONFIG_DVB_ZL10036 is not set +# CONFIG_DVB_ZL10039 is not set # # DVB-T (terrestrial) frontends # -CONFIG_DVB_AF9013=m -CONFIG_DVB_CX22700=m -CONFIG_DVB_CX22702=m -CONFIG_DVB_CXD2820R=m -CONFIG_DVB_CXD2841ER=m -CONFIG_DVB_DIB3000MB=m -CONFIG_DVB_DIB3000MC=m -CONFIG_DVB_DIB7000M=m -CONFIG_DVB_DIB7000P=m -CONFIG_DVB_DIB9000=m -CONFIG_DVB_DRXD=m -CONFIG_DVB_EC100=m -CONFIG_DVB_L64781=m -CONFIG_DVB_MT352=m -CONFIG_DVB_NXT6000=m -CONFIG_DVB_RTL2830=m -CONFIG_DVB_RTL2832=m -CONFIG_DVB_RTL2832_SDR=m -CONFIG_DVB_S5H1432=m -CONFIG_DVB_SI2168=m -CONFIG_DVB_SP887X=m -CONFIG_DVB_STV0367=m -CONFIG_DVB_TDA10048=m -CONFIG_DVB_TDA1004X=m -CONFIG_DVB_ZD1301_DEMOD=m -CONFIG_DVB_ZL10353=m -CONFIG_DVB_CXD2880=m +# CONFIG_DVB_AF9013 is not set +# CONFIG_DVB_CX22700 is not set +# CONFIG_DVB_CX22702 is not set +# CONFIG_DVB_CXD2820R is not set +# CONFIG_DVB_CXD2841ER is not set +# CONFIG_DVB_DIB3000MB is not set +# CONFIG_DVB_DIB3000MC is not set +# CONFIG_DVB_DIB7000M is not set +# CONFIG_DVB_DIB7000P is not set +# CONFIG_DVB_DIB9000 is not set +# CONFIG_DVB_DRXD is not set +# CONFIG_DVB_EC100 is not set +# CONFIG_DVB_L64781 is not set +# CONFIG_DVB_MT352 is not set +# CONFIG_DVB_NXT6000 is not set +# CONFIG_DVB_RTL2830 is not set +# CONFIG_DVB_RTL2832 is not set +# CONFIG_DVB_RTL2832_SDR is not set +# CONFIG_DVB_S5H1432 is not set +# CONFIG_DVB_SI2168 is not set +# CONFIG_DVB_SP887X is not set +# CONFIG_DVB_STV0367 is not set +# CONFIG_DVB_TDA10048 is not set +# CONFIG_DVB_TDA1004X is not set +# CONFIG_DVB_ZD1301_DEMOD is not set +# CONFIG_DVB_ZL10353 is not set +# CONFIG_DVB_CXD2880 is not set # # DVB-C (cable) frontends # -CONFIG_DVB_STV0297=m -CONFIG_DVB_TDA10021=m -CONFIG_DVB_TDA10023=m -CONFIG_DVB_VES1820=m +# CONFIG_DVB_STV0297 is not set +# CONFIG_DVB_TDA10021 is not set +# CONFIG_DVB_TDA10023 is not set +# CONFIG_DVB_VES1820 is not set # # ATSC (North American/Korean Terrestrial/Cable DTV) frontends # -CONFIG_DVB_AU8522=m -CONFIG_DVB_AU8522_DTV=m -CONFIG_DVB_AU8522_V4L=m -CONFIG_DVB_BCM3510=m -CONFIG_DVB_LG2160=m -CONFIG_DVB_LGDT3305=m -CONFIG_DVB_LGDT3306A=m -CONFIG_DVB_LGDT330X=m -CONFIG_DVB_MXL692=m -CONFIG_DVB_NXT200X=m -CONFIG_DVB_OR51132=m -CONFIG_DVB_OR51211=m -CONFIG_DVB_S5H1409=m -CONFIG_DVB_S5H1411=m +# CONFIG_DVB_AU8522_DTV is not set +# CONFIG_DVB_AU8522_V4L is not set +# CONFIG_DVB_BCM3510 is not set +# CONFIG_DVB_LG2160 is not set +# CONFIG_DVB_LGDT3305 is not set +# CONFIG_DVB_LGDT3306A is not set +# CONFIG_DVB_LGDT330X is not set +# CONFIG_DVB_MXL692 is not set +# CONFIG_DVB_NXT200X is not set +# CONFIG_DVB_OR51132 is not set +# CONFIG_DVB_OR51211 is not set +# CONFIG_DVB_S5H1409 is not set +# CONFIG_DVB_S5H1411 is not set # # ISDB-T (terrestrial) frontends # -CONFIG_DVB_DIB8000=m -CONFIG_DVB_MB86A20S=m -CONFIG_DVB_S921=m +# CONFIG_DVB_DIB8000 is not set +# CONFIG_DVB_MB86A20S is not set +# CONFIG_DVB_S921 is not set # # ISDB-S (satellite) & ISDB-T (terrestrial) frontends # -CONFIG_DVB_MN88443X=m -CONFIG_DVB_TC90522=m +# CONFIG_DVB_MN88443X is not set +# CONFIG_DVB_TC90522 is not set # # Digital terrestrial only tuners/PLL # -CONFIG_DVB_PLL=m -CONFIG_DVB_TUNER_DIB0070=m -CONFIG_DVB_TUNER_DIB0090=m +# CONFIG_DVB_PLL is not set +# CONFIG_DVB_TUNER_DIB0070 is not set +# CONFIG_DVB_TUNER_DIB0090 is not set # # SEC control devices for DVB-S # -CONFIG_DVB_A8293=m -CONFIG_DVB_AF9033=m -CONFIG_DVB_ASCOT2E=m -CONFIG_DVB_ATBM8830=m -CONFIG_DVB_HELENE=m -CONFIG_DVB_HORUS3A=m -CONFIG_DVB_ISL6405=m -CONFIG_DVB_ISL6421=m -CONFIG_DVB_ISL6423=m -CONFIG_DVB_IX2505V=m -CONFIG_DVB_LGS8GL5=m -CONFIG_DVB_LGS8GXX=m -CONFIG_DVB_LNBH25=m -CONFIG_DVB_LNBH29=m -CONFIG_DVB_LNBP21=m -CONFIG_DVB_LNBP22=m -CONFIG_DVB_M88RS2000=m -CONFIG_DVB_TDA665x=m -CONFIG_DVB_DRX39XYJ=m +# CONFIG_DVB_A8293 is not set +# CONFIG_DVB_AF9033 is not set +# CONFIG_DVB_ASCOT2E is not set +# CONFIG_DVB_ATBM8830 is not set +# CONFIG_DVB_HELENE is not set +# CONFIG_DVB_HORUS3A is not set +# CONFIG_DVB_ISL6405 is not set +# CONFIG_DVB_ISL6421 is not set +# CONFIG_DVB_ISL6423 is not set +# CONFIG_DVB_IX2505V is not set +# CONFIG_DVB_LGS8GL5 is not set +# CONFIG_DVB_LGS8GXX is not set +# CONFIG_DVB_LNBH25 is not set +# CONFIG_DVB_LNBH29 is not set +# CONFIG_DVB_LNBP21 is not set +# CONFIG_DVB_LNBP22 is not set +# CONFIG_DVB_M88RS2000 is not set +# CONFIG_DVB_TDA665x is not set +# CONFIG_DVB_DRX39XYJ is not set # # Common Interface (EN50221) controller drivers # -CONFIG_DVB_CXD2099=m -CONFIG_DVB_SP2=m +# CONFIG_DVB_CXD2099 is not set +# CONFIG_DVB_SP2 is not set # end of Customise DVB Frontends # @@ -4277,11 +4002,10 @@ CONFIG_DRM_KMS_HELPER=y # CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set # CONFIG_DRM_DEBUG_MODESET_LOCK is not set CONFIG_DRM_FBDEV_EMULATION=y -CONFIG_DRM_FBDEV_OVERALLOC=100 +CONFIG_DRM_FBDEV_OVERALLOC=300 # CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set CONFIG_DRM_LOAD_EDID_FIRMWARE=y CONFIG_DRM_DISPLAY_HELPER=y -CONFIG_DRM_DISPLAY_DP_HELPER=y CONFIG_DRM_DISPLAY_HDMI_HELPER=y # CONFIG_DRM_DP_AUX_CHARDEV is not set # CONFIG_DRM_DP_CEC is not set @@ -4314,20 +4038,19 @@ CONFIG_DRM_SCHED=y CONFIG_DRM_ROCKCHIP=y CONFIG_ROCKCHIP_VOP=y CONFIG_ROCKCHIP_VOP2=y -CONFIG_ROCKCHIP_ANALOGIX_DP=y -CONFIG_ROCKCHIP_CDN_DP=y +# CONFIG_ROCKCHIP_ANALOGIX_DP is not set +# CONFIG_ROCKCHIP_CDN_DP is not set CONFIG_ROCKCHIP_DW_HDMI=y CONFIG_ROCKCHIP_DW_MIPI_DSI=y # CONFIG_ROCKCHIP_INNO_HDMI is not set -CONFIG_ROCKCHIP_LVDS=y -CONFIG_ROCKCHIP_RGB=y +# CONFIG_ROCKCHIP_LVDS is not set +# CONFIG_ROCKCHIP_RGB is not set # CONFIG_ROCKCHIP_RK3066_HDMI is not set # CONFIG_DRM_VMWGFX is not set # CONFIG_DRM_UDL is not set # CONFIG_DRM_AST is not set # CONFIG_DRM_MGAG200 is not set # CONFIG_DRM_QXL is not set -# CONFIG_DRM_VIRTIO_GPU is not set CONFIG_DRM_PANEL=y # @@ -4340,9 +4063,9 @@ CONFIG_DRM_PANEL=y # CONFIG_DRM_PANEL_BOE_BF060Y8M_AJ0 is not set # CONFIG_DRM_PANEL_BOE_HIMAX8279D is not set # CONFIG_DRM_PANEL_BOE_TV101WUM_NL6 is not set -CONFIG_DRM_PANEL_DSI_CM=y +# CONFIG_DRM_PANEL_DSI_CM is not set # CONFIG_DRM_PANEL_LVDS is not set -CONFIG_DRM_PANEL_SIMPLE=y +# CONFIG_DRM_PANEL_SIMPLE is not set # CONFIG_DRM_PANEL_EDP is not set # CONFIG_DRM_PANEL_EBBG_FT8719 is not set CONFIG_DRM_PANEL_ELIDA_KD35T133=y @@ -4364,10 +4087,10 @@ CONFIG_DRM_PANEL_ELIDA_KD35T133=y # CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set # CONFIG_DRM_PANEL_LG_LB035Q02 is not set # CONFIG_DRM_PANEL_LG_LG4573 is not set -# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set +CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=y # CONFIG_DRM_PANEL_NEC_NL8048HL11 is not set CONFIG_DRM_PANEL_NEWVISION_NV3051D=y -CONFIG_DRM_PANEL_NEWVISION_NV3052C=y +# CONFIG_DRM_PANEL_NEWVISION_NV3052C is not set # CONFIG_DRM_PANEL_NOVATEK_NT35510 is not set # CONFIG_DRM_PANEL_NOVATEK_NT35560 is not set # CONFIG_DRM_PANEL_NOVATEK_NT35950 is not set @@ -4401,7 +4124,7 @@ CONFIG_DRM_PANEL_NEWVISION_NV3052C=y # CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set # CONFIG_DRM_PANEL_SHARP_LS060T1SX01 is not set # CONFIG_DRM_PANEL_SITRONIX_ST7701 is not set -# CONFIG_DRM_PANEL_SITRONIX_ST7703 is not set +CONFIG_DRM_PANEL_SITRONIX_ST7703=y # CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set # CONFIG_DRM_PANEL_SONY_ACX565AKM is not set # CONFIG_DRM_PANEL_SONY_TD4353_JDI is not set @@ -4427,7 +4150,7 @@ CONFIG_DRM_PANEL_BRIDGE=y # # CONFIG_DRM_CHIPONE_ICN6211 is not set # CONFIG_DRM_CHRONTEL_CH7033 is not set -# CONFIG_DRM_DISPLAY_CONNECTOR is not set +CONFIG_DRM_DISPLAY_CONNECTOR=y # CONFIG_DRM_ITE_IT6505 is not set # CONFIG_DRM_LONTIUM_LT8912B is not set # CONFIG_DRM_LONTIUM_LT9211 is not set @@ -4442,7 +4165,7 @@ CONFIG_DRM_PANEL_BRIDGE=y # CONFIG_DRM_PARADE_PS8640 is not set # CONFIG_DRM_SAMSUNG_DSIM is not set # CONFIG_DRM_SIL_SII8620 is not set -CONFIG_DRM_SII902X=y +# CONFIG_DRM_SII902X is not set # CONFIG_DRM_SII9234 is not set # CONFIG_DRM_SIMPLE_BRIDGE is not set # CONFIG_DRM_THINE_THC63LVD1024 is not set @@ -4458,15 +4181,14 @@ CONFIG_DRM_SII902X=y # CONFIG_DRM_TI_TPD12S015 is not set # CONFIG_DRM_ANALOGIX_ANX6345 is not set # CONFIG_DRM_ANALOGIX_ANX78XX is not set -CONFIG_DRM_ANALOGIX_DP=y # CONFIG_DRM_ANALOGIX_ANX7625 is not set # CONFIG_DRM_I2C_ADV7511 is not set # CONFIG_DRM_CDNS_DSI is not set # CONFIG_DRM_CDNS_MHDP8546 is not set CONFIG_DRM_DW_HDMI=y -# CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set +CONFIG_DRM_DW_HDMI_AHB_AUDIO=y CONFIG_DRM_DW_HDMI_I2S_AUDIO=y -# CONFIG_DRM_DW_HDMI_GP_AUDIO is not set +CONFIG_DRM_DW_HDMI_GP_AUDIO=y CONFIG_DRM_DW_HDMI_CEC=y CONFIG_DRM_DW_MIPI_DSI=y # end of Display Interface Bridges @@ -4480,7 +4202,7 @@ CONFIG_DRM_DW_MIPI_DSI=y # CONFIG_DRM_BOCHS is not set # CONFIG_DRM_CIRRUS_QEMU is not set # CONFIG_DRM_GM12U320 is not set -# CONFIG_DRM_PANEL_MIPI_DBI is not set +CONFIG_DRM_PANEL_MIPI_DBI=y # CONFIG_DRM_SIMPLEDRM is not set # CONFIG_TINYDRM_HX8357D is not set # CONFIG_TINYDRM_ILI9163 is not set @@ -4543,7 +4265,7 @@ CONFIG_FB=y # CONFIG_FB_SM712 is not set CONFIG_FB_CORE=y CONFIG_FB_NOTIFY=y -# CONFIG_FIRMWARE_EDID is not set +CONFIG_FIRMWARE_EDID=y CONFIG_FB_DEVICE=y CONFIG_FB_SYS_FILLRECT=y CONFIG_FB_SYS_COPYAREA=y @@ -4554,7 +4276,7 @@ CONFIG_FB_DEFERRED_IO=y CONFIG_FB_DMAMEM_HELPERS=y CONFIG_FB_SYSMEM_HELPERS=y CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y -# CONFIG_FB_MODE_HELPERS is not set +CONFIG_FB_MODE_HELPERS=y # CONFIG_FB_TILEBLITTING is not set # end of Frame buffer Devices @@ -4576,7 +4298,7 @@ CONFIG_BACKLIGHT_PWM=y # CONFIG_BACKLIGHT_LV5207LP is not set # CONFIG_BACKLIGHT_BD6107 is not set # CONFIG_BACKLIGHT_ARCXCNN is not set -# CONFIG_BACKLIGHT_LED is not set +CONFIG_BACKLIGHT_LED=y # end of Backlight & LCD device support CONFIG_VIDEOMODE_HELPERS=y @@ -4606,7 +4328,6 @@ CONFIG_SND_PCM=y CONFIG_SND_PCM_ELD=y CONFIG_SND_PCM_IEC958=y CONFIG_SND_DMAENGINE_PCM=y -CONFIG_SND_HWDEP=y CONFIG_SND_SEQ_DEVICE=y CONFIG_SND_RAWMIDI=y CONFIG_SND_JACK=y @@ -4614,11 +4335,10 @@ CONFIG_SND_JACK_INPUT_DEV=y # CONFIG_SND_OSSEMUL is not set CONFIG_SND_PCM_TIMER=y CONFIG_SND_HRTIMER=y -CONFIG_SND_DYNAMIC_MINORS=y -CONFIG_SND_MAX_CARDS=32 +# CONFIG_SND_DYNAMIC_MINORS is not set # CONFIG_SND_SUPPORT_OLD_API is not set CONFIG_SND_PROC_FS=y -CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PROCFS is not set # CONFIG_SND_VERBOSE_PRINTK is not set CONFIG_SND_CTL_FAST_LOOKUP=y # CONFIG_SND_DEBUG is not set @@ -4629,37 +4349,81 @@ CONFIG_SND_SEQ_HRTIMER_DEFAULT=y CONFIG_SND_SEQ_MIDI_EVENT=y CONFIG_SND_SEQ_MIDI=y # CONFIG_SND_SEQ_UMP is not set -CONFIG_SND_DRIVERS=y -# CONFIG_SND_DUMMY is not set -# CONFIG_SND_ALOOP is not set -# CONFIG_SND_PCMTEST is not set -# CONFIG_SND_VIRMIDI is not set -# CONFIG_SND_MTPAV is not set -# CONFIG_SND_SERIAL_U16550 is not set -# CONFIG_SND_SERIAL_GENERIC is not set -# CONFIG_SND_MPU401 is not set -# CONFIG_SND_PCI is not set +# CONFIG_SND_DRIVERS is not set +CONFIG_SND_PCI=y +# CONFIG_SND_AD1889 is not set +# CONFIG_SND_ALS300 is not set +# CONFIG_SND_ALI5451 is not set +# CONFIG_SND_ATIIXP is not set +# CONFIG_SND_ATIIXP_MODEM is not set +# CONFIG_SND_AU8810 is not set +# CONFIG_SND_AU8820 is not set +# CONFIG_SND_AU8830 is not set +# CONFIG_SND_AW2 is not set +# CONFIG_SND_AZT3328 is not set +# CONFIG_SND_BT87X is not set +# CONFIG_SND_CA0106 is not set +# CONFIG_SND_CMIPCI is not set +# CONFIG_SND_OXYGEN is not set +# CONFIG_SND_CS4281 is not set +# CONFIG_SND_CS46XX is not set +# CONFIG_SND_CTXFI is not set +# CONFIG_SND_DARLA20 is not set +# CONFIG_SND_GINA20 is not set +# CONFIG_SND_LAYLA20 is not set +# CONFIG_SND_DARLA24 is not set +# CONFIG_SND_GINA24 is not set +# CONFIG_SND_LAYLA24 is not set +# CONFIG_SND_MONA is not set +# CONFIG_SND_MIA is not set +# CONFIG_SND_ECHO3G is not set +# CONFIG_SND_INDIGO is not set +# CONFIG_SND_INDIGOIO is not set +# CONFIG_SND_INDIGODJ is not set +# CONFIG_SND_INDIGOIOX is not set +# CONFIG_SND_INDIGODJX is not set +# CONFIG_SND_EMU10K1 is not set +# CONFIG_SND_EMU10K1X is not set +# CONFIG_SND_ENS1370 is not set +# CONFIG_SND_ENS1371 is not set +# CONFIG_SND_ES1938 is not set +# CONFIG_SND_ES1968 is not set +# CONFIG_SND_FM801 is not set +# CONFIG_SND_HDSP is not set +# CONFIG_SND_HDSPM is not set +# CONFIG_SND_ICE1712 is not set +# CONFIG_SND_ICE1724 is not set +# CONFIG_SND_INTEL8X0 is not set +# CONFIG_SND_INTEL8X0M is not set +# CONFIG_SND_KORG1212 is not set +# CONFIG_SND_LOLA is not set +# CONFIG_SND_LX6464ES is not set +# CONFIG_SND_MAESTRO3 is not set +# CONFIG_SND_MIXART is not set +# CONFIG_SND_NM256 is not set +# CONFIG_SND_PCXHR is not set +# CONFIG_SND_RIPTIDE is not set +# CONFIG_SND_RME32 is not set +# CONFIG_SND_RME96 is not set +# CONFIG_SND_RME9652 is not set +# CONFIG_SND_SE6X is not set +# CONFIG_SND_SONICVIBES is not set +# CONFIG_SND_TRIDENT is not set +# CONFIG_SND_VIA82XX is not set +# CONFIG_SND_VIA82XX_MODEM is not set +# CONFIG_SND_VIRTUOSO is not set +# CONFIG_SND_VX222 is not set +# CONFIG_SND_YMFPCI is not set # # HD-Audio # +# CONFIG_SND_HDA_INTEL is not set # end of HD-Audio CONFIG_SND_HDA_PREALLOC_SIZE=64 # CONFIG_SND_SPI is not set -CONFIG_SND_USB=y -CONFIG_SND_USB_AUDIO=y -# CONFIG_SND_USB_AUDIO_MIDI_V2 is not set -CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=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_USB_POD is not set -# CONFIG_SND_USB_PODHD is not set -# CONFIG_SND_USB_TONEPORT is not set -# CONFIG_SND_USB_VARIAX is not set +# CONFIG_SND_USB is not set CONFIG_SND_SOC=y CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y # CONFIG_SND_SOC_ADI is not set @@ -4696,10 +4460,10 @@ CONFIG_SND_SOC_ROCKCHIP_I2S=y CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=y CONFIG_SND_SOC_ROCKCHIP_PDM=y CONFIG_SND_SOC_ROCKCHIP_SPDIF=y -CONFIG_SND_SOC_ROCKCHIP_MAX98090=y -CONFIG_SND_SOC_ROCKCHIP_RT5645=y -# CONFIG_SND_SOC_RK3288_HDMI_ANALOG is not set -# CONFIG_SND_SOC_RK3399_GRU_SOUND is not set +# CONFIG_SND_SOC_ROCKCHIP_MAX98090 is not set +# CONFIG_SND_SOC_ROCKCHIP_RT5645 is not set +CONFIG_SND_SOC_RK3288_HDMI_ANALOG=y +CONFIG_SND_SOC_RK3399_GRU_SOUND=y # CONFIG_SND_SOC_SOF_TOPLEVEL is not set # @@ -4771,22 +4535,24 @@ CONFIG_SND_SOC_I2C_AND_SPI=y # CONFIG_SND_SOC_CS53L30 is not set # CONFIG_SND_SOC_CX2072X is not set # CONFIG_SND_SOC_DA7213 is not set -# CONFIG_SND_SOC_DMIC is not set +CONFIG_SND_SOC_DA7219=y +CONFIG_SND_SOC_DMIC=y CONFIG_SND_SOC_HDMI_CODEC=y # CONFIG_SND_SOC_ES7134 is not set # CONFIG_SND_SOC_ES7241 is not set -CONFIG_SND_SOC_ES8316=y +# CONFIG_SND_SOC_ES8316 is not set # CONFIG_SND_SOC_ES8326 is not set -# CONFIG_SND_SOC_ES8328_I2C is not set -# CONFIG_SND_SOC_ES8328_SPI is not set +CONFIG_SND_SOC_ES8328=y +CONFIG_SND_SOC_ES8328_I2C=y +CONFIG_SND_SOC_ES8328_SPI=y # CONFIG_SND_SOC_GTM601 is not set # CONFIG_SND_SOC_HDA is not set # CONFIG_SND_SOC_ICS43432 is not set # CONFIG_SND_SOC_IDT821034 is not set # CONFIG_SND_SOC_INNO_RK3036 is not set # CONFIG_SND_SOC_MAX98088 is not set -CONFIG_SND_SOC_MAX98090=y -# CONFIG_SND_SOC_MAX98357A is not set +# CONFIG_SND_SOC_MAX98090 is not set +CONFIG_SND_SOC_MAX98357A=y # CONFIG_SND_SOC_MAX98504 is not set # CONFIG_SND_SOC_MAX9867 is not set # CONFIG_SND_SOC_MAX98927 is not set @@ -4811,18 +4577,19 @@ CONFIG_SND_SOC_MAX98090=y # CONFIG_SND_SOC_PCM512x_I2C is not set # CONFIG_SND_SOC_PCM512x_SPI is not set # CONFIG_SND_SOC_PEB2466 is not set -CONFIG_SND_SOC_RK3328=y +# CONFIG_SND_SOC_RK3328 is not set CONFIG_SND_SOC_RK817=y CONFIG_SND_SOC_RL6231=y -CONFIG_SND_SOC_RT5616=y +CONFIG_SND_SOC_RT5514=y +CONFIG_SND_SOC_RT5514_SPI=y +# CONFIG_SND_SOC_RT5616 is not set # CONFIG_SND_SOC_RT5631 is not set -CONFIG_SND_SOC_RT5640=y -CONFIG_SND_SOC_RT5645=y +# CONFIG_SND_SOC_RT5640 is not set # CONFIG_SND_SOC_RT5659 is not set # CONFIG_SND_SOC_RT9120 is not set # CONFIG_SND_SOC_SGTL5000 is not set -# CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set -# CONFIG_SND_SOC_SIMPLE_MUX is not set +CONFIG_SND_SOC_SIMPLE_AMPLIFIER=y +CONFIG_SND_SOC_SIMPLE_MUX=y # CONFIG_SND_SOC_SMA1303 is not set CONFIG_SND_SOC_SPDIF=y # CONFIG_SND_SOC_SRC4XXX_I2C is not set @@ -4858,7 +4625,7 @@ CONFIG_SND_SOC_SPDIF=y # CONFIG_SND_SOC_TLV320AIC3X_I2C is not set # CONFIG_SND_SOC_TLV320AIC3X_SPI is not set # CONFIG_SND_SOC_TLV320ADCX140 is not set -CONFIG_SND_SOC_TS3A227E=y +# CONFIG_SND_SOC_TS3A227E is not set # CONFIG_SND_SOC_TSCS42XX is not set # CONFIG_SND_SOC_TSCS454 is not set # CONFIG_SND_SOC_UDA1334 is not set @@ -4908,8 +4675,9 @@ CONFIG_SND_SOC_TS3A227E=y CONFIG_SND_SIMPLE_CARD_UTILS=y CONFIG_SND_SIMPLE_CARD=y -# CONFIG_SND_AUDIO_GRAPH_CARD is not set -# CONFIG_SND_AUDIO_GRAPH_CARD2 is not set +CONFIG_SND_AUDIO_GRAPH_CARD=y +CONFIG_SND_AUDIO_GRAPH_CARD2=y +# CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE is not set # CONFIG_SND_TEST_COMPONENT is not set CONFIG_HID_SUPPORT=y CONFIG_HID=y @@ -4968,7 +4736,7 @@ CONFIG_HID_GENERIC=y # CONFIG_HID_ITE is not set # CONFIG_HID_JABRA is not set # CONFIG_HID_TWINHAN is not set -CONFIG_HID_KENSINGTON=y +# CONFIG_HID_KENSINGTON is not set # CONFIG_HID_LCPOWER is not set # CONFIG_HID_LED is not set # CONFIG_HID_LENOVO is not set @@ -4992,6 +4760,7 @@ CONFIG_HID_MULTITOUCH=y # CONFIG_HID_PETALYNX is not set # CONFIG_HID_PICOLCD is not set # CONFIG_HID_PLANTRONICS is not set +# CONFIG_HID_PLAYSTATION is not set # CONFIG_HID_PXRC is not set # CONFIG_HID_RAZER is not set # CONFIG_HID_PRIMAX is not set @@ -5001,9 +4770,11 @@ CONFIG_HID_MULTITOUCH=y # CONFIG_HID_SAMSUNG is not set # CONFIG_HID_SEMITEK is not set # CONFIG_HID_SIGMAMICRO is not set -# CONFIG_HID_SONY is not set +CONFIG_HID_SONY=y +# CONFIG_SONY_FF is not set # CONFIG_HID_SPEEDLINK is not set -# CONFIG_HID_STEAM is not set +CONFIG_HID_STEAM=y +# CONFIG_STEAM_FF is not set # CONFIG_HID_STEELSERIES is not set # CONFIG_HID_SUNPLUS is not set # CONFIG_HID_RMI is not set @@ -5021,7 +4792,8 @@ CONFIG_HID_MULTITOUCH=y # CONFIG_HID_XINMO is not set # CONFIG_HID_ZEROPLUS is not set # CONFIG_HID_ZYDACRON is not set -# CONFIG_HID_SENSOR_HUB is not set +CONFIG_HID_SENSOR_HUB=y +# CONFIG_HID_SENSOR_CUSTOM_SENSOR is not set # CONFIG_HID_ALPS is not set # CONFIG_HID_MCP2221 is not set # end of Special HID drivers @@ -5047,8 +4819,8 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y CONFIG_USB_SUPPORT=y CONFIG_USB_COMMON=y # CONFIG_USB_LED_TRIG is not set -# CONFIG_USB_ULPI_BUS is not set -# CONFIG_USB_CONN_GPIO is not set +CONFIG_USB_ULPI_BUS=y +CONFIG_USB_CONN_GPIO=y CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB=y CONFIG_USB_PCI=y @@ -5057,13 +4829,13 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y # # Miscellaneous USB options # -# CONFIG_USB_DEFAULT_PERSIST is not set +CONFIG_USB_DEFAULT_PERSIST=y # CONFIG_USB_FEW_INIT_RETRIES is not set # CONFIG_USB_DYNAMIC_MINORS is not set CONFIG_USB_OTG=y # CONFIG_USB_OTG_PRODUCTLIST is not set # CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set -# CONFIG_USB_OTG_FSM is not set +CONFIG_USB_OTG_FSM=y # CONFIG_USB_LEDS_TRIGGER_USBPORT is not set CONFIG_USB_AUTOSUSPEND_DELAY=2 CONFIG_USB_MON=y @@ -5087,7 +4859,7 @@ CONFIG_USB_EHCI_HCD_PLATFORM=y # CONFIG_USB_ISP116X_HCD is not set # CONFIG_USB_MAX3421_HCD is not set CONFIG_USB_OHCI_HCD=y -# CONFIG_USB_OHCI_HCD_PCI is not set +CONFIG_USB_OHCI_HCD_PCI=y CONFIG_USB_OHCI_HCD_PLATFORM=y # CONFIG_USB_UHCI_HCD is not set # CONFIG_USB_SL811_HCD is not set @@ -5097,7 +4869,7 @@ CONFIG_USB_OHCI_HCD_PLATFORM=y # # USB Device Class drivers # -CONFIG_USB_ACM=y +# CONFIG_USB_ACM is not set # CONFIG_USB_PRINTER is not set CONFIG_USB_WDM=y # CONFIG_USB_TMC is not set @@ -5139,6 +4911,7 @@ CONFIG_USB_UAS=y # CONFIG_USB_CDNS_SUPPORT is not set # CONFIG_USB_MUSB_HDRC is not set CONFIG_USB_DWC3=y +CONFIG_USB_DWC3_ULPI=y # CONFIG_USB_DWC3_HOST is not set # CONFIG_USB_DWC3_GADGET is not set CONFIG_USB_DWC3_DUAL_ROLE=y @@ -5254,19 +5027,19 @@ CONFIG_USB_EZUSB_FX2=y # # USB Physical Layer drivers # +CONFIG_USB_PHY=y # CONFIG_NOP_USB_XCEIV is not set -# CONFIG_USB_GPIO_VBUS is not set # CONFIG_USB_ISP1301 is not set -# CONFIG_USB_ULPI is not set +CONFIG_USB_ULPI=y +CONFIG_USB_ULPI_VIEWPORT=y # end of USB Physical Layer drivers CONFIG_USB_GADGET=y # CONFIG_USB_GADGET_DEBUG is not set -CONFIG_USB_GADGET_DEBUG_FILES=y -# CONFIG_USB_GADGET_DEBUG_FS is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set CONFIG_USB_GADGET_VBUS_DRAW=500 CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 -# CONFIG_U_SERIAL_CONSOLE is not set +CONFIG_U_SERIAL_CONSOLE=y # # USB Peripheral Controller @@ -5291,32 +5064,41 @@ CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 CONFIG_USB_LIBCOMPOSITE=y CONFIG_USB_F_ACM=y +CONFIG_USB_F_SS_LB=y CONFIG_USB_U_SERIAL=y -CONFIG_USB_F_SERIAL=m -CONFIG_USB_F_OBEX=m +CONFIG_USB_U_ETHER=y +CONFIG_USB_F_SERIAL=y +CONFIG_USB_F_OBEX=y +CONFIG_USB_F_NCM=y +CONFIG_USB_F_ECM=y +CONFIG_USB_F_EEM=y +CONFIG_USB_F_SUBSET=y +CONFIG_USB_F_RNDIS=y CONFIG_USB_F_MASS_STORAGE=y CONFIG_USB_F_FS=y -CONFIG_USB_F_UVC=y +CONFIG_USB_F_MIDI=y +CONFIG_USB_F_HID=y +CONFIG_USB_F_PRINTER=y CONFIG_USB_CONFIGFS=y -# CONFIG_USB_CONFIGFS_SERIAL is not set +CONFIG_USB_CONFIGFS_SERIAL=y CONFIG_USB_CONFIGFS_ACM=y -# CONFIG_USB_CONFIGFS_OBEX is not set -# CONFIG_USB_CONFIGFS_NCM is not set -# CONFIG_USB_CONFIGFS_ECM is not set -# CONFIG_USB_CONFIGFS_ECM_SUBSET is not set -# CONFIG_USB_CONFIGFS_RNDIS is not set -# CONFIG_USB_CONFIGFS_EEM is not set +CONFIG_USB_CONFIGFS_OBEX=y +CONFIG_USB_CONFIGFS_NCM=y +CONFIG_USB_CONFIGFS_ECM=y +CONFIG_USB_CONFIGFS_ECM_SUBSET=y +CONFIG_USB_CONFIGFS_RNDIS=y +CONFIG_USB_CONFIGFS_EEM=y CONFIG_USB_CONFIGFS_MASS_STORAGE=y -# CONFIG_USB_CONFIGFS_F_LB_SS is not set +CONFIG_USB_CONFIGFS_F_LB_SS=y CONFIG_USB_CONFIGFS_F_FS=y # CONFIG_USB_CONFIGFS_F_UAC1 is not set # CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set # CONFIG_USB_CONFIGFS_F_UAC2 is not set -# CONFIG_USB_CONFIGFS_F_MIDI is not set +CONFIG_USB_CONFIGFS_F_MIDI=y # CONFIG_USB_CONFIGFS_F_MIDI2 is not set -# CONFIG_USB_CONFIGFS_F_HID is not set -CONFIG_USB_CONFIGFS_F_UVC=y -# CONFIG_USB_CONFIGFS_F_PRINTER is not set +CONFIG_USB_CONFIGFS_F_HID=y +# CONFIG_USB_CONFIGFS_F_UVC is not set +CONFIG_USB_CONFIGFS_F_PRINTER=y # # USB Gadget precomposed configurations @@ -5325,13 +5107,10 @@ CONFIG_USB_CONFIGFS_F_UVC=y # CONFIG_USB_AUDIO is not set # CONFIG_USB_ETH is not set # CONFIG_USB_G_NCM is not set -CONFIG_USB_GADGETFS=m -CONFIG_USB_FUNCTIONFS=m -# CONFIG_USB_FUNCTIONFS_ETH is not set -# CONFIG_USB_FUNCTIONFS_RNDIS is not set -CONFIG_USB_FUNCTIONFS_GENERIC=y -CONFIG_USB_MASS_STORAGE=m -CONFIG_USB_G_SERIAL=m +# 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 @@ -5347,7 +5126,6 @@ CONFIG_USB_G_SERIAL=m CONFIG_USB_ROLE_SWITCH=y CONFIG_MMC=y CONFIG_PWRSEQ_EMMC=y -# CONFIG_PWRSEQ_SD8787 is not set CONFIG_PWRSEQ_SIMPLE=y CONFIG_MMC_BLOCK=y CONFIG_MMC_BLOCK_MINORS=32 @@ -5384,7 +5162,7 @@ CONFIG_MMC_DW_ROCKCHIP=y # CONFIG_MMC_USHC is not set # CONFIG_MMC_USDHI6ROL0 is not set CONFIG_MMC_CQHCI=y -# CONFIG_MMC_HSQ is not set +CONFIG_MMC_HSQ=y # CONFIG_MMC_TOSHIBA_PCI is not set # CONFIG_MMC_MTK is not set # CONFIG_MMC_SDHCI_XENON is not set @@ -5395,7 +5173,7 @@ CONFIG_MMC_CQHCI=y CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y CONFIG_LEDS_CLASS_FLASH=y -# CONFIG_LEDS_CLASS_MULTICOLOR is not set +CONFIG_LEDS_CLASS_MULTICOLOR=y # CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set # @@ -5424,7 +5202,7 @@ CONFIG_LEDS_GPIO=y # CONFIG_LEDS_PCA995X is not set # CONFIG_LEDS_DAC124S085 is not set CONFIG_LEDS_PWM=y -# CONFIG_LEDS_REGULATOR is not set +CONFIG_LEDS_REGULATOR=y # CONFIG_LEDS_BD2606MVV is not set # CONFIG_LEDS_BD2802 is not set # CONFIG_LEDS_LT3593 is not set @@ -5432,7 +5210,7 @@ CONFIG_LEDS_PWM=y # CONFIG_LEDS_TLC591XX is not set # CONFIG_LEDS_LM355x is not set # CONFIG_LEDS_IS31FL319X is not set -CONFIG_LEDS_IS31FL32XX=y +# CONFIG_LEDS_IS31FL32XX is not set # # LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) @@ -5440,7 +5218,7 @@ CONFIG_LEDS_IS31FL32XX=y # CONFIG_LEDS_BLINKM is not set # CONFIG_LEDS_SYSCON is not set # CONFIG_LEDS_MLXREG is not set -# CONFIG_LEDS_USER is not set +CONFIG_LEDS_USER=y # CONFIG_LEDS_SPI_BYTE is not set # CONFIG_LEDS_LM3697 is not set @@ -5458,31 +5236,32 @@ CONFIG_LEDS_IS31FL32XX=y # # RGB LED drivers # +# CONFIG_LEDS_GROUP_MULTICOLOR is not set +# CONFIG_LEDS_PWM_MULTICOLOR is not set # # LED Triggers # CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGER_TIMER=y -# CONFIG_LEDS_TRIGGER_ONESHOT is not set -# CONFIG_LEDS_TRIGGER_DISK is not set -# CONFIG_LEDS_TRIGGER_MTD 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_ACTIVITY is not set -# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set +CONFIG_LEDS_TRIGGER_ONESHOT=y +CONFIG_LEDS_TRIGGER_MTD=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_ACTIVITY=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y # # iptables trigger is under Netfilter config (LED target) # -# CONFIG_LEDS_TRIGGER_TRANSIENT is not set -# CONFIG_LEDS_TRIGGER_CAMERA is not set -# CONFIG_LEDS_TRIGGER_PANIC is not set -# CONFIG_LEDS_TRIGGER_NETDEV is not set -# CONFIG_LEDS_TRIGGER_PATTERN is not set -# CONFIG_LEDS_TRIGGER_AUDIO is not set -# CONFIG_LEDS_TRIGGER_TTY is not set +CONFIG_LEDS_TRIGGER_TRANSIENT=y +CONFIG_LEDS_TRIGGER_CAMERA=y +CONFIG_LEDS_TRIGGER_PANIC=y +CONFIG_LEDS_TRIGGER_NETDEV=y +CONFIG_LEDS_TRIGGER_PATTERN=y +CONFIG_LEDS_TRIGGER_AUDIO=y +CONFIG_LEDS_TRIGGER_TTY=y # # Simple LED drivers @@ -5518,7 +5297,7 @@ CONFIG_RTC_INTF_DEV=y # CONFIG_RTC_DRV_DS1307 is not set # CONFIG_RTC_DRV_DS1374 is not set # CONFIG_RTC_DRV_DS1672 is not set -CONFIG_RTC_DRV_HYM8563=y +# CONFIG_RTC_DRV_HYM8563 is not set # CONFIG_RTC_DRV_MAX6900 is not set # CONFIG_RTC_DRV_NCT3018Y is not set CONFIG_RTC_DRV_RK808=y @@ -5534,7 +5313,6 @@ CONFIG_RTC_DRV_RK808=y # CONFIG_RTC_DRV_PCF8583 is not set # CONFIG_RTC_DRV_M41T80 is not set # CONFIG_RTC_DRV_BQ32K is not set -# CONFIG_RTC_DRV_TPS6586X is not set # CONFIG_RTC_DRV_S35390A is not set # CONFIG_RTC_DRV_FM3130 is not set # CONFIG_RTC_DRV_RX8010 is not set @@ -5588,6 +5366,7 @@ CONFIG_RTC_I2C_AND_SPI=y # CONFIG_RTC_DRV_M48T59 is not set # CONFIG_RTC_DRV_MSM6242 is not set # CONFIG_RTC_DRV_RP5C01 is not set +# CONFIG_RTC_DRV_OPTEE is not set # CONFIG_RTC_DRV_ZYNQMP is not set # @@ -5602,6 +5381,7 @@ CONFIG_RTC_I2C_AND_SPI=y # # HID Sensor RTC drivers # +# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set # CONFIG_RTC_DRV_GOLDFISH is not set CONFIG_DMADEVICES=y # CONFIG_DMADEVICES_DEBUG is not set @@ -5641,25 +5421,21 @@ CONFIG_PL330_DMA=y # DMABUF options # CONFIG_SYNC_FILE=y -# CONFIG_SW_SYNC is not set -# CONFIG_UDMABUF is not set +CONFIG_UDMABUF=y # CONFIG_DMABUF_MOVE_NOTIFY is not set # CONFIG_DMABUF_DEBUG is not set # CONFIG_DMABUF_SELFTESTS is not set -# CONFIG_DMABUF_HEAPS is not set +CONFIG_DMABUF_HEAPS=y # CONFIG_DMABUF_SYSFS_STATS is not set +CONFIG_DMABUF_HEAPS_SYSTEM=y # end of DMABUF options # CONFIG_UIO is not set # CONFIG_VFIO is not set # CONFIG_VIRT_DRIVERS is not set -CONFIG_VIRTIO_MENU=y -# CONFIG_VIRTIO_PCI is not set -# CONFIG_VIRTIO_MMIO is not set +# CONFIG_VIRTIO_MENU is not set # CONFIG_VDPA is not set -CONFIG_VHOST_MENU=y -# CONFIG_VHOST_NET is not set -# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set +# CONFIG_VHOST_MENU is not set # # Microsoft Hyper-V guest support @@ -5672,7 +5448,7 @@ CONFIG_STAGING=y # CONFIG_PRISM2_USB is not set # CONFIG_RTL8192U is not set # CONFIG_RTLLIB is not set -# CONFIG_RTL8723BS is not set +CONFIG_RTL8723BS=m # CONFIG_R8712U is not set # CONFIG_RTS5208 is not set # CONFIG_VT6655 is not set @@ -5722,7 +5498,11 @@ CONFIG_STAGING=y # end of IIO staging drivers # CONFIG_FB_SM750 is not set -# CONFIG_STAGING_MEDIA is not set +CONFIG_STAGING_MEDIA=y +# CONFIG_DVB_AV7110 is not set +# CONFIG_VIDEO_MAX96712 is not set +CONFIG_VIDEO_ROCKCHIP_VDEC=y +# CONFIG_STAGING_MEDIA_DEPRECATED is not set # CONFIG_STAGING_BOARD is not set # CONFIG_LTE_GDM724X is not set # CONFIG_FB_TFT is not set @@ -5733,11 +5513,9 @@ CONFIG_STAGING=y # CONFIG_QLGE is not set # CONFIG_VME_BUS is not set # CONFIG_GOLDFISH is not set -CONFIG_CHROME_PLATFORMS=y -# CONFIG_CROS_EC is not set -# CONFIG_CROS_HPS_I2C is not set +# CONFIG_CHROME_PLATFORMS is not set # CONFIG_MELLANOX_PLATFORM is not set -CONFIG_SURFACE_PLATFORMS=y +# CONFIG_SURFACE_PLATFORMS is not set CONFIG_HAVE_CLK=y CONFIG_HAVE_CLK_PREPARE=y CONFIG_COMMON_CLK=y @@ -5753,6 +5531,7 @@ CONFIG_COMMON_CLK=y # CONFIG_COMMON_CLK_MAX9485 is not set CONFIG_COMMON_CLK_RK808=y CONFIG_COMMON_CLK_SCMI=y +CONFIG_COMMON_CLK_SCPI=y # CONFIG_COMMON_CLK_SI5341 is not set # CONFIG_COMMON_CLK_SI5351 is not set # CONFIG_COMMON_CLK_SI514 is not set @@ -5762,14 +5541,14 @@ CONFIG_COMMON_CLK_SCMI=y # CONFIG_COMMON_CLK_CDCE925 is not set # CONFIG_COMMON_CLK_CS2000_CP is not set # CONFIG_COMMON_CLK_AXI_CLKGEN is not set -CONFIG_COMMON_CLK_XGENE=y -# CONFIG_COMMON_CLK_PWM is not set +# CONFIG_COMMON_CLK_XGENE is not set +CONFIG_COMMON_CLK_PWM=y # CONFIG_COMMON_CLK_RS9_PCIE is not set # CONFIG_COMMON_CLK_SI521XX is not set # CONFIG_COMMON_CLK_VC3 is not set # CONFIG_COMMON_CLK_VC5 is not set # CONFIG_COMMON_CLK_VC7 is not set -# CONFIG_COMMON_CLK_FIXED_MMIO is not set +CONFIG_COMMON_CLK_FIXED_MMIO=y CONFIG_COMMON_CLK_ROCKCHIP=y CONFIG_CLK_PX30=y CONFIG_CLK_RK3308=y @@ -5791,10 +5570,9 @@ CONFIG_CLKSRC_MMIO=y CONFIG_ROCKCHIP_TIMER=y CONFIG_ARM_ARCH_TIMER=y CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y -CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y -CONFIG_FSL_ERRATUM_A008585=y -CONFIG_HISILICON_ERRATUM_161010101=y -CONFIG_ARM64_ERRATUM_858921=y +# CONFIG_FSL_ERRATUM_A008585 is not set +# CONFIG_HISILICON_ERRATUM_161010101 is not set +# CONFIG_ARM64_ERRATUM_858921 is not set # end of Clock Source drivers CONFIG_MAILBOX=y @@ -5819,7 +5597,6 @@ CONFIG_IOMMU_IO_PGTABLE_LPAE=y # CONFIG_IOMMU_IO_PGTABLE_DART is not set # end of Generic IOMMU Pagetable Support -# CONFIG_IOMMU_DEBUGFS is not set CONFIG_IOMMU_DEFAULT_DMA_STRICT=y # CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set # CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set @@ -5910,12 +5687,12 @@ CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y CONFIG_DEVFREQ_GOV_PERFORMANCE=y CONFIG_DEVFREQ_GOV_POWERSAVE=y CONFIG_DEVFREQ_GOV_USERSPACE=y -# CONFIG_DEVFREQ_GOV_PASSIVE is not set +CONFIG_DEVFREQ_GOV_PASSIVE=y # # DEVFREQ Drivers # -# CONFIG_ARM_RK3399_DMC_DEVFREQ is not set +CONFIG_ARM_RK3399_DMC_DEVFREQ=y CONFIG_PM_DEVFREQ_EVENT=y CONFIG_DEVFREQ_EVENT_ROCKCHIP_DFI=y CONFIG_EXTCON=y @@ -5923,30 +5700,30 @@ CONFIG_EXTCON=y # # Extcon Device Drivers # -# CONFIG_EXTCON_ADC_JACK is not set +CONFIG_EXTCON_ADC_JACK=y # CONFIG_EXTCON_FSA9480 is not set -# CONFIG_EXTCON_GPIO is not set +CONFIG_EXTCON_GPIO=y # CONFIG_EXTCON_MAX3355 is not set # CONFIG_EXTCON_PTN5150 is not set # CONFIG_EXTCON_RT8973A is not set # CONFIG_EXTCON_SM5502 is not set -# CONFIG_EXTCON_USB_GPIO is not set +CONFIG_EXTCON_USB_GPIO=y CONFIG_MEMORY=y # CONFIG_ARM_PL172_MPMC is not set CONFIG_IIO=y CONFIG_IIO_BUFFER=y -# CONFIG_IIO_BUFFER_CB is not set +CONFIG_IIO_BUFFER_CB=y # CONFIG_IIO_BUFFER_DMA is not set # CONFIG_IIO_BUFFER_DMAENGINE is not set -# CONFIG_IIO_BUFFER_HW_CONSUMER is not set +CONFIG_IIO_BUFFER_HW_CONSUMER=y CONFIG_IIO_KFIFO_BUF=y CONFIG_IIO_TRIGGERED_BUFFER=y -# CONFIG_IIO_CONFIGFS is not set +CONFIG_IIO_CONFIGFS=y CONFIG_IIO_TRIGGER=y CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 -# CONFIG_IIO_SW_DEVICE is not set -# CONFIG_IIO_SW_TRIGGER is not set -# CONFIG_IIO_TRIGGERED_EVENT is not set +CONFIG_IIO_SW_DEVICE=y +CONFIG_IIO_SW_TRIGGER=y +CONFIG_IIO_TRIGGERED_EVENT=y # # Accelerometers @@ -5975,6 +5752,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_DMARD10 is not set # CONFIG_FXLS8962AF_I2C is not set # CONFIG_FXLS8962AF_SPI is not set +# CONFIG_HID_SENSOR_ACCEL_3D is not set # CONFIG_IIO_ST_ACCEL_3AXIS is not set # CONFIG_IIO_KX022A_SPI is not set # CONFIG_IIO_KX022A_I2C is not set @@ -6117,6 +5895,8 @@ CONFIG_ROCKCHIP_SARADC=y # # Hid Sensor IIO Common # +CONFIG_HID_SENSOR_IIO_COMMON=y +CONFIG_HID_SENSOR_IIO_TRIGGER=y # end of Hid Sensor IIO Common # @@ -6179,6 +5959,7 @@ CONFIG_ROCKCHIP_SARADC=y # # IIO dummy driver # +# CONFIG_IIO_SIMPLE_DUMMY is not set # end of IIO dummy driver # @@ -6221,6 +6002,7 @@ CONFIG_ROCKCHIP_SARADC=y # CONFIG_ADXRS450 is not set # CONFIG_BMG160 is not set # CONFIG_FXAS21002C is not set +# CONFIG_HID_SENSOR_GYRO_3D is not set # CONFIG_MPU3050_I2C is not set # CONFIG_IIO_ST_GYRO_3AXIS is not set # CONFIG_ITG3200 is not set @@ -6247,6 +6029,7 @@ CONFIG_ROCKCHIP_SARADC=y # CONFIG_DHT11 is not set # CONFIG_HDC100X is not set # CONFIG_HDC2010 is not set +# CONFIG_HID_SENSOR_HUMIDITY is not set # CONFIG_HTS221 is not set # CONFIG_HTU21 is not set # CONFIG_SI7005 is not set @@ -6294,9 +6077,11 @@ CONFIG_ROCKCHIP_SARADC=y # CONFIG_CM36651 is not set # CONFIG_GP2AP002 is not set # CONFIG_GP2AP020A00F is not set -CONFIG_SENSORS_ISL29018=y +# CONFIG_SENSORS_ISL29018 is not set # CONFIG_SENSORS_ISL29028 is not set # CONFIG_ISL29125 is not set +# CONFIG_HID_SENSOR_ALS is not set +# CONFIG_HID_SENSOR_PROX is not set # CONFIG_JSA1212 is not set # CONFIG_ROHM_BU27008 is not set # CONFIG_ROHM_BU27034 is not set @@ -6316,8 +6101,8 @@ CONFIG_SENSORS_ISL29018=y # CONFIG_ST_UVIS25 is not set # CONFIG_TCS3414 is not set # CONFIG_TCS3472 is not set -CONFIG_SENSORS_TSL2563=y -CONFIG_TSL2583=y +# CONFIG_SENSORS_TSL2563 is not set +# CONFIG_TSL2583 is not set # CONFIG_TSL2591 is not set # CONFIG_TSL2772 is not set # CONFIG_TSL4531 is not set @@ -6339,6 +6124,7 @@ CONFIG_TSL2583=y # CONFIG_BMC150_MAGN_I2C is not set # CONFIG_BMC150_MAGN_SPI is not set # CONFIG_MAG3110 is not set +# CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set # CONFIG_MMC35240 is not set # CONFIG_IIO_ST_MAGN_3AXIS is not set # CONFIG_SENSORS_HMC5843_I2C is not set @@ -6352,24 +6138,29 @@ CONFIG_TSL2583=y # # Multiplexers # -# CONFIG_IIO_MUX is not set +CONFIG_IIO_MUX=y # end of Multiplexers # # Inclinometer sensors # +# CONFIG_HID_SENSOR_INCLINOMETER_3D is not set +# CONFIG_HID_SENSOR_DEVICE_ROTATION is not set # end of Inclinometer sensors # # Triggers - standalone # +CONFIG_IIO_HRTIMER_TRIGGER=y # CONFIG_IIO_INTERRUPT_TRIGGER is not set +# CONFIG_IIO_TIGHTLOOP_TRIGGER is not set CONFIG_IIO_SYSFS_TRIGGER=y # end of Triggers - standalone # # Linear and angular position sensors # +# CONFIG_HID_SENSOR_CUSTOM_INTEL_HINGE is not set # end of Linear and angular position sensors # @@ -6402,6 +6193,7 @@ CONFIG_IIO_SYSFS_TRIGGER=y # CONFIG_BMP280 is not set # CONFIG_DLHL60D is not set # CONFIG_DPS310 is not set +# CONFIG_HID_SENSOR_PRESS is not set # CONFIG_HP03 is not set # CONFIG_ICP10100 is not set # CONFIG_MPL115_I2C is not set @@ -6453,6 +6245,7 @@ CONFIG_IIO_SYSFS_TRIGGER=y # # CONFIG_LTC2983 is not set # CONFIG_MAXIM_THERMOCOUPLE is not set +# CONFIG_HID_SENSOR_TEMP is not set # CONFIG_MLX90614 is not set # CONFIG_MLX90632 is not set # CONFIG_TMP006 is not set @@ -6524,6 +6317,8 @@ CONFIG_GENERIC_PHY_MIPI_DPHY=y # CONFIG_PHY_CPCAP_USB is not set # CONFIG_PHY_MAPPHONE_MDM6600 is not set # CONFIG_PHY_OCELOT_SERDES is not set +# CONFIG_PHY_QCOM_USB_HS is not set +# CONFIG_PHY_QCOM_USB_HSIC is not set # CONFIG_PHY_RTK_RTD_USB2PHY is not set # CONFIG_PHY_RTK_RTD_USB3PHY is not set CONFIG_PHY_ROCKCHIP_DP=y @@ -6535,14 +6330,32 @@ CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY=y CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=y CONFIG_PHY_ROCKCHIP_PCIE=y -CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y +# CONFIG_PHY_ROCKCHIP_SNPS_PCIE3 is not set CONFIG_PHY_ROCKCHIP_TYPEC=y CONFIG_PHY_ROCKCHIP_USB=y # CONFIG_PHY_SAMSUNG_USB2 is not set +# CONFIG_PHY_TUSB1210 is not set # end of PHY Subsystem # CONFIG_POWERCAP is not set # CONFIG_MCB is not set + +# +# Performance monitor support +# +# CONFIG_ARM_CCI_PMU is not set +# CONFIG_ARM_CCN is not set +# CONFIG_ARM_CMN is not set +CONFIG_ARM_PMU=y +CONFIG_ARM_SMMU_V3_PMU=y +CONFIG_ARM_PMUV3=y +# CONFIG_ARM_DSU_PMU is not set +# CONFIG_ARM_SPE_PMU is not set +# CONFIG_HISI_PCIE_PMU is not set +# CONFIG_HNS3_PMU is not set +# CONFIG_ARM_CORESIGHT_PMU_ARCH_SYSTEM_PMU is not set +# end of Performance monitor support + CONFIG_RAS=y # CONFIG_USB4 is not set @@ -6574,11 +6387,25 @@ CONFIG_NVMEM_SYSFS=y # # CONFIG_STM is not set # CONFIG_INTEL_TH is not set +# CONFIG_HISI_PTT is not set # end of HW tracing support # CONFIG_FPGA is not set # CONFIG_FSI is not set -# CONFIG_TEE is not set +CONFIG_TEE=y +CONFIG_OPTEE=y +# CONFIG_OPTEE_INSECURE_LOAD_IMAGE is not set +CONFIG_MULTIPLEXER=y + +# +# Multiplexer drivers +# +# CONFIG_MUX_ADG792A is not set +# CONFIG_MUX_ADGS1408 is not set +CONFIG_MUX_GPIO=y +# CONFIG_MUX_MMIO is not set +# end of Multiplexer drivers + CONFIG_PM_OPP=y # CONFIG_SIOX is not set # CONFIG_SLIMBUS is not set @@ -6610,55 +6437,62 @@ CONFIG_JBD2=y CONFIG_FS_MBCACHE=y # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set -CONFIG_XFS_FS=y -CONFIG_XFS_SUPPORT_V4=y -CONFIG_XFS_SUPPORT_ASCII_CI=y -# CONFIG_XFS_QUOTA is not set -# CONFIG_XFS_POSIX_ACL is not set -# CONFIG_XFS_RT is not set -# CONFIG_XFS_ONLINE_SCRUB is not set -# CONFIG_XFS_WARN is not set -# CONFIG_XFS_DEBUG is not set +# CONFIG_XFS_FS is not set # CONFIG_GFS2_FS is not set # CONFIG_OCFS2_FS is not set # CONFIG_BTRFS_FS is not set # CONFIG_NILFS2_FS is not set -# CONFIG_F2FS_FS is not set +CONFIG_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_FAULT_INJECTION is not set +# CONFIG_F2FS_FS_COMPRESSION is not set +CONFIG_F2FS_IOSTAT=y +# CONFIG_F2FS_UNFAIR_RWSEM is not set CONFIG_FS_POSIX_ACL=y CONFIG_EXPORTFS=y # CONFIG_EXPORTFS_BLOCK_OPS is not set CONFIG_FILE_LOCKING=y -# CONFIG_FS_ENCRYPTION is not set -# CONFIG_FS_VERITY is not set +CONFIG_FS_ENCRYPTION=y +CONFIG_FS_ENCRYPTION_ALGS=y +CONFIG_FS_VERITY=y +CONFIG_FS_VERITY_BUILTIN_SIGNATURES=y CONFIG_FSNOTIFY=y -# CONFIG_DNOTIFY is not set +CONFIG_DNOTIFY=y CONFIG_INOTIFY_USER=y -# CONFIG_FANOTIFY is not set -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set +CONFIG_FANOTIFY=y +# CONFIG_FANOTIFY_ACCESS_PERMISSIONS is not set +CONFIG_QUOTA=y +CONFIG_QUOTA_NETLINK_INTERFACE=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_AUTOFS_FS=y CONFIG_FUSE_FS=y # CONFIG_CUSE is not set # CONFIG_VIRTIO_FS is not set -CONFIG_OVERLAY_FS=y -# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set -CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y -# CONFIG_OVERLAY_FS_INDEX is not set -# CONFIG_OVERLAY_FS_XINO_AUTO is not set -# CONFIG_OVERLAY_FS_METACOPY is not set -# CONFIG_OVERLAY_FS_DEBUG is not set +# CONFIG_OVERLAY_FS is not set # # Caches # -# CONFIG_FSCACHE is not set +CONFIG_NETFS_SUPPORT=y +# CONFIG_NETFS_STATS is not set +CONFIG_FSCACHE=y +# CONFIG_FSCACHE_STATS is not set +# CONFIG_FSCACHE_DEBUG is not set +# CONFIG_CACHEFILES is not set # end of Caches # # CD-ROM/DVD Filesystems # -CONFIG_ISO9660_FS=y -CONFIG_JOLIET=y -CONFIG_ZISOFS=y +# CONFIG_ISO9660_FS is not set # CONFIG_UDF_FS is not set # end of CD-ROM/DVD Filesystems @@ -6666,11 +6500,11 @@ CONFIG_ZISOFS=y # DOS/FAT/EXFAT/NT Filesystems # CONFIG_FAT_FS=y -# CONFIG_MSDOS_FS is not set +CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y -CONFIG_FAT_DEFAULT_CODEPAGE=936 -CONFIG_FAT_DEFAULT_IOCHARSET="utf8" -CONFIG_FAT_DEFAULT_UTF8=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_FAT_DEFAULT_UTF8 is not set CONFIG_EXFAT_FS=y CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8" # CONFIG_NTFS_FS is not set @@ -6708,24 +6542,7 @@ CONFIG_MISC_FILESYSTEMS=y # CONFIG_BEFS_FS is not set # CONFIG_BFS_FS is not set # CONFIG_EFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -CONFIG_JFFS2_FS_WRITEBUFFER=y -# CONFIG_JFFS2_FS_WBUF_VERIFY is not set -# CONFIG_JFFS2_SUMMARY is not set -# CONFIG_JFFS2_FS_XATTR is not set -# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set -CONFIG_JFFS2_ZLIB=y -CONFIG_JFFS2_RTIME=y -CONFIG_UBIFS_FS=y -CONFIG_UBIFS_FS_ADVANCED_COMPR=y -CONFIG_UBIFS_FS_LZO=y -CONFIG_UBIFS_FS_ZLIB=y -CONFIG_UBIFS_FS_ZSTD=y -# CONFIG_UBIFS_ATIME_SUPPORT is not set -CONFIG_UBIFS_FS_XATTR=y -CONFIG_UBIFS_FS_SECURITY=y -# CONFIG_UBIFS_FS_AUTHENTICATION is not set +# CONFIG_JFFS2_FS is not set # CONFIG_CRAMFS is not set CONFIG_SQUASHFS=y CONFIG_SQUASHFS_FILE_CACHE=y @@ -6735,12 +6552,12 @@ CONFIG_SQUASHFS_DECOMP_SINGLE=y CONFIG_SQUASHFS_COMPILE_DECOMP_SINGLE=y # CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI is not set # CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI_PERCPU is not set -# CONFIG_SQUASHFS_XATTR is not set +CONFIG_SQUASHFS_XATTR=y CONFIG_SQUASHFS_ZLIB=y -CONFIG_SQUASHFS_LZ4=y +# CONFIG_SQUASHFS_LZ4 is not set CONFIG_SQUASHFS_LZO=y -CONFIG_SQUASHFS_XZ=y -CONFIG_SQUASHFS_ZSTD=y +# CONFIG_SQUASHFS_XZ is not set +# CONFIG_SQUASHFS_ZSTD is not set # CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set # CONFIG_SQUASHFS_EMBEDDED is not set CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 @@ -6751,25 +6568,11 @@ CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 # CONFIG_QNX4FS_FS is not set # CONFIG_QNX6FS_FS is not set # CONFIG_ROMFS_FS is not set -CONFIG_PSTORE=y -CONFIG_PSTORE_DEFAULT_KMSG_BYTES=10240 -CONFIG_PSTORE_COMPRESS=y -CONFIG_PSTORE_CONSOLE=y -# CONFIG_PSTORE_PMSG is not set -# CONFIG_PSTORE_FTRACE is not set -CONFIG_PSTORE_RAM=y -# CONFIG_PSTORE_BLK is not set +# CONFIG_PSTORE is not set # CONFIG_SYSV_FS is not set # CONFIG_UFS_FS is not set # CONFIG_EROFS_FS is not set -CONFIG_NETWORK_FILESYSTEMS=y -# CONFIG_NFS_FS is not set -# CONFIG_NFSD is not set -# CONFIG_CEPH_FS is not set -# CONFIG_CIFS is not set -# CONFIG_SMB_SERVER is not set -# CONFIG_CODA_FS is not set -# CONFIG_AFS_FS is not set +# CONFIG_NETWORK_FILESYSTEMS is not set CONFIG_NLS=y CONFIG_NLS_DEFAULT="utf8" CONFIG_NLS_CODEPAGE_437=y @@ -6787,7 +6590,7 @@ CONFIG_NLS_CODEPAGE_437=y # 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=y +# CONFIG_NLS_CODEPAGE_936 is not set # CONFIG_NLS_CODEPAGE_950 is not set # CONFIG_NLS_CODEPAGE_932 is not set # CONFIG_NLS_CODEPAGE_949 is not set @@ -6795,7 +6598,7 @@ CONFIG_NLS_CODEPAGE_936=y # 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_ASCII is not set CONFIG_NLS_ISO8859_1=y # CONFIG_NLS_ISO8859_2 is not set # CONFIG_NLS_ISO8859_3 is not set @@ -6822,8 +6625,7 @@ CONFIG_NLS_ISO8859_1=y # CONFIG_NLS_MAC_TURKISH is not set CONFIG_NLS_UTF8=y # CONFIG_DLM is not set -CONFIG_UNICODE=y -# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set +# CONFIG_UNICODE is not set CONFIG_IO_WQ=y # end of File systems @@ -6837,13 +6639,39 @@ CONFIG_KEYS=y # CONFIG_ENCRYPTED_KEYS is not set # CONFIG_KEY_DH_OPERATIONS is not set # CONFIG_SECURITY_DMESG_RESTRICT is not set -# CONFIG_SECURITY is not set +CONFIG_SECURITY=y CONFIG_SECURITYFS=y -# CONFIG_HARDENED_USERCOPY is not set +CONFIG_SECURITY_NETWORK=y +# CONFIG_SECURITY_NETWORK_XFRM is not set +# CONFIG_SECURITY_PATH is not set +CONFIG_LSM_MMAP_MIN_ADDR=65536 +CONFIG_HARDENED_USERCOPY=y # CONFIG_FORTIFY_SOURCE is not set -# CONFIG_STATIC_USERMODEHELPER is not set -CONFIG_DEFAULT_SECURITY_DAC=y -CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,bpf" +CONFIG_STATIC_USERMODEHELPER=y +CONFIG_STATIC_USERMODEHELPER_PATH="/sbin/usermode-helper" +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_SIDTAB_HASH_BITS=9 +CONFIG_SECURITY_SELINUX_SID2STR_CACHE_SIZE=256 +# CONFIG_SECURITY_SELINUX_DEBUG is not set +# CONFIG_SECURITY_SMACK is not set +# CONFIG_SECURITY_TOMOYO is not set +# CONFIG_SECURITY_APPARMOR is not set +# CONFIG_SECURITY_LOADPIN is not set +# CONFIG_SECURITY_YAMA is not set +# CONFIG_SECURITY_SAFESETID is not set +# CONFIG_SECURITY_LOCKDOWN_LSM is not set +# CONFIG_SECURITY_LANDLOCK is not set +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_DAC is not set +CONFIG_LSM="selinux,integrity" # # Kernel hardening options @@ -6859,8 +6687,8 @@ CONFIG_INIT_STACK_NONE=y # CONFIG_INIT_STACK_ALL_PATTERN is not set # CONFIG_INIT_STACK_ALL_ZERO is not set # CONFIG_GCC_PLUGIN_STACKLEAK is not set -# CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set -# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set +CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y +CONFIG_INIT_ON_FREE_DEFAULT_ON=y CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y # CONFIG_ZERO_CALL_USED_REGS is not set # end of Memory initialization @@ -6902,13 +6730,13 @@ CONFIG_CRYPTO_KPP=y CONFIG_CRYPTO_ACOMP2=y CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER2=y -# CONFIG_CRYPTO_USER is not set +CONFIG_CRYPTO_USER=y CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y CONFIG_CRYPTO_NULL=y CONFIG_CRYPTO_NULL2=y -# CONFIG_CRYPTO_PCRYPT is not set +CONFIG_CRYPTO_PCRYPT=y CONFIG_CRYPTO_CRYPTD=y -CONFIG_CRYPTO_AUTHENC=m +CONFIG_CRYPTO_AUTHENC=y # CONFIG_CRYPTO_TEST is not set CONFIG_CRYPTO_ENGINE=y # end of Crypto core or helper @@ -6953,11 +6781,11 @@ CONFIG_CRYPTO_TWOFISH_COMMON=y # # CONFIG_CRYPTO_ADIANTUM is not set CONFIG_CRYPTO_ARC4=y -# CONFIG_CRYPTO_CHACHA20 is not set +CONFIG_CRYPTO_CHACHA20=y CONFIG_CRYPTO_CBC=y CONFIG_CRYPTO_CFB=y CONFIG_CRYPTO_CTR=y -# CONFIG_CRYPTO_CTS is not set +CONFIG_CRYPTO_CTS=y CONFIG_CRYPTO_ECB=y # CONFIG_CRYPTO_HCTR2 is not set # CONFIG_CRYPTO_KEYWRAP is not set @@ -6965,19 +6793,20 @@ CONFIG_CRYPTO_ECB=y # CONFIG_CRYPTO_OFB is not set # CONFIG_CRYPTO_PCBC is not set CONFIG_CRYPTO_XTS=y +CONFIG_CRYPTO_NHPOLY1305=y # end of Length-preserving ciphers and modes # # AEAD (authenticated encryption with associated data) ciphers # # CONFIG_CRYPTO_AEGIS128 is not set -# CONFIG_CRYPTO_CHACHA20POLY1305 is not set +CONFIG_CRYPTO_CHACHA20POLY1305=y CONFIG_CRYPTO_CCM=y CONFIG_CRYPTO_GCM=y CONFIG_CRYPTO_GENIV=y CONFIG_CRYPTO_SEQIV=y -CONFIG_CRYPTO_ECHAINIV=m -# CONFIG_CRYPTO_ESSIV is not set +CONFIG_CRYPTO_ECHAINIV=y +CONFIG_CRYPTO_ESSIV=y # end of AEAD (authenticated encryption with associated data) ciphers # @@ -6990,7 +6819,7 @@ CONFIG_CRYPTO_HMAC=y # CONFIG_CRYPTO_MD4 is not set CONFIG_CRYPTO_MD5=y # CONFIG_CRYPTO_MICHAEL_MIC is not set -# CONFIG_CRYPTO_POLY1305 is not set +CONFIG_CRYPTO_POLY1305=y # CONFIG_CRYPTO_RMD160 is not set CONFIG_CRYPTO_SHA1=y CONFIG_CRYPTO_SHA256=y @@ -7000,7 +6829,7 @@ CONFIG_CRYPTO_SHA3=y # CONFIG_CRYPTO_STREEBOG is not set # CONFIG_CRYPTO_VMAC is not set # CONFIG_CRYPTO_WP512 is not set -# CONFIG_CRYPTO_XCBC is not set +CONFIG_CRYPTO_XCBC=y # CONFIG_CRYPTO_XXHASH is not set # end of Hashes, digests, and MACs @@ -7008,7 +6837,7 @@ CONFIG_CRYPTO_SHA3=y # CRCs (cyclic redundancy checks) # CONFIG_CRYPTO_CRC32C=y -# CONFIG_CRYPTO_CRC32 is not set +CONFIG_CRYPTO_CRC32=y CONFIG_CRYPTO_CRCT10DIF=y # end of CRCs (cyclic redundancy checks) @@ -7018,8 +6847,8 @@ CONFIG_CRYPTO_CRCT10DIF=y CONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_LZO=y # CONFIG_CRYPTO_842 is not set -# CONFIG_CRYPTO_LZ4 is not set -# CONFIG_CRYPTO_LZ4HC is not set +CONFIG_CRYPTO_LZ4=y +CONFIG_CRYPTO_LZ4HC=y CONFIG_CRYPTO_ZSTD=y # end of Compression @@ -7042,25 +6871,27 @@ CONFIG_CRYPTO_JITTERENTROPY=y CONFIG_CRYPTO_USER_API=y CONFIG_CRYPTO_USER_API_HASH=y CONFIG_CRYPTO_USER_API_SKCIPHER=y -# CONFIG_CRYPTO_USER_API_RNG is not set -# CONFIG_CRYPTO_USER_API_AEAD is not set +CONFIG_CRYPTO_USER_API_RNG=y +# CONFIG_CRYPTO_USER_API_RNG_CAVP is not set +CONFIG_CRYPTO_USER_API_AEAD=y CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y +CONFIG_CRYPTO_STATS=y # end of Userspace interface CONFIG_CRYPTO_HASH_INFO=y -# CONFIG_CRYPTO_NHPOLY1305_NEON is not set -# CONFIG_CRYPTO_CHACHA20_NEON is not set +CONFIG_CRYPTO_NHPOLY1305_NEON=y +CONFIG_CRYPTO_CHACHA20_NEON=y # # Accelerated Cryptographic Algorithms for CPU (arm64) # CONFIG_CRYPTO_GHASH_ARM64_CE=y -# CONFIG_CRYPTO_POLY1305_NEON is not set +CONFIG_CRYPTO_POLY1305_NEON=y CONFIG_CRYPTO_SHA1_ARM64_CE=y CONFIG_CRYPTO_SHA256_ARM64=y CONFIG_CRYPTO_SHA2_ARM64_CE=y -# CONFIG_CRYPTO_SHA512_ARM64 is not set -# CONFIG_CRYPTO_SHA512_ARM64_CE is not set +CONFIG_CRYPTO_SHA512_ARM64=y +CONFIG_CRYPTO_SHA512_ARM64_CE=y # CONFIG_CRYPTO_SHA3_ARM64 is not set # CONFIG_CRYPTO_SM3_NEON is not set # CONFIG_CRYPTO_SM3_ARM64_CE is not set @@ -7068,8 +6899,8 @@ CONFIG_CRYPTO_SHA2_ARM64_CE=y CONFIG_CRYPTO_AES_ARM64=y CONFIG_CRYPTO_AES_ARM64_CE=y CONFIG_CRYPTO_AES_ARM64_CE_BLK=y -# CONFIG_CRYPTO_AES_ARM64_NEON_BLK is not set -# CONFIG_CRYPTO_AES_ARM64_BS is not set +CONFIG_CRYPTO_AES_ARM64_NEON_BLK=y +CONFIG_CRYPTO_AES_ARM64_BS=y # CONFIG_CRYPTO_SM4_ARM64_CE is not set # CONFIG_CRYPTO_SM4_ARM64_CE_BLK is not set # CONFIG_CRYPTO_SM4_ARM64_NEON_BLK is not set @@ -7093,7 +6924,6 @@ CONFIG_CRYPTO_HW=y # CONFIG_CRYPTO_DEV_QAT_C62XVF is not set # CONFIG_CRYPTO_DEV_CAVIUM_ZIP is not set CONFIG_CRYPTO_DEV_ROCKCHIP=y -# CONFIG_CRYPTO_DEV_ROCKCHIP_DEBUG is not set # CONFIG_CRYPTO_DEV_SAFEXCEL is not set # CONFIG_CRYPTO_DEV_CCREE is not set # CONFIG_CRYPTO_DEV_HISI_SEC is not set @@ -7147,10 +6977,14 @@ CONFIG_CRYPTO_LIB_AES=y CONFIG_CRYPTO_LIB_ARC4=y CONFIG_CRYPTO_LIB_GF128MUL=y CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y +CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=y +CONFIG_CRYPTO_LIB_CHACHA_GENERIC=y # CONFIG_CRYPTO_LIB_CHACHA is not set # CONFIG_CRYPTO_LIB_CURVE25519 is not set CONFIG_CRYPTO_LIB_DES=y CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 +CONFIG_CRYPTO_ARCH_HAVE_LIB_POLY1305=y +CONFIG_CRYPTO_LIB_POLY1305_GENERIC=y # CONFIG_CRYPTO_LIB_POLY1305 is not set # CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set CONFIG_CRYPTO_LIB_SHA1=y @@ -7174,12 +7008,16 @@ CONFIG_CRC7=y CONFIG_LIBCRC32C=y # CONFIG_CRC8 is not set CONFIG_XXHASH=y +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_LZ4_COMPRESS=y +CONFIG_LZ4HC_COMPRESS=y CONFIG_LZ4_DECOMPRESS=y CONFIG_ZSTD_COMMON=y CONFIG_ZSTD_COMPRESS=y @@ -7203,12 +7041,11 @@ CONFIG_DECOMPRESS_LZ4=y CONFIG_DECOMPRESS_ZSTD=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=m -CONFIG_TEXTSEARCH_BM=m -CONFIG_TEXTSEARCH_FSM=m +CONFIG_TEXTSEARCH_KMP=y +CONFIG_TEXTSEARCH_BM=y +CONFIG_TEXTSEARCH_FSM=y CONFIG_XARRAY_MULTI=y CONFIG_ASSOCIATIVE_ARRAY=y CONFIG_HAS_IOMEM=y @@ -7233,19 +7070,7 @@ CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC=y CONFIG_DMA_NONCOHERENT_MMAP=y CONFIG_DMA_COHERENT_POOL=y CONFIG_DMA_DIRECT_REMAP=y -CONFIG_DMA_CMA=y - -# -# Default contiguous memory area size: -# -CONFIG_CMA_SIZE_MBYTES=16 -CONFIG_CMA_SIZE_SEL_MBYTES=y -# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set -# CONFIG_CMA_SIZE_SEL_MIN is not set -# CONFIG_CMA_SIZE_SEL_MAX is not set -CONFIG_CMA_ALIGNMENT=8 # CONFIG_DMA_API_DEBUG is not set -# CONFIG_DMA_MAP_BENCHMARK is not set CONFIG_SGL_ALLOC=y # CONFIG_FORCE_NR_CPUS is not set CONFIG_CPU_RMAP=y @@ -7266,6 +7091,8 @@ CONFIG_FONT_SUPPORT=y CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y CONFIG_SG_POOL=y +CONFIG_ARCH_HAS_PMEM_API=y +CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y CONFIG_ARCH_STACKWALK=y CONFIG_STACKDEPOT=y CONFIG_SBITMAP=y @@ -7288,9 +7115,9 @@ CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 CONFIG_CONSOLE_LOGLEVEL_QUIET=4 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 # CONFIG_BOOT_PRINTK_DELAY is not set -CONFIG_DYNAMIC_DEBUG=y -CONFIG_DYNAMIC_DEBUG_CORE=y -CONFIG_SYMBOLIC_ERRNAME=y +# CONFIG_DYNAMIC_DEBUG is not set +# CONFIG_DYNAMIC_DEBUG_CORE is not set +# CONFIG_SYMBOLIC_ERRNAME is not set CONFIG_DEBUG_BUGVERBOSE=y # end of printk and dmesg options @@ -7322,17 +7149,26 @@ CONFIG_FRAME_POINTER=y # Generic Kernel Debugging Instruments # CONFIG_MAGIC_SYSRQ=y -CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0 +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 CONFIG_MAGIC_SYSRQ_SERIAL=y CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE="" -CONFIG_DEBUG_FS=y -CONFIG_DEBUG_FS_ALLOW_ALL=y -# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set -# CONFIG_DEBUG_FS_ALLOW_NONE is not set +# CONFIG_DEBUG_FS is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_KGDB is not set CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y -# CONFIG_UBSAN is not set +CONFIG_UBSAN=y +# CONFIG_UBSAN_TRAP is not set +CONFIG_CC_HAS_UBSAN_BOUNDS_STRICT=y +CONFIG_UBSAN_BOUNDS=y +CONFIG_UBSAN_BOUNDS_STRICT=y +CONFIG_UBSAN_SHIFT=y +# CONFIG_UBSAN_DIV_ZERO is not set +# CONFIG_UBSAN_UNREACHABLE is not set +CONFIG_UBSAN_BOOL=y +CONFIG_UBSAN_ENUM=y +# CONFIG_UBSAN_ALIGNMENT is not set +CONFIG_UBSAN_SANITIZE_ALL=y +# CONFIG_TEST_UBSAN is not set CONFIG_HAVE_ARCH_KCSAN=y CONFIG_HAVE_KCSAN_COMPILER=y # CONFIG_KCSAN is not set @@ -7361,12 +7197,10 @@ CONFIG_SLUB_DEBUG=y CONFIG_ARCH_HAS_DEBUG_WX=y # CONFIG_DEBUG_WX is not set CONFIG_GENERIC_PTDUMP=y -# CONFIG_PTDUMP_DEBUGFS is not set CONFIG_HAVE_DEBUG_KMEMLEAK=y # CONFIG_DEBUG_KMEMLEAK is not set # CONFIG_PER_VMA_LOCK_STATS is not set # CONFIG_DEBUG_OBJECTS is not set -# CONFIG_SHRINKER_DEBUG is not set # CONFIG_DEBUG_STACK_USAGE is not set # CONFIG_SCHED_STACK_END_CHECK is not set CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y @@ -7408,7 +7242,6 @@ CONFIG_HAVE_HARDLOCKUP_DETECTOR_BUDDY=y # # Scheduler Debugging # -CONFIG_SCHED_DEBUG=y CONFIG_SCHED_INFO=y CONFIG_SCHEDSTATS=y # end of Scheduler Debugging @@ -7422,7 +7255,7 @@ CONFIG_LOCK_DEBUGGING_SUPPORT=y # CONFIG_PROVE_LOCKING is not set # CONFIG_LOCK_STAT is not set # CONFIG_DEBUG_RT_MUTEXES is not set -CONFIG_DEBUG_SPINLOCK=y +# CONFIG_DEBUG_SPINLOCK is not set # CONFIG_DEBUG_MUTEXES is not set # CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set # CONFIG_DEBUG_RWSEMS is not set @@ -7450,7 +7283,7 @@ CONFIG_STACKTRACE=y # CONFIG_DEBUG_MAPLE_TREE is not set # end of Debug kernel data structures -CONFIG_DEBUG_CREDENTIALS=y +# CONFIG_DEBUG_CREDENTIALS is not set # # RCU Debugging @@ -7459,9 +7292,9 @@ CONFIG_DEBUG_CREDENTIALS=y # CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_REF_SCALE_TEST is not set CONFIG_RCU_CPU_STALL_TIMEOUT=60 -CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=0 +CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=20 # CONFIG_RCU_CPU_STALL_CPUTIME is not set -CONFIG_RCU_TRACE=y +# CONFIG_RCU_TRACE is not set # CONFIG_RCU_EQS_DEBUG is not set # end of RCU Debugging @@ -7473,12 +7306,11 @@ CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y CONFIG_HAVE_DYNAMIC_FTRACE=y -CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y -CONFIG_HAVE_DYNAMIC_FTRACE_WITH_CALL_OPS=y CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS=y CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y CONFIG_HAVE_SYSCALL_TRACEPOINTS=y CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_TRACER_MAX_TRACE=y CONFIG_TRACE_CLOCK=y CONFIG_RING_BUFFER=y CONFIG_EVENT_TRACING=y @@ -7492,22 +7324,22 @@ CONFIG_FUNCTION_TRACER=y CONFIG_FUNCTION_GRAPH_TRACER=y # CONFIG_FUNCTION_GRAPH_RETVAL is not set CONFIG_DYNAMIC_FTRACE=y -CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y -CONFIG_DYNAMIC_FTRACE_WITH_CALL_OPS=y CONFIG_DYNAMIC_FTRACE_WITH_ARGS=y # CONFIG_FUNCTION_PROFILER is not set # CONFIG_STACK_TRACER is not set # CONFIG_IRQSOFF_TRACER is not set -# CONFIG_SCHED_TRACER is not set +CONFIG_SCHED_TRACER=y # CONFIG_HWLAT_TRACER is not set # CONFIG_OSNOISE_TRACER is not set # CONFIG_TIMERLAT_TRACER is not set -# CONFIG_FTRACE_SYSCALLS is not set -# CONFIG_TRACER_SNAPSHOT is not set +CONFIG_FTRACE_SYSCALLS=y +CONFIG_TRACER_SNAPSHOT=y +# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set CONFIG_BRANCH_PROFILE_NONE=y # CONFIG_PROFILE_ANNOTATED_BRANCHES is not set # CONFIG_PROFILE_ALL_BRANCHES is not set -CONFIG_BLK_DEV_IO_TRACE=y +# CONFIG_BLK_DEV_IO_TRACE is not set +# CONFIG_UPROBE_EVENTS is not set CONFIG_FTRACE_MCOUNT_RECORD=y CONFIG_FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY=y # CONFIG_SYNTH_EVENTS is not set @@ -7546,46 +7378,7 @@ CONFIG_STRICT_DEVMEM=y CONFIG_ARCH_HAS_KCOV=y CONFIG_CC_HAS_SANCOV_TRACE_PC=y # CONFIG_KCOV is not set -CONFIG_RUNTIME_TESTING_MENU=y -# CONFIG_TEST_DHRY is not set -CONFIG_LKDTM=y -# CONFIG_TEST_MIN_HEAP is not set -# CONFIG_TEST_DIV64 is not set -# CONFIG_BACKTRACE_SELF_TEST is not set -# CONFIG_TEST_REF_TRACKER is not set -# CONFIG_RBTREE_TEST is not set -# CONFIG_REED_SOLOMON_TEST is not set -# CONFIG_INTERVAL_TREE_TEST is not set -# CONFIG_PERCPU_TEST is not set -# CONFIG_ATOMIC64_SELFTEST is not set -# CONFIG_TEST_HEXDUMP is not set -# CONFIG_STRING_SELFTEST is not set -# CONFIG_TEST_STRING_HELPERS is not set -# CONFIG_TEST_KSTRTOX is not set -# CONFIG_TEST_PRINTF is not set -# CONFIG_TEST_SCANF is not set -# CONFIG_TEST_BITMAP is not set -# CONFIG_TEST_UUID is not set -# CONFIG_TEST_XARRAY is not set -# CONFIG_TEST_MAPLE_TREE is not set -# CONFIG_TEST_RHASHTABLE is not set -# CONFIG_TEST_IDA is not set -# CONFIG_TEST_LKM is not set -# CONFIG_TEST_BITOPS is not set -# CONFIG_TEST_VMALLOC is not set -# CONFIG_TEST_USER_COPY is not set -# CONFIG_TEST_BPF is not set -# CONFIG_TEST_BLACKHOLE_DEV is not set -# CONFIG_FIND_BIT_BENCHMARK is not set -# CONFIG_TEST_FIRMWARE is not set -# CONFIG_TEST_SYSCTL is not set -# CONFIG_TEST_UDELAY is not set -# CONFIG_TEST_STATIC_KEYS is not set -# CONFIG_TEST_DYNAMIC_DEBUG is not set -# CONFIG_TEST_KMOD is not set -# CONFIG_TEST_MEMCAT_P is not set -# CONFIG_TEST_MEMINIT is not set -# CONFIG_TEST_FREE_PAGES is not set +# CONFIG_RUNTIME_TESTING_MENU is not set CONFIG_ARCH_USE_MEMTEST=y # CONFIG_MEMTEST is not set # end of Kernel Testing and Coverage diff --git a/projects/Rockchip/devices/RK3566-ML/options b/projects/Rockchip/devices/RK3566-ML/options index 466814e651..e5822ba9f7 100644 --- a/projects/Rockchip/devices/RK3566-ML/options +++ b/projects/Rockchip/devices/RK3566-ML/options @@ -45,6 +45,7 @@ # Additional kernel make parameters (for example to specify the u-boot loadaddress) KERNEL_MAKE_EXTRACMD=" $(for DTB in "${DEVICE_DTB[@]}"; do echo -n "rockchip/${DTB}.dtb "; done)" + KERNEL_EXTRA_DEPENDS_TARGET="zstd libcap libtraceevent" # Define the CPU HW_CPU="Rockchip RK3566" @@ -70,7 +71,7 @@ WINDOWMANAGER="weston" # kernel serial console - EXTRA_CMDLINE="quiet rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20 initcall_blacklist=uvc_init log_buf_len=1M nopkmute debugging" + EXTRA_CMDLINE="quiet rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20 initcall_blacklist=uvc_init log_buf_len=1M" # additional packages to install # ADDITIONAL_PACKAGES="" diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index ab09f8c403..72792e5b47 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -177,6 +177,7 @@ make_target() { NO_LIBAUDIT=1 \ NO_LZMA=1 \ NO_SDT=1 \ + NO_LIBTRACEEVENT=1 \ CROSS_COMPILE="${TARGET_PREFIX}" \ JOBS="${CONCURRENCY_MAKE_LEVEL}" \ make ${PERF_BUILD_ARGS} From 9ab8b38ce09929684abc026accc4363e61d6f170 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Tue, 3 Oct 2023 15:11:07 +0000 Subject: [PATCH 017/167] Push my changes from today. --- .../platforms/RK3566-ML/001-device_config | 10 + .../quirks/platforms/RK3566-ML/050-audio_path | 9 + .../quirks/platforms/RK3566-ML/050-modifiers | 10 + .../platforms/RK3566-ML/060-game_settings | 16 + .../quirks/platforms/RK3566-ML/090-ui_service | 8 + .../kernel/linux-drivers/RTL8821CU/package.mk | 2 +- .../RK3566-ML/linux/linux.aarch64.conf | 3367 ++++++++++------- projects/Rockchip/devices/RK3566-ML/options | 11 +- 8 files changed, 2046 insertions(+), 1387 deletions(-) create mode 100755 packages/hardware/quirks/platforms/RK3566-ML/001-device_config create mode 100755 packages/hardware/quirks/platforms/RK3566-ML/050-audio_path create mode 100755 packages/hardware/quirks/platforms/RK3566-ML/050-modifiers create mode 100755 packages/hardware/quirks/platforms/RK3566-ML/060-game_settings create mode 100755 packages/hardware/quirks/platforms/RK3566-ML/090-ui_service diff --git a/packages/hardware/quirks/platforms/RK3566-ML/001-device_config b/packages/hardware/quirks/platforms/RK3566-ML/001-device_config new file mode 100755 index 0000000000..b146a74af3 --- /dev/null +++ b/packages/hardware/quirks/platforms/RK3566-ML/001-device_config @@ -0,0 +1,10 @@ +#!/bin/bash +# SPDX-License-Identifier: Apache-2.0 +# Copyright (C) 2021-present Fewtarius (https://github.com/fewtarius) + +cat </storage/.config/profile.d/001-device_config +DEVICE_FAKE_JACKSENSE="false" +DEVICE_VOLUMECTL="true" +DEVICE_POWER_LED="false" +DEVICE_BRIGHTNESS="128" +EOF diff --git a/packages/hardware/quirks/platforms/RK3566-ML/050-audio_path b/packages/hardware/quirks/platforms/RK3566-ML/050-audio_path new file mode 100755 index 0000000000..0aafc65654 --- /dev/null +++ b/packages/hardware/quirks/platforms/RK3566-ML/050-audio_path @@ -0,0 +1,9 @@ +#!/bin/sh +# SPDX-License-Identifier: Apache-2.0 +# Copyright (C) 2021-present Fewtarius (https://github.com/fewtarius) + +cat </storage/.config/profile.d/002-audio_path +DEVICE_PLAYBACK_PATH_SPK="SPK" +DEVICE_PLAYBACK_PATH_HP="HP" +DEVICE_PLAYBACK_PATH="Playback Path" +EOF diff --git a/packages/hardware/quirks/platforms/RK3566-ML/050-modifiers b/packages/hardware/quirks/platforms/RK3566-ML/050-modifiers new file mode 100755 index 0000000000..1fefd6e79a --- /dev/null +++ b/packages/hardware/quirks/platforms/RK3566-ML/050-modifiers @@ -0,0 +1,10 @@ +#!/bin/sh +# SPDX-License-Identifier: Apache-2.0 +# Copyright (C) 2022-present Fewtarius + +cat </storage/.config/profile.d/050-modifiers +DEVICE_KEY_VOLUMEDOWN=114 +DEVICE_KEY_VOLUMEUP=115 +DEVICE_FUNC_KEYA_MODIFIER="BTN_SELECT" +DEVICE_FUNC_KEYB_MODIFIER="BTN_MODE" +EOF diff --git a/packages/hardware/quirks/platforms/RK3566-ML/060-game_settings b/packages/hardware/quirks/platforms/RK3566-ML/060-game_settings new file mode 100755 index 0000000000..0b5a139601 --- /dev/null +++ b/packages/hardware/quirks/platforms/RK3566-ML/060-game_settings @@ -0,0 +1,16 @@ +#!/bin/sh +# SPDX-License-Identifier: Apache-2.0 +# Copyright (C) 2023-present Fewtarius (https://github.com/fewtarius) + +. /etc/profile.d/001-functions + +### Set the default performance scaling mode for a few systems. +for SYSTEM in dreamcast n64 psp saturn +do + SETTING=$(get_setting ${SYSTEM}) + if [ -z ${SETTING} ] + then + set_setting ${SYSTEM}.cpugovernor performance + fi +done + diff --git a/packages/hardware/quirks/platforms/RK3566-ML/090-ui_service b/packages/hardware/quirks/platforms/RK3566-ML/090-ui_service new file mode 100755 index 0000000000..eeafb89b2b --- /dev/null +++ b/packages/hardware/quirks/platforms/RK3566-ML/090-ui_service @@ -0,0 +1,8 @@ +#!/bin/sh +# SPDX-License-Identifier: Apache-2.0 +# Copyright (C) 2022-present Fewtarius + +### Set the default device configuration +cat </storage/.config/profile.d/090-ui_service +UI_SERVICE="weston.service" +EOF diff --git a/packages/kernel/linux-drivers/RTL8821CU/package.mk b/packages/kernel/linux-drivers/RTL8821CU/package.mk index 83c62c5654..4043674796 100644 --- a/packages/kernel/linux-drivers/RTL8821CU/package.mk +++ b/packages/kernel/linux-drivers/RTL8821CU/package.mk @@ -4,7 +4,7 @@ # Copyright (C) 2021-present Fewtarius PKG_NAME="RTL8821CU" -PKG_VERSION="80781de376007ecd778dfb2bef05533e3a6cc7c6" +PKG_VERSION="8e300c0885835b079ad1a99cccd960754a4c849f" PKG_LICENSE="GPL" PKG_SITE="https://github.com/morrownr/8821cu-20210916" PKG_URL="${PKG_SITE}.git" diff --git a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf index 550864845a..76abd12f68 100644 --- a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf @@ -27,23 +27,22 @@ CONFIG_THREAD_INFO_IN_TASK=y # CONFIG_INIT_ENV_ARG_LIMIT=32 # CONFIG_COMPILE_TEST is not set -CONFIG_WERROR=y +# CONFIG_WERROR is not set CONFIG_LOCALVERSION="" # CONFIG_LOCALVERSION_AUTO is not set CONFIG_BUILD_SALT="" CONFIG_DEFAULT_INIT="" -CONFIG_DEFAULT_HOSTNAME="localhost" +CONFIG_DEFAULT_HOSTNAME="@DEVICENAME@" CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_SYSVIPC_COMPAT=y CONFIG_POSIX_MQUEUE=y CONFIG_POSIX_MQUEUE_SYSCTL=y -# CONFIG_WATCH_QUEUE is not set -CONFIG_CROSS_MEMORY_ATTACH=y -# CONFIG_USELIB is not set -CONFIG_AUDIT=y +CONFIG_WATCH_QUEUE=y +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_USELIB=y +# CONFIG_AUDIT is not set CONFIG_HAVE_ARCH_AUDITSYSCALL=y -CONFIG_AUDITSYSCALL=y # # IRQ subsystem @@ -62,6 +61,7 @@ CONFIG_GENERIC_MSI_IRQ=y CONFIG_IRQ_MSI_IOMMU=y CONFIG_IRQ_FORCED_THREADING=y CONFIG_SPARSE_IRQ=y +# CONFIG_GENERIC_IRQ_DEBUGFS is not set # end of IRQ subsystem CONFIG_GENERIC_TIME_VSYSCALL=y @@ -81,7 +81,7 @@ 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_NO_HZ is not set CONFIG_HIGH_RES_TIMERS=y # end of Timers subsystem @@ -93,33 +93,31 @@ CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y # BPF subsystem # CONFIG_BPF_SYSCALL=y -CONFIG_BPF_JIT=y -CONFIG_BPF_JIT_ALWAYS_ON=y -CONFIG_BPF_JIT_DEFAULT_ON=y +# CONFIG_BPF_JIT is not set # CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set # CONFIG_BPF_PRELOAD is not set # end of BPF subsystem -CONFIG_PREEMPT_VOLUNTARY_BUILD=y +CONFIG_PREEMPT_BUILD=y # CONFIG_PREEMPT_NONE is not set -CONFIG_PREEMPT_VOLUNTARY=y -# CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREEMPT=y +CONFIG_PREEMPT_COUNT=y +CONFIG_PREEMPTION=y # CONFIG_PREEMPT_DYNAMIC is not set +# CONFIG_SCHED_CORE is not set # # CPU/Task time and stats accounting # CONFIG_TICK_CPU_ACCOUNTING=y # CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set -# CONFIG_IRQ_TIME_ACCOUNTING is not set +CONFIG_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_SCHED_AVG_IRQ=y CONFIG_SCHED_THERMAL_PRESSURE=y # CONFIG_BSD_PROCESS_ACCT is not set -CONFIG_TASKSTATS=y -# CONFIG_TASK_DELAY_ACCT is not set -CONFIG_TASK_XACCT=y -CONFIG_TASK_IO_ACCOUNTING=y -CONFIG_PSI=y -# CONFIG_PSI_DEFAULT_DISABLED is not set +# CONFIG_TASKSTATS is not set +# CONFIG_PSI is not set # end of CPU/Task time and stats accounting CONFIG_CPU_ISOLATION=y @@ -128,10 +126,11 @@ CONFIG_CPU_ISOLATION=y # RCU Subsystem # CONFIG_TREE_RCU=y +CONFIG_PREEMPT_RCU=y # CONFIG_RCU_EXPERT is not set CONFIG_TREE_SRCU=y CONFIG_TASKS_RCU_GENERIC=y -CONFIG_TASKS_RUDE_RCU=y +CONFIG_TASKS_RCU=y CONFIG_TASKS_TRACE_RCU=y CONFIG_RCU_STALL_COMMON=y CONFIG_RCU_NEED_SEGCBLIST=y @@ -139,9 +138,10 @@ CONFIG_RCU_NEED_SEGCBLIST=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y -CONFIG_IKHEADERS=y -CONFIG_LOG_BUF_SHIFT=17 -CONFIG_LOG_CPU_MAX_BUF_SHIFT=13 +# CONFIG_IKHEADERS is not set +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +# CONFIG_PRINTK_INDEX is not set CONFIG_GENERIC_SCHED_CLOCK=y # @@ -167,16 +167,16 @@ CONFIG_CGROUP_WRITEBACK=y CONFIG_CGROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y CONFIG_CFS_BANDWIDTH=y -# CONFIG_RT_GROUP_SCHED is not set +CONFIG_RT_GROUP_SCHED=y CONFIG_SCHED_MM_CID=y CONFIG_CGROUP_PIDS=y -# CONFIG_CGROUP_RDMA is not set +CONFIG_CGROUP_RDMA=y CONFIG_CGROUP_FREEZER=y CONFIG_CPUSETS=y CONFIG_PROC_PID_CPUSET=y CONFIG_CGROUP_DEVICE=y CONFIG_CGROUP_CPUACCT=y -# CONFIG_CGROUP_PERF is not set +CONFIG_CGROUP_PERF=y CONFIG_CGROUP_BPF=y # CONFIG_CGROUP_MISC is not set # CONFIG_CGROUP_DEBUG is not set @@ -185,14 +185,14 @@ CONFIG_NAMESPACES=y CONFIG_UTS_NS=y CONFIG_TIME_NS=y CONFIG_IPC_NS=y -CONFIG_USER_NS=y +# CONFIG_USER_NS is not set CONFIG_PID_NS=y CONFIG_NET_NS=y # CONFIG_CHECKPOINT_RESTORE is not set -# CONFIG_SCHED_AUTOGROUP is not set +CONFIG_SCHED_AUTOGROUP=y CONFIG_RELAY=y CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="/home/azureuser/distribution/build.JELOS-RK3566-ML.aarch64/image/initramfs.cpio" +CONFIG_INITRAMFS_SOURCE="" CONFIG_INITRAMFS_ROOT_UID=0 CONFIG_INITRAMFS_ROOT_GID=0 CONFIG_RD_GZIP=y @@ -206,9 +206,9 @@ CONFIG_RD_ZSTD=y # CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set # CONFIG_INITRAMFS_COMPRESSION_LZMA is not set # CONFIG_INITRAMFS_COMPRESSION_XZ is not set -CONFIG_INITRAMFS_COMPRESSION_LZO=y +# CONFIG_INITRAMFS_COMPRESSION_LZO is not set # CONFIG_INITRAMFS_COMPRESSION_LZ4 is not set -# CONFIG_INITRAMFS_COMPRESSION_ZSTD is not set +CONFIG_INITRAMFS_COMPRESSION_ZSTD=y # CONFIG_INITRAMFS_COMPRESSION_NONE is not set CONFIG_BOOT_CONFIG=y # CONFIG_BOOT_CONFIG_FORCE is not set @@ -217,16 +217,16 @@ CONFIG_INITRAMFS_PRESERVE_MTIME=y # CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_LD_ORPHAN_WARN=y -CONFIG_LD_ORPHAN_WARN_LEVEL="error" +CONFIG_LD_ORPHAN_WARN_LEVEL="warn" CONFIG_SYSCTL=y CONFIG_HAVE_UID16=y CONFIG_SYSCTL_EXCEPTION_TRACE=y CONFIG_EXPERT=y CONFIG_UID16=y CONFIG_MULTIUSER=y -# CONFIG_SGETMASK_SYSCALL is not set +CONFIG_SGETMASK_SYSCALL=y CONFIG_SYSFS_SYSCALL=y -# CONFIG_FHANDLE is not set +CONFIG_FHANDLE=y CONFIG_POSIX_TIMERS=y CONFIG_PRINTK=y CONFIG_BUG=y @@ -264,7 +264,6 @@ CONFIG_PERF_EVENTS=y CONFIG_SYSTEM_DATA_VERIFICATION=y CONFIG_PROFILING=y -CONFIG_TRACEPOINTS=y # # Kexec and crash features @@ -410,15 +409,15 @@ CONFIG_ARM64_PA_BITS=48 CONFIG_CPU_LITTLE_ENDIAN=y CONFIG_SCHED_MC=y # CONFIG_SCHED_CLUSTER is not set -# CONFIG_SCHED_SMT is not set +CONFIG_SCHED_SMT=y CONFIG_NR_CPUS=4 CONFIG_HOTPLUG_CPU=y # CONFIG_NUMA is not set # CONFIG_HZ_100 is not set -# CONFIG_HZ_250 is not set +CONFIG_HZ_250=y # CONFIG_HZ_300 is not set -CONFIG_HZ_1000=y -CONFIG_HZ=1000 +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 CONFIG_SCHED_HRTICK=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_HW_PERF_EVENTS=y @@ -442,9 +441,9 @@ CONFIG_COMPAT=y CONFIG_KUSER_HELPERS=y # CONFIG_COMPAT_ALIGNMENT_FIXUPS is not set CONFIG_ARMV8_DEPRECATED=y -CONFIG_SWP_EMULATION=y -CONFIG_CP15_BARRIER_EMULATION=y -CONFIG_SETEND_EMULATION=y +# CONFIG_SWP_EMULATION is not set +# CONFIG_CP15_BARRIER_EMULATION is not set +# CONFIG_SETEND_EMULATION is not set # # ARMv8.1 architectural features @@ -525,20 +524,18 @@ CONFIG_CMDLINE="" # CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y -# CONFIG_SUSPEND_SKIP_SYNC is not set +CONFIG_SUSPEND_SKIP_SYNC=y # CONFIG_HIBERNATION is not set CONFIG_PM_SLEEP=y CONFIG_PM_SLEEP_SMP=y -# CONFIG_PM_AUTOSLEEP is not set +CONFIG_PM_AUTOSLEEP=y # CONFIG_PM_USERSPACE_AUTOSLEEP is not set -CONFIG_PM_WAKELOCKS=y -CONFIG_PM_WAKELOCKS_LIMIT=100 -CONFIG_PM_WAKELOCKS_GC=y +# CONFIG_PM_WAKELOCKS is not set CONFIG_PM=y # CONFIG_PM_DEBUG is not set CONFIG_PM_CLK=y CONFIG_PM_GENERIC_DOMAINS=y -# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set +CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y CONFIG_PM_GENERIC_DOMAINS_SLEEP=y CONFIG_PM_GENERIC_DOMAINS_OF=y CONFIG_CPU_PM=y @@ -577,17 +574,17 @@ CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_GOV_ATTR_SET=y CONFIG_CPU_FREQ_GOV_COMMON=y CONFIG_CPU_FREQ_STAT=y -CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_POWERSAVE=y -CONFIG_CPU_FREQ_GOV_USERSPACE=y +# CONFIG_CPU_FREQ_GOV_USERSPACE is not set CONFIG_CPU_FREQ_GOV_ONDEMAND=y -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y # @@ -595,8 +592,7 @@ CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y # CONFIG_CPUFREQ_DT=y CONFIG_CPUFREQ_DT_PLATDEV=y -# CONFIG_ARM_SCPI_CPUFREQ is not set -CONFIG_ARM_SCMI_CPUFREQ=y +# CONFIG_ARM_SCMI_CPUFREQ is not set # end of CPU Frequency scaling # end of CPU Power Management @@ -610,8 +606,7 @@ CONFIG_ARCH_HAS_SUBPAGE_FAULTS=y CONFIG_HOTPLUG_CORE_SYNC=y CONFIG_HOTPLUG_CORE_SYNC_DEAD=y # CONFIG_KPROBES is not set -CONFIG_JUMP_LABEL=y -# CONFIG_STATIC_KEYS_SELFTEST is not set +# CONFIG_JUMP_LABEL is not set CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y @@ -700,6 +695,7 @@ CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y CONFIG_STRICT_MODULE_RWX=y CONFIG_HAVE_ARCH_COMPILER_H=y CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y +# CONFIG_LOCK_EVENT_COUNTS is not set CONFIG_ARCH_HAS_RELR=y CONFIG_HAVE_PREEMPT_DYNAMIC=y CONFIG_HAVE_PREEMPT_DYNAMIC_KEY=y @@ -711,6 +707,7 @@ CONFIG_ARCH_HAVE_TRACE_MMIO_ACCESS=y # # GCOV-based kernel profiling # +# CONFIG_GCOV_KERNEL is not set CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y # end of GCOV-based kernel profiling @@ -724,12 +721,12 @@ CONFIG_FUNCTION_ALIGNMENT=4 CONFIG_RT_MUTEXES=y CONFIG_BASE_SMALL=0 CONFIG_MODULES=y -# CONFIG_MODULE_FORCE_LOAD is not set +# CONFIG_MODULE_DEBUG is not set +CONFIG_MODULE_FORCE_LOAD=y CONFIG_MODULE_UNLOAD=y -# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_MODULE_FORCE_UNLOAD=y # CONFIG_MODULE_UNLOAD_TAINT_TRACKING is not set -CONFIG_MODVERSIONS=y -CONFIG_ASM_MODVERSIONS=y +# CONFIG_MODVERSIONS is not set # CONFIG_MODULE_SRCVERSION_ALL is not set # CONFIG_MODULE_SIG is not set CONFIG_MODULE_COMPRESS_NONE=y @@ -742,19 +739,16 @@ CONFIG_MODPROBE_PATH="/sbin/modprobe" CONFIG_MODULES_TREE_LOOKUP=y CONFIG_BLOCK=y CONFIG_BLOCK_LEGACY_AUTOLOAD=y -CONFIG_BLK_RQ_ALLOC_TIME=y -CONFIG_BLK_CGROUP_RWSTAT=y CONFIG_BLK_DEV_BSG_COMMON=y -CONFIG_BLK_ICQ=y -# CONFIG_BLK_DEV_BSGLIB is not set +CONFIG_BLK_DEV_BSGLIB=y # CONFIG_BLK_DEV_INTEGRITY is not set # CONFIG_BLK_DEV_ZONED is not set -CONFIG_BLK_DEV_THROTTLING=y -# CONFIG_BLK_DEV_THROTTLING_LOW is not set +# CONFIG_BLK_DEV_THROTTLING is not set # CONFIG_BLK_WBT is not set -CONFIG_BLK_CGROUP_IOLATENCY=y -CONFIG_BLK_CGROUP_IOCOST=y +# CONFIG_BLK_CGROUP_IOLATENCY is not set +# CONFIG_BLK_CGROUP_IOCOST is not set # CONFIG_BLK_CGROUP_IOPRIO is not set +CONFIG_BLK_DEBUG_FS=y # CONFIG_BLK_SED_OPAL is not set # CONFIG_BLK_INLINE_ENCRYPTION is not set @@ -767,7 +761,7 @@ CONFIG_PARTITION_ADVANCED=y # CONFIG_OSF_PARTITION is not set # CONFIG_AMIGA_PARTITION is not set # CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set +CONFIG_MAC_PARTITION=y CONFIG_MSDOS_PARTITION=y # CONFIG_BSD_DISKLABEL is not set # CONFIG_MINIX_SUBPARTITION is not set @@ -792,65 +786,13 @@ CONFIG_BLK_MQ_STACKING=y # IO Schedulers # CONFIG_MQ_IOSCHED_DEADLINE=y -CONFIG_MQ_IOSCHED_KYBER=y -CONFIG_IOSCHED_BFQ=y -CONFIG_BFQ_GROUP_IOSCHED=y -# CONFIG_BFQ_CGROUP_DEBUG is not set +# CONFIG_MQ_IOSCHED_KYBER is not set +# CONFIG_IOSCHED_BFQ is not set # end of IO Schedulers CONFIG_PADATA=y CONFIG_ASN1=y -CONFIG_ARCH_INLINE_SPIN_TRYLOCK=y -CONFIG_ARCH_INLINE_SPIN_TRYLOCK_BH=y -CONFIG_ARCH_INLINE_SPIN_LOCK=y -CONFIG_ARCH_INLINE_SPIN_LOCK_BH=y -CONFIG_ARCH_INLINE_SPIN_LOCK_IRQ=y -CONFIG_ARCH_INLINE_SPIN_LOCK_IRQSAVE=y -CONFIG_ARCH_INLINE_SPIN_UNLOCK=y -CONFIG_ARCH_INLINE_SPIN_UNLOCK_BH=y -CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQ=y -CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE=y -CONFIG_ARCH_INLINE_READ_LOCK=y -CONFIG_ARCH_INLINE_READ_LOCK_BH=y -CONFIG_ARCH_INLINE_READ_LOCK_IRQ=y -CONFIG_ARCH_INLINE_READ_LOCK_IRQSAVE=y -CONFIG_ARCH_INLINE_READ_UNLOCK=y -CONFIG_ARCH_INLINE_READ_UNLOCK_BH=y -CONFIG_ARCH_INLINE_READ_UNLOCK_IRQ=y -CONFIG_ARCH_INLINE_READ_UNLOCK_IRQRESTORE=y -CONFIG_ARCH_INLINE_WRITE_LOCK=y -CONFIG_ARCH_INLINE_WRITE_LOCK_BH=y -CONFIG_ARCH_INLINE_WRITE_LOCK_IRQ=y -CONFIG_ARCH_INLINE_WRITE_LOCK_IRQSAVE=y -CONFIG_ARCH_INLINE_WRITE_UNLOCK=y -CONFIG_ARCH_INLINE_WRITE_UNLOCK_BH=y -CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQ=y -CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE=y -CONFIG_INLINE_SPIN_TRYLOCK=y -CONFIG_INLINE_SPIN_TRYLOCK_BH=y -CONFIG_INLINE_SPIN_LOCK=y -CONFIG_INLINE_SPIN_LOCK_BH=y -CONFIG_INLINE_SPIN_LOCK_IRQ=y -CONFIG_INLINE_SPIN_LOCK_IRQSAVE=y -CONFIG_INLINE_SPIN_UNLOCK_BH=y -CONFIG_INLINE_SPIN_UNLOCK_IRQ=y -CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE=y -CONFIG_INLINE_READ_LOCK=y -CONFIG_INLINE_READ_LOCK_BH=y -CONFIG_INLINE_READ_LOCK_IRQ=y -CONFIG_INLINE_READ_LOCK_IRQSAVE=y -CONFIG_INLINE_READ_UNLOCK=y -CONFIG_INLINE_READ_UNLOCK_BH=y -CONFIG_INLINE_READ_UNLOCK_IRQ=y -CONFIG_INLINE_READ_UNLOCK_IRQRESTORE=y -CONFIG_INLINE_WRITE_LOCK=y -CONFIG_INLINE_WRITE_LOCK_BH=y -CONFIG_INLINE_WRITE_LOCK_IRQ=y -CONFIG_INLINE_WRITE_LOCK_IRQSAVE=y -CONFIG_INLINE_WRITE_UNLOCK=y -CONFIG_INLINE_WRITE_UNLOCK_BH=y -CONFIG_INLINE_WRITE_UNLOCK_IRQ=y -CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE=y +CONFIG_UNINLINE_SPIN_UNLOCK=y CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y CONFIG_MUTEX_SPIN_ON_OWNER=y CONFIG_RWSEM_SPIN_ON_OWNER=y @@ -882,24 +824,8 @@ CONFIG_COREDUMP=y # # Memory Management options # -CONFIG_ZPOOL=y CONFIG_SWAP=y -CONFIG_ZSWAP=y -CONFIG_ZSWAP_DEFAULT_ON=y -# CONFIG_ZSWAP_EXCLUSIVE_LOADS_DEFAULT_ON is not set -# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set -CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO=y -# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_842 is not set -# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4 is not set -# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4HC is not set -# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD is not set -CONFIG_ZSWAP_COMPRESSOR_DEFAULT="lzo" -CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y -# CONFIG_ZSWAP_ZPOOL_DEFAULT_Z3FOLD is not set -# CONFIG_ZSWAP_ZPOOL_DEFAULT_ZSMALLOC is not set -CONFIG_ZSWAP_ZPOOL_DEFAULT="zbud" -CONFIG_ZBUD=y -# CONFIG_Z3FOLD is not set +# CONFIG_ZSWAP is not set CONFIG_ZSMALLOC=y # CONFIG_ZSMALLOC_STAT is not set CONFIG_ZSMALLOC_CHAIN_SIZE=8 @@ -910,11 +836,11 @@ CONFIG_ZSMALLOC_CHAIN_SIZE=8 # CONFIG_SLAB_DEPRECATED is not set CONFIG_SLUB=y # CONFIG_SLUB_TINY is not set -CONFIG_SLAB_MERGE_DEFAULT=y +# CONFIG_SLAB_MERGE_DEFAULT is not set # CONFIG_SLAB_FREELIST_RANDOM is not set # CONFIG_SLAB_FREELIST_HARDENED is not set # CONFIG_SLUB_STATS is not set -CONFIG_SLUB_CPU_PARTIAL=y +# CONFIG_SLUB_CPU_PARTIAL is not set # CONFIG_RANDOM_KMALLOC_CACHES is not set # end of SLAB allocator options @@ -926,16 +852,14 @@ CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y CONFIG_SPARSEMEM_VMEMMAP=y CONFIG_HAVE_FAST_GUP=y CONFIG_ARCH_KEEP_MEMBLOCK=y -CONFIG_EXCLUSIVE_SYSTEM_RAM=y CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y # CONFIG_MEMORY_HOTPLUG is not set CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y -CONFIG_COMPACTION=y -CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1 -CONFIG_PAGE_REPORTING=y +# CONFIG_COMPACTION is not set +# CONFIG_PAGE_REPORTING is not set CONFIG_MIGRATION=y CONFIG_PHYS_ADDR_T_64BIT=y # CONFIG_KSM is not set @@ -956,12 +880,9 @@ CONFIG_ZONE_DMA=y CONFIG_ZONE_DMA32=y CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y CONFIG_ARCH_USES_PG_ARCH_X=y -CONFIG_VM_EVENT_COUNTERS=y +# CONFIG_VM_EVENT_COUNTERS is not set # CONFIG_PERCPU_STATS is not set - -# -# GUP_TEST needs to have DEBUG_FS enabled -# +# CONFIG_GUP_TEST is not set # CONFIG_DMAPOOL_TEST is not set CONFIG_ARCH_HAS_PTE_SPECIAL=y CONFIG_MEMFD_CREATE=y @@ -995,15 +916,15 @@ CONFIG_PACKET=y CONFIG_UNIX=y CONFIG_UNIX_SCM=y CONFIG_AF_UNIX_OOB=y -# CONFIG_UNIX_DIAG is not set +CONFIG_UNIX_DIAG=m # CONFIG_TLS is not set CONFIG_XFRM=y CONFIG_XFRM_ALGO=y CONFIG_XFRM_USER=y -CONFIG_XFRM_INTERFACE=y # CONFIG_XFRM_SUB_POLICY is not set # CONFIG_XFRM_MIGRATE is not set -CONFIG_XFRM_STATISTICS=y +# CONFIG_XFRM_STATISTICS is not set +CONFIG_XFRM_AH=y CONFIG_XFRM_ESP=y CONFIG_XFRM_IPCOMP=y CONFIG_NET_KEY=y @@ -1014,296 +935,377 @@ 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_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_ROUTE_CLASSID=y # CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -CONFIG_NET_IPGRE_DEMUX=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE_DEMUX=m CONFIG_NET_IP_TUNNEL=y -# CONFIG_NET_IPGRE is not set +CONFIG_NET_IPGRE=m +# CONFIG_NET_IPGRE_BROADCAST is not set CONFIG_IP_MROUTE_COMMON=y CONFIG_IP_MROUTE=y -# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set -# CONFIG_IP_PIMSM_V1 is not set -# CONFIG_IP_PIMSM_V2 is not set +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y CONFIG_SYN_COOKIES=y -CONFIG_NET_IPVTI=y +# CONFIG_NET_IPVTI is not set CONFIG_NET_UDP_TUNNEL=y # CONFIG_NET_FOU is not set # CONFIG_NET_FOU_IP_TUNNELS is not set -# CONFIG_INET_AH is not set +CONFIG_INET_AH=y CONFIG_INET_ESP=y # CONFIG_INET_ESP_OFFLOAD is not set # CONFIG_INET_ESPINTCP is not set -# CONFIG_INET_IPCOMP is not set +CONFIG_INET_IPCOMP=y CONFIG_INET_TABLE_PERTURB_ORDER=16 +CONFIG_INET_XFRM_TUNNEL=y CONFIG_INET_TUNNEL=y -CONFIG_INET_DIAG=y -CONFIG_INET_TCP_DIAG=y -CONFIG_INET_UDP_DIAG=y -# CONFIG_INET_RAW_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 is not set -CONFIG_INET6_ESP=y -# CONFIG_INET6_ESP_OFFLOAD is not set -# CONFIG_INET6_ESPINTCP is not set -CONFIG_INET6_IPCOMP=y -CONFIG_IPV6_MIP6=y -# CONFIG_IPV6_ILA is not set -CONFIG_INET6_XFRM_TUNNEL=y -CONFIG_INET6_TUNNEL=y -CONFIG_IPV6_VTI=y -CONFIG_IPV6_SIT=y -# CONFIG_IPV6_SIT_6RD is not set -CONFIG_IPV6_NDISC_NODETYPE=y -CONFIG_IPV6_TUNNEL=y -# CONFIG_IPV6_GRE is not set -CONFIG_IPV6_MULTIPLE_TABLES=y -# CONFIG_IPV6_SUBTREES is not set -# CONFIG_IPV6_MROUTE is not set -# CONFIG_IPV6_SEG6_LWTUNNEL is not set -# CONFIG_IPV6_SEG6_HMAC is not set -# CONFIG_IPV6_RPL_LWTUNNEL is not set -# CONFIG_IPV6_IOAM6_LWTUNNEL is not set +# CONFIG_INET_DIAG is not set +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CUBIC=m +CONFIG_TCP_CONG_WESTWOOD=m +CONFIG_TCP_CONG_HTCP=m +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_VEGAS=m +# CONFIG_TCP_CONG_NV is not set +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_CONG_DCTCP=m +CONFIG_TCP_CONG_CDG=m +# CONFIG_TCP_CONG_BBR is not set +CONFIG_DEFAULT_RENO=y +CONFIG_DEFAULT_TCP_CONG="reno" +CONFIG_TCP_MD5SIG=y +# CONFIG_IPV6 is not set # CONFIG_NETLABEL is not set # CONFIG_MPTCP is not set -CONFIG_NETWORK_SECMARK=y +# CONFIG_NETWORK_SECMARK is not set CONFIG_NET_PTP_CLASSIFY=y # CONFIG_NETWORK_PHY_TIMESTAMPING is not set CONFIG_NETFILTER=y CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=y # # Core Netfilter Configuration # CONFIG_NETFILTER_INGRESS=y CONFIG_NETFILTER_EGRESS=y -CONFIG_NETFILTER_SKIP_EGRESS=y CONFIG_NETFILTER_NETLINK=y +CONFIG_NETFILTER_FAMILY_BRIDGE=y CONFIG_NETFILTER_FAMILY_ARP=y CONFIG_NETFILTER_BPF_LINK=y -# CONFIG_NETFILTER_NETLINK_ACCT is not set +# CONFIG_NETFILTER_NETLINK_HOOK is not set +CONFIG_NETFILTER_NETLINK_ACCT=m CONFIG_NETFILTER_NETLINK_QUEUE=y CONFIG_NETFILTER_NETLINK_LOG=y -# CONFIG_NETFILTER_NETLINK_OSF is not set -CONFIG_NF_CONNTRACK=y -# CONFIG_NF_LOG_SYSLOG is not set -CONFIG_NETFILTER_CONNCOUNT=y +CONFIG_NETFILTER_NETLINK_OSF=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_LOG_SYSLOG=m +CONFIG_NETFILTER_CONNCOUNT=m 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_CONNTRACK_LABELS is not set +CONFIG_NF_CONNTRACK_TIMEOUT=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CONNTRACK_LABELS=y +CONFIG_NF_CONNTRACK_OVS=y 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_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_BROADCAST=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NF_CT_NETLINK_TIMEOUT=m # CONFIG_NETFILTER_NETLINK_GLUE_CT is not set -CONFIG_NF_NAT=y -CONFIG_NF_NAT_AMANDA=y -CONFIG_NF_NAT_FTP=y -CONFIG_NF_NAT_IRC=y -CONFIG_NF_NAT_TFTP=y +CONFIG_NF_NAT=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_SIP=m +CONFIG_NF_NAT_TFTP=m CONFIG_NF_NAT_REDIRECT=y CONFIG_NF_NAT_MASQUERADE=y -# CONFIG_NF_TABLES is not set +CONFIG_NF_NAT_OVS=y +CONFIG_NETFILTER_SYNPROXY=m +CONFIG_NF_TABLES=m +# CONFIG_NF_TABLES_NETDEV is not set +# CONFIG_NFT_NUMGEN is not set +CONFIG_NFT_CT=m +# CONFIG_NFT_CONNLIMIT is not set +CONFIG_NFT_LOG=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_REDIR=m +# CONFIG_NFT_TUNNEL is not set +CONFIG_NFT_QUEUE=m +# CONFIG_NFT_QUOTA is not set +CONFIG_NFT_REJECT=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_HASH=m +# CONFIG_NFT_XFRM is not set +# CONFIG_NFT_SOCKET is not set +# CONFIG_NFT_OSF is not set +# CONFIG_NFT_TPROXY is not set +# CONFIG_NFT_SYNPROXY is not set +# CONFIG_NF_FLOW_TABLE is not set CONFIG_NETFILTER_XTABLES=y CONFIG_NETFILTER_XTABLES_COMPAT=y # # Xtables combined modules # -CONFIG_NETFILTER_XT_MARK=y -CONFIG_NETFILTER_XT_CONNMARK=y +CONFIG_NETFILTER_XT_MARK=m +CONFIG_NETFILTER_XT_CONNMARK=m +CONFIG_NETFILTER_XT_SET=m # # 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 is not set -# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set -CONFIG_NETFILTER_XT_TARGET_REDIRECT=y -CONFIG_NETFILTER_XT_TARGET_MASQUERADE=y -# CONFIG_NETFILTER_XT_TARGET_TEE is not set -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 +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CT=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_NAT=m +CONFIG_NETFILTER_XT_TARGET_NETMAP=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m # # Xtables matches # -# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set -CONFIG_NETFILTER_XT_MATCH_BPF=y -# 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 is not set -CONFIG_NETFILTER_XT_MATCH_ECN=y -# CONFIG_NETFILTER_XT_MATCH_ESP is not set -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=y -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 is not set -# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set -# CONFIG_NETFILTER_XT_MATCH_OSF is not set -CONFIG_NETFILTER_XT_MATCH_OWNER=y -CONFIG_NETFILTER_XT_MATCH_POLICY=y -CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y -CONFIG_NETFILTER_XT_MATCH_QUOTA=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_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NETFILTER_XT_MATCH_CGROUP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ECN=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_IPCOMP=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_L2TP=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m # end of Core Netfilter Configuration -# CONFIG_IP_SET is not set -# CONFIG_IP_VS is not set +CONFIG_IP_SET=y +CONFIG_IP_SET_MAX=256 +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPMARK=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +# CONFIG_IP_SET_HASH_IPMAC is not set +CONFIG_IP_SET_HASH_MAC=m +CONFIG_IP_SET_HASH_NETPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETNET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_LIST_SET=m +CONFIG_IP_VS=m +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_AH_ESP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y + +# +# IPVS scheduler +# +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_FO=m +CONFIG_IP_VS_OVF=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +# CONFIG_IP_VS_MH is not set +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m +# CONFIG_IP_VS_TWOS is not set + +# +# IPVS SH scheduler +# +CONFIG_IP_VS_SH_TAB_BITS=8 + +# +# IPVS MH scheduler +# +CONFIG_IP_VS_MH_TAB_INDEX=12 + +# +# IPVS application helper +# +# CONFIG_IP_VS_FTP is not set +CONFIG_IP_VS_NFCT=y +# CONFIG_IP_VS_PE_SIP is not set # # IP: Netfilter Configuration # -CONFIG_NF_DEFRAG_IPV4=y -CONFIG_NF_SOCKET_IPV4=y -CONFIG_NF_TPROXY_IPV4=y -# CONFIG_NF_DUP_IPV4 is not set -# CONFIG_NF_LOG_ARP is not set -# CONFIG_NF_LOG_IPV4 is not set -CONFIG_NF_REJECT_IPV4=y -CONFIG_NF_NAT_PPTP=y -CONFIG_NF_NAT_H323=y +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_NF_SOCKET_IPV4=m +CONFIG_NF_TPROXY_IPV4=m +# CONFIG_NF_TABLES_IPV4 is not set +# CONFIG_NF_TABLES_ARP is not set +CONFIG_NF_DUP_IPV4=m +CONFIG_NF_LOG_ARP=m +CONFIG_NF_LOG_IPV4=m +CONFIG_NF_REJECT_IPV4=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_H323=m CONFIG_IP_NF_IPTABLES=y -# CONFIG_IP_NF_MATCH_AH is not set -CONFIG_IP_NF_MATCH_ECN=y -# CONFIG_IP_NF_MATCH_RPFILTER is not set -CONFIG_IP_NF_MATCH_TTL=y +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m 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_ECN is not set -# CONFIG_IP_NF_TARGET_TTL is not set -CONFIG_IP_NF_RAW=y +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SYNPROXY=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m CONFIG_IP_NF_SECURITY=y -CONFIG_IP_NF_ARPTABLES=y -CONFIG_IP_NF_ARPFILTER=y -CONFIG_IP_NF_ARP_MANGLE=y +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m # end of IP: Netfilter Configuration -# -# IPv6: Netfilter Configuration -# -CONFIG_NF_SOCKET_IPV6=y -CONFIG_NF_TPROXY_IPV6=y -# CONFIG_NF_DUP_IPV6 is not set -CONFIG_NF_REJECT_IPV6=y -# CONFIG_NF_LOG_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_MATCH_SRH 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 -# end of IPv6: Netfilter Configuration - -CONFIG_NF_DEFRAG_IPV6=y +CONFIG_NF_TABLES_BRIDGE=m +CONFIG_NFT_BRIDGE_META=m # CONFIG_NF_CONNTRACK_BRIDGE is not set +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_NFLOG=m # CONFIG_BPFILTER 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_V3 is not set -# CONFIG_BRIDGE is not set +# CONFIG_L2TP is not set +CONFIG_STP=y +CONFIG_BRIDGE=y +CONFIG_BRIDGE_IGMP_SNOOPING=y +# CONFIG_BRIDGE_VLAN_FILTERING is not set +# CONFIG_BRIDGE_MRP is not set +# CONFIG_BRIDGE_CFM is not set # CONFIG_NET_DSA is not set -# CONFIG_VLAN_8021Q is not set +CONFIG_VLAN_8021Q=y +# CONFIG_VLAN_8021Q_GVRP is not set +# CONFIG_VLAN_8021Q_MVRP is not set +CONFIG_LLC=y # CONFIG_LLC2 is not set # CONFIG_ATALK is not set # CONFIG_X25 is not set # CONFIG_LAPB is not set # CONFIG_PHONET is not set -# CONFIG_6LOWPAN is not set # CONFIG_IEEE802154 is not set CONFIG_NET_SCHED=y @@ -1329,13 +1331,12 @@ CONFIG_NET_SCH_HTB=y # CONFIG_NET_SCH_SKBPRIO 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_CODEL=y +CONFIG_NET_SCH_FQ_CODEL=y # CONFIG_NET_SCH_CAKE 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 # CONFIG_NET_SCH_ETS is not set # CONFIG_NET_SCH_DEFAULT is not set @@ -1349,53 +1350,30 @@ CONFIG_NET_CLS=y # CONFIG_NET_CLS_FW is not set CONFIG_NET_CLS_U32=y # CONFIG_CLS_U32_PERF is not set -# CONFIG_CLS_U32_MARK is not set +CONFIG_CLS_U32_MARK=y # CONFIG_NET_CLS_FLOW is not set -# CONFIG_NET_CLS_CGROUP is not set -CONFIG_NET_CLS_BPF=y +CONFIG_NET_CLS_CGROUP=y +# CONFIG_NET_CLS_BPF is not set # CONFIG_NET_CLS_FLOWER is not set # CONFIG_NET_CLS_MATCHALL is not set -CONFIG_NET_EMATCH=y -CONFIG_NET_EMATCH_STACK=32 -# CONFIG_NET_EMATCH_CMP is not set -# CONFIG_NET_EMATCH_NBYTE is not set -CONFIG_NET_EMATCH_U32=y -# CONFIG_NET_EMATCH_META is not set -# CONFIG_NET_EMATCH_TEXT is not set -# CONFIG_NET_EMATCH_IPT is not set -CONFIG_NET_CLS_ACT=y -# CONFIG_NET_ACT_POLICE is not set -# CONFIG_NET_ACT_GACT is not set -# CONFIG_NET_ACT_MIRRED is not set -# CONFIG_NET_ACT_SAMPLE is not set -# CONFIG_NET_ACT_IPT is not set -# 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_ACT_MPLS is not set -# CONFIG_NET_ACT_VLAN is not set -# CONFIG_NET_ACT_BPF is not set -# CONFIG_NET_ACT_CONNMARK is not set -# CONFIG_NET_ACT_CTINFO is not set -# CONFIG_NET_ACT_SKBMOD is not set -# CONFIG_NET_ACT_IFE is not set -# CONFIG_NET_ACT_TUNNEL_KEY is not set -# CONFIG_NET_ACT_GATE is not set -# CONFIG_NET_TC_SKB_EXT is not set +# CONFIG_NET_EMATCH is not set +# CONFIG_NET_CLS_ACT is not set CONFIG_NET_SCH_FIFO=y # CONFIG_DCB is not set CONFIG_DNS_RESOLVER=y # CONFIG_BATMAN_ADV is not set -# CONFIG_OPENVSWITCH is not set +CONFIG_OPENVSWITCH=m +CONFIG_OPENVSWITCH_GRE=m +CONFIG_OPENVSWITCH_VXLAN=m # CONFIG_VSOCKETS is not set -CONFIG_NETLINK_DIAG=y -# CONFIG_MPLS is not set -# CONFIG_NET_NSH is not set +# CONFIG_NETLINK_DIAG is not set +CONFIG_MPLS=y +CONFIG_NET_MPLS_GSO=m +# CONFIG_MPLS_ROUTING is not set +CONFIG_NET_NSH=m # CONFIG_HSR is not set # CONFIG_NET_SWITCHDEV is not set -# CONFIG_NET_L3_MASTER_DEV is not set +CONFIG_NET_L3_MASTER_DEV=y # CONFIG_QRTR is not set # CONFIG_NET_NCSI is not set CONFIG_PCPU_DEV_REFCNT=y @@ -1404,8 +1382,8 @@ CONFIG_RPS=y CONFIG_RFS_ACCEL=y CONFIG_SOCK_RX_QUEUE_MAPPING=y CONFIG_XPS=y -# CONFIG_CGROUP_NET_PRIO is not set -# CONFIG_CGROUP_NET_CLASSID is not set +CONFIG_CGROUP_NET_PRIO=y +CONFIG_CGROUP_NET_CLASSID=y CONFIG_NET_RX_BUSY_POLL=y CONFIG_BQL=y # CONFIG_BPF_STREAM_PARSER is not set @@ -1415,61 +1393,69 @@ CONFIG_NET_FLOW_LIMIT=y # Network testing # # CONFIG_NET_PKTGEN is not set -# CONFIG_NET_DROP_MONITOR is not set # end of Network testing # end of Networking options # CONFIG_HAMRADIO is not set -# CONFIG_CAN is not set -CONFIG_BT=y +CONFIG_CAN=y +CONFIG_CAN_RAW=y +CONFIG_CAN_BCM=y +CONFIG_CAN_GW=y +# CONFIG_CAN_J1939 is not set +# CONFIG_CAN_ISOTP is not set +CONFIG_BT=m CONFIG_BT_BREDR=y CONFIG_BT_RFCOMM=y -CONFIG_BT_RFCOMM_TTY=y -CONFIG_BT_BNEP=y -CONFIG_BT_BNEP_MC_FILTER=y -CONFIG_BT_BNEP_PROTO_FILTER=y +# CONFIG_BT_RFCOMM_TTY is not set +# CONFIG_BT_BNEP is not set +# CONFIG_BT_CMTP is not set CONFIG_BT_HIDP=y CONFIG_BT_HS=y CONFIG_BT_LE=y CONFIG_BT_LE_L2CAP_ECRED=y -CONFIG_BT_LEDS=y -CONFIG_BT_MSFTEXT=y -CONFIG_BT_AOSPEXT=y +# CONFIG_BT_LEDS is not set +# CONFIG_BT_MSFTEXT is not set +# CONFIG_BT_AOSPEXT is not set +CONFIG_BT_DEBUGFS=y # CONFIG_BT_SELFTEST is not set -# CONFIG_BT_FEATURE_DEBUG is not set # # Bluetooth device drivers # -CONFIG_BT_INTEL=y -CONFIG_BT_RTL=y -CONFIG_BT_HCIBTUSB=y +CONFIG_BT_INTEL=m +CONFIG_BT_BCM=m +CONFIG_BT_RTL=m +CONFIG_BT_HCIBTUSB=m # CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set CONFIG_BT_HCIBTUSB_POLL_SYNC=y -# CONFIG_BT_HCIBTUSB_BCM is not set +CONFIG_BT_HCIBTUSB_BCM=y # CONFIG_BT_HCIBTUSB_MTK is not set CONFIG_BT_HCIBTUSB_RTL=y # CONFIG_BT_HCIBTSDIO is not set -CONFIG_BT_HCIUART=y +CONFIG_BT_HCIUART=m CONFIG_BT_HCIUART_SERDEV=y -# CONFIG_BT_HCIUART_H4 is not set +CONFIG_BT_HCIUART_H4=y # CONFIG_BT_HCIUART_NOKIA is not set # CONFIG_BT_HCIUART_BCSP is not set -# CONFIG_BT_HCIUART_ATH3K is not set +CONFIG_BT_HCIUART_ATH3K=y # CONFIG_BT_HCIUART_LL is not set -CONFIG_BT_HCIUART_3WIRE=y +# CONFIG_BT_HCIUART_3WIRE is not set # CONFIG_BT_HCIUART_INTEL is not set # CONFIG_BT_HCIUART_BCM is not set -CONFIG_BT_HCIUART_RTL=y +# CONFIG_BT_HCIUART_RTL is not set # CONFIG_BT_HCIUART_QCA is not set # CONFIG_BT_HCIUART_AG6XX is not set # CONFIG_BT_HCIUART_MRVL is not set # CONFIG_BT_HCIBCM203X is not set # CONFIG_BT_HCIBCM4377 is not set # CONFIG_BT_HCIBPA10X is not set -# CONFIG_BT_HCIBFUSB is not set -# CONFIG_BT_HCIVHCI is not set -# CONFIG_BT_MRVL is not set +CONFIG_BT_HCIBFUSB=m +# CONFIG_BT_HCIDTL1 is not set +# CONFIG_BT_HCIBT3C is not set +# CONFIG_BT_HCIBLUECARD is not set +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m # CONFIG_BT_ATH3K is not set # CONFIG_BT_MTKSDIO is not set # CONFIG_BT_MTKUART is not set @@ -1481,34 +1467,43 @@ CONFIG_BT_HCIUART_RTL=y # CONFIG_MCTP is not set CONFIG_FIB_RULES=y CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y CONFIG_WEXT_CORE=y CONFIG_WEXT_PROC=y -CONFIG_CFG80211=y +CONFIG_WEXT_SPY=y +CONFIG_WEXT_PRIV=y +CONFIG_CFG80211=m # CONFIG_NL80211_TESTMODE is not set # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set # CONFIG_CFG80211_CERTIFICATION_ONUS is not set CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y -CONFIG_CFG80211_DEFAULT_PS=y -CONFIG_CFG80211_CRDA_SUPPORT=y +# CONFIG_CFG80211_DEFAULT_PS is not set +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_CFG80211_CRDA_SUPPORT is not set CONFIG_CFG80211_WEXT=y -CONFIG_MAC80211=y +CONFIG_LIB80211=m +# CONFIG_LIB80211_DEBUG is not set +CONFIG_MAC80211=m CONFIG_MAC80211_HAS_RC=y CONFIG_MAC80211_RC_MINSTREL=y CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" CONFIG_MAC80211_MESH=y CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_DEBUGFS is not set # CONFIG_MAC80211_MESSAGE_TRACING is not set # CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 -CONFIG_RFKILL=y +CONFIG_RFKILL=m CONFIG_RFKILL_LEDS=y CONFIG_RFKILL_INPUT=y -CONFIG_RFKILL_GPIO=y +CONFIG_RFKILL_GPIO=m # CONFIG_NET_9P is not set # CONFIG_CAIF is not set -# CONFIG_CEPH_LIB is not set +CONFIG_CEPH_LIB=m +# CONFIG_CEPH_LIB_PRETTYDEBUG is not set +# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set # CONFIG_NFC is not set # CONFIG_PSAMPLE is not set # CONFIG_NET_IFE is not set @@ -1518,9 +1513,9 @@ CONFIG_GRO_CELLS=y CONFIG_NET_SELFTESTS=y CONFIG_NET_SOCK_MSG=y CONFIG_PAGE_POOL=y -CONFIG_PAGE_POOL_STATS=y +# CONFIG_PAGE_POOL_STATS is not set # CONFIG_FAILOVER is not set -CONFIG_ETHTOOL_NETLINK=y +# CONFIG_ETHTOOL_NETLINK is not set # # Device Drivers @@ -1531,16 +1526,21 @@ CONFIG_PCI=y CONFIG_PCI_DOMAINS=y CONFIG_PCI_DOMAINS_GENERIC=y CONFIG_PCI_SYSCALL=y -# CONFIG_PCIEPORTBUS is not set +CONFIG_PCIEPORTBUS=y +CONFIG_PCIEAER=y +# CONFIG_PCIEAER_INJECT is not set +# CONFIG_PCIE_ECRC is not set CONFIG_PCIEASPM=y -CONFIG_PCIEASPM_DEFAULT=y -# CONFIG_PCIEASPM_POWERSAVE is not set +# CONFIG_PCIEASPM_DEFAULT is not set +CONFIG_PCIEASPM_POWERSAVE=y # CONFIG_PCIEASPM_POWER_SUPERSAVE is not set # CONFIG_PCIEASPM_PERFORMANCE is not set +CONFIG_PCIE_PME=y +# CONFIG_PCIE_DPC is not set # CONFIG_PCIE_PTM is not set CONFIG_PCI_MSI=y CONFIG_PCI_QUIRKS=y -# CONFIG_PCI_DEBUG is not set +CONFIG_PCI_DEBUG=y # CONFIG_PCI_STUB is not set # CONFIG_PCI_IOV is not set # CONFIG_PCI_PRI is not set @@ -1551,8 +1551,7 @@ CONFIG_PCIE_BUS_DEFAULT=y # CONFIG_PCIE_BUS_SAFE is not set # CONFIG_PCIE_BUS_PERFORMANCE is not set # CONFIG_PCIE_BUS_PEER2PEER is not set -CONFIG_VGA_ARB=y -CONFIG_VGA_ARB_MAX_GPUS=16 +# CONFIG_VGA_ARB is not set # CONFIG_HOTPLUG_PCI is not set # @@ -1608,7 +1607,17 @@ CONFIG_PCIE_ROCKCHIP_DW_HOST=y # end of PCI switch controller drivers # CONFIG_CXL_BUS is not set -# CONFIG_PCCARD is not set +CONFIG_PCCARD=y +CONFIG_PCMCIA=y +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_CARDBUS=y + +# +# PC-card bridges +# +# CONFIG_YENTA is not set +# CONFIG_PD6729 is not set +# CONFIG_I82092 is not set # CONFIG_RAPIDIO is not set # @@ -1618,7 +1627,7 @@ CONFIG_UEVENT_HELPER=y CONFIG_UEVENT_HELPER_PATH="" CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y -# CONFIG_DEVTMPFS_SAFE is not set +CONFIG_DEVTMPFS_SAFE=y CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y @@ -1626,23 +1635,25 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y # Firmware loader # CONFIG_FW_LOADER=y +CONFIG_FW_LOADER_DEBUG=y +CONFIG_FW_LOADER_PAGED_BUF=y +CONFIG_FW_LOADER_SYSFS=y CONFIG_EXTRA_FIRMWARE="" -# CONFIG_FW_LOADER_USER_HELPER is not set +CONFIG_FW_LOADER_USER_HELPER=y +CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y # CONFIG_FW_LOADER_COMPRESS is not set -# CONFIG_FW_CACHE is not set +CONFIG_FW_CACHE=y # CONFIG_FW_UPLOAD is not set # end of Firmware loader CONFIG_WANT_DEV_COREDUMP=y -CONFIG_ALLOW_DEV_COREDUMP=y -CONFIG_DEV_COREDUMP=y +# CONFIG_ALLOW_DEV_COREDUMP is not set # CONFIG_DEBUG_DRIVER is not set -# CONFIG_DEBUG_DEVRES is not set +CONFIG_DEBUG_DEVRES=y # CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set # CONFIG_TEST_ASYNC_DRIVER_PROBE is not set CONFIG_GENERIC_CPU_AUTOPROBE=y CONFIG_GENERIC_CPU_VULNERABILITIES=y -CONFIG_SOC_BUS=y CONFIG_REGMAP=y CONFIG_REGMAP_I2C=y CONFIG_REGMAP_SPI=y @@ -1680,11 +1691,10 @@ CONFIG_PROC_EVENTS=y # ARM System Control and Management Interface Protocol # CONFIG_ARM_SCMI_PROTOCOL=y +# CONFIG_ARM_SCMI_RAW_MODE_SUPPORT is not set CONFIG_ARM_SCMI_HAVE_TRANSPORT=y CONFIG_ARM_SCMI_HAVE_SHMEM=y -CONFIG_ARM_SCMI_HAVE_MSG=y CONFIG_ARM_SCMI_TRANSPORT_MAILBOX=y -CONFIG_ARM_SCMI_TRANSPORT_OPTEE=y CONFIG_ARM_SCMI_TRANSPORT_SMC=y # CONFIG_ARM_SCMI_TRANSPORT_SMC_ATOMIC_ENABLE is not set CONFIG_ARM_SCMI_POWER_DOMAIN=y @@ -1693,16 +1703,15 @@ CONFIG_ARM_SCMI_POWER_CONTROL=y CONFIG_ARM_SCPI_PROTOCOL=y CONFIG_ARM_SCPI_POWER_DOMAIN=y -CONFIG_FIRMWARE_MEMMAP=y +# CONFIG_FIRMWARE_MEMMAP is not set # CONFIG_FW_CFG_SYSFS is not set -CONFIG_ARM_FFA_TRANSPORT=y -CONFIG_ARM_FFA_SMCCC=y +# CONFIG_ARM_FFA_TRANSPORT is not set # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_ARM_PSCI_FW=y # CONFIG_ARM_PSCI_CHECKER is not set CONFIG_HAVE_ARM_SMCCC=y CONFIG_HAVE_ARM_SMCCC_DISCOVERY=y -CONFIG_ARM_SMCCC_SOC_ID=y +# CONFIG_ARM_SMCCC_SOC_ID is not set # # Tegra firmware driver @@ -1711,109 +1720,7 @@ CONFIG_ARM_SMCCC_SOC_ID=y # end of Firmware Drivers # CONFIG_GNSS is not set -CONFIG_MTD=y -# CONFIG_MTD_TESTS is not set - -# -# Partition parsers -# -# CONFIG_MTD_AR7_PARTS is not set -# CONFIG_MTD_CMDLINE_PARTS is not set -CONFIG_MTD_OF_PARTS=y -# CONFIG_MTD_AFS_PARTS is not set -# CONFIG_MTD_REDBOOT_PARTS is not set -# end of Partition parsers - -# -# User Modules And Translation Layers -# -CONFIG_MTD_BLKDEVS=y -CONFIG_MTD_BLOCK=y - -# -# Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK. -# -# 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 -# CONFIG_MTD_SWAP is not set -# CONFIG_MTD_PARTITIONED_MASTER 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_CFI_I1=y -CONFIG_MTD_CFI_I2=y -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# end of RAM/ROM/Flash chip drivers - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_COMPLEX_MAPPINGS is not set -# CONFIG_MTD_INTEL_VR_NOR is not set -# CONFIG_MTD_PLATRAM is not set -# end of Mapping drivers for chip access - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_DATAFLASH is not set -# CONFIG_MTD_MCHP23K256 is not set -# CONFIG_MTD_MCHP48L640 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 -# end of Self-contained MTD device drivers - -# -# NAND -# -# CONFIG_MTD_ONENAND is not set -# CONFIG_MTD_RAW_NAND is not set -# CONFIG_MTD_SPI_NAND is not set - -# -# ECC engine support -# -# CONFIG_MTD_NAND_ECC_SW_HAMMING is not set -# CONFIG_MTD_NAND_ECC_SW_BCH is not set -# CONFIG_MTD_NAND_ECC_MXIC is not set -# end of ECC engine support -# end of NAND - -# -# LPDDR & LPDDR2 PCM memory drivers -# -# CONFIG_MTD_LPDDR is not set -# end of LPDDR & LPDDR2 PCM memory drivers - -CONFIG_MTD_SPI_NOR=y -CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y -# CONFIG_MTD_SPI_NOR_SWP_DISABLE is not set -CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y -# CONFIG_MTD_SPI_NOR_SWP_KEEP is not set -# CONFIG_MTD_UBI is not set -# CONFIG_MTD_HYPERBUS is not set +# CONFIG_MTD is not set CONFIG_DTC=y CONFIG_OF=y # CONFIG_OF_UNITTEST is not set @@ -1839,25 +1746,32 @@ CONFIG_ZRAM_DEF_COMP_LZORLE=y # CONFIG_ZRAM_DEF_COMP_LZ4HC is not set CONFIG_ZRAM_DEF_COMP="lzo-rle" # CONFIG_ZRAM_WRITEBACK is not set +# CONFIG_ZRAM_MEMORY_TRACKING is not set # CONFIG_ZRAM_MULTI_COMP is not set CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_LOOP_MIN_COUNT=16 -# CONFIG_BLK_DEV_DRBD is not set -# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +CONFIG_BLK_DEV_DRBD=m +# CONFIG_DRBD_FAULT_INJECTION is not set +CONFIG_BLK_DEV_NBD=m CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=1 CONFIG_BLK_DEV_RAM_SIZE=4096 # CONFIG_CDROM_PKTCDVD is not set -# CONFIG_ATA_OVER_ETH is not set -# CONFIG_BLK_DEV_RBD is not set +CONFIG_ATA_OVER_ETH=m +CONFIG_BLK_DEV_RBD=m # CONFIG_BLK_DEV_UBLK is not set # # NVME Support # -# CONFIG_BLK_DEV_NVME is not set +CONFIG_NVME_CORE=m +CONFIG_BLK_DEV_NVME=m +# CONFIG_NVME_MULTIPATH is not set +# CONFIG_NVME_VERBOSE_ERRORS is not set +# CONFIG_NVME_HWMON is not set # CONFIG_NVME_FC is not set # CONFIG_NVME_TCP is not set +# CONFIG_NVME_AUTH is not set # CONFIG_NVME_TARGET is not set # end of NVME Support @@ -1929,7 +1843,7 @@ CONFIG_EEPROM_93CX6=y # SCSI device support # CONFIG_SCSI_MOD=y -# CONFIG_RAID_ATTRS is not set +CONFIG_RAID_ATTRS=m CONFIG_SCSI_COMMON=y CONFIG_SCSI=y CONFIG_SCSI_DMA=y @@ -1951,31 +1865,186 @@ CONFIG_SCSI_SCAN_ASYNC=y # # SCSI Transports # -# CONFIG_SCSI_SPI_ATTRS is not set +CONFIG_SCSI_SPI_ATTRS=y # CONFIG_SCSI_FC_ATTRS is not set # CONFIG_SCSI_ISCSI_ATTRS is not set -# CONFIG_SCSI_SAS_ATTRS is not set +CONFIG_SCSI_SAS_ATTRS=m # CONFIG_SCSI_SAS_LIBSAS is not set # CONFIG_SCSI_SRP_ATTRS is not set # end of SCSI Transports -# CONFIG_SCSI_LOWLEVEL is not set +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_ISCSI_TCP is not set +# CONFIG_ISCSI_BOOT_SYSFS is not set +# CONFIG_SCSI_CXGB3_ISCSI is not set +# CONFIG_SCSI_CXGB4_ISCSI is not set +# CONFIG_SCSI_BNX2_ISCSI is not set +# CONFIG_BE2ISCSI is not set +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_HPSA is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_3W_SAS is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC94XX is not set +# CONFIG_SCSI_HISI_SAS is not set +# CONFIG_SCSI_MVSAS is not set +# CONFIG_SCSI_MVUMI is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_SCSI_ESAS2R is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_LEGACY is not set +CONFIG_MEGARAID_SAS=m +CONFIG_SCSI_MPT3SAS=m +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 +CONFIG_SCSI_MPT3SAS_MAX_SGE=128 +CONFIG_SCSI_MPT2SAS=m +# CONFIG_SCSI_MPI3MR is not set +# CONFIG_SCSI_SMARTPQI is not set +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_MYRB is not set +# CONFIG_SCSI_MYRS is not set +# CONFIG_SCSI_SNIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_FDOMAIN_PCI is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_STEX is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_QLA_ISCSI is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_WD719X is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_PMCRAID is not set +# CONFIG_SCSI_PM8001 is not set +# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set # CONFIG_SCSI_DH is not set # end of SCSI device support -# CONFIG_ATA is not set +CONFIG_ATA=y +CONFIG_SATA_HOST=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATA_FORCE=y +CONFIG_SATA_PMP=y + +# +# Controllers with non-SFF native interface +# +CONFIG_SATA_AHCI=y +CONFIG_SATA_MOBILE_LPM_POLICY=0 +CONFIG_SATA_AHCI_PLATFORM=y +# CONFIG_AHCI_DWC is not set +# CONFIG_AHCI_CEVA is not set +# CONFIG_SATA_INIC162X is not set +# CONFIG_SATA_ACARD_AHCI is not set +# CONFIG_SATA_SIL24 is not set +CONFIG_ATA_SFF=y + +# +# SFF controllers with custom DMA interface +# +# CONFIG_PDC_ADMA is not set +# CONFIG_SATA_QSTOR is not set +# CONFIG_SATA_SX4 is not set +CONFIG_ATA_BMDMA=y + +# +# SATA SFF controllers with BMDMA +# +# CONFIG_ATA_PIIX is not set +# CONFIG_SATA_DWC is not set +CONFIG_SATA_MV=m +CONFIG_SATA_NV=m +CONFIG_SATA_PROMISE=m +CONFIG_SATA_SIL=m +# CONFIG_SATA_SIS is not set +# CONFIG_SATA_SVW is not set +# CONFIG_SATA_ULI is not set +# CONFIG_SATA_VIA is not set +# CONFIG_SATA_VITESSE is not set + +# +# PATA SFF controllers with BMDMA +# +# CONFIG_PATA_ALI is not set +# CONFIG_PATA_AMD is not set +# CONFIG_PATA_ARTOP is not set +# CONFIG_PATA_ATIIXP is not set +# CONFIG_PATA_ATP867X is not set +# CONFIG_PATA_CMD64X is not set +# CONFIG_PATA_CYPRESS is not set +# CONFIG_PATA_EFAR is not set +# CONFIG_PATA_HPT366 is not set +# CONFIG_PATA_HPT37X is not set +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +# CONFIG_PATA_IT8213 is not set +# CONFIG_PATA_IT821X is not set +# CONFIG_PATA_JMICRON is not set +# CONFIG_PATA_MARVELL is not set +# CONFIG_PATA_NETCELL is not set +# CONFIG_PATA_NINJA32 is not set +# CONFIG_PATA_NS87415 is not set +# CONFIG_PATA_OLDPIIX is not set +# CONFIG_PATA_OPTIDMA is not set +# CONFIG_PATA_PDC2027X is not set +# CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_RADISYS is not set +# CONFIG_PATA_RDC is not set +# CONFIG_PATA_SCH is not set +# CONFIG_PATA_SERVERWORKS is not set +# CONFIG_PATA_SIL680 is not set +# CONFIG_PATA_SIS is not set +# CONFIG_PATA_TOSHIBA is not set +# CONFIG_PATA_TRIFLEX is not set +# CONFIG_PATA_VIA is not set +# CONFIG_PATA_WINBOND is not set + +# +# PIO-only SFF controllers +# +# CONFIG_PATA_CMD640_PCI is not set +# CONFIG_PATA_MPIIX is not set +# CONFIG_PATA_NS87410 is not set +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_PCMCIA is not set +# CONFIG_PATA_OF_PLATFORM is not set +# CONFIG_PATA_RZ1000 is not set + +# +# Generic fallback / legacy drivers +# +# CONFIG_ATA_GENERIC is not set +# CONFIG_PATA_LEGACY is not set CONFIG_MD=y -# CONFIG_BLK_DEV_MD is not set -# CONFIG_MD_BITMAP_FILE is not set -# CONFIG_BCACHE is not set +CONFIG_BLK_DEV_MD=y +CONFIG_MD_AUTODETECT=y +CONFIG_MD_BITMAP_FILE=y +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=y +CONFIG_MD_RAID1=y +CONFIG_MD_RAID10=y +CONFIG_MD_RAID456=y +# CONFIG_MD_MULTIPATH is not set +# CONFIG_MD_FAULTY is not set +CONFIG_BCACHE=m +# CONFIG_BCACHE_DEBUG is not set +# CONFIG_BCACHE_CLOSURES_DEBUG is not set +# CONFIG_BCACHE_ASYNC_REGISTRATION 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_DEBUG_BLOCK_MANAGER_LOCKING is not set # CONFIG_DM_UNSTRIPED is not set -CONFIG_DM_CRYPT=y -CONFIG_DM_SNAPSHOT=y +CONFIG_DM_CRYPT=m +# CONFIG_DM_SNAPSHOT is not set # CONFIG_DM_THIN_PROVISIONING is not set # CONFIG_DM_CACHE is not set # CONFIG_DM_WRITECACHE is not set @@ -1983,7 +2052,7 @@ CONFIG_DM_SNAPSHOT=y # CONFIG_DM_ERA is not set # CONFIG_DM_CLONE is not set # CONFIG_DM_MIRROR is not set -# CONFIG_DM_RAID is not set +CONFIG_DM_RAID=y # CONFIG_DM_ZERO is not set # CONFIG_DM_MULTIPATH is not set # CONFIG_DM_DELAY is not set @@ -1991,13 +2060,10 @@ CONFIG_DM_SNAPSHOT=y # CONFIG_DM_INIT is not set # CONFIG_DM_UEVENT is not set # CONFIG_DM_FLAKEY is not set -CONFIG_DM_VERITY=y -CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y -CONFIG_DM_VERITY_FEC=y +# CONFIG_DM_VERITY is not set # CONFIG_DM_SWITCH is not set # CONFIG_DM_LOG_WRITES is not set # CONFIG_DM_INTEGRITY is not set -# CONFIG_DM_AUDIT is not set # CONFIG_TARGET_CORE is not set # CONFIG_FUSION is not set @@ -2012,148 +2078,161 @@ CONFIG_NETDEVICES=y CONFIG_MII=y CONFIG_NET_CORE=y # CONFIG_BONDING is not set -CONFIG_DUMMY=y -# CONFIG_WIREGUARD is not set +# CONFIG_DUMMY is not set +CONFIG_WIREGUARD=y +# CONFIG_WIREGUARD_DEBUG is not set # CONFIG_EQUALIZER is not set # CONFIG_NET_FC is not set # CONFIG_NET_TEAM is not set -# CONFIG_MACVLAN is not set -# CONFIG_IPVLAN is not set -# CONFIG_VXLAN is not set +CONFIG_MACVLAN=y +# CONFIG_MACVTAP is not set +CONFIG_IPVLAN_L3S=y +CONFIG_IPVLAN=y +# CONFIG_IPVTAP is not set +CONFIG_VXLAN=m # CONFIG_GENEVE is not set # CONFIG_BAREUDP is not set # CONFIG_GTP is not set # CONFIG_AMT is not set # CONFIG_MACSEC is not set # CONFIG_NETCONSOLE is not set -CONFIG_TUN=y +CONFIG_TUN=m # CONFIG_TUN_VNET_CROSS_LE is not set CONFIG_VETH=y # CONFIG_NLMON is not set +# CONFIG_NET_VRF is not set # CONFIG_ARCNET is not set CONFIG_ETHERNET=y -CONFIG_NET_VENDOR_3COM=y -# CONFIG_VORTEX is not set -# CONFIG_TYPHOON is not set -CONFIG_NET_VENDOR_ADAPTEC=y -# CONFIG_ADAPTEC_STARFIRE is not set -CONFIG_NET_VENDOR_AGERE=y -# CONFIG_ET131X is not set -# CONFIG_NET_VENDOR_ALACRITECH is not set -CONFIG_NET_VENDOR_ALTEON=y -# CONFIG_ACENIC is not set +CONFIG_MDIO=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_AGERE is not set +CONFIG_NET_VENDOR_ALACRITECH=y +# CONFIG_SLICOSS is not set +# CONFIG_NET_VENDOR_ALTEON is not set # CONFIG_ALTERA_TSE is not set -# CONFIG_NET_VENDOR_AMAZON is not set +CONFIG_NET_VENDOR_AMAZON=y +# CONFIG_ENA_ETHERNET is not set # CONFIG_NET_VENDOR_AMD is not set -# CONFIG_NET_VENDOR_AQUANTIA is not set +CONFIG_NET_VENDOR_AQUANTIA=y +# CONFIG_AQTION is not set # CONFIG_NET_VENDOR_ARC is not set CONFIG_NET_VENDOR_ASIX=y # CONFIG_SPI_AX88796C is not set -CONFIG_NET_VENDOR_ATHEROS=y -# CONFIG_ATL2 is not set -# CONFIG_ATL1 is not set -# CONFIG_ATL1E is not set -# CONFIG_ATL1C is not set -# CONFIG_ALX is not set +# CONFIG_NET_VENDOR_ATHEROS is not set # CONFIG_NET_VENDOR_BROADCOM is not set -# CONFIG_NET_VENDOR_CADENCE is not set +CONFIG_NET_VENDOR_CADENCE=y +# CONFIG_MACB is not set # CONFIG_NET_VENDOR_CAVIUM is not set -CONFIG_NET_VENDOR_CHELSIO=y -# CONFIG_CHELSIO_T1 is not set -# CONFIG_CHELSIO_T3 is not set -# CONFIG_CHELSIO_T4 is not set -# CONFIG_CHELSIO_T4VF is not set -CONFIG_NET_VENDOR_CISCO=y -# CONFIG_ENIC is not set -# CONFIG_NET_VENDOR_CORTINA is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +CONFIG_NET_VENDOR_CORTINA=y +# CONFIG_GEMINI_ETHERNET is not set CONFIG_NET_VENDOR_DAVICOM=y # CONFIG_DM9051 is not set # CONFIG_DNET is not set -CONFIG_NET_VENDOR_DEC=y -# CONFIG_NET_TULIP is not set -CONFIG_NET_VENDOR_DLINK=y -# CONFIG_DL2K is not set -# CONFIG_SUNDANCE is not set -CONFIG_NET_VENDOR_EMULEX=y -# CONFIG_BE2NET is not set -# CONFIG_NET_VENDOR_ENGLEDER is not set +# CONFIG_NET_VENDOR_DEC is not set +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +CONFIG_NET_VENDOR_ENGLEDER=y +# CONFIG_TSNEP is not set # CONFIG_NET_VENDOR_EZCHIP is not set +CONFIG_NET_VENDOR_FUJITSU=y +# CONFIG_PCMCIA_FMVJ18X is not set CONFIG_NET_VENDOR_FUNGIBLE=y # CONFIG_FUN_ETH is not set -# CONFIG_NET_VENDOR_GOOGLE is not set +CONFIG_NET_VENDOR_GOOGLE=y +# CONFIG_GVE is not set # CONFIG_NET_VENDOR_HISILICON is not set -# CONFIG_NET_VENDOR_HUAWEI is not set -# CONFIG_NET_VENDOR_INTEL is not set +CONFIG_NET_VENDOR_HUAWEI=y +# CONFIG_HINIC is not set +CONFIG_NET_VENDOR_I825XX=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_E100=y +CONFIG_E1000=y +CONFIG_E1000E=y +CONFIG_IGB=y +CONFIG_IGB_HWMON=y +# CONFIG_IGBVF is not set +CONFIG_IXGBE=y +CONFIG_IXGBE_HWMON=y +# CONFIG_IXGBEVF is not set +# CONFIG_I40E is not set +# CONFIG_I40EVF is not set +# CONFIG_ICE is not set +# CONFIG_FM10K is not set +# CONFIG_IGC is not set # CONFIG_JME is not set CONFIG_NET_VENDOR_ADI=y -# CONFIG_NET_VENDOR_LITEX is not set +CONFIG_NET_VENDOR_LITEX=y +# CONFIG_LITEX_LITEETH is not set # CONFIG_NET_VENDOR_MARVELL is not set # CONFIG_NET_VENDOR_MELLANOX is not set # CONFIG_NET_VENDOR_MICREL is not set # CONFIG_NET_VENDOR_MICROCHIP is not set -# CONFIG_NET_VENDOR_MICROSEMI is not set +CONFIG_NET_VENDOR_MICROSEMI=y CONFIG_NET_VENDOR_MICROSOFT=y -CONFIG_NET_VENDOR_MYRI=y -# CONFIG_MYRI10GE is not set +# CONFIG_NET_VENDOR_MYRI is not set # CONFIG_FEALNX is not set -# CONFIG_NET_VENDOR_NI is not set +CONFIG_NET_VENDOR_NI=y +# CONFIG_NI_XGE_MANAGEMENT_ENET is not set # CONFIG_NET_VENDOR_NATSEMI is not set CONFIG_NET_VENDOR_NETERION=y # CONFIG_S2IO is not set -# CONFIG_NET_VENDOR_NETRONOME is not set -CONFIG_NET_VENDOR_NVIDIA=y -# CONFIG_FORCEDETH is not set -CONFIG_NET_VENDOR_OKI=y +CONFIG_NET_VENDOR_NETRONOME=y +# CONFIG_NFP is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set # CONFIG_ETHOC is not set CONFIG_NET_VENDOR_PACKET_ENGINES=y # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set -# CONFIG_NET_VENDOR_PENSANDO is not set -CONFIG_NET_VENDOR_QLOGIC=y -# CONFIG_QLA3XXX is not set -# CONFIG_QLCNIC is not set -# CONFIG_NETXEN_NIC is not set -# CONFIG_QED is not set -CONFIG_NET_VENDOR_BROCADE=y -# CONFIG_BNA is not set +CONFIG_NET_VENDOR_PENSANDO=y +# CONFIG_IONIC is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_BROCADE is not set # CONFIG_NET_VENDOR_QUALCOMM is not set -CONFIG_NET_VENDOR_RDC=y -# CONFIG_R6040 is not set -CONFIG_NET_VENDOR_REALTEK=y -# CONFIG_8139CP is not set -# CONFIG_8139TOO is not set -# CONFIG_R8169 is not set +# CONFIG_NET_VENDOR_RDC is not set +# CONFIG_NET_VENDOR_REALTEK is not set # CONFIG_NET_VENDOR_RENESAS is not set # CONFIG_NET_VENDOR_ROCKER is not set # CONFIG_NET_VENDOR_SAMSUNG is not set # CONFIG_NET_VENDOR_SEEQ is not set -CONFIG_NET_VENDOR_SILAN=y -# CONFIG_SC92031 is not set -CONFIG_NET_VENDOR_SIS=y -# CONFIG_SIS900 is not set -# CONFIG_SIS190 is not set -# CONFIG_NET_VENDOR_SOLARFLARE is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +CONFIG_NET_VENDOR_SOLARFLARE=y +# CONFIG_SFC is not set +# CONFIG_SFC_FALCON is not set +# CONFIG_SFC_SIENA is not set # CONFIG_NET_VENDOR_SMSC is not set -# CONFIG_NET_VENDOR_SOCIONEXT is not set -# CONFIG_NET_VENDOR_STMICRO is not set -CONFIG_NET_VENDOR_SUN=y -# CONFIG_HAPPYMEAL is not set -# CONFIG_SUNGEM is not set -# CONFIG_CASSINI is not set -# CONFIG_NIU is not set +CONFIG_NET_VENDOR_SOCIONEXT=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_STMMAC_ETH=y +# CONFIG_STMMAC_SELFTESTS is not set +CONFIG_STMMAC_PLATFORM=y +# CONFIG_DWMAC_DWC_QOS_ETH is not set +CONFIG_DWMAC_GENERIC=y +CONFIG_DWMAC_ROCKCHIP=y +# CONFIG_DWMAC_INTEL_PLAT is not set +# CONFIG_DWMAC_LOONGSON is not set +# CONFIG_STMMAC_PCI is not set +# CONFIG_NET_VENDOR_SUN is not set # CONFIG_NET_VENDOR_SYNOPSYS is not set -CONFIG_NET_VENDOR_TEHUTI=y -# CONFIG_TEHUTI is not set -CONFIG_NET_VENDOR_TI=y -# CONFIG_TI_CPSW_PHY_SEL is not set -# CONFIG_TLAN is not set -# CONFIG_NET_VENDOR_VERTEXCOM is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +CONFIG_NET_VENDOR_VERTEXCOM=y +# CONFIG_MSE102X is not set # CONFIG_NET_VENDOR_VIA is not set CONFIG_NET_VENDOR_WANGXUN=y # CONFIG_NGBE is not set # CONFIG_TXGBE is not set # CONFIG_NET_VENDOR_WIZNET is not set -# CONFIG_NET_VENDOR_XILINX is not set +CONFIG_NET_VENDOR_XILINX=y +# CONFIG_XILINX_EMACLITE is not set +# CONFIG_XILINX_AXI_EMAC is not set +# CONFIG_XILINX_LL_TEMAC is not set +CONFIG_NET_VENDOR_XIRCOM=y +# CONFIG_PCMCIA_XIRC2PS is not set # CONFIG_FDDI is not set # CONFIG_HIPPI is not set CONFIG_PHYLINK=y @@ -2219,6 +2298,60 @@ CONFIG_AX88796B_PHY=y # CONFIG_XILINX_GMII2RGMII is not set # CONFIG_MICREL_KS8995MA is not set # CONFIG_PSE_CONTROLLER is not set +CONFIG_CAN_DEV=y +# CONFIG_CAN_VCAN is not set +# CONFIG_CAN_VXCAN is not set +CONFIG_CAN_NETLINK=y +CONFIG_CAN_CALC_BITTIMING=y +# CONFIG_CAN_CAN327 is not set +# CONFIG_CAN_FLEXCAN is not set +# CONFIG_CAN_GRCAN is not set +# CONFIG_CAN_KVASER_PCIEFD is not set +# CONFIG_CAN_SLCAN is not set +# CONFIG_CAN_XILINXCAN is not set +# CONFIG_CAN_C_CAN is not set +# CONFIG_CAN_CC770 is not set +# CONFIG_CAN_CTUCANFD_PCI is not set +# CONFIG_CAN_CTUCANFD_PLATFORM is not set +# CONFIG_CAN_IFI_CANFD is not set +# CONFIG_CAN_M_CAN is not set +# CONFIG_CAN_PEAK_PCIEFD is not set +CONFIG_CAN_SJA1000=y +# CONFIG_CAN_EMS_PCI is not set +# CONFIG_CAN_EMS_PCMCIA is not set +# CONFIG_CAN_F81601 is not set +# CONFIG_CAN_KVASER_PCI is not set +# CONFIG_CAN_PEAK_PCI is not set +# CONFIG_CAN_PEAK_PCMCIA is not set +CONFIG_CAN_PLX_PCI=y +# CONFIG_CAN_SJA1000_ISA is not set +# CONFIG_CAN_SJA1000_PLATFORM is not set +# CONFIG_CAN_SOFTING is not set + +# +# CAN SPI interfaces +# +# CONFIG_CAN_HI311X is not set +# CONFIG_CAN_MCP251X is not set +# CONFIG_CAN_MCP251XFD is not set +# end of CAN SPI interfaces + +# +# CAN USB interfaces +# +# CONFIG_CAN_8DEV_USB is not set +# CONFIG_CAN_EMS_USB is not set +# CONFIG_CAN_ESD_USB is not set +# CONFIG_CAN_ETAS_ES58X is not set +# CONFIG_CAN_F81604 is not set +# CONFIG_CAN_GS_USB is not set +# CONFIG_CAN_KVASER_USB is not set +# CONFIG_CAN_MCBA_USB is not set +# CONFIG_CAN_PEAK_USB is not set +# CONFIG_CAN_UCAN is not set +# end of CAN USB interfaces + +# CONFIG_CAN_DEBUG_DEVICES is not set CONFIG_MDIO_DEVICE=y CONFIG_MDIO_BUS=y CONFIG_FWNODE_MDIO=y @@ -2244,39 +2377,43 @@ CONFIG_MDIO_DEVRES=y # # PCS device drivers # +CONFIG_PCS_XPCS=y # end of PCS device drivers -CONFIG_PPP=y -CONFIG_PPP_BSDCOMP=y -CONFIG_PPP_DEFLATE=y +CONFIG_PPP=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m # CONFIG_PPP_FILTER is not set -CONFIG_PPP_MPPE=y +# CONFIG_PPP_MPPE is not set # CONFIG_PPP_MULTILINK is not set -# CONFIG_PPPOE is not set +CONFIG_PPPOE=m +# CONFIG_PPPOE_HASH_BITS_1 is not set +# CONFIG_PPPOE_HASH_BITS_2 is not set +CONFIG_PPPOE_HASH_BITS_4=y +# CONFIG_PPPOE_HASH_BITS_8 is not set CONFIG_PPPOE_HASH_BITS=4 -CONFIG_PPTP=y -CONFIG_PPPOL2TP=y -# CONFIG_PPP_ASYNC is not set -# CONFIG_PPP_SYNC_TTY is not set +# CONFIG_PPTP is not set +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m # CONFIG_SLIP is not set -CONFIG_SLHC=y +CONFIG_SLHC=m 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_RTL8150=y +CONFIG_USB_RTL8152=m # CONFIG_USB_LAN78XX is not set CONFIG_USB_USBNET=y CONFIG_USB_NET_AX8817X=y CONFIG_USB_NET_AX88179_178A=y -# CONFIG_USB_NET_CDCETHER is not set +CONFIG_USB_NET_CDCETHER=y # CONFIG_USB_NET_CDC_EEM is not set -# CONFIG_USB_NET_CDC_NCM is not set +CONFIG_USB_NET_CDC_NCM=y # CONFIG_USB_NET_HUAWEI_CDC_NCM is not set -# CONFIG_USB_NET_CDC_MBIM is not set -CONFIG_USB_NET_DM9601=y -CONFIG_USB_NET_SR9700=y +CONFIG_USB_NET_CDC_MBIM=y +# CONFIG_USB_NET_DM9601 is not set +# CONFIG_USB_NET_SR9700 is not set # CONFIG_USB_NET_SR9800 is not set # CONFIG_USB_NET_SMSC75XX is not set # CONFIG_USB_NET_SMSC95XX is not set @@ -2284,7 +2421,7 @@ CONFIG_USB_NET_SR9700=y # CONFIG_USB_NET_NET1080 is not set # CONFIG_USB_NET_PLUSB is not set # CONFIG_USB_NET_MCS7830 is not set -# CONFIG_USB_NET_RNDIS_HOST is not set +CONFIG_USB_NET_RNDIS_HOST=y # CONFIG_USB_NET_CDC_SUBSET is not set # CONFIG_USB_NET_ZAURUS is not set # CONFIG_USB_NET_CX82310_ETH is not set @@ -2294,19 +2431,114 @@ CONFIG_USB_NET_SR9700=y # CONFIG_USB_NET_INT51X1 is not set # CONFIG_USB_IPHETH is not set # CONFIG_USB_SIERRA_NET is not set +# CONFIG_USB_VL600 is not set # CONFIG_USB_NET_CH9200 is not set # CONFIG_USB_NET_AQC111 is not set +CONFIG_USB_RTL8153_ECM=m CONFIG_WLAN=y -# CONFIG_WLAN_VENDOR_ADMTEK is not set -# CONFIG_WLAN_VENDOR_ATH is not set -# CONFIG_WLAN_VENDOR_ATMEL is not set -# CONFIG_WLAN_VENDOR_BROADCOM is not set -# CONFIG_WLAN_VENDOR_CISCO is not set -# CONFIG_WLAN_VENDOR_INTEL is not set -# CONFIG_WLAN_VENDOR_INTERSIL is not set -# CONFIG_WLAN_VENDOR_MARVELL is not set +CONFIG_WLAN_VENDOR_ADMTEK=y +# CONFIG_ADM8211 is not set +CONFIG_ATH_COMMON=m +CONFIG_WLAN_VENDOR_ATH=y +# CONFIG_ATH_DEBUG is not set +CONFIG_ATH5K=m +# CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH5K_PCI=y +CONFIG_ATH9K_HW=m +CONFIG_ATH9K_COMMON=m +CONFIG_ATH9K_BTCOEX_SUPPORT=y +CONFIG_ATH9K=m +CONFIG_ATH9K_PCI=y +# CONFIG_ATH9K_AHB is not set +# CONFIG_ATH9K_DEBUGFS is not set +# CONFIG_ATH9K_DYNACK is not set +# CONFIG_ATH9K_WOW is not set +CONFIG_ATH9K_RFKILL=y +# CONFIG_ATH9K_CHANNEL_CONTEXT is not set +CONFIG_ATH9K_PCOEM=y +# CONFIG_ATH9K_PCI_NO_EEPROM is not set +# CONFIG_ATH9K_HTC is not set +# CONFIG_ATH9K_HWRNG is not set +# CONFIG_CARL9170 is not set +CONFIG_ATH6KL=m +# CONFIG_ATH6KL_SDIO is not set +CONFIG_ATH6KL_USB=m +# CONFIG_ATH6KL_DEBUG is not set +CONFIG_AR5523=m +# CONFIG_WIL6210 is not set +CONFIG_ATH10K=m +CONFIG_ATH10K_CE=y +# CONFIG_ATH10K_PCI is not set +# CONFIG_ATH10K_SDIO is not set +# CONFIG_ATH10K_USB is not set +# CONFIG_ATH10K_DEBUG is not set +# CONFIG_ATH10K_DEBUGFS is not set +CONFIG_WCN36XX=m +# CONFIG_WCN36XX_DEBUGFS is not set +CONFIG_WLAN_VENDOR_ATMEL=y +# CONFIG_ATMEL is not set +CONFIG_AT76C50X_USB=m +CONFIG_WLAN_VENDOR_BROADCOM=y +CONFIG_B43=m +CONFIG_B43_BCMA=y +CONFIG_B43_SSB=y +CONFIG_B43_BUSES_BCMA_AND_SSB=y +# CONFIG_B43_BUSES_BCMA is not set +# CONFIG_B43_BUSES_SSB is not set +CONFIG_B43_PCI_AUTOSELECT=y +CONFIG_B43_PCICORE_AUTOSELECT=y +# CONFIG_B43_SDIO is not set +CONFIG_B43_BCMA_PIO=y +CONFIG_B43_PIO=y +CONFIG_B43_PHY_G=y +CONFIG_B43_PHY_N=y +CONFIG_B43_PHY_LP=y +CONFIG_B43_PHY_HT=y +CONFIG_B43_LEDS=y +CONFIG_B43_HWRNG=y +# CONFIG_B43_DEBUG is not set +# CONFIG_B43LEGACY is not set +CONFIG_BRCMUTIL=m +# CONFIG_BRCMSMAC is not set +CONFIG_BRCMFMAC=m +CONFIG_BRCMFMAC_PROTO_BCDC=y +CONFIG_BRCMFMAC_PROTO_MSGBUF=y +# CONFIG_BRCMFMAC_SDIO is not set +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMFMAC_PCIE=y +# CONFIG_BRCM_TRACING is not set +# CONFIG_BRCMDBG is not set +CONFIG_WLAN_VENDOR_CISCO=y +# CONFIG_AIRO is not set +# CONFIG_AIRO_CS is not set +CONFIG_WLAN_VENDOR_INTEL=y +# CONFIG_IPW2100 is not set +# CONFIG_IPW2200 is not set +# CONFIG_IWL4965 is not set +# CONFIG_IWL3945 is not set +# CONFIG_IWLWIFI is not set +CONFIG_WLAN_VENDOR_INTERSIL=y +# CONFIG_HOSTAP is not set +# CONFIG_HERMES is not set +# CONFIG_P54_COMMON is not set +CONFIG_WLAN_VENDOR_MARVELL=y +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +# CONFIG_LIBERTAS_CS is not set +# CONFIG_LIBERTAS_SDIO is not set +# CONFIG_LIBERTAS_SPI is not set +# CONFIG_LIBERTAS_DEBUG is not set +# CONFIG_LIBERTAS_MESH is not set +CONFIG_LIBERTAS_THINFIRM=m +# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set +# CONFIG_LIBERTAS_THINFIRM_USB is not set +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m +# CONFIG_MWIFIEX_PCIE is not set +CONFIG_MWIFIEX_USB=m +# CONFIG_MWL8K is not set CONFIG_WLAN_VENDOR_MEDIATEK=y -CONFIG_MT7601U=y +CONFIG_MT7601U=m # CONFIG_MT76x0U is not set # CONFIG_MT76x0E is not set # CONFIG_MT76x2E is not set @@ -2320,59 +2552,110 @@ CONFIG_MT7601U=y # CONFIG_MT7921S is not set # CONFIG_MT7921U is not set # CONFIG_MT7996E is not set -# CONFIG_WLAN_VENDOR_MICROCHIP is not set -# CONFIG_WLAN_VENDOR_PURELIFI is not set -# CONFIG_WLAN_VENDOR_RALINK is not set +CONFIG_WLAN_VENDOR_MICROCHIP=y +# CONFIG_WILC1000_SDIO is not set +# CONFIG_WILC1000_SPI is not set +CONFIG_WLAN_VENDOR_PURELIFI=y +# CONFIG_PLFXLC is not set +CONFIG_WLAN_VENDOR_RALINK=y +CONFIG_RT2X00=m +# CONFIG_RT2400PCI is not set +# CONFIG_RT2500PCI is not set +# CONFIG_RT61PCI is not set +# CONFIG_RT2800PCI is not set +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT33XX=y +CONFIG_RT2800USB_RT35XX=y +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +CONFIG_RT2800USB_UNKNOWN=y +CONFIG_RT2800_LIB=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y +# CONFIG_RT2X00_DEBUG is not set CONFIG_WLAN_VENDOR_REALTEK=y -# CONFIG_RTL8180 is not set -CONFIG_RTL8187=y +CONFIG_RTL8180=m +CONFIG_RTL8187=m CONFIG_RTL8187_LEDS=y -CONFIG_RTL_CARDS=y -# CONFIG_RTL8192CE is not set -# CONFIG_RTL8192SE is not set -# CONFIG_RTL8192DE is not set -# CONFIG_RTL8723AE is not set -# CONFIG_RTL8723BE is not set -# CONFIG_RTL8188EE is not set -# CONFIG_RTL8192EE is not set -# CONFIG_RTL8821AE is not set -CONFIG_RTL8192CU=y -CONFIG_RTLWIFI=y -CONFIG_RTLWIFI_USB=y -# CONFIG_RTLWIFI_DEBUG is not set -CONFIG_RTL8192C_COMMON=y -CONFIG_RTL8XXXU=y +CONFIG_RTL_CARDS=m +CONFIG_RTL8192CE=m +CONFIG_RTL8192SE=m +CONFIG_RTL8192DE=m +CONFIG_RTL8723AE=m +CONFIG_RTL8723BE=m +CONFIG_RTL8188EE=m +CONFIG_RTL8192EE=m +CONFIG_RTL8821AE=m +# CONFIG_RTL8192CU is not set +CONFIG_RTLWIFI=m +CONFIG_RTLWIFI_PCI=m +CONFIG_RTLWIFI_USB=m +CONFIG_RTLWIFI_DEBUG=y +CONFIG_RTL8192C_COMMON=m +CONFIG_RTL8723_COMMON=m +CONFIG_RTLBTCOEXIST=m +CONFIG_RTL8XXXU=m CONFIG_RTL8XXXU_UNTESTED=y -CONFIG_RTW88=y -CONFIG_RTW88_CORE=y -CONFIG_RTW88_SDIO=y -CONFIG_RTW88_USB=y -CONFIG_RTW88_8822B=y -CONFIG_RTW88_8822C=y -CONFIG_RTW88_8723D=y -CONFIG_RTW88_8821C=y -# CONFIG_RTW88_8822BE is not set +CONFIG_RTW88=m +CONFIG_RTW88_CORE=m +CONFIG_RTW88_PCI=m +CONFIG_RTW88_SDIO=m +CONFIG_RTW88_USB=m +CONFIG_RTW88_8822B=m +CONFIG_RTW88_8822C=m +CONFIG_RTW88_8723D=m +CONFIG_RTW88_8821C=m +CONFIG_RTW88_8822BE=m # CONFIG_RTW88_8822BS is not set -CONFIG_RTW88_8822BU=y -# CONFIG_RTW88_8822CE is not set +CONFIG_RTW88_8822BU=m +CONFIG_RTW88_8822CE=m # CONFIG_RTW88_8822CS is not set -CONFIG_RTW88_8822CU=y -# CONFIG_RTW88_8723DE is not set -CONFIG_RTW88_8723DS=y -CONFIG_RTW88_8723DU=y -# CONFIG_RTW88_8821CE is not set -CONFIG_RTW88_8821CS=y -CONFIG_RTW88_8821CU=y +CONFIG_RTW88_8822CU=m +CONFIG_RTW88_8723DE=m +CONFIG_RTW88_8723DS=m +CONFIG_RTW88_8723DU=m +CONFIG_RTW88_8821CE=m +CONFIG_RTW88_8821CS=m +# CONFIG_RTW88_8821CU is not set # CONFIG_RTW88_DEBUG is not set # CONFIG_RTW88_DEBUGFS is not set -# CONFIG_RTW89 is not set -# CONFIG_WLAN_VENDOR_RSI is not set -# CONFIG_WLAN_VENDOR_SILABS is not set -# CONFIG_WLAN_VENDOR_ST is not set -# CONFIG_WLAN_VENDOR_TI is not set -# CONFIG_WLAN_VENDOR_ZYDAS is not set -# CONFIG_WLAN_VENDOR_QUANTENNA is not set -# CONFIG_USB_NET_RNDIS_WLAN is not set +CONFIG_RTW89=m +CONFIG_RTW89_CORE=m +CONFIG_RTW89_PCI=m +CONFIG_RTW89_8852A=m +CONFIG_RTW89_8852C=m +# CONFIG_RTW89_8851BE is not set +CONFIG_RTW89_8852AE=m +# CONFIG_RTW89_8852BE is not set +CONFIG_RTW89_8852CE=m +# CONFIG_RTW89_DEBUGMSG is not set +# CONFIG_RTW89_DEBUGFS is not set +CONFIG_WLAN_VENDOR_RSI=y +# CONFIG_RSI_91X is not set +CONFIG_WLAN_VENDOR_SILABS=y +# CONFIG_WFX is not set +CONFIG_WLAN_VENDOR_ST=y +# CONFIG_CW1200 is not set +CONFIG_WLAN_VENDOR_TI=y +# CONFIG_WL1251 is not set +# CONFIG_WL12XX is not set +# CONFIG_WL18XX is not set +# CONFIG_WLCORE is not set +CONFIG_WLAN_VENDOR_ZYDAS=y +# CONFIG_USB_ZD1201 is not set +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set +CONFIG_WLAN_VENDOR_QUANTENNA=y +# CONFIG_QTNFMAC_PCIE is not set +# CONFIG_PCMCIA_RAYCS is not set +# CONFIG_PCMCIA_WL3501 is not set +CONFIG_USB_NET_RNDIS_WLAN=m # CONFIG_MAC80211_HWSIM is not set # CONFIG_VIRT_WIFI is not set # CONFIG_WAN is not set @@ -2384,8 +2667,11 @@ CONFIG_RTW88_8821CU=y # end of Wireless WAN # CONFIG_VMXNET3 is not set +# CONFIG_NETDEVSIM is not set # CONFIG_NET_FAILOVER is not set -# CONFIG_ISDN is not set +CONFIG_ISDN=y +CONFIG_ISDN_CAPI=y +# CONFIG_MISDN is not set # # Input device support @@ -2395,12 +2681,13 @@ CONFIG_INPUT_LEDS=y CONFIG_INPUT_FF_MEMLESS=y # CONFIG_INPUT_SPARSEKMAP is not set CONFIG_INPUT_MATRIXKMAP=y +CONFIG_INPUT_VIVALDIFMAP=y # # Userland interfaces # # CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_JOYDEV=y CONFIG_INPUT_EVDEV=y # CONFIG_INPUT_EVBUG is not set @@ -2411,7 +2698,7 @@ CONFIG_INPUT_KEYBOARD=y CONFIG_KEYBOARD_ADC=y # CONFIG_KEYBOARD_ADP5588 is not set # CONFIG_KEYBOARD_ADP5589 is not set -# CONFIG_KEYBOARD_ATKBD is not set +CONFIG_KEYBOARD_ATKBD=y # CONFIG_KEYBOARD_QT1050 is not set # CONFIG_KEYBOARD_QT1070 is not set # CONFIG_KEYBOARD_QT2160 is not set @@ -2473,22 +2760,29 @@ CONFIG_JOYSTICK_ADC=y # CONFIG_JOYSTICK_ZHENHUA is not set # CONFIG_JOYSTICK_AS5011 is not set # CONFIG_JOYSTICK_JOYDUMP is not set -CONFIG_JOYSTICK_XPAD=y +CONFIG_JOYSTICK_XPAD=m CONFIG_JOYSTICK_XPAD_FF=y -CONFIG_JOYSTICK_XPAD_LEDS=y +# CONFIG_JOYSTICK_XPAD_LEDS is not set # CONFIG_JOYSTICK_PSXPAD_SPI is not set # CONFIG_JOYSTICK_PXRC is not set # CONFIG_JOYSTICK_QWIIC is not set # CONFIG_JOYSTICK_FSIA6B is not set # CONFIG_JOYSTICK_SENSEHAT is not set -# CONFIG_INPUT_TABLET is not set +CONFIG_INPUT_TABLET=y +# CONFIG_TABLET_USB_ACECAD is not set +# CONFIG_TABLET_USB_AIPTEK is not set +# CONFIG_TABLET_USB_HANWANG is not set +# CONFIG_TABLET_USB_KBTAB is not set +# CONFIG_TABLET_USB_PEGASUS is not set +# CONFIG_TABLET_SERIAL_WACOM4 is not set CONFIG_INPUT_TOUCHSCREEN=y # CONFIG_TOUCHSCREEN_ADS7846 is not set # CONFIG_TOUCHSCREEN_AD7877 is not set # CONFIG_TOUCHSCREEN_AD7879 is not set # CONFIG_TOUCHSCREEN_ADC is not set # CONFIG_TOUCHSCREEN_AR1021_I2C is not set -# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set +CONFIG_TOUCHSCREEN_ATMEL_MXT=y +# CONFIG_TOUCHSCREEN_ATMEL_MXT_T37 is not set # CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set # CONFIG_TOUCHSCREEN_BU21013 is not set # CONFIG_TOUCHSCREEN_BU21029 is not set @@ -2505,7 +2799,7 @@ CONFIG_INPUT_TOUCHSCREEN=y # CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set # CONFIG_TOUCHSCREEN_EXC3000 is not set # CONFIG_TOUCHSCREEN_FUJITSU is not set -# CONFIG_TOUCHSCREEN_GOODIX is not set +CONFIG_TOUCHSCREEN_GOODIX=y # CONFIG_TOUCHSCREEN_HIDEEP is not set # CONFIG_TOUCHSCREEN_HYCON_HY46XX is not set CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=y @@ -2534,7 +2828,25 @@ CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=y # CONFIG_TOUCHSCREEN_TOUCHWIN is not set # CONFIG_TOUCHSCREEN_PIXCIR is not set # CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set -# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set +CONFIG_TOUCHSCREEN_USB_COMPOSITE=y +CONFIG_TOUCHSCREEN_USB_EGALAX=y +CONFIG_TOUCHSCREEN_USB_PANJIT=y +CONFIG_TOUCHSCREEN_USB_3M=y +CONFIG_TOUCHSCREEN_USB_ITM=y +CONFIG_TOUCHSCREEN_USB_ETURBO=y +CONFIG_TOUCHSCREEN_USB_GUNZE=y +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y +CONFIG_TOUCHSCREEN_USB_IDEALTEK=y +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y +CONFIG_TOUCHSCREEN_USB_GOTOP=y +CONFIG_TOUCHSCREEN_USB_JASTEC=y +CONFIG_TOUCHSCREEN_USB_ELO=y +CONFIG_TOUCHSCREEN_USB_E2I=y +CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y +CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y +CONFIG_TOUCHSCREEN_USB_NEXIO=y +CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y # CONFIG_TOUCHSCREEN_TOUCHIT213 is not set # CONFIG_TOUCHSCREEN_TSC_SERIO is not set # CONFIG_TOUCHSCREEN_TSC2004 is not set @@ -2545,6 +2857,7 @@ CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=y # CONFIG_TOUCHSCREEN_SIS_I2C is not set # CONFIG_TOUCHSCREEN_ST1232 is not set # CONFIG_TOUCHSCREEN_STMFTS is not set +# CONFIG_TOUCHSCREEN_SUR40 is not set # CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set # CONFIG_TOUCHSCREEN_SX8654 is not set # CONFIG_TOUCHSCREEN_TPS6507X is not set @@ -2564,7 +2877,7 @@ CONFIG_INPUT_MISC=y # CONFIG_INPUT_MMA8450 is not set # CONFIG_INPUT_GPIO_BEEPER is not set # CONFIG_INPUT_GPIO_DECODER is not set -CONFIG_INPUT_GPIO_VIBRA=y +# CONFIG_INPUT_GPIO_VIBRA is not set # CONFIG_INPUT_ATI_REMOTE2 is not set # CONFIG_INPUT_KEYSPAN_REMOTE is not set # CONFIG_INPUT_KXTJ9 is not set @@ -2588,13 +2901,39 @@ CONFIG_INPUT_RK805_PWRKEY=y # CONFIG_INPUT_DRV260X_HAPTICS is not set # CONFIG_INPUT_DRV2665_HAPTICS is not set # CONFIG_INPUT_DRV2667_HAPTICS is not set -# CONFIG_RMI4_CORE is not set +CONFIG_RMI4_CORE=y +# CONFIG_RMI4_I2C is not set +# CONFIG_RMI4_SPI is not set +# CONFIG_RMI4_SMB is not set +CONFIG_RMI4_F03=y +CONFIG_RMI4_F03_SERIO=y +CONFIG_RMI4_2D_SENSOR=y +CONFIG_RMI4_F11=y +CONFIG_RMI4_F12=y +CONFIG_RMI4_F30=y +# CONFIG_RMI4_F34 is not set +# CONFIG_RMI4_F3A is not set +# CONFIG_RMI4_F54 is not set +# CONFIG_RMI4_F55 is not set # # Hardware I/O ports # -# CONFIG_SERIO is not set -# CONFIG_GAMEPORT is not set +CONFIG_SERIO=y +CONFIG_SERIO_SERPORT=m +# CONFIG_SERIO_AMBAKMI is not set +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_ARC_PS2 is not set +# CONFIG_SERIO_APBPS2 is not set +# CONFIG_SERIO_GPIO_PS2 is not set +# CONFIG_USERIO is not set +CONFIG_GAMEPORT=y +# CONFIG_GAMEPORT_EMU10K1 is not set +# CONFIG_GAMEPORT_FM801 is not set # end of Hardware I/O ports # end of Input device support @@ -2618,18 +2957,21 @@ CONFIG_LDISC_AUTOLOAD=y # CONFIG_SERIAL_EARLYCON=y CONFIG_SERIAL_8250=y -# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set -# CONFIG_SERIAL_8250_16550A_VARIANTS is not set +CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y +CONFIG_SERIAL_8250_16550A_VARIANTS=y # CONFIG_SERIAL_8250_FINTEK is not set CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_DMA=y -CONFIG_SERIAL_8250_PCILIB=y -CONFIG_SERIAL_8250_PCI=y -CONFIG_SERIAL_8250_EXAR=y +# CONFIG_SERIAL_8250_PCI is not set +# CONFIG_SERIAL_8250_CS is not set CONFIG_SERIAL_8250_NR_UARTS=5 CONFIG_SERIAL_8250_RUNTIME_UARTS=5 -# CONFIG_SERIAL_8250_EXTENDED is not set +CONFIG_SERIAL_8250_EXTENDED=y +# CONFIG_SERIAL_8250_MANY_PORTS is not set # CONFIG_SERIAL_8250_PCI1XXXX is not set +CONFIG_SERIAL_8250_SHARE_IRQ=y +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_RSA is not set CONFIG_SERIAL_8250_DWLIB=y CONFIG_SERIAL_8250_FSL=y CONFIG_SERIAL_8250_DW=y @@ -2641,7 +2983,8 @@ CONFIG_SERIAL_OF_PLATFORM=y # Non-8250 serial port support # # CONFIG_SERIAL_AMBA_PL010 is not set -# CONFIG_SERIAL_AMBA_PL011 is not set +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y # CONFIG_SERIAL_EARLYCON_SEMIHOST is not set # CONFIG_SERIAL_MAX3100 is not set # CONFIG_SERIAL_MAX310X is not set @@ -2665,6 +3008,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_SERIAL_MCTRL_GPIO=y # CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_IPWIRELESS is not set # CONFIG_N_GSM is not set # CONFIG_NOZOMI is not set # CONFIG_NULL_TTY is not set @@ -2677,7 +3021,6 @@ CONFIG_SERIAL_DEV_CTRL_TTYPORT=y CONFIG_HW_RANDOM=y # CONFIG_HW_RANDOM_TIMERIOMEM is not set # CONFIG_HW_RANDOM_BA431 is not set -CONFIG_HW_RANDOM_OPTEE=y # CONFIG_HW_RANDOM_CCTRNG is not set # CONFIG_HW_RANDOM_XIPHERA is not set CONFIG_HW_RANDOM_ARM_SMCCC_TRNG=y @@ -2696,7 +3039,6 @@ CONFIG_HW_RANDOM_TPM=y # CONFIG_TCG_TIS_I2C_NUVOTON is not set # CONFIG_TCG_ATMEL is not set # CONFIG_TCG_VTPM_PROXY is not set -CONFIG_TCG_FTPM_TEE=y # CONFIG_TCG_TIS_ST33ZP24_I2C is not set # CONFIG_TCG_TIS_ST33ZP24_SPI is not set # CONFIG_XILLYBUS is not set @@ -2708,15 +3050,15 @@ CONFIG_TCG_FTPM_TEE=y # CONFIG_I2C=y CONFIG_I2C_BOARDINFO=y -CONFIG_I2C_COMPAT=y +# CONFIG_I2C_COMPAT is not set CONFIG_I2C_CHARDEV=y CONFIG_I2C_MUX=y # # Multiplexer I2C Chip support # -CONFIG_I2C_ARB_GPIO_CHALLENGE=y -CONFIG_I2C_MUX_GPIO=y +# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set +# CONFIG_I2C_MUX_GPIO is not set # CONFIG_I2C_MUX_GPMUX is not set # CONFIG_I2C_MUX_LTC4306 is not set # CONFIG_I2C_MUX_PCA9541 is not set @@ -2728,6 +3070,7 @@ CONFIG_I2C_MUX_GPIO=y # end of Multiplexer I2C Chip support CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=y # # I2C Hardware Bus support @@ -2757,7 +3100,9 @@ CONFIG_I2C_HELPER_AUTO=y # # CONFIG_I2C_CADENCE is not set # CONFIG_I2C_CBUS_GPIO is not set -# CONFIG_I2C_DESIGNWARE_PLATFORM is not set +CONFIG_I2C_DESIGNWARE_CORE=y +# CONFIG_I2C_DESIGNWARE_SLAVE is not set +CONFIG_I2C_DESIGNWARE_PLATFORM=y # CONFIG_I2C_DESIGNWARE_PCI is not set # CONFIG_I2C_EMEV2 is not set # CONFIG_I2C_GPIO is not set @@ -2797,7 +3142,7 @@ CONFIG_I2C_RK3X=y CONFIG_SPI=y # CONFIG_SPI_DEBUG is not set CONFIG_SPI_MASTER=y -CONFIG_SPI_MEM=y +# CONFIG_SPI_MEM is not set # # SPI Master Controller Drivers @@ -2807,9 +3152,8 @@ CONFIG_SPI_MEM=y CONFIG_SPI_BITBANG=y # CONFIG_SPI_CADENCE is not set # CONFIG_SPI_CADENCE_QUADSPI is not set -# CONFIG_SPI_CADENCE_XSPI is not set # CONFIG_SPI_DESIGNWARE is not set -CONFIG_SPI_GPIO=y +# CONFIG_SPI_GPIO is not set # CONFIG_SPI_FSL_SPI is not set # CONFIG_SPI_MICROCHIP_CORE is not set # CONFIG_SPI_MICROCHIP_CORE_QSPI is not set @@ -2821,7 +3165,6 @@ CONFIG_SPI_ROCKCHIP=y CONFIG_SPI_ROCKCHIP_SFC=y # CONFIG_SPI_SC18IS602 is not set # CONFIG_SPI_SIFIVE is not set -# CONFIG_SPI_SN_F_OSPI is not set # CONFIG_SPI_MXIC is not set # CONFIG_SPI_THUNDERX is not set # CONFIG_SPI_XCOMM is not set @@ -2832,7 +3175,7 @@ CONFIG_SPI_ROCKCHIP_SFC=y # # SPI Multiplexer support # -CONFIG_SPI_MUX=y +# CONFIG_SPI_MUX is not set # # SPI Protocol Masters @@ -2871,7 +3214,6 @@ CONFIG_PTP_1588_CLOCK_KVM=y # CONFIG_PTP_1588_CLOCK_IDT82P33 is not set # CONFIG_PTP_1588_CLOCK_IDTCM is not set # CONFIG_PTP_1588_CLOCK_MOCK is not set -# CONFIG_PTP_1588_CLOCK_OCP is not set # end of PTP clock support CONFIG_PINCTRL=y @@ -2900,7 +3242,7 @@ CONFIG_GPIOLIB=y CONFIG_GPIOLIB_FASTPATH_LIMIT=512 CONFIG_OF_GPIO=y CONFIG_GPIOLIB_IRQCHIP=y -# CONFIG_DEBUG_GPIO is not set +CONFIG_DEBUG_GPIO=y CONFIG_GPIO_SYSFS=y CONFIG_GPIO_CDEV=y CONFIG_GPIO_CDEV_V1=y @@ -2912,8 +3254,7 @@ CONFIG_GPIO_GENERIC=y # CONFIG_GPIO_74XX_MMIO is not set # CONFIG_GPIO_ALTERA is not set # CONFIG_GPIO_CADENCE is not set -# CONFIG_GPIO_DWAPB is not set -# CONFIG_GPIO_EXAR is not set +CONFIG_GPIO_DWAPB=y # CONFIG_GPIO_FTGPIO010 is not set CONFIG_GPIO_GENERIC_PLATFORM=y # CONFIG_GPIO_GRGPIO is not set @@ -2921,7 +3262,7 @@ CONFIG_GPIO_GENERIC_PLATFORM=y # CONFIG_GPIO_HLWD is not set # CONFIG_GPIO_LOGICVC is not set # CONFIG_GPIO_MB86S7X is not set -CONFIG_GPIO_PL061=y +# CONFIG_GPIO_PL061 is not set CONFIG_GPIO_ROCKCHIP=y # CONFIG_GPIO_SIFIVE is not set # CONFIG_GPIO_SYSCON is not set @@ -2948,6 +3289,7 @@ CONFIG_GPIO_ROCKCHIP=y # # MFD GPIO expanders # +# CONFIG_GPIO_TPS6586X is not set # end of MFD GPIO expanders # @@ -3028,12 +3370,12 @@ CONFIG_CHARGER_GPIO=y # CONFIG_CHARGER_BQ2415X is not set # CONFIG_CHARGER_BQ24190 is not set # CONFIG_CHARGER_BQ24257 is not set -# CONFIG_CHARGER_BQ24735 is not set +CONFIG_CHARGER_BQ24735=y # CONFIG_CHARGER_BQ2515X is not set # CONFIG_CHARGER_BQ25890 is not set # CONFIG_CHARGER_BQ25980 is not set # CONFIG_CHARGER_BQ256XX is not set -CONFIG_CHARGER_RK817=y +# CONFIG_CHARGER_RK817 is not set # CONFIG_CHARGER_SMB347 is not set # CONFIG_BATTERY_GAUGE_LTC2941 is not set # CONFIG_BATTERY_GOLDFISH is not set @@ -3076,12 +3418,14 @@ CONFIG_HWMON=y # CONFIG_SENSORS_ATXP1 is not set # CONFIG_SENSORS_CORSAIR_CPRO is not set # CONFIG_SENSORS_CORSAIR_PSU is not set +# CONFIG_SENSORS_DRIVETEMP is not set # CONFIG_SENSORS_DS620 is not set # CONFIG_SENSORS_DS1621 is not set # CONFIG_SENSORS_I5K_AMB is not set # CONFIG_SENSORS_F71805F is not set # CONFIG_SENSORS_F71882FG is not set # CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_FTSTEUTATES is not set # CONFIG_SENSORS_GL518SM is not set # CONFIG_SENSORS_GL520SM is not set # CONFIG_SENSORS_G760A is not set @@ -3151,13 +3495,14 @@ CONFIG_HWMON=y # CONFIG_SENSORS_NCT6775 is not set # CONFIG_SENSORS_NCT6775_I2C is not set # CONFIG_SENSORS_NCT7802 is not set +# CONFIG_SENSORS_NCT7904 is not set # CONFIG_SENSORS_NPCM7XX is not set # CONFIG_SENSORS_NZXT_KRAKEN2 is not set # CONFIG_SENSORS_NZXT_SMART2 is not set # CONFIG_SENSORS_OCC_P8_I2C is not set # CONFIG_SENSORS_PCF8591 is not set # CONFIG_PMBUS is not set -# CONFIG_SENSORS_PWM_FAN is not set +CONFIG_SENSORS_PWM_FAN=y # CONFIG_SENSORS_SBTSI is not set # CONFIG_SENSORS_SBRMI is not set # CONFIG_SENSORS_SHT15 is not set @@ -3174,6 +3519,8 @@ CONFIG_HWMON=y # CONFIG_SENSORS_SMSC47M1 is not set # CONFIG_SENSORS_SMSC47M192 is not set # CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_SCH5627 is not set +# CONFIG_SENSORS_SCH5636 is not set # CONFIG_SENSORS_STTS751 is not set # CONFIG_SENSORS_ADC128D818 is not set # CONFIG_SENSORS_ADS7828 is not set @@ -3212,14 +3559,14 @@ CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 CONFIG_THERMAL_HWMON=y CONFIG_THERMAL_OF=y CONFIG_THERMAL_WRITABLE_TRIPS=y -CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=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_DEFAULT_GOV_POWER_ALLOCATOR is not set +CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR=y CONFIG_THERMAL_GOV_FAIR_SHARE=y CONFIG_THERMAL_GOV_STEP_WISE=y # CONFIG_THERMAL_GOV_BANG_BANG is not set -CONFIG_THERMAL_GOV_USER_SPACE=y +# CONFIG_THERMAL_GOV_USER_SPACE is not set CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y CONFIG_CPU_THERMAL=y CONFIG_CPU_FREQ_THERMAL=y @@ -3227,12 +3574,73 @@ CONFIG_DEVFREQ_THERMAL=y # CONFIG_THERMAL_EMULATION is not set # CONFIG_THERMAL_MMIO is not set CONFIG_ROCKCHIP_THERMAL=y -CONFIG_GENERIC_ADC_THERMAL=y -# CONFIG_WATCHDOG is not set +# CONFIG_GENERIC_ADC_THERMAL is not set +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y +CONFIG_WATCHDOG_OPEN_TIMEOUT=0 +# CONFIG_WATCHDOG_SYSFS is not set +# CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set + +# +# Watchdog Pretimeout Governors +# +# CONFIG_WATCHDOG_PRETIMEOUT_GOV 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_XILINX_WINDOW_WATCHDOG is not set +# CONFIG_ZIIRAVE_WATCHDOG is not set +# CONFIG_ARM_SP805_WATCHDOG is not set +# CONFIG_ARM_SBSA_WATCHDOG is not set +# CONFIG_CADENCE_WATCHDOG is not set +CONFIG_DW_WATCHDOG=y +# CONFIG_MAX63XX_WATCHDOG is not set +# CONFIG_ARM_SMC_WATCHDOG is not set +# CONFIG_ALIM7101_WDT is not set +# CONFIG_I6300ESB_WDT is not set +# CONFIG_HP_WATCHDOG is not set +# CONFIG_MEN_A21_WDT is not set + +# +# PCI-based Watchdog Cards +# +# CONFIG_PCIPCWATCHDOG is not set +# CONFIG_WDTPCI is not set + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set CONFIG_SSB_POSSIBLE=y -# CONFIG_SSB is not set +CONFIG_SSB=y +CONFIG_SSB_SPROM=y +CONFIG_SSB_BLOCKIO=y +CONFIG_SSB_PCIHOST_POSSIBLE=y +CONFIG_SSB_PCIHOST=y +CONFIG_SSB_B43_PCI_BRIDGE=y +CONFIG_SSB_PCMCIAHOST_POSSIBLE=y +# CONFIG_SSB_PCMCIAHOST is not set +CONFIG_SSB_SDIOHOST_POSSIBLE=y +# CONFIG_SSB_SDIOHOST is not set +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y +CONFIG_SSB_DRIVER_PCICORE=y +# CONFIG_SSB_DRIVER_GPIO is not set CONFIG_BCMA_POSSIBLE=y -# CONFIG_BCMA is not set +CONFIG_BCMA=y +CONFIG_BCMA_BLOCKIO=y +CONFIG_BCMA_HOST_PCI_POSSIBLE=y +CONFIG_BCMA_HOST_PCI=y +# CONFIG_BCMA_HOST_SOC is not set +CONFIG_BCMA_DRIVER_PCI=y +# CONFIG_BCMA_DRIVER_GMAC_CMN is not set +# CONFIG_BCMA_DRIVER_GPIO is not set +# CONFIG_BCMA_DEBUG is not set # # Multifunction device drivers @@ -3327,7 +3735,7 @@ CONFIG_MFD_SYSCON=y # CONFIG_MFD_TI_LP87565 is not set # CONFIG_MFD_TPS65218 is not set # CONFIG_MFD_TPS65219 is not set -# CONFIG_MFD_TPS6586X is not set +CONFIG_MFD_TPS6586X=y # CONFIG_MFD_TPS65910 is not set # CONFIG_MFD_TPS65912_I2C is not set # CONFIG_MFD_TPS65912_SPI is not set @@ -3363,12 +3771,12 @@ CONFIG_MFD_SYSCON=y # end of Multifunction device drivers CONFIG_REGULATOR=y -# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_DEBUG=y CONFIG_REGULATOR_FIXED_VOLTAGE=y -CONFIG_REGULATOR_VIRTUAL_CONSUMER=y -CONFIG_REGULATOR_USERSPACE_CONSUMER=y +# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set +# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set # CONFIG_REGULATOR_88PG86X is not set -# CONFIG_REGULATOR_ACT8865 is not set +CONFIG_REGULATOR_ACT8865=y # CONFIG_REGULATOR_AD5398 is not set CONFIG_REGULATOR_ARM_SCMI=y # CONFIG_REGULATOR_AW37503 is not set @@ -3436,23 +3844,60 @@ CONFIG_REGULATOR_RK808=y # CONFIG_REGULATOR_TPS6507X is not set # CONFIG_REGULATOR_TPS65132 is not set # CONFIG_REGULATOR_TPS6524X is not set +CONFIG_REGULATOR_TPS6586X=y CONFIG_REGULATOR_VCTRL=y -# CONFIG_RC_CORE is not set +CONFIG_RC_CORE=y +# CONFIG_BPF_LIRC_MODE2 is not set +CONFIG_LIRC=y +CONFIG_RC_MAP=y +CONFIG_RC_DECODERS=y +# CONFIG_IR_IMON_DECODER is not set +CONFIG_IR_JVC_DECODER=y +CONFIG_IR_MCE_KBD_DECODER=y +CONFIG_IR_NEC_DECODER=y +CONFIG_IR_RC5_DECODER=y +CONFIG_IR_RC6_DECODER=y +# CONFIG_IR_RCMM_DECODER is not set +CONFIG_IR_SANYO_DECODER=y +CONFIG_IR_SHARP_DECODER=y +CONFIG_IR_SONY_DECODER=y +CONFIG_IR_XMP_DECODER=y +CONFIG_RC_DEVICES=y +CONFIG_IR_GPIO_CIR=y +# CONFIG_IR_GPIO_TX is not set +# CONFIG_IR_HIX5HD2 is not set +# CONFIG_IR_IGORPLUGUSB is not set +# CONFIG_IR_IGUANA is not set +# CONFIG_IR_IMON is not set +# CONFIG_IR_IMON_RAW is not set +# CONFIG_IR_MCEUSB is not set +# CONFIG_IR_PWM_TX is not set +# CONFIG_IR_REDRAT3 is not set +# CONFIG_IR_SERIAL is not set +# CONFIG_IR_SPI is not set +# CONFIG_IR_STREAMZAP is not set +# CONFIG_IR_TOY is not set +# CONFIG_IR_TTUSBIR is not set +# CONFIG_RC_ATI_REMOTE is not set +# CONFIG_RC_LOOPBACK is not set +# CONFIG_RC_XBOX_DVD is not set CONFIG_CEC_CORE=y CONFIG_CEC_NOTIFIER=y # # CEC support # +CONFIG_MEDIA_CEC_RC=y CONFIG_MEDIA_CEC_SUPPORT=y # CONFIG_CEC_CH7322 is not set -# CONFIG_USB_PULSE8_CEC is not set -# CONFIG_USB_RAINSHADOW_CEC is not set +# CONFIG_CEC_GPIO is not set +CONFIG_USB_PULSE8_CEC=m +CONFIG_USB_RAINSHADOW_CEC=m # end of CEC support CONFIG_MEDIA_SUPPORT=y -# CONFIG_MEDIA_SUPPORT_FILTER is not set -# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set +CONFIG_MEDIA_SUPPORT_FILTER=y +CONFIG_MEDIA_SUBDRV_AUTOSELECT=y # # Media device types @@ -3466,30 +3911,29 @@ CONFIG_MEDIA_PLATFORM_SUPPORT=y CONFIG_MEDIA_TEST_SUPPORT=y # end of Media device types -# -# Media core support -# CONFIG_VIDEO_DEV=y CONFIG_MEDIA_CONTROLLER=y CONFIG_DVB_CORE=y -# end of Media core support # # Video4Linux options # CONFIG_VIDEO_V4L2_I2C=y +CONFIG_VIDEO_V4L2_SUBDEV_API=y # CONFIG_VIDEO_ADV_DEBUG is not set # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +CONFIG_VIDEO_TUNER=m CONFIG_V4L2_H264=y CONFIG_V4L2_VP9=y CONFIG_V4L2_MEM2MEM_DEV=y -# CONFIG_V4L2_FLASH_LED_CLASS is not set +CONFIG_V4L2_FWNODE=y +CONFIG_V4L2_ASYNC=y # end of Video4Linux options # # Media controller options # -# CONFIG_MEDIA_CONTROLLER_DVB is not set +CONFIG_MEDIA_CONTROLLER_DVB=y CONFIG_MEDIA_CONTROLLER_REQUEST_API=y # end of Media controller options @@ -3497,8 +3941,8 @@ CONFIG_MEDIA_CONTROLLER_REQUEST_API=y # Digital TV options # # CONFIG_DVB_MMAP is not set -# CONFIG_DVB_NET is not set -CONFIG_DVB_MAX_ADAPTERS=16 +CONFIG_DVB_NET=y +CONFIG_DVB_MAX_ADAPTERS=8 # CONFIG_DVB_DYNAMIC_MINORS is not set # CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set # CONFIG_DVB_ULE_DEBUG is not set @@ -3508,18 +3952,180 @@ CONFIG_DVB_MAX_ADAPTERS=16 # Media drivers # +# +# Drivers filtered as selected at 'Filter media drivers' +# + # # Media drivers # -# CONFIG_MEDIA_USB_SUPPORT is not set -# CONFIG_MEDIA_PCI_SUPPORT is not set -# CONFIG_RADIO_ADAPTERS is not set +CONFIG_MEDIA_USB_SUPPORT=y + +# +# Webcam devices +# +# CONFIG_USB_GSPCA is not set +# CONFIG_USB_PWC is not set +# CONFIG_USB_S2255 is not set +CONFIG_VIDEO_USBTV=m +CONFIG_USB_VIDEO_CLASS=y +# CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV is not set + +# +# Analog TV USB devices +# +# CONFIG_VIDEO_GO7007 is not set +# CONFIG_VIDEO_HDPVR is not set +# CONFIG_VIDEO_PVRUSB2 is not set +# CONFIG_VIDEO_STK1160 is not set + +# +# Analog/digital TV USB devices +# +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_AU0828_V4L2=y +# CONFIG_VIDEO_AU0828_RC is not set +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_RC=y +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m + +# +# Digital TV USB devices +# +CONFIG_DVB_AS102=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set +CONFIG_DVB_USB_V2=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_AF9035=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_AZ6007=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_DVBSKY=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_RTL28XXU=m +# CONFIG_DVB_USB_ZD1301 is not set +CONFIG_DVB_USB=y +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_CXUSB=m +# CONFIG_DVB_USB_CXUSB_ANALOG is not set +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_DIB3000MC=m +CONFIG_DVB_USB_DIBUSB_MB=m +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_VP7045=m +# CONFIG_SMS_USB_DRV is not set +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m + +# +# Webcam, TV (analog/digital) USB devices +# +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_VIDEO_EM28XX_RC=m + +# +# Software defined radio USB devices +# +CONFIG_USB_AIRSPY=m +CONFIG_USB_HACKRF=m +CONFIG_USB_MSI2500=m +CONFIG_MEDIA_PCI_SUPPORT=y + +# +# Media capture support +# +# CONFIG_VIDEO_SOLO6X10 is not set +# CONFIG_VIDEO_TW5864 is not set +# CONFIG_VIDEO_TW68 is not set +# CONFIG_VIDEO_TW686X is not set +# CONFIG_VIDEO_ZORAN is not set + +# +# Media capture/analog TV support +# +# CONFIG_VIDEO_DT3155 is not set +# CONFIG_VIDEO_IVTV is not set +# CONFIG_VIDEO_HEXIUM_GEMINI is not set +# CONFIG_VIDEO_HEXIUM_ORION is not set +# CONFIG_VIDEO_MXB is not set + +# +# Media capture/analog/hybrid TV support +# +# CONFIG_VIDEO_BT848 is not set +# CONFIG_VIDEO_CX18 is not set +CONFIG_VIDEO_CX23885=m +# CONFIG_MEDIA_ALTERA_CI is not set +CONFIG_VIDEO_CX25821=m +# CONFIG_VIDEO_CX25821_ALSA is not set +# CONFIG_VIDEO_CX88 is not set +# CONFIG_VIDEO_SAA7134 is not set +# CONFIG_VIDEO_SAA7164 is not set + +# +# Media digital TV PCI Adapters +# +# CONFIG_DVB_B2C2_FLEXCOP_PCI is not set +# CONFIG_DVB_DDBRIDGE is not set +# CONFIG_DVB_DM1105 is not set +# CONFIG_MANTIS_CORE is not set +# CONFIG_DVB_NETUP_UNIDVB is not set +# CONFIG_DVB_NGENE is not set +# CONFIG_DVB_PLUTO2 is not set +# CONFIG_DVB_PT1 is not set +# CONFIG_DVB_PT3 is not set +# CONFIG_DVB_SMIPCIE is not set +# CONFIG_DVB_BUDGET_CORE is not set +CONFIG_RADIO_ADAPTERS=y +# CONFIG_RADIO_MAXIRADIO is not set +# CONFIG_RADIO_SAA7706H is not set +# CONFIG_RADIO_SHARK is not set +# CONFIG_RADIO_SHARK2 is not set +# CONFIG_RADIO_SI4713 is not set +# CONFIG_RADIO_TEA5764 is not set +# CONFIG_RADIO_TEF6862 is not set +# CONFIG_RADIO_WL1273 is not set +# CONFIG_USB_DSBR is not set +# CONFIG_USB_KEENE is not set +# CONFIG_USB_MA901 is not set +# CONFIG_USB_MR800 is not set +# CONFIG_USB_RAREMONO is not set +# CONFIG_RADIO_SI470X is not set CONFIG_MEDIA_PLATFORM_DRIVERS=y -# CONFIG_V4L_PLATFORM_DRIVERS is not set +CONFIG_V4L_PLATFORM_DRIVERS=y # CONFIG_SDR_PLATFORM_DRIVERS is not set -# CONFIG_DVB_PLATFORM_DRIVERS is not set +CONFIG_DVB_PLATFORM_DRIVERS=y CONFIG_V4L_MEM2MEM_DRIVERS=y # CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set +# CONFIG_VIDEO_MUX is not set # # Allegro DVT media platform drivers @@ -3558,6 +4164,7 @@ CONFIG_V4L_MEM2MEM_DRIVERS=y # # Marvell media platform drivers # +# CONFIG_VIDEO_CAFE_CCIC is not set # # Mediatek media platform drivers @@ -3587,6 +4194,7 @@ CONFIG_V4L_MEM2MEM_DRIVERS=y # Rockchip media platform drivers # CONFIG_VIDEO_ROCKCHIP_RGA=y +# CONFIG_VIDEO_ROCKCHIP_ISP1 is not set # # Samsung media platform drivers @@ -3617,6 +4225,7 @@ CONFIG_VIDEO_HANTRO_ROCKCHIP=y # # Xilinx media platform drivers # +# CONFIG_VIDEO_XILINX is not set # # MMC/SDIO DVB adapters @@ -3624,19 +4233,96 @@ CONFIG_VIDEO_HANTRO_ROCKCHIP=y # CONFIG_SMS_SDIO_DRV is not set # CONFIG_V4L_TEST_DRIVERS is not set # CONFIG_DVB_TEST_DRIVERS is not set +CONFIG_CYPRESS_FIRMWARE=y +CONFIG_TTPCI_EEPROM=m +CONFIG_UVC_COMMON=y +CONFIG_VIDEO_CX2341X=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_DVB_B2C2_FLEXCOP=m CONFIG_VIDEOBUF2_CORE=y CONFIG_VIDEOBUF2_V4L2=y CONFIG_VIDEOBUF2_MEMOPS=y CONFIG_VIDEOBUF2_DMA_CONTIG=y CONFIG_VIDEOBUF2_VMALLOC=y CONFIG_VIDEOBUF2_DMA_SG=y +CONFIG_VIDEOBUF2_DVB=m # end of Media drivers # # Media ancillary drivers # CONFIG_MEDIA_ATTACH=y -# CONFIG_VIDEO_CAMERA_SENSOR is not set + +# +# IR I2C driver auto-selected by 'Autoselect ancillary drivers' +# +# CONFIG_VIDEO_IR_I2C is not set +CONFIG_VIDEO_CAMERA_SENSOR=y +# CONFIG_VIDEO_AR0521 is not set +# CONFIG_VIDEO_HI556 is not set +# CONFIG_VIDEO_HI846 is not set +# CONFIG_VIDEO_HI847 is not set +# CONFIG_VIDEO_IMX208 is not set +# CONFIG_VIDEO_IMX214 is not set +CONFIG_VIDEO_IMX219=y +# CONFIG_VIDEO_IMX258 is not set +# CONFIG_VIDEO_IMX274 is not set +# CONFIG_VIDEO_IMX290 is not set +# CONFIG_VIDEO_IMX296 is not set +# CONFIG_VIDEO_IMX319 is not set +# CONFIG_VIDEO_IMX334 is not set +# CONFIG_VIDEO_IMX335 is not set +# CONFIG_VIDEO_IMX355 is not set +# CONFIG_VIDEO_IMX412 is not set +# CONFIG_VIDEO_IMX415 is not set +# CONFIG_VIDEO_MT9M001 is not set +# CONFIG_VIDEO_MT9M111 is not set +# CONFIG_VIDEO_MT9P031 is not set +# CONFIG_VIDEO_MT9T112 is not set +CONFIG_VIDEO_MT9V011=m +# CONFIG_VIDEO_MT9V032 is not set +# CONFIG_VIDEO_MT9V111 is not set +# CONFIG_VIDEO_OG01A1B is not set +# CONFIG_VIDEO_OV01A10 is not set +# CONFIG_VIDEO_OV02A10 is not set +# CONFIG_VIDEO_OV08D10 is not set +# CONFIG_VIDEO_OV08X40 is not set +# CONFIG_VIDEO_OV13858 is not set +# CONFIG_VIDEO_OV13B10 is not set +CONFIG_VIDEO_OV2640=m +# CONFIG_VIDEO_OV2659 is not set +# CONFIG_VIDEO_OV2680 is not set +# CONFIG_VIDEO_OV2685 is not set +# CONFIG_VIDEO_OV4689 is not set +# CONFIG_VIDEO_OV5640 is not set +CONFIG_VIDEO_OV5645=y +# CONFIG_VIDEO_OV5647 is not set +# CONFIG_VIDEO_OV5648 is not set +# CONFIG_VIDEO_OV5670 is not set +# CONFIG_VIDEO_OV5675 is not set +# CONFIG_VIDEO_OV5693 is not set +# CONFIG_VIDEO_OV5695 is not set +# CONFIG_VIDEO_OV6650 is not set +# CONFIG_VIDEO_OV7251 is not set +# CONFIG_VIDEO_OV7640 is not set +# CONFIG_VIDEO_OV7670 is not set +# CONFIG_VIDEO_OV772X is not set +# CONFIG_VIDEO_OV7740 is not set +# CONFIG_VIDEO_OV8856 is not set +# CONFIG_VIDEO_OV8858 is not set +# CONFIG_VIDEO_OV8865 is not set +# CONFIG_VIDEO_OV9282 is not set +# CONFIG_VIDEO_OV9640 is not set +# CONFIG_VIDEO_OV9650 is not set +# CONFIG_VIDEO_RDACM20 is not set +# CONFIG_VIDEO_RDACM21 is not set +# CONFIG_VIDEO_RJ54N1 is not set +# CONFIG_VIDEO_S5C73M3 is not set +# CONFIG_VIDEO_S5K5BAF is not set +# CONFIG_VIDEO_S5K6A3 is not set +# CONFIG_VIDEO_ST_VGXY61 is not set +# CONFIG_VIDEO_CCS is not set +# CONFIG_VIDEO_ET8EK8 is not set # # Lens drivers @@ -3660,10 +4346,10 @@ CONFIG_MEDIA_ATTACH=y # # Audio decoders, processors and mixers # -# CONFIG_VIDEO_CS3308 is not set +CONFIG_VIDEO_CS3308=m # CONFIG_VIDEO_CS5345 is not set # CONFIG_VIDEO_CS53L32A is not set -# CONFIG_VIDEO_MSP3400 is not set +CONFIG_VIDEO_MSP3400=m # CONFIG_VIDEO_SONY_BTF_MPX is not set # CONFIG_VIDEO_TDA1997X is not set # CONFIG_VIDEO_TDA7432 is not set @@ -3700,11 +4386,11 @@ CONFIG_MEDIA_ATTACH=y # CONFIG_VIDEO_MAX9286 is not set # CONFIG_VIDEO_ML86V7667 is not set # CONFIG_VIDEO_SAA7110 is not set -# CONFIG_VIDEO_SAA711X is not set +CONFIG_VIDEO_SAA711X=m # CONFIG_VIDEO_TC358743 is not set # CONFIG_VIDEO_TC358746 is not set # CONFIG_VIDEO_TVP514X is not set -# CONFIG_VIDEO_TVP5150 is not set +CONFIG_VIDEO_TVP5150=m # CONFIG_VIDEO_TVP7002 is not set # CONFIG_VIDEO_TW2804 is not set # CONFIG_VIDEO_TW9903 is not set @@ -3716,7 +4402,7 @@ CONFIG_MEDIA_ATTACH=y # Video and audio decoders # # CONFIG_VIDEO_SAA717X is not set -# CONFIG_VIDEO_CX25840 is not set +CONFIG_VIDEO_CX25840=m # end of Video decoders # @@ -3772,7 +4458,7 @@ CONFIG_MEDIA_ATTACH=y # # Media SPI Adapters # -# CONFIG_CXD2880_SPI_DRV is not set +CONFIG_CXD2880_SPI_DRV=m # CONFIG_VIDEO_GS1662 is not set # end of Media SPI Adapters @@ -3781,43 +4467,43 @@ CONFIG_MEDIA_TUNER=y # # Customize TV tuners # -# CONFIG_MEDIA_TUNER_E4000 is not set -# CONFIG_MEDIA_TUNER_FC0011 is not set -# CONFIG_MEDIA_TUNER_FC0012 is not set -# CONFIG_MEDIA_TUNER_FC0013 is not set -# CONFIG_MEDIA_TUNER_FC2580 is not set -# CONFIG_MEDIA_TUNER_IT913X is not set -# CONFIG_MEDIA_TUNER_M88RS6000T is not set -# CONFIG_MEDIA_TUNER_MAX2165 is not set -# CONFIG_MEDIA_TUNER_MC44S803 is not set -# CONFIG_MEDIA_TUNER_MSI001 is not set -# CONFIG_MEDIA_TUNER_MT2060 is not set -# CONFIG_MEDIA_TUNER_MT2063 is not set -# CONFIG_MEDIA_TUNER_MT20XX is not set -# CONFIG_MEDIA_TUNER_MT2131 is not set -# CONFIG_MEDIA_TUNER_MT2266 is not set +CONFIG_MEDIA_TUNER_E4000=m +CONFIG_MEDIA_TUNER_FC0011=m +CONFIG_MEDIA_TUNER_FC0012=m +CONFIG_MEDIA_TUNER_FC0013=m +CONFIG_MEDIA_TUNER_FC2580=m +CONFIG_MEDIA_TUNER_IT913X=m +CONFIG_MEDIA_TUNER_M88RS6000T=m +CONFIG_MEDIA_TUNER_MAX2165=m +CONFIG_MEDIA_TUNER_MC44S803=y +CONFIG_MEDIA_TUNER_MSI001=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2063=m +CONFIG_MEDIA_TUNER_MT20XX=y +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_MT2266=m # CONFIG_MEDIA_TUNER_MXL301RF is not set -# CONFIG_MEDIA_TUNER_MXL5005S is not set -# CONFIG_MEDIA_TUNER_MXL5007T is not set +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m # CONFIG_MEDIA_TUNER_QM1D1B0004 is not set -# CONFIG_MEDIA_TUNER_QM1D1C0042 is not set -# CONFIG_MEDIA_TUNER_QT1010 is not set -# CONFIG_MEDIA_TUNER_R820T is not set -# CONFIG_MEDIA_TUNER_SI2157 is not set -# CONFIG_MEDIA_TUNER_SIMPLE is not set -# CONFIG_MEDIA_TUNER_TDA18212 is not set -# CONFIG_MEDIA_TUNER_TDA18218 is not set -# CONFIG_MEDIA_TUNER_TDA18250 is not set -# CONFIG_MEDIA_TUNER_TDA18271 is not set -# CONFIG_MEDIA_TUNER_TDA827X is not set -# CONFIG_MEDIA_TUNER_TDA8290 is not set -# CONFIG_MEDIA_TUNER_TDA9887 is not set -# CONFIG_MEDIA_TUNER_TEA5761 is not set -# CONFIG_MEDIA_TUNER_TEA5767 is not set -# CONFIG_MEDIA_TUNER_TUA9001 is not set -# CONFIG_MEDIA_TUNER_XC2028 is not set -# CONFIG_MEDIA_TUNER_XC4000 is not set -# CONFIG_MEDIA_TUNER_XC5000 is not set +CONFIG_MEDIA_TUNER_QM1D1C0042=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_R820T=m +CONFIG_MEDIA_TUNER_SI2157=m +CONFIG_MEDIA_TUNER_SIMPLE=y +CONFIG_MEDIA_TUNER_TDA18212=m +CONFIG_MEDIA_TUNER_TDA18218=m +CONFIG_MEDIA_TUNER_TDA18250=m +CONFIG_MEDIA_TUNER_TDA18271=y +CONFIG_MEDIA_TUNER_TDA827X=y +CONFIG_MEDIA_TUNER_TDA8290=y +CONFIG_MEDIA_TUNER_TDA9887=y +CONFIG_MEDIA_TUNER_TEA5761=y +CONFIG_MEDIA_TUNER_TEA5767=y +CONFIG_MEDIA_TUNER_TUA9001=m +CONFIG_MEDIA_TUNER_XC2028=y +CONFIG_MEDIA_TUNER_XC4000=y +CONFIG_MEDIA_TUNER_XC5000=y # end of Customize TV tuners # @@ -3827,159 +4513,162 @@ CONFIG_MEDIA_TUNER=y # # Multistandard (satellite) frontends # -# CONFIG_DVB_M88DS3103 is not set +CONFIG_DVB_M88DS3103=m # CONFIG_DVB_MXL5XX is not set -# CONFIG_DVB_STB0899 is not set -# CONFIG_DVB_STB6100 is not set -# CONFIG_DVB_STV090x is not set +CONFIG_DVB_STB0899=m +CONFIG_DVB_STB6100=m +CONFIG_DVB_STV090x=m # CONFIG_DVB_STV0910 is not set -# CONFIG_DVB_STV6110x is not set +CONFIG_DVB_STV6110x=m # CONFIG_DVB_STV6111 is not set # # Multistandard (cable + terrestrial) frontends # -# CONFIG_DVB_DRXK is not set -# CONFIG_DVB_MN88472 is not set -# CONFIG_DVB_MN88473 is not set -# CONFIG_DVB_SI2165 is not set -# CONFIG_DVB_TDA18271C2DD is not set +CONFIG_DVB_DRXK=m +CONFIG_DVB_MN88472=m +CONFIG_DVB_MN88473=m +CONFIG_DVB_SI2165=m +CONFIG_DVB_TDA18271C2DD=m # # DVB-S (satellite) frontends # # CONFIG_DVB_CX24110 is not set -# CONFIG_DVB_CX24116 is not set -# CONFIG_DVB_CX24117 is not set -# CONFIG_DVB_CX24120 is not set -# CONFIG_DVB_CX24123 is not set -# CONFIG_DVB_DS3000 is not set +CONFIG_DVB_CX24116=m +CONFIG_DVB_CX24117=m +CONFIG_DVB_CX24120=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_DS3000=m # CONFIG_DVB_MB86A16 is not set -# CONFIG_DVB_MT312 is not set -# CONFIG_DVB_S5H1420 is not set -# CONFIG_DVB_SI21XX is not set -# CONFIG_DVB_STB6000 is not set -# CONFIG_DVB_STV0288 is not set -# CONFIG_DVB_STV0299 is not set -# CONFIG_DVB_STV0900 is not set -# CONFIG_DVB_STV6110 is not set -# CONFIG_DVB_TDA10071 is not set -# CONFIG_DVB_TDA10086 is not set -# CONFIG_DVB_TDA8083 is not set +CONFIG_DVB_MT312=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_SI21XX=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV0900=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_TDA10071=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA8083=m # CONFIG_DVB_TDA8261 is not set -# CONFIG_DVB_TDA826X is not set -# CONFIG_DVB_TS2020 is not set +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TS2020=m # CONFIG_DVB_TUA6100 is not set -# CONFIG_DVB_TUNER_CX24113 is not set -# CONFIG_DVB_TUNER_ITD1000 is not set +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TUNER_ITD1000=m # CONFIG_DVB_VES1X93 is not set # CONFIG_DVB_ZL10036 is not set -# CONFIG_DVB_ZL10039 is not set +CONFIG_DVB_ZL10039=m # # DVB-T (terrestrial) frontends # -# CONFIG_DVB_AF9013 is not set -# CONFIG_DVB_CX22700 is not set -# CONFIG_DVB_CX22702 is not set -# CONFIG_DVB_CXD2820R is not set -# CONFIG_DVB_CXD2841ER is not set -# CONFIG_DVB_DIB3000MB is not set -# CONFIG_DVB_DIB3000MC is not set -# CONFIG_DVB_DIB7000M is not set -# CONFIG_DVB_DIB7000P is not set +CONFIG_DVB_AF9013=m +CONFIG_DVB_AS102_FE=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_CXD2820R=m +CONFIG_DVB_CXD2841ER=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m # CONFIG_DVB_DIB9000 is not set -# CONFIG_DVB_DRXD is not set -# CONFIG_DVB_EC100 is not set +CONFIG_DVB_DRXD=m +CONFIG_DVB_EC100=m +CONFIG_DVB_GP8PSK_FE=m # CONFIG_DVB_L64781 is not set -# CONFIG_DVB_MT352 is not set -# CONFIG_DVB_NXT6000 is not set -# CONFIG_DVB_RTL2830 is not set -# CONFIG_DVB_RTL2832 is not set -# CONFIG_DVB_RTL2832_SDR is not set +CONFIG_DVB_MT352=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_RTL2830=m +CONFIG_DVB_RTL2832=m +CONFIG_DVB_RTL2832_SDR=m # CONFIG_DVB_S5H1432 is not set -# CONFIG_DVB_SI2168 is not set +CONFIG_DVB_SI2168=m # CONFIG_DVB_SP887X is not set -# CONFIG_DVB_STV0367 is not set -# CONFIG_DVB_TDA10048 is not set -# CONFIG_DVB_TDA1004X is not set +CONFIG_DVB_STV0367=m +CONFIG_DVB_TDA10048=m +CONFIG_DVB_TDA1004X=m # CONFIG_DVB_ZD1301_DEMOD is not set -# CONFIG_DVB_ZL10353 is not set +CONFIG_DVB_ZL10353=m # CONFIG_DVB_CXD2880 is not set # # DVB-C (cable) frontends # -# CONFIG_DVB_STV0297 is not set +CONFIG_DVB_STV0297=m # CONFIG_DVB_TDA10021 is not set -# CONFIG_DVB_TDA10023 is not set -# CONFIG_DVB_VES1820 is not set +CONFIG_DVB_TDA10023=m +CONFIG_DVB_VES1820=m # # ATSC (North American/Korean Terrestrial/Cable DTV) frontends # -# CONFIG_DVB_AU8522_DTV is not set -# CONFIG_DVB_AU8522_V4L is not set -# CONFIG_DVB_BCM3510 is not set -# CONFIG_DVB_LG2160 is not set -# CONFIG_DVB_LGDT3305 is not set -# CONFIG_DVB_LGDT3306A is not set -# CONFIG_DVB_LGDT330X is not set -# CONFIG_DVB_MXL692 is not set -# CONFIG_DVB_NXT200X is not set +CONFIG_DVB_AU8522=m +CONFIG_DVB_AU8522_DTV=m +CONFIG_DVB_AU8522_V4L=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LG2160=m +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LGDT3306A=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_MXL692=m +CONFIG_DVB_NXT200X=m # CONFIG_DVB_OR51132 is not set # CONFIG_DVB_OR51211 is not set -# CONFIG_DVB_S5H1409 is not set -# CONFIG_DVB_S5H1411 is not set +CONFIG_DVB_S5H1409=m +CONFIG_DVB_S5H1411=m # # ISDB-T (terrestrial) frontends # -# CONFIG_DVB_DIB8000 is not set -# CONFIG_DVB_MB86A20S is not set -# CONFIG_DVB_S921 is not set +CONFIG_DVB_DIB8000=m +CONFIG_DVB_MB86A20S=m +CONFIG_DVB_S921=m # # ISDB-S (satellite) & ISDB-T (terrestrial) frontends # # CONFIG_DVB_MN88443X is not set -# CONFIG_DVB_TC90522 is not set +CONFIG_DVB_TC90522=m # # Digital terrestrial only tuners/PLL # -# CONFIG_DVB_PLL is not set -# CONFIG_DVB_TUNER_DIB0070 is not set -# CONFIG_DVB_TUNER_DIB0090 is not set +CONFIG_DVB_PLL=m +CONFIG_DVB_TUNER_DIB0070=m +CONFIG_DVB_TUNER_DIB0090=m # # SEC control devices for DVB-S # -# CONFIG_DVB_A8293 is not set -# CONFIG_DVB_AF9033 is not set -# CONFIG_DVB_ASCOT2E is not set -# CONFIG_DVB_ATBM8830 is not set -# CONFIG_DVB_HELENE is not set -# CONFIG_DVB_HORUS3A is not set -# CONFIG_DVB_ISL6405 is not set -# CONFIG_DVB_ISL6421 is not set -# CONFIG_DVB_ISL6423 is not set -# CONFIG_DVB_IX2505V is not set -# CONFIG_DVB_LGS8GL5 is not set -# CONFIG_DVB_LGS8GXX is not set -# CONFIG_DVB_LNBH25 is not set -# CONFIG_DVB_LNBH29 is not set -# CONFIG_DVB_LNBP21 is not set -# CONFIG_DVB_LNBP22 is not set -# CONFIG_DVB_M88RS2000 is not set -# CONFIG_DVB_TDA665x is not set -# CONFIG_DVB_DRX39XYJ is not set +CONFIG_DVB_A8293=m +CONFIG_DVB_AF9033=m +CONFIG_DVB_ASCOT2E=m +CONFIG_DVB_ATBM8830=m +CONFIG_DVB_HELENE=m +CONFIG_DVB_HORUS3A=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +CONFIG_DVB_ISL6423=m +CONFIG_DVB_IX2505V=m +CONFIG_DVB_LGS8GL5=m +CONFIG_DVB_LGS8GXX=m +CONFIG_DVB_LNBH25=m +CONFIG_DVB_LNBH29=m +CONFIG_DVB_LNBP21=m +CONFIG_DVB_LNBP22=m +CONFIG_DVB_M88RS2000=m +CONFIG_DVB_TDA665x=m +CONFIG_DVB_DRX39XYJ=m # # Common Interface (EN50221) controller drivers # -# CONFIG_DVB_CXD2099 is not set -# CONFIG_DVB_SP2 is not set +CONFIG_DVB_CXD2099=m +CONFIG_DVB_SP2=m # end of Customise DVB Frontends # @@ -4002,7 +4691,7 @@ CONFIG_DRM_KMS_HELPER=y # CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set # CONFIG_DRM_DEBUG_MODESET_LOCK is not set CONFIG_DRM_FBDEV_EMULATION=y -CONFIG_DRM_FBDEV_OVERALLOC=300 +CONFIG_DRM_FBDEV_OVERALLOC=100 # CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set CONFIG_DRM_LOAD_EDID_FIRMWARE=y CONFIG_DRM_DISPLAY_HELPER=y @@ -4186,9 +4875,9 @@ CONFIG_DRM_DISPLAY_CONNECTOR=y # CONFIG_DRM_CDNS_DSI is not set # CONFIG_DRM_CDNS_MHDP8546 is not set CONFIG_DRM_DW_HDMI=y -CONFIG_DRM_DW_HDMI_AHB_AUDIO=y -CONFIG_DRM_DW_HDMI_I2S_AUDIO=y -CONFIG_DRM_DW_HDMI_GP_AUDIO=y +# CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set +CONFIG_DRM_DW_HDMI_I2S_AUDIO=m +# CONFIG_DRM_DW_HDMI_GP_AUDIO is not set CONFIG_DRM_DW_HDMI_CEC=y CONFIG_DRM_DW_MIPI_DSI=y # end of Display Interface Bridges @@ -4265,7 +4954,7 @@ CONFIG_FB=y # CONFIG_FB_SM712 is not set CONFIG_FB_CORE=y CONFIG_FB_NOTIFY=y -CONFIG_FIRMWARE_EDID=y +# CONFIG_FIRMWARE_EDID is not set CONFIG_FB_DEVICE=y CONFIG_FB_SYS_FILLRECT=y CONFIG_FB_SYS_COPYAREA=y @@ -4335,11 +5024,12 @@ CONFIG_SND_JACK_INPUT_DEV=y # CONFIG_SND_OSSEMUL is not set CONFIG_SND_PCM_TIMER=y CONFIG_SND_HRTIMER=y -# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_MAX_CARDS=32 # CONFIG_SND_SUPPORT_OLD_API is not set CONFIG_SND_PROC_FS=y # CONFIG_SND_VERBOSE_PROCFS is not set -# CONFIG_SND_VERBOSE_PRINTK is not set +CONFIG_SND_VERBOSE_PRINTK=y CONFIG_SND_CTL_FAST_LOOKUP=y # CONFIG_SND_DEBUG is not set # CONFIG_SND_CTL_INPUT_VALIDATION is not set @@ -4350,80 +5040,19 @@ CONFIG_SND_SEQ_MIDI_EVENT=y CONFIG_SND_SEQ_MIDI=y # CONFIG_SND_SEQ_UMP is not set # CONFIG_SND_DRIVERS is not set -CONFIG_SND_PCI=y -# CONFIG_SND_AD1889 is not set -# CONFIG_SND_ALS300 is not set -# CONFIG_SND_ALI5451 is not set -# CONFIG_SND_ATIIXP is not set -# CONFIG_SND_ATIIXP_MODEM is not set -# CONFIG_SND_AU8810 is not set -# CONFIG_SND_AU8820 is not set -# CONFIG_SND_AU8830 is not set -# CONFIG_SND_AW2 is not set -# CONFIG_SND_AZT3328 is not set -# CONFIG_SND_BT87X is not set -# CONFIG_SND_CA0106 is not set -# CONFIG_SND_CMIPCI is not set -# CONFIG_SND_OXYGEN is not set -# CONFIG_SND_CS4281 is not set -# CONFIG_SND_CS46XX is not set -# CONFIG_SND_CTXFI is not set -# CONFIG_SND_DARLA20 is not set -# CONFIG_SND_GINA20 is not set -# CONFIG_SND_LAYLA20 is not set -# CONFIG_SND_DARLA24 is not set -# CONFIG_SND_GINA24 is not set -# CONFIG_SND_LAYLA24 is not set -# CONFIG_SND_MONA is not set -# CONFIG_SND_MIA is not set -# CONFIG_SND_ECHO3G is not set -# CONFIG_SND_INDIGO is not set -# CONFIG_SND_INDIGOIO is not set -# CONFIG_SND_INDIGODJ is not set -# CONFIG_SND_INDIGOIOX is not set -# CONFIG_SND_INDIGODJX is not set -# CONFIG_SND_EMU10K1 is not set -# CONFIG_SND_EMU10K1X is not set -# CONFIG_SND_ENS1370 is not set -# CONFIG_SND_ENS1371 is not set -# CONFIG_SND_ES1938 is not set -# CONFIG_SND_ES1968 is not set -# CONFIG_SND_FM801 is not set -# CONFIG_SND_HDSP is not set -# CONFIG_SND_HDSPM is not set -# CONFIG_SND_ICE1712 is not set -# CONFIG_SND_ICE1724 is not set -# CONFIG_SND_INTEL8X0 is not set -# CONFIG_SND_INTEL8X0M is not set -# CONFIG_SND_KORG1212 is not set -# CONFIG_SND_LOLA is not set -# CONFIG_SND_LX6464ES is not set -# CONFIG_SND_MAESTRO3 is not set -# CONFIG_SND_MIXART is not set -# CONFIG_SND_NM256 is not set -# CONFIG_SND_PCXHR is not set -# CONFIG_SND_RIPTIDE is not set -# CONFIG_SND_RME32 is not set -# CONFIG_SND_RME96 is not set -# CONFIG_SND_RME9652 is not set -# CONFIG_SND_SE6X is not set -# CONFIG_SND_SONICVIBES is not set -# CONFIG_SND_TRIDENT is not set -# CONFIG_SND_VIA82XX is not set -# CONFIG_SND_VIA82XX_MODEM is not set -# CONFIG_SND_VIRTUOSO is not set -# CONFIG_SND_VX222 is not set -# CONFIG_SND_YMFPCI is not set +# CONFIG_SND_PCI is not set # # HD-Audio # -# CONFIG_SND_HDA_INTEL is not set # end of HD-Audio CONFIG_SND_HDA_PREALLOC_SIZE=64 # CONFIG_SND_SPI is not set # CONFIG_SND_USB is not set +CONFIG_SND_PCMCIA=y +# CONFIG_SND_VXPOCKET is not set +# CONFIG_SND_PDAUDIOCF is not set CONFIG_SND_SOC=y CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y # CONFIG_SND_SOC_ADI is not set @@ -4441,13 +5070,15 @@ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y # 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_SAI=y +# CONFIG_SND_SOC_FSL_MQS is not set # CONFIG_SND_SOC_FSL_AUDMIX 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_FSL_MICFIL is not set # CONFIG_SND_SOC_FSL_XCVR is not set +CONFIG_SND_SOC_FSL_UTILS=y # CONFIG_SND_SOC_IMX_AUDMUX is not set # end of SoC Audio for Freescale CPUs @@ -4462,8 +5093,8 @@ CONFIG_SND_SOC_ROCKCHIP_PDM=y CONFIG_SND_SOC_ROCKCHIP_SPDIF=y # CONFIG_SND_SOC_ROCKCHIP_MAX98090 is not set # CONFIG_SND_SOC_ROCKCHIP_RT5645 is not set -CONFIG_SND_SOC_RK3288_HDMI_ANALOG=y -CONFIG_SND_SOC_RK3399_GRU_SOUND=y +# CONFIG_SND_SOC_RK3288_HDMI_ANALOG is not set +# CONFIG_SND_SOC_RK3399_GRU_SOUND is not set # CONFIG_SND_SOC_SOF_TOPLEVEL is not set # @@ -4535,24 +5166,22 @@ CONFIG_SND_SOC_I2C_AND_SPI=y # CONFIG_SND_SOC_CS53L30 is not set # CONFIG_SND_SOC_CX2072X is not set # CONFIG_SND_SOC_DA7213 is not set -CONFIG_SND_SOC_DA7219=y -CONFIG_SND_SOC_DMIC=y -CONFIG_SND_SOC_HDMI_CODEC=y +# CONFIG_SND_SOC_DMIC is not set +CONFIG_SND_SOC_HDMI_CODEC=m # CONFIG_SND_SOC_ES7134 is not set # CONFIG_SND_SOC_ES7241 is not set -# CONFIG_SND_SOC_ES8316 is not set +CONFIG_SND_SOC_ES8316=y # CONFIG_SND_SOC_ES8326 is not set -CONFIG_SND_SOC_ES8328=y -CONFIG_SND_SOC_ES8328_I2C=y -CONFIG_SND_SOC_ES8328_SPI=y +# CONFIG_SND_SOC_ES8328_I2C is not set +# CONFIG_SND_SOC_ES8328_SPI is not set # CONFIG_SND_SOC_GTM601 is not set # CONFIG_SND_SOC_HDA is not set # CONFIG_SND_SOC_ICS43432 is not set # CONFIG_SND_SOC_IDT821034 is not set # CONFIG_SND_SOC_INNO_RK3036 is not set # CONFIG_SND_SOC_MAX98088 is not set -# CONFIG_SND_SOC_MAX98090 is not set -CONFIG_SND_SOC_MAX98357A=y +CONFIG_SND_SOC_MAX98090=y +# CONFIG_SND_SOC_MAX98357A is not set # CONFIG_SND_SOC_MAX98504 is not set # CONFIG_SND_SOC_MAX9867 is not set # CONFIG_SND_SOC_MAX98927 is not set @@ -4579,9 +5208,6 @@ CONFIG_SND_SOC_MAX98357A=y # CONFIG_SND_SOC_PEB2466 is not set # CONFIG_SND_SOC_RK3328 is not set CONFIG_SND_SOC_RK817=y -CONFIG_SND_SOC_RL6231=y -CONFIG_SND_SOC_RT5514=y -CONFIG_SND_SOC_RT5514_SPI=y # CONFIG_SND_SOC_RT5616 is not set # CONFIG_SND_SOC_RT5631 is not set # CONFIG_SND_SOC_RT5640 is not set @@ -4589,7 +5215,7 @@ CONFIG_SND_SOC_RT5514_SPI=y # CONFIG_SND_SOC_RT9120 is not set # CONFIG_SND_SOC_SGTL5000 is not set CONFIG_SND_SOC_SIMPLE_AMPLIFIER=y -CONFIG_SND_SOC_SIMPLE_MUX=y +# CONFIG_SND_SOC_SIMPLE_MUX is not set # CONFIG_SND_SOC_SMA1303 is not set CONFIG_SND_SOC_SPDIF=y # CONFIG_SND_SOC_SRC4XXX_I2C is not set @@ -4625,7 +5251,7 @@ CONFIG_SND_SOC_SPDIF=y # CONFIG_SND_SOC_TLV320AIC3X_I2C is not set # CONFIG_SND_SOC_TLV320AIC3X_SPI is not set # CONFIG_SND_SOC_TLV320ADCX140 is not set -# CONFIG_SND_SOC_TS3A227E is not set +CONFIG_SND_SOC_TS3A227E=y # CONFIG_SND_SOC_TSCS42XX is not set # CONFIG_SND_SOC_TSCS454 is not set # CONFIG_SND_SOC_UDA1334 is not set @@ -4677,8 +5303,8 @@ CONFIG_SND_SIMPLE_CARD_UTILS=y CONFIG_SND_SIMPLE_CARD=y CONFIG_SND_AUDIO_GRAPH_CARD=y CONFIG_SND_AUDIO_GRAPH_CARD2=y -# CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE is not set -# CONFIG_SND_TEST_COMPONENT is not set +CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE=y +CONFIG_SND_TEST_COMPONENT=y CONFIG_HID_SUPPORT=y CONFIG_HID=y CONFIG_HID_BATTERY_STRENGTH=y @@ -4689,112 +5315,124 @@ CONFIG_HID_GENERIC=y # # Special HID drivers # -# CONFIG_HID_A4TECH is not set +CONFIG_HID_A4TECH=y # CONFIG_HID_ACCUTOUCH is not set -# CONFIG_HID_ACRUX is not set -# CONFIG_HID_APPLE is not set -# CONFIG_HID_APPLEIR is not set +CONFIG_HID_ACRUX=y +# CONFIG_HID_ACRUX_FF is not set +CONFIG_HID_APPLE=y +CONFIG_HID_APPLEIR=y # CONFIG_HID_ASUS is not set -# CONFIG_HID_AUREAL is not set -# CONFIG_HID_BELKIN is not set -# CONFIG_HID_BETOP_FF is not set +CONFIG_HID_AUREAL=y +CONFIG_HID_BELKIN=y +CONFIG_HID_BETOP_FF=y # CONFIG_HID_BIGBEN_FF is not set -# CONFIG_HID_CHERRY is not set -# CONFIG_HID_CHICONY is not set -# CONFIG_HID_CORSAIR is not set +CONFIG_HID_CHERRY=y +CONFIG_HID_CHICONY=y +CONFIG_HID_CORSAIR=y # CONFIG_HID_COUGAR is not set # CONFIG_HID_MACALLY is not set -# CONFIG_HID_PRODIKEYS is not set +CONFIG_HID_PRODIKEYS=y # CONFIG_HID_CMEDIA is not set -# CONFIG_HID_CP2112 is not set +CONFIG_HID_CP2112=y # CONFIG_HID_CREATIVE_SB0540 is not set -# CONFIG_HID_CYPRESS is not set -# CONFIG_HID_DRAGONRISE is not set -# CONFIG_HID_EMS_FF is not set +CONFIG_HID_CYPRESS=y +CONFIG_HID_DRAGONRISE=y +CONFIG_DRAGONRISE_FF=y +CONFIG_HID_EMS_FF=y # CONFIG_HID_ELAN is not set -# CONFIG_HID_ELECOM is not set -# CONFIG_HID_ELO is not set +CONFIG_HID_ELECOM=y +CONFIG_HID_ELO=y # CONFIG_HID_EVISION is not set -# CONFIG_HID_EZKEY is not set +CONFIG_HID_EZKEY=y # CONFIG_HID_FT260 is not set -# CONFIG_HID_GEMBIRD is not set -# CONFIG_HID_GFRM is not set +CONFIG_HID_GEMBIRD=y +CONFIG_HID_GFRM=y # CONFIG_HID_GLORIOUS is not set -# CONFIG_HID_HOLTEK is not set +CONFIG_HID_HOLTEK=y +CONFIG_HOLTEK_FF=y # CONFIG_HID_GOOGLE_STADIA_FF is not set # CONFIG_HID_VIVALDI is not set -# CONFIG_HID_GT683R is not set -# CONFIG_HID_KEYTOUCH is not set -# CONFIG_HID_KYE is not set -# CONFIG_HID_UCLOGIC is not set -# CONFIG_HID_WALTOP is not set +CONFIG_HID_GT683R=y +CONFIG_HID_KEYTOUCH=y +CONFIG_HID_KYE=y +CONFIG_HID_UCLOGIC=y +CONFIG_HID_WALTOP=y # CONFIG_HID_VIEWSONIC is not set # CONFIG_HID_VRC2 is not set # CONFIG_HID_XIAOMI is not set -# CONFIG_HID_GYRATION is not set -# CONFIG_HID_ICADE is not set +CONFIG_HID_GYRATION=y +CONFIG_HID_ICADE=y # CONFIG_HID_ITE is not set # CONFIG_HID_JABRA is not set -# CONFIG_HID_TWINHAN is not set -# CONFIG_HID_KENSINGTON is not set -# CONFIG_HID_LCPOWER is not set -# CONFIG_HID_LED is not set -# CONFIG_HID_LENOVO is not set +CONFIG_HID_TWINHAN=y +CONFIG_HID_KENSINGTON=y +CONFIG_HID_LCPOWER=y +CONFIG_HID_LED=y +CONFIG_HID_LENOVO=y # CONFIG_HID_LETSKETCH is not set -# CONFIG_HID_LOGITECH is not set -# CONFIG_HID_MAGICMOUSE is not set +CONFIG_HID_LOGITECH=y +CONFIG_HID_LOGITECH_DJ=y +CONFIG_HID_LOGITECH_HIDPP=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGIG940_FF=y +CONFIG_LOGIWHEELS_FF=y +CONFIG_HID_MAGICMOUSE=y # CONFIG_HID_MALTRON is not set # CONFIG_HID_MAYFLASH is not set # CONFIG_HID_MEGAWORLD_FF is not set # CONFIG_HID_REDRAGON is not set -# CONFIG_HID_MICROSOFT is not set -# CONFIG_HID_MONTEREY is not set +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y CONFIG_HID_MULTITOUCH=y # CONFIG_HID_NINTENDO is not set # CONFIG_HID_NTI is not set -# CONFIG_HID_NTRIG is not set +CONFIG_HID_NTRIG=y # CONFIG_HID_NVIDIA_SHIELD is not set -# CONFIG_HID_ORTEK is not set -# CONFIG_HID_PANTHERLORD is not set -# CONFIG_HID_PENMOUNT is not set -# CONFIG_HID_PETALYNX is not set +CONFIG_HID_ORTEK=y +CONFIG_HID_PANTHERLORD=y +CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PENMOUNT=y +CONFIG_HID_PETALYNX=y # CONFIG_HID_PICOLCD is not set -# CONFIG_HID_PLANTRONICS is not set -# CONFIG_HID_PLAYSTATION is not set +CONFIG_HID_PLANTRONICS=y # CONFIG_HID_PXRC is not set # CONFIG_HID_RAZER is not set -# CONFIG_HID_PRIMAX is not set +CONFIG_HID_PRIMAX=y # CONFIG_HID_RETRODE is not set -# CONFIG_HID_ROCCAT is not set -# CONFIG_HID_SAITEK is not set -# CONFIG_HID_SAMSUNG is not set +CONFIG_HID_ROCCAT=y +CONFIG_HID_SAITEK=y +CONFIG_HID_SAMSUNG=y # CONFIG_HID_SEMITEK is not set # CONFIG_HID_SIGMAMICRO is not set CONFIG_HID_SONY=y # CONFIG_SONY_FF is not set -# CONFIG_HID_SPEEDLINK is not set -CONFIG_HID_STEAM=y -# CONFIG_STEAM_FF is not set -# CONFIG_HID_STEELSERIES is not set -# CONFIG_HID_SUNPLUS is not set -# CONFIG_HID_RMI is not set -# CONFIG_HID_GREENASIA is not set -# CONFIG_HID_SMARTJOYPLUS is not set -# CONFIG_HID_TIVO is not set -# CONFIG_HID_TOPSEED is not set +CONFIG_HID_SPEEDLINK=y +# CONFIG_HID_STEAM is not set +CONFIG_HID_STEELSERIES=y +CONFIG_HID_SUNPLUS=y +CONFIG_HID_RMI=y +CONFIG_HID_GREENASIA=y +CONFIG_GREENASIA_FF=y +CONFIG_HID_SMARTJOYPLUS=y +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_HID_TIVO=y +CONFIG_HID_TOPSEED=y # CONFIG_HID_TOPRE is not set -# CONFIG_HID_THINGM is not set -# CONFIG_HID_THRUSTMASTER is not set +CONFIG_HID_THINGM=y +CONFIG_HID_THRUSTMASTER=y +CONFIG_THRUSTMASTER_FF=y # CONFIG_HID_UDRAW_PS3 is not set # CONFIG_HID_U2FZERO is not set -# CONFIG_HID_WACOM is not set -# CONFIG_HID_WIIMOTE is not set -# CONFIG_HID_XINMO is not set -# CONFIG_HID_ZEROPLUS is not set -# CONFIG_HID_ZYDACRON is not set +CONFIG_HID_WACOM=y +CONFIG_HID_WIIMOTE=y +CONFIG_HID_XINMO=y +CONFIG_HID_ZEROPLUS=y +CONFIG_ZEROPLUS_FF=y +CONFIG_HID_ZYDACRON=y CONFIG_HID_SENSOR_HUB=y -# CONFIG_HID_SENSOR_CUSTOM_SENSOR is not set -# CONFIG_HID_ALPS is not set +CONFIG_HID_SENSOR_CUSTOM_SENSOR=y +CONFIG_HID_ALPS=y # CONFIG_HID_MCP2221 is not set # end of Special HID drivers @@ -4814,13 +5452,14 @@ CONFIG_USB_HIDDEV=y CONFIG_I2C_HID=y # CONFIG_I2C_HID_OF is not set # CONFIG_I2C_HID_OF_ELAN is not set -# CONFIG_I2C_HID_OF_GOODIX is not set +CONFIG_I2C_HID_OF_GOODIX=y +CONFIG_I2C_HID_CORE=y CONFIG_USB_OHCI_LITTLE_ENDIAN=y CONFIG_USB_SUPPORT=y CONFIG_USB_COMMON=y # CONFIG_USB_LED_TRIG is not set -CONFIG_USB_ULPI_BUS=y -CONFIG_USB_CONN_GPIO=y +# CONFIG_USB_ULPI_BUS is not set +# CONFIG_USB_CONN_GPIO is not set CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB=y CONFIG_USB_PCI=y @@ -4829,14 +5468,14 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y # # Miscellaneous USB options # -CONFIG_USB_DEFAULT_PERSIST=y +# CONFIG_USB_DEFAULT_PERSIST is not set # CONFIG_USB_FEW_INIT_RETRIES is not set # CONFIG_USB_DYNAMIC_MINORS is not set CONFIG_USB_OTG=y -# CONFIG_USB_OTG_PRODUCTLIST is not set +CONFIG_USB_OTG_PRODUCTLIST=y # CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set CONFIG_USB_OTG_FSM=y -# CONFIG_USB_LEDS_TRIGGER_USBPORT is not set +CONFIG_USB_LEDS_TRIGGER_USBPORT=y CONFIG_USB_AUTOSUSPEND_DELAY=2 CONFIG_USB_MON=y @@ -4859,17 +5498,20 @@ CONFIG_USB_EHCI_HCD_PLATFORM=y # CONFIG_USB_ISP116X_HCD is not set # CONFIG_USB_MAX3421_HCD is not set CONFIG_USB_OHCI_HCD=y -CONFIG_USB_OHCI_HCD_PCI=y +# CONFIG_USB_OHCI_HCD_PCI is not set +# CONFIG_USB_OHCI_HCD_SSB is not set CONFIG_USB_OHCI_HCD_PLATFORM=y # CONFIG_USB_UHCI_HCD is not set # CONFIG_USB_SL811_HCD is not set # CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_HCD_BCMA is not set +# CONFIG_USB_HCD_SSB is not set # CONFIG_USB_HCD_TEST_MODE is not set # # USB Device Class drivers # -# CONFIG_USB_ACM is not set +CONFIG_USB_ACM=m # CONFIG_USB_PRINTER is not set CONFIG_USB_WDM=y # CONFIG_USB_TMC is not set @@ -4883,19 +5525,20 @@ CONFIG_USB_WDM=y # CONFIG_USB_STORAGE=y # CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_REALTEK is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_ISD200 is not set -# CONFIG_USB_STORAGE_USBAT is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_SDDR55 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set -# CONFIG_USB_STORAGE_ALAUDA is not set -# CONFIG_USB_STORAGE_ONETOUCH is not set -# CONFIG_USB_STORAGE_KARMA is not set -# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set -# CONFIG_USB_STORAGE_ENE_UB6250 is not set +CONFIG_USB_STORAGE_REALTEK=y +CONFIG_REALTEK_AUTOPM=y +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=y CONFIG_USB_UAS=y # @@ -4911,7 +5554,6 @@ CONFIG_USB_UAS=y # CONFIG_USB_CDNS_SUPPORT is not set # CONFIG_USB_MUSB_HDRC is not set CONFIG_USB_DWC3=y -CONFIG_USB_DWC3_ULPI=y # CONFIG_USB_DWC3_HOST is not set # CONFIG_USB_DWC3_GADGET is not set CONFIG_USB_DWC3_DUAL_ROLE=y @@ -4945,7 +5587,7 @@ CONFIG_USB_SERIAL_GENERIC=y # CONFIG_USB_SERIAL_AIRCABLE is not set # CONFIG_USB_SERIAL_ARK3116 is not set # CONFIG_USB_SERIAL_BELKIN is not set -# CONFIG_USB_SERIAL_CH341 is not set +CONFIG_USB_SERIAL_CH341=y # CONFIG_USB_SERIAL_WHITEHEAT is not set # CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set CONFIG_USB_SERIAL_CP210X=y @@ -5028,15 +5670,16 @@ CONFIG_USB_EZUSB_FX2=y # USB Physical Layer drivers # CONFIG_USB_PHY=y -# CONFIG_NOP_USB_XCEIV is not set +CONFIG_NOP_USB_XCEIV=y +# CONFIG_USB_GPIO_VBUS is not set # CONFIG_USB_ISP1301 is not set -CONFIG_USB_ULPI=y -CONFIG_USB_ULPI_VIEWPORT=y +# CONFIG_USB_ULPI is not set # end of USB Physical Layer drivers CONFIG_USB_GADGET=y # CONFIG_USB_GADGET_DEBUG is not set -# CONFIG_USB_GADGET_DEBUG_FILES is not set +CONFIG_USB_GADGET_DEBUG_FILES=y +# CONFIG_USB_GADGET_DEBUG_FS is not set CONFIG_USB_GADGET_VBUS_DRAW=500 CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 CONFIG_U_SERIAL_CONSOLE=y @@ -5064,41 +5707,31 @@ CONFIG_U_SERIAL_CONSOLE=y CONFIG_USB_LIBCOMPOSITE=y CONFIG_USB_F_ACM=y -CONFIG_USB_F_SS_LB=y CONFIG_USB_U_SERIAL=y -CONFIG_USB_U_ETHER=y CONFIG_USB_F_SERIAL=y CONFIG_USB_F_OBEX=y -CONFIG_USB_F_NCM=y -CONFIG_USB_F_ECM=y -CONFIG_USB_F_EEM=y -CONFIG_USB_F_SUBSET=y -CONFIG_USB_F_RNDIS=y CONFIG_USB_F_MASS_STORAGE=y CONFIG_USB_F_FS=y -CONFIG_USB_F_MIDI=y -CONFIG_USB_F_HID=y -CONFIG_USB_F_PRINTER=y CONFIG_USB_CONFIGFS=y -CONFIG_USB_CONFIGFS_SERIAL=y +# CONFIG_USB_CONFIGFS_SERIAL is not set CONFIG_USB_CONFIGFS_ACM=y -CONFIG_USB_CONFIGFS_OBEX=y -CONFIG_USB_CONFIGFS_NCM=y -CONFIG_USB_CONFIGFS_ECM=y -CONFIG_USB_CONFIGFS_ECM_SUBSET=y -CONFIG_USB_CONFIGFS_RNDIS=y -CONFIG_USB_CONFIGFS_EEM=y +# CONFIG_USB_CONFIGFS_OBEX is not set +# CONFIG_USB_CONFIGFS_NCM is not set +# CONFIG_USB_CONFIGFS_ECM is not set +# CONFIG_USB_CONFIGFS_ECM_SUBSET is not set +# CONFIG_USB_CONFIGFS_RNDIS is not set +# CONFIG_USB_CONFIGFS_EEM is not set CONFIG_USB_CONFIGFS_MASS_STORAGE=y -CONFIG_USB_CONFIGFS_F_LB_SS=y +# CONFIG_USB_CONFIGFS_F_LB_SS is not set CONFIG_USB_CONFIGFS_F_FS=y # CONFIG_USB_CONFIGFS_F_UAC1 is not set # CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set # CONFIG_USB_CONFIGFS_F_UAC2 is not set -CONFIG_USB_CONFIGFS_F_MIDI=y +# CONFIG_USB_CONFIGFS_F_MIDI is not set # CONFIG_USB_CONFIGFS_F_MIDI2 is not set -CONFIG_USB_CONFIGFS_F_HID=y +# CONFIG_USB_CONFIGFS_F_HID is not set # CONFIG_USB_CONFIGFS_F_UVC is not set -CONFIG_USB_CONFIGFS_F_PRINTER=y +# CONFIG_USB_CONFIGFS_F_PRINTER is not set # # USB Gadget precomposed configurations @@ -5110,7 +5743,7 @@ CONFIG_USB_CONFIGFS_F_PRINTER=y # 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_G_SERIAL=y # CONFIG_USB_MIDI_GADGET is not set # CONFIG_USB_G_PRINTER is not set # CONFIG_USB_CDC_COMPOSITE is not set @@ -5122,10 +5755,38 @@ CONFIG_USB_CONFIGFS_F_PRINTER=y # CONFIG_USB_RAW_GADGET is not set # end of USB Gadget precomposed configurations -# CONFIG_TYPEC is not set +CONFIG_TYPEC=y +CONFIG_TYPEC_TCPM=y +# CONFIG_TYPEC_TCPCI is not set +CONFIG_TYPEC_FUSB302=y +# CONFIG_TYPEC_UCSI is not set +# CONFIG_TYPEC_TPS6598X is not set +# CONFIG_TYPEC_ANX7411 is not set +# CONFIG_TYPEC_RT1719 is not set +# CONFIG_TYPEC_HD3SS3220 is not set +# CONFIG_TYPEC_STUSB160X is not set +# CONFIG_TYPEC_WUSB3801 is not set + +# +# USB Type-C Multiplexer/DeMultiplexer Switch support +# +# CONFIG_TYPEC_MUX_FSA4480 is not set +# CONFIG_TYPEC_MUX_GPIO_SBU is not set +# CONFIG_TYPEC_MUX_PI3USB30532 is not set +# CONFIG_TYPEC_MUX_NB7VPQ904M is not set +# end of USB Type-C Multiplexer/DeMultiplexer Switch support + +# +# USB Type-C Alternate Mode drivers +# +CONFIG_TYPEC_DP_ALTMODE=y +# CONFIG_TYPEC_NVIDIA_ALTMODE is not set +# end of USB Type-C Alternate Mode drivers + CONFIG_USB_ROLE_SWITCH=y CONFIG_MMC=y CONFIG_PWRSEQ_EMMC=y +# CONFIG_PWRSEQ_SD8787 is not set CONFIG_PWRSEQ_SIMPLE=y CONFIG_MMC_BLOCK=y CONFIG_MMC_BLOCK_MINORS=32 @@ -5140,14 +5801,15 @@ CONFIG_MMC_TEST=y CONFIG_MMC_SDHCI=y # CONFIG_MMC_SDHCI_PCI is not set CONFIG_MMC_SDHCI_PLTFM=y -CONFIG_MMC_SDHCI_OF_ARASAN=y +# CONFIG_MMC_SDHCI_OF_ARASAN is not set # CONFIG_MMC_SDHCI_OF_AT91 is not set -CONFIG_MMC_SDHCI_OF_DWCMSHC=y +# CONFIG_MMC_SDHCI_OF_DWCMSHC is not set # CONFIG_MMC_SDHCI_CADENCE is not set # CONFIG_MMC_SDHCI_F_SDH30 is not set # CONFIG_MMC_SDHCI_MILBEAUT is not set # CONFIG_MMC_TIFM_SD is not set # CONFIG_MMC_SPI is not set +# CONFIG_MMC_SDRICOH_CS is not set # CONFIG_MMC_CB710 is not set # CONFIG_MMC_VIA_SDMMC is not set CONFIG_MMC_DW=y @@ -5161,8 +5823,8 @@ CONFIG_MMC_DW_ROCKCHIP=y # CONFIG_MMC_VUB300 is not set # CONFIG_MMC_USHC is not set # CONFIG_MMC_USDHI6ROL0 is not set -CONFIG_MMC_CQHCI=y -CONFIG_MMC_HSQ=y +# CONFIG_MMC_CQHCI is not set +# CONFIG_MMC_HSQ is not set # CONFIG_MMC_TOSHIBA_PCI is not set # CONFIG_MMC_MTK is not set # CONFIG_MMC_SDHCI_XENON is not set @@ -5172,8 +5834,8 @@ CONFIG_MMC_HSQ=y # CONFIG_MEMSTICK is not set CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y -CONFIG_LEDS_CLASS_FLASH=y -CONFIG_LEDS_CLASS_MULTICOLOR=y +# CONFIG_LEDS_CLASS_FLASH is not set +# CONFIG_LEDS_CLASS_MULTICOLOR is not set # CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set # @@ -5202,7 +5864,7 @@ CONFIG_LEDS_GPIO=y # CONFIG_LEDS_PCA995X is not set # CONFIG_LEDS_DAC124S085 is not set CONFIG_LEDS_PWM=y -CONFIG_LEDS_REGULATOR=y +# CONFIG_LEDS_REGULATOR is not set # CONFIG_LEDS_BD2606MVV is not set # CONFIG_LEDS_BD2802 is not set # CONFIG_LEDS_LT3593 is not set @@ -5210,34 +5872,25 @@ CONFIG_LEDS_REGULATOR=y # CONFIG_LEDS_TLC591XX is not set # CONFIG_LEDS_LM355x is not set # CONFIG_LEDS_IS31FL319X is not set -# CONFIG_LEDS_IS31FL32XX is not set +CONFIG_LEDS_IS31FL32XX=y # # 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 +CONFIG_LEDS_SYSCON=y # CONFIG_LEDS_MLXREG is not set -CONFIG_LEDS_USER=y +# CONFIG_LEDS_USER is not set # CONFIG_LEDS_SPI_BYTE is not set # CONFIG_LEDS_LM3697 is not set # # Flash and Torch LED drivers # -# CONFIG_LEDS_AAT1290 is not set -# CONFIG_LEDS_AS3645A is not set -# CONFIG_LEDS_KTD2692 is not set -# CONFIG_LEDS_LM3601X is not set -# CONFIG_LEDS_RT4505 is not set -# CONFIG_LEDS_RT8515 is not set -# CONFIG_LEDS_SGM3140 is not set # # RGB LED drivers # -# CONFIG_LEDS_GROUP_MULTICOLOR is not set -# CONFIG_LEDS_PWM_MULTICOLOR is not set # # LED Triggers @@ -5245,23 +5898,23 @@ CONFIG_LEDS_USER=y CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGER_TIMER=y CONFIG_LEDS_TRIGGER_ONESHOT=y -CONFIG_LEDS_TRIGGER_MTD=y +CONFIG_LEDS_TRIGGER_DISK=y CONFIG_LEDS_TRIGGER_HEARTBEAT=y CONFIG_LEDS_TRIGGER_BACKLIGHT=y CONFIG_LEDS_TRIGGER_CPU=y -CONFIG_LEDS_TRIGGER_ACTIVITY=y +# CONFIG_LEDS_TRIGGER_ACTIVITY is not set CONFIG_LEDS_TRIGGER_DEFAULT_ON=y # # iptables trigger is under Netfilter config (LED target) # -CONFIG_LEDS_TRIGGER_TRANSIENT=y -CONFIG_LEDS_TRIGGER_CAMERA=y -CONFIG_LEDS_TRIGGER_PANIC=y -CONFIG_LEDS_TRIGGER_NETDEV=y -CONFIG_LEDS_TRIGGER_PATTERN=y -CONFIG_LEDS_TRIGGER_AUDIO=y -CONFIG_LEDS_TRIGGER_TTY=y +# CONFIG_LEDS_TRIGGER_TRANSIENT is not set +# CONFIG_LEDS_TRIGGER_CAMERA is not set +# CONFIG_LEDS_TRIGGER_PANIC is not set +# CONFIG_LEDS_TRIGGER_NETDEV is not set +# CONFIG_LEDS_TRIGGER_PATTERN is not set +# CONFIG_LEDS_TRIGGER_AUDIO is not set +# CONFIG_LEDS_TRIGGER_TTY is not set # # Simple LED drivers @@ -5274,8 +5927,7 @@ CONFIG_RTC_LIB=y CONFIG_RTC_CLASS=y CONFIG_RTC_HCTOSYS=y CONFIG_RTC_HCTOSYS_DEVICE="rtc0" -CONFIG_RTC_SYSTOHC=y -CONFIG_RTC_SYSTOHC_DEVICE="rtc0" +# CONFIG_RTC_SYSTOHC is not set # CONFIG_RTC_DEBUG is not set CONFIG_RTC_NVMEM=y @@ -5283,9 +5935,8 @@ CONFIG_RTC_NVMEM=y # RTC interfaces # CONFIG_RTC_INTF_SYSFS=y -CONFIG_RTC_INTF_PROC=y -CONFIG_RTC_INTF_DEV=y -# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_INTF_PROC is not set +# CONFIG_RTC_INTF_DEV is not set # CONFIG_RTC_DRV_TEST is not set # @@ -5297,7 +5948,7 @@ CONFIG_RTC_INTF_DEV=y # CONFIG_RTC_DRV_DS1307 is not set # CONFIG_RTC_DRV_DS1374 is not set # CONFIG_RTC_DRV_DS1672 is not set -# CONFIG_RTC_DRV_HYM8563 is not set +CONFIG_RTC_DRV_HYM8563=y # CONFIG_RTC_DRV_MAX6900 is not set # CONFIG_RTC_DRV_NCT3018Y is not set CONFIG_RTC_DRV_RK808=y @@ -5313,6 +5964,7 @@ CONFIG_RTC_DRV_RK808=y # CONFIG_RTC_DRV_PCF8583 is not set # CONFIG_RTC_DRV_M41T80 is not set # CONFIG_RTC_DRV_BQ32K is not set +# CONFIG_RTC_DRV_TPS6586X is not set # CONFIG_RTC_DRV_S35390A is not set # CONFIG_RTC_DRV_FM3130 is not set # CONFIG_RTC_DRV_RX8010 is not set @@ -5366,7 +6018,6 @@ CONFIG_RTC_I2C_AND_SPI=y # CONFIG_RTC_DRV_M48T59 is not set # CONFIG_RTC_DRV_MSM6242 is not set # CONFIG_RTC_DRV_RP5C01 is not set -# CONFIG_RTC_DRV_OPTEE is not set # CONFIG_RTC_DRV_ZYNQMP is not set # @@ -5393,6 +6044,7 @@ CONFIG_DMA_ENGINE=y CONFIG_DMA_OF=y # CONFIG_ALTERA_MSGDMA is not set # CONFIG_AMBA_PL08X is not set +# CONFIG_BCM_SBA_RAID is not set # CONFIG_DW_AXI_DMAC is not set # CONFIG_FSL_EDMA is not set # CONFIG_FSL_QDMA is not set @@ -5421,13 +6073,13 @@ CONFIG_PL330_DMA=y # DMABUF options # CONFIG_SYNC_FILE=y -CONFIG_UDMABUF=y +# CONFIG_SW_SYNC is not set +# CONFIG_UDMABUF is not set # CONFIG_DMABUF_MOVE_NOTIFY is not set # CONFIG_DMABUF_DEBUG is not set # CONFIG_DMABUF_SELFTESTS is not set -CONFIG_DMABUF_HEAPS=y +# CONFIG_DMABUF_HEAPS is not set # CONFIG_DMABUF_SYSFS_STATS is not set -CONFIG_DMABUF_HEAPS_SYSTEM=y # end of DMABUF options # CONFIG_UIO is not set @@ -5449,7 +6101,7 @@ CONFIG_STAGING=y # CONFIG_RTL8192U is not set # CONFIG_RTLLIB is not set CONFIG_RTL8723BS=m -# CONFIG_R8712U is not set +CONFIG_R8712U=m # CONFIG_RTS5208 is not set # CONFIG_VT6655 is not set # CONFIG_VT6656 is not set @@ -5498,11 +6150,7 @@ CONFIG_RTL8723BS=m # end of IIO staging drivers # CONFIG_FB_SM750 is not set -CONFIG_STAGING_MEDIA=y -# CONFIG_DVB_AV7110 is not set -# CONFIG_VIDEO_MAX96712 is not set -CONFIG_VIDEO_ROCKCHIP_VDEC=y -# CONFIG_STAGING_MEDIA_DEPRECATED is not set +# CONFIG_STAGING_MEDIA is not set # CONFIG_STAGING_BOARD is not set # CONFIG_LTE_GDM724X is not set # CONFIG_FB_TFT is not set @@ -5513,7 +6161,9 @@ CONFIG_VIDEO_ROCKCHIP_VDEC=y # CONFIG_QLGE is not set # CONFIG_VME_BUS is not set # CONFIG_GOLDFISH is not set -# CONFIG_CHROME_PLATFORMS is not set +CONFIG_CHROME_PLATFORMS=y +# CONFIG_CROS_EC is not set +# CONFIG_CROS_HPS_I2C is not set # CONFIG_MELLANOX_PLATFORM is not set # CONFIG_SURFACE_PLATFORMS is not set CONFIG_HAVE_CLK=y @@ -5530,8 +6180,8 @@ CONFIG_COMMON_CLK=y # CONFIG_LMK04832 is not set # CONFIG_COMMON_CLK_MAX9485 is not set CONFIG_COMMON_CLK_RK808=y -CONFIG_COMMON_CLK_SCMI=y -CONFIG_COMMON_CLK_SCPI=y +# CONFIG_COMMON_CLK_SCMI is not set +# CONFIG_COMMON_CLK_SCPI is not set # CONFIG_COMMON_CLK_SI5341 is not set # CONFIG_COMMON_CLK_SI5351 is not set # CONFIG_COMMON_CLK_SI514 is not set @@ -5541,20 +6191,20 @@ CONFIG_COMMON_CLK_SCPI=y # CONFIG_COMMON_CLK_CDCE925 is not set # CONFIG_COMMON_CLK_CS2000_CP is not set # CONFIG_COMMON_CLK_AXI_CLKGEN is not set -# CONFIG_COMMON_CLK_XGENE is not set -CONFIG_COMMON_CLK_PWM=y +CONFIG_COMMON_CLK_XGENE=y +# CONFIG_COMMON_CLK_PWM is not set # CONFIG_COMMON_CLK_RS9_PCIE is not set # CONFIG_COMMON_CLK_SI521XX is not set # CONFIG_COMMON_CLK_VC3 is not set # CONFIG_COMMON_CLK_VC5 is not set # CONFIG_COMMON_CLK_VC7 is not set -CONFIG_COMMON_CLK_FIXED_MMIO=y +# CONFIG_COMMON_CLK_FIXED_MMIO is not set CONFIG_COMMON_CLK_ROCKCHIP=y CONFIG_CLK_PX30=y -CONFIG_CLK_RK3308=y -CONFIG_CLK_RK3328=y -CONFIG_CLK_RK3368=y -CONFIG_CLK_RK3399=y +# CONFIG_CLK_RK3308 is not set +# CONFIG_CLK_RK3328 is not set +# CONFIG_CLK_RK3368 is not set +# CONFIG_CLK_RK3399 is not set CONFIG_CLK_RK3568=y CONFIG_CLK_RK3588=y # CONFIG_XILINX_VCU is not set @@ -5576,9 +6226,9 @@ CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y # end of Clock Source drivers CONFIG_MAILBOX=y -# CONFIG_ARM_MHU is not set +CONFIG_ARM_MHU=y # CONFIG_ARM_MHU_V2 is not set -# CONFIG_PLATFORM_MHU is not set +CONFIG_PLATFORM_MHU=y # CONFIG_PL320_MBOX is not set CONFIG_ROCKCHIP_MBOX=y # CONFIG_ALTERA_MBOX is not set @@ -5597,6 +6247,7 @@ CONFIG_IOMMU_IO_PGTABLE_LPAE=y # CONFIG_IOMMU_IO_PGTABLE_DART is not set # end of Generic IOMMU Pagetable Support +# CONFIG_IOMMU_DEBUGFS is not set CONFIG_IOMMU_DEFAULT_DMA_STRICT=y # CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set # CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set @@ -5604,8 +6255,11 @@ CONFIG_OF_IOMMU=y CONFIG_IOMMU_DMA=y # CONFIG_IOMMUFD is not set CONFIG_ROCKCHIP_IOMMU=y -# CONFIG_ARM_SMMU is not set -# CONFIG_ARM_SMMU_V3 is not set +CONFIG_ARM_SMMU=y +# CONFIG_ARM_SMMU_LEGACY_DT_BINDINGS is not set +CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT=y +CONFIG_ARM_SMMU_V3=y +# CONFIG_ARM_SMMU_V3_SVA is not set # # Remoteproc drivers @@ -5686,8 +6340,8 @@ CONFIG_PM_DEVFREQ=y CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y CONFIG_DEVFREQ_GOV_PERFORMANCE=y CONFIG_DEVFREQ_GOV_POWERSAVE=y -CONFIG_DEVFREQ_GOV_USERSPACE=y -CONFIG_DEVFREQ_GOV_PASSIVE=y +# CONFIG_DEVFREQ_GOV_USERSPACE is not set +# CONFIG_DEVFREQ_GOV_PASSIVE is not set # # DEVFREQ Drivers @@ -5700,14 +6354,15 @@ CONFIG_EXTCON=y # # Extcon Device Drivers # -CONFIG_EXTCON_ADC_JACK=y +# CONFIG_EXTCON_ADC_JACK is not set # CONFIG_EXTCON_FSA9480 is not set -CONFIG_EXTCON_GPIO=y +# CONFIG_EXTCON_GPIO is not set # CONFIG_EXTCON_MAX3355 is not set # CONFIG_EXTCON_PTN5150 is not set # CONFIG_EXTCON_RT8973A is not set # CONFIG_EXTCON_SM5502 is not set -CONFIG_EXTCON_USB_GPIO=y +# CONFIG_EXTCON_USB_GPIO is not set +# CONFIG_EXTCON_USBC_TUSB320 is not set CONFIG_MEMORY=y # CONFIG_ARM_PL172_MPMC is not set CONFIG_IIO=y @@ -5715,13 +6370,13 @@ CONFIG_IIO_BUFFER=y CONFIG_IIO_BUFFER_CB=y # CONFIG_IIO_BUFFER_DMA is not set # CONFIG_IIO_BUFFER_DMAENGINE is not set -CONFIG_IIO_BUFFER_HW_CONSUMER=y +# CONFIG_IIO_BUFFER_HW_CONSUMER is not set CONFIG_IIO_KFIFO_BUF=y CONFIG_IIO_TRIGGERED_BUFFER=y CONFIG_IIO_CONFIGFS=y CONFIG_IIO_TRIGGER=y CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 -CONFIG_IIO_SW_DEVICE=y +# CONFIG_IIO_SW_DEVICE is not set CONFIG_IIO_SW_TRIGGER=y CONFIG_IIO_TRIGGERED_EVENT=y @@ -5895,8 +6550,7 @@ CONFIG_ROCKCHIP_SARADC=y # # Hid Sensor IIO Common # -CONFIG_HID_SENSOR_IIO_COMMON=y -CONFIG_HID_SENSOR_IIO_TRIGGER=y +# CONFIG_HID_SENSOR_IIO_COMMON is not set # end of Hid Sensor IIO Common # @@ -5959,7 +6613,6 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=y # # IIO dummy driver # -# CONFIG_IIO_SIMPLE_DUMMY is not set # end of IIO dummy driver # @@ -6077,7 +6730,7 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=y # CONFIG_CM36651 is not set # CONFIG_GP2AP002 is not set # CONFIG_GP2AP020A00F is not set -# CONFIG_SENSORS_ISL29018 is not set +CONFIG_SENSORS_ISL29018=y # CONFIG_SENSORS_ISL29028 is not set # CONFIG_ISL29125 is not set # CONFIG_HID_SENSOR_ALS is not set @@ -6101,8 +6754,8 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=y # CONFIG_ST_UVIS25 is not set # CONFIG_TCS3414 is not set # CONFIG_TCS3472 is not set -# CONFIG_SENSORS_TSL2563 is not set -# CONFIG_TSL2583 is not set +CONFIG_SENSORS_TSL2563=y +CONFIG_TSL2583=y # CONFIG_TSL2591 is not set # CONFIG_TSL2772 is not set # CONFIG_TSL4531 is not set @@ -6317,8 +6970,6 @@ CONFIG_GENERIC_PHY_MIPI_DPHY=y # CONFIG_PHY_CPCAP_USB is not set # CONFIG_PHY_MAPPHONE_MDM6600 is not set # CONFIG_PHY_OCELOT_SERDES is not set -# CONFIG_PHY_QCOM_USB_HS is not set -# CONFIG_PHY_QCOM_USB_HSIC is not set # CONFIG_PHY_RTK_RTD_USB2PHY is not set # CONFIG_PHY_RTK_RTD_USB3PHY is not set CONFIG_PHY_ROCKCHIP_DP=y @@ -6334,7 +6985,6 @@ CONFIG_PHY_ROCKCHIP_PCIE=y CONFIG_PHY_ROCKCHIP_TYPEC=y CONFIG_PHY_ROCKCHIP_USB=y # CONFIG_PHY_SAMSUNG_USB2 is not set -# CONFIG_PHY_TUSB1210 is not set # end of PHY Subsystem # CONFIG_POWERCAP is not set @@ -6380,7 +7030,6 @@ CONFIG_NVMEM_SYSFS=y # CONFIG_NVMEM_RMEM is not set # CONFIG_NVMEM_ROCKCHIP_EFUSE is not set # CONFIG_NVMEM_ROCKCHIP_OTP is not set -# CONFIG_NVMEM_U_BOOT_ENV is not set # # HW tracing support @@ -6392,9 +7041,7 @@ CONFIG_NVMEM_SYSFS=y # CONFIG_FPGA is not set # CONFIG_FSI is not set -CONFIG_TEE=y -CONFIG_OPTEE=y -# CONFIG_OPTEE_INSECURE_LOAD_IMAGE is not set +# CONFIG_TEE is not set CONFIG_MULTIPLEXER=y # @@ -6403,7 +7050,7 @@ CONFIG_MULTIPLEXER=y # CONFIG_MUX_ADG792A is not set # CONFIG_MUX_ADGS1408 is not set CONFIG_MUX_GPIO=y -# CONFIG_MUX_MMIO is not set +CONFIG_MUX_MMIO=y # end of Multiplexer drivers CONFIG_PM_OPP=y @@ -6428,7 +7075,7 @@ CONFIG_LEGACY_DIRECT_IO=y # CONFIG_EXT2_FS is not set # CONFIG_EXT3_FS is not set CONFIG_EXT4_FS=y -CONFIG_EXT4_USE_FOR_EXT2=y +# CONFIG_EXT4_USE_FOR_EXT2 is not set CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y # CONFIG_EXT4_DEBUG is not set @@ -6437,46 +7084,42 @@ CONFIG_JBD2=y CONFIG_FS_MBCACHE=y # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set -# CONFIG_XFS_FS is not set +CONFIG_XFS_FS=y +CONFIG_XFS_SUPPORT_V4=y +CONFIG_XFS_SUPPORT_ASCII_CI=y +# CONFIG_XFS_QUOTA is not set +# CONFIG_XFS_POSIX_ACL is not set +# CONFIG_XFS_RT is not set +# CONFIG_XFS_ONLINE_SCRUB is not set +# CONFIG_XFS_WARN is not set +# CONFIG_XFS_DEBUG is not set # CONFIG_GFS2_FS is not set # CONFIG_OCFS2_FS is not set # CONFIG_BTRFS_FS is not set # CONFIG_NILFS2_FS is not set -CONFIG_F2FS_FS=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_FAULT_INJECTION is not set -# CONFIG_F2FS_FS_COMPRESSION is not set -CONFIG_F2FS_IOSTAT=y -# CONFIG_F2FS_UNFAIR_RWSEM is not set +# CONFIG_F2FS_FS is not set CONFIG_FS_POSIX_ACL=y CONFIG_EXPORTFS=y # CONFIG_EXPORTFS_BLOCK_OPS is not set CONFIG_FILE_LOCKING=y -CONFIG_FS_ENCRYPTION=y -CONFIG_FS_ENCRYPTION_ALGS=y -CONFIG_FS_VERITY=y -CONFIG_FS_VERITY_BUILTIN_SIGNATURES=y +# CONFIG_FS_ENCRYPTION is not set +# CONFIG_FS_VERITY is not set CONFIG_FSNOTIFY=y -CONFIG_DNOTIFY=y +# CONFIG_DNOTIFY is not set CONFIG_INOTIFY_USER=y -CONFIG_FANOTIFY=y -# CONFIG_FANOTIFY_ACCESS_PERMISSIONS is not set -CONFIG_QUOTA=y -CONFIG_QUOTA_NETLINK_INTERFACE=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_AUTOFS_FS=y +# CONFIG_FANOTIFY is not set +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set CONFIG_FUSE_FS=y # CONFIG_CUSE is not set # CONFIG_VIRTIO_FS is not set -# CONFIG_OVERLAY_FS is not set +CONFIG_OVERLAY_FS=y +# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set +CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y +# CONFIG_OVERLAY_FS_INDEX is not set +# CONFIG_OVERLAY_FS_XINO_AUTO is not set +# CONFIG_OVERLAY_FS_METACOPY is not set +# CONFIG_OVERLAY_FS_DEBUG is not set # # Caches @@ -6492,7 +7135,9 @@ CONFIG_FSCACHE=y # # CD-ROM/DVD Filesystems # -# CONFIG_ISO9660_FS is not set +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y # CONFIG_UDF_FS is not set # end of CD-ROM/DVD Filesystems @@ -6500,10 +7145,10 @@ CONFIG_FSCACHE=y # DOS/FAT/EXFAT/NT Filesystems # CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=y +# CONFIG_MSDOS_FS is not set CONFIG_VFAT_FS=y CONFIG_FAT_DEFAULT_CODEPAGE=437 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_FAT_DEFAULT_IOCHARSET="ascii" # CONFIG_FAT_DEFAULT_UTF8 is not set CONFIG_EXFAT_FS=y CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8" @@ -6542,7 +7187,6 @@ CONFIG_MISC_FILESYSTEMS=y # 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_CRAMFS is not set CONFIG_SQUASHFS=y CONFIG_SQUASHFS_FILE_CACHE=y @@ -6552,12 +7196,12 @@ CONFIG_SQUASHFS_DECOMP_SINGLE=y CONFIG_SQUASHFS_COMPILE_DECOMP_SINGLE=y # CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI is not set # CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI_PERCPU is not set -CONFIG_SQUASHFS_XATTR=y +# CONFIG_SQUASHFS_XATTR is not set CONFIG_SQUASHFS_ZLIB=y -# CONFIG_SQUASHFS_LZ4 is not set +CONFIG_SQUASHFS_LZ4=y CONFIG_SQUASHFS_LZO=y -# CONFIG_SQUASHFS_XZ is not set -# CONFIG_SQUASHFS_ZSTD is not set +CONFIG_SQUASHFS_XZ=y +CONFIG_SQUASHFS_ZSTD=y # CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set # CONFIG_SQUASHFS_EMBEDDED is not set CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 @@ -6568,13 +7212,26 @@ CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 # CONFIG_QNX4FS_FS is not set # CONFIG_QNX6FS_FS is not set # CONFIG_ROMFS_FS is not set -# CONFIG_PSTORE is not set +CONFIG_PSTORE=y +CONFIG_PSTORE_DEFAULT_KMSG_BYTES=10240 +CONFIG_PSTORE_COMPRESS=y +# CONFIG_PSTORE_CONSOLE is not set +# CONFIG_PSTORE_PMSG is not set +# CONFIG_PSTORE_RAM is not set +# CONFIG_PSTORE_BLK is not set # CONFIG_SYSV_FS is not set # CONFIG_UFS_FS is not set # CONFIG_EROFS_FS is not set -# CONFIG_NETWORK_FILESYSTEMS is not set +CONFIG_NETWORK_FILESYSTEMS=y +# CONFIG_NFS_FS is not set +# CONFIG_NFSD is not set +# CONFIG_CEPH_FS is not set +# CONFIG_CIFS is not set +# CONFIG_SMB_SERVER is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set CONFIG_NLS=y -CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_DEFAULT="utf-8" CONFIG_NLS_CODEPAGE_437=y # CONFIG_NLS_CODEPAGE_737 is not set # CONFIG_NLS_CODEPAGE_775 is not set @@ -6598,7 +7255,7 @@ CONFIG_NLS_CODEPAGE_437=y # CONFIG_NLS_ISO8859_8 is not set # CONFIG_NLS_CODEPAGE_1250 is not set # CONFIG_NLS_CODEPAGE_1251 is not set -# CONFIG_NLS_ASCII is not set +CONFIG_NLS_ASCII=y CONFIG_NLS_ISO8859_1=y # CONFIG_NLS_ISO8859_2 is not set # CONFIG_NLS_ISO8859_3 is not set @@ -6635,27 +7292,21 @@ CONFIG_IO_WQ=y CONFIG_KEYS=y # CONFIG_KEYS_REQUEST_CACHE is not set # CONFIG_PERSISTENT_KEYRINGS is not set +# CONFIG_BIG_KEYS is not set # CONFIG_TRUSTED_KEYS is not set # CONFIG_ENCRYPTED_KEYS is not set # CONFIG_KEY_DH_OPERATIONS is not set +# CONFIG_KEY_NOTIFICATIONS is not set # CONFIG_SECURITY_DMESG_RESTRICT is not set CONFIG_SECURITY=y CONFIG_SECURITYFS=y CONFIG_SECURITY_NETWORK=y # CONFIG_SECURITY_NETWORK_XFRM is not set # CONFIG_SECURITY_PATH is not set -CONFIG_LSM_MMAP_MIN_ADDR=65536 CONFIG_HARDENED_USERCOPY=y # CONFIG_FORTIFY_SOURCE is not set CONFIG_STATIC_USERMODEHELPER=y CONFIG_STATIC_USERMODEHELPER_PATH="/sbin/usermode-helper" -CONFIG_SECURITY_SELINUX=y -CONFIG_SECURITY_SELINUX_BOOTPARAM=y -CONFIG_SECURITY_SELINUX_DEVELOP=y -CONFIG_SECURITY_SELINUX_AVC_STATS=y -CONFIG_SECURITY_SELINUX_SIDTAB_HASH_BITS=9 -CONFIG_SECURITY_SELINUX_SID2STR_CACHE_SIZE=256 -# CONFIG_SECURITY_SELINUX_DEBUG is not set # CONFIG_SECURITY_SMACK is not set # CONFIG_SECURITY_TOMOYO is not set # CONFIG_SECURITY_APPARMOR is not set @@ -6666,11 +7317,9 @@ CONFIG_SECURITY_SELINUX_SID2STR_CACHE_SIZE=256 # CONFIG_SECURITY_LANDLOCK is not set 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_DAC is not set +CONFIG_DEFAULT_SECURITY_DAC=y CONFIG_LSM="selinux,integrity" # @@ -6706,6 +7355,12 @@ CONFIG_RANDSTRUCT_NONE=y # end of Kernel hardening options # end of Security options +CONFIG_XOR_BLOCKS=y +CONFIG_ASYNC_CORE=y +CONFIG_ASYNC_MEMCPY=y +CONFIG_ASYNC_XOR=y +CONFIG_ASYNC_PQ=y +CONFIG_ASYNC_RAID6_RECOV=y CONFIG_CRYPTO=y # @@ -6839,6 +7494,7 @@ CONFIG_CRYPTO_XCBC=y CONFIG_CRYPTO_CRC32C=y CONFIG_CRYPTO_CRC32=y CONFIG_CRYPTO_CRCT10DIF=y +# CONFIG_CRYPTO_CRC64_ROCKSOFT is not set # end of CRCs (cyclic redundancy checks) # @@ -6924,6 +7580,7 @@ CONFIG_CRYPTO_HW=y # CONFIG_CRYPTO_DEV_QAT_C62XVF is not set # CONFIG_CRYPTO_DEV_CAVIUM_ZIP is not set CONFIG_CRYPTO_DEV_ROCKCHIP=y +# CONFIG_CRYPTO_DEV_ROCKCHIP_DEBUG is not set # CONFIG_CRYPTO_DEV_SAFEXCEL is not set # CONFIG_CRYPTO_DEV_CCREE is not set # CONFIG_CRYPTO_DEV_HISI_SEC is not set @@ -6952,6 +7609,8 @@ CONFIG_BINARY_PRINTF=y # # Library routines # +CONFIG_RAID6_PQ=y +CONFIG_RAID6_PQ_BENCHMARK=y CONFIG_LINEAR_RANGES=y # CONFIG_PACKING is not set CONFIG_BITREVERSE=y @@ -6959,7 +7618,7 @@ CONFIG_HAVE_ARCH_BITREVERSE=y CONFIG_GENERIC_STRNCPY_FROM_USER=y CONFIG_GENERIC_STRNLEN_USER=y CONFIG_GENERIC_NET_UTILS=y -# CONFIG_CORDIC is not set +CONFIG_CORDIC=y # CONFIG_PRIME_NUMBERS is not set CONFIG_RATIONAL=y CONFIG_GENERIC_PCI_IOMAP=y @@ -6967,7 +7626,6 @@ CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y CONFIG_ARCH_HAS_FAST_MULTIPLIER=y CONFIG_ARCH_USE_SYM_ANNOTATIONS=y # CONFIG_INDIRECT_PIO is not set -# CONFIG_TRACE_MMIO_ACCESS is not set # # Crypto library routines @@ -6979,14 +7637,15 @@ CONFIG_CRYPTO_LIB_GF128MUL=y CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=y CONFIG_CRYPTO_LIB_CHACHA_GENERIC=y -# CONFIG_CRYPTO_LIB_CHACHA is not set -# CONFIG_CRYPTO_LIB_CURVE25519 is not set +CONFIG_CRYPTO_LIB_CHACHA=y +CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=y +CONFIG_CRYPTO_LIB_CURVE25519=y CONFIG_CRYPTO_LIB_DES=y CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 CONFIG_CRYPTO_ARCH_HAVE_LIB_POLY1305=y CONFIG_CRYPTO_LIB_POLY1305_GENERIC=y -# CONFIG_CRYPTO_LIB_POLY1305 is not set -# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set +CONFIG_CRYPTO_LIB_POLY1305=y +CONFIG_CRYPTO_LIB_CHACHA20POLY1305=y CONFIG_CRYPTO_LIB_SHA1=y CONFIG_CRYPTO_LIB_SHA256=y # end of Crypto library routines @@ -7002,15 +7661,13 @@ CONFIG_CRC32_SLICEBY8=y # CONFIG_CRC32_SLICEBY4 is not set # CONFIG_CRC32_SARWATE is not set # CONFIG_CRC32_BIT is not set -# CONFIG_CRC64 is not set +CONFIG_CRC64=m # CONFIG_CRC4 is not set CONFIG_CRC7=y CONFIG_LIBCRC32C=y # CONFIG_CRC8 is not set CONFIG_XXHASH=y -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 @@ -7040,12 +7697,10 @@ CONFIG_DECOMPRESS_LZO=y CONFIG_DECOMPRESS_LZ4=y CONFIG_DECOMPRESS_ZSTD=y CONFIG_GENERIC_ALLOCATOR=y -CONFIG_REED_SOLOMON=y -CONFIG_REED_SOLOMON_DEC8=y CONFIG_TEXTSEARCH=y -CONFIG_TEXTSEARCH_KMP=y -CONFIG_TEXTSEARCH_BM=y -CONFIG_TEXTSEARCH_FSM=y +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m CONFIG_XARRAY_MULTI=y CONFIG_ASSOCIATIVE_ARRAY=y CONFIG_HAS_IOMEM=y @@ -7071,6 +7726,7 @@ CONFIG_DMA_NONCOHERENT_MMAP=y CONFIG_DMA_COHERENT_POOL=y CONFIG_DMA_DIRECT_REMAP=y # CONFIG_DMA_API_DEBUG is not set +# CONFIG_DMA_MAP_BENCHMARK is not set CONFIG_SGL_ALLOC=y # CONFIG_FORCE_NR_CPUS is not set CONFIG_CPU_RMAP=y @@ -7078,8 +7734,9 @@ CONFIG_DQL=y CONFIG_GLOB=y # CONFIG_GLOB_SELFTEST is not set CONFIG_NLATTR=y +CONFIG_LRU_CACHE=m CONFIG_CLZ_TAB=y -# CONFIG_IRQ_POLL is not set +CONFIG_IRQ_POLL=y CONFIG_MPILIB=y CONFIG_LIBFDT=y CONFIG_OID_REGISTRY=y @@ -7094,7 +7751,6 @@ CONFIG_SG_POOL=y CONFIG_ARCH_HAS_PMEM_API=y CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y CONFIG_ARCH_STACKWALK=y -CONFIG_STACKDEPOT=y CONFIG_SBITMAP=y # end of Library routines @@ -7113,16 +7769,16 @@ CONFIG_PRINTK_TIME=y # CONFIG_STACKTRACE_BUILD_ID is not set CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 CONFIG_CONSOLE_LOGLEVEL_QUIET=4 -CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7 # CONFIG_BOOT_PRINTK_DELAY is not set -# CONFIG_DYNAMIC_DEBUG is not set -# CONFIG_DYNAMIC_DEBUG_CORE is not set +CONFIG_DYNAMIC_DEBUG=y +CONFIG_DYNAMIC_DEBUG_CORE=y # CONFIG_SYMBOLIC_ERRNAME is not set CONFIG_DEBUG_BUGVERBOSE=y # end of printk and dmesg options CONFIG_DEBUG_KERNEL=y -CONFIG_DEBUG_MISC=y +# CONFIG_DEBUG_MISC is not set # # Compile-time checks and compiler options @@ -7149,26 +7805,17 @@ CONFIG_FRAME_POINTER=y # Generic Kernel Debugging Instruments # CONFIG_MAGIC_SYSRQ=y -CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0 CONFIG_MAGIC_SYSRQ_SERIAL=y CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE="" -# CONFIG_DEBUG_FS is not set +CONFIG_DEBUG_FS=y +CONFIG_DEBUG_FS_ALLOW_ALL=y +# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set +# CONFIG_DEBUG_FS_ALLOW_NONE is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_KGDB is not set CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y -CONFIG_UBSAN=y -# CONFIG_UBSAN_TRAP is not set -CONFIG_CC_HAS_UBSAN_BOUNDS_STRICT=y -CONFIG_UBSAN_BOUNDS=y -CONFIG_UBSAN_BOUNDS_STRICT=y -CONFIG_UBSAN_SHIFT=y -# CONFIG_UBSAN_DIV_ZERO is not set -# CONFIG_UBSAN_UNREACHABLE is not set -CONFIG_UBSAN_BOOL=y -CONFIG_UBSAN_ENUM=y -# CONFIG_UBSAN_ALIGNMENT is not set -CONFIG_UBSAN_SANITIZE_ALL=y -# CONFIG_TEST_UBSAN is not set +# CONFIG_UBSAN is not set CONFIG_HAVE_ARCH_KCSAN=y CONFIG_HAVE_KCSAN_COMPILER=y # CONFIG_KCSAN is not set @@ -7187,20 +7834,19 @@ CONFIG_HAVE_KCSAN_COMPILER=y # # CONFIG_PAGE_EXTENSION is not set # CONFIG_DEBUG_PAGEALLOC is not set -CONFIG_SLUB_DEBUG=y -# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_SLUB_DEBUG is not set # CONFIG_PAGE_OWNER is not set -# CONFIG_PAGE_TABLE_CHECK is not set # CONFIG_PAGE_POISONING is not set -# CONFIG_DEBUG_PAGE_REF is not set # CONFIG_DEBUG_RODATA_TEST is not set CONFIG_ARCH_HAS_DEBUG_WX=y # CONFIG_DEBUG_WX is not set CONFIG_GENERIC_PTDUMP=y +# CONFIG_PTDUMP_DEBUGFS is not set CONFIG_HAVE_DEBUG_KMEMLEAK=y # CONFIG_DEBUG_KMEMLEAK is not set # CONFIG_PER_VMA_LOCK_STATS is not set # CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SHRINKER_DEBUG is not set # CONFIG_DEBUG_STACK_USAGE is not set # CONFIG_SCHED_STACK_END_CHECK is not set CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y @@ -7229,11 +7875,13 @@ CONFIG_HAVE_ARCH_KFENCE=y # # CONFIG_PANIC_ON_OOPS is not set CONFIG_PANIC_ON_OOPS_VALUE=0 -CONFIG_PANIC_TIMEOUT=0 +CONFIG_PANIC_TIMEOUT=1 # CONFIG_SOFTLOCKUP_DETECTOR is not set CONFIG_HAVE_HARDLOCKUP_DETECTOR_BUDDY=y # CONFIG_HARDLOCKUP_DETECTOR is not set -# CONFIG_DETECT_HUNG_TASK is not set +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 +CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y # CONFIG_WQ_WATCHDOG is not set # CONFIG_WQ_CPU_INTENSIVE_REPORT is not set # CONFIG_TEST_LOCKUP is not set @@ -7242,11 +7890,13 @@ CONFIG_HAVE_HARDLOCKUP_DETECTOR_BUDDY=y # # Scheduler Debugging # +# CONFIG_SCHED_DEBUG is not set CONFIG_SCHED_INFO=y CONFIG_SCHEDSTATS=y # end of Scheduler Debugging # CONFIG_DEBUG_TIMEKEEPING is not set +# CONFIG_DEBUG_PREEMPT is not set # # Lock Debugging (spinlocks, mutexes, etc...) @@ -7255,7 +7905,7 @@ CONFIG_LOCK_DEBUGGING_SUPPORT=y # CONFIG_PROVE_LOCKING is not set # CONFIG_LOCK_STAT is not set # CONFIG_DEBUG_RT_MUTEXES is not set -# CONFIG_DEBUG_SPINLOCK is not set +CONFIG_DEBUG_SPINLOCK=y # CONFIG_DEBUG_MUTEXES is not set # CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set # CONFIG_DEBUG_RWSEMS is not set @@ -7283,7 +7933,7 @@ CONFIG_STACKTRACE=y # CONFIG_DEBUG_MAPLE_TREE is not set # end of Debug kernel data structures -# CONFIG_DEBUG_CREDENTIALS is not set +CONFIG_DEBUG_CREDENTIALS=y # # RCU Debugging @@ -7301,7 +7951,6 @@ CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=20 # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set # CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set # CONFIG_LATENCYTOP is not set -CONFIG_NOP_TRACER=y CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y @@ -7310,56 +7959,12 @@ CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS=y CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y CONFIG_HAVE_SYSCALL_TRACEPOINTS=y CONFIG_HAVE_C_RECORDMCOUNT=y -CONFIG_TRACER_MAX_TRACE=y -CONFIG_TRACE_CLOCK=y -CONFIG_RING_BUFFER=y -CONFIG_EVENT_TRACING=y -CONFIG_CONTEXT_SWITCH_TRACER=y -CONFIG_TRACING=y -CONFIG_GENERIC_TRACER=y CONFIG_TRACING_SUPPORT=y -CONFIG_FTRACE=y -# CONFIG_BOOTTIME_TRACING is not set -CONFIG_FUNCTION_TRACER=y -CONFIG_FUNCTION_GRAPH_TRACER=y -# CONFIG_FUNCTION_GRAPH_RETVAL is not set -CONFIG_DYNAMIC_FTRACE=y -CONFIG_DYNAMIC_FTRACE_WITH_ARGS=y -# CONFIG_FUNCTION_PROFILER is not set -# CONFIG_STACK_TRACER is not set -# CONFIG_IRQSOFF_TRACER is not set -CONFIG_SCHED_TRACER=y -# CONFIG_HWLAT_TRACER is not set -# CONFIG_OSNOISE_TRACER is not set -# CONFIG_TIMERLAT_TRACER is not set -CONFIG_FTRACE_SYSCALLS=y -CONFIG_TRACER_SNAPSHOT=y -# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set -CONFIG_BRANCH_PROFILE_NONE=y -# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set -# CONFIG_PROFILE_ALL_BRANCHES is not set -# CONFIG_BLK_DEV_IO_TRACE is not set -# CONFIG_UPROBE_EVENTS is not set -CONFIG_FTRACE_MCOUNT_RECORD=y -CONFIG_FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY=y -# CONFIG_SYNTH_EVENTS is not set -# CONFIG_USER_EVENTS is not set -# CONFIG_HIST_TRIGGERS is not set -# CONFIG_TRACE_EVENT_INJECT is not set -# CONFIG_TRACEPOINT_BENCHMARK is not set -# CONFIG_RING_BUFFER_BENCHMARK is not set -# CONFIG_TRACE_EVAL_MAP_FILE is not set -# CONFIG_FTRACE_RECORD_RECURSION is not set -# CONFIG_FTRACE_STARTUP_TEST is not set -# CONFIG_RING_BUFFER_STARTUP_TEST is not set -# CONFIG_RING_BUFFER_VALIDATE_TIME_DELTAS is not set -# CONFIG_PREEMPTIRQ_DELAY_TEST is not set -# CONFIG_RV is not set +# CONFIG_FTRACE is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_SAMPLE_FTRACE_DIRECT=y CONFIG_HAVE_SAMPLE_FTRACE_DIRECT_MULTI=y -CONFIG_STRICT_DEVMEM=y -# CONFIG_IO_STRICT_DEVMEM is not set +# CONFIG_STRICT_DEVMEM is not set # # arm64 Debugging diff --git a/projects/Rockchip/devices/RK3566-ML/options b/projects/Rockchip/devices/RK3566-ML/options index e5822ba9f7..8cbc4f43c8 100644 --- a/projects/Rockchip/devices/RK3566-ML/options +++ b/projects/Rockchip/devices/RK3566-ML/options @@ -70,8 +70,12 @@ # Windowmanager to use (fluxbox / weston / no) WINDOWMANAGER="weston" + # debug tty path + DEBUG_TTY="/dev/ttyS2" + # kernel serial console - EXTRA_CMDLINE="quiet rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20 initcall_blacklist=uvc_init log_buf_len=1M" + #EXTRA_CMDLINE="quiet rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20 initcall_blacklist=uvc_init log_buf_len=1M" + EXTRA_CMDLINE="quiet rootwait console=ttyS2,1500000n8 console=tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20" # additional packages to install # ADDITIONAL_PACKAGES="" @@ -85,7 +89,7 @@ # for a list of additional drivers see packages/linux-drivers # Space separated list is supported, # e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" - # ADDITIONAL_DRIVERS="RTL8821AU RTL8821CU RTL88x2BU" + ADDITIONAL_DRIVERS="RTL8821AU RTL8821CU RTL88x2BU" # build and install driver addons (yes / no) DRIVER_ADDONS_SUPPORT="no" @@ -95,9 +99,6 @@ # Space separated list is supported, DRIVER_ADDONS="" #dvb-latest - # debug tty path - DEBUG_TTY="/dev/ttyFIQ0" - # build and install bluetooth support (yes / no) BLUETOOTH_SUPPORT="yes" From 4a6b2ec636591d9ac8601edf12c8ef7f2b46678a Mon Sep 17 00:00:00 2001 From: fewtarius Date: Tue, 3 Oct 2023 17:18:04 +0000 Subject: [PATCH 018/167] Adds firmware for devices that need it. --- packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat b/packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat index f11d145b4e..8ad5768aab 100644 --- a/packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat +++ b/packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat @@ -20,3 +20,4 @@ ath9k_htc/* brcm/* rtl_bt/* rtlwifi/* +rtw*/* From bb94a2bc914f420c3e0e31e09b4b85da927d2da2 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Tue, 3 Oct 2023 19:07:43 +0000 Subject: [PATCH 019/167] usb working again. --- .../RK3566-ML/linux/linux.aarch64.conf | 46 +++++++++++++------ 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf index 76abd12f68..fac4fa18d1 100644 --- a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf @@ -2402,7 +2402,7 @@ CONFIG_USB_NET_DRIVERS=y # CONFIG_USB_KAWETH is not set # CONFIG_USB_PEGASUS is not set CONFIG_USB_RTL8150=y -CONFIG_USB_RTL8152=m +CONFIG_USB_RTL8152=y # CONFIG_USB_LAN78XX is not set CONFIG_USB_USBNET=y CONFIG_USB_NET_AX8817X=y @@ -2426,7 +2426,7 @@ CONFIG_USB_NET_RNDIS_HOST=y # CONFIG_USB_NET_ZAURUS is not set # CONFIG_USB_NET_CX82310_ETH is not set # CONFIG_USB_NET_KALMIA is not set -# CONFIG_USB_NET_QMI_WWAN is not set +CONFIG_USB_NET_QMI_WWAN=y # CONFIG_USB_HSO is not set # CONFIG_USB_NET_INT51X1 is not set # CONFIG_USB_IPHETH is not set @@ -2434,7 +2434,7 @@ CONFIG_USB_NET_RNDIS_HOST=y # CONFIG_USB_VL600 is not set # CONFIG_USB_NET_CH9200 is not set # CONFIG_USB_NET_AQC111 is not set -CONFIG_USB_RTL8153_ECM=m +CONFIG_USB_RTL8153_ECM=y CONFIG_WLAN=y CONFIG_WLAN_VENDOR_ADMTEK=y # CONFIG_ADM8211 is not set @@ -2595,7 +2595,6 @@ CONFIG_RTL8821AE=m # CONFIG_RTL8192CU is not set CONFIG_RTLWIFI=m CONFIG_RTLWIFI_PCI=m -CONFIG_RTLWIFI_USB=m CONFIG_RTLWIFI_DEBUG=y CONFIG_RTL8192C_COMMON=m CONFIG_RTL8723_COMMON=m @@ -4715,7 +4714,7 @@ CONFIG_DRM_SCHED=y # ARM devices # # CONFIG_DRM_HDLCD is not set -# CONFIG_DRM_MALI_DISPLAY is not set +CONFIG_DRM_MALI_DISPLAY=y # CONFIG_DRM_KOMEDA is not set # end of ARM devices @@ -5017,6 +5016,7 @@ CONFIG_SND_PCM=y CONFIG_SND_PCM_ELD=y CONFIG_SND_PCM_IEC958=y CONFIG_SND_DMAENGINE_PCM=y +CONFIG_SND_HWDEP=y CONFIG_SND_SEQ_DEVICE=y CONFIG_SND_RAWMIDI=y CONFIG_SND_JACK=y @@ -5049,7 +5049,19 @@ CONFIG_SND_SEQ_MIDI=y CONFIG_SND_HDA_PREALLOC_SIZE=64 # CONFIG_SND_SPI is not set -# CONFIG_SND_USB is not set +CONFIG_SND_USB=y +CONFIG_SND_USB_AUDIO=y +# CONFIG_SND_USB_AUDIO_MIDI_V2 is not set +CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=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_USB_POD is not set +# CONFIG_SND_USB_PODHD is not set +# CONFIG_SND_USB_TONEPORT is not set +# CONFIG_SND_USB_VARIAX is not set CONFIG_SND_PCMCIA=y # CONFIG_SND_VXPOCKET is not set # CONFIG_SND_PDAUDIOCF is not set @@ -5511,7 +5523,7 @@ CONFIG_USB_OHCI_HCD_PLATFORM=y # # USB Device Class drivers # -CONFIG_USB_ACM=m +CONFIG_USB_ACM=y # CONFIG_USB_PRINTER is not set CONFIG_USB_WDM=y # CONFIG_USB_TMC is not set @@ -5708,10 +5720,11 @@ CONFIG_U_SERIAL_CONSOLE=y CONFIG_USB_LIBCOMPOSITE=y CONFIG_USB_F_ACM=y CONFIG_USB_U_SERIAL=y -CONFIG_USB_F_SERIAL=y -CONFIG_USB_F_OBEX=y +CONFIG_USB_F_SERIAL=m +CONFIG_USB_F_OBEX=m CONFIG_USB_F_MASS_STORAGE=y CONFIG_USB_F_FS=y +CONFIG_USB_F_UVC=y CONFIG_USB_CONFIGFS=y # CONFIG_USB_CONFIGFS_SERIAL is not set CONFIG_USB_CONFIGFS_ACM=y @@ -5730,7 +5743,7 @@ CONFIG_USB_CONFIGFS_F_FS=y # CONFIG_USB_CONFIGFS_F_MIDI is not set # CONFIG_USB_CONFIGFS_F_MIDI2 is not set # CONFIG_USB_CONFIGFS_F_HID is not set -# CONFIG_USB_CONFIGFS_F_UVC is not set +CONFIG_USB_CONFIGFS_F_UVC=y # CONFIG_USB_CONFIGFS_F_PRINTER is not set # @@ -5740,10 +5753,13 @@ CONFIG_USB_CONFIGFS_F_FS=y # 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=y +CONFIG_USB_GADGETFS=m +CONFIG_USB_FUNCTIONFS=m +# CONFIG_USB_FUNCTIONFS_ETH is not set +# CONFIG_USB_FUNCTIONFS_RNDIS is not set +CONFIG_USB_FUNCTIONFS_GENERIC=y +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_G_SERIAL=m # CONFIG_USB_MIDI_GADGET is not set # CONFIG_USB_G_PRINTER is not set # CONFIG_USB_CDC_COMPOSITE is not set @@ -6981,7 +6997,7 @@ CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY=y CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=y CONFIG_PHY_ROCKCHIP_PCIE=y -# CONFIG_PHY_ROCKCHIP_SNPS_PCIE3 is not set +CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y CONFIG_PHY_ROCKCHIP_TYPEC=y CONFIG_PHY_ROCKCHIP_USB=y # CONFIG_PHY_SAMSUNG_USB2 is not set From 51372fa653eaa9edd0b8e09cab63b4e20ca4df88 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Tue, 3 Oct 2023 19:25:03 +0000 Subject: [PATCH 020/167] RK3566 Mainline needs mainline mesa. --- packages/graphics/mesa/package.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/graphics/mesa/package.mk b/packages/graphics/mesa/package.mk index 8ba1b3f51e..34ba9ff649 100644 --- a/packages/graphics/mesa/package.mk +++ b/packages/graphics/mesa/package.mk @@ -10,13 +10,13 @@ PKG_TOOLCHAIN="meson" PKG_PATCH_DIRS+=" ${DEVICE}" case ${DEVICE} in - RK35*) + RK3588) PKG_VERSION="120202c675749c5ef81ae4c8cdc30019b4de08f4" PKG_SITE="https://gitlab.com/panfork/mesa" PKG_URL="${PKG_SITE}.git" PKG_GIT_CLONE_BRANCH="csf" ;; - RK3399) #Upstream Mesa appears to be broken on the RK3399 build currently + RK3399|RK3566*) #Upstream Mesa appears to be broken on the RK3399 build currently PKG_VERSION="22.3.7" PKG_SHA256="894ce2f4a1c2e76177cdd2284620192d0da3066b243eec2fbb1d7cf37f13042c" PKG_URL="https://mesa.freedesktop.org/archive/mesa-${PKG_VERSION}.tar.xz" From 2fc66d25a775c9c4f4d4f9ef2c93be616e7af071 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Tue, 3 Oct 2023 23:55:37 +0000 Subject: [PATCH 021/167] Update Anbernic model labels. --- .../RK3566-ML/001-fix-model-names.patch | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 projects/Rockchip/packages/linux/patches/RK3566-ML/001-fix-model-names.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/001-fix-model-names.patch b/projects/Rockchip/packages/linux/patches/RK3566-ML/001-fix-model-names.patch new file mode 100644 index 0000000000..aac0fbffaa --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566-ML/001-fix-model-names.patch @@ -0,0 +1,60 @@ +diff -rupN linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353p.dts linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353p.dts +--- linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353p.dts 2023-10-03 23:48:15.144113656 +0000 ++++ linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353p.dts 2023-10-03 23:48:55.102040451 +0000 +@@ -8,7 +8,7 @@ + #include "rk3566-anbernic-rg353x.dtsi" + + / { +- model = "RG353P"; ++ model = "Anbernic RG353P"; + compatible = "anbernic,rg353p", "rockchip,rk3566"; + + aliases { +diff -rupN linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353ps.dts linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353ps.dts +--- linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353ps.dts 2023-10-03 23:48:15.144113656 +0000 ++++ linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353ps.dts 2023-10-03 23:49:18.163158275 +0000 +@@ -8,7 +8,7 @@ + #include "rk3566-anbernic-rg353x.dtsi" + + / { +- model = "RG353PS"; ++ model = "Anbernic RG353PS"; + compatible = "anbernic,rg353ps", "rockchip,rk3566"; + + aliases { +diff -rupN linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353v.dts linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353v.dts +--- linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353v.dts 2023-10-03 23:48:15.144113656 +0000 ++++ linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353v.dts 2023-10-03 23:49:09.254725978 +0000 +@@ -8,7 +8,7 @@ + #include "rk3566-anbernic-rg353x.dtsi" + + / { +- model = "RG353V"; ++ model = "Anbernic RG353V"; + compatible = "anbernic,rg353v", "rockchip,rk3566"; + + aliases { +diff -rupN linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353vs.dts linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353vs.dts +--- linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353vs.dts 2023-10-03 23:48:15.144113656 +0000 ++++ linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353vs.dts 2023-10-03 23:49:30.947779716 +0000 +@@ -8,7 +8,7 @@ + #include "rk3566-anbernic-rg353x.dtsi" + + / { +- model = "RG353VS"; ++ model = "Anbernic RG353VS"; + compatible = "anbernic,rg353vs", "rockchip,rk3566"; + + aliases { +diff -rupN linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg503.dts linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg503.dts +--- linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg503.dts 2023-10-03 23:48:15.144113656 +0000 ++++ linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg503.dts 2023-10-03 23:49:41.912313646 +0000 +@@ -8,7 +8,7 @@ + #include "rk3566-anbernic-rgxx3.dtsi" + + / { +- model = "RG503"; ++ model = "Anbernic RG503"; + compatible = "anbernic,rg503", "rockchip,rk3566"; + + aliases { From d5d90a9a4535e8209ae26263d30bc5e93a67b1ac Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 4 Oct 2023 10:23:27 +0000 Subject: [PATCH 022/167] Kernel config updates. --- projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf index fac4fa18d1..ffebf93ca1 100644 --- a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf @@ -2284,7 +2284,7 @@ CONFIG_AX88796B_PHY=y # CONFIG_QSEMI_PHY is not set # CONFIG_REALTEK_PHY is not set # CONFIG_RENESAS_PHY is not set -# CONFIG_ROCKCHIP_PHY is not set +CONFIG_ROCKCHIP_PHY=y # CONFIG_SMSC_PHY is not set # CONFIG_STE10XP is not set # CONFIG_TERANETICS_PHY is not set From d87d757a14b31946662033b2098417328e474e02 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Thu, 5 Oct 2023 01:34:11 +0000 Subject: [PATCH 023/167] Fix up opengl, thanks to @xerootg and @davidthings. --- .../RK3566-ML/linux/linux.aarch64.conf | 211 +++++++++++++----- 1 file changed, 149 insertions(+), 62 deletions(-) diff --git a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf index ffebf93ca1..f5704f89d0 100644 --- a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf @@ -93,7 +93,9 @@ CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y # BPF subsystem # CONFIG_BPF_SYSCALL=y -# CONFIG_BPF_JIT is not set +CONFIG_BPF_JIT=y +CONFIG_BPF_JIT_ALWAYS_ON=y +CONFIG_BPF_JIT_DEFAULT_ON=y # CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set # CONFIG_BPF_PRELOAD is not set # end of BPF subsystem @@ -192,7 +194,7 @@ CONFIG_NET_NS=y CONFIG_SCHED_AUTOGROUP=y CONFIG_RELAY=y CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="" +CONFIG_INITRAMFS_SOURCE="@INITRAMFS_SOURCE@" CONFIG_INITRAMFS_ROOT_UID=0 CONFIG_INITRAMFS_ROOT_GID=0 CONFIG_RD_GZIP=y @@ -206,9 +208,9 @@ CONFIG_RD_ZSTD=y # CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set # CONFIG_INITRAMFS_COMPRESSION_LZMA is not set # CONFIG_INITRAMFS_COMPRESSION_XZ is not set -# CONFIG_INITRAMFS_COMPRESSION_LZO is not set +CONFIG_INITRAMFS_COMPRESSION_LZO=y # CONFIG_INITRAMFS_COMPRESSION_LZ4 is not set -CONFIG_INITRAMFS_COMPRESSION_ZSTD=y +# CONFIG_INITRAMFS_COMPRESSION_ZSTD is not set # CONFIG_INITRAMFS_COMPRESSION_NONE is not set CONFIG_BOOT_CONFIG=y # CONFIG_BOOT_CONFIG_FORCE is not set @@ -592,6 +594,7 @@ CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y # CONFIG_CPUFREQ_DT=y CONFIG_CPUFREQ_DT_PLATDEV=y +# CONFIG_ARM_SCPI_CPUFREQ is not set # CONFIG_ARM_SCMI_CPUFREQ is not set # end of CPU Frequency scaling # end of CPU Power Management @@ -1450,9 +1453,6 @@ CONFIG_BT_HCIUART_ATH3K=y # CONFIG_BT_HCIBCM4377 is not set # CONFIG_BT_HCIBPA10X is not set CONFIG_BT_HCIBFUSB=m -# CONFIG_BT_HCIDTL1 is not set -# CONFIG_BT_HCIBT3C is not set -# CONFIG_BT_HCIBLUECARD is not set CONFIG_BT_HCIVHCI=m CONFIG_BT_MRVL=m CONFIG_BT_MRVL_SDIO=m @@ -1531,8 +1531,8 @@ CONFIG_PCIEAER=y # CONFIG_PCIEAER_INJECT is not set # CONFIG_PCIE_ECRC is not set CONFIG_PCIEASPM=y -# CONFIG_PCIEASPM_DEFAULT is not set -CONFIG_PCIEASPM_POWERSAVE=y +CONFIG_PCIEASPM_DEFAULT=y +# CONFIG_PCIEASPM_POWERSAVE is not set # CONFIG_PCIEASPM_POWER_SUPERSAVE is not set # CONFIG_PCIEASPM_PERFORMANCE is not set CONFIG_PCIE_PME=y @@ -1540,7 +1540,7 @@ CONFIG_PCIE_PME=y # CONFIG_PCIE_PTM is not set CONFIG_PCI_MSI=y CONFIG_PCI_QUIRKS=y -CONFIG_PCI_DEBUG=y +# CONFIG_PCI_DEBUG is not set # CONFIG_PCI_STUB is not set # CONFIG_PCI_IOV is not set # CONFIG_PCI_PRI is not set @@ -1551,7 +1551,8 @@ CONFIG_PCIE_BUS_DEFAULT=y # CONFIG_PCIE_BUS_SAFE is not set # CONFIG_PCIE_BUS_PERFORMANCE is not set # CONFIG_PCIE_BUS_PEER2PEER is not set -# CONFIG_VGA_ARB is not set +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 # CONFIG_HOTPLUG_PCI is not set # @@ -1607,17 +1608,7 @@ CONFIG_PCIE_ROCKCHIP_DW_HOST=y # end of PCI switch controller drivers # CONFIG_CXL_BUS is not set -CONFIG_PCCARD=y -CONFIG_PCMCIA=y -CONFIG_PCMCIA_LOAD_CIS=y -CONFIG_CARDBUS=y - -# -# PC-card bridges -# -# CONFIG_YENTA is not set -# CONFIG_PD6729 is not set -# CONFIG_I82092 is not set +# CONFIG_PCCARD is not set # CONFIG_RAPIDIO is not set # @@ -1654,6 +1645,7 @@ CONFIG_DEBUG_DEVRES=y # CONFIG_TEST_ASYNC_DRIVER_PROBE is not set CONFIG_GENERIC_CPU_AUTOPROBE=y CONFIG_GENERIC_CPU_VULNERABILITIES=y +CONFIG_SOC_BUS=y CONFIG_REGMAP=y CONFIG_REGMAP_I2C=y CONFIG_REGMAP_SPI=y @@ -1705,13 +1697,14 @@ CONFIG_ARM_SCPI_PROTOCOL=y CONFIG_ARM_SCPI_POWER_DOMAIN=y # CONFIG_FIRMWARE_MEMMAP is not set # CONFIG_FW_CFG_SYSFS is not set -# CONFIG_ARM_FFA_TRANSPORT is not set +CONFIG_ARM_FFA_TRANSPORT=y +CONFIG_ARM_FFA_SMCCC=y # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_ARM_PSCI_FW=y # CONFIG_ARM_PSCI_CHECKER is not set CONFIG_HAVE_ARM_SMCCC=y CONFIG_HAVE_ARM_SMCCC_DISCOVERY=y -# CONFIG_ARM_SMCCC_SOC_ID is not set +CONFIG_ARM_SMCCC_SOC_ID=y # # Tegra firmware driver @@ -1720,7 +1713,109 @@ CONFIG_HAVE_ARM_SMCCC_DISCOVERY=y # end of Firmware Drivers # CONFIG_GNSS is not set -# CONFIG_MTD is not set +CONFIG_MTD=y +# CONFIG_MTD_TESTS is not set + +# +# Partition parsers +# +# CONFIG_MTD_AR7_PARTS is not set +# CONFIG_MTD_CMDLINE_PARTS is not set +CONFIG_MTD_OF_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_REDBOOT_PARTS is not set +# end of Partition parsers + +# +# User Modules And Translation Layers +# +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y + +# +# Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK. +# +# 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 +# CONFIG_MTD_SWAP is not set +# CONFIG_MTD_PARTITIONED_MASTER 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_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# end of RAM/ROM/Flash chip drivers + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_INTEL_VR_NOR is not set +# CONFIG_MTD_PLATRAM is not set +# end of Mapping drivers for chip access + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_MCHP23K256 is not set +# CONFIG_MTD_MCHP48L640 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 +# end of Self-contained MTD device drivers + +# +# NAND +# +# CONFIG_MTD_ONENAND is not set +# CONFIG_MTD_RAW_NAND is not set +# CONFIG_MTD_SPI_NAND is not set + +# +# ECC engine support +# +# CONFIG_MTD_NAND_ECC_SW_HAMMING is not set +# CONFIG_MTD_NAND_ECC_SW_BCH is not set +# CONFIG_MTD_NAND_ECC_MXIC is not set +# end of ECC engine support +# end of NAND + +# +# LPDDR & LPDDR2 PCM memory drivers +# +# CONFIG_MTD_LPDDR is not set +# end of LPDDR & LPDDR2 PCM memory drivers + +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y +# CONFIG_MTD_SPI_NOR_SWP_DISABLE is not set +CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y +# CONFIG_MTD_SPI_NOR_SWP_KEEP is not set +# CONFIG_MTD_UBI is not set +# CONFIG_MTD_HYPERBUS is not set CONFIG_DTC=y CONFIG_OF=y # CONFIG_OF_UNITTEST is not set @@ -1925,7 +2020,6 @@ CONFIG_SCSI_MPT2SAS=m # CONFIG_SCSI_DEBUG is not set # CONFIG_SCSI_PMCRAID is not set # CONFIG_SCSI_PM8001 is not set -# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set # CONFIG_SCSI_DH is not set # end of SCSI device support @@ -2015,7 +2109,6 @@ CONFIG_SATA_SIL=m # CONFIG_PATA_MPIIX is not set # CONFIG_PATA_NS87410 is not set # CONFIG_PATA_OPTI is not set -# CONFIG_PATA_PCMCIA is not set # CONFIG_PATA_OF_PLATFORM is not set # CONFIG_PATA_RZ1000 is not set @@ -2137,8 +2230,6 @@ CONFIG_NET_VENDOR_DAVICOM=y CONFIG_NET_VENDOR_ENGLEDER=y # CONFIG_TSNEP is not set # CONFIG_NET_VENDOR_EZCHIP is not set -CONFIG_NET_VENDOR_FUJITSU=y -# CONFIG_PCMCIA_FMVJ18X is not set CONFIG_NET_VENDOR_FUNGIBLE=y # CONFIG_FUN_ETH is not set CONFIG_NET_VENDOR_GOOGLE=y @@ -2231,8 +2322,6 @@ CONFIG_NET_VENDOR_XILINX=y # CONFIG_XILINX_EMACLITE is not set # CONFIG_XILINX_AXI_EMAC is not set # CONFIG_XILINX_LL_TEMAC is not set -CONFIG_NET_VENDOR_XIRCOM=y -# CONFIG_PCMCIA_XIRC2PS is not set # CONFIG_FDDI is not set # CONFIG_HIPPI is not set CONFIG_PHYLINK=y @@ -2318,11 +2407,9 @@ CONFIG_CAN_CALC_BITTIMING=y # CONFIG_CAN_PEAK_PCIEFD is not set CONFIG_CAN_SJA1000=y # CONFIG_CAN_EMS_PCI is not set -# CONFIG_CAN_EMS_PCMCIA is not set # CONFIG_CAN_F81601 is not set # CONFIG_CAN_KVASER_PCI is not set # CONFIG_CAN_PEAK_PCI is not set -# CONFIG_CAN_PEAK_PCMCIA is not set CONFIG_CAN_PLX_PCI=y # CONFIG_CAN_SJA1000_ISA is not set # CONFIG_CAN_SJA1000_PLATFORM is not set @@ -2510,7 +2597,6 @@ CONFIG_BRCMFMAC_PCIE=y # CONFIG_BRCMDBG is not set CONFIG_WLAN_VENDOR_CISCO=y # CONFIG_AIRO is not set -# CONFIG_AIRO_CS is not set CONFIG_WLAN_VENDOR_INTEL=y # CONFIG_IPW2100 is not set # CONFIG_IPW2200 is not set @@ -2524,7 +2610,6 @@ CONFIG_WLAN_VENDOR_INTERSIL=y CONFIG_WLAN_VENDOR_MARVELL=y CONFIG_LIBERTAS=m CONFIG_LIBERTAS_USB=m -# CONFIG_LIBERTAS_CS is not set # CONFIG_LIBERTAS_SDIO is not set # CONFIG_LIBERTAS_SPI is not set # CONFIG_LIBERTAS_DEBUG is not set @@ -2652,8 +2737,6 @@ CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_WLAN_VENDOR_QUANTENNA=y # CONFIG_QTNFMAC_PCIE is not set -# CONFIG_PCMCIA_RAYCS is not set -# CONFIG_PCMCIA_WL3501 is not set CONFIG_USB_NET_RNDIS_WLAN=m # CONFIG_MAC80211_HWSIM is not set # CONFIG_VIRT_WIFI is not set @@ -2962,7 +3045,6 @@ CONFIG_SERIAL_8250_16550A_VARIANTS=y CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_DMA=y # CONFIG_SERIAL_8250_PCI is not set -# CONFIG_SERIAL_8250_CS is not set CONFIG_SERIAL_8250_NR_UARTS=5 CONFIG_SERIAL_8250_RUNTIME_UARTS=5 CONFIG_SERIAL_8250_EXTENDED=y @@ -3007,7 +3089,6 @@ CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_SERIAL_MCTRL_GPIO=y # CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_IPWIRELESS is not set # CONFIG_N_GSM is not set # CONFIG_NOZOMI is not set # CONFIG_NULL_TTY is not set @@ -3141,7 +3222,7 @@ CONFIG_I2C_RK3X=y CONFIG_SPI=y # CONFIG_SPI_DEBUG is not set CONFIG_SPI_MASTER=y -# CONFIG_SPI_MEM is not set +CONFIG_SPI_MEM=y # # SPI Master Controller Drivers @@ -3151,8 +3232,9 @@ CONFIG_SPI_MASTER=y CONFIG_SPI_BITBANG=y # CONFIG_SPI_CADENCE is not set # CONFIG_SPI_CADENCE_QUADSPI is not set +# CONFIG_SPI_CADENCE_XSPI is not set # CONFIG_SPI_DESIGNWARE is not set -# CONFIG_SPI_GPIO is not set +CONFIG_SPI_GPIO=y # CONFIG_SPI_FSL_SPI is not set # CONFIG_SPI_MICROCHIP_CORE is not set # CONFIG_SPI_MICROCHIP_CORE_QSPI is not set @@ -3164,6 +3246,7 @@ CONFIG_SPI_ROCKCHIP=y CONFIG_SPI_ROCKCHIP_SFC=y # CONFIG_SPI_SC18IS602 is not set # CONFIG_SPI_SIFIVE is not set +# CONFIG_SPI_SN_F_OSPI is not set # CONFIG_SPI_MXIC is not set # CONFIG_SPI_THUNDERX is not set # CONFIG_SPI_XCOMM is not set @@ -3174,7 +3257,7 @@ CONFIG_SPI_ROCKCHIP_SFC=y # # SPI Multiplexer support # -# CONFIG_SPI_MUX is not set +CONFIG_SPI_MUX=y # # SPI Protocol Masters @@ -3213,6 +3296,7 @@ CONFIG_PTP_1588_CLOCK_KVM=y # CONFIG_PTP_1588_CLOCK_IDT82P33 is not set # CONFIG_PTP_1588_CLOCK_IDTCM is not set # CONFIG_PTP_1588_CLOCK_MOCK is not set +# CONFIG_PTP_1588_CLOCK_OCP is not set # end of PTP clock support CONFIG_PINCTRL=y @@ -3374,7 +3458,7 @@ CONFIG_CHARGER_BQ24735=y # CONFIG_CHARGER_BQ25890 is not set # CONFIG_CHARGER_BQ25980 is not set # CONFIG_CHARGER_BQ256XX is not set -# CONFIG_CHARGER_RK817 is not set +CONFIG_CHARGER_RK817=y # CONFIG_CHARGER_SMB347 is not set # CONFIG_BATTERY_GAUGE_LTC2941 is not set # CONFIG_BATTERY_GOLDFISH is not set @@ -3623,8 +3707,6 @@ CONFIG_SSB_BLOCKIO=y CONFIG_SSB_PCIHOST_POSSIBLE=y CONFIG_SSB_PCIHOST=y CONFIG_SSB_B43_PCI_BRIDGE=y -CONFIG_SSB_PCMCIAHOST_POSSIBLE=y -# CONFIG_SSB_PCMCIAHOST is not set CONFIG_SSB_SDIOHOST_POSSIBLE=y # CONFIG_SSB_SDIOHOST is not set CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y @@ -3772,8 +3854,8 @@ CONFIG_MFD_TPS6586X=y CONFIG_REGULATOR=y CONFIG_REGULATOR_DEBUG=y CONFIG_REGULATOR_FIXED_VOLTAGE=y -# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set -# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set +CONFIG_REGULATOR_VIRTUAL_CONSUMER=y +CONFIG_REGULATOR_USERSPACE_CONSUMER=y # CONFIG_REGULATOR_88PG86X is not set CONFIG_REGULATOR_ACT8865=y # CONFIG_REGULATOR_AD5398 is not set @@ -4953,7 +5035,7 @@ CONFIG_FB=y # CONFIG_FB_SM712 is not set CONFIG_FB_CORE=y CONFIG_FB_NOTIFY=y -# CONFIG_FIRMWARE_EDID is not set +CONFIG_FIRMWARE_EDID=y CONFIG_FB_DEVICE=y CONFIG_FB_SYS_FILLRECT=y CONFIG_FB_SYS_COPYAREA=y @@ -5062,9 +5144,6 @@ CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y # CONFIG_SND_USB_PODHD is not set # CONFIG_SND_USB_TONEPORT is not set # CONFIG_SND_USB_VARIAX is not set -CONFIG_SND_PCMCIA=y -# CONFIG_SND_VXPOCKET is not set -# CONFIG_SND_PDAUDIOCF is not set CONFIG_SND_SOC=y CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y # CONFIG_SND_SOC_ADI is not set @@ -5825,7 +5904,6 @@ CONFIG_MMC_SDHCI_PLTFM=y # CONFIG_MMC_SDHCI_MILBEAUT is not set # CONFIG_MMC_TIFM_SD is not set # CONFIG_MMC_SPI is not set -# CONFIG_MMC_SDRICOH_CS is not set # CONFIG_MMC_CB710 is not set # CONFIG_MMC_VIA_SDMMC is not set CONFIG_MMC_DW=y @@ -5915,6 +5993,7 @@ CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGER_TIMER=y CONFIG_LEDS_TRIGGER_ONESHOT=y CONFIG_LEDS_TRIGGER_DISK=y +# CONFIG_LEDS_TRIGGER_MTD is not set CONFIG_LEDS_TRIGGER_HEARTBEAT=y CONFIG_LEDS_TRIGGER_BACKLIGHT=y CONFIG_LEDS_TRIGGER_CPU=y @@ -6090,12 +6169,13 @@ CONFIG_PL330_DMA=y # CONFIG_SYNC_FILE=y # CONFIG_SW_SYNC is not set -# CONFIG_UDMABUF is not set +CONFIG_UDMABUF=y # CONFIG_DMABUF_MOVE_NOTIFY is not set # CONFIG_DMABUF_DEBUG is not set # CONFIG_DMABUF_SELFTESTS is not set -# CONFIG_DMABUF_HEAPS is not set +CONFIG_DMABUF_HEAPS=y # CONFIG_DMABUF_SYSFS_STATS is not set +CONFIG_DMABUF_HEAPS_SYSTEM=y # end of DMABUF options # CONFIG_UIO is not set @@ -6166,7 +6246,11 @@ CONFIG_R8712U=m # end of IIO staging drivers # CONFIG_FB_SM750 is not set -# CONFIG_STAGING_MEDIA is not set +CONFIG_STAGING_MEDIA=y +# CONFIG_DVB_AV7110 is not set +# CONFIG_VIDEO_MAX96712 is not set +CONFIG_VIDEO_ROCKCHIP_VDEC=y +# CONFIG_STAGING_MEDIA_DEPRECATED is not set # CONFIG_STAGING_BOARD is not set # CONFIG_LTE_GDM724X is not set # CONFIG_FB_TFT is not set @@ -6196,8 +6280,8 @@ CONFIG_COMMON_CLK=y # CONFIG_LMK04832 is not set # CONFIG_COMMON_CLK_MAX9485 is not set CONFIG_COMMON_CLK_RK808=y -# CONFIG_COMMON_CLK_SCMI is not set -# CONFIG_COMMON_CLK_SCPI is not set +CONFIG_COMMON_CLK_SCMI=y +CONFIG_COMMON_CLK_SCPI=y # CONFIG_COMMON_CLK_SI5341 is not set # CONFIG_COMMON_CLK_SI5351 is not set # CONFIG_COMMON_CLK_SI514 is not set @@ -6208,13 +6292,13 @@ CONFIG_COMMON_CLK_RK808=y # CONFIG_COMMON_CLK_CS2000_CP is not set # CONFIG_COMMON_CLK_AXI_CLKGEN is not set CONFIG_COMMON_CLK_XGENE=y -# CONFIG_COMMON_CLK_PWM is not set +CONFIG_COMMON_CLK_PWM=y # CONFIG_COMMON_CLK_RS9_PCIE is not set # CONFIG_COMMON_CLK_SI521XX is not set # CONFIG_COMMON_CLK_VC3 is not set # CONFIG_COMMON_CLK_VC5 is not set # CONFIG_COMMON_CLK_VC7 is not set -# CONFIG_COMMON_CLK_FIXED_MMIO is not set +CONFIG_COMMON_CLK_FIXED_MMIO=y CONFIG_COMMON_CLK_ROCKCHIP=y CONFIG_CLK_PX30=y # CONFIG_CLK_RK3308 is not set @@ -6386,13 +6470,13 @@ CONFIG_IIO_BUFFER=y CONFIG_IIO_BUFFER_CB=y # CONFIG_IIO_BUFFER_DMA is not set # CONFIG_IIO_BUFFER_DMAENGINE is not set -# CONFIG_IIO_BUFFER_HW_CONSUMER is not set +CONFIG_IIO_BUFFER_HW_CONSUMER=y CONFIG_IIO_KFIFO_BUF=y CONFIG_IIO_TRIGGERED_BUFFER=y CONFIG_IIO_CONFIGFS=y CONFIG_IIO_TRIGGER=y CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 -# CONFIG_IIO_SW_DEVICE is not set +CONFIG_IIO_SW_DEVICE=y CONFIG_IIO_SW_TRIGGER=y CONFIG_IIO_TRIGGERED_EVENT=y @@ -6629,6 +6713,7 @@ CONFIG_ROCKCHIP_SARADC=y # # IIO dummy driver # +# CONFIG_IIO_SIMPLE_DUMMY is not set # end of IIO dummy driver # @@ -7046,6 +7131,7 @@ CONFIG_NVMEM_SYSFS=y # CONFIG_NVMEM_RMEM is not set # CONFIG_NVMEM_ROCKCHIP_EFUSE is not set # CONFIG_NVMEM_ROCKCHIP_OTP is not set +# CONFIG_NVMEM_U_BOOT_ENV is not set # # HW tracing support @@ -7161,7 +7247,7 @@ CONFIG_ZISOFS=y # DOS/FAT/EXFAT/NT Filesystems # CONFIG_FAT_FS=y -# CONFIG_MSDOS_FS is not set +CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y CONFIG_FAT_DEFAULT_CODEPAGE=437 CONFIG_FAT_DEFAULT_IOCHARSET="ascii" @@ -7203,6 +7289,7 @@ CONFIG_MISC_FILESYSTEMS=y # 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_CRAMFS is not set CONFIG_SQUASHFS=y CONFIG_SQUASHFS_FILE_CACHE=y From c87f39075717bc1ed5696f2ce4fcaf69a59a9e64 Mon Sep 17 00:00:00 2001 From: David Williams Date: Wed, 18 Oct 2023 18:49:42 -0700 Subject: [PATCH 024/167] - kernel config to stop GPIO messages - kernel config to enable FAT file access - autostart unbind wireless mod and rebind - helpful kernel commands - log-level, uart output, nopkmute, console -> screen --- packages/jelos/autostart/001-wifi | 2 ++ packages/network/connman/package.mk | 6 ++++-- .../Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf | 4 ++-- projects/Rockchip/devices/RK3566-ML/options | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) create mode 100755 packages/jelos/autostart/001-wifi diff --git a/packages/jelos/autostart/001-wifi b/packages/jelos/autostart/001-wifi new file mode 100755 index 0000000000..a61b8c0bca --- /dev/null +++ b/packages/jelos/autostart/001-wifi @@ -0,0 +1,2 @@ +echo "mmc3:0001:1" > /sys/bus/sdio/drivers/rtw_8821cs/unbind +echo "mmc3:0001:1" > /sys/bus/sdio/drivers/rtw_8821cs/bind \ No newline at end of file diff --git a/packages/network/connman/package.mk b/packages/network/connman/package.mk index 7a8a7a0f15..f036b78c11 100644 --- a/packages/network/connman/package.mk +++ b/packages/network/connman/package.mk @@ -49,7 +49,7 @@ PKG_CONFIGURE_OPTS_TARGET="WPASUPPLICANT=/usr/bin/wpa_supplicant \ if [ "$WIREGUARD_SUPPORT" = "yes" ]; then PKG_CONFIGURE_OPTS_TARGET+=" --enable-wireguard=builtin" else - PKG_CONGIGURE_OPTS_TARGET+=" --disable-wireguard" + PKG_CONFIGURE_OPTS_TARGET+=" --disable-wireguard" fi PKG_MAKE_OPTS_TARGET="storagedir=/storage/.cache/connman \ @@ -77,13 +77,15 @@ post_makeinstall_target() { -e "s|^# TetheringTechnologies.*|TetheringTechnologies = wifi|g" \ -e "s|^# AllowHostnameUpdates.*|AllowHostnameUpdates = false|g" \ -e "s|^# PersistentTetheringMode.*|PersistentTetheringMode = true|g" \ - -e "s|^# SingleConnectedTechnology.*|SingleConnectedTechnology = true|g" \ -e "s|^# NetworkInterfaceBlacklist = vmnet,vboxnet,virbr,ifb|NetworkInterfaceBlacklist = vmnet,vboxnet,virbr,ifb,docker,veth,zt,p2p|g" mkdir -p ${INSTALL}/usr/share/connman/ cp ${PKG_DIR}/config/settings ${INSTALL}/usr/share/connman/ } +# Bounced from above +# -e "s|^# SingleConnectedTechnology.*|SingleConnectedTechnology = true|g" \ + post_install() { add_user system x 430 430 "service" "/var/run/connman" "/bin/sh" add_group system 430 diff --git a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf index f5704f89d0..695ec83392 100644 --- a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf @@ -3325,7 +3325,7 @@ CONFIG_GPIOLIB=y CONFIG_GPIOLIB_FASTPATH_LIMIT=512 CONFIG_OF_GPIO=y CONFIG_GPIOLIB_IRQCHIP=y -CONFIG_DEBUG_GPIO=y +# CONFIG_DEBUG_GPIO is not set CONFIG_GPIO_SYSFS=y CONFIG_GPIO_CDEV=y CONFIG_GPIO_CDEV_V1=y @@ -7211,7 +7211,7 @@ CONFIG_FSNOTIFY=y CONFIG_INOTIFY_USER=y # CONFIG_FANOTIFY is not set # CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set +CONFIG_AUTOFS_FS=y CONFIG_FUSE_FS=y # CONFIG_CUSE is not set # CONFIG_VIRTIO_FS is not set diff --git a/projects/Rockchip/devices/RK3566-ML/options b/projects/Rockchip/devices/RK3566-ML/options index 8cbc4f43c8..a33fb8c456 100644 --- a/projects/Rockchip/devices/RK3566-ML/options +++ b/projects/Rockchip/devices/RK3566-ML/options @@ -75,7 +75,7 @@ # kernel serial console #EXTRA_CMDLINE="quiet rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20 initcall_blacklist=uvc_init log_buf_len=1M" - EXTRA_CMDLINE="quiet rootwait console=ttyS2,1500000n8 console=tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20" + EXTRA_CMDLINE="rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty1 ssh consoleblank=0 systemd.show_status=0 loglevel=8 panic=20 nopkmute" # additional packages to install # ADDITIONAL_PACKAGES="" From 83f704328617af42789b543f82ad5dcf95d66781 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Thu, 2 Nov 2023 14:39:45 +0000 Subject: [PATCH 025/167] Update the ML branch to the latest kernel and u-boot, link config directories so they're found during the build. --- packages/emulators/libretro/flycast2021-lr/patches/RK3566-ML | 1 + packages/emulators/standalone/dolphin-sa/config/RK3566-ML | 1 + packages/emulators/standalone/drastic-sa/config/RK3566-ML | 1 + packages/emulators/standalone/duckstation-sa/config/RK3566-ML | 1 + .../emulators/standalone/duckstation-sa/config/RK3566/RK3566 | 1 + packages/emulators/standalone/flycast-sa/config/RK3566-ML | 1 + .../mupen64plus-sa/mupen64plus-sa-core/config/RK3566-ML | 1 + .../mupen64plus-sa/mupen64plus-sa-input-sdl/config/RK3566-ML | 1 + packages/emulators/standalone/ppsspp-sa/sources/RK3566-ML | 1 + .../emulators/standalone/retroarch/sources/RK3566-ML/RK3566 | 1 + packages/graphics/SDL2/patches/RK3566-ML | 1 + packages/network/wireguard-linux-compat/patches/RK3566-ML | 1 + packages/sysutils/system-utils/sources/devices/RK3566-ML | 1 + projects/Rockchip/packages/linux/package.mk | 2 +- projects/Rockchip/packages/u-boot/package.mk | 2 +- 15 files changed, 15 insertions(+), 2 deletions(-) create mode 120000 packages/emulators/libretro/flycast2021-lr/patches/RK3566-ML create mode 120000 packages/emulators/standalone/dolphin-sa/config/RK3566-ML create mode 120000 packages/emulators/standalone/drastic-sa/config/RK3566-ML create mode 120000 packages/emulators/standalone/duckstation-sa/config/RK3566-ML create mode 120000 packages/emulators/standalone/duckstation-sa/config/RK3566/RK3566 create mode 120000 packages/emulators/standalone/flycast-sa/config/RK3566-ML create mode 120000 packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-core/config/RK3566-ML create mode 120000 packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-input-sdl/config/RK3566-ML create mode 120000 packages/emulators/standalone/ppsspp-sa/sources/RK3566-ML create mode 120000 packages/emulators/standalone/retroarch/sources/RK3566-ML/RK3566 create mode 120000 packages/graphics/SDL2/patches/RK3566-ML create mode 120000 packages/network/wireguard-linux-compat/patches/RK3566-ML create mode 120000 packages/sysutils/system-utils/sources/devices/RK3566-ML diff --git a/packages/emulators/libretro/flycast2021-lr/patches/RK3566-ML b/packages/emulators/libretro/flycast2021-lr/patches/RK3566-ML new file mode 120000 index 0000000000..9207b5754b --- /dev/null +++ b/packages/emulators/libretro/flycast2021-lr/patches/RK3566-ML @@ -0,0 +1 @@ +RK3566 \ No newline at end of file diff --git a/packages/emulators/standalone/dolphin-sa/config/RK3566-ML b/packages/emulators/standalone/dolphin-sa/config/RK3566-ML new file mode 120000 index 0000000000..9207b5754b --- /dev/null +++ b/packages/emulators/standalone/dolphin-sa/config/RK3566-ML @@ -0,0 +1 @@ +RK3566 \ No newline at end of file diff --git a/packages/emulators/standalone/drastic-sa/config/RK3566-ML b/packages/emulators/standalone/drastic-sa/config/RK3566-ML new file mode 120000 index 0000000000..9207b5754b --- /dev/null +++ b/packages/emulators/standalone/drastic-sa/config/RK3566-ML @@ -0,0 +1 @@ +RK3566 \ No newline at end of file diff --git a/packages/emulators/standalone/duckstation-sa/config/RK3566-ML b/packages/emulators/standalone/duckstation-sa/config/RK3566-ML new file mode 120000 index 0000000000..9207b5754b --- /dev/null +++ b/packages/emulators/standalone/duckstation-sa/config/RK3566-ML @@ -0,0 +1 @@ +RK3566 \ No newline at end of file diff --git a/packages/emulators/standalone/duckstation-sa/config/RK3566/RK3566 b/packages/emulators/standalone/duckstation-sa/config/RK3566/RK3566 new file mode 120000 index 0000000000..9207b5754b --- /dev/null +++ b/packages/emulators/standalone/duckstation-sa/config/RK3566/RK3566 @@ -0,0 +1 @@ +RK3566 \ No newline at end of file diff --git a/packages/emulators/standalone/flycast-sa/config/RK3566-ML b/packages/emulators/standalone/flycast-sa/config/RK3566-ML new file mode 120000 index 0000000000..9207b5754b --- /dev/null +++ b/packages/emulators/standalone/flycast-sa/config/RK3566-ML @@ -0,0 +1 @@ +RK3566 \ No newline at end of file diff --git a/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-core/config/RK3566-ML b/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-core/config/RK3566-ML new file mode 120000 index 0000000000..9207b5754b --- /dev/null +++ b/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-core/config/RK3566-ML @@ -0,0 +1 @@ +RK3566 \ No newline at end of file diff --git a/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-input-sdl/config/RK3566-ML b/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-input-sdl/config/RK3566-ML new file mode 120000 index 0000000000..9207b5754b --- /dev/null +++ b/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-input-sdl/config/RK3566-ML @@ -0,0 +1 @@ +RK3566 \ No newline at end of file diff --git a/packages/emulators/standalone/ppsspp-sa/sources/RK3566-ML b/packages/emulators/standalone/ppsspp-sa/sources/RK3566-ML new file mode 120000 index 0000000000..9207b5754b --- /dev/null +++ b/packages/emulators/standalone/ppsspp-sa/sources/RK3566-ML @@ -0,0 +1 @@ +RK3566 \ No newline at end of file diff --git a/packages/emulators/standalone/retroarch/sources/RK3566-ML/RK3566 b/packages/emulators/standalone/retroarch/sources/RK3566-ML/RK3566 new file mode 120000 index 0000000000..9207b5754b --- /dev/null +++ b/packages/emulators/standalone/retroarch/sources/RK3566-ML/RK3566 @@ -0,0 +1 @@ +RK3566 \ No newline at end of file diff --git a/packages/graphics/SDL2/patches/RK3566-ML b/packages/graphics/SDL2/patches/RK3566-ML new file mode 120000 index 0000000000..9207b5754b --- /dev/null +++ b/packages/graphics/SDL2/patches/RK3566-ML @@ -0,0 +1 @@ +RK3566 \ No newline at end of file diff --git a/packages/network/wireguard-linux-compat/patches/RK3566-ML b/packages/network/wireguard-linux-compat/patches/RK3566-ML new file mode 120000 index 0000000000..9207b5754b --- /dev/null +++ b/packages/network/wireguard-linux-compat/patches/RK3566-ML @@ -0,0 +1 @@ +RK3566 \ No newline at end of file diff --git a/packages/sysutils/system-utils/sources/devices/RK3566-ML b/packages/sysutils/system-utils/sources/devices/RK3566-ML new file mode 120000 index 0000000000..9207b5754b --- /dev/null +++ b/packages/sysutils/system-utils/sources/devices/RK3566-ML @@ -0,0 +1 @@ +RK3566 \ No newline at end of file diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index 002ff7e84f..27861cd154 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -30,7 +30,7 @@ case ${DEVICE} in PKG_GIT_CLONE_BRANCH="main" ;; *ML) - PKG_VERSION="6.6-rc3" + PKG_VERSION="6.6" PKG_URL="https://git.kernel.org/torvalds/t/${PKG_NAME}-${PKG_VERSION}.tar.gz" ;; *X55) diff --git a/projects/Rockchip/packages/u-boot/package.mk b/projects/Rockchip/packages/u-boot/package.mk index 55700b53cd..ad3cb68ebe 100644 --- a/projects/Rockchip/packages/u-boot/package.mk +++ b/projects/Rockchip/packages/u-boot/package.mk @@ -20,7 +20,7 @@ case ${DEVICE} in ;; *ML) PKG_URL="https://github.com/u-boot/u-boot.git" - PKG_VERSION="976fb2f" + PKG_VERSION="a803f87" ;; RK356*) PKG_URL="${PKG_SITE}/rk356x-uboot.git" From d8b191851dfc1b93daaf5e86a579b8dc79f168c7 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Thu, 2 Nov 2023 15:07:27 +0000 Subject: [PATCH 026/167] Works correctly now. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5fc8b0c8c1..2a2a692713 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ BUILD_DIRS=build.* --include $(pwd)/config/options +-include $(HOME)/.JELOS/options all: world From 5c08a769364926bbca4e437160190fb7b69a4315 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Thu, 2 Nov 2023 17:40:29 +0000 Subject: [PATCH 027/167] Mainline 3566 full build. --- .../libretro/flycast2021-lr/patches/RK3566-ML | 1 - .../patches/RK3566-ML/000-platform.patch | 43 +++++++++++++++++++ packages/virtual/emulators/package.mk | 4 +- 3 files changed, 46 insertions(+), 2 deletions(-) delete mode 120000 packages/emulators/libretro/flycast2021-lr/patches/RK3566-ML create mode 100644 packages/emulators/libretro/flycast2021-lr/patches/RK3566-ML/000-platform.patch diff --git a/packages/emulators/libretro/flycast2021-lr/patches/RK3566-ML b/packages/emulators/libretro/flycast2021-lr/patches/RK3566-ML deleted file mode 120000 index 9207b5754b..0000000000 --- a/packages/emulators/libretro/flycast2021-lr/patches/RK3566-ML +++ /dev/null @@ -1 +0,0 @@ -RK3566 \ No newline at end of file diff --git a/packages/emulators/libretro/flycast2021-lr/patches/RK3566-ML/000-platform.patch b/packages/emulators/libretro/flycast2021-lr/patches/RK3566-ML/000-platform.patch new file mode 100644 index 0000000000..0c11e23f03 --- /dev/null +++ b/packages/emulators/libretro/flycast2021-lr/patches/RK3566-ML/000-platform.patch @@ -0,0 +1,43 @@ +diff -rupN flycast.orig/Makefile flycast/Makefile +--- flycast.orig/Makefile 2022-06-18 13:29:52.675787687 -0400 ++++ flycast/Makefile 2022-06-18 13:53:23.564624927 -0400 +@@ -403,26 +403,30 @@ else ifeq ($(platform), arm64_cortex_a53 + + ####################################### + +-# ARM64 SM1 Odroid C4 +-else ifeq ($(platform), odroidc4) ++# ARM64 RK3566 ++else ifeq ($(platform), RK3566-ML) + EXT ?= so + TARGET := $(TARGET_NAME)_libretro.$(EXT) + SHARED += -shared -Wl,--version-script=link.T +- LDFLAGS += -Wl,--no-undefined + fpic = -fPIC + LIBS += -lrt + ARM_FLOAT_ABI_HARD = 0 + FORCE_GLES = 1 + SINGLE_PREC_FLAGS = 1 +- CPUFLAGS += -DHOST_CPU=0x20000006 -DTARGET_LINUX_ARMv8 -frename-registers +- CFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 $(CPUFLAGS) +- CXXFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 $(CPUFLAGS) +- ASFLAGS += $(CFLAGS) -c -frename-registers -fno-strict-aliasing -ffast-math -ftree-vectorize ++ HAVE_LTCG = 0 ++ HAVE_OPENMP = 0 ++ CFLAGS += -Ofast \ ++ -fuse-linker-plugin \ ++ -fno-stack-protector -fno-ident -fomit-frame-pointer \ ++ -fmerge-all-constants -ffast-math -funroll-all-loops \ ++ -mcpu=cortex-a55 -mtune=cortex-a55 ++ CXXFLAGS += $(CFLAGS) ++ LDFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 -Ofast -flto -fuse-linker-plugin + PLATFORM_EXT := unix ++ CORE_DEFINES += -DLOW_END -DLOW_RES + WITH_DYNAREC=arm64 ++ PLATFORM_EXT := unix + HAVE_GENERIC_JIT = 0 +- HAVE_VULKAN = 0 +- HAVE_LTCG = 0 + + ####################################### + diff --git a/packages/virtual/emulators/package.mk b/packages/virtual/emulators/package.mk index ade80fbd92..915df667d6 100644 --- a/packages/virtual/emulators/package.mk +++ b/packages/virtual/emulators/package.mk @@ -17,7 +17,7 @@ PKG_RETROARCH="core-info libretro-database retroarch retroarch-assets retroarch- LIBRETRO_CORES="81-lr a5200-lr arduous-lr atari800-lr beetle-gba-lr beetle-lynx-lr beetle-ngp-lr beetle-pce-lr beetle-pce-fast-lr \ beetle-pcfx-lr bsnes-lr bsnes-mercury-performance-lr beetle-supafaust-lr beetle-supergrafx-lr \ beetle-vb-lr beetle-wswan-lr beetle-saturn-lr bluemsx-lr cannonball-lr cap32-lr crocods-lr daphne-lr \ - dinothawr-lr dosbox-svn-lr dosbox-pure-lr duckstation-lr easyrpg-lr fake08-lr fbalpha2012-lr \ + dinothawr-lr dosbox-pure-lr duckstation-lr easyrpg-lr fake08-lr fbalpha2012-lr \ fbalpha2019-lr fbneo-lr fceumm-lr flycast2021-lr fmsx-lr freechaf-lr freeintv-lr freej2me-lr fuse-lr \ gambatte-lr gearboy-lr gearcoleco-lr gearsystem-lr genesis-plus-gx-lr genesis-plus-gx-wide-lr gme-lr \ gw-lr handy-lr hatari-lr idtech-lr mame2000-lr mame2003-plus-lr mame2010-lr mame2015-lr melonds-lr meowpc98-lr \ @@ -28,6 +28,8 @@ LIBRETRO_CORES="81-lr a5200-lr arduous-lr atari800-lr beetle-gba-lr beetle-lynx- stella-lr stella-2014-lr swanstation-lr tic80-lr tgbdual-lr uzem-lr vba-next-lr minivmac-lr \ vbam-lr vecx-lr vice-lr yabasanshiro-lr virtualjaguar-lr xmil-lr xrick-lr" +### Disabled 3566-ML: dosbox-svn-lr + ### Emulators or cores for specific devices case "${DEVICE}" in AMD64) From 3773c56fa853991319399b99c92469ae8f2c2c3e Mon Sep 17 00:00:00 2001 From: fewtarius Date: Mon, 13 Nov 2023 13:34:09 +0000 Subject: [PATCH 028/167] Drop alsa ucm mask from rk3566. --- packages/audio/alsa-lib/package.mk | 11 +---------- packages/audio/alsa-utils/package.mk | 6 +----- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/packages/audio/alsa-lib/package.mk b/packages/audio/alsa-lib/package.mk index 2c0b24dc38..f308f6d519 100644 --- a/packages/audio/alsa-lib/package.mk +++ b/packages/audio/alsa-lib/package.mk @@ -7,20 +7,11 @@ PKG_VERSION="1.2.9" PKG_LICENSE="GPL" PKG_SITE="http://www.alsa-project.org/" PKG_URL="https://www.alsa-project.org/files/pub/lib/alsa-lib-${PKG_VERSION}.tar.bz2" -PKG_DEPENDS_TARGET="toolchain alsa-topology-conf" +PKG_DEPENDS_TARGET="toolchain alsa-ucm-conf alsa-topology-conf" PKG_LONGDESC="ALSA (Advanced Linux Sound Architecture) is the next generation Linux Sound API." PKG_TOOLCHAIN="autotools" PKG_BUILD_FLAGS="+pic" -case ${DEVICE} in - RK356*) - PKG_DEPENDS_TARGET+="" - ;; - *) - PKG_DEPENDS_TARGET+=" alsa-ucm-conf" - ;; -esac - if build_with_debug; then PKG_ALSA_DEBUG=--with-debug else diff --git a/packages/audio/alsa-utils/package.mk b/packages/audio/alsa-utils/package.mk index 02d235ccd6..288d73ea88 100644 --- a/packages/audio/alsa-utils/package.mk +++ b/packages/audio/alsa-utils/package.mk @@ -8,7 +8,7 @@ PKG_VERSION="1.2.9" PKG_LICENSE="GPL" PKG_SITE="http://www.alsa-project.org/" PKG_URL="https://www.alsa-project.org/files/pub/utils/alsa-utils-${PKG_VERSION}.tar.bz2" -PKG_DEPENDS_TARGET="toolchain alsa-lib ncurses systemd" +PKG_DEPENDS_TARGET="toolchain alsa-lib ncurses systemd alsa-ucm-conf" PKG_LONGDESC="This package includes the utilities for ALSA, like alsamixer, aplay, arecord, alsactl, iecset and speaker-test." PKG_TOOLCHAIN="autotools" @@ -20,10 +20,6 @@ PKG_CONFIGURE_OPTS_TARGET="--disable-alsaconf \ --disable-nls \ --disable-rst2man \ --disable-xmlto" -if [[ ! "${DEVICE}" =~ RK356 ]] -then - PKG_DEPENDS_TARGET+=" alsa-ucm-conf" -fi post_makeinstall_target() { rm -rf ${INSTALL}/lib ${INSTALL}/var From f2004d702d10080a55e1d491463d00daa7b3642e Mon Sep 17 00:00:00 2001 From: ab0tj Date: Wed, 22 Nov 2023 21:05:38 +0000 Subject: [PATCH 029/167] Rename rk817-battery to battery to fic ES battery indicator --- .../002-rk817-power-driver-names.patch | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 projects/Rockchip/packages/linux/patches/RK3566-ML/002-rk817-power-driver-names.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/002-rk817-power-driver-names.patch b/projects/Rockchip/packages/linux/patches/RK3566-ML/002-rk817-power-driver-names.patch new file mode 100644 index 0000000000..265df75ad8 --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566-ML/002-rk817-power-driver-names.patch @@ -0,0 +1,21 @@ +diff -rupN linux-6.6-orig/drivers/power/supply/rk817_charger.c linux-6.6/drivers/power/supply/rk817_charger.c +--- linux-6.6-orig/drivers/power/supply/rk817_charger.c 2023-10-30 02:31:08.000000000 +0000 ++++ linux-6.6/drivers/power/supply/rk817_charger.c 2023-11-22 19:43:15.957223087 +0000 +@@ -679,7 +679,7 @@ static enum power_supply_usb_type rk817_ + }; + + static const struct power_supply_desc rk817_bat_desc = { +- .name = "rk817-battery", ++ .name = "battery", + .type = POWER_SUPPLY_TYPE_BATTERY, + .properties = rk817_bat_props, + .num_properties = ARRAY_SIZE(rk817_bat_props), +@@ -687,7 +687,7 @@ static const struct power_supply_desc rk + }; + + static const struct power_supply_desc rk817_chg_desc = { +- .name = "rk817-charger", ++ .name = "charger", + .type = POWER_SUPPLY_TYPE_USB, + .usb_types = rk817_usb_type, + .num_usb_types = ARRAY_SIZE(rk817_usb_type), From 5fb45d5fb06b760042cb3e78e9d9f1a5f4f27d1f Mon Sep 17 00:00:00 2001 From: mason Date: Thu, 23 Nov 2023 16:06:00 +0000 Subject: [PATCH 030/167] Start work adding rinputer2 --- packages/apps/jelos-gamepad/package.mk | 19 +++++++ .../patches/000-jelos-gamepad.patch | 56 +++++++++++++++++++ .../system.d/jelos_gamepad.service | 9 +++ .../config/gamecontrollerdb.txt | 1 + .../gamepads/JELOS Gamepad.cfg | 29 ++++++++++ .../config/common/es_input.cfg | 27 +++++++++ projects/Rockchip/devices/RK3566-ML/options | 2 +- 7 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 packages/apps/jelos-gamepad/package.mk create mode 100644 packages/apps/jelos-gamepad/patches/000-jelos-gamepad.patch create mode 100644 packages/apps/jelos-gamepad/system.d/jelos_gamepad.service create mode 100644 packages/emulators/tools/retroarch-joypads/gamepads/JELOS Gamepad.cfg diff --git a/packages/apps/jelos-gamepad/package.mk b/packages/apps/jelos-gamepad/package.mk new file mode 100644 index 0000000000..c928235b91 --- /dev/null +++ b/packages/apps/jelos-gamepad/package.mk @@ -0,0 +1,19 @@ +PKG_NAME="jelos-gamepad" +PKG_VERSION="b1fc0fb69047011d99b54029be500280d33a8027" +PKG_ARCH="aarch64" +PKG_LICENSE="GPLv3" +PKG_SITE="https://github.com/R-ARM/rinputer2" +PKG_URL="$PKG_SITE.git" +PKG_DEPENDS_TARGET="toolchain" +PKG_TOOLCHAIN="make" +GET_HANDLER_SUPPORT="git" + +makeinstall_target() { + mkdir -p $INSTALL/usr/bin + cp rinputer2 ${INSTALL}/usr/bin/jelos_gamepad + chmod 0755 ${INSTALL}/usr/bin/jelos_gamepad +} + +post_install() { + enable_service jelos_gamepad.service +} diff --git a/packages/apps/jelos-gamepad/patches/000-jelos-gamepad.patch b/packages/apps/jelos-gamepad/patches/000-jelos-gamepad.patch new file mode 100644 index 0000000000..30f9cea1e9 --- /dev/null +++ b/packages/apps/jelos-gamepad/patches/000-jelos-gamepad.patch @@ -0,0 +1,56 @@ +diff -rupN rinputer2.orig/main.c rinputer2/main.c +--- rinputer2.orig/main.c 2023-11-23 04:47:16.344733862 +0000 ++++ rinputer2/main.c 2023-11-23 15:00:20.535535759 +0000 +@@ -240,7 +240,7 @@ int rescan_devices(struct rinputer_devic + continue; + + // let's not make a loop +- if(strncmp("Rinputer", name, 8) == 0) ++ if(strncmp("JELOS Gamepad", name, 8) == 0) + continue; + // ignore steam-created controllers + // they have this name, with a digit at the end +@@ -316,10 +316,10 @@ int main(void) + + ioctl(outfd, UI_SET_EVBIT, EV_KEY); + +- //ioctl(outfd, UI_SET_KEYBIT, BTN_DPAD_UP); // dpad up +- //ioctl(outfd, UI_SET_KEYBIT, BTN_DPAD_DOWN); // dpad down +- //ioctl(outfd, UI_SET_KEYBIT, BTN_DPAD_LEFT); // dpad left +- //ioctl(outfd, UI_SET_KEYBIT, BTN_DPAD_RIGHT); // dpad right ++ ioctl(outfd, UI_SET_KEYBIT, BTN_DPAD_UP); // dpad up ++ ioctl(outfd, UI_SET_KEYBIT, BTN_DPAD_DOWN); // dpad down ++ ioctl(outfd, UI_SET_KEYBIT, BTN_DPAD_LEFT); // dpad left ++ ioctl(outfd, UI_SET_KEYBIT, BTN_DPAD_RIGHT); // dpad right + + ioctl(outfd, UI_SET_KEYBIT, BTN_NORTH); // x + ioctl(outfd, UI_SET_KEYBIT, BTN_SOUTH); // b +@@ -332,6 +332,9 @@ int main(void) + ioctl(outfd, UI_SET_KEYBIT, BTN_TR2); // L2 + ioctl(outfd, UI_SET_KEYBIT, BTN_TL2); // R2 + ++ ioctl(outfd, UI_SET_KEYBIT, BTN_THUMBL); // L3 ++ ioctl(outfd, UI_SET_KEYBIT, BTN_THUMBR); // R3 ++ + ioctl(outfd, UI_SET_KEYBIT, BTN_SELECT); + ioctl(outfd, UI_SET_KEYBIT, BTN_START); + +@@ -350,15 +353,15 @@ int main(void) + setup_abs(outfd, ABS_RZ); + + // dpad +- setup_abs(outfd, ABS_HAT0X); +- setup_abs(outfd, ABS_HAT0Y); ++ //setup_abs(outfd, ABS_HAT0X); ++ //setup_abs(outfd, ABS_HAT0Y); + + // maybe we should pretend to be xbox gamepad? + memset(&usetup, 0, sizeof(usetup)); + usetup.id.bustype = BUS_USB; + usetup.id.vendor = 0x1234; + usetup.id.product = 0x5678; +- strcpy(usetup.name, "Rinputer"); ++ strcpy(usetup.name, "JELOS Gamepad"); + + ioctl(outfd, UI_DEV_SETUP, &usetup); + ioctl(outfd, UI_DEV_CREATE); diff --git a/packages/apps/jelos-gamepad/system.d/jelos_gamepad.service b/packages/apps/jelos-gamepad/system.d/jelos_gamepad.service new file mode 100644 index 0000000000..d5b6152cde --- /dev/null +++ b/packages/apps/jelos-gamepad/system.d/jelos_gamepad.service @@ -0,0 +1,9 @@ +[Unit] +Description=Ragnarok Input Daemon + +[Service] +Type=simple +ExecStart=/usr/bin/jelos_gamepad + +[Install] +WantedBy=multi-user.target diff --git a/packages/emulators/tools/gamecontrollerdb/config/gamecontrollerdb.txt b/packages/emulators/tools/gamecontrollerdb/config/gamecontrollerdb.txt index e93dc9eb26..a10800ff94 100644 --- a/packages/emulators/tools/gamecontrollerdb/config/gamecontrollerdb.txt +++ b/packages/emulators/tools/gamecontrollerdb/config/gamecontrollerdb.txt @@ -6,3 +6,4 @@ 1900c3ea010000000100000001010000,odroidgo3_joypad,platform:Linux,x:b2,a:b1,b:b0,y:b3,back:b12,start:b13,dpleft:b10,dpdown:b9,dpright:b11,dpup:b8,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b15,rightstick:b16,leftx:a0,lefty:a1,rightx:a2,righty:a3, 19009b4d4b4800000111000000020000,retrogame_joypad,platform:Linux,x:b2,a:b1,b:b0,y:b3,back:b8,start:b9,dpleft:b15,dpdown:b14,dpright:b16,dpup:b13,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a2,righty:a3, 19009b4d4b4800000111000000010000,retrogame_joypad,platform:Linux,x:b2,a:b1,b:b0,y:b3,back:b8,start:b9,dpleft:b15,dpdown:b14,dpright:b16,dpup:b13,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a2,righty:a3, +0300fcb7341200007856000000000000,JELOS Gamepad,platform:Linux,x:b2,a:b1,b:b0,y:b3,back:b8,start:b9,dpleft:b15,dpdown:b14,dpright:b16,dpup:b13,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4, diff --git a/packages/emulators/tools/retroarch-joypads/gamepads/JELOS Gamepad.cfg b/packages/emulators/tools/retroarch-joypads/gamepads/JELOS Gamepad.cfg new file mode 100644 index 0000000000..5347137952 --- /dev/null +++ b/packages/emulators/tools/retroarch-joypads/gamepads/JELOS Gamepad.cfg @@ -0,0 +1,29 @@ +input_driver = "udev" +input_device = "JELOS Gamepad" +input_vendor_id = "1234" +input_product_id = "5648" +input_b_btn = "0" +input_y_btn = "3" +input_select_btn = "8" +input_start_btn = "9" +input_up_btn = "13" +input_down_btn = "14" +input_left_btn = "15" +input_right_btn = "16" +input_a_btn = "1" +input_x_btn = "2" +input_l_btn = "4" +input_r_btn = "5" +input_l2_btn = "6" +input_r2_btn = "7" +input_l3_btn = "11" +input_r3_btn = "12" +input_l_x_plus_axis = "+0" +input_l_x_minus_axis = "-0" +input_l_y_plus_axis = "+1" +input_l_y_minus_axis = "-1" +input_r_x_plus_axis = "+3" +input_r_x_minus_axis = "-3" +input_r_y_plus_axis = "+4" +input_r_y_minus_axis = "-4" +input_gun_trigger_mbtn = "1" diff --git a/packages/ui/emulationstation/config/common/es_input.cfg b/packages/ui/emulationstation/config/common/es_input.cfg index 2f5477068d..3008629b3b 100644 --- a/packages/ui/emulationstation/config/common/es_input.cfg +++ b/packages/ui/emulationstation/config/common/es_input.cfg @@ -1267,4 +1267,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/Rockchip/devices/RK3566-ML/options b/projects/Rockchip/devices/RK3566-ML/options index a33fb8c456..e6d7a101eb 100644 --- a/projects/Rockchip/devices/RK3566-ML/options +++ b/projects/Rockchip/devices/RK3566-ML/options @@ -89,7 +89,7 @@ # for a list of additional drivers see packages/linux-drivers # Space separated list is supported, # e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" - ADDITIONAL_DRIVERS="RTL8821AU RTL8821CU RTL88x2BU" + ADDITIONAL_DRIVERS="RTL8821AU RTL8821CU RTL88x2BU jelos-gamepad" # build and install driver addons (yes / no) DRIVER_ADDONS_SUPPORT="no" From 8d2d39c515ce52d17b0dd63eaaa696556f79679e Mon Sep 17 00:00:00 2001 From: mason Date: Fri, 24 Nov 2023 21:55:23 +0000 Subject: [PATCH 031/167] Panel v1 reset patch --- .../patches/RK3566-ML/003-panel-v1-reset.patch | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/Rockchip/packages/linux/patches/RK3566-ML/003-panel-v1-reset.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/003-panel-v1-reset.patch b/projects/Rockchip/packages/linux/patches/RK3566-ML/003-panel-v1-reset.patch new file mode 100644 index 0000000000..fe7a4c2b1b --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566-ML/003-panel-v1-reset.patch @@ -0,0 +1,13 @@ +diff --git a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c +index 79de6c886292..c44c6945662f 100644 +--- a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c ++++ b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c +@@ -261,6 +261,8 @@ static int panel_nv3051d_unprepare(struct drm_panel *panel) + + usleep_range(10000, 15000); + ++ gpiod_set_value_cansleep(ctx->reset_gpio, 1); ++ + regulator_disable(ctx->vdd); + + return 0; From 901bc012207f0aeabeb3253db732d9e7db0f9ae9 Mon Sep 17 00:00:00 2001 From: mason Date: Mon, 27 Nov 2023 22:04:30 +0000 Subject: [PATCH 032/167] Add device quirk for RG353VS (symlink to RBG353V) --- packages/hardware/quirks/devices/Anbernic RG353VS | 1 + 1 file changed, 1 insertion(+) create mode 120000 packages/hardware/quirks/devices/Anbernic RG353VS diff --git a/packages/hardware/quirks/devices/Anbernic RG353VS b/packages/hardware/quirks/devices/Anbernic RG353VS new file mode 120000 index 0000000000..13b73acc27 --- /dev/null +++ b/packages/hardware/quirks/devices/Anbernic RG353VS @@ -0,0 +1 @@ +Anbernic RG353V \ No newline at end of file From c0694c8a5f05b282ec1cb71e4fbcbbbb5dad524e Mon Sep 17 00:00:00 2001 From: ab0tj Date: Wed, 22 Nov 2023 21:05:38 +0000 Subject: [PATCH 033/167] Rename rk817-battery to battery to fic ES battery indicator --- .../002-rk817-power-driver-names.patch | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 projects/Rockchip/packages/linux/patches/RK3566-ML/002-rk817-power-driver-names.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/002-rk817-power-driver-names.patch b/projects/Rockchip/packages/linux/patches/RK3566-ML/002-rk817-power-driver-names.patch new file mode 100644 index 0000000000..265df75ad8 --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566-ML/002-rk817-power-driver-names.patch @@ -0,0 +1,21 @@ +diff -rupN linux-6.6-orig/drivers/power/supply/rk817_charger.c linux-6.6/drivers/power/supply/rk817_charger.c +--- linux-6.6-orig/drivers/power/supply/rk817_charger.c 2023-10-30 02:31:08.000000000 +0000 ++++ linux-6.6/drivers/power/supply/rk817_charger.c 2023-11-22 19:43:15.957223087 +0000 +@@ -679,7 +679,7 @@ static enum power_supply_usb_type rk817_ + }; + + static const struct power_supply_desc rk817_bat_desc = { +- .name = "rk817-battery", ++ .name = "battery", + .type = POWER_SUPPLY_TYPE_BATTERY, + .properties = rk817_bat_props, + .num_properties = ARRAY_SIZE(rk817_bat_props), +@@ -687,7 +687,7 @@ static const struct power_supply_desc rk + }; + + static const struct power_supply_desc rk817_chg_desc = { +- .name = "rk817-charger", ++ .name = "charger", + .type = POWER_SUPPLY_TYPE_USB, + .usb_types = rk817_usb_type, + .num_usb_types = ARRAY_SIZE(rk817_usb_type), From e4d15b2a120ebead4065540b5c5fad9a7f9ca480 Mon Sep 17 00:00:00 2001 From: mason Date: Thu, 23 Nov 2023 16:06:00 +0000 Subject: [PATCH 034/167] Start work adding rinputer2 --- packages/apps/jelos-gamepad/package.mk | 19 +++++++ .../patches/000-jelos-gamepad.patch | 56 +++++++++++++++++++ .../system.d/jelos_gamepad.service | 9 +++ .../config/gamecontrollerdb.txt | 1 + .../gamepads/JELOS Gamepad.cfg | 29 ++++++++++ .../config/common/es_input.cfg | 27 +++++++++ projects/Rockchip/devices/RK3566-ML/options | 2 +- 7 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 packages/apps/jelos-gamepad/package.mk create mode 100644 packages/apps/jelos-gamepad/patches/000-jelos-gamepad.patch create mode 100644 packages/apps/jelos-gamepad/system.d/jelos_gamepad.service create mode 100644 packages/emulators/tools/retroarch-joypads/gamepads/JELOS Gamepad.cfg diff --git a/packages/apps/jelos-gamepad/package.mk b/packages/apps/jelos-gamepad/package.mk new file mode 100644 index 0000000000..c928235b91 --- /dev/null +++ b/packages/apps/jelos-gamepad/package.mk @@ -0,0 +1,19 @@ +PKG_NAME="jelos-gamepad" +PKG_VERSION="b1fc0fb69047011d99b54029be500280d33a8027" +PKG_ARCH="aarch64" +PKG_LICENSE="GPLv3" +PKG_SITE="https://github.com/R-ARM/rinputer2" +PKG_URL="$PKG_SITE.git" +PKG_DEPENDS_TARGET="toolchain" +PKG_TOOLCHAIN="make" +GET_HANDLER_SUPPORT="git" + +makeinstall_target() { + mkdir -p $INSTALL/usr/bin + cp rinputer2 ${INSTALL}/usr/bin/jelos_gamepad + chmod 0755 ${INSTALL}/usr/bin/jelos_gamepad +} + +post_install() { + enable_service jelos_gamepad.service +} diff --git a/packages/apps/jelos-gamepad/patches/000-jelos-gamepad.patch b/packages/apps/jelos-gamepad/patches/000-jelos-gamepad.patch new file mode 100644 index 0000000000..30f9cea1e9 --- /dev/null +++ b/packages/apps/jelos-gamepad/patches/000-jelos-gamepad.patch @@ -0,0 +1,56 @@ +diff -rupN rinputer2.orig/main.c rinputer2/main.c +--- rinputer2.orig/main.c 2023-11-23 04:47:16.344733862 +0000 ++++ rinputer2/main.c 2023-11-23 15:00:20.535535759 +0000 +@@ -240,7 +240,7 @@ int rescan_devices(struct rinputer_devic + continue; + + // let's not make a loop +- if(strncmp("Rinputer", name, 8) == 0) ++ if(strncmp("JELOS Gamepad", name, 8) == 0) + continue; + // ignore steam-created controllers + // they have this name, with a digit at the end +@@ -316,10 +316,10 @@ int main(void) + + ioctl(outfd, UI_SET_EVBIT, EV_KEY); + +- //ioctl(outfd, UI_SET_KEYBIT, BTN_DPAD_UP); // dpad up +- //ioctl(outfd, UI_SET_KEYBIT, BTN_DPAD_DOWN); // dpad down +- //ioctl(outfd, UI_SET_KEYBIT, BTN_DPAD_LEFT); // dpad left +- //ioctl(outfd, UI_SET_KEYBIT, BTN_DPAD_RIGHT); // dpad right ++ ioctl(outfd, UI_SET_KEYBIT, BTN_DPAD_UP); // dpad up ++ ioctl(outfd, UI_SET_KEYBIT, BTN_DPAD_DOWN); // dpad down ++ ioctl(outfd, UI_SET_KEYBIT, BTN_DPAD_LEFT); // dpad left ++ ioctl(outfd, UI_SET_KEYBIT, BTN_DPAD_RIGHT); // dpad right + + ioctl(outfd, UI_SET_KEYBIT, BTN_NORTH); // x + ioctl(outfd, UI_SET_KEYBIT, BTN_SOUTH); // b +@@ -332,6 +332,9 @@ int main(void) + ioctl(outfd, UI_SET_KEYBIT, BTN_TR2); // L2 + ioctl(outfd, UI_SET_KEYBIT, BTN_TL2); // R2 + ++ ioctl(outfd, UI_SET_KEYBIT, BTN_THUMBL); // L3 ++ ioctl(outfd, UI_SET_KEYBIT, BTN_THUMBR); // R3 ++ + ioctl(outfd, UI_SET_KEYBIT, BTN_SELECT); + ioctl(outfd, UI_SET_KEYBIT, BTN_START); + +@@ -350,15 +353,15 @@ int main(void) + setup_abs(outfd, ABS_RZ); + + // dpad +- setup_abs(outfd, ABS_HAT0X); +- setup_abs(outfd, ABS_HAT0Y); ++ //setup_abs(outfd, ABS_HAT0X); ++ //setup_abs(outfd, ABS_HAT0Y); + + // maybe we should pretend to be xbox gamepad? + memset(&usetup, 0, sizeof(usetup)); + usetup.id.bustype = BUS_USB; + usetup.id.vendor = 0x1234; + usetup.id.product = 0x5678; +- strcpy(usetup.name, "Rinputer"); ++ strcpy(usetup.name, "JELOS Gamepad"); + + ioctl(outfd, UI_DEV_SETUP, &usetup); + ioctl(outfd, UI_DEV_CREATE); diff --git a/packages/apps/jelos-gamepad/system.d/jelos_gamepad.service b/packages/apps/jelos-gamepad/system.d/jelos_gamepad.service new file mode 100644 index 0000000000..d5b6152cde --- /dev/null +++ b/packages/apps/jelos-gamepad/system.d/jelos_gamepad.service @@ -0,0 +1,9 @@ +[Unit] +Description=Ragnarok Input Daemon + +[Service] +Type=simple +ExecStart=/usr/bin/jelos_gamepad + +[Install] +WantedBy=multi-user.target diff --git a/packages/emulators/tools/gamecontrollerdb/config/gamecontrollerdb.txt b/packages/emulators/tools/gamecontrollerdb/config/gamecontrollerdb.txt index e93dc9eb26..a10800ff94 100644 --- a/packages/emulators/tools/gamecontrollerdb/config/gamecontrollerdb.txt +++ b/packages/emulators/tools/gamecontrollerdb/config/gamecontrollerdb.txt @@ -6,3 +6,4 @@ 1900c3ea010000000100000001010000,odroidgo3_joypad,platform:Linux,x:b2,a:b1,b:b0,y:b3,back:b12,start:b13,dpleft:b10,dpdown:b9,dpright:b11,dpup:b8,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b15,rightstick:b16,leftx:a0,lefty:a1,rightx:a2,righty:a3, 19009b4d4b4800000111000000020000,retrogame_joypad,platform:Linux,x:b2,a:b1,b:b0,y:b3,back:b8,start:b9,dpleft:b15,dpdown:b14,dpright:b16,dpup:b13,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a2,righty:a3, 19009b4d4b4800000111000000010000,retrogame_joypad,platform:Linux,x:b2,a:b1,b:b0,y:b3,back:b8,start:b9,dpleft:b15,dpdown:b14,dpright:b16,dpup:b13,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a2,righty:a3, +0300fcb7341200007856000000000000,JELOS Gamepad,platform:Linux,x:b2,a:b1,b:b0,y:b3,back:b8,start:b9,dpleft:b15,dpdown:b14,dpright:b16,dpup:b13,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4, diff --git a/packages/emulators/tools/retroarch-joypads/gamepads/JELOS Gamepad.cfg b/packages/emulators/tools/retroarch-joypads/gamepads/JELOS Gamepad.cfg new file mode 100644 index 0000000000..5347137952 --- /dev/null +++ b/packages/emulators/tools/retroarch-joypads/gamepads/JELOS Gamepad.cfg @@ -0,0 +1,29 @@ +input_driver = "udev" +input_device = "JELOS Gamepad" +input_vendor_id = "1234" +input_product_id = "5648" +input_b_btn = "0" +input_y_btn = "3" +input_select_btn = "8" +input_start_btn = "9" +input_up_btn = "13" +input_down_btn = "14" +input_left_btn = "15" +input_right_btn = "16" +input_a_btn = "1" +input_x_btn = "2" +input_l_btn = "4" +input_r_btn = "5" +input_l2_btn = "6" +input_r2_btn = "7" +input_l3_btn = "11" +input_r3_btn = "12" +input_l_x_plus_axis = "+0" +input_l_x_minus_axis = "-0" +input_l_y_plus_axis = "+1" +input_l_y_minus_axis = "-1" +input_r_x_plus_axis = "+3" +input_r_x_minus_axis = "-3" +input_r_y_plus_axis = "+4" +input_r_y_minus_axis = "-4" +input_gun_trigger_mbtn = "1" diff --git a/packages/ui/emulationstation/config/common/es_input.cfg b/packages/ui/emulationstation/config/common/es_input.cfg index 2f5477068d..3008629b3b 100644 --- a/packages/ui/emulationstation/config/common/es_input.cfg +++ b/packages/ui/emulationstation/config/common/es_input.cfg @@ -1267,4 +1267,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/Rockchip/devices/RK3566-ML/options b/projects/Rockchip/devices/RK3566-ML/options index a33fb8c456..e6d7a101eb 100644 --- a/projects/Rockchip/devices/RK3566-ML/options +++ b/projects/Rockchip/devices/RK3566-ML/options @@ -89,7 +89,7 @@ # for a list of additional drivers see packages/linux-drivers # Space separated list is supported, # e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" - ADDITIONAL_DRIVERS="RTL8821AU RTL8821CU RTL88x2BU" + ADDITIONAL_DRIVERS="RTL8821AU RTL8821CU RTL88x2BU jelos-gamepad" # build and install driver addons (yes / no) DRIVER_ADDONS_SUPPORT="no" From 8de20885dd6a7164cd9eb058f66043ca7adf45c5 Mon Sep 17 00:00:00 2001 From: mason Date: Fri, 24 Nov 2023 21:55:23 +0000 Subject: [PATCH 035/167] Panel v1 reset patch --- .../patches/RK3566-ML/003-panel-v1-reset.patch | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/Rockchip/packages/linux/patches/RK3566-ML/003-panel-v1-reset.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/003-panel-v1-reset.patch b/projects/Rockchip/packages/linux/patches/RK3566-ML/003-panel-v1-reset.patch new file mode 100644 index 0000000000..fe7a4c2b1b --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566-ML/003-panel-v1-reset.patch @@ -0,0 +1,13 @@ +diff --git a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c +index 79de6c886292..c44c6945662f 100644 +--- a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c ++++ b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c +@@ -261,6 +261,8 @@ static int panel_nv3051d_unprepare(struct drm_panel *panel) + + usleep_range(10000, 15000); + ++ gpiod_set_value_cansleep(ctx->reset_gpio, 1); ++ + regulator_disable(ctx->vdd); + + return 0; From 0db7975dd224198c5e90a68a036de7d924fa6526 Mon Sep 17 00:00:00 2001 From: mason Date: Mon, 27 Nov 2023 22:04:30 +0000 Subject: [PATCH 036/167] Add device quirk for RG353VS (symlink to RBG353V) --- packages/hardware/quirks/devices/Anbernic RG353VS | 1 + 1 file changed, 1 insertion(+) create mode 120000 packages/hardware/quirks/devices/Anbernic RG353VS diff --git a/packages/hardware/quirks/devices/Anbernic RG353VS b/packages/hardware/quirks/devices/Anbernic RG353VS new file mode 120000 index 0000000000..13b73acc27 --- /dev/null +++ b/packages/hardware/quirks/devices/Anbernic RG353VS @@ -0,0 +1 @@ +Anbernic RG353V \ No newline at end of file From 225ca7af6d98ea8327ff72438367675c534ed5b1 Mon Sep 17 00:00:00 2001 From: adamg Date: Tue, 28 Nov 2023 19:05:42 +0000 Subject: [PATCH 037/167] linux: bump package to 6.1.64 for S922X/RK3399 --- projects/Amlogic/packages/linux/package.mk | 2 +- projects/Rockchip/packages/linux/package.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/Amlogic/packages/linux/package.mk b/projects/Amlogic/packages/linux/package.mk index 491a864acb..c2f8e2dfe8 100644 --- a/projects/Amlogic/packages/linux/package.mk +++ b/projects/Amlogic/packages/linux/package.mk @@ -18,7 +18,7 @@ PKG_PATCH_DIRS+="${DEVICE}" case ${DEVICE} in S922X*) - PKG_VERSION="6.1.63" + PKG_VERSION="6.1.64" PKG_URL="https://www.kernel.org/pub/linux/kernel/v6.x/${PKG_NAME}-${PKG_VERSION}.tar.xz" ;; esac diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index c7813d4061..76748c8bf2 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -40,7 +40,7 @@ case ${DEVICE} in PKG_GIT_CLONE_BRANCH="main" ;; RK33*) - PKG_VERSION="6.1.63" + PKG_VERSION="6.1.64" PKG_URL="https://www.kernel.org/pub/linux/kernel/v6.x/${PKG_NAME}-${PKG_VERSION}.tar.xz" ;; esac From 15838bddb317b76e987249eeb6178347e02202ed Mon Sep 17 00:00:00 2001 From: mason Date: Tue, 28 Nov 2023 22:30:47 +0000 Subject: [PATCH 038/167] Set CPU/DMC/GPU to powersave during sleep --- .../Anbernic RG552/sleep.d/post/002-freq | 23 +++++++++++++++++++ .../Anbernic RG552/sleep.d/pre/002-freq | 19 +++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 packages/hardware/quirks/devices/Anbernic RG552/sleep.d/post/002-freq create mode 100644 packages/hardware/quirks/devices/Anbernic RG552/sleep.d/pre/002-freq diff --git a/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/post/002-freq b/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/post/002-freq new file mode 100644 index 0000000000..512ac68e11 --- /dev/null +++ b/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/post/002-freq @@ -0,0 +1,23 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +# Restore previous governors before going to sleep + +. /etc/profile + +# Grab the old governors. +OLD_CPU_FREQ=$(get_setting "sleep.cpugovernor") +if [ ! -n "${OLD_CPU_FREQ}" ]; then + OLD_CPU_FREQ="schedutil" +fi + +OLD_GPU_FREQ=$(get_setting "sleep.gpugovernor") +if [ ! -n "${OLD_GPU_FREQ}" ]; then + OLD_GPU_FREQ="simple_ondemand" +fi + +# Restore old governors. +set_cpu_gov "${OLD_CPU_FREQ}" +set_dmc_gov "${OLD_CPU_FREQ}" +set_gpu_gov "${OLD_GPU_FREQ}" diff --git a/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/pre/002-freq b/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/pre/002-freq new file mode 100644 index 0000000000..4daf6a1fd2 --- /dev/null +++ b/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/pre/002-freq @@ -0,0 +1,19 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +# Store current freq governors and set governors to powersave. + +. /etc/profile + +### Get the current cpu and gpu governor, save for when the device wakes from sleep. +CUR_CPU_FREQ="$(cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor)" +CUR_GPU_FREQ="$(cat /sys/devices/platform/ff9a0000.gpu/devfreq/ff9a0000.gpu/governor)" + +set_setting sleep.cpugovernor "${CUR_CPU_FREQ}" +set_setting sleep.cpugovernor "${CUR_GPU_FREQ}" + +### Set all governors to powersave +set_cpu_gov powersave +set_dmc_gov powersave +set_gpu_gov powersave From 82e1a91f30ccfe6bf4bde5d72c2843ee4920a233 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Tue, 28 Nov 2023 22:53:30 +0000 Subject: [PATCH 039/167] Update bluez, and improve support for low latency audio thanks to @ValveSoftware. --- packages/audio/pipewire/package.mk | 3 + .../network/bluez/modprobe.d/bluetooth.conf | 1 + packages/network/bluez/package.mk | 12 +- .../bluez-04-valve-bluetooth-config.patch | 24 + .../bluez/patches/bluez-045-main-conf.patch | 40 - ...tech-diNovo-Edge-keyboard-firmware-i.patch | 29 - ...c52b-Logitech-Inc.-Unifying-Receiver.patch | 26 - .../bluez-05-valve-bluetooth-phy.patch | 246 ++ .../bluez-06-AVRCP_TG_MDI_BV-04-C.patch | 15 + .../patches/bluez-06-raspberry-pi-mods.patch | 156 -- ...-retry-device-reset-when-no-response.patch | 61 - ...ixaxis-fix-PID-navigation-controller.patch | 57 - .../bluez-13-configure-Check-ell-path.patch | 34 - ...iattach-add-QCA9377-Tuffello-support.patch | 2376 ----------------- ...d-support-for-sprd-type-in-hciattach.patch | 962 ------- .../bluez-50-fix-device_prove-failing.patch | 307 --- .../network/bluez/system.d/bluetooth.service | 2 +- packages/sysutils/busybox/package.mk | 6 +- 18 files changed, 303 insertions(+), 4054 deletions(-) create mode 100644 packages/network/bluez/modprobe.d/bluetooth.conf create mode 100644 packages/network/bluez/patches/bluez-04-valve-bluetooth-config.patch delete mode 100644 packages/network/bluez/patches/bluez-045-main-conf.patch delete mode 100644 packages/network/bluez/patches/bluez-04_work-around-Logitech-diNovo-Edge-keyboard-firmware-i.patch delete mode 100644 packages/network/bluez/patches/bluez-05-046d-c52b-Logitech-Inc.-Unifying-Receiver.patch create mode 100644 packages/network/bluez/patches/bluez-05-valve-bluetooth-phy.patch create mode 100644 packages/network/bluez/patches/bluez-06-AVRCP_TG_MDI_BV-04-C.patch delete mode 100644 packages/network/bluez/patches/bluez-06-raspberry-pi-mods.patch delete mode 100644 packages/network/bluez/patches/bluez-08-hciattach-retry-device-reset-when-no-response.patch delete mode 100644 packages/network/bluez/patches/bluez-11_sixaxis-fix-PID-navigation-controller.patch delete mode 100644 packages/network/bluez/patches/bluez-13-configure-Check-ell-path.patch delete mode 100644 packages/network/bluez/patches/bluez-21-hciattach-add-QCA9377-Tuffello-support.patch delete mode 100644 packages/network/bluez/patches/bluez-40-Add-support-for-sprd-type-in-hciattach.patch delete mode 100644 packages/network/bluez/patches/bluez-50-fix-device_prove-failing.patch diff --git a/packages/audio/pipewire/package.mk b/packages/audio/pipewire/package.mk index 0a25b82f26..e5f4c04213 100644 --- a/packages/audio/pipewire/package.mk +++ b/packages/audio/pipewire/package.mk @@ -17,6 +17,7 @@ if [ "${BLUETOOTH_SUPPORT}" = "yes" ]; then -Dbluez5-backend-ofono=disabled \ -Dbluez5-backend-hsphfpd=disabled \ -Dbluez5-codec-aptx=enabled \ + -Dbluez5-codec-lc3plus=disabled \ -Dbluez5-codec-ldac=enabled \ -Dbluez5-codec-aac=enabled" else @@ -83,6 +84,8 @@ pre_configure_target() { } post_install() { + add_user pipewire x 982 980 "pipewire-daemon" "/var/run/pipewire" "/bin/sh" + add_group pipewire 980 mkdir -p ${INSTALL}/etc/alsa/conf.d ln -sf /usr/share/alsa/alsa.conf.d/50-pipewire.conf ${INSTALL}/etc/alsa/conf.d/50-pipewire.conf ln -sf /usr/share/alsa/alsa.conf.d/99-pipewire-default.conf ${INSTALL}/etc/alsa/conf.d/99-pipewire-default.conf diff --git a/packages/network/bluez/modprobe.d/bluetooth.conf b/packages/network/bluez/modprobe.d/bluetooth.conf new file mode 100644 index 0000000000..d99d1dc913 --- /dev/null +++ b/packages/network/bluez/modprobe.d/bluetooth.conf @@ -0,0 +1 @@ +options btusb reset=1 diff --git a/packages/network/bluez/package.mk b/packages/network/bluez/package.mk index 9ace7412b8..60243b2542 100644 --- a/packages/network/bluez/package.mk +++ b/packages/network/bluez/package.mk @@ -3,11 +3,11 @@ # Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv) PKG_NAME="bluez" -PKG_VERSION="5.68" +PKG_VERSION="5.70" PKG_LICENSE="GPL" PKG_SITE="http://www.bluez.org/" PKG_URL="https://www.kernel.org/pub/linux/bluetooth/${PKG_NAME}-${PKG_VERSION}.tar.xz" -PKG_DEPENDS_TARGET="toolchain dbus glib readline systemd" +PKG_DEPENDS_TARGET="toolchain dbus glib readline systemd json-c" PKG_LONGDESC="Bluetooth Tools and System Daemons for Linux." PKG_TOOLCHAIN="autotools" PKG_BUILD_FLAGS="+lto" @@ -37,6 +37,11 @@ PKG_CONFIGURE_OPTS_TARGET="--disable-dependency-tracking \ --enable-sap \ --enable-a2dp \ --enable-avrcp \ + --enable-btpclient \ + --enable-midi \ + --enable-mesh \ + --enable-hid2hci \ + --enable-experimental \ --enable-hid \ --with-gnu-ld \ ${BLUEZ_CONFIG} \ @@ -60,6 +65,9 @@ post_makeinstall_target() { safe_remove ${INSTALL}/usr/bin/ciptool safe_remove ${INSTALL}/usr/share/dbus-1 + mkdir -p ${INSTALL}/etc/dbus-1/system.d + cp src/bluetooth.conf ${INSTALL}/etc/dbus-1/system.d + mkdir -p ${INSTALL}/etc/bluetooth cp src/main.conf ${INSTALL}/etc/bluetooth diff --git a/packages/network/bluez/patches/bluez-04-valve-bluetooth-config.patch b/packages/network/bluez/patches/bluez-04-valve-bluetooth-config.patch new file mode 100644 index 0000000000..ba22408ca8 --- /dev/null +++ b/packages/network/bluez/patches/bluez-04-valve-bluetooth-config.patch @@ -0,0 +1,24 @@ +diff --git a/src/main.conf b/src/main.conf +index 2796f155e..f7b032b9f 100644 +--- a/src/main.conf ++++ b/src/main.conf +@@ -60,7 +60,7 @@ + # or both Multiple Profiles Single Device (MPSD) and Multiple Profiles Multiple + # Devices (MPMD) configurations. + # Possible values: "off", "single", "multiple" +-#MultiProfile = off ++MultiProfile = multiple + + # Permanently enables the Fast Connectable setting for adapters that + # support it. When enabled other devices can connect faster to us, +@@ -182,8 +182,8 @@ + + # LE scanning parameters used for passive scanning supporting wake from suspend + # scenarios +-#ScanIntervalSuspend= +-#ScanWindowSuspend= ++ScanIntervalSuspend=2240 ++ScanWindowSuspend=224 + + # LE scanning parameters used for active scanning supporting discovery + # proceedure diff --git a/packages/network/bluez/patches/bluez-045-main-conf.patch b/packages/network/bluez/patches/bluez-045-main-conf.patch deleted file mode 100644 index 50ed8fd350..0000000000 --- a/packages/network/bluez/patches/bluez-045-main-conf.patch +++ /dev/null @@ -1,40 +0,0 @@ -diff --git a/src/main.conf b/src/main.conf -index d108934a8..f90820314 100644 ---- a/src/main.conf -+++ b/src/main.conf -@@ -60,7 +60,7 @@ - # or both Multiple Profiles Single Device (MPSD) and Multiple Profiles Multiple - # Devices (MPMD) configurations. - # Possible values: "off", "single", "multiple" --#MultiProfile = off -+MultiProfile = multiple - - # Permanently enables the Fast Connectable setting for adapters that - # support it. When enabled other devices can connect faster to us, -@@ -100,7 +100,7 @@ - # Specify the policy to the JUST-WORKS repairing initiated by peer - # Possible values: "never", "confirm", "always" - # Defaults to "never" --#JustWorksRepairing = never -+JustWorksRepairing = always - - # How long to keep temporary devices around - # The value is in seconds. Default is 30. -@@ -109,7 +109,7 @@ - - # Enables the device to issue an SDP request to update known services when - # profile is connected. Defaults to true. --#RefreshDiscovery = true -+RefreshDiscovery = true - - # Default Secure Connections setting. - # Enables the Secure Connections setting for adapters that support it. It -@@ -318,7 +318,7 @@ - # AutoEnable defines option to enable all controllers when they are found. - # This includes adapters present on start as well as adapters that are plugged - # in later on. Defaults to 'true'. --#AutoEnable=true -+AutoEnable=true - - # Audio devices that were disconnected due to suspend will be reconnected on - # resume. ResumeDelay determines the delay between when the controller diff --git a/packages/network/bluez/patches/bluez-04_work-around-Logitech-diNovo-Edge-keyboard-firmware-i.patch b/packages/network/bluez/patches/bluez-04_work-around-Logitech-diNovo-Edge-keyboard-firmware-i.patch deleted file mode 100644 index e583320ecc..0000000000 --- a/packages/network/bluez/patches/bluez-04_work-around-Logitech-diNovo-Edge-keyboard-firmware-i.patch +++ /dev/null @@ -1,29 +0,0 @@ -From aa73bf5039dfd2cf0a52dd6fd22501d955cc1a00 Mon Sep 17 00:00:00 2001 -From: Tommy -Date: Thu, 10 Jan 2013 09:18:43 +0100 -Subject: [PATCH] work around Logitech diNovo Edge keyboard firmware issue - -https://bugs.launchpad.net/ubuntu/+source/bluez/+bug/269851 ---- - tools/hid2hci.rules | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -diff --git a/tools/hid2hci.rules b/tools/hid2hci.rules -index db6bb03..7db4572 100644 ---- a/tools/hid2hci.rules -+++ b/tools/hid2hci.rules -@@ -11,7 +11,10 @@ ATTR{bInterfaceClass}=="03", ATTR{bInterfaceSubClass}=="01", ATTR{bInterfaceProt - RUN+="hid2hci --method=dell --devpath=%p", ENV{HID2HCI_SWITCH}="1" - - # Logitech devices --KERNEL=="hiddev*", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c70[345abce]|c71[34bc]", \ -+KERNEL=="hiddev*", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c70[345abce]|c71[3bc]", \ -+ RUN+="hid2hci --method=logitech-hid --devpath=%p" -+# Logitech, Inc. diNovo Edge Keyboard -+KERNEL=="hidraw*", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c714", \ - RUN+="hid2hci --method=logitech-hid --devpath=%p" - - ENV{DEVTYPE}!="usb_device", GOTO="hid2hci_end" --- -1.8.0.1 - diff --git a/packages/network/bluez/patches/bluez-05-046d-c52b-Logitech-Inc.-Unifying-Receiver.patch b/packages/network/bluez/patches/bluez-05-046d-c52b-Logitech-Inc.-Unifying-Receiver.patch deleted file mode 100644 index f9f827fe56..0000000000 --- a/packages/network/bluez/patches/bluez-05-046d-c52b-Logitech-Inc.-Unifying-Receiver.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 50f34d1b65c2fb6c557e2b802e908986e8ec0b74 Mon Sep 17 00:00:00 2001 -From: Stefan Saraev -Date: Fri, 7 Feb 2014 12:50:29 +0200 -Subject: [PATCH] 046d:c52b Logitech, Inc. Unifying Receiver - ---- - tools/hid2hci.rules | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -diff --git a/tools/hid2hci.rules b/tools/hid2hci.rules -index 7db4572..1feca6e 100644 ---- a/tools/hid2hci.rules -+++ b/tools/hid2hci.rules -@@ -16,6 +16,9 @@ KERNEL=="hiddev*", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c70[345abce]|c71[ - # Logitech, Inc. diNovo Edge Keyboard - KERNEL=="hidraw*", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c714", \ - RUN+="hid2hci --method=logitech-hid --devpath=%p" -+# Logitech, Inc. Unifying Receiver -+KERNEL=="hidraw*", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c52b", \ -+ RUN+="hid2hci --method=logitech-hid --devpath=%p" - - ENV{DEVTYPE}!="usb_device", GOTO="hid2hci_end" - --- -1.7.2.5 - diff --git a/packages/network/bluez/patches/bluez-05-valve-bluetooth-phy.patch b/packages/network/bluez/patches/bluez-05-valve-bluetooth-phy.patch new file mode 100644 index 0000000000..d9552a9f19 --- /dev/null +++ b/packages/network/bluez/patches/bluez-05-valve-bluetooth-phy.patch @@ -0,0 +1,246 @@ +From d1ef0be0d84b909a88dccf28af52d5a1c0e49992 Mon Sep 17 00:00:00 2001 +From: Vicki Pfau +Date: Fri, 8 Sep 2023 16:53:02 -0700 +Subject: [PATCH 2/2] Experimental patch to enable alternate Bluetooth + connection modes + +This should improve Bluetooth connectivity, especially with multiple controllers and while docked. + +Testing: +sudo btmgmt +[mgmt]# phy +Verify that LE2MRX, LE2MTX, LECODEDRX, LECODEDTX are in the selected phys list. +Verify that multiple controllers can connect and work well. + +Co-Authored-By: Rachel Blackman +--- + src/adapter.c | 46 ++++++++++++++++++++++++++++ + src/btd.h | 2 ++ + src/main.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/main.conf | 5 +++ + 4 files changed, 138 insertions(+) + +diff --git a/src/adapter.c b/src/adapter.c +index 5ebfc4752..bc1e1d418 100644 +--- a/src/adapter.c ++++ b/src/adapter.c +@@ -86,6 +86,18 @@ + #define DISTANCE_VAL_INVALID 0x7FFF + #define PATHLOSS_MAX 137 + ++#define LE_PHY_1M 0x01 ++#define LE_PHY_2M 0x02 ++#define LE_PHY_CODED 0x04 ++ ++#define PHYVAL_REQUIRED 0x07ff ++#define PHYVAL_1M_TX (1<<9) ++#define PHYVAL_1M_RX (1<<10) ++#define PHYVAL_2M_TX (1<<11) ++#define PHYVAL_2M_RX (1<<12) ++#define PHYVAL_CODED_TX (1<<13) ++#define PHYVAL_CODED_RX (1<<14) ++ + /* + * These are known security keys that have been compromised. + * If this grows or there are needs to be platform specific, it is +@@ -844,6 +856,36 @@ static bool set_discoverable(struct btd_adapter *adapter, uint8_t mode, + return false; + } + ++static void set_phy_support_complete(uint8_t status, uint16_t length, ++ const void *param, void *user_data) ++{ ++ if (status != 0) { ++ struct btd_adapter *adapter = (struct btd_adapter *)user_data; ++ ++ btd_error(adapter->dev_id, "PHY setting rejected for %u: %s", ++ adapter->dev_id, mgmt_errstr(status)); ++ } ++} ++ ++static bool set_phy_support(struct btd_adapter *adapter, uint32_t phy_mask) ++{ ++ struct mgmt_cp_set_phy_confguration cp; ++ ++ memset(&cp, 0, sizeof(cp)); ++ cp.selected_phys = cpu_to_le32(phy_mask | PHYVAL_REQUIRED); ++ ++ if (mgmt_send(adapter->mgmt, MGMT_OP_SET_PHY_CONFIGURATION, ++ adapter->dev_id, sizeof(cp), &cp, ++ set_phy_support_complete, (void*)adapter, NULL) > 0) ++ return true; ++ ++ btd_error(adapter->dev_id, "Failed to set PHY for index %u", ++ adapter->dev_id); ++ ++ return false; ++ ++} ++ + static bool pairable_timeout_handler(gpointer user_data) + { + struct btd_adapter *adapter = user_data; +@@ -10387,6 +10429,10 @@ static void read_info_complete(uint8_t status, uint16_t length, + if (btd_adapter_get_powered(adapter)) + adapter_start(adapter); + ++ // Some adapters do not want to accept this before being started/powered. ++ if (btd_opts.phys > 0) ++ set_phy_support(adapter, btd_opts.phys); ++ + return; + + failed: +diff --git a/src/btd.h b/src/btd.h +index b7e7ebd61..2b84f7a51 100644 +--- a/src/btd.h ++++ b/src/btd.h +@@ -151,6 +151,8 @@ struct btd_opts { + struct btd_advmon_opts advmon; + + struct btd_csis csis; ++ ++ uint32_t phys; + }; + + extern struct btd_opts btd_opts; +diff --git a/src/main.c b/src/main.c +index 2134fcf75..700c83c78 100644 +--- a/src/main.c ++++ b/src/main.c +@@ -127,6 +127,7 @@ static const char *le_options[] = { + "AdvMonAllowlistScanDuration", + "AdvMonNoFilterScanDuration", + "EnableAdvMonInterleaveScan", ++ "SupportedPHYs", + NULL + }; + +@@ -180,10 +181,32 @@ static const struct group_table { + { } + }; + ++static const char *conf_phys_str[] = { ++ "BR1M1SLOT", ++ "BR1M3SLOT", ++ "BR1M5SLOT", ++ "EDR2M1SLOT", ++ "EDR2M3SLOT", ++ "EDR2M5SLOT", ++ "EDR3M1SLOT", ++ "EDR3M3SLOT", ++ "EDR3M5SLOT", ++ "LE1MTX", ++ "LE1MRX", ++ "LE2MTX", ++ "LE2MRX", ++ "LECODEDTX", ++ "LECODEDRX", ++}; ++ + #ifndef MIN + #define MIN(x, y) ((x) < (y) ? (x) : (y)) + #endif + ++#ifndef NELEM ++#define NELEM(x) (sizeof(x) / sizeof((x)[0])) ++#endif ++ + static int8_t check_sirk_alpha_numeric(char *str) + { + int8_t val = 0; +@@ -224,6 +247,54 @@ static size_t hex2bin(const char *hexstr, uint8_t *buf, size_t buflen) + return len; + } + ++static const char *conf_phys2str(uint32_t phys) ++{ ++ static char str[256]; ++ unsigned int i; ++ int off; ++ ++ off = 0; ++ str[0] = '\0'; ++ ++ for (i = 0; i < NELEM(conf_phys_str); i++) { ++ if ((phys & (1 << i)) != 0) ++ off += snprintf(str + off, sizeof(str) - off, "%s ", ++ conf_phys_str[i]); ++ } ++ ++ return str; ++} ++ ++static bool str2phy(const char *phy_str, uint32_t *phy_val) ++{ ++ unsigned int i; ++ ++ for (i = 0; i < NELEM(conf_phys_str); i++) { ++ if (strcasecmp(conf_phys_str[i], phy_str) == 0) { ++ *phy_val = (1 << i); ++ return true; ++ } ++ } ++ ++ return false; ++} ++ ++static void btd_parse_phy_list(char **list) ++{ ++ uint32_t phys = 0; ++ ++ for (int i = 0; list[i]; i++) { ++ uint32_t phy_val; ++ ++ info("Enabling PHY option: %s", list[i]); ++ ++ if (str2phy(list[i], &phy_val)) ++ phys |= phy_val; ++ } ++ ++ btd_opts.phys = phys; ++} ++ + GKeyFile *btd_get_main_conf(void) + { + return main_conf; +@@ -674,6 +745,20 @@ static void parse_le_config(GKeyFile *config) + return; + + parse_mode_config(config, "LE", params, ARRAY_SIZE(params)); ++ ++ char **strlist; ++ GError *err = NULL; ++ strlist = g_key_file_get_string_list(config, "LE", ++ "SupportedPHYs", ++ NULL, &err); ++ if (err) { ++ DBG("%s", err->message); ++ g_clear_error(&err); ++ } ++ else { ++ btd_parse_phy_list(strlist); ++ g_strfreev(strlist); ++ } + } + + static bool match_experimental(const void *data, const void *match_data) +diff --git a/src/main.conf b/src/main.conf +index cb9b241df..c086a17d0 100644 +--- a/src/main.conf ++++ b/src/main.conf +@@ -231,6 +231,11 @@ MultiProfile = multiple + # Defaults to 1 + #EnableAdvMonInterleaveScan= + ++# Which Bluetooth LE PHYs should be enabled/supported? ++# Options are LE1MTX LE1MRX LE2MTX LE2MRX LECODEDTX LECODEDRX ++# Defaults to LE1MTX,LE1MRX ++SupportedPHYs=LE1MTX,LE1MRX,LE2MTX,LE2MRX,LECODEDTX,LECODEDRX ++ + [GATT] + # GATT attribute cache. + # Possible values: +-- +2.41.0 + diff --git a/packages/network/bluez/patches/bluez-06-AVRCP_TG_MDI_BV-04-C.patch b/packages/network/bluez/patches/bluez-06-AVRCP_TG_MDI_BV-04-C.patch new file mode 100644 index 0000000000..38478f0539 --- /dev/null +++ b/packages/network/bluez/patches/bluez-06-AVRCP_TG_MDI_BV-04-C.patch @@ -0,0 +1,15 @@ +diff -ru bluez-5.66.orig/profiles/audio/avrcp.c bluez-5.66/profiles/audio/avrcp.c +--- bluez-5.66.orig/profiles/audio/avrcp.c 2022-03-16 08:06:20.000000000 -0700 ++++ bluez-5.66/profiles/audio/avrcp.c 2023-07-30 08:03:17.414213611 -0700 +@@ -1210,6 +1210,10 @@ + GUINT_TO_POINTER(str_to_metadata(key))); + } + ++ if (attrs == NULL) ++ return g_list_prepend(NULL, ++ GUINT_TO_POINTER(AVRCP_MEDIA_ATTRIBUTE_TITLE)); ++ + return attrs; + } + +Only in bluez-5.66/profiles/audio: avrcp.c.orig diff --git a/packages/network/bluez/patches/bluez-06-raspberry-pi-mods.patch b/packages/network/bluez/patches/bluez-06-raspberry-pi-mods.patch deleted file mode 100644 index 342a4c09ac..0000000000 --- a/packages/network/bluez/patches/bluez-06-raspberry-pi-mods.patch +++ /dev/null @@ -1,156 +0,0 @@ -Description: Patches for compatibility with on-board Bluetooth on RPi 3 -Author: Simon Long -Last-Update: 2017-04-05 - ---- a/tools/hciattach.c -+++ b/tools/hciattach.c -@@ -1091,6 +1091,9 @@ - { "bcm43xx", 0x0000, 0x0000, HCI_UART_H4, 115200, 3000000, - FLOW_CTL, DISABLE_PM, NULL, bcm43xx, NULL }, - -+ { "bcm43xx-3wire", 0x0000, 0x0000, HCI_UART_3WIRE, 115200, 3000000, -+ 0, DISABLE_PM, NULL, bcm43xx, NULL }, -+ - { "ath3k", 0x0000, 0x0000, HCI_UART_ATH3K, 115200, 115200, - FLOW_CTL, DISABLE_PM, NULL, ath3k_ps, ath3k_pm }, - -@@ -1237,7 +1240,7 @@ - { - struct uart_t *u = NULL; - int detach, printpid, raw, opt, i, n, ld, err; -- int to = 10; -+ int to = 30; - int init_speed = 0; - int send_break = 0; - pid_t pid; ---- a/tools/hciattach.h -+++ b/tools/hciattach.h -@@ -44,7 +45,7 @@ - #define HCI_UART_VND_DETECT 5 - - #ifndef FIRMWARE_DIR --#define FIRMWARE_DIR "/etc/firmware" -+#define FIRMWARE_DIR "/lib/firmware" - #endif - - int read_hci_event(int fd, unsigned char *buf, int size); ---- a/tools/hciattach_bcm43xx.c -+++ b/tools/hciattach_bcm43xx.c -@@ -36,6 +36,7 @@ - #include - #include - #include -+#include - - #include "lib/bluetooth.h" - #include "lib/hci.h" -@@ -303,9 +304,23 @@ - static int bcm43xx_locate_patch(const char *dir_name, - const char *chip_name, char *location) - { -+ struct stat statbuf; -+ char path[PATH_MAX]; - DIR *dir; - int ret = -1; - -+ /* Try an exact match before scanning, otherwise a board without a specific -+ * firmware/link may end up loading a specific firmware for another board -+ * just because it is encountered first. -+ */ -+ if (snprintf(path, PATH_MAX, "%s/%s%s", dir_name, chip_name, FW_EXT) < 0) -+ return -1; -+ if ((stat(path, &statbuf) == 0) && S_ISREG(statbuf.st_mode)) { -+ strcpy(location, path); -+ return 0; -+ } -+ -+ /* Now search subdirectories and files with suffixes */ - dir = opendir(dir_name); - if (!dir) { - fprintf(stderr, "Cannot open directory '%s': %s\n", -@@ -320,8 +335,6 @@ - break; - - if (entry->d_type & DT_DIR) { -- char path[PATH_MAX]; -- - if (!strcmp(entry->d_name, "..") || !strcmp(entry->d_name, ".")) - continue; - -@@ -341,8 +354,10 @@ - break; - - /* found */ -- snprintf(location, PATH_MAX, "%s/%s", dir_name, entry->d_name); -- ret = 0; -+ if (snprintf(location, PATH_MAX, "%s/%s", dir_name, entry->d_name) < 0) -+ ret = -1; -+ else -+ ret = 0; - break; - } - } -@@ -352,11 +367,32 @@ - return ret; - } - -+static int get_board_type(char *buf, int buf_size) -+{ -+ int bytes_read; -+ int len; -+ int fd; -+ -+ fd = open("/sys/firmware/devicetree/base/compatible", O_RDONLY); -+ if (fd < 0) -+ return -1; -+ -+ bytes_read = read(fd, buf, buf_size); -+ close(fd); -+ if (bytes_read < 0) -+ return -1; -+ -+ len = strnlen(buf, buf_size); -+ return (len < buf_size) ? len : -1; -+} -+ - int bcm43xx_init(int fd, int def_speed, int speed, struct termios *ti, - const char *bdaddr) - { - char chip_name[20]; -+ char board_specific_name[sizeof(chip_name) + 64]; - char fw_path[PATH_MAX]; -+ int chip_name_len; - - printf("bcm43xx_init\n"); - -@@ -366,12 +402,17 @@ - if (bcm43xx_read_local_name(fd, chip_name, sizeof(chip_name))) - return -1; - -- if (bcm43xx_locate_patch(FIRMWARE_DIR, chip_name, fw_path)) { -- fprintf(stderr, "Patch not found, continue anyway\n"); -+ /* Grab the board compatible string from Device Tree */ -+ chip_name_len = strlen(chip_name); -+ memcpy(board_specific_name, chip_name, chip_name_len); -+ board_specific_name[chip_name_len++] = '.'; -+ -+ if (((get_board_type(board_specific_name + chip_name_len, -+ sizeof(board_specific_name) - chip_name_len) < 0) || -+ bcm43xx_locate_patch(FIRMWARE_DIR, board_specific_name, fw_path)) && -+ bcm43xx_locate_patch(FIRMWARE_DIR, chip_name, fw_path)) { -+ fprintf(stderr, "Patch not found for %s, continue anyway\n", chip_name); - } else { -- if (bcm43xx_set_speed(fd, ti, speed)) -- return -1; -- - if (bcm43xx_load_firmware(fd, fw_path)) - return -1; - -@@ -381,6 +422,7 @@ - return -1; - } - -+ sleep(1); - if (bcm43xx_reset(fd)) - return -1; - } diff --git a/packages/network/bluez/patches/bluez-08-hciattach-retry-device-reset-when-no-response.patch b/packages/network/bluez/patches/bluez-08-hciattach-retry-device-reset-when-no-response.patch deleted file mode 100644 index ebf306187a..0000000000 --- a/packages/network/bluez/patches/bluez-08-hciattach-retry-device-reset-when-no-response.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 57f7aead147b138109709bbef9d4c674a3a6dc9b Mon Sep 17 00:00:00 2001 -From: meijjaa -Date: Mon, 23 Jan 2017 22:35:33 +0100 -Subject: [PATCH] hciattach: retry device reset when no response - -Some bcm chips need a couple of retries to reset. Currently init will just -timeout after a failed reset. - -Signed-off-by: meijjaa ---- - tools/hciattach_bcm43xx.c | 15 +++++++++++++-- - 1 file changed, 13 insertions(+), 2 deletions(-) - -diff --git a/tools/hciattach_bcm43xx.c b/tools/hciattach_bcm43xx.c -index bb24483..ad89161 100644 ---- a/tools/hciattach_bcm43xx.c -+++ b/tools/hciattach_bcm43xx.c -@@ -24,6 +24,7 @@ - #include - #include - #include -+#include - - #include "lib/bluetooth.h" - #include "lib/hci.h" -@@ -82,21 +83,31 @@ fail: - return -1; - } - -+int _fd; -+void expired(int sig) -+{ -+ unsigned char cmd[] = { HCI_COMMAND_PKT, 0x03, 0x0C, 0x00 }; -+ write(_fd, cmd, sizeof(cmd)) != sizeof(cmd); -+ alarm(4); -+} -+ - static int bcm43xx_reset(int fd) - { - unsigned char cmd[] = { HCI_COMMAND_PKT, 0x03, 0x0C, 0x00 }; - unsigned char resp[CC_MIN_SIZE]; - -+ _fd = fd; -+ signal(SIGALRM, expired); - if (write(fd, cmd, sizeof(cmd)) != sizeof(cmd)) { - fprintf(stderr, "Failed to write reset command\n"); - return -1; - } -- -+ alarm(4); - if (read_hci_event(fd, resp, sizeof(resp)) < CC_MIN_SIZE) { - fprintf(stderr, "Failed to reset chip, invalid HCI event\n"); - return -1; - } -- -+ alarm(0); - if (resp[4] != cmd[1] || resp[5] != cmd[2] || resp[6] != CMD_SUCCESS) { - fprintf(stderr, "Failed to reset chip, command failure\n"); - return -1; --- -2.38.1 diff --git a/packages/network/bluez/patches/bluez-11_sixaxis-fix-PID-navigation-controller.patch b/packages/network/bluez/patches/bluez-11_sixaxis-fix-PID-navigation-controller.patch deleted file mode 100644 index 12cf6a8b57..0000000000 --- a/packages/network/bluez/patches/bluez-11_sixaxis-fix-PID-navigation-controller.patch +++ /dev/null @@ -1,57 +0,0 @@ -From ccc0a0cba8a2fdb8cfb148276e7c9413a3e22dc8 Mon Sep 17 00:00:00 2001 -From: MilhouseVH -Date: Thu, 19 Sep 2019 22:48:19 +0100 -Subject: [PATCH] sixaxis: Fix PID for Navigation Controller - -Newsgroups: gmane.linux.bluez.kernel -Date: 2015-06-15 18:28:26 GMT (36 weeks, 4 days, 21 hours and 32 minutes ago) - -Navigation Controller is using PID 0x042f over USB but PID 0x0268 -(same as Dualshock 3) over BT. ---- - plugins/sixaxis.c | 8 +++++++- - profiles/input/sixaxis.h | 2 ++ - 2 files changed, 9 insertions(+), 1 deletion(-) - -diff --git a/plugins/sixaxis.c b/plugins/sixaxis.c -index 939fed7..f6baea7 100644 ---- a/plugins/sixaxis.c -+++ b/plugins/sixaxis.c -@@ -364,7 +364,13 @@ static bool setup_device(int fd, const char *sysfs_path, - info("sixaxis: setting up new device"); - - btd_device_device_set_name(device, cp->name); -- btd_device_set_pnpid(device, cp->source, cp->vid, cp->pid, cp->version); -+ -+ /* if device reports different pid/vid on BT prefer those over USB */ -+ if (cp->bt_pid) -+ btd_device_set_pnpid(device, cp->source, cp->vid, cp->bt_pid, cp->version); -+ else -+ btd_device_set_pnpid(device, cp->source, cp->vid, cp->pid, cp->version); -+ - btd_device_set_temporary(device, true); - - closure = g_new0(struct authentication_closure, 1); -diff --git a/profiles/input/sixaxis.h b/profiles/input/sixaxis.h -index 8e6f3cc..321a918 100644 ---- a/profiles/input/sixaxis.h -+++ b/profiles/input/sixaxis.h -@@ -38,6 +38,7 @@ struct cable_pairing { - uint16_t vid; - uint16_t pid; - uint16_t version; -+ uint16_t bt_pid; - CablePairingType type; - }; - -@@ -59,6 +60,7 @@ get_pairing(uint16_t vid, uint16_t pid) - .vid = 0x054c, - .pid = 0x042f, - .version = 0x0000, -+ .bt_pid = 0x0268, - .type = CABLE_PAIRING_SIXAXIS, - }, - { --- -2.7.4 - diff --git a/packages/network/bluez/patches/bluez-13-configure-Check-ell-path.patch b/packages/network/bluez/patches/bluez-13-configure-Check-ell-path.patch deleted file mode 100644 index bd9626e225..0000000000 --- a/packages/network/bluez/patches/bluez-13-configure-Check-ell-path.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 124187ef9abed60a7c40f751153e9c4516cd1f91 Mon Sep 17 00:00:00 2001 -From: Rudi Heitbaum -Date: Sat, 1 Jul 2023 01:31:20 +0000 -Subject: [PATCH] configure: Check ell path - -Use of AC_CHECK_FILE prevents cross compilation. -Instead use test to support cross compiling. - -Signed-off-by: Rudi Heitbaum ---- - configure.ac | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/configure.ac b/configure.ac -index eff297960..bc7edfcd3 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -298,9 +298,10 @@ if (test "${enable_external_ell}" = "yes"); then - AC_SUBST(ELL_LIBS) - fi - if (test "${enable_external_ell}" != "yes"); then -- AC_CHECK_FILE(${srcdir}/ell/ell.h, dummy=yes, -- AC_CHECK_FILE(${srcdir}/../ell/ell/ell.h, dummy=yes, -- AC_MSG_ERROR(ELL source is required or use --enable-external-ell))) -+ if (test ! -f ${srcdir}/ell/ell.h) && -+ (test ! -f ${srcdir}/../ell/ell/ell.h); then -+ AC_MSG_ERROR(ELL source is required or use --enable-external-ell) -+ fi - fi - AM_CONDITIONAL(EXTERNAL_ELL, test "${enable_external_ell}" = "yes" || - (test "${enable_btpclient}" != "yes" && --- -2.34.1 - diff --git a/packages/network/bluez/patches/bluez-21-hciattach-add-QCA9377-Tuffello-support.patch b/packages/network/bluez/patches/bluez-21-hciattach-add-QCA9377-Tuffello-support.patch deleted file mode 100644 index 98355a6126..0000000000 --- a/packages/network/bluez/patches/bluez-21-hciattach-add-QCA9377-Tuffello-support.patch +++ /dev/null @@ -1,2376 +0,0 @@ -From b42a087411199d7f480f1683bddd3206c5fd17b1 Mon Sep 17 00:00:00 2001 -From: Gary Bisson -Date: Wed, 17 Aug 2016 11:36:28 +0200 -Subject: [PATCH] hciattach: add QCA9377 Tuffello support - -From CodeAurora repository: -https://source.codeaurora.org/quic/la/platform/external/bluetooth/bluez/ - -Modifications: -- code indentation -- remove verbose traces -- use H4 protocol instead of IBS - -Also squashed: -hciattach_rome: simplify baudrate setting -hciattach_rome: do not override module internal MAC address -hciattach_rome: force IBS to disabled in NVM -hciattach_rome: display ROM and TLV info by default - -Signed-off-by: Gary Bisson ---- - Makefile.tools | 1 + - android/Android.mk | 1 + - tools/hciattach.c | 12 + - tools/hciattach.h | 1 + - tools/hciattach_rome.c | 1872 ++++++++++++++++++++++++++++++++++++++++ - tools/hciattach_rome.h | 388 +++++++++ - 6 files changed, 2275 insertions(+) - create mode 100644 tools/hciattach_rome.c - create mode 100644 tools/hciattach_rome.h - -diff --git a/Makefile.tools b/Makefile.tools -index b7b422506..e0e995089 100644 ---- a/Makefile.tools -+++ b/Makefile.tools -@@ -304,6 +304,7 @@ tools_hciattach_SOURCES = tools/hciattach.c tools/hciattach.h \ - tools/hciattach_ti.c \ - tools/hciattach_tialt.c \ - tools/hciattach_ath3k.c \ -+ tools/hciattach_rome.c \ - tools/hciattach_qualcomm.c \ - tools/hciattach_intel.c \ - tools/hciattach_bcm43xx.c -diff --git a/android/Android.mk b/android/Android.mk -index 76a826b47..01599c04b 100644 ---- a/android/Android.mk -+++ b/android/Android.mk -@@ -696,6 +696,7 @@ LOCAL_SRC_FILES := \ - bluez/tools/hciattach_ti.c \ - bluez/tools/hciattach_tialt.c \ - bluez/tools/hciattach_ath3k.c \ -+ bluez/tools/hciattach_rome.c \ - bluez/tools/hciattach_qualcomm.c \ - bluez/tools/hciattach_intel.c \ - bluez/tools/hciattach_bcm43xx.c \ -diff --git a/tools/hciattach.c b/tools/hciattach.c -index fad176c9b..02a65c692 100644 ---- a/tools/hciattach.c -+++ b/tools/hciattach.c -@@ -263,6 +263,11 @@ static int ath3k_pm(int fd, struct uart_t *u, struct termios *ti) - return ath3k_post(fd, u->pm); - } - -+static int qca(int fd, struct uart_t *u, struct termios *ti) -+{ -+ return qca_soc_init(fd, u->speed, u->bdaddr); -+} -+ - static int qualcomm(int fd, struct uart_t *u, struct termios *ti) - { - return qualcomm_init(fd, u->speed, ti, u->bdaddr); -@@ -1093,6 +1098,10 @@ struct uart_t uart[] = { - { "ath3k", 0x0000, 0x0000, HCI_UART_ATH3K, 115200, 115200, - FLOW_CTL, DISABLE_PM, NULL, ath3k_ps, ath3k_pm }, - -+ /* QCA ROME */ -+ { "qca", 0x0000, 0x0000, HCI_UART_H4, 115200, 115200, -+ FLOW_CTL, DISABLE_PM, NULL, qca, NULL }, -+ - /* QUALCOMM BTS */ - { "qualcomm", 0x0000, 0x0000, HCI_UART_H4, 115200, 115200, - FLOW_CTL, DISABLE_PM, NULL, qualcomm, NULL }, -@@ -1145,6 +1154,9 @@ static int init_uart(char *dev, struct uart_t *u, int send_break, int raw) - if (u->flags & AMP_DEV) - flags |= 1 << HCI_UART_CREATE_AMP; - -+ if (!strncmp(u->type, "qca", 3)) -+ flags |= 1 << HCI_UART_RESET_ON_INIT; -+ - fd = open(dev, O_RDWR | O_NOCTTY); - if (fd < 0) { - perror("Can't open serial port"); -diff --git a/tools/hciattach.h b/tools/hciattach.h -index 249aab49e..85c801ccf 100644 ---- a/tools/hciattach.h -+++ b/tools/hciattach.h -@@ -65,6 +65,7 @@ int bgb2xx_init(int dd, bdaddr_t *bdaddr); - int ath3k_init(int fd, int speed, int init_speed, char *bdaddr, - struct termios *ti); - int ath3k_post(int fd, int pm); -+int qca_soc_init(int fd, int speed, char *bdaddr); - int qualcomm_init(int fd, int speed, struct termios *ti, const char *bdaddr); - int intel_init(int fd, int init_speed, int *speed, struct termios *ti); - int bcm43xx_init(int fd, int def_speed, int speed, struct termios *ti, -diff --git a/tools/hciattach_rome.c b/tools/hciattach_rome.c -new file mode 100644 -index 000000000..9a7f222c4 ---- /dev/null -+++ b/tools/hciattach_rome.c -@@ -0,0 +1,1872 @@ -+/* -+ * -+ * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved. -+ * Not a Contribution. -+ * -+ * Copyright 2012 The Android Open Source Project -+ * -+ * Licensed under the Apache License, Version 2.0 (the "License"); you -+ * may not use this file except in compliance with the License. You may -+ * obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, software -+ * distributed under the License is distributed on an "AS IS" BASIS, -+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -+ * implied. See the License for the specific language governing -+ * permissions and limitations under the License. -+ * -+ */ -+ -+/****************************************************************************** -+ * -+ * Filename: hciattach_rome.c -+ * -+ * Description: Contains controller-specific functions, like -+ * firmware patch download -+ * low power mode operations -+ * -+ ******************************************************************************/ -+ -+#define MODULE_HAS_MAC_ADDR -+#define LOG_TAG "bt_vendor" -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "hciattach_rome.h" -+#include "hciattach.h" -+ -+/****************************************************************************** -+ ** Variables -+ ******************************************************************************/ -+FILE *file; -+unsigned char *phdr_buffer; -+unsigned char *pdata_buffer = NULL; -+patch_info rampatch_patch_info; -+int rome_ver = ROME_VER_UNKNOWN; -+unsigned char gTlv_type; -+unsigned char gtlv_dwndcfg; -+char *rampatch_file_path; -+char *nvm_file_path; -+vnd_userial_cb_t vnd_userial; -+unsigned char wait_vsc_evt = TRUE; -+ -+/***************************************************************************** -+ ** Functions -+ *****************************************************************************/ -+ -+/******************************************************************************* -+ ** -+ ** Function userial_to_tcio_baud -+ ** -+ ** Description helper function converts USERIAL baud rates into TCIO -+ ** conforming baud rates -+ ** -+ ** Returns TRUE/FALSE -+ ** -+ *******************************************************************************/ -+unsigned char userial_to_tcio_baud(unsigned char cfg_baud, unsigned int *baud) -+{ -+ if (cfg_baud == USERIAL_BAUD_115200) -+ *baud = B115200; -+ else if (cfg_baud == USERIAL_BAUD_4M) -+ *baud = B4000000; -+ else if (cfg_baud == USERIAL_BAUD_3M) -+ *baud = B3000000; -+ else if (cfg_baud == USERIAL_BAUD_2M) -+ *baud = B2000000; -+ else if (cfg_baud == USERIAL_BAUD_1M) -+ *baud = B1000000; -+ else if (cfg_baud == USERIAL_BAUD_921600) -+ *baud = B921600; -+ else if (cfg_baud == USERIAL_BAUD_460800) -+ *baud = B460800; -+ else if (cfg_baud == USERIAL_BAUD_230400) -+ *baud = B230400; -+ else if (cfg_baud == USERIAL_BAUD_57600) -+ *baud = B57600; -+ else if (cfg_baud == USERIAL_BAUD_19200) -+ *baud = B19200; -+ else if (cfg_baud == USERIAL_BAUD_9600) -+ *baud = B9600; -+ else if (cfg_baud == USERIAL_BAUD_1200) -+ *baud = B1200; -+ else if (cfg_baud == USERIAL_BAUD_600) -+ *baud = B600; -+ else { -+ fprintf(stderr, "userial vendor open: unsupported baud idx %i\n", cfg_baud); -+ *baud = B115200; -+ return FALSE; -+ } -+ -+ return TRUE; -+} -+ -+ -+/******************************************************************************* -+ ** -+ ** Function userial_vendor_set_baud -+ ** -+ ** Description Set new baud rate -+ ** -+ ** Returns None -+ ** -+ *******************************************************************************/ -+void userial_vendor_set_baud(unsigned char userial_baud) -+{ -+ unsigned int tcio_baud; -+ -+ if (tcgetattr(vnd_userial.fd, &vnd_userial.termios) < 0) { -+ perror("Can't get port settings"); -+ return; -+ } -+ cfmakeraw(&vnd_userial.termios); -+ vnd_userial.termios.c_cflag |= CLOCAL; -+ vnd_userial.termios.c_cflag |= CREAD; -+ vnd_userial.termios.c_cflag |= CS8; -+ tcsetattr(vnd_userial.fd, TCSANOW, &vnd_userial.termios); -+ -+ userial_to_tcio_baud(userial_baud, &tcio_baud); -+ -+ cfsetospeed(&vnd_userial.termios, tcio_baud); -+ cfsetispeed(&vnd_userial.termios, tcio_baud); -+ tcsetattr(vnd_userial.fd, TCSADRAIN, &vnd_userial.termios); /* don't change speed until last write done */ -+ -+} -+ -+ -+/******************************************************************************* -+ ** -+ ** Function userial_vendor_ioctl -+ ** -+ ** Description ioctl inteface -+ ** -+ ** Returns None -+ ** -+ *******************************************************************************/ -+int userial_vendor_ioctl(int fd, userial_vendor_ioctl_op_t op, int *p_data) -+{ -+ int err = -1; -+ struct termios ti; -+ -+ if (tcgetattr(fd, &ti) < 0) { -+ perror("Can't get port settings"); -+ return -1; -+ } -+ cfmakeraw(&ti); -+ ti.c_cflag |= CLOCAL; -+ ti.c_cflag |= CREAD; -+ ti.c_cflag |= CS8; -+ -+ switch(op) { -+#if (BT_WAKE_VIA_USERIAL_IOCTL==TRUE) -+ case USERIAL_OP_ASSERT_BT_WAKE: -+ VNDUSERIALDBG("## userial_vendor_ioctl: Asserting BT_Wake ##"); -+ err = ioctl(fd, USERIAL_IOCTL_BT_WAKE_ASSERT, NULL); -+ break; -+ -+ case USERIAL_OP_DEASSERT_BT_WAKE: -+ VNDUSERIALDBG("## userial_vendor_ioctl: De-asserting BT_Wake ##"); -+ err = ioctl(fd, USERIAL_IOCTL_BT_WAKE_DEASSERT, NULL); -+ break; -+ -+ case USERIAL_OP_GET_BT_WAKE_STATE: -+ err = ioctl(fd, USERIAL_IOCTL_BT_WAKE_GET_ST, p_data); -+ break; -+#endif // (BT_WAKE_VIA_USERIAL_IOCTL==TRUE) -+ case USERIAL_OP_FLOW_ON: -+ ti.c_cflag |= CRTSCTS; -+ if (err = tcsetattr(fd, TCSANOW, &ti) < 0) { -+ perror("Can't set port settings"); -+ return -1; -+ } -+ -+ break; -+ -+ case USERIAL_OP_FLOW_OFF: -+ ti.c_cflag &= ~CRTSCTS; -+ if (err = tcsetattr(fd, TCSANOW, &ti) < 0) { -+ fprintf(stderr, "Can't set port settings"); -+ return -1; -+ } -+ break; -+ -+ default: -+ break; -+ } -+ -+ return err; -+} -+ -+ -+int get_vs_hci_event(unsigned char *rsp) -+{ -+ int err = 0, soc_id =0; -+ unsigned char paramlen = 0; -+ -+ if ( (rsp[EVENTCODE_OFFSET] == VSEVENT_CODE) || (rsp[EVENTCODE_OFFSET] == EVT_CMD_COMPLETE)) -+ PR_DBG("%s: Received HCI-Vendor Specific event\n", __FUNCTION__); -+ else { -+ fprintf(stderr, "%s: Failed to receive HCI-Vendor Specific event\n", __FUNCTION__); -+ err = -EIO; -+ goto failed; -+ } -+ -+ /* Check the status of the operation */ -+ switch ( rsp[CMD_RSP_OFFSET] ) { -+ case EDL_CMD_REQ_RES_EVT: -+ switch(rsp[RSP_TYPE_OFFSET]) { -+ case EDL_PATCH_VER_RES_EVT: -+ case EDL_APP_VER_RES_EVT: -+ PR_INFO("Current Product ID\t\t: 0x%08x\n", -+ (unsigned int)(rsp[PATCH_PROD_ID_OFFSET +3] << 24 | -+ rsp[PATCH_PROD_ID_OFFSET+2] << 16 | -+ rsp[PATCH_PROD_ID_OFFSET+1] << 8 | -+ rsp[PATCH_PROD_ID_OFFSET] )); -+ -+ /* Patch Version indicates FW patch version */ -+ PR_INFO("Current Patch Version\t\t: 0x%04x\n", -+ (unsigned short)(rsp[PATCH_PATCH_VER_OFFSET + 1] << 8 | -+ rsp[PATCH_PATCH_VER_OFFSET] )); -+ -+ /* ROM Build Version indicates ROM build version like 1.0/1.1/2.0 */ -+ rome_ver = (int)(rsp[PATCH_ROM_BUILD_VER_OFFSET + 1] << 8 | -+ rsp[PATCH_ROM_BUILD_VER_OFFSET]); -+ PR_INFO("Current ROM Build Version\t: 0x%04x\n", rome_ver); -+ -+ /* In case rome 1.0/1.1, there is no SOC ID version available */ -+ if (paramlen - 10) { -+ soc_id = (unsigned int)(rsp[PATCH_SOC_VER_OFFSET +3] << 24 | -+ rsp[PATCH_SOC_VER_OFFSET+2] << 16 | -+ rsp[PATCH_SOC_VER_OFFSET+1] << 8 | -+ rsp[PATCH_SOC_VER_OFFSET]); -+ PR_INFO("Current SOC Version\t\t: 0x%08x\n", soc_id); -+ } -+ -+ /* Rome Chipset Version can be decided by Patch version and SOC version, -+ Upper 2 bytes will be used for Patch version and Lower 2 bytes will be -+ used for SOC as combination for BT host driver */ -+ rome_ver = (rome_ver << 16) | (soc_id & 0x0000ffff); -+ break; -+ case EDL_TVL_DNLD_RES_EVT: -+ case EDL_CMD_EXE_STATUS_EVT: -+ switch (err = rsp[CMD_STATUS_OFFSET]) { -+ case HCI_CMD_SUCCESS: -+ PR_DBG("%s: Download Packet successfully!\n", __FUNCTION__); -+ break; -+ case PATCH_LEN_ERROR: -+ fprintf(stderr, "%s: Invalid patch length argument passed for EDL PATCH " -+ "SET REQ cmd\n", __FUNCTION__); -+ break; -+ case PATCH_VER_ERROR: -+ fprintf(stderr, "%s: Invalid patch version argument passed for EDL PATCH " -+ "SET REQ cmd\n", __FUNCTION__); -+ break; -+ case PATCH_CRC_ERROR: -+ fprintf(stderr, "%s: CRC check of patch failed!!!\n", __FUNCTION__); -+ break; -+ case PATCH_NOT_FOUND: -+ fprintf(stderr, "%s: Invalid patch data!!!\n", __FUNCTION__); -+ break; -+ case TLV_TYPE_ERROR: -+ fprintf(stderr, "%s: TLV Type Error !!!\n", __FUNCTION__); -+ break; -+ default: -+ fprintf(stderr, "%s: Undefined error (0x%x)", __FUNCTION__, err); -+ break; -+ } -+ break; -+ } -+ break; -+ -+ case NVM_ACCESS_CODE: -+ PR_DBG("%s: NVM Access Code!!!\n", __FUNCTION__); -+ err = HCI_CMD_SUCCESS; -+ break; -+ case EDL_SET_BAUDRATE_RSP_EVT: -+ /* Rome 1.1 has bug with the response, so it should ignore it. */ -+ if (rsp[BAUDRATE_RSP_STATUS_OFFSET] != BAUDRATE_CHANGE_SUCCESS) { -+ fprintf(stderr, "%s: Set Baudrate request failed - 0x%x\n", __FUNCTION__, -+ rsp[CMD_STATUS_OFFSET]); -+ err = -1; -+ } -+ break; -+ default: -+ fprintf(stderr, "%s: Not a valid status!!!\n", __FUNCTION__); -+ err = -1; -+ break; -+ } -+ -+failed: -+ return err; -+} -+ -+ -+int wait_for_data(int fd, int maxTimeOut) -+{ -+ fd_set infids; -+ struct timeval timeout; -+ -+ if (maxTimeOut <= 0) { -+ fprintf(stderr, "%s: Invalid timeout value specified", __func__); -+ return -EINVAL; -+ } -+ -+ FD_ZERO (&infids); -+ FD_SET (fd, &infids); -+ timeout.tv_sec = maxTimeOut; -+ timeout.tv_usec = 0; -+ -+ /* Check whether data is available in TTY buffer before calling read() */ -+ if (select (fd + 1, &infids, NULL, NULL, &timeout) < 1) { -+ fprintf(stderr, "%s: Timing out on select for %d secs.\n", __FUNCTION__, maxTimeOut); -+ return -1; -+ } -+ -+ return 1; -+} -+ -+/* -+ * Read an VS HCI event from the given file descriptor. -+ */ -+int read_vs_hci_event(int fd, unsigned char* buf, int size) -+{ -+ int remain, r, retry = 0; -+ int count = 0; -+ -+ if (size <= 0) { -+ fprintf(stderr, "Invalid size arguement!\n"); -+ return -1; -+ } -+ -+ /* Check whether data is available in TTY buffer before calling read() */ -+ if (wait_for_data(fd, SELECT_TIMEOUT) < 1) -+ return -1; -+ -+ /* The first byte identifies the packet type. For HCI event packets, it -+ * should be 0x04, so we read until we get to the 0x04. */ -+ /* It will keep reading until find 0x04 byte */ -+ while (1) { -+ /* Read UART Buffer for HCI-DATA */ -+ r = read(fd, buf, 1); -+ if (r <= 0) { -+ fprintf(stderr, "%s: read() failed. error: %d\n", -+ __FUNCTION__, r); -+ return -1; -+ } -+ -+ /* Check if received data is HCI-DATA or not. -+ * If not HCI-DATA, then retry reading the UART Buffer once. -+ * Sometimes there could be corruption on the UART lines and to -+ * avoid that retry once reading the UART Buffer for HCI-DATA. -+ */ -+ if (buf[0] == 0x04) { /* Recvd. HCI DATA */ -+ retry = 0; -+ break; -+ } -+ else if (retry < MAX_RETRY_CNT) { /* Retry mechanism */ -+ retry++; -+ fprintf(stderr, "%s: Not an HCI-VS-Event! buf[0]: %d", -+ __FUNCTION__, buf[0]); -+ if (wait_for_data(fd, SELECT_TIMEOUT) < 1) -+ return -1; -+ else /* Data available in UART Buffer: Continue to read */ -+ continue; -+ } -+ else { /* RETRY failed : Exiting with failure */ -+ fprintf(stderr, "%s: RETRY failed!", __FUNCTION__); -+ return -1; -+ } -+ } -+ count++; -+ -+ /* The next two bytes are the event code and parameter total length. */ -+ while (count < 3) { -+ r = read(fd, buf + count, 3 - count); -+ if ((r <= 0) || (buf[1] != 0xFF )) { -+ fprintf(stderr, "It is not VS event !!\n"); -+ return -1; -+ } -+ count += r; -+ } -+ -+ /* Now we read the parameters. */ -+ if (buf[2] < (size - 3)) -+ remain = buf[2]; -+ else -+ remain = size - 3; -+ -+ while ((count - 3) < remain) { -+ r = read(fd, buf + count, remain - (count - 3)); -+ if (r <= 0) -+ return -1; -+ count += r; -+ } -+ -+ /* Check if the set patch command is successful or not */ -+ if (get_vs_hci_event(buf) != HCI_CMD_SUCCESS) -+ return -1; -+ -+ return count; -+} -+ -+ -+int hci_send_vs_cmd(int fd, unsigned char *cmd, unsigned char *rsp, int size) -+{ -+ int ret = 0; -+ -+ /* Send the HCI command packet to UART for transmission */ -+ ret = write(fd, cmd, size); -+ if (ret != size) { -+ fprintf(stderr, "%s: Send failed with ret value: %d\n", __FUNCTION__, ret); -+ goto failed; -+ } -+ -+ if (wait_vsc_evt) { -+ /* Check for response from the Controller */ -+ if (read_vs_hci_event(fd, rsp, HCI_MAX_EVENT_SIZE) < 0) { -+ ret = -ETIMEDOUT; -+ fprintf(stderr, "%s: Failed to get HCI-VS Event from SOC\n", __FUNCTION__); -+ goto failed; -+ } -+ } -+ -+failed: -+ return ret; -+} -+ -+void frame_hci_cmd_pkt( -+ unsigned char *cmd, -+ int edl_cmd, unsigned int p_base_addr, -+ int segtNo, int size -+ ) -+{ -+ int offset = 0; -+ hci_command_hdr *cmd_hdr; -+ -+ memset(cmd, 0x0, HCI_MAX_CMD_SIZE); -+ -+ cmd_hdr = (void *) (cmd + 1); -+ -+ cmd[0] = HCI_COMMAND_PKT; -+ cmd_hdr->opcode = cmd_opcode_pack(HCI_VENDOR_CMD_OGF, HCI_PATCH_CMD_OCF); -+ cmd_hdr->plen = size; -+ cmd[4] = edl_cmd; -+ -+ switch (edl_cmd) { -+ case EDL_PATCH_SET_REQ_CMD: -+ /* Copy the patch header info as CMD params */ -+ memcpy(&cmd[5], phdr_buffer, PATCH_HDR_LEN); -+ PR_DBG("%s: Sending EDL_PATCH_SET_REQ_CMD\n", __FUNCTION__); -+ PR_DBG("HCI-CMD %d:\t0x%x \t0x%x \t0x%x \t0x%x \t0x%x\n", -+ segtNo, cmd[0], cmd[1], cmd[2], cmd[3], cmd[4]); -+ break; -+ case EDL_PATCH_DLD_REQ_CMD: -+ offset = ((segtNo - 1) * MAX_DATA_PER_SEGMENT); -+ p_base_addr += offset; -+ cmd_hdr->plen = (size + 6); -+ cmd[5] = (size + 4); -+ cmd[6] = EXTRACT_BYTE(p_base_addr, 0); -+ cmd[7] = EXTRACT_BYTE(p_base_addr, 1); -+ cmd[8] = EXTRACT_BYTE(p_base_addr, 2); -+ cmd[9] = EXTRACT_BYTE(p_base_addr, 3); -+ memcpy(&cmd[10], (pdata_buffer + offset), size); -+ -+ PR_DBG("%s: Sending EDL_PATCH_DLD_REQ_CMD: size: %d bytes\n", -+ __FUNCTION__, size); -+ PR_DBG("HCI-CMD %d:\t0x%x\t0x%x\t0x%x\t0x%x\t0x%x\t0x%x\t0x%x\t" -+ "0x%x\t0x%x\t0x%x\t\n", segtNo, cmd[0], cmd[1], cmd[2], -+ cmd[3], cmd[4], cmd[5], cmd[6], cmd[7], cmd[8], cmd[9]); -+ break; -+ case EDL_PATCH_ATCH_REQ_CMD: -+ PR_DBG("%s: Sending EDL_PATCH_ATTACH_REQ_CMD\n", __FUNCTION__); -+ PR_DBG("HCI-CMD %d:\t0x%x \t0x%x \t0x%x \t0x%x \t0x%x\n", -+ segtNo, cmd[0], cmd[1], cmd[2], cmd[3], cmd[4]); -+ break; -+ case EDL_PATCH_RST_REQ_CMD: -+ PR_DBG("%s: Sending EDL_PATCH_RESET_REQ_CMD\n", __FUNCTION__); -+ PR_DBG("HCI-CMD %d:\t0x%x \t0x%x \t0x%x \t0x%x \t0x%x\n", -+ segtNo, cmd[0], cmd[1], cmd[2], cmd[3], cmd[4]); -+ break; -+ case EDL_PATCH_VER_REQ_CMD: -+ PR_DBG("%s: Sending EDL_PATCH_VER_REQ_CMD\n", __FUNCTION__); -+ PR_DBG("HCI-CMD %d:\t0x%x \t0x%x \t0x%x \t0x%x \t0x%x\n", -+ segtNo, cmd[0], cmd[1], cmd[2], cmd[3], cmd[4]); -+ break; -+ case EDL_PATCH_TLV_REQ_CMD: -+ PR_DBG("%s: Sending EDL_PATCH_TLV_REQ_CMD\n", __FUNCTION__); -+ /* Parameter Total Length */ -+ cmd[3] = size +2; -+ -+ /* TLV Segment Length */ -+ cmd[5] = size; -+ PR_DBG("HCI-CMD %d:\t0x%x \t0x%x \t0x%x \t0x%x \t0x%x \t0x%x\n", -+ segtNo, cmd[0], cmd[1], cmd[2], cmd[3], cmd[4], cmd[5]); -+ offset = (segtNo * MAX_SIZE_PER_TLV_SEGMENT); -+ memcpy(&cmd[6], (pdata_buffer + offset), size); -+ break; -+ default: -+ fprintf(stderr, "%s: Unknown EDL CMD !!!\n", __FUNCTION__); -+ } -+} -+ -+void rome_extract_patch_header_info(unsigned char *buf) -+{ -+ int index; -+ -+ /* Extract patch id */ -+ for (index = 0; index < 4; index++) -+ rampatch_patch_info.patch_id |= -+ (LSH(buf[index + P_ID_OFFSET], (index * 8))); -+ -+ /* Extract (ROM and BUILD) version information */ -+ for (index = 0; index < 2; index++) -+ rampatch_patch_info.patch_ver.rom_version |= -+ (LSH(buf[index + P_ROME_VER_OFFSET], (index * 8))); -+ -+ for (index = 0; index < 2; index++) -+ rampatch_patch_info.patch_ver.build_version |= -+ (LSH(buf[index + P_BUILD_VER_OFFSET], (index * 8))); -+ -+ /* Extract patch base and entry addresses */ -+ for (index = 0; index < 4; index++) -+ rampatch_patch_info.patch_base_addr |= -+ (LSH(buf[index + P_BASE_ADDR_OFFSET], (index * 8))); -+ -+ /* Patch BASE & ENTRY addresses are same */ -+ rampatch_patch_info.patch_entry_addr = rampatch_patch_info.patch_base_addr; -+ -+ /* Extract total length of the patch payload */ -+ for (index = 0; index < 4; index++) -+ rampatch_patch_info.patch_length |= -+ (LSH(buf[index + P_LEN_OFFSET], (index * 8))); -+ -+ /* Extract the CRC checksum of the patch payload */ -+ for (index = 0; index < 4; index++) -+ rampatch_patch_info.patch_crc |= -+ (LSH(buf[index + P_CRC_OFFSET], (index * 8))); -+ -+ /* Extract patch control value */ -+ for (index = 0; index < 4; index++) -+ rampatch_patch_info.patch_ctrl |= -+ (LSH(buf[index + P_CONTROL_OFFSET], (index * 8))); -+ -+ fprintf(stderr, "PATCH_ID\t : 0x%x\n", rampatch_patch_info.patch_id); -+ fprintf(stderr, "ROM_VERSION\t : 0x%x\n", rampatch_patch_info.patch_ver.rom_version); -+ fprintf(stderr, "BUILD_VERSION\t : 0x%x\n", rampatch_patch_info.patch_ver.build_version); -+ fprintf(stderr, "PATCH_LENGTH\t : 0x%x\n", rampatch_patch_info.patch_length); -+ fprintf(stderr, "PATCH_CRC\t : 0x%x\n", rampatch_patch_info.patch_crc); -+ fprintf(stderr, "PATCH_CONTROL\t : 0x%x\n", rampatch_patch_info.patch_ctrl); -+ fprintf(stderr, "PATCH_BASE_ADDR\t : 0x%x\n", rampatch_patch_info.patch_base_addr); -+ -+} -+ -+int rome_edl_set_patch_request(int fd) -+{ -+ int size, err; -+ unsigned char cmd[HCI_MAX_CMD_SIZE]; -+ unsigned char rsp[HCI_MAX_EVENT_SIZE]; -+ -+ /* Frame the HCI CMD to be sent to the Controller */ -+ frame_hci_cmd_pkt(cmd, EDL_PATCH_SET_REQ_CMD, 0, -+ -1, PATCH_HDR_LEN + 1); -+ -+ /* Total length of the packet to be sent to the Controller */ -+ size = (HCI_CMD_IND + HCI_COMMAND_HDR_SIZE + cmd[PLEN]); -+ -+ /* Send HCI Command packet to Controller */ -+ err = hci_send_vs_cmd(fd, (unsigned char *)cmd, rsp, size); -+ if (err != size) { -+ fprintf(stderr, "Failed to set the patch info to the Controller!\n"); -+ goto error; -+ } -+ -+ err = read_hci_event(fd, rsp, HCI_MAX_EVENT_SIZE); -+ if (err < 0) { -+ fprintf(stderr, "%s: Failed to set patch info on Controller\n", __FUNCTION__); -+ goto error; -+ } -+error: -+ return err; -+} -+ -+int rome_edl_patch_download_request(int fd) -+{ -+ int no_of_patch_segment; -+ int index = 1, err = 0, size = 0; -+ unsigned int p_base_addr; -+ unsigned char cmd[HCI_MAX_CMD_SIZE]; -+ unsigned char rsp[HCI_MAX_EVENT_SIZE]; -+ -+ no_of_patch_segment = (rampatch_patch_info.patch_length / -+ MAX_DATA_PER_SEGMENT); -+ -+ /* Initialize the patch base address from the one read from bin file */ -+ p_base_addr = rampatch_patch_info.patch_base_addr; -+ -+ /* -+ * Depending upon size of the patch payload, download the patches in -+ * segments with a max. size of 239 bytes -+ */ -+ for (index = 1; index <= no_of_patch_segment; index++) { -+ /* Frame the HCI CMD PKT to be sent to Controller*/ -+ frame_hci_cmd_pkt(cmd, EDL_PATCH_DLD_REQ_CMD, p_base_addr, -+ index, MAX_DATA_PER_SEGMENT); -+ -+ /* Total length of the packet to be sent to the Controller */ -+ size = (HCI_CMD_IND + HCI_COMMAND_HDR_SIZE + cmd[PLEN]); -+ -+ /* Initialize the RSP packet everytime to 0 */ -+ memset(rsp, 0x0, HCI_MAX_EVENT_SIZE); -+ -+ /* Send HCI Command packet to Controller */ -+ err = hci_send_vs_cmd(fd, (unsigned char *)cmd, rsp, size); -+ if (err != size) { -+ fprintf(stderr, "Failed to send the patch payload to the Controller!\n"); -+ goto error; -+ } -+ -+ /* Read Command Complete Event */ -+ err = read_hci_event(fd, rsp, HCI_MAX_EVENT_SIZE); -+ if (err < 0) { -+ fprintf(stderr, "%s: Failed to downlaod patch segment: %d!\n", -+ __FUNCTION__, index); -+ goto error; -+ } -+ } -+ -+ /* Check if any pending patch data to be sent */ -+ size = (rampatch_patch_info.patch_length < MAX_DATA_PER_SEGMENT) ? -+ rampatch_patch_info.patch_length : -+ (rampatch_patch_info.patch_length % MAX_DATA_PER_SEGMENT); -+ -+ if (size) { -+ /* Frame the HCI CMD PKT to be sent to Controller*/ -+ frame_hci_cmd_pkt(cmd, EDL_PATCH_DLD_REQ_CMD, p_base_addr, index, size); -+ -+ /* Initialize the RSP packet everytime to 0 */ -+ memset(rsp, 0x0, HCI_MAX_EVENT_SIZE); -+ -+ /* Total length of the packet to be sent to the Controller */ -+ size = (HCI_CMD_IND + HCI_COMMAND_HDR_SIZE + cmd[PLEN]); -+ -+ /* Send HCI Command packet to Controller */ -+ err = hci_send_vs_cmd(fd, (unsigned char *)cmd, rsp, size); -+ if (err != size) { -+ fprintf(stderr, "Failed to send the patch payload to the Controller!\n"); -+ goto error; -+ } -+ -+ /* Read Command Complete Event */ -+ err = read_hci_event(fd, rsp, HCI_MAX_EVENT_SIZE); -+ if (err < 0) { -+ fprintf(stderr, "%s: Failed to downlaod patch segment: %d!\n", -+ __FUNCTION__, index); -+ goto error; -+ } -+ } -+ -+error: -+ return err; -+} -+ -+static int rome_download_rampatch(int fd) -+{ -+ int c, size, index, ret = -1; -+ -+ /* Get handle to the RAMPATCH binary file */ -+ fprintf(stderr, "%s: Getting handle to the RAMPATCH binary file from %s\n", __FUNCTION__, ROME_FW_PATH); -+ file = fopen(ROME_FW_PATH, "r"); -+ if (file == NULL) { -+ fprintf(stderr, "%s: Failed to get handle to the RAMPATCH bin file!\n", -+ __FUNCTION__); -+ return -ENFILE; -+ } -+ -+ /* Allocate memory for the patch headder info */ -+ fprintf(stderr, "%s: Allocating memory for the patch header\n", __FUNCTION__); -+ phdr_buffer = (unsigned char *) malloc(PATCH_HDR_LEN + 1); -+ if (phdr_buffer == NULL) { -+ fprintf(stderr, "%s: Failed to allocate memory for patch header\n", -+ __FUNCTION__); -+ goto phdr_alloc_failed; -+ } -+ for (index = 0; index < PATCH_HDR_LEN + 1; index++) -+ phdr_buffer[index] = 0x0; -+ -+ /* Read 28 bytes of patch header information */ -+ fprintf(stderr, "%s: Reading patch header info\n", __FUNCTION__); -+ index = 0; -+ do { -+ c = fgetc (file); -+ phdr_buffer[index++] = (unsigned char)c; -+ } while (index != PATCH_HDR_LEN); -+ -+ /* Save the patch header info into local structure */ -+ fprintf(stderr, "%s: Saving patch hdr. info\n", __FUNCTION__); -+ rome_extract_patch_header_info((unsigned char *)phdr_buffer); -+ -+ /* Set the patch header info onto the Controller */ -+ ret = rome_edl_set_patch_request(fd); -+ if (ret < 0) { -+ fprintf(stderr, "%s: Error setting the patchheader info!\n", __FUNCTION__); -+ goto pdata_alloc_failed; -+ } -+ -+ /* Allocate memory for the patch payload */ -+ fprintf(stderr, "%s: Allocating memory for patch payload\n", __FUNCTION__); -+ size = rampatch_patch_info.patch_length; -+ pdata_buffer = (unsigned char *) malloc(size+1); -+ if (pdata_buffer == NULL) { -+ fprintf(stderr, "%s: Failed to allocate memory for patch payload\n", -+ __FUNCTION__); -+ goto pdata_alloc_failed; -+ } -+ for (index = 0; index < size+1; index++) -+ pdata_buffer[index] = 0x0; -+ -+ /* Read the patch data from Rampatch binary image */ -+ fprintf(stderr, "%s: Reading patch payload from RAMPATCH file\n", __FUNCTION__); -+ index = 0; -+ do { -+ c = fgetc (file); -+ pdata_buffer[index++] = (unsigned char)c; -+ } while (c != EOF); -+ -+ /* Downloading patches in segments to controller */ -+ ret = rome_edl_patch_download_request(fd); -+ if (ret < 0) { -+ fprintf(stderr, "%s: Error downloading patch segments!\n", __FUNCTION__); -+ goto cleanup; -+ } -+cleanup: -+ free(pdata_buffer); -+pdata_alloc_failed: -+ free(phdr_buffer); -+phdr_alloc_failed: -+ fclose(file); -+ -+ return ret; -+} -+ -+int rome_attach_rampatch(int fd) -+{ -+ int size, err; -+ unsigned char cmd[HCI_MAX_CMD_SIZE]; -+ unsigned char rsp[HCI_MAX_EVENT_SIZE]; -+ -+ /* Frame the HCI CMD to be sent to the Controller */ -+ frame_hci_cmd_pkt(cmd, EDL_PATCH_ATCH_REQ_CMD, 0, -+ -1, EDL_PATCH_CMD_LEN); -+ -+ /* Total length of the packet to be sent to the Controller */ -+ size = (HCI_CMD_IND + HCI_COMMAND_HDR_SIZE + cmd[PLEN]); -+ -+ /* Send HCI Command packet to Controller */ -+ err = hci_send_vs_cmd(fd, (unsigned char *)cmd, rsp, size); -+ if (err != size) { -+ fprintf(stderr, "Failed to attach the patch payload to the Controller!\n"); -+ goto error; -+ } -+ -+ /* Read Command Complete Event */ -+ err = read_hci_event(fd, rsp, HCI_MAX_EVENT_SIZE); -+ if (err < 0) { -+ fprintf(stderr, "%s: Failed to attach the patch segment(s)\n", __FUNCTION__); -+ goto error; -+ } -+error: -+ return err; -+} -+ -+int rome_rampatch_reset(int fd) -+{ -+ int size, err = 0; -+ unsigned char cmd[HCI_MAX_CMD_SIZE]; -+ struct timespec tm = { 0, 100*1000*1000 }; /* 100 ms */ -+ -+ /* Frame the HCI CMD to be sent to the Controller */ -+ frame_hci_cmd_pkt(cmd, EDL_PATCH_RST_REQ_CMD, 0, -+ -1, EDL_PATCH_CMD_LEN); -+ -+ /* Total length of the packet to be sent to the Controller */ -+ size = (HCI_CMD_IND + HCI_COMMAND_HDR_SIZE + EDL_PATCH_CMD_LEN); -+ -+ /* Send HCI Command packet to Controller */ -+ err = write(fd, cmd, size); -+ if (err != size) { -+ fprintf(stderr, "%s: Send failed with ret value: %d\n", __FUNCTION__, err); -+ goto error; -+ } -+ -+ /* -+ * Controller doesn't sends any response for the patch reset -+ * command. HOST has to wait for 100ms before proceeding. -+ */ -+ nanosleep(&tm, NULL); -+ -+error: -+ return err; -+} -+ -+int get_value_from_config(char *file_path,char *param) -+{ -+ FILE *pfile = NULL; -+ char *line = NULL; -+ char *pch = NULL; -+ char param_str[20]; -+ int bytes_read = 0, position; -+ int ret = -1; -+ -+ if (!file_path || !param) { -+ fprintf(stderr,"Invalid arguments\n"); -+ return -EINVAL; -+ } -+ -+ pfile = fopen(file_path, "r" ); -+ if (!pfile) { -+ fprintf(stderr, "Failed to open %s\n", file_path); -+ return ret; -+ } -+ -+ while (getline(&line, &bytes_read, pfile) > 0 ) { -+ if (line[0] != '#' && line[0] != '\n') { -+ pch = memchr(line, '=', strlen(line)); -+ if (pch != NULL) { -+ position = pch - line; -+ strncpy(param_str, line, position); -+ if (strncmp(param_str, param, position) == 0) { -+ ret = atoi(pch + 1); -+ break; -+ } -+ } -+ } -+ } -+ free(line); -+ fclose(pfile); -+ return ret; -+} -+ -+int read_bd_address(unsigned char *bdaddr) -+{ -+ int fd = -1; -+ int readPtr = 0; -+ unsigned char data[BD_ADDR_LEN]; -+ -+ /* Open the persist file for reading device address*/ -+ fd = open("/etc/bluetooth/.bt_nv.bin", O_RDONLY); -+ if (fd < 0) { -+ fprintf(stderr, "%s: Open failed: Programming default BD ADDR\n", __func__); -+ return -1; -+ } -+ -+ /* Read the NVM Header : fp will be advanced by readPtr number of bytes */ -+ readPtr = read(fd, data, PERSIST_HEADER_LEN); -+ if (readPtr > 0) -+ fprintf(stderr, "%s: Persist header data: %02x \t %02x \t %02x\n", __func__, -+ data[NVITEM], data[RDWR_PROT], data[NVITEM_SIZE]); -+ else { -+ fprintf(stderr, "%s: Read from persist memory failed : Programming default" -+ " BD ADDR\n"); -+ close(fd); -+ return -1; -+ } -+ -+ /* Check for BD ADDR length before programming */ -+ if (data[NVITEM_SIZE] != BD_ADDR_LEN) { -+ fprintf(stderr, "Invalid BD ADDR: Programming default BD ADDR!\n"); -+ close(fd); -+ return -1; -+ } -+ -+ /* Read the BD ADDR info */ -+ readPtr = read(fd, data, BD_ADDR_LEN); -+ if (readPtr > 0) -+ fprintf(stderr, "BD-ADDR: ==> %02x:%02x:%02x:%02x:%02x:%02x\n", data[0], -+ data[1], data[2], data[3], data[4], data[5]); -+ else { -+ fprintf(stderr, "%s: Read from persist memory failed : Programming default" -+ " BD ADDR\n"); -+ close(fd); -+ return -1; -+ } -+ memcpy(bdaddr, data, BD_ADDR_LEN); -+ close(fd); -+ return 0; -+} -+ -+int isSpeedValid(int speed, unsigned char *baud_rate) -+{ -+ switch(speed) { -+ case 9600: -+ *baud_rate = BAUDRATE_9600; -+ break; -+ case 19200: -+ *baud_rate = BAUDRATE_19200; -+ break; -+ case 57600: -+ *baud_rate = BAUDRATE_57600; -+ break; -+ case 115200: -+ *baud_rate = BAUDRATE_115200; -+ break; -+ case 230400: -+ *baud_rate = BAUDRATE_230400; -+ break; -+ case 460800: -+ *baud_rate = BAUDRATE_460800; -+ break; -+ case 921600: -+ *baud_rate = BAUDRATE_921600; -+ break; -+ case 1000000: -+ *baud_rate = BAUDRATE_1000000; -+ break; -+ case 2000000: -+ *baud_rate = BAUDRATE_2000000; -+ break; -+ case 3000000: -+ *baud_rate = BAUDRATE_3000000; -+ break; -+ case 4000000: -+ *baud_rate = BAUDRATE_4000000; -+ break; -+ case 300: -+ case 600: -+ case 1200: -+ case 2400: -+ default: -+ fprintf(stderr, "Invalid baudrate, default to 115200!\n"); -+ *baud_rate = BAUDRATE_115200; -+ break; -+ } -+ return -1; -+} -+ -+int rome_get_tlv_file(char *file_path, unsigned char baud_rate) -+{ -+ FILE * pFile; -+ long fileSize; -+ int readSize, nvm_length, nvm_index, i; -+ unsigned short nvm_tag_len; -+ tlv_patch_info *ptlv_header; -+ tlv_nvm_hdr *nvm_ptr; -+ unsigned char data_buf[PRINT_BUF_SIZE]={0,}; -+ unsigned char *nvm_byte_ptr; -+ unsigned char bdaddr[6]; -+ unsigned short pcm_value, ibs_value; -+ unsigned short deep_sleep_value; -+ -+ pFile = fopen ( file_path , "r" ); -+ if (pFile==NULL) { -+ fprintf(stderr, "%s File Open Fail\n", file_path); -+ return -1; -+ } -+ -+ /* Get File Size */ -+ fseek (pFile , 0 , SEEK_END); -+ -+ if ((fileSize = ftell(pFile)) < 0) { -+ fprintf(stderr, "%s: fail to get current file position\n", file_path); -+ fclose(pFile); -+ return -1; -+ } -+ -+ if (fileSize == 0) { -+ fprintf(stderr, "%s: no content in the file\n", file_path); -+ fclose(pFile); -+ return -1; -+ } -+ -+ rewind (pFile); -+ -+ pdata_buffer = (unsigned char*) malloc (sizeof(char)*fileSize); -+ if (pdata_buffer == NULL) { -+ fprintf(stderr, "Allocated Memory failed\n"); -+ fclose (pFile); -+ return -1; -+ } -+ -+ /* Copy file into allocated buffer */ -+ readSize = fread (pdata_buffer,1,fileSize,pFile); -+ -+ /* File Close */ -+ fclose (pFile); -+ -+ if (readSize != fileSize) { -+ fprintf(stderr, "Read file size(%d) not matched with actual file size (%ld bytes)\n",readSize,fileSize); -+ return -1; -+ } -+ -+ ptlv_header = (tlv_patch_info *) pdata_buffer; -+ -+ /* To handle different event between rampatch and NVM */ -+ gTlv_type = ptlv_header->tlv_type; -+ gtlv_dwndcfg = ptlv_header->tlv.patch.dwnd_cfg; -+ -+ if (ptlv_header->tlv_type == TLV_TYPE_PATCH) { -+ PR_INFO("====================================================\n"); -+ PR_INFO("TLV Type : 0x%x\n", ptlv_header->tlv_type); -+ PR_INFO("Length : %d bytes\n", (ptlv_header->tlv_length1) | -+ (ptlv_header->tlv_length2 << 8) | -+ (ptlv_header->tlv_length3 << 16)); -+ PR_INFO("Total Length : %d bytes\n", ptlv_header->tlv.patch.tlv_data_len); -+ PR_INFO("Patch Data Length : %d bytes\n",ptlv_header->tlv.patch.tlv_patch_data_len); -+ PR_INFO("Signing Format Version : 0x%x\n", ptlv_header->tlv.patch.sign_ver); -+ PR_INFO("Signature Algorithm : 0x%x\n", ptlv_header->tlv.patch.sign_algorithm); -+ PR_INFO("Event Handling : 0x%x\n", ptlv_header->tlv.patch.dwnd_cfg); -+ PR_INFO("Reserved : 0x%x\n", ptlv_header->tlv.patch.reserved1); -+ PR_INFO("Product ID : 0x%04x\n", ptlv_header->tlv.patch.prod_id); -+ PR_INFO("Rom Build Version : 0x%04x\n", ptlv_header->tlv.patch.build_ver); -+ PR_INFO("Patch Version : 0x%04x\n", ptlv_header->tlv.patch.patch_ver); -+ PR_INFO("Reserved : 0x%x\n", ptlv_header->tlv.patch.reserved2); -+ PR_INFO("Patch Entry Address : 0x%x\n", (ptlv_header->tlv.patch.patch_entry_addr)); -+ PR_INFO("====================================================\n"); -+ -+ } else if (ptlv_header->tlv_type == TLV_TYPE_NVM) { -+ PR_INFO("====================================================\n"); -+ PR_INFO("TLV Type : 0x%x\n", ptlv_header->tlv_type); -+ PR_INFO("Length : %d bytes\n", nvm_length = -+ (ptlv_header->tlv_length1) | -+ (ptlv_header->tlv_length2 << 8) | -+ (ptlv_header->tlv_length3 << 16)); -+ -+ if (nvm_length <= 0) -+ return readSize; -+ -+ for(nvm_byte_ptr=(unsigned char *)(nvm_ptr = &(ptlv_header->tlv.nvm)), nvm_index=0; -+ nvm_index < nvm_length ; nvm_ptr = (tlv_nvm_hdr *) nvm_byte_ptr) { -+ PR_DBG("TAG ID\t\t\t : %d\n", nvm_ptr->tag_id); -+ PR_DBG("TAG Length\t\t\t : %d\n", nvm_tag_len = nvm_ptr->tag_len); -+ PR_DBG("TAG Pointer\t\t\t : %d\n", nvm_ptr->tag_ptr); -+ PR_DBG("TAG Extended Flag\t\t : %d\n", nvm_ptr->tag_ex_flag); -+ -+ /* Increase nvm_index to NVM data */ -+ nvm_index+=sizeof(tlv_nvm_hdr); -+ nvm_byte_ptr+=sizeof(tlv_nvm_hdr); -+ -+#ifndef MODULE_HAS_MAC_ADDR -+ /* Write BD Address */ -+ if (nvm_ptr->tag_id == TAG_NUM_2 && read_bd_address(bdaddr) == 0) { -+ memcpy(nvm_byte_ptr, bdaddr, 6); -+ PR_INFO("Overriding default BD ADDR with user" -+ " programmed BD Address: %02x:%02x:%02x:%02x:%02x:%02x\n", -+ *nvm_byte_ptr, *(nvm_byte_ptr+1), *(nvm_byte_ptr+2), -+ *(nvm_byte_ptr+3), *(nvm_byte_ptr+4), *(nvm_byte_ptr+5)); -+ } -+#else -+ /* Remove it from NVM data */ -+ if (nvm_ptr->tag_id == TAG_NUM_2) { -+ int nvm_size = nvm_ptr->tag_len + sizeof(tlv_nvm_hdr); -+ PR_INFO("Skip BD Address from NVM\n"); -+ nvm_index += nvm_ptr->tag_len; -+ nvm_byte_ptr += nvm_ptr->tag_len; -+ memmove(nvm_ptr, nvm_byte_ptr, nvm_length - nvm_index); -+ nvm_length -= nvm_size; -+ nvm_byte_ptr -= nvm_size; -+ readSize -= nvm_size; -+ nvm_index -= nvm_size; -+ continue; -+ } -+#endif -+ -+ if (nvm_ptr->tag_id == TAG_NUM_17) { -+ PR_DBG("Forcing IBS to be disabled\n"); -+ nvm_byte_ptr[FWCONF_IBS_VAL_OFFSET] &= -+ (~(FWCONF_IBS_ENABLE << FWCONF_IBS_VAL_BIT)); -+ if (baud_rate != nvm_byte_ptr[FWCONF_BAUD_VAL_OFFSET]) { -+ PR_INFO("Change Vendor Baud from 0x%02x to 0x%02x\n", -+ nvm_byte_ptr[FWCONF_BAUD_VAL_OFFSET], baud_rate); -+ nvm_byte_ptr[FWCONF_BAUD_VAL_OFFSET] = baud_rate; -+ } -+ } -+ -+ if (nvm_ptr->tag_id == TAG_NUM_27) { -+ if ((deep_sleep_value = -+ get_value_from_config(FW_CONFIG_FILE_PATH, "DEEP_SLEEP")) >= 0) { -+ if (deep_sleep_value == FWCONF_DEEP_SLEEP_DISABLE) { -+ nvm_byte_ptr[FWCONF_DEEP_SLEEP_BYTE_OFFSET] &= -+ (~(1 << FWCONF_DEEP_SLEEP_BIT_OFFSET)); -+ } else if (deep_sleep_value == FWCONF_DEEP_SLEEP_ENABLE) { -+ nvm_byte_ptr[FWCONF_DEEP_SLEEP_BYTE_OFFSET] |= -+ (1 << FWCONF_DEEP_SLEEP_BIT_OFFSET); -+ } else { -+ fprintf(stderr, "Ignoring invalid deep sleep config value\n"); -+ } -+ } -+ } -+ -+ /* Read from file and check what PCM Configuration is required: -+ * Master = 0 /Slave = 1 */ -+ /* Override PCM configuration */ -+ if (nvm_ptr->tag_id == TAG_NUM_44) { -+ if ((pcm_value = -+ get_value_from_config(FW_CONFIG_FILE_PATH, "PCM")) >= 0) { -+ -+ if (pcm_value == FWCONF_PCM_SLAVE) { -+ nvm_byte_ptr[FWCONF_PCM_MS_OFFSET_1] |= -+ (1 << FWCONF_PCM_ROLE_BIT_OFFSET); -+ nvm_byte_ptr[FWCONF_PCM_MS_OFFSET_2] |= -+ (1 << FWCONF_PCM_ROLE_BIT_OFFSET); -+ } else if (pcm_value == FWCONF_PCM_MASTER) { -+ nvm_byte_ptr[FWCONF_PCM_MS_OFFSET_1] &= -+ (~(1 << FWCONF_PCM_ROLE_BIT_OFFSET)); -+ nvm_byte_ptr[FWCONF_PCM_MS_OFFSET_2] &= -+ (~(1 << FWCONF_PCM_ROLE_BIT_OFFSET)); -+ } -+ } -+ } -+ -+ for(i =0;(itag_len && (i*3 + 2) < PRINT_BUF_SIZE);i++) -+ snprintf((char *) data_buf, PRINT_BUF_SIZE, "%s%.02x ", -+ (char *)data_buf, *(nvm_byte_ptr + i)); -+ -+ PR_DBG("TAG Data\t\t\t : %s\n", data_buf); -+ -+ /* Clear buffer */ -+ memset(data_buf, 0x0, PRINT_BUF_SIZE); -+ -+ /* increased by tag_len */ -+ nvm_index+=nvm_ptr->tag_len; -+ nvm_byte_ptr +=nvm_ptr->tag_len; -+ } -+ -+ PR_INFO("====================================================\n"); -+ -+ } else { -+ fprintf(stderr, "TLV Header type is unknown (%d) \n", ptlv_header->tlv_type); -+ } -+ -+ return readSize; -+} -+ -+int rome_tlv_dnld_segment(int fd, int index, int seg_size, unsigned char wait_cc_evt) -+{ -+ int size=0, err = -1; -+ unsigned char cmd[HCI_MAX_CMD_SIZE]; -+ unsigned char rsp[HCI_MAX_EVENT_SIZE]; -+ -+ /* Frame the HCI CMD PKT to be sent to Controller*/ -+ frame_hci_cmd_pkt(cmd, EDL_PATCH_TLV_REQ_CMD, 0, index, seg_size); -+ -+ /* Total length of the packet to be sent to the Controller */ -+ size = (HCI_CMD_IND + HCI_COMMAND_HDR_SIZE + cmd[PLEN]); -+ -+ /* Initialize the RSP packet everytime to 0 */ -+ memset(rsp, 0x0, HCI_MAX_EVENT_SIZE); -+ -+ /* Send HCI Command packet to Controller */ -+ err = hci_send_vs_cmd(fd, (unsigned char *)cmd, rsp, size); -+ if (err != size) { -+ fprintf(stderr, "Failed to send the patch payload to the Controller! 0x%x\n", err); -+ return err; -+ } -+ -+ if (wait_cc_evt) { -+ err = read_hci_event(fd, rsp, HCI_MAX_EVENT_SIZE); -+ if (err < 0) { -+ fprintf(stderr, "%s: Failed to downlaod patch segment: %d!\n", __FUNCTION__, index); -+ return err; -+ } -+ } -+ -+ return err; -+} -+ -+int rome_tlv_dnld_req(int fd, int tlv_size) -+{ -+ int total_segment, remain_size, i, err = -1; -+ unsigned char wait_cc_evt = FALSE; -+ unsigned int rom = rome_ver >> 16; -+ -+ total_segment = tlv_size/MAX_SIZE_PER_TLV_SEGMENT; -+ remain_size = (tlv_size < MAX_SIZE_PER_TLV_SEGMENT)?\ -+ tlv_size: (tlv_size%MAX_SIZE_PER_TLV_SEGMENT); -+ -+ if (gTlv_type == TLV_TYPE_PATCH) { -+ /* Prior to Rome version 3.2(including inital few rampatch release of -+ * Rome 3.2), the event handling mechanism is ROME_SKIP_EVT_NONE. After -+ * few release of rampatch for Rome 3.2, the mechamism is changed to -+ * ROME_SKIP_EVT_VSE_CC. Rest of the mechanism is not used for now -+ */ -+ switch (gtlv_dwndcfg) -+ { -+ case ROME_SKIP_EVT_NONE: -+ wait_vsc_evt = TRUE; -+ wait_cc_evt = TRUE; -+ PR_DBG("%s: Event handling type: ROME_SKIP_EVT_NONE", __func__); -+ break; -+ case ROME_SKIP_EVT_VSE_CC: -+ wait_vsc_evt = FALSE; -+ wait_cc_evt = FALSE; -+ PR_DBG("%s: Event handling type: ROME_SKIP_EVT_VSE_CC", __func__); -+ break; -+ /* Not handled for now */ -+ case ROME_SKIP_EVT_VSE: -+ case ROME_SKIP_EVT_CC: -+ default: -+ fprintf(stderr, "%s: Unsupported Event handling: %d", __func__, gtlv_dwndcfg); -+ break; -+ } -+ } else { -+ wait_vsc_evt = TRUE; -+ wait_cc_evt = TRUE; -+ } -+ -+ for(i = 0; i < total_segment; i++) { -+ if ((i+1) == total_segment) { -+ if ((rom >= ROME_PATCH_VER_0100) && (rom < ROME_PATCH_VER_0302) && -+ (gTlv_type == TLV_TYPE_PATCH)) { -+ /* If the Rome version is from 1.1 to 3.1 -+ * 1. No CCE for the last command segment but all other segment -+ * 2. All the command segments get VSE including the last one -+ */ -+ wait_cc_evt = !remain_size ? FALSE: TRUE; -+ } else if ((rom == ROME_PATCH_VER_0302) && -+ (gTlv_type == TLV_TYPE_PATCH)) { -+ /* If the Rome version is 3.2 -+ * 1. None of the command segments receive CCE -+ * 2. No command segments receive VSE except the last one -+ * 3. If gtlv_dwndcfg is ROME_SKIP_EVT_NONE then the logic is -+ * same as Rome 2.1, 2.2, 3.0 -+ */ -+ if (gtlv_dwndcfg == ROME_SKIP_EVT_NONE) { -+ wait_cc_evt = !remain_size ? FALSE: TRUE; -+ } else if (gtlv_dwndcfg == ROME_SKIP_EVT_VSE_CC) { -+ wait_vsc_evt = !remain_size ? TRUE: FALSE; -+ } -+ } -+ } -+ -+ if ((err = rome_tlv_dnld_segment(fd, i, MAX_SIZE_PER_TLV_SEGMENT, wait_cc_evt )) < 0) -+ goto error; -+ } -+ -+ if ((rom >= ROME_PATCH_VER_0100) && (rom < ROME_PATCH_VER_0302) && -+ (gTlv_type == TLV_TYPE_PATCH)) { -+ /* If the Rome version is from 1.1 to 3.1 -+ * 1. No CCE for the last command segment but all other segment -+ * 2. All the command segments get VSE including the last one -+ */ -+ wait_cc_evt = remain_size ? FALSE: TRUE; -+ } else if ((rom == ROME_PATCH_VER_0302) && (gTlv_type == TLV_TYPE_PATCH)) { -+ /* If the Rome version is 3.2 -+ * 1. None of the command segments receive CCE -+ * 2. No command segments receive VSE except the last one -+ * 3. If gtlv_dwndcfg is ROME_SKIP_EVT_NONE then the logic is -+ * same as Rome 2.1, 2.2, 3.0 -+ */ -+ if (gtlv_dwndcfg == ROME_SKIP_EVT_NONE) { -+ wait_cc_evt = remain_size ? FALSE: TRUE; -+ } else if (gtlv_dwndcfg == ROME_SKIP_EVT_VSE_CC) { -+ wait_vsc_evt = remain_size ? TRUE: FALSE; -+ } -+ } -+ -+ if (remain_size) err =rome_tlv_dnld_segment(fd, i, remain_size, wait_cc_evt); -+ -+error: -+ return err; -+} -+ -+int rome_download_tlv_file(int fd, unsigned char baud_rate) -+{ -+ int tlv_size, err = -1; -+ -+ /* Rampatch TLV file Downloading */ -+ pdata_buffer = NULL; -+ -+ if ((tlv_size = rome_get_tlv_file(rampatch_file_path, baud_rate)) < 0) -+ goto error; -+ -+ if ((err = rome_tlv_dnld_req(fd, tlv_size)) < 0) -+ goto error; -+ -+ if (pdata_buffer != NULL) { -+ free (pdata_buffer); -+ pdata_buffer = NULL; -+ } -+ -+ /* NVM TLV file Downloading */ -+ if ((tlv_size = rome_get_tlv_file(nvm_file_path, baud_rate)) < 0) -+ goto error; -+ -+ if ((err = rome_tlv_dnld_req(fd, tlv_size)) < 0) -+ goto error; -+ -+error: -+ if (pdata_buffer != NULL) -+ free (pdata_buffer); -+ -+ return err; -+} -+ -+int rome_1_0_nvm_tag_dnld(int fd) -+{ -+ int i, size, err = 0; -+ unsigned char rsp[HCI_MAX_EVENT_SIZE]; -+ -+#if (NVM_VERSION >= ROME_1_0_100019) -+ unsigned char cmds[MAX_TAG_CMD][HCI_MAX_CMD_SIZE] = -+ { -+ /* Tag 2 */ /* BD Address */ -+ { /* Packet Type */HCI_COMMAND_PKT, -+ /* Opcode */ 0x0b,0xfc, -+ /* Total Len */ 9, -+ /* NVM CMD */ NVM_ACCESS_SET, -+ /* Tag Num */ 2, -+ /* Tag Len */ 6, -+ /* Tag Value */ 0x77,0x78,0x23,0x01,0x56,0x22 -+ }, -+ /* Tag 6 */ /* Bluetooth Support Features */ -+ { /* Packet Type */HCI_COMMAND_PKT, -+ /* Opcode */ 0x0b,0xfc, -+ /* Total Len */ 11, -+ /* NVM CMD */ NVM_ACCESS_SET, -+ /* Tag Num */ 6, -+ /* Tag Len */ 8, -+ /* Tag Value */ 0xFF,0xFE,0x8B,0xFE,0xD8,0x3F,0x5B,0x8B -+ }, -+ /* Tag 17 */ /* HCI Transport Layer Setting */ -+ { /* Packet Type */HCI_COMMAND_PKT, -+ /* Opcode */ 0x0b,0xfc, -+ /* Total Len */ 11, -+ /* NVM CMD */ NVM_ACCESS_SET, -+ /* Tag Num */ 17, -+ /* Tag Len */ 8, -+ /* Tag Value */ 0x82,0x01,0x0E,0x08,0x04,0x32,0x0A,0x00 -+ }, -+ /* Tag 35 */ -+ { /* Packet Type */HCI_COMMAND_PKT, -+ /* Opcode */ 0x0b,0xfc, -+ /* Total Len */ 58, -+ /* NVM CMD */ NVM_ACCESS_SET, -+ /* Tag Num */ 35, -+ /* Tag Len */ 55, -+ /* Tag Value */ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x58, 0x59, -+ 0x0E, 0x0E, 0x16, 0x16, 0x16, 0x1E, 0x26, 0x5F, 0x2F, 0x5F, -+ 0x0E, 0x0E, 0x16, 0x16, 0x16, 0x1E, 0x26, 0x5F, 0x2F, 0x5F, -+ 0x0C, 0x18, 0x14, 0x24, 0x40, 0x4C, 0x70, 0x80, 0x80, 0x80, -+ 0x0C, 0x18, 0x14, 0x24, 0x40, 0x4C, 0x70, 0x80, 0x80, 0x80, -+ 0x1B, 0x14, 0x01, 0x04, 0x48 -+ }, -+ /* Tag 36 */ -+ { /* Packet Type */HCI_COMMAND_PKT, -+ /* Opcode */ 0x0b,0xfc, -+ /* Total Len */ 15, -+ /* NVM CMD */ NVM_ACCESS_SET, -+ /* Tag Num */ 36, -+ /* Tag Len */ 12, -+ /* Tag Value */ 0x0F,0x00,0x03,0x03,0x03,0x03,0x00,0x00,0x03,0x03,0x04,0x00 -+ }, -+ /* Tag 39 */ -+ { /* Packet Type */HCI_COMMAND_PKT, -+ /* Opcode */ 0x0b,0xfc, -+ /* Total Len */ 7, -+ /* NVM CMD */ NVM_ACCESS_SET, -+ /* Tag Num */ 39, -+ /* Tag Len */ 4, -+ /* Tag Value */ 0x12,0x00,0x00,0x00 -+ }, -+ /* Tag 41 */ -+ { /* Packet Type */HCI_COMMAND_PKT, -+ /* Opcode */ 0x0b,0xfc, -+ /* Total Len */ 91, -+ /* NVM CMD */ NVM_ACCESS_SET, -+ /* Tag Num */ 41, -+ /* Tag Len */ 88, -+ /* Tag Value */ 0x15, 0x00, 0x00, 0x00, 0xF6, 0x02, 0x00, 0x00, 0x76, 0x00, -+ 0x1E, 0x00, 0x29, 0x02, 0x1F, 0x00, 0x61, 0x00, 0x1A, 0x00, -+ 0x76, 0x00, 0x1E, 0x00, 0x7D, 0x00, 0x40, 0x00, 0x91, 0x00, -+ 0x06, 0x00, 0x92, 0x00, 0x03, 0x00, 0xA6, 0x01, 0x50, 0x00, -+ 0xAA, 0x01, 0x15, 0x00, 0xAB, 0x01, 0x0A, 0x00, 0xAC, 0x01, -+ 0x00, 0x00, 0xB0, 0x01, 0xC5, 0x00, 0xB3, 0x01, 0x03, 0x00, -+ 0xB4, 0x01, 0x13, 0x00, 0xB5, 0x01, 0x0C, 0x00, 0xC5, 0x01, -+ 0x0D, 0x00, 0xC6, 0x01, 0x10, 0x00, 0xCA, 0x01, 0x2B, 0x00, -+ 0xCB, 0x01, 0x5F, 0x00, 0xCC, 0x01, 0x48, 0x00 -+ }, -+ /* Tag 42 */ -+ { /* Packet Type */HCI_COMMAND_PKT, -+ /* Opcode */ 0x0b,0xfc, -+ /* Total Len */ 63, -+ /* NVM CMD */ NVM_ACCESS_SET, -+ /* Tag Num */ 42, -+ /* Tag Len */ 60, -+ /* Tag Value */ 0xD7, 0xC0, 0x00, 0x00, 0x8F, 0x5C, 0x02, 0x00, 0x80, 0x47, -+ 0x60, 0x0C, 0x70, 0x4C, 0x00, 0x00, 0x00, 0x01, 0x1F, 0x01, -+ 0x42, 0x01, 0x69, 0x01, 0x95, 0x01, 0xC7, 0x01, 0xFE, 0x01, -+ 0x3D, 0x02, 0x83, 0x02, 0xD1, 0x02, 0x29, 0x03, 0x00, 0x0A, -+ 0x10, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0x7F, 0x00, 0xFD, 0x00, -+ 0xF9, 0x01, 0xF1, 0x03, 0xDE, 0x07, 0x00, 0x00, 0x9A, 0x01 -+ }, -+ /* Tag 84 */ -+ { /* Packet Type */HCI_COMMAND_PKT, -+ /* Opcode */ 0x0b,0xfc, -+ /* Total Len */ 153, -+ /* NVM CMD */ NVM_ACCESS_SET, -+ /* Tag Num */ 84, -+ /* Tag Len */ 150, -+ /* Tag Value */ 0x7C, 0x6A, 0x59, 0x47, 0x19, 0x36, 0x35, 0x25, 0x25, 0x28, -+ 0x2C, 0x2B, 0x2B, 0x28, 0x2C, 0x28, 0x29, 0x28, 0x29, 0x28, -+ 0x29, 0x29, 0x2C, 0x29, 0x2C, 0x29, 0x2C, 0x28, 0x29, 0x28, -+ 0x29, 0x28, 0x29, 0x2A, 0x00, 0x00, 0x2C, 0x2A, 0x2C, 0x18, -+ 0x98, 0x98, 0x98, 0x98, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, -+ 0x1E, 0x13, 0x1E, 0x1E, 0x1E, 0x1E, 0x13, 0x13, 0x11, 0x13, -+ 0x1E, 0x1E, 0x13, 0x12, 0x12, 0x12, 0x11, 0x12, 0x1F, 0x12, -+ 0x12, 0x12, 0x10, 0x0C, 0x18, 0x0D, 0x01, 0x01, 0x01, 0x01, -+ 0x01, 0x01, 0x01, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x0D, 0x0D, -+ 0x0E, 0x0D, 0x01, 0x01, 0x0D, 0x0D, 0x0D, 0x0D, 0x0F, 0x0D, -+ 0x10, 0x0D, 0x0D, 0x0D, 0x0D, 0x10, 0x05, 0x10, 0x03, 0x00, -+ 0x7E, 0x7B, 0x7B, 0x72, 0x71, 0x50, 0x50, 0x50, 0x00, 0x40, -+ 0x60, 0x60, 0x30, 0x08, 0x02, 0x0F, 0x00, 0x01, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x16, 0x16, 0x08, 0x08, 0x00, -+ 0x00, 0x00, 0x1E, 0x34, 0x2B, 0x1B, 0x23, 0x2B, 0x15, 0x0D -+ }, -+ /* Tag 85 */ -+ { /* Packet Type */HCI_COMMAND_PKT, -+ /* Opcode */ 0x0b,0xfc, -+ /* Total Len */ 119, -+ /* NVM CMD */ NVM_ACCESS_SET, -+ /* Tag Num */ 85, -+ /* Tag Len */ 116, -+ /* Tag Value */ 0x03, 0x00, 0x38, 0x00, 0x45, 0x77, 0x00, 0xE8, 0x00, 0x59, -+ 0x01, 0xCA, 0x01, 0x3B, 0x02, 0xAC, 0x02, 0x1D, 0x03, 0x8E, -+ 0x03, 0x00, 0x89, 0x01, 0x0E, 0x02, 0x5C, 0x02, 0xD7, 0x02, -+ 0xF8, 0x08, 0x01, 0x00, 0x1F, 0x00, 0x0A, 0x02, 0x55, 0x02, -+ 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xD7, 0x00, 0x00, -+ 0x00, 0x1E, 0xDE, 0x00, 0x00, 0x00, 0x14, 0x0F, 0x0A, 0x0F, -+ 0x0A, 0x0C, 0x0C, 0x0C, 0x0C, 0x04, 0x04, 0x04, 0x0C, 0x0C, -+ 0x0C, 0x0C, 0x06, 0x06, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, -+ 0x01, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, -+ 0x06, 0x0F, 0x14, 0x05, 0x47, 0xCF, 0x77, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0xAC, 0x7C, 0xFF, 0x40, 0x00, 0x00, 0x00, -+ 0x12, 0x04, 0x04, 0x01, 0x04, 0x03 -+ }, -+ {TAG_END} -+ }; -+#elif (NVM_VERSION == ROME_1_0_6002) -+ unsigned char cmds[MAX_TAG_CMD][HCI_MAX_CMD_SIZE] = -+ { -+ /* Tag 2 */ -+ { /* Packet Type */HCI_COMMAND_PKT, -+ /* Opcode */ 0x0b,0xfc, -+ /* Total Len */ 9, -+ /* NVM CMD */ NVM_ACCESS_SET, -+ /* Tag Num */ 2, -+ /* Tag Len */ 6, -+ /* Tag Value */ 0x77,0x78,0x23,0x01,0x56,0x22 /* BD Address */ -+ }, -+ /* Tag 6 */ -+ { /* Packet Type */HCI_COMMAND_PKT, -+ /* Opcode */ 0x0b,0xfc, -+ /* Total Len */ 11, -+ /* NVM CMD */ NVM_ACCESS_SET, -+ /* Tag Num */ 6, -+ /* Tag Len */ 8, -+ /* Tag Value */ 0xFF,0xFE,0x8B,0xFE,0xD8,0x3F,0x5B,0x8B -+ }, -+ /* Tag 17 */ -+ { /* Packet Type */HCI_COMMAND_PKT, -+ /* Opcode */ 0x0b,0xfc, -+ /* Total Len */ 11, -+ /* NVM CMD */ NVM_ACCESS_SET, -+ /* Tag Num */ 17, -+ /* Tag Len */ 8, -+ /* Tag Value */ 0x82,0x01,0x0E,0x08,0x04,0x32,0x0A,0x00 -+ }, -+ /* Tag 36 */ -+ { /* Packet Type */HCI_COMMAND_PKT, -+ /* Opcode */ 0x0b,0xfc, -+ /* Total Len */ 15, -+ /* NVM CMD */ NVM_ACCESS_SET, -+ /* Tag Num */ 36, -+ /* Tag Len */ 12, -+ /* Tag Value */ 0x0F,0x00,0x03,0x03,0x03,0x03,0x00,0x00,0x03,0x03,0x04,0x00 -+ }, -+ -+ /* Tag 39 */ -+ { /* Packet Type */HCI_COMMAND_PKT, -+ /* Opcode */ 0x0b,0xfc, -+ /* Total Len */ 7, -+ /* NVM CMD */ NVM_ACCESS_SET, -+ /* Tag Num */ 39, -+ /* Tag Len */ 4, -+ /* Tag Value */ 0x12,0x00,0x00,0x00 -+ }, -+ -+ /* Tag 41 */ -+ { /* Packet Type */HCI_COMMAND_PKT, -+ /* Opcode */ 0x0b,0xfc, -+ /* Total Len */ 199, -+ /* NVM CMD */ NVM_ACCESS_SET, -+ /* Tag Num */ 41, -+ /* Tag Len */ 196, -+ /* Tag Value */ 0x30,0x00,0x00,0x00,0xD5,0x00,0x0E,0x00,0xD6,0x00,0x0E,0x00, -+ 0xD7,0x00,0x16,0x00,0xD8,0x00,0x16,0x00,0xD9,0x00,0x16,0x00, -+ 0xDA,0x00,0x1E,0x00,0xDB,0x00,0x26,0x00,0xDC,0x00,0x5F,0x00, -+ 0xDD,0x00,0x2F,0x00,0xDE,0x00,0x5F,0x00,0xE0,0x00,0x0E,0x00, -+ 0xE1,0x00,0x0E,0x00,0xE2,0x00,0x16,0x00,0xE3,0x00,0x16,0x00, -+ 0xE4,0x00,0x16,0x00,0xE5,0x00,0x1E,0x00,0xE6,0x00,0x26,0x00, -+ 0xE7,0x00,0x5F,0x00,0xE8,0x00,0x2F,0x00,0xE9,0x00,0x5F,0x00, -+ 0xEC,0x00,0x0C,0x00,0xED,0x00,0x08,0x00,0xEE,0x00,0x14,0x00, -+ 0xEF,0x00,0x24,0x00,0xF0,0x00,0x40,0x00,0xF1,0x00,0x4C,0x00, -+ 0xF2,0x00,0x70,0x00,0xF3,0x00,0x80,0x00,0xF4,0x00,0x80,0x00, -+ 0xF5,0x00,0x80,0x00,0xF8,0x00,0x0C,0x00,0xF9,0x00,0x18,0x00, -+ 0xFA,0x00,0x14,0x00,0xFB,0x00,0x24,0x00,0xFC,0x00,0x40,0x00, -+ 0xFD,0x00,0x4C,0x00,0xFE,0x00,0x70,0x00,0xFF,0x00,0x80,0x00, -+ 0x00,0x01,0x80,0x00,0x01,0x01,0x80,0x00,0x04,0x01,0x1B,0x00, -+ 0x05,0x01,0x14,0x00,0x06,0x01,0x01,0x00,0x07,0x01,0x04,0x00, -+ 0x08,0x01,0x00,0x00,0x09,0x01,0x00,0x00,0x0A,0x01,0x03,0x00, -+ 0x0B,0x01,0x03,0x00 -+ }, -+ -+ /* Tag 44 */ -+ { /* Packet Type */HCI_COMMAND_PKT, -+ /* Opcode */ 0x0b,0xfc, -+ /* Total Len */ 44, -+ /* NVM CMD */ NVM_ACCESS_SET, -+ /* Tag Num */ 44, -+ /* Tag Len */ 41, -+ /* Tag Value */ 0x6F,0x0A,0x00,0x00,0x00,0x00,0x00,0x50,0xFF,0x10,0x02,0x02, -+ 0x01,0x00,0x14,0x01,0x06,0x28,0xA0,0x62,0x03,0x64,0x01,0x01, -+ 0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0xFF,0x10,0x02,0x01, -+ 0x00,0x14,0x01,0x02,0x03 -+ }, -+ {TAG_END} -+ }; -+#endif -+ -+ for (i=0; (i < MAX_TAG_CMD) && (cmds[i][0] != TAG_END); i++) { -+ /* Write BD Address */ -+ if (cmds[i][TAG_NUM_OFFSET] == TAG_NUM_2){ -+ memcpy(&cmds[i][TAG_BDADDR_OFFSET], vnd_local_bd_addr, 6); -+ fprintf(stderr, "BD Address: %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n", -+ cmds[i][TAG_BDADDR_OFFSET ], cmds[i][TAG_BDADDR_OFFSET + 1], -+ cmds[i][TAG_BDADDR_OFFSET + 2], cmds[i][TAG_BDADDR_OFFSET + 3], -+ cmds[i][TAG_BDADDR_OFFSET + 4], cmds[i][TAG_BDADDR_OFFSET + 5]); -+ } -+ size = cmds[i][3] + HCI_COMMAND_HDR_SIZE + 1; -+ /* Send HCI Command packet to Controller */ -+ err = hci_send_vs_cmd(fd, (unsigned char *)&cmds[i][0], rsp, size); -+ if (err != size) { -+ fprintf(stderr, "Failed to attach the patch payload to the Controller!\n"); -+ goto error; -+ } -+ -+ /* Read Command Complete Event - This is extra routine for ROME 1.0. From ROM 2.0, it should be removed. */ -+ err = read_hci_event(fd, rsp, HCI_MAX_EVENT_SIZE); -+ if (err < 0) { -+ fprintf(stderr, "%s: Failed to get patch version(s)\n", __FUNCTION__); -+ goto error; -+ } -+ } -+ -+error: -+ return err; -+} -+ -+ -+ -+int rome_patch_ver_req(int fd) -+{ -+ int size, err = 0; -+ unsigned char cmd[HCI_MAX_CMD_SIZE]; -+ unsigned char rsp[HCI_MAX_EVENT_SIZE]; -+ -+ /* Frame the HCI CMD to be sent to the Controller */ -+ frame_hci_cmd_pkt(cmd, EDL_PATCH_VER_REQ_CMD, 0, -+ -1, EDL_PATCH_CMD_LEN); -+ -+ /* Total length of the packet to be sent to the Controller */ -+ size = (HCI_CMD_IND + HCI_COMMAND_HDR_SIZE + EDL_PATCH_CMD_LEN); -+ -+ /* Send HCI Command packet to Controller */ -+ err = hci_send_vs_cmd(fd, (unsigned char *)cmd, rsp, size); -+ if (err != size) { -+ fprintf(stderr, "Failed to attach the patch payload to the Controller!\n"); -+ goto error; -+ } -+ -+ /* Read Command Complete Event - This is extra routine for ROME 1.0. From ROM 2.0, it should be removed. */ -+ err = read_hci_event(fd, rsp, HCI_MAX_EVENT_SIZE); -+ if (err < 0) { -+ fprintf(stderr, "%s: Failed to get patch version(s)\n", __FUNCTION__); -+ goto error; -+ } -+error: -+ return err; -+ -+} -+ -+static void flow_control(int fd, int opt) -+{ -+ struct termios c_opt; -+ -+ ioctl(fd, TIOCMGET, &c_opt); -+ c_opt.c_cc[VTIME] = 0; /* inter-character timer unused */ -+ c_opt.c_cc[VMIN] = 0; /* blocking read until 8 chars received */ -+ c_opt.c_cflag &= ~CSIZE; -+ c_opt.c_cflag |= (CS8 | CLOCAL | CREAD); -+ if (opt == MSM_ENABLE_FLOW_CTRL) -+ c_opt.c_cflag |= CRTSCTS; -+ else if (opt == MSM_DISABLE_FLOW_CTRL) -+ c_opt.c_cflag &= ~CRTSCTS; -+ else { -+ fprintf(stderr, "%s: Incorrect option passed for TIOCMSET\n", __func__); -+ return; -+ } -+ c_opt.c_iflag = IGNPAR; -+ c_opt.c_oflag = 0; -+ c_opt.c_lflag = 0; -+ ioctl(fd, TIOCMSET, &c_opt); -+} -+ -+ -+int rome_set_baudrate_req(int fd, unsigned char baud_rate) -+{ -+ int size, err = 0; -+ unsigned char cmd[HCI_MAX_CMD_SIZE]; -+ unsigned char rsp[HCI_MAX_EVENT_SIZE]; -+ hci_command_hdr *cmd_hdr; -+ int flags; -+ -+ memset(cmd, 0x0, HCI_MAX_CMD_SIZE); -+ -+ cmd_hdr = (void *) (cmd + 1); -+ cmd[0] = HCI_COMMAND_PKT; -+ cmd_hdr->opcode = cmd_opcode_pack(HCI_VENDOR_CMD_OGF, EDL_SET_BAUDRATE_CMD_OCF); -+ cmd_hdr->plen = VSC_SET_BAUDRATE_REQ_LEN; -+ cmd[4] = baud_rate; -+ -+ /* Total length of the packet to be sent to the Controller */ -+ size = (HCI_CMD_IND + HCI_COMMAND_HDR_SIZE + VSC_SET_BAUDRATE_REQ_LEN); -+ -+ /* Flow off during baudrate change */ -+ flow_control(fd, MSM_DISABLE_FLOW_CTRL); -+ -+ /* Send the HCI command packet to UART for transmission */ -+ err = write(fd, cmd, size); -+ if (err != size) { -+ fprintf(stderr, "%s: Send failed with ret value: %d\n", __FUNCTION__, err); -+ goto error; -+ } -+ /* Change Local UART baudrate to high speed UART */ -+ userial_vendor_set_baud(baud_rate); -+ -+ /* Flow on after changing local uart baudrate */ -+ flow_control(fd, MSM_ENABLE_FLOW_CTRL); -+ -+ /* Check for response from the Controller */ -+ if ((err = read_vs_hci_event(fd, rsp, HCI_MAX_EVENT_SIZE)) < 0) { -+ fprintf(stderr, "%s: Failed to get HCI-VS Event from SOC\n", __FUNCTION__); -+ goto error; -+ } -+ -+ /* Wait for command complete event */ -+ err = read_hci_event(fd, rsp, HCI_MAX_EVENT_SIZE); -+ if (err < 0) { -+ fprintf(stderr, "%s: Failed to set patch info on Controller\n", __FUNCTION__); -+ goto error; -+ } -+error: -+ return err; -+ -+} -+ -+ -+int rome_hci_reset_req(int fd, char baud) -+{ -+ int size, err = 0; -+ unsigned char cmd[HCI_MAX_CMD_SIZE]; -+ unsigned char rsp[HCI_MAX_EVENT_SIZE]; -+ hci_command_hdr *cmd_hdr; -+ int flags; -+ -+ memset(cmd, 0x0, HCI_MAX_CMD_SIZE); -+ -+ cmd_hdr = (void *) (cmd + 1); -+ cmd[0] = HCI_COMMAND_PKT; -+ cmd_hdr->opcode = HCI_RESET; -+ cmd_hdr->plen = 0; -+ -+ /* Total length of the packet to be sent to the Controller */ -+ size = (HCI_CMD_IND + HCI_COMMAND_HDR_SIZE); -+ -+ /* Flow off during baudrate change */ -+ flow_control(fd, MSM_DISABLE_FLOW_CTRL); -+ -+ /* Send the HCI command packet to UART for transmission */ -+ err = write(fd, cmd, size); -+ if (err != size) { -+ fprintf(stderr, "%s: Send failed with ret value: %d\n", __FUNCTION__, err); -+ goto error; -+ } -+ -+ /* Change Local UART baudrate to high speed UART */ -+ userial_vendor_set_baud(baud); -+ -+ /* Flow on after changing local uart baudrate */ -+ flow_control(fd, MSM_ENABLE_FLOW_CTRL); -+ -+ /* Wait for command complete event */ -+ err = read_hci_event(fd, rsp, HCI_MAX_EVENT_SIZE); -+ if (err < 0) { -+ fprintf(stderr, "%s: Failed to set patch info on Controller\n", __FUNCTION__); -+ goto error; -+ } -+ -+error: -+ return err; -+ -+} -+ -+int qca_soc_init(int fd, int speed, char *bdaddr) -+{ -+ int err = -1; -+ int ret = 0; -+ int size; -+ unsigned char baud_rate = 0; -+ -+ vnd_userial.fd = fd; -+ -+ /* Get Rome version information */ -+ if ((err = rome_patch_ver_req(fd)) < 0) { -+ fprintf(stderr, "%s: Fail to get Rome Version (0x%x)\n", __FUNCTION__, err); -+ ret = -1; -+ goto error; -+ } -+ -+ fprintf(stderr, "%s: Rome Version (0x%08x)\n", __FUNCTION__, rome_ver); -+ -+ switch (rome_ver){ -+ case ROME_VER_1_0: -+ /* Set and Download the RAMPATCH */ -+ fprintf(stderr, "%s: Setting Patch Header & Downloading Patches\n", __FUNCTION__); -+ err = rome_download_rampatch(fd); -+ if (err < 0) { -+ fprintf(stderr, "%s: DOWNLOAD RAMPATCH failed!\n", __FUNCTION__); -+ ret = -1; -+ goto error; -+ } -+ -+ /* Attach the RAMPATCH */ -+ fprintf(stderr, "%s: Attaching the patches\n", __FUNCTION__); -+ err = rome_attach_rampatch(fd); -+ if (err < 0) { -+ fprintf(stderr, "%s: ATTACH RAMPATCH failed!\n", __FUNCTION__); -+ ret = -1; -+ goto error; -+ } -+ -+ /* Send Reset */ -+ size = (HCI_CMD_IND + HCI_COMMAND_HDR_SIZE + EDL_PATCH_CMD_LEN); -+ err = rome_rampatch_reset(fd); -+ if (err < 0) { -+ fprintf(stderr, "Failed to RESET after RAMPATCH upgrade!\n"); -+ ret = -1; -+ goto error; -+ } -+ -+ /* NVM download */ -+ fprintf(stderr, "%s: Downloading NVM\n", __FUNCTION__); -+ err = rome_1_0_nvm_tag_dnld(fd); -+ if (err < 0) { -+ fprintf(stderr, "Downloading NVM Failed !!\n"); -+ ret = -1; -+ goto error; -+ } -+ -+ /* Change baud rate 115.2 kbps to 3Mbps*/ -+ err = rome_hci_reset_req(fd, baud_rate); -+ if (err < 0) { -+ fprintf(stderr, "HCI Reset Failed !!\n"); -+ ret = -1; -+ goto error; -+ } -+ break; -+ case ROME_VER_1_1: -+ rampatch_file_path = ROME_RAMPATCH_TLV_PATH; -+ nvm_file_path = ROME_NVM_TLV_PATH; -+ goto download; -+ case ROME_VER_1_3: -+ rampatch_file_path = ROME_RAMPATCH_TLV_1_0_3_PATH; -+ nvm_file_path = ROME_NVM_TLV_1_0_3_PATH; -+ goto download; -+ case ROME_VER_2_1: -+ rampatch_file_path = ROME_RAMPATCH_TLV_2_0_1_PATH; -+ nvm_file_path = ROME_NVM_TLV_2_0_1_PATH; -+ goto download; -+ case ROME_VER_3_0: -+ rampatch_file_path = ROME_RAMPATCH_TLV_3_0_0_PATH; -+ nvm_file_path = ROME_NVM_TLV_3_0_0_PATH; -+ goto download; -+ case ROME_VER_3_2: -+ rampatch_file_path = ROME_RAMPATCH_TLV_3_0_2_PATH; -+ nvm_file_path = ROME_NVM_TLV_3_0_2_PATH; -+ goto download; -+ case TUFELLO_VER_1_0: -+ rampatch_file_path = TF_RAMPATCH_TLV_1_0_0_PATH; -+ nvm_file_path = TF_NVM_TLV_1_0_0_PATH; -+ goto download; -+ case TUFELLO_VER_1_1: -+ rampatch_file_path = TF_RAMPATCH_TLV_1_0_1_PATH; -+ nvm_file_path = TF_NVM_TLV_1_0_1_PATH; -+download: -+ isSpeedValid(speed, &baud_rate); -+ if (baud_rate < 0) { -+ ret = -1; -+ goto error; -+ } -+ -+ /* Donwload TLV files (rampatch, NVM) */ -+ err = rome_download_tlv_file(fd, baud_rate); -+ if (err < 0) { -+ fprintf(stderr, "%s: Download TLV file failed!\n", __FUNCTION__); -+ ret = -1; -+ goto error; -+ } -+ -+ /* -+ * Overriding the baud rate value in NVM file with the user -+ * requested baud rate, since default baud rate in NVM file is 3M. -+ */ -+ err = rome_set_baudrate_req(fd, baud_rate); -+ if (err < 0) { -+ fprintf(stderr, "%s: Baud rate change failed!\n", __FUNCTION__); -+ ret = -1; -+ goto error; -+ } -+ -+ /* Perform HCI reset here*/ -+ err = rome_hci_reset_req(fd, baud_rate); -+ if (err < 0) { -+ fprintf(stderr, "HCI Reset Failed !!!\n"); -+ ret = -1; -+ goto error; -+ } -+ -+ break; -+ case ROME_VER_UNKNOWN: -+ default: -+ fprintf(stderr, "%s: Detected unknown ROME version\n", __FUNCTION__); -+ ret = -1; -+ break; -+ } -+ -+error: -+ return ret; -+} -diff --git a/tools/hciattach_rome.h b/tools/hciattach_rome.h -new file mode 100644 -index 000000000..597743e0b ---- /dev/null -+++ b/tools/hciattach_rome.h -@@ -0,0 +1,388 @@ -+/* -+ * Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. -+ * Not a Contribution. -+ * Copyright 2012 The Android Open Source Project -+ * -+ * Licensed under the Apache License, Version 2.0 (the "License"); -+ * you may not use this file except in compliance with the License. -+ * You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, software -+ * distributed under the License is distributed on an "AS IS" BASIS, -+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+ * See the License for the specific language governing permissions and -+ * limitations under the License. -+ */ -+#ifndef HW_ROME_H -+#define HW_ROME_H -+ -+/****************************************************************************** -+** Constants & Macros -+******************************************************************************/ -+#define HCI_MAX_CMD_SIZE 260 -+#define HCI_MAX_EVENT_SIZE 260 -+#define PRINT_BUF_SIZE ((HCI_MAX_CMD_SIZE * 3) + 2) -+/* HCI Command/Event Opcode */ -+#define HCI_RESET 0x0C03 -+#define EVT_CMD_COMPLETE 0x0E -+/* HCI Packet types */ -+#define HCI_COMMAND_PKT 0x01 -+#define HCI_ACLDATA_PKT 0x02 -+#define HCI_SCODATA_PKT 0x03 -+#define HCI_EVENT_PKT 0x04 -+#define HCI_VENDOR_PKT 0xff -+#define cmd_opcode_pack(ogf, ocf) (unsigned short)((ocf & 0x03ff)|(ogf << 10)) -+ -+#define NVITEM 0 -+#define RDWR_PROT 1 -+#define NVITEM_SIZE 2 -+#define PERSIST_HEADER_LEN 3 -+#define BD_ADDR_LEN 6 -+#define MSM_DISABLE_FLOW_CTRL 0 -+#define MSM_ENABLE_FLOW_CTRL 1 -+ -+#ifdef _PLATFORM_MDM_ -+#define USERIAL_OP_CLK_ON 0x5441 -+#define USERIAL_OP_CLK_OFF 0x5442 -+#endif -+ -+#define PR_INFO(fmt, arg...) printf(fmt, ## arg) -+#ifdef DEBUG -+ #define PR_DBG(fmt, arg...) printf(fmt, ## arg) -+#else -+ #define PR_DBG(fmt, arg...) -+#endif -+ -+unsigned char vnd_local_bd_addr[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; -+typedef enum { -+ USERIAL_OP_FLOW_ON, -+ USERIAL_OP_FLOW_OFF, -+ USERIAL_OP_NOP, -+} userial_vendor_ioctl_op_t; -+ -+ -+/* vendor serial control block */ -+typedef struct -+{ -+ int fd; /* fd to Bluetooth device */ -+ struct termios termios; /* serial terminal of BT port */ -+ char port_name[256]; -+} vnd_userial_cb_t; -+ -+/**** baud rates ****/ -+#define USERIAL_BAUD_300 0 -+#define USERIAL_BAUD_600 1 -+#define USERIAL_BAUD_1200 2 -+#define USERIAL_BAUD_2400 3 -+#define USERIAL_BAUD_9600 4 -+#define USERIAL_BAUD_19200 5 -+#define USERIAL_BAUD_57600 6 -+#define USERIAL_BAUD_115200 7 -+#define USERIAL_BAUD_230400 8 -+#define USERIAL_BAUD_460800 9 -+#define USERIAL_BAUD_921600 10 -+#define USERIAL_BAUD_1M 11 -+#define USERIAL_BAUD_1_5M 12 -+#define USERIAL_BAUD_2M 13 -+#define USERIAL_BAUD_3M 14 -+#define USERIAL_BAUD_4M 15 -+#define USERIAL_BAUD_AUTO 16 -+ -+#ifndef FALSE -+#define FALSE 0 -+#endif -+ -+#ifndef TRUE -+#define TRUE (!FALSE) -+#endif -+ -+#define HCI_CHG_BAUD_CMD_OCF 0x0C -+#define HCI_VENDOR_CMD_OGF 0x3F -+#define WRITE_BDADDR_CMD_LEN 14 -+#define WRITE_BAUD_CMD_LEN 6 -+#define MAX_CMD_LEN WRITE_BDADDR_CMD_LEN -+#define GET_VERSION_OCF 0x1E -+ -+#define PS_HDR_LEN 4 -+#define HCI_VENDOR_CMD_OGF 0x3F -+#define HCI_PS_CMD_OCF 0x0B -+ -+#define HCI_COMMAND_HDR_SIZE 3 -+#define EVT_CMD_COMPLETE_SIZE 3 -+#define EVT_CMD_STATUS 0x0F -+#define EVT_CMD_STATUS_SIZE 4 -+#define HCI_EVENT_HDR_SIZE 2 -+#define HCI_EV_SUCCESS 0x00 -+/* HCI Socket options */ -+#define HCI_DATA_DIR 1 -+#define HCI_FILTER 2 -+#define HCI_TIME_STAMP 3 -+ -+#define P_ID_OFFSET (0) -+#define HCI_CMD_IND (1) -+#define EVENTCODE_OFFSET (1) -+#define EVT_PLEN (2) -+#define PLEN (3) -+#define CMD_RSP_OFFSET (3) -+#define RSP_TYPE_OFFSET (4) -+#define BAUDRATE_RSP_STATUS_OFFSET (4) -+#define CMD_STATUS_OFFSET (5) -+#define P_ROME_VER_OFFSET (4) -+#define P_BUILD_VER_OFFSET (6) -+#define P_BASE_ADDR_OFFSET (8) -+#define P_ENTRY_ADDR_OFFSET (12) -+#define P_LEN_OFFSET (16) -+#define P_CRC_OFFSET (20) -+#define P_CONTROL_OFFSET (24) -+#define PATCH_HDR_LEN (28) -+#define MAX_DATA_PER_SEGMENT (239) -+#define VSEVENT_CODE (0xFF) -+#define HC_VS_MAX_CMD_EVENT (0xFF) -+#define PATCH_PROD_ID_OFFSET (5) -+#define PATCH_PATCH_VER_OFFSET (9) -+#define PATCH_ROM_BUILD_VER_OFFSET (11) -+#define PATCH_SOC_VER_OFFSET (13) -+#define MAX_SIZE_PER_TLV_SEGMENT (243) -+ -+/* VS Opcode */ -+#define HCI_PATCH_CMD_OCF (0) -+#define EDL_SET_BAUDRATE_CMD_OCF (0x48) -+ -+/* VS Commands */ -+#define VSC_SET_BAUDRATE_REQ_LEN (1) -+#define EDL_PATCH_CMD_LEN (1) -+#define EDL_PATCH_CMD_REQ_LEN (1) -+#define EDL_PATCH_DLD_REQ_CMD (0x01) -+#define EDL_PATCH_RST_REQ_CMD (0x05) -+#define EDL_PATCH_SET_REQ_CMD (0x16) -+#define EDL_PATCH_ATCH_REQ_CMD (0x17) -+#define EDL_PATCH_VER_REQ_CMD (0x19) -+#define EDL_PATCH_TLV_REQ_CMD (0x1E) -+#define VSC_DISABLE_IBS_LEN (0x04) -+ -+/* VS Event */ -+#define EDL_CMD_REQ_RES_EVT (0x00) -+#define EDL_CMD_EXE_STATUS_EVT (0x00) -+#define EDL_SET_BAUDRATE_RSP_EVT (0x92) -+#define EDL_PATCH_VER_RES_EVT (0x19) -+#define EDL_TVL_DNLD_RES_EVT (0x04) -+#define EDL_APP_VER_RES_EVT (0x02) -+ -+/* Status Codes of HCI CMD execution*/ -+#define HCI_CMD_SUCCESS (0x0) -+#define PATCH_LEN_ERROR (0x1) -+#define PATCH_VER_ERROR (0x2) -+#define PATCH_CRC_ERROR (0x3) -+#define PATCH_NOT_FOUND (0x4) -+#define TLV_TYPE_ERROR (0x10) -+#define NVM_ACCESS_CODE (0x0B) -+#define BAUDRATE_CHANGE_SUCCESS (1) -+ -+/* TLV_TYPE */ -+#define TLV_TYPE_PATCH (1) -+#define TLV_TYPE_NVM (2) -+ -+/* NVM */ -+#define MAX_TAG_CMD 30 -+#define TAG_END 0xFF -+#define NVM_ACCESS_SET 0x01 -+#define TAG_NUM_OFFSET 5 -+#define TAG_NUM_2 2 -+#define TAG_NUM_17 (17) -+#define TAG_NUM_27 27 -+#define TAG_NUM_44 44 -+#define TAG_BDADDR_OFFSET 7 -+ -+/* FW PCM Configuration */ -+#define FWCONF_PCM_MS_OFFSET_1 9 -+#define FWCONF_PCM_MS_OFFSET_2 33 -+#define FWCONF_PCM_SLAVE 1 -+#define FWCONF_PCM_MASTER 0 -+#define FWCONF_PCM_ROLE_BIT_OFFSET 4 -+ -+/* FW HCI Transport Layer Configuration */ -+#define FWCONF_IBS_DISABLE (0) -+#define FWCONF_IBS_ENABLE (1) -+#define FWCONF_IBS_VAL_BIT (7) -+#define FWCONF_IBS_VAL_OFFSET (0) -+#define FWCONF_BAUD_VAL_OFFSET (2) -+ -+/* FW DEEP SLEEP Configuration */ -+#define FWCONF_DEEP_SLEEP_DISABLE 0 -+#define FWCONF_DEEP_SLEEP_ENABLE 1 -+#define FWCONF_DEEP_SLEEP_BYTE_OFFSET 0 -+#define FWCONF_DEEP_SLEEP_BIT_OFFSET 0 -+ -+#define MAX_RETRY_CNT 1 -+#define SELECT_TIMEOUT 3 -+ -+/* NVM Tags specifically used for ROME 1.0 */ -+#define ROME_1_0_100022_1 0x101000221 -+#define ROME_1_0_100019 0x101000190 -+#define ROME_1_0_6002 0x100600200 -+ -+/* Default NVM Version setting for ROME 1.0 */ -+#define NVM_VERSION ROME_1_0_100022_1 -+ -+ -+#define LSH(val, n) ((unsigned int)(val) << (n)) -+#define EXTRACT_BYTE(val, pos) (char) (((val) >> (8 * (pos))) & 0xFF) -+#define CALC_SEG_SIZE(len, max) ((plen) % (max))?((plen/max)+1) : ((plen) / (max)) -+ -+#define ROME_FW_PATH "/lib/firmware/rampatch.img" -+#define ROME_RAMPATCH_TLV_PATH "/lib/firmware/rampatch_tlv.img" -+#define ROME_NVM_TLV_PATH "/lib/firmware/nvm_tlv.bin" -+#define ROME_RAMPATCH_TLV_1_0_3_PATH "/lib/firmware/rampatch_tlv_1.3.tlv" -+#define ROME_NVM_TLV_1_0_3_PATH "/lib/firmware/nvm_tlv_1.3.bin" -+#define ROME_RAMPATCH_TLV_2_0_1_PATH "/lib/firmware/rampatch_tlv_2.1.tlv" -+#define ROME_NVM_TLV_2_0_1_PATH "/lib/firmware/nvm_tlv_2.1.bin" -+#define ROME_RAMPATCH_TLV_3_0_0_PATH "/lib/firmware/rampatch_tlv_3.0.tlv" -+#define ROME_NVM_TLV_3_0_0_PATH "/lib/firmware/nvm_tlv_3.0.bin" -+#define ROME_RAMPATCH_TLV_3_0_2_PATH "/lib/firmware/btfw32.tlv" -+#define ROME_NVM_TLV_3_0_2_PATH "/lib/firmware/btnv32.bin" -+#ifdef _PLATFORM_MDM_ -+#define TF_RAMPATCH_TLV_1_0_0_PATH "/lib/firmware/rampatch_tlv_tf_1.0.tlv" -+#define TF_NVM_TLV_1_0_0_PATH "/lib/firmware/nvm_tlv_tf_1.0.bin" -+#define TF_RAMPATCH_TLV_1_0_1_PATH "/lib/firmware/tfbtfw11.tlv" -+#define TF_NVM_TLV_1_0_1_PATH "/lib/firmware/tfbtnv11.bin" -+#else -+#define TF_RAMPATCH_TLV_1_0_0_PATH "/lib/firmware/qca/rampatch_tlv_tf_1.0.tlv" -+#define TF_NVM_TLV_1_0_0_PATH "/lib/firmware/qca/nvm_tlv_tf_1.0.bin" -+#define TF_RAMPATCH_TLV_1_0_1_PATH "/lib/firmware/qca/tfbtfw11.tlv" -+#define TF_NVM_TLV_1_0_1_PATH "/lib/firmware/qca/tfbtnv11.bin" -+#endif -+ -+/* This header value in rampatch file decides event handling mechanism in the HOST */ -+#define ROME_SKIP_EVT_NONE 0x00 -+#define ROME_SKIP_EVT_VSE 0x01 -+#define ROME_SKIP_EVT_CC 0x02 -+#define ROME_SKIP_EVT_VSE_CC 0x03 -+ -+#define FW_CONFIG_FILE_PATH "/etc/bluetooth/firmware.conf" -+/****************************************************************************** -+** Local type definitions -+******************************************************************************/ -+ -+typedef struct { -+ unsigned char ncmd; -+ unsigned short opcode; -+} __attribute__ ((packed)) evt_cmd_complete; -+ -+typedef struct { -+ unsigned char status; -+ unsigned char ncmd; -+ unsigned short opcode; -+} __attribute__ ((packed)) evt_cmd_status; -+ -+typedef struct { -+ unsigned short opcode; -+ unsigned char plen; -+} __attribute__ ((packed)) hci_command_hdr; -+ -+typedef struct { -+ unsigned char evt; -+ unsigned char plen; -+} __attribute__ ((packed)) hci_event_hdr; -+typedef struct { -+ unsigned short rom_version; -+ unsigned short build_version; -+} __attribute__ ((packed)) patch_version; -+ -+typedef struct { -+ unsigned int patch_id; -+ patch_version patch_ver; -+ unsigned int patch_base_addr; -+ unsigned int patch_entry_addr; -+ unsigned short patch_length; -+ int patch_crc; -+ unsigned short patch_ctrl; -+} __attribute__ ((packed)) patch_info; -+ -+typedef struct { -+ unsigned int tlv_data_len; -+ unsigned int tlv_patch_data_len; -+ unsigned char sign_ver; -+ unsigned char sign_algorithm; -+ unsigned char dwnd_cfg; -+ unsigned char reserved1; -+ unsigned short prod_id; -+ unsigned short build_ver; -+ unsigned short patch_ver; -+ unsigned short reserved2; -+ unsigned int patch_entry_addr; -+} __attribute__ ((packed)) tlv_patch_hdr; -+ -+typedef struct { -+ unsigned short tag_id; -+ unsigned short tag_len; -+ unsigned int tag_ptr; -+ unsigned int tag_ex_flag; -+} __attribute__ ((packed)) tlv_nvm_hdr; -+ -+typedef struct { -+ unsigned char tlv_type; -+ unsigned char tlv_length1; -+ unsigned char tlv_length2; -+ unsigned char tlv_length3; -+ -+ union{ -+ tlv_patch_hdr patch; -+ tlv_nvm_hdr nvm; -+ }tlv; -+} __attribute__ ((packed)) tlv_patch_info; -+ -+enum{ -+ BAUDRATE_115200 = 0x00, -+ BAUDRATE_57600 = 0x01, -+ BAUDRATE_38400 = 0x02, -+ BAUDRATE_19200 = 0x03, -+ BAUDRATE_9600 = 0x04, -+ BAUDRATE_230400 = 0x05, -+ BAUDRATE_250000 = 0x06, -+ BAUDRATE_460800 = 0x07, -+ BAUDRATE_500000 = 0x08, -+ BAUDRATE_720000 = 0x09, -+ BAUDRATE_921600 = 0x0A, -+ BAUDRATE_1000000 = 0x0B, -+ BAUDRATE_1250000 = 0x0C, -+ BAUDRATE_2000000 = 0x0D, -+ BAUDRATE_3000000 = 0x0E, -+ BAUDRATE_4000000 = 0x0F, -+ BAUDRATE_1600000 = 0x10, -+ BAUDRATE_3200000 = 0x11, -+ BAUDRATE_3500000 = 0x12, -+ BAUDRATE_AUTO = 0xFE, -+ BAUDRATE_Reserved = 0xFF -+}; -+ -+enum{ -+ ROME_PATCH_VER_0100 = 0x0100, -+ ROME_PATCH_VER_0101 = 0x0101, -+ ROME_PATCH_VER_0200 = 0x0200, -+ ROME_PATCH_VER_0300 = 0x0300, -+ ROME_PATCH_VER_0302 = 0x0302 -+ }; -+ -+enum{ -+ ROME_SOC_ID_00 = 0x00000000, -+ ROME_SOC_ID_11 = 0x00000011, -+ ROME_SOC_ID_13 = 0x00000013, -+ ROME_SOC_ID_22 = 0x00000022, -+ ROME_SOC_ID_23 = 0x00000023, -+ ROME_SOC_ID_44 = 0x00000044 -+}; -+ -+enum{ -+ ROME_VER_UNKNOWN = 0, -+ ROME_VER_1_0 = ((ROME_PATCH_VER_0100 << 16 ) | ROME_SOC_ID_00 ), -+ ROME_VER_1_1 = ((ROME_PATCH_VER_0101 << 16 ) | ROME_SOC_ID_00 ), -+ ROME_VER_1_3 = ((ROME_PATCH_VER_0200 << 16 ) | ROME_SOC_ID_00 ), -+ ROME_VER_2_1 = ((ROME_PATCH_VER_0200 << 16 ) | ROME_SOC_ID_11 ), -+ ROME_VER_3_0 = ((ROME_PATCH_VER_0300 << 16 ) | ROME_SOC_ID_22 ), -+ ROME_VER_3_2 = ((ROME_PATCH_VER_0302 << 16 ) | ROME_SOC_ID_44 ), -+ TUFELLO_VER_1_0 = ((ROME_PATCH_VER_0300 << 16 ) | ROME_SOC_ID_13 ), -+ TUFELLO_VER_1_1 = ((ROME_PATCH_VER_0302 << 16 ) | ROME_SOC_ID_23 ) -+}; -+#endif /* HW_ROME_H */ diff --git a/packages/network/bluez/patches/bluez-40-Add-support-for-sprd-type-in-hciattach.patch b/packages/network/bluez/patches/bluez-40-Add-support-for-sprd-type-in-hciattach.patch deleted file mode 100644 index 8586dde382..0000000000 --- a/packages/network/bluez/patches/bluez-40-Add-support-for-sprd-type-in-hciattach.patch +++ /dev/null @@ -1,962 +0,0 @@ -From 8db209b20b58ce1915b1366d29ae85c79dc1c4ea Mon Sep 17 00:00:00 2001 -From: Peter Vicman -Date: Tue, 28 Jun 2022 10:10:12 +0200 -Subject: [PATCH] Add support for sprd type in hciattach - -/usr/bin/hciattach -s 1500000 /dev/ttyBT0 sprd - -hciattach_sprd.c file come from -https://github.com/orangepi-xunlong/orangepi-build/commit/cbface3801e14c3f99cdabb53f57a0baff4319a1 -https://github.com/orangepi-xunlong/orangepi-build/blob/main/external/cache/sources/hcitools/hciattach_sprd.c -BT_CONFIG_PATH changed to "/lib/firmware/unisoc" ---- - Makefile.tools | 3 +- - tools/hciattach.c | 30 +- - tools/hciattach.h | 18 + - tools/hciattach_sprd.c | 832 +++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 868 insertions(+), 15 deletions(-) - create mode 100644 tools/hciattach_sprd.c - -diff --git a/Makefile.tools b/Makefile.tools -index 4b513366f..1842e6285 100644 ---- a/Makefile.tools -+++ b/Makefile.tools -@@ -378,7 +378,8 @@ tools_hciattach_SOURCES = tools/hciattach.c tools/hciattach.h \ - tools/hciattach_ath3k.c \ - tools/hciattach_qualcomm.c \ - tools/hciattach_intel.c \ -- tools/hciattach_bcm43xx.c -+ tools/hciattach_bcm43xx.c \ -+ tools/hciattach_sprd.c - tools_hciattach_LDADD = lib/libbluetooth-internal.la - - tools_hciconfig_SOURCES = tools/hciconfig.c -diff --git a/tools/hciattach.c b/tools/hciattach.c -index 276a4e56e..a3267a962 100644 ---- a/tools/hciattach.c -+++ b/tools/hciattach.c -@@ -38,20 +38,6 @@ - - #include "hciattach.h" - --struct uart_t { -- char *type; -- int m_id; -- int p_id; -- int proto; -- int init_speed; -- int speed; -- int flags; -- int pm; -- char *bdaddr; -- int (*init) (int fd, struct uart_t *u, struct termios *ti); -- int (*post) (int fd, struct uart_t *u, struct termios *ti); --}; -- - #define FLOW_CTL 0x0001 - #define AMP_DEV 0x0002 - #define ENABLE_PM 1 -@@ -266,6 +252,19 @@ static int bcm43xx(int fd, struct uart_t *u, struct termios *ti) - return bcm43xx_init(fd, u->init_speed, u->speed, ti, u->bdaddr); - } - -+/* add sprd init and post function */ -+static int sprd_init(int fd, struct uart_t *u, struct termios *ti) -+{ -+ fprintf(stderr, "SPRD Bluetooth init uart with init speed:%d, final_speed:%d, type:HCI UART %s\n", u->init_speed, u->speed, (u->proto == HCI_UART_H4)? "H4":"H5" ); -+ return sprd_config_init(fd, u, ti); -+} -+ -+static int sprd_post(int fd, struct uart_t *u, struct termios *ti) -+{ -+ fprintf(stderr, "SPRD Bluetooth post process\n"); -+ return sprd_config_post(fd, u, ti); -+} -+ - static int read_check(int fd, void *buf, int count) - { - int res; -@@ -1097,6 +1096,9 @@ struct uart_t uart[] = { - { "amp", 0x0000, 0x0000, HCI_UART_H4, 115200, 115200, - AMP_DEV, DISABLE_PM, NULL, NULL, NULL }, - -+ /* Bluetooth chip (UWE5622)*/ -+ { "sprd", 0x0000, 0x0000, NULL, 115200, 1500000, -+ FLOW_CTL, DISABLE_PM, NULL, sprd_init, sprd_post}, - { NULL, 0 } - }; - -diff --git a/tools/hciattach.h b/tools/hciattach.h -index 26c0d5424..69bc0ccef 100644 ---- a/tools/hciattach.h -+++ b/tools/hciattach.h -@@ -40,6 +40,20 @@ - #define HCI_UART_EXT_CONFIG 4 - #define HCI_UART_VND_DETECT 5 - -+struct uart_t { -+ char *type; -+ int m_id; -+ int p_id; -+ int proto; -+ int init_speed; -+ int speed; -+ int flags; -+ int pm; -+ char *bdaddr; -+ int (*init) (int fd, struct uart_t *u, struct termios *ti); -+ int (*post) (int fd, struct uart_t *u, struct termios *ti); -+}; -+ - int read_hci_event(int fd, unsigned char *buf, int size); - int set_speed(int fd, struct termios *ti, int speed); - int uart_speed(int speed); -@@ -56,3 +70,7 @@ int qualcomm_init(int fd, int speed, struct termios *ti, const char *bdaddr); - int intel_init(int fd, int init_speed, int *speed, struct termios *ti); - int bcm43xx_init(int fd, int def_speed, int speed, struct termios *ti, - const char *bdaddr); -+ -+/* add sprd init and post process for sprd Bluetooth chip (UWE5622) */ -+int sprd_config_init(int fd, struct uart_t *u, struct termios *ti); -+int sprd_config_post(int fd, struct uart_t *u, struct termios *ti); -diff --git a/tools/hciattach_sprd.c b/tools/hciattach_sprd.c -new file mode 100644 -index 000000000..12b4795de ---- /dev/null -+++ b/tools/hciattach_sprd.c -@@ -0,0 +1,832 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "lib/bluetooth.h" -+#include "hciattach.h" -+ -+/****************************************************************************** -+** Constants & Macros -+******************************************************************************/ -+#define LOG_STR "SPRD Bluetooth" -+#define DBG_ON 1 -+ -+#define SPRD_DBG(fmt, arg...) \ -+ do { \ -+ if (DBG_ON) \ -+ fprintf(stderr, "%s: " fmt "\n" , LOG_STR, ##arg); \ -+ } while(0) -+ -+#define SPRD_ERR(fmt, arg...) \ -+ do { \ -+ fprintf(stderr, "%s ERROR: " fmt "\n", LOG_STR, ##arg);\ -+ perror(LOG_STR" ERROR reason"); \ -+ } while(0) -+ -+#define SPRD_DUMP(buffer, len) \ -+ fprintf(stderr, "%s: ", LOG_STR); \ -+ do { \ -+ int i = 0; \ -+ for (i = 0; i < len; i++) { \ -+ if (i && !(i % 16)) { \ -+ fprintf(stderr, "\n"); \ -+ fprintf(stderr, "%s: ", LOG_STR); \ -+ } \ -+ fprintf(stderr, "%02x ", buffer[i]); \ -+ } \ -+ fprintf(stderr, "\n"); \ -+ } while (0) -+ -+#define CONF_ITEM_TABLE(ITEM, ACTION, BUF, LEN) \ -+ { #ITEM, ACTION, &(BUF.ITEM), LEN, (sizeof(BUF.ITEM) / LEN) } -+ -+#define UINT8_TO_STREAM(p, u8) \ -+ { *(p)++ = (uint8_t)(u8); } -+ -+#define STREAM_TO_UINT8(u8, p) \ -+ { \ -+ (u8) = (uint8_t)(*(p)); \ -+ (p) += 1; \ -+ } -+ -+#define UINT16_TO_STREAM(p, u16) \ -+ { \ -+ *(p)++ = (uint8_t)(u16); \ -+ *(p)++ = (uint8_t)((u16) >> 8); \ -+ } -+ -+#define STREAM_TO_UINT16(u16, p) \ -+ { \ -+ (u16) = ((uint16_t)(*(p)) + (((uint16_t)(*((p) + 1))) << 8)); \ -+ (p) += 2; \ -+ } -+ -+#define UINT32_TO_STREAM(p, u32) \ -+ { \ -+ *(p)++ = (uint8_t)(u32); \ -+ *(p)++ = (uint8_t)((u32) >> 8); \ -+ *(p)++ = (uint8_t)((u32) >> 16); \ -+ *(p)++ = (uint8_t)((u32) >> 24); \ -+ } -+ -+#define CONF_COMMENT '#' -+#define CONF_DELIMITERS " =\n\r\t" -+#define CONF_VALUES_DELIMITERS "=\n\r\t#" -+#define CONF_VALUES_PARTITION " ,=\n\r\t#" -+#define CONF_MAX_LINE_LEN 255 -+ -+#define HCI_PSKEY 0xFCA0 -+#define HCI_VSC_ENABLE_COMMMAND 0xFCA1 -+#define HCI_RF_PARA 0xFCA2 -+ -+#define RESPONSE_LENGTH 100 -+#define HCI_CMD_MAX_LEN 258 -+#define HCI_EVT_CMD_CMPL_OPCODE 3 -+#define HCI_PACKET_TYPE_COMMAND 1 -+#define HCI_CMD_PREAMBLE_SIZE 3 -+ -+#define FW_NODE_BYTE 6 -+#define FW_DATE_D_BYTE 8 -+#define FW_DATE_M_BYTE 9 -+#define FW_DATE_Y_BYTE 10 -+ -+//#define BT_CONFIG_PATH "/lib/firmware" -+#define BT_CONFIG_PATH "/lib/firmware/unisoc" -+#define BT_HC_HDR_SIZE (sizeof(HC_BT_HDR)) -+#define BT_VND_OP_RESULT_SUCCESS 0 -+#define BT_VND_OP_RESULT_FAIL 1 -+#define MSG_STACK_TO_HC_HCI_CMD 0x2000 -+#define START_STOP_CMD_SIZE 3 -+#define DUAL_MODE 0 -+#define DISABLE_BT 0 -+#define ENABLE_BT 1 -+ -+typedef void (*hci_cback)(void *); -+typedef int (conf_action_t)(char *p_conf_name, char *p_conf_value, void *buf, int len, int size); -+ -+typedef struct { -+ uint16_t event; -+ uint16_t len; -+ uint16_t offset; -+ uint16_t layer_specific; -+ uint8_t data[]; -+} HC_BT_HDR; -+ -+typedef struct { -+ uint32_t device_class; -+ uint8_t feature_set[16]; -+ uint8_t device_addr[6]; -+ uint16_t comp_id; -+ uint8_t g_sys_uart0_communication_supported; -+ uint8_t cp2_log_mode; -+ uint8_t LogLevel; -+ uint8_t g_central_or_perpheral; -+ uint16_t Log_BitMask; -+ uint8_t super_ssp_enable; -+ uint8_t common_rfu_b3; -+ uint32_t common_rfu_w[2]; -+ uint32_t le_rfu_w[2]; -+ uint32_t lmp_rfu_w[2]; -+ uint32_t lc_rfu_w[2]; -+ uint16_t g_wbs_nv_117; -+ uint16_t g_wbs_nv_118; -+ uint16_t g_nbv_nv_117; -+ uint16_t g_nbv_nv_118; -+ uint8_t g_sys_sco_transmit_mode; -+ uint8_t audio_rfu_b1; -+ uint8_t audio_rfu_b2; -+ uint8_t audio_rfu_b3; -+ uint32_t audio_rfu_w[2]; -+ uint8_t g_sys_sleep_in_standby_supported; -+ uint8_t g_sys_sleep_master_supported; -+ uint8_t g_sys_sleep_slave_supported; -+ uint8_t power_rfu_b1; -+ uint32_t power_rfu_w[2]; -+ uint32_t win_ext; -+ uint8_t edr_tx_edr_delay; -+ uint8_t edr_rx_edr_delay; -+ uint8_t tx_delay; -+ uint8_t rx_delay; -+ uint32_t bb_rfu_w[2]; -+ uint8_t agc_mode; -+ uint8_t diff_or_eq; -+ uint8_t ramp_mode; -+ uint8_t modem_rfu_b1; -+ uint32_t modem_rfu_w[2]; -+ uint32_t BQB_BitMask_1; -+ uint32_t BQB_BitMask_2; -+ uint16_t bt_coex_threshold[8]; -+ uint32_t other_rfu_w[6]; -+} pskey_config_t; -+ -+typedef struct { -+ uint16_t g_GainValue_A[6]; -+ uint16_t g_ClassicPowerValue_A[10]; -+ uint16_t g_LEPowerValue_A[16]; -+ uint16_t g_BRChannelpwrvalue_A[8]; -+ uint16_t g_EDRChannelpwrvalue_A[8]; -+ uint16_t g_LEChannelpwrvalue_A[8]; -+ uint16_t g_GainValue_B[6]; -+ uint16_t g_ClassicPowerValue_B[10]; -+ uint16_t g_LEPowerValue_B[16]; -+ uint16_t g_BRChannelpwrvalue_B[8]; -+ uint16_t g_EDRChannelpwrvalue_B[8]; -+ uint16_t g_LEChannelpwrvalue_B[8]; -+ uint16_t LE_fix_powerword; -+ uint8_t Classic_pc_by_channel; -+ uint8_t LE_pc_by_channel; -+ uint8_t RF_switch_mode; -+ uint8_t Data_Capture_Mode; -+ uint8_t Analog_IQ_Debug_Mode; -+ uint8_t RF_common_rfu_b3; -+ uint32_t RF_common_rfu_w[5]; -+} rf_config_t; -+ -+typedef struct { -+ const char *conf_entry; -+ conf_action_t *p_action; -+ void *buf; -+ int len; -+ int size; -+} conf_entry_t; -+ -+static uint8_t local_bdaddr[6]={0x10, 0x11, 0x12, 0x13, 0x14, 0x15}; -+static pskey_config_t marlin3_pskey; -+static rf_config_t marlin3_rf_config; -+static int s_bt_fd = -1; -+ -+static const conf_entry_t marlin3_pksey_table[] = { -+ CONF_ITEM_TABLE(device_class, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(feature_set, 0, marlin3_pskey, 16), -+ CONF_ITEM_TABLE(device_addr, 0, marlin3_pskey, 6), -+ CONF_ITEM_TABLE(comp_id, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(g_sys_uart0_communication_supported, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(cp2_log_mode, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(LogLevel, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(g_central_or_perpheral, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(Log_BitMask, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(super_ssp_enable, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(common_rfu_b3, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(common_rfu_w, 0, marlin3_pskey, 2), -+ CONF_ITEM_TABLE(le_rfu_w, 0, marlin3_pskey, 2), -+ CONF_ITEM_TABLE(lmp_rfu_w, 0, marlin3_pskey, 2), -+ CONF_ITEM_TABLE(lc_rfu_w, 0, marlin3_pskey, 2), -+ CONF_ITEM_TABLE(g_wbs_nv_117, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(g_wbs_nv_118, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(g_nbv_nv_117, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(g_nbv_nv_118, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(g_sys_sco_transmit_mode, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(audio_rfu_b1, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(audio_rfu_b2, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(audio_rfu_b3, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(audio_rfu_w, 0, marlin3_pskey, 2), -+ CONF_ITEM_TABLE(g_sys_sleep_in_standby_supported, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(g_sys_sleep_master_supported, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(g_sys_sleep_slave_supported, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(power_rfu_b1, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(power_rfu_w, 0, marlin3_pskey, 2), -+ CONF_ITEM_TABLE(win_ext, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(edr_tx_edr_delay, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(edr_rx_edr_delay, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(tx_delay, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(rx_delay, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(bb_rfu_w, 0, marlin3_pskey, 2), -+ CONF_ITEM_TABLE(agc_mode, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(diff_or_eq, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(ramp_mode, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(modem_rfu_b1, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(modem_rfu_w, 0, marlin3_pskey, 2), -+ CONF_ITEM_TABLE(BQB_BitMask_1, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(BQB_BitMask_2, 0, marlin3_pskey, 1), -+ CONF_ITEM_TABLE(bt_coex_threshold, 0, marlin3_pskey, 8), -+ CONF_ITEM_TABLE(other_rfu_w, 0, marlin3_pskey, 6), -+ {0, 0, 0, 0, 0} -+}; -+ -+static const conf_entry_t marlin3_rf_table[] = { -+ CONF_ITEM_TABLE(g_GainValue_A, 0, marlin3_rf_config, 6), -+ CONF_ITEM_TABLE(g_ClassicPowerValue_A, 0, marlin3_rf_config, 10), -+ CONF_ITEM_TABLE(g_LEPowerValue_A, 0, marlin3_rf_config, 16), -+ CONF_ITEM_TABLE(g_BRChannelpwrvalue_A, 0, marlin3_rf_config, 8), -+ CONF_ITEM_TABLE(g_EDRChannelpwrvalue_A, 0, marlin3_rf_config, 8), -+ CONF_ITEM_TABLE(g_LEChannelpwrvalue_A, 0, marlin3_rf_config, 8), -+ CONF_ITEM_TABLE(g_GainValue_B, 0, marlin3_rf_config, 6), -+ CONF_ITEM_TABLE(g_ClassicPowerValue_B, 0, marlin3_rf_config, 10), -+ CONF_ITEM_TABLE(g_LEPowerValue_B, 0, marlin3_rf_config, 16), -+ CONF_ITEM_TABLE(g_BRChannelpwrvalue_B, 0, marlin3_rf_config, 8), -+ CONF_ITEM_TABLE(g_EDRChannelpwrvalue_B, 0, marlin3_rf_config, 8), -+ CONF_ITEM_TABLE(g_LEChannelpwrvalue_B, 0, marlin3_rf_config, 8), -+ CONF_ITEM_TABLE(LE_fix_powerword, 0, marlin3_rf_config, 1), -+ CONF_ITEM_TABLE(Classic_pc_by_channel, 0, marlin3_rf_config, 1), -+ CONF_ITEM_TABLE(LE_pc_by_channel, 0, marlin3_rf_config, 1), -+ CONF_ITEM_TABLE(RF_switch_mode, 0, marlin3_rf_config, 1), -+ CONF_ITEM_TABLE(Data_Capture_Mode, 0, marlin3_rf_config, 1), -+ CONF_ITEM_TABLE(Analog_IQ_Debug_Mode, 0, marlin3_rf_config, 1), -+ CONF_ITEM_TABLE(RF_common_rfu_b3, 0, marlin3_rf_config, 1), -+ CONF_ITEM_TABLE(RF_common_rfu_w, 0, marlin3_rf_config, 5), -+ {0, 0, 0, 0, 0} -+}; -+ -+static void log_bin_to_hexstr(uint8_t *bin, uint8_t binsz, const char *log_tag) -+{ -+ SPRD_DBG("%s", log_tag); -+ SPRD_DUMP(bin, binsz); -+} -+ -+static void parse_number(char *p_conf_name, char *p_conf_value, void *buf, int len, int size) -+{ -+ uint8_t *dest = (uint8_t *)buf; -+ char *sub_value, *p; -+ uint32_t value; -+ (void)p_conf_name; -+ sub_value = strtok_r(p_conf_value, CONF_VALUES_PARTITION, &p); -+ do { -+ if (sub_value == NULL) -+ break; -+ -+ if (sub_value[0] == '0' && (sub_value[1] == 'x' || sub_value[1] == 'X')) -+ value = strtoul(sub_value, 0, 16) & 0xFFFFFFFF; -+ else -+ value = strtoul(sub_value, 0, 10) & 0xFFFFFFFF; -+ -+ switch (size) { -+ case sizeof(uint8_t): -+ *dest = value & 0xFF; -+ dest += size; -+ break; -+ -+ case sizeof(uint16_t): -+ *((uint16_t *)dest) = value & 0xFFFF; -+ dest += size; -+ break; -+ -+ case sizeof(uint32_t): -+ *((uint32_t *)dest) = value & 0xFFFFFFFF; -+ dest += size; -+ break; -+ -+ default: -+ break; -+ } -+ sub_value = strtok_r(NULL, CONF_VALUES_PARTITION, &p); -+ } while (--len); -+} -+ -+static unsigned char compare_char(unsigned char ch) -+{ -+ unsigned char data = 0x0; -+ -+ switch(ch) -+ { -+ case 0: -+ case '0': -+ data = 0x0; -+ break; -+ case 1: -+ case '1': -+ data = 0x1; -+ break; -+ case 2: -+ case '2': -+ data = 0x2; -+ break; -+ case 3: -+ case '3': -+ data = 0x3; -+ break; -+ case 4: -+ case '4': -+ data = 0x4; -+ break; -+ case 5: -+ case '5': -+ data = 0x5; -+ break; -+ case 6: -+ case '6': -+ data = 0x6; -+ break; -+ case 7: -+ case '7': -+ data = 0x7; -+ break; -+ case 8: -+ case '8': -+ data = 0x8; -+ break; -+ case 9: -+ case '9': -+ data = 0x9; -+ break; -+ case 10: -+ case 'a': -+ case 'A': -+ data = 0xA; -+ break; -+ case 11: -+ case 'b': -+ case 'B': -+ data = 0xB; -+ break; -+ case 12: -+ case 'c': -+ case 'C': -+ data = 0xC; -+ break; -+ case 13: -+ case 'd': -+ case 'D': -+ data = 0xD; -+ break; -+ case 14: -+ case 'e': -+ case 'E': -+ data = 0xE; -+ break; -+ case 15: -+ case 'f': -+ case 'F': -+ data = 0xF; -+ break; -+ } -+ return data; -+} -+ -+static void set_mac_address(uint8_t *addr) -+{ -+ int i = 0; -+ SPRD_DBG("%s", __func__); -+ //for (i = 0; i < 6; i++) -+ // addr[5-i] = (unsigned char)local_bdaddr[i]; -+ -+ FILE *fp = fopen("/sys/class/addr_mgt/addr_bt", "r+"); -+ unsigned char buff[255]; -+ fscanf(fp, "%s", buff); -+ fclose(fp); -+ int k = 0; -+ -+ unsigned char tmp[5]; -+ sprintf(tmp, "%c%c", buff[0], buff[1]); -+ unsigned char str = compare_char(tmp[0]); -+ unsigned char str2 = compare_char(tmp[1]); -+ local_bdaddr[0] = (str << 4) | str2; -+ -+ sprintf(tmp, "%c%c", buff[3], buff[4]); -+ str = compare_char(tmp[0]); -+ str2 = compare_char(tmp[1]); -+ local_bdaddr[1] = (str << 4) | str2; -+ -+ sprintf(tmp, "%c%c", buff[6], buff[7]); -+ str = compare_char(tmp[0]); -+ str2 = compare_char(tmp[1]); -+ local_bdaddr[2] = (str << 4) | str2; -+ -+ sprintf(tmp, "%c%c", buff[9], buff[10]); -+ str = compare_char(tmp[0]); -+ str2 = compare_char(tmp[1]); -+ local_bdaddr[3] = (str << 4) | str2; -+ -+ sprintf(tmp, "%c%c", buff[12], buff[13]); -+ str = compare_char(tmp[0]); -+ str2 = compare_char(tmp[1]); -+ local_bdaddr[4] = (str << 4) | str2; -+ -+ sprintf(tmp, "%c%c", buff[15], buff[16]); -+ str = compare_char(tmp[0]); -+ str2 = compare_char(tmp[1]); -+ local_bdaddr[5] = (str << 4) | str2; -+ -+ { -+ for (i = 0; i < 6; i++) -+ addr[5-i] = (unsigned char)local_bdaddr[i]; -+ } -+ -+} -+ -+static void vnd_load_configure(const char *p_path, const conf_entry_t *entry) -+{ -+ FILE *p_file; -+ char *p_name, *p_value, *p; -+ conf_entry_t *p_entry; -+ char line[CONF_MAX_LINE_LEN + 1]; /* add 1 for \0 char */ -+ -+ SPRD_DBG("Attempt to load conf from %s", p_path); -+ -+ if ((p_file = fopen(p_path, "r")) != NULL) { -+ /* read line by line */ -+ while (fgets(line, CONF_MAX_LINE_LEN + 1, p_file) != NULL) { -+ if (line[0] == CONF_COMMENT) continue; -+ -+ p_name = strtok_r(line, CONF_DELIMITERS, &p); -+ -+ if (NULL == p_name) { -+ continue; -+ } -+ -+ p_value = strtok_r(NULL, CONF_VALUES_DELIMITERS, &p); -+ -+ if (NULL == p_value) { -+ SPRD_DBG("vnd_load_conf: missing value for name: %s", p_name); -+ continue; -+ } -+ -+ p_entry = (conf_entry_t*)entry; -+ -+ while (p_entry->conf_entry != NULL) { -+ if (strcmp(p_entry->conf_entry, (const char *)p_name) == 0) { -+ if (p_entry->p_action) { -+ p_entry->p_action(p_name, p_value, p_entry->buf, p_entry->len, -+ p_entry->size); -+ } else { -+ SPRD_DBG("%s -> %s", p_name, p_value); -+ parse_number(p_name, p_value, p_entry->buf, p_entry->len, -+ p_entry->size); -+ } -+ break; -+ } -+ -+ p_entry++; -+ } -+ } -+ -+ fclose(p_file); -+ } else { -+ SPRD_DBG("vnd_load_conf file >%s< not found", p_path); -+ } -+} -+ -+static size_t H4Protocol_Send(uint8_t type, const uint8_t* data, size_t length) -+{ -+ struct iovec iov[] = { -+ {&type, sizeof(type)}, -+ {(uint8_t *)data, length}}; -+ -+ ssize_t ret = 0; -+ do { -+ ret = writev(s_bt_fd, iov, sizeof(iov) / sizeof(iov[0])); -+ } while (-1 == ret && EAGAIN == errno); -+ -+ if (ret == -1) { -+ SPRD_ERR("%s error writing to UART (%s)", __func__, strerror(errno)); -+ } else if (ret < length + 1) { -+ SPRD_ERR("%s: %d / %d bytes written - something went wrong...", __func__, ret, length + 1); -+ } -+ -+ return ret; -+} -+ -+static void *bt_vendor_alloc(int size) -+{ -+ void *p = (uint8_t *)malloc(size); -+ return p; -+} -+ -+static void bt_vendor_free(void *buffer) -+{ -+ free(buffer); -+} -+ -+static uint8_t bt_vendor_xmit(uint16_t opcode, void* buffer, hci_cback callback) -+{ -+ uint8_t type = HCI_PACKET_TYPE_COMMAND; -+ (void)opcode; -+ HC_BT_HDR* bt_hdr = (HC_BT_HDR *)buffer; -+ H4Protocol_Send(type, bt_hdr->data, bt_hdr->len); -+ return BT_VND_OP_RESULT_SUCCESS; -+} -+ -+static uint8_t sprd_vnd_send_hci_vsc(uint16_t cmd, uint8_t *payload, uint8_t len, hci_cback cback) -+{ -+ HC_BT_HDR *p_buf; -+ uint8_t *p, ret; -+ -+ p_buf = (HC_BT_HDR *)bt_vendor_alloc( -+ BT_HC_HDR_SIZE + HCI_CMD_PREAMBLE_SIZE + len); -+ if (p_buf) { -+ p_buf->event = MSG_STACK_TO_HC_HCI_CMD; -+ p_buf->offset = 0; -+ p_buf->layer_specific = 0; -+ p_buf->len = HCI_CMD_PREAMBLE_SIZE + len; -+ p = (uint8_t *)(p_buf + 1); -+ -+ UINT16_TO_STREAM(p, cmd); -+ *p++ = len; -+ memcpy(p, payload, len); -+ log_bin_to_hexstr((uint8_t *)(p_buf + 1), HCI_CMD_PREAMBLE_SIZE + len, __FUNCTION__); -+ ret = bt_vendor_xmit(cmd, p_buf, cback); -+ bt_vendor_free(p_buf); -+ return ret; -+ } -+ return BT_VND_OP_RESULT_FAIL; -+} -+ -+static void hw_core_cback(void *p_mem) -+{ -+ uint8_t *p_evt_buf = (uint8_t *)p_mem; -+ uint8_t *p, status; -+ uint16_t opcode, mode; -+ -+ p = (uint8_t *)(p_evt_buf + 1) + HCI_EVT_CMD_CMPL_OPCODE; -+ STREAM_TO_UINT16(opcode,p); -+ STREAM_TO_UINT16(mode,p); -+ STREAM_TO_UINT8(status,p); -+ SPRD_DBG("%s hw_core_cback response: [0x%04X, 0x%04X, 0x%02X]", __func__, opcode, mode, status); -+ bt_vendor_free(p_evt_buf); -+} -+ -+static void hw_core_enable(unsigned char enable) -+{ -+ uint8_t *p, msg_req[HCI_CMD_MAX_LEN]; -+ p = msg_req; -+ UINT16_TO_STREAM(p, DUAL_MODE); -+ UINT8_TO_STREAM(p, enable ? ENABLE_BT : DISABLE_BT); -+ sprd_vnd_send_hci_vsc(HCI_VSC_ENABLE_COMMMAND, msg_req, (uint8_t)(p - msg_req), NULL); -+} -+ -+static void hw_rf_cback(void *p_mem) -+{ -+ uint8_t *p_evt_buf = (uint8_t *)p_mem, len; -+ uint8_t *p, status; -+ uint16_t opcode, mode = 0; -+ -+ p = (uint8_t *)(p_evt_buf + 1) + 1; -+ STREAM_TO_UINT8(len, p); -+ -+ p = (uint8_t *)(p_evt_buf + 1) + HCI_EVT_CMD_CMPL_OPCODE; -+ STREAM_TO_UINT16(opcode, p); -+ if (len == 6) -+ STREAM_TO_UINT16(mode, p); -+ -+ STREAM_TO_UINT8(status, p); -+ -+ SPRD_DBG("%s hw_rf_cback response: [0x%04X, 0x%04X, 0x%02X]", __func__, opcode, mode, status); -+ /* Must free the RX event buffer */ -+ bt_vendor_free(p_evt_buf); -+} -+ -+static int marlin3_rf_preload() -+{ -+ uint8_t *p, msg_req[HCI_CMD_MAX_LEN]; -+ int i; -+ -+ SPRD_DBG("yujian.qin %s", __FUNCTION__); -+ p = msg_req; -+ -+ for (i = 0; i < 6; i++) -+ UINT16_TO_STREAM(p, marlin3_rf_config.g_GainValue_A[i]); -+ -+ for (i = 0; i < 10; i++) -+ UINT16_TO_STREAM(p, marlin3_rf_config.g_ClassicPowerValue_A[i]); -+ -+ for (i = 0; i < 16; i++) -+ UINT16_TO_STREAM(p, marlin3_rf_config.g_LEPowerValue_A[i]); -+ -+ for (i = 0; i < 8; i++) -+ UINT16_TO_STREAM(p, marlin3_rf_config.g_BRChannelpwrvalue_A[i]); -+ -+ for (i = 0; i < 8; i++) -+ UINT16_TO_STREAM(p, marlin3_rf_config.g_EDRChannelpwrvalue_A[i]); -+ -+ for (i = 0; i < 8; i++) -+ UINT16_TO_STREAM(p, marlin3_rf_config.g_LEChannelpwrvalue_A[i]); -+ -+ for (i = 0; i < 6; i++) -+ UINT16_TO_STREAM(p, marlin3_rf_config.g_GainValue_B[i]); -+ -+ for (i = 0; i < 10; i++) -+ UINT16_TO_STREAM(p, marlin3_rf_config.g_ClassicPowerValue_B[i]); -+ -+ for (i = 0; i < 16; i++) -+ UINT16_TO_STREAM(p, marlin3_rf_config.g_LEPowerValue_B[i]); -+ -+ for (i = 0; i < 8; i++) -+ UINT16_TO_STREAM(p, marlin3_rf_config.g_BRChannelpwrvalue_B[i]); -+ -+ for (i = 0; i < 8; i++) -+ UINT16_TO_STREAM(p, marlin3_rf_config.g_EDRChannelpwrvalue_B[i]); -+ -+ for (i = 0; i < 8; i++) -+ UINT16_TO_STREAM(p, marlin3_rf_config.g_LEChannelpwrvalue_B[i]); -+ -+ UINT16_TO_STREAM(p, marlin3_rf_config.LE_fix_powerword); -+ -+ UINT8_TO_STREAM(p, marlin3_rf_config.Classic_pc_by_channel); -+ UINT8_TO_STREAM(p, marlin3_rf_config.LE_pc_by_channel); -+ UINT8_TO_STREAM(p, marlin3_rf_config.RF_switch_mode); -+ UINT8_TO_STREAM(p, marlin3_rf_config.Data_Capture_Mode); -+ UINT8_TO_STREAM(p, marlin3_rf_config.Analog_IQ_Debug_Mode); -+ UINT8_TO_STREAM(p, marlin3_rf_config.RF_common_rfu_b3); -+ -+ for (i = 0; i < 5; i++) -+ UINT32_TO_STREAM(p, marlin3_rf_config.RF_common_rfu_w[i]); -+ -+ sprd_vnd_send_hci_vsc(HCI_RF_PARA, msg_req, (uint8_t)(p - msg_req), NULL); -+ return 0; -+} -+ -+static void marlin3_pskey_cback(void *p_mem) -+{ -+ uint8_t *p_evt_buf = (uint8_t *)p_mem; -+ -+ uint16_t opcode, node, year; -+ uint8_t *p, month, day; -+ (void)opcode; -+ -+ p = (uint8_t *)(p_evt_buf + 1) + HCI_EVT_CMD_CMPL_OPCODE; -+ STREAM_TO_UINT16(opcode, p); -+ -+ p = (uint8_t *)(p_evt_buf + 1) + FW_NODE_BYTE; -+ STREAM_TO_UINT16(node, p); -+ p = (uint8_t *)(p_evt_buf + 1) + FW_DATE_Y_BYTE; -+ STREAM_TO_UINT16(year, p); -+ p = (uint8_t *)(p_evt_buf + 1) + FW_DATE_M_BYTE; -+ STREAM_TO_UINT8(month, p); -+ p = (uint8_t *)(p_evt_buf + 1) + FW_DATE_D_BYTE; -+ STREAM_TO_UINT8(day, p); -+ -+ SPRD_DBG("Bluetooth Firmware Node: %04X Date: %04x-%02x-%02x", node, year, month, day); -+ -+ /* Must free the RX event buffer */ -+ bt_vendor_free(p_evt_buf); -+} -+ -+static int marlin3_pskey_preload(void *arg) -+{ -+ uint8_t *p, msg_req[HCI_CMD_MAX_LEN]; -+ int i; -+ (void)arg; -+ -+ SPRD_DBG("%s", __FUNCTION__); -+ p = msg_req; -+ UINT32_TO_STREAM(p, marlin3_pskey.device_class); -+ -+ for (i = 0; i < 16; i++) -+ UINT8_TO_STREAM(p, marlin3_pskey.feature_set[i]); -+ -+ for (i = 0; i < 6; i++) -+ UINT8_TO_STREAM(p, marlin3_pskey.device_addr[i]); -+ -+ UINT16_TO_STREAM(p, marlin3_pskey.comp_id); -+ UINT8_TO_STREAM(p, marlin3_pskey.g_sys_uart0_communication_supported); -+ UINT8_TO_STREAM(p, marlin3_pskey.cp2_log_mode); -+ UINT8_TO_STREAM(p, marlin3_pskey.LogLevel); -+ UINT8_TO_STREAM(p, marlin3_pskey.g_central_or_perpheral); -+ -+ UINT16_TO_STREAM(p, marlin3_pskey.Log_BitMask); -+ UINT8_TO_STREAM(p, marlin3_pskey.super_ssp_enable); -+ UINT8_TO_STREAM(p, marlin3_pskey.common_rfu_b3); -+ -+ for (i = 0; i < 2; i++) -+ UINT32_TO_STREAM(p, marlin3_pskey.common_rfu_w[i]); -+ -+ for (i = 0; i < 2; i++) -+ UINT32_TO_STREAM(p, marlin3_pskey.le_rfu_w[i]); -+ -+ for (i = 0; i < 2; i++) -+ UINT32_TO_STREAM(p, marlin3_pskey.lmp_rfu_w[i]); -+ -+ for (i = 0; i < 2; i++) -+ UINT32_TO_STREAM(p, marlin3_pskey.lc_rfu_w[i]); -+ -+ UINT16_TO_STREAM(p, marlin3_pskey.g_wbs_nv_117); -+ UINT16_TO_STREAM(p, marlin3_pskey.g_wbs_nv_118); -+ UINT16_TO_STREAM(p, marlin3_pskey.g_nbv_nv_117); -+ UINT16_TO_STREAM(p, marlin3_pskey.g_nbv_nv_118); -+ -+ UINT8_TO_STREAM(p, marlin3_pskey.g_sys_sco_transmit_mode); -+ UINT8_TO_STREAM(p, marlin3_pskey.audio_rfu_b1); -+ UINT8_TO_STREAM(p, marlin3_pskey.audio_rfu_b2); -+ UINT8_TO_STREAM(p, marlin3_pskey.audio_rfu_b3); -+ -+ for (i = 0; i < 2; i++) -+ UINT32_TO_STREAM(p, marlin3_pskey.audio_rfu_w[i]); -+ -+ UINT8_TO_STREAM(p, marlin3_pskey.g_sys_sleep_in_standby_supported); -+ UINT8_TO_STREAM(p, marlin3_pskey.g_sys_sleep_master_supported); -+ UINT8_TO_STREAM(p, marlin3_pskey.g_sys_sleep_slave_supported); -+ UINT8_TO_STREAM(p, marlin3_pskey.power_rfu_b1); -+ -+ for (i = 0; i < 2; i++) -+ UINT32_TO_STREAM(p, marlin3_pskey.power_rfu_w[i]); -+ -+ UINT32_TO_STREAM(p, marlin3_pskey.win_ext); -+ -+ UINT8_TO_STREAM(p, marlin3_pskey.edr_tx_edr_delay); -+ UINT8_TO_STREAM(p, marlin3_pskey.edr_rx_edr_delay); -+ UINT8_TO_STREAM(p, marlin3_pskey.tx_delay); -+ UINT8_TO_STREAM(p, marlin3_pskey.rx_delay); -+ -+ for (i = 0; i < 2; i++) -+ UINT32_TO_STREAM(p, marlin3_pskey.bb_rfu_w[i]); -+ -+ UINT8_TO_STREAM(p, marlin3_pskey.agc_mode); -+ UINT8_TO_STREAM(p, marlin3_pskey.diff_or_eq); -+ UINT8_TO_STREAM(p, marlin3_pskey.ramp_mode); -+ UINT8_TO_STREAM(p, marlin3_pskey.modem_rfu_b1); -+ -+ for (i = 0; i < 2; i++) -+ UINT32_TO_STREAM(p, marlin3_pskey.modem_rfu_w[i]); -+ -+ UINT32_TO_STREAM(p, marlin3_pskey.BQB_BitMask_1); -+ UINT32_TO_STREAM(p, marlin3_pskey.BQB_BitMask_2); -+ for (i = 0; i < 8; i++) -+ UINT16_TO_STREAM(p, marlin3_pskey.bt_coex_threshold[i]); -+ -+ for (i = 0; i < 6; i++) -+ UINT32_TO_STREAM(p, marlin3_pskey.other_rfu_w[i]); -+ -+ sprd_vnd_send_hci_vsc(HCI_PSKEY, msg_req, (uint8_t)(p - msg_req), NULL); -+ return 0; -+} -+ -+ -+int sprd_config_init(int fd, struct uart_t *u, struct termios *ti) -+{ -+ uint8_t *recv = NULL; -+ int len = 0; -+ -+ s_bt_fd = fd; -+ -+ memset(&marlin3_pskey, 0, sizeof(marlin3_pskey)); -+ memset(&marlin3_rf_config, 0, sizeof(marlin3_rf_config)); -+ vnd_load_configure(BT_CONFIG_PATH "/bt_configure_pskey.ini", &marlin3_pksey_table[0]); -+ vnd_load_configure(BT_CONFIG_PATH "/bt_configure_rf.ini", &marlin3_rf_table[0]); -+ //set_mac_address(marlin3_pskey.device_addr); -+ -+ marlin3_pskey_preload(NULL); -+ recv = bt_vendor_alloc(RESPONSE_LENGTH); -+ len = read_hci_event(s_bt_fd, recv, RESPONSE_LENGTH); -+ SPRD_DBG("Received event, len: %d", len); -+ SPRD_DUMP(recv, len); -+ marlin3_pskey_cback(recv); -+ -+ marlin3_rf_preload(); -+ recv = bt_vendor_alloc(RESPONSE_LENGTH); -+ len = read_hci_event(s_bt_fd, recv, RESPONSE_LENGTH); -+ SPRD_DBG("Received event, len: %d", len); -+ SPRD_DUMP(recv, len); -+ hw_rf_cback(recv); -+ -+ hw_core_enable(1); -+ recv = bt_vendor_alloc(RESPONSE_LENGTH); -+ len = read_hci_event(s_bt_fd, recv, RESPONSE_LENGTH); -+ SPRD_DBG("Received event, len: %d", len); -+ SPRD_DUMP(recv, len); -+ hw_core_cback(recv); -+ -+ return 0; -+} -+ -+int sprd_config_post(int fd, struct uart_t *u, struct termios *ti) -+{ -+ SPRD_DBG("Done setting line discpline"); -+ return 0; -+} --- -2.30.2 - diff --git a/packages/network/bluez/patches/bluez-50-fix-device_prove-failing.patch b/packages/network/bluez/patches/bluez-50-fix-device_prove-failing.patch deleted file mode 100644 index 8552d4125e..0000000000 --- a/packages/network/bluez/patches/bluez-50-fix-device_prove-failing.patch +++ /dev/null @@ -1,307 +0,0 @@ -From 3a9c637010f8dc1ba3e8382abe01065761d4f5bb Mon Sep 17 00:00:00 2001 -From: Luiz Augusto von Dentz -Date: Tue, 10 Oct 2023 12:38:29 -0700 -Subject: [PATCH] input: Fix .device_probe failing if SDP record is not found - -Due to changes introduced by 67a26abe53bf -("profile: Add probe_on_discover flag") profiles may get probed when -their profile UUID are discovered, rather than resolved, which means -the SDP record may not be available. - -Fixes: https://github.com/bluez/bluez/issues/614 ---- - profiles/input/device.c | 182 +++++++++++++++++++--------------------- - 1 file changed, 84 insertions(+), 98 deletions(-) - -diff --git a/profiles/input/device.c b/profiles/input/device.c -index e2ac6ea603..4a50ea9921 100644 ---- a/profiles/input/device.c -+++ b/profiles/input/device.c -@@ -60,7 +60,7 @@ struct input_device { - char *path; - bdaddr_t src; - bdaddr_t dst; -- uint32_t handle; -+ const sdp_record_t *rec; - GIOChannel *ctrl_io; - GIOChannel *intr_io; - guint ctrl_watch; -@@ -754,7 +754,8 @@ static void epox_endian_quirk(unsigned char *data, int size) - } - } - --static int create_hid_dev_name(sdp_record_t *rec, struct hidp_connadd_req *req) -+static int create_hid_dev_name(const sdp_record_t *rec, -+ struct hidp_connadd_req *req) - { - char sdesc[sizeof(req->name) / 2]; - -@@ -776,7 +777,7 @@ static int create_hid_dev_name(sdp_record_t *rec, struct hidp_connadd_req *req) - - /* See HID profile specification v1.0, "7.11.6 HIDDescriptorList" for details - * on the attribute format. */ --static int extract_hid_desc_data(sdp_record_t *rec, -+static int extract_hid_desc_data(const sdp_record_t *rec, - struct hidp_connadd_req *req) - { - sdp_data_t *d; -@@ -817,36 +818,40 @@ static int extract_hid_desc_data(sdp_record_t *rec, - return -EINVAL; - } - --static int extract_hid_record(sdp_record_t *rec, struct hidp_connadd_req *req) -+static int extract_hid_record(struct input_device *idev, -+ struct hidp_connadd_req *req) - { - sdp_data_t *pdlist; - uint8_t attr_val; - int err; - -- err = create_hid_dev_name(rec, req); -+ if (!idev->rec) -+ return -ENOENT; -+ -+ err = create_hid_dev_name(idev->rec, req); - if (err < 0) - DBG("No valid Service Name or Service Description found"); - -- pdlist = sdp_data_get(rec, SDP_ATTR_HID_PARSER_VERSION); -+ pdlist = sdp_data_get(idev->rec, SDP_ATTR_HID_PARSER_VERSION); - req->parser = pdlist ? pdlist->val.uint16 : 0x0100; - -- pdlist = sdp_data_get(rec, SDP_ATTR_HID_DEVICE_SUBCLASS); -+ pdlist = sdp_data_get(idev->rec, SDP_ATTR_HID_DEVICE_SUBCLASS); - req->subclass = pdlist ? pdlist->val.uint8 : 0; - -- pdlist = sdp_data_get(rec, SDP_ATTR_HID_COUNTRY_CODE); -+ pdlist = sdp_data_get(idev->rec, SDP_ATTR_HID_COUNTRY_CODE); - req->country = pdlist ? pdlist->val.uint8 : 0; - -- pdlist = sdp_data_get(rec, SDP_ATTR_HID_VIRTUAL_CABLE); -+ pdlist = sdp_data_get(idev->rec, SDP_ATTR_HID_VIRTUAL_CABLE); - attr_val = pdlist ? pdlist->val.uint8 : 0; - if (attr_val) - req->flags |= (1 << HIDP_VIRTUAL_CABLE_UNPLUG); - -- pdlist = sdp_data_get(rec, SDP_ATTR_HID_BOOT_DEVICE); -+ pdlist = sdp_data_get(idev->rec, SDP_ATTR_HID_BOOT_DEVICE); - attr_val = pdlist ? pdlist->val.uint8 : 0; - if (attr_val) - req->flags |= (1 << HIDP_BOOT_PROTOCOL_MODE); - -- err = extract_hid_desc_data(rec, req); -+ err = extract_hid_desc_data(idev->rec, req); - if (err < 0) - return err; - -@@ -1035,11 +1040,6 @@ static gboolean encrypt_notify(GIOChannel *io, GIOCondition condition, - static int hidp_add_connection(struct input_device *idev) - { - struct hidp_connadd_req *req; -- sdp_record_t *rec; -- char src_addr[18], dst_addr[18]; -- char filename[PATH_MAX]; -- GKeyFile *key_file; -- char handle[11], *str; - GError *gerr = NULL; - int err; - -@@ -1049,33 +1049,7 @@ static int hidp_add_connection(struct input_device *idev) - req->flags = 0; - req->idle_to = idle_timeout; - -- ba2str(&idev->src, src_addr); -- ba2str(&idev->dst, dst_addr); -- -- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", src_addr, -- dst_addr); -- sprintf(handle, "0x%8.8X", idev->handle); -- -- key_file = g_key_file_new(); -- if (!g_key_file_load_from_file(key_file, filename, 0, &gerr)) { -- error("Unable to load key file from %s: (%s)", filename, -- gerr->message); -- g_clear_error(&gerr); -- } -- str = g_key_file_get_string(key_file, "ServiceRecords", handle, NULL); -- g_key_file_free(key_file); -- -- if (!str) { -- error("Rejected connection from unknown device %s", dst_addr); -- err = -EPERM; -- goto cleanup; -- } -- -- rec = record_from_string(str); -- g_free(str); -- -- err = extract_hid_record(rec, req); -- sdp_record_free(rec); -+ err = extract_hid_record(idev, req); - if (err < 0) { - error("Could not parse HID SDP record: %s (%d)", strerror(-err), - -err); -@@ -1091,7 +1065,7 @@ static int hidp_add_connection(struct input_device *idev) - - /* Make sure the device is bonded if required */ - if (classic_bonded_only && !input_device_bonded(idev)) { -- error("Rejected connection from !bonded device %s", dst_addr); -+ error("Rejected connection from !bonded device %s", idev->path); - goto cleanup; - } - -@@ -1161,6 +1135,68 @@ static int connection_disconnect(struct input_device *idev, uint32_t flags) - return ioctl_disconnect(idev, flags); - } - -+static bool is_device_sdp_disable(const sdp_record_t *rec) -+{ -+ sdp_data_t *data; -+ -+ data = sdp_data_get(rec, SDP_ATTR_HID_SDP_DISABLE); -+ -+ return data && data->val.uint8; -+} -+ -+static enum reconnect_mode_t hid_reconnection_mode(bool reconnect_initiate, -+ bool normally_connectable) -+{ -+ if (!reconnect_initiate && !normally_connectable) -+ return RECONNECT_NONE; -+ else if (!reconnect_initiate && normally_connectable) -+ return RECONNECT_HOST; -+ else if (reconnect_initiate && !normally_connectable) -+ return RECONNECT_DEVICE; -+ else /* (reconnect_initiate && normally_connectable) */ -+ return RECONNECT_ANY; -+} -+ -+static void extract_hid_props(struct input_device *idev, -+ const sdp_record_t *rec) -+{ -+ /* Extract HID connectability */ -+ bool reconnect_initiate, normally_connectable; -+ sdp_data_t *pdlist; -+ -+ /* HIDNormallyConnectable is optional and assumed FALSE if not -+ * present. -+ */ -+ pdlist = sdp_data_get(rec, SDP_ATTR_HID_RECONNECT_INITIATE); -+ reconnect_initiate = pdlist ? pdlist->val.uint8 : TRUE; -+ -+ pdlist = sdp_data_get(rec, SDP_ATTR_HID_NORMALLY_CONNECTABLE); -+ normally_connectable = pdlist ? pdlist->val.uint8 : FALSE; -+ -+ /* Update local values */ -+ idev->reconnect_mode = -+ hid_reconnection_mode(reconnect_initiate, normally_connectable); -+} -+ -+static void input_device_update_rec(struct input_device *idev) -+{ -+ struct btd_profile *p = btd_service_get_profile(idev->service); -+ const sdp_record_t *rec; -+ -+ rec = btd_device_get_record(idev->device, p->remote_uuid); -+ if (!rec || idev->rec == rec) -+ return; -+ -+ idev->rec = rec; -+ idev->disable_sdp = is_device_sdp_disable(rec); -+ -+ /* Initialize device properties */ -+ extract_hid_props(idev, rec); -+ -+ if (idev->disable_sdp) -+ device_set_refresh_discovery(idev->device, false); -+} -+ - static int input_device_connected(struct input_device *idev) - { - int err; -@@ -1168,6 +1204,9 @@ static int input_device_connected(struct input_device *idev) - if (idev->intr_io == NULL || idev->ctrl_io == NULL) - return -ENOTCONN; - -+ /* Attempt to update SDP record if it had changed */ -+ input_device_update_rec(idev); -+ - err = hidp_add_connection(idev); - if (err < 0) - return err; -@@ -1411,74 +1450,21 @@ int input_device_disconnect(struct btd_service *service) - return 0; - } - --static bool is_device_sdp_disable(const sdp_record_t *rec) --{ -- sdp_data_t *data; -- -- data = sdp_data_get(rec, SDP_ATTR_HID_SDP_DISABLE); -- -- return data && data->val.uint8; --} -- --static enum reconnect_mode_t hid_reconnection_mode(bool reconnect_initiate, -- bool normally_connectable) --{ -- if (!reconnect_initiate && !normally_connectable) -- return RECONNECT_NONE; -- else if (!reconnect_initiate && normally_connectable) -- return RECONNECT_HOST; -- else if (reconnect_initiate && !normally_connectable) -- return RECONNECT_DEVICE; -- else /* (reconnect_initiate && normally_connectable) */ -- return RECONNECT_ANY; --} -- --static void extract_hid_props(struct input_device *idev, -- const sdp_record_t *rec) --{ -- /* Extract HID connectability */ -- bool reconnect_initiate, normally_connectable; -- sdp_data_t *pdlist; -- -- /* HIDNormallyConnectable is optional and assumed FALSE -- * if not present. */ -- pdlist = sdp_data_get(rec, SDP_ATTR_HID_RECONNECT_INITIATE); -- reconnect_initiate = pdlist ? pdlist->val.uint8 : TRUE; -- -- pdlist = sdp_data_get(rec, SDP_ATTR_HID_NORMALLY_CONNECTABLE); -- normally_connectable = pdlist ? pdlist->val.uint8 : FALSE; -- -- /* Update local values */ -- idev->reconnect_mode = -- hid_reconnection_mode(reconnect_initiate, normally_connectable); --} -- - static struct input_device *input_device_new(struct btd_service *service) - { - struct btd_device *device = btd_service_get_device(service); -- struct btd_profile *p = btd_service_get_profile(service); - const char *path = device_get_path(device); -- const sdp_record_t *rec = btd_device_get_record(device, p->remote_uuid); - struct btd_adapter *adapter = device_get_adapter(device); - struct input_device *idev; - -- if (!rec) -- return NULL; -- - idev = g_new0(struct input_device, 1); - bacpy(&idev->src, btd_adapter_get_address(adapter)); - bacpy(&idev->dst, device_get_address(device)); - idev->service = btd_service_ref(service); - idev->device = btd_device_ref(device); - idev->path = g_strdup(path); -- idev->handle = rec->handle; -- idev->disable_sdp = is_device_sdp_disable(rec); -- -- /* Initialize device properties */ -- extract_hid_props(idev, rec); - -- if (idev->disable_sdp) -- device_set_refresh_discovery(device, false); -+ input_device_update_rec(idev); - - return idev; - } diff --git a/packages/network/bluez/system.d/bluetooth.service b/packages/network/bluez/system.d/bluetooth.service index 0635a8b65b..3f0ff2bf9a 100644 --- a/packages/network/bluez/system.d/bluetooth.service +++ b/packages/network/bluez/system.d/bluetooth.service @@ -12,7 +12,7 @@ NotifyAccess=main EnvironmentFile=/storage/.cache/services/bluez.conf EnvironmentFile=-/run/libreelec/debug/bluez.conf ExecStart=/usr/lib/bluetooth/bluetoothd $BLUEZ_ARGS $BLUEZ_DEBUG -CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW +CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW CAP_FOWNER LimitNPROC=1 TimeoutStopSec=1s Restart=on-failure diff --git a/packages/sysutils/busybox/package.mk b/packages/sysutils/busybox/package.mk index a806428f3d..aea453a5fc 100644 --- a/packages/sysutils/busybox/package.mk +++ b/packages/sysutils/busybox/package.mk @@ -181,10 +181,10 @@ post_install() { fi ROOT_PWD="`${TOOLCHAIN}/bin/cryptpw -m sha512 ${ROOT_PASSWORD}`" - echo "chmod 4755 ${INSTALL}/usr/bin/busybox" >> $FAKEROOT_SCRIPT - echo "chmod 000 ${INSTALL}/usr/cache/shadow" >> $FAKEROOT_SCRIPT + echo "chmod 4755 ${INSTALL}/usr/bin/busybox" >> ${FAKEROOT_SCRIPT} + echo "chmod 000 ${INSTALL}/usr/cache/shadow" >> ${FAKEROOT_SCRIPT} - add_user root "${ROOT}_PWD" 0 0 "Root User" "/storage" "/bin/sh" + add_user root "${ROOT_PWD}" 0 0 "Root User" "/storage" "/bin/sh" add_group root 0 add_group users 100 From c3eb90549ab0c4517c4fe9416be0c4622d3a0379 Mon Sep 17 00:00:00 2001 From: mason Date: Tue, 28 Nov 2023 23:48:55 +0000 Subject: [PATCH 040/167] Lock device to lowest clocks during sleep mode --- .../devices/Anbernic RG552/010-governors | 5 + .../Anbernic RG552/sleep.d/post/002-freq | 13 +- .../Anbernic RG552/sleep.d/pre/002-freq | 9 ++ .../patches/RK3399/000-rk3399-devices.patch | 116 ++++++++++-------- 4 files changed, 87 insertions(+), 56 deletions(-) diff --git a/packages/hardware/quirks/devices/Anbernic RG552/010-governors b/packages/hardware/quirks/devices/Anbernic RG552/010-governors index e3d3da8ee0..2891874244 100755 --- a/packages/hardware/quirks/devices/Anbernic RG552/010-governors +++ b/packages/hardware/quirks/devices/Anbernic RG552/010-governors @@ -7,3 +7,8 @@ CPU_FREQ=("/sys/devices/system/cpu/cpufreq/policy0" "/sys/devices/system/cpu/cpu GPU_FREQ="/sys/devices/platform/ff9a0000.gpu/devfreq/ff9a0000.gpu" DMC_FREQ="/sys/devices/platform/memory-controller/devfreq/memory-controller/" EOF + +### Lock in lowest freq we want to use +echo 1008000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq +echo 1008000 > /sys/devices/system/cpu/cpufreq/policy4/scaling_min_freq +echo 600000000 > /sys/devices/platform/ff9a0000.gpu/devfreq/ff9a0000.gpu/min_freq diff --git a/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/post/002-freq b/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/post/002-freq index 512ac68e11..7ba581fc1b 100644 --- a/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/post/002-freq +++ b/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/post/002-freq @@ -2,11 +2,20 @@ # SPDX-License-Identifier: GPL-2.0 # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) -# Restore previous governors before going to sleep +### Restore previous governors before going to sleep . /etc/profile -# Grab the old governors. +### Set max/min freq to lowest available value +echo 1008000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq +echo 1008000 > /sys/devices/system/cpu/cpufreq/policy4/scaling_min_freq +echo 600000000 > /sys/devices/platform/ff9a0000.gpu/devfreq/ff9a0000.gpu/min_freq + +echo 1608000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq +echo 2088000 > /sys/devices/system/cpu/cpufreq/policy4/scaling_max_freq +echo 900000000 > /sys/devices/platform/ff9a0000.gpu/devfreq/ff9a0000.gpu/max_freq + +### Grab the old governors. OLD_CPU_FREQ=$(get_setting "sleep.cpugovernor") if [ ! -n "${OLD_CPU_FREQ}" ]; then OLD_CPU_FREQ="schedutil" diff --git a/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/pre/002-freq b/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/pre/002-freq index 4daf6a1fd2..8f8b35134a 100644 --- a/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/pre/002-freq +++ b/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/pre/002-freq @@ -17,3 +17,12 @@ set_setting sleep.cpugovernor "${CUR_GPU_FREQ}" set_cpu_gov powersave set_dmc_gov powersave set_gpu_gov powersave + +### Set max/min freq to lowest available value +echo 600000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq +echo 600000 > /sys/devices/system/cpu/cpufreq/policy4/scaling_min_freq +echo 200000000 > /sys/devices/platform/ff9a0000.gpu/devfreq/ff9a0000.gpu/min_freq + +echo 600000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq +echo 600000 > /sys/devices/system/cpu/cpufreq/policy4/scaling_max_freq +echo 200000000 > /sys/devices/platform/ff9a0000.gpu/devfreq/ff9a0000.gpu/max_freq diff --git a/projects/Rockchip/packages/linux/patches/RK3399/000-rk3399-devices.patch b/projects/Rockchip/packages/linux/patches/RK3399/000-rk3399-devices.patch index 5513702ece..b8772921c4 100644 --- a/projects/Rockchip/packages/linux/patches/RK3399/000-rk3399-devices.patch +++ b/projects/Rockchip/packages/linux/patches/RK3399/000-rk3399-devices.patch @@ -1,6 +1,6 @@ diff -rupN linux.orig/Makefile linux/Makefile ---- linux.orig/Makefile 2023-11-14 03:58:03.064741025 +0000 -+++ linux/Makefile 2023-11-15 14:10:46.134863088 +0000 +--- linux.orig/Makefile 2023-11-28 13:54:58.570108474 +0000 ++++ linux/Makefile 2023-11-28 19:50:16.215638386 +0000 @@ -826,6 +826,8 @@ KBUILD_CFLAGS += $(call cc-disable-warni KBUILD_CFLAGS += $(call cc-disable-warning, format-truncation) KBUILD_CFLAGS += $(call cc-disable-warning, format-overflow) @@ -20,8 +20,8 @@ diff -rupN linux.orig/Makefile linux/Makefile # Require designated initializers for all marked structures KBUILD_CFLAGS += $(call cc-option,-Werror=designated-init) diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/Makefile linux/arch/arm64/boot/dts/rockchip/Makefile ---- linux.orig/arch/arm64/boot/dts/rockchip/Makefile 2023-11-14 03:58:03.288746149 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/Makefile 2023-11-15 14:10:46.134863088 +0000 +--- linux.orig/arch/arm64/boot/dts/rockchip/Makefile 2023-11-28 13:54:59.138120459 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/Makefile 2023-11-28 19:50:16.215638386 +0000 @@ -21,6 +21,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-li dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-orion-r68-meta.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-px5-evb.dtb @@ -32,8 +32,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/Makefile linux/arch/arm64/boo dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-ficus.dtb diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3399-anbernic-rg552-opp.dtsi linux/arch/arm64/boot/dts/rockchip/rk3399-anbernic-rg552-opp.dtsi --- linux.orig/arch/arm64/boot/dts/rockchip/rk3399-anbernic-rg552-opp.dtsi 1970-01-01 00:00:00.000000000 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3399-anbernic-rg552-opp.dtsi 2023-11-15 14:15:47.804831632 +0000 -@@ -0,0 +1,133 @@ ++++ linux/arch/arm64/boot/dts/rockchip/rk3399-anbernic-rg552-opp.dtsi 2023-11-28 23:23:39.023319423 +0000 +@@ -0,0 +1,141 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2016-2017 Fuzhou Rockchip Electronics Co., Ltd @@ -46,24 +46,28 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3399-anbernic-rg552-opp.dts + opp-shared; + + opp00 { -+ opp-hz = /bits/ 64 <1008000000>; -+ opp-microvolt = <925000>; ++ opp-hz = /bits/ 64 <600000000>; ++ opp-microvolt = <825000>; + }; + opp01 { -+ opp-hz = /bits/ 64 <1200000000>; -+ opp-microvolt = <1000000>; ++ opp-hz = /bits/ 64 <1008000000>; ++ opp-microvolt = <900000>; + }; + opp02 { -+ opp-hz = /bits/ 64 <1416000000>; -+ opp-microvolt = <1125000>; ++ opp-hz = /bits/ 64 <1200000000>; ++ opp-microvolt = <975000>; + }; + opp03 { -+ opp-hz = /bits/ 64 <1512000000>; -+ opp-microvolt = <1200000>; ++ opp-hz = /bits/ 64 <1416000000>; ++ opp-microvolt = <1100000>; + }; + opp04 { ++ opp-hz = /bits/ 64 <1512000000>; ++ opp-microvolt = <1150000>; ++ }; ++ opp05 { + opp-hz = /bits/ 64 <1608000000>; -+ opp-microvolt = <1225000>; ++ opp-microvolt = <1200000>; + }; + }; + @@ -72,30 +76,34 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3399-anbernic-rg552-opp.dts + opp-shared; + + opp00 { -+ opp-hz = /bits/ 64 <1008000000>; -+ opp-microvolt = <875000>; ++ opp-hz = /bits/ 64 <600000000>; ++ opp-microvolt = <825000>; + }; + opp01 { -+ opp-hz = /bits/ 64 <1200000000>; -+ opp-microvolt = <950000>; ++ opp-hz = /bits/ 64 <1008000000>; ++ opp-microvolt = <850000>; + }; + opp02 { -+ opp-hz = /bits/ 64 <1416000000>; -+ opp-microvolt = <1025000>; ++ opp-hz = /bits/ 64 <1200000000>; ++ opp-microvolt = <900000>; + }; + opp03 { -+ opp-hz = /bits/ 64 <1608000000>; -+ opp-microvolt = <1100000>; ++ opp-hz = /bits/ 64 <1416000000>; ++ opp-microvolt = <975000>; + }; + opp04 { -+ opp-hz = /bits/ 64 <1800000000>; -+ opp-microvolt = <1200000>; ++ opp-hz = /bits/ 64 <1608000000>; ++ opp-microvolt = <1050000>; + }; + opp05 { ++ opp-hz = /bits/ 64 <1800000000>; ++ opp-microvolt = <1150000>; ++ }; ++ opp06 { + opp-hz = /bits/ 64 <1992000000>; + opp-microvolt = <1250000>; + }; -+ opp06 { ++ opp07 { + opp-hz = /bits/ 64 <2088000000>; + opp-microvolt = <1250000>; + }; @@ -105,8 +113,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3399-anbernic-rg552-opp.dts + compatible = "operating-points-v2"; + + opp00 { -+ opp-hz = /bits/ 64 <500000000>; -+ opp-microvolt = <875000>; ++ opp-hz = /bits/ 64 <200000000>; ++ opp-microvolt = <800000>; + }; + opp01 { + opp-hz = /bits/ 64 <600000000>; @@ -114,7 +122,7 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3399-anbernic-rg552-opp.dts + }; + opp02 { + opp-hz = /bits/ 64 <800000000>; -+ opp-microvolt = <1100000>; ++ opp-microvolt = <1075000>; + }; + opp03 { + opp-hz = /bits/ 64 <900000000>; @@ -169,7 +177,7 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3399-anbernic-rg552-opp.dts +}; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3399-anbernic-rg552.dts linux/arch/arm64/boot/dts/rockchip/rk3399-anbernic-rg552.dts --- linux.orig/arch/arm64/boot/dts/rockchip/rk3399-anbernic-rg552.dts 1970-01-01 00:00:00.000000000 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3399-anbernic-rg552.dts 2023-11-15 14:10:46.134863088 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3399-anbernic-rg552.dts 2023-11-28 19:50:16.215638386 +0000 @@ -0,0 +1,1329 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* @@ -1501,8 +1509,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3399-anbernic-rg552.dts lin + status = "okay"; +}; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3399.dtsi linux/arch/arm64/boot/dts/rockchip/rk3399.dtsi ---- linux.orig/arch/arm64/boot/dts/rockchip/rk3399.dtsi 2023-11-14 03:58:03.288746149 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3399.dtsi 2023-11-15 14:10:46.134863088 +0000 +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3399.dtsi 2023-11-28 13:54:59.142120544 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3399.dtsi 2023-11-28 19:50:16.215638386 +0000 @@ -1469,7 +1469,7 @@ <1000000000>, <150000000>, <75000000>, @@ -1513,8 +1521,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3399.dtsi linux/arch/arm64/ <100000000>, <50000000>, <400000000>, <400000000>, diff -rupN linux.orig/drivers/gpio/gpio-rockchip.c linux/drivers/gpio/gpio-rockchip.c ---- linux.orig/drivers/gpio/gpio-rockchip.c 2023-11-14 03:58:03.820758323 +0000 -+++ linux/drivers/gpio/gpio-rockchip.c 2023-11-15 14:10:46.134863088 +0000 +--- linux.orig/drivers/gpio/gpio-rockchip.c 2023-11-28 13:55:00.750154472 +0000 ++++ linux/drivers/gpio/gpio-rockchip.c 2023-11-28 19:50:16.215638386 +0000 @@ -335,13 +335,13 @@ static void rockchip_irq_demux(struct ir unsigned long pending; unsigned int irq; @@ -1532,8 +1540,8 @@ diff -rupN linux.orig/drivers/gpio/gpio-rockchip.c linux/drivers/gpio/gpio-rockc /* * Triggering IRQ on both rising and falling edge diff -rupN linux.orig/drivers/gpu/drm/panel/Kconfig linux/drivers/gpu/drm/panel/Kconfig ---- linux.orig/drivers/gpu/drm/panel/Kconfig 2023-11-14 03:58:04.344770314 +0000 -+++ linux/drivers/gpu/drm/panel/Kconfig 2023-11-15 14:10:46.134863088 +0000 +--- linux.orig/drivers/gpu/drm/panel/Kconfig 2023-11-28 13:55:02.030181481 +0000 ++++ linux/drivers/gpu/drm/panel/Kconfig 2023-11-28 19:50:16.215638386 +0000 @@ -588,6 +588,15 @@ config DRM_PANEL_SHARP_LS043T1LE01 Say Y here if you want to enable support for Sharp LS043T1LE01 qHD (540x960) DSI panel as found on the Qualcomm APQ8074 Dragonboard @@ -1551,8 +1559,8 @@ diff -rupN linux.orig/drivers/gpu/drm/panel/Kconfig linux/drivers/gpu/drm/panel/ tristate "Sharp LS060T1SX01 FullHD video mode panel" depends on OF diff -rupN linux.orig/drivers/gpu/drm/panel/Makefile linux/drivers/gpu/drm/panel/Makefile ---- linux.orig/drivers/gpu/drm/panel/Makefile 2023-11-14 03:58:04.344770314 +0000 -+++ linux/drivers/gpu/drm/panel/Makefile 2023-11-15 14:10:46.134863088 +0000 +--- linux.orig/drivers/gpu/drm/panel/Makefile 2023-11-28 13:55:02.030181481 +0000 ++++ linux/drivers/gpu/drm/panel/Makefile 2023-11-28 19:50:16.215638386 +0000 @@ -59,6 +59,7 @@ obj-$(CONFIG_DRM_PANEL_SEIKO_43WVF1G) += obj-$(CONFIG_DRM_PANEL_SHARP_LQ101R1SX01) += panel-sharp-lq101r1sx01.o obj-$(CONFIG_DRM_PANEL_SHARP_LS037V7DW01) += panel-sharp-ls037v7dw01.o @@ -1563,7 +1571,7 @@ diff -rupN linux.orig/drivers/gpu/drm/panel/Makefile linux/drivers/gpu/drm/panel obj-$(CONFIG_DRM_PANEL_SITRONIX_ST7703) += panel-sitronix-st7703.o diff -rupN linux.orig/drivers/gpu/drm/panel/panel-sharp-ls054b3sx01.c linux/drivers/gpu/drm/panel/panel-sharp-ls054b3sx01.c --- linux.orig/drivers/gpu/drm/panel/panel-sharp-ls054b3sx01.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux/drivers/gpu/drm/panel/panel-sharp-ls054b3sx01.c 2023-11-15 14:10:46.134863088 +0000 ++++ linux/drivers/gpu/drm/panel/panel-sharp-ls054b3sx01.c 2023-11-28 19:50:16.215638386 +0000 @@ -0,0 +1,360 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* @@ -1926,8 +1934,8 @@ diff -rupN linux.orig/drivers/gpu/drm/panel/panel-sharp-ls054b3sx01.c linux/driv +MODULE_DESCRIPTION("Panel driver for Sharp LS054B3SX01 1152x1920 Video Mode DSI Panel"); +MODULE_LICENSE("GPL v2"); diff -rupN linux.orig/drivers/input/Kconfig linux/drivers/input/Kconfig ---- linux.orig/drivers/input/Kconfig 2023-11-14 03:58:04.472773245 +0000 -+++ linux/drivers/input/Kconfig 2023-11-15 14:10:46.134863088 +0000 +--- linux.orig/drivers/input/Kconfig 2023-11-28 13:55:02.446190257 +0000 ++++ linux/drivers/input/Kconfig 2023-11-28 19:50:16.215638386 +0000 @@ -51,6 +51,19 @@ config INPUT_FF_MEMLESS To compile this driver as a module, choose M here: the module will be called ff-memless. @@ -1949,8 +1957,8 @@ diff -rupN linux.orig/drivers/input/Kconfig linux/drivers/input/Kconfig tristate "Sparse keymap support library" help diff -rupN linux.orig/drivers/input/Makefile linux/drivers/input/Makefile ---- linux.orig/drivers/input/Makefile 2023-11-14 03:58:04.472773245 +0000 -+++ linux/drivers/input/Makefile 2023-11-15 14:10:46.134863088 +0000 +--- linux.orig/drivers/input/Makefile 2023-11-28 13:55:02.446190257 +0000 ++++ linux/drivers/input/Makefile 2023-11-28 19:50:16.215638386 +0000 @@ -10,6 +10,7 @@ input-core-y := input.o input-compat.o i input-core-y += touchscreen.o @@ -1961,7 +1969,7 @@ diff -rupN linux.orig/drivers/input/Makefile linux/drivers/input/Makefile obj-$(CONFIG_INPUT_VIVALDIFMAP) += vivaldi-fmap.o diff -rupN linux.orig/drivers/input/input-polldev.c linux/drivers/input/input-polldev.c --- linux.orig/drivers/input/input-polldev.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux/drivers/input/input-polldev.c 2023-11-15 14:10:46.134863088 +0000 ++++ linux/drivers/input/input-polldev.c 2023-11-28 19:50:16.215638386 +0000 @@ -0,0 +1,362 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* @@ -2326,8 +2334,8 @@ diff -rupN linux.orig/drivers/input/input-polldev.c linux/drivers/input/input-po +} +EXPORT_SYMBOL(input_unregister_polled_device); diff -rupN linux.orig/drivers/input/joystick/Kconfig linux/drivers/input/joystick/Kconfig ---- linux.orig/drivers/input/joystick/Kconfig 2023-11-14 03:58:04.472773245 +0000 -+++ linux/drivers/input/joystick/Kconfig 2023-11-15 14:10:46.134863088 +0000 +--- linux.orig/drivers/input/joystick/Kconfig 2023-11-28 13:55:02.446190257 +0000 ++++ linux/drivers/input/joystick/Kconfig 2023-11-28 19:50:16.215638386 +0000 @@ -393,6 +393,12 @@ config JOYSTICK_FSIA6B To compile this driver as a module, choose M here: the module will be called fsia6b. @@ -2342,8 +2350,8 @@ diff -rupN linux.orig/drivers/input/joystick/Kconfig linux/drivers/input/joystic bool "N64 controller" depends on MACH_NINTENDO64 diff -rupN linux.orig/drivers/input/joystick/Makefile linux/drivers/input/joystick/Makefile ---- linux.orig/drivers/input/joystick/Makefile 2023-11-14 03:58:04.472773245 +0000 -+++ linux/drivers/input/joystick/Makefile 2023-11-15 14:10:46.134863088 +0000 +--- linux.orig/drivers/input/joystick/Makefile 2023-11-28 13:55:02.446190257 +0000 ++++ linux/drivers/input/joystick/Makefile 2023-11-28 19:50:16.215638386 +0000 @@ -30,6 +30,7 @@ obj-$(CONFIG_JOYSTICK_PXRC) += pxrc.o obj-$(CONFIG_JOYSTICK_QWIIC) += qwiic-joystick.o obj-$(CONFIG_JOYSTICK_SENSEHAT) += sensehat-joystick.o @@ -2354,7 +2362,7 @@ diff -rupN linux.orig/drivers/input/joystick/Makefile linux/drivers/input/joysti obj-$(CONFIG_JOYSTICK_STINGER) += stinger.o diff -rupN linux.orig/drivers/input/joystick/singleadcjoy.c linux/drivers/input/joystick/singleadcjoy.c --- linux.orig/drivers/input/joystick/singleadcjoy.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux/drivers/input/joystick/singleadcjoy.c 2023-11-15 14:10:46.134863088 +0000 ++++ linux/drivers/input/joystick/singleadcjoy.c 2023-11-28 19:50:16.215638386 +0000 @@ -0,0 +1,1416 @@ +/*----------------------------------------------------------------------------*/ + @@ -3773,8 +3781,8 @@ diff -rupN linux.orig/drivers/input/joystick/singleadcjoy.c linux/drivers/input/ +late_initcall(joypad_init); +module_exit(joypad_exit); diff -rupN linux.orig/drivers/input/touchscreen/goodix.c linux/drivers/input/touchscreen/goodix.c ---- linux.orig/drivers/input/touchscreen/goodix.c 2023-11-14 03:58:04.488773611 +0000 -+++ linux/drivers/input/touchscreen/goodix.c 2023-11-15 14:10:46.134863088 +0000 +--- linux.orig/drivers/input/touchscreen/goodix.c 2023-11-28 13:55:02.482191017 +0000 ++++ linux/drivers/input/touchscreen/goodix.c 2023-11-28 19:50:16.215638386 +0000 @@ -1037,7 +1037,7 @@ retry_get_irq_gpio: default: if (ts->gpiod_int && ts->gpiod_rst) { @@ -3785,8 +3793,8 @@ diff -rupN linux.orig/drivers/input/touchscreen/goodix.c linux/drivers/input/tou } } diff -rupN linux.orig/drivers/power/supply/cw2015_battery.c linux/drivers/power/supply/cw2015_battery.c ---- linux.orig/drivers/power/supply/cw2015_battery.c 2023-11-14 03:58:05.048786424 +0000 -+++ linux/drivers/power/supply/cw2015_battery.c 2023-11-15 14:10:46.134863088 +0000 +--- linux.orig/drivers/power/supply/cw2015_battery.c 2023-11-28 13:55:04.226227817 +0000 ++++ linux/drivers/power/supply/cw2015_battery.c 2023-11-28 19:50:16.215638386 +0000 @@ -553,7 +553,7 @@ static enum power_supply_property cw_bat }; @@ -3798,7 +3806,7 @@ diff -rupN linux.orig/drivers/power/supply/cw2015_battery.c linux/drivers/power/ .num_properties = ARRAY_SIZE(cw_battery_properties), diff -rupN linux.orig/include/linux/input-polldev.h linux/include/linux/input-polldev.h --- linux.orig/include/linux/input-polldev.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux/include/linux/input-polldev.h 2023-11-15 14:10:46.134863088 +0000 ++++ linux/include/linux/input-polldev.h 2023-11-28 19:50:16.215638386 +0000 @@ -0,0 +1,58 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef _INPUT_POLLDEV_H From e0d7dec5139f6de7bb53f95a5be0b5b69a7026a7 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 29 Nov 2023 00:07:58 +0000 Subject: [PATCH 041/167] Revert rpcs3-sa. --- packages/emulators/standalone/rpcs3-sa/package.mk | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/emulators/standalone/rpcs3-sa/package.mk b/packages/emulators/standalone/rpcs3-sa/package.mk index 5cce92066b..f109d38c9a 100644 --- a/packages/emulators/standalone/rpcs3-sa/package.mk +++ b/packages/emulators/standalone/rpcs3-sa/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2022-present - The JELOS Project (https://github.com/JustEnoughLinuxOS) PKG_NAME="rpcs3-sa" -PKG_VERSION="ed75bab7b284a9cb62b7308097108e4caef9a0b3" +PKG_VERSION="7081b89e976ad7f931c926022bd93ddd9778347c" PKG_ARCH="x86_64" PKG_LICENSE="GPL-2.0-or-later" PKG_SITE="https://rpcs3.net" @@ -16,7 +16,9 @@ PKG_GIT_CLONE_BRANCH="master" PKG_GIT_CLONE_SINGLE="yes" pre_configure_host() { - PKG_CMAKE_SCRIPT="${PKG_BUILD}/3rdparty/llvm/llvm/llvm/CMakeLists.txt" + # path changes in future commits. + # PKG_CMAKE_SCRIPT="${PKG_BUILD}/3rdparty/llvm/llvm/llvm/CMakeLists.txt" + PKG_CMAKE_SCRIPT="${PKG_BUILD}/llvm/CMakeLists.txt" PKG_CMAKE_OPTS_HOST="-DLLVM_TARGETS_TO_BUILD="X86" \ -DLLVM_BUILD_RUNTIME=OFF \ -DLLVM_BUILD_TOOLS=OFF \ From 07d8d0c9f127b640e018587afe25472c65d80352 Mon Sep 17 00:00:00 2001 From: Glazed_Belmont <48196637+GlaZedBelmont@users.noreply.github.com> Date: Wed, 29 Nov 2023 00:19:27 -0500 Subject: [PATCH 042/167] Add ALSA-LIB to BLUEZ Add Alsa-lib as a dep to bluez to fix building errors --- packages/network/bluez/package.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/network/bluez/package.mk b/packages/network/bluez/package.mk index 60243b2542..90d1a22b16 100644 --- a/packages/network/bluez/package.mk +++ b/packages/network/bluez/package.mk @@ -7,7 +7,7 @@ PKG_VERSION="5.70" PKG_LICENSE="GPL" PKG_SITE="http://www.bluez.org/" PKG_URL="https://www.kernel.org/pub/linux/bluetooth/${PKG_NAME}-${PKG_VERSION}.tar.xz" -PKG_DEPENDS_TARGET="toolchain dbus glib readline systemd json-c" +PKG_DEPENDS_TARGET="toolchain dbus glib readline systemd json-c alsa-lib" PKG_LONGDESC="Bluetooth Tools and System Daemons for Linux." PKG_TOOLCHAIN="autotools" PKG_BUILD_FLAGS="+lto" From c144a2a24ab09aa931901f1b17202b70be802824 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 29 Nov 2023 10:32:26 +0000 Subject: [PATCH 043/167] Fix primehack branch. --- packages/emulators/standalone/primehack/package.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/emulators/standalone/primehack/package.mk b/packages/emulators/standalone/primehack/package.mk index b4cbc6454a..e85a0a532b 100755 --- a/packages/emulators/standalone/primehack/package.mk +++ b/packages/emulators/standalone/primehack/package.mk @@ -7,6 +7,7 @@ PKG_DEPENDS_TARGET="toolchain libevdev libdrm ffmpeg zlib libpng lzo libusb zstd PKG_SITE="https://github.com/shiiion/dolphin" PKG_URL="${PKG_SITE}.git" PKG_VERSION="48dbd3a4a7249948d3e7e21b20842d493c3b00cb" +PKG_GIT_CLONE_BRANCH="master" PKG_LONGDESC="PrimeHack – A Dolphin Emulator fork for Metroid Prime Trilogy." PKG_PATCH_DIRS+=" wayland" From d92fbe5d966e803a5b144d1222ed4202c8b04408 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 29 Nov 2023 11:35:59 +0000 Subject: [PATCH 044/167] Apply optimize harder O3 patch, thanks to @NeroReflex (linux-chimeraos). --- .../AMD64/010-optimize-harder-O3.patch | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 packages/kernel/linux/patches/AMD64/010-optimize-harder-O3.patch diff --git a/packages/kernel/linux/patches/AMD64/010-optimize-harder-O3.patch b/packages/kernel/linux/patches/AMD64/010-optimize-harder-O3.patch new file mode 100644 index 0000000000..7fdce27f75 --- /dev/null +++ b/packages/kernel/linux/patches/AMD64/010-optimize-harder-O3.patch @@ -0,0 +1,46 @@ +diff --git a/Makefile b/Makefile +--- a/Makefile ++++ b/Makefile +@@ -442,7 +442,7 @@ endif + HOSTPKG_CONFIG = pkg-config + + KBUILD_USERHOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \ +- -O2 -fomit-frame-pointer -std=gnu11 ++ -O3 -fomit-frame-pointer -std=gnu11 + KBUILD_USERCFLAGS := $(KBUILD_USERHOSTCFLAGS) $(USERCFLAGS) + KBUILD_USERLDFLAGS := $(USERLDFLAGS) + +@@ -474,7 +474,7 @@ endif + -Wclippy::dbg_macro + + KBUILD_HOSTCFLAGS := $(KBUILD_USERHOSTCFLAGS) $(HOST_LFS_CFLAGS) $(HOSTCFLAGS) +-KBUILD_HOSTCXXFLAGS := -Wall -O2 $(HOST_LFS_CFLAGS) $(HOSTCXXFLAGS) ++KBUILD_HOSTCXXFLAGS := -Wall -O3 $(HOST_LFS_CFLAGS) $(HOSTCXXFLAGS) + KBUILD_HOSTRUSTFLAGS := $(rust_common_flags) -O -Cstrip=debuginfo \ + -Zallow-features= $(HOSTRUSTFLAGS) + KBUILD_HOSTLDFLAGS := $(HOST_LFS_LDFLAGS) $(HOSTLDFLAGS) +@@ -757,7 +757,7 @@ KBUILD_CFLAGS += $(call cc-disable-warning, format-overflow) + KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member) + + ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE +-KBUILD_CFLAGS += -O2 ++KBUILD_CFLAGS += -O3 + KBUILD_RUSTFLAGS += -Copt-level=2 + else ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE + KBUILD_CFLAGS += -Os +diff --git a/init/Kconfig b/init/Kconfig +--- a/init/Kconfig ++++ b/init/Kconfig +@@ -1401,10 +1401,10 @@ choice + default CC_OPTIMIZE_FOR_PERFORMANCE + + config CC_OPTIMIZE_FOR_PERFORMANCE +- bool "Optimize for performance (-O2)" ++ bool "Optimize for performance (-O3)" + help + This is the default optimization level for the kernel, building +- with the "-O2" compiler flag for best performance and most ++ with the "-O3" compiler flag for best performance and most + helpful compile-time warnings. + + config CC_OPTIMIZE_FOR_SIZE From 1948747fd1286fc1882094e1672b4c5d748aefde Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 29 Nov 2023 12:07:04 +0000 Subject: [PATCH 045/167] Unblock and update freechaf-lr. --- config/blocklist | 1 - packages/emulators/libretro/freechaf-lr/package.mk | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/config/blocklist b/config/blocklist index cf7ec71a63..111aac9c77 100644 --- a/config/blocklist +++ b/config/blocklist @@ -9,6 +9,5 @@ ryujinx-sa #broken on JELOS after build 1.1740. melonds-sa #Broken OpenGL renderer upstream mupen64plus-sa-ui-console #Causes segfaults nanoboyadvance-sa #SDL version removed after this commit -freechaf-lr #build issue, revisit. kronos-sa #using the release version of kronos had better results. retroarch #pinning to release versions for stability. diff --git a/packages/emulators/libretro/freechaf-lr/package.mk b/packages/emulators/libretro/freechaf-lr/package.mk index 05ad297219..92fe360137 100644 --- a/packages/emulators/libretro/freechaf-lr/package.mk +++ b/packages/emulators/libretro/freechaf-lr/package.mk @@ -1,5 +1,5 @@ PKG_NAME="freechaf-lr" -PKG_VERSION="4d1d5cb83b93728a63f03454e472a23055d9bbfc" +PKG_VERSION="782739dd6988b0148f9c26ddc6ff414e76e54d7b" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPLv2" From 41686379f8e972e9f43118ad0aa8019a23598613 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 29 Nov 2023 17:22:47 +0000 Subject: [PATCH 046/167] Fix automount logic on single card devices. --- packages/jelos/sources/scripts/automount | 25 ++++++++++++++---------- packages/ui/emulationstation/package.mk | 2 +- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/packages/jelos/sources/scripts/automount b/packages/jelos/sources/scripts/automount index b286b52201..875bef226e 100755 --- a/packages/jelos/sources/scripts/automount +++ b/packages/jelos/sources/scripts/automount @@ -11,13 +11,21 @@ GAMES_DEVICE=$(get_setting system.gamesdevice) MOUNT_PATH="/storage/games-external" OVERLAY_PATH="/storage/roms" + +start_overlay() { + if [ "${ENABLE_OVERLAY}" = "true" ] + then + systemctl enable storage-roms.mount >/dev/null 2>&1 + systemctl start storage-roms.mount >/dev/null 2>&1 + fi +} + if [[ ! "${MOUNT_GAMES}" =~ [0-9] ]] then set_setting system.automount 1 elif [[ "${MOUNT_GAMES}" == "0" ]] then - systemctl enable storage-roms.mount >/dev/null 2>&1 - systemctl start storage-roms.mount >/dev/null 2>&1 + start_overlay exit 0 fi @@ -45,8 +53,7 @@ mount_games() { set_setting system.merged.storage 1 ;; *) - systemctl stop storage-roms.mount >/dev/null 2>&1 - systemctl disable storage-roms.mount >/dev/null 2>&1 + ENABLE_OVERLAY=false MOUNT_PATH=${OVERLAY_PATH} if [ -e "/storage/.overlay_supported" ] then @@ -72,17 +79,12 @@ mount_games() { fsck -Mly ${1} log $0 "Mounting ${1} on ${MOUNT_PATH}" /usr/bin/busybox mount ${1} ${MOUNT_PATH} >/dev/null 2>&1 - if [ "${ENABLE_OVERLAY}" = true ] - then - systemctl enable storage-roms.mount >/dev/null 2>&1 - systemctl restart storage-roms.mount >/dev/null 2>&1 - fi fi + start_overlay } find_games() { if /usr/bin/busybox mountpoint -q /storage ; then - for DEV in $(for dev in mmcblk[0-9] sd[a-z] nvme[0-9]; do blkid | grep ${dev} | awk 'BEGIN {FS=":"}; /ext4/ || /fat/ {print $1}' | sort -r; done) do ROOTDEV=$(echo ${DEV} | sed -e "s#^/.*/##g" -e "s#p[0-9].*\$##g") @@ -110,6 +112,9 @@ find_games() { break fi done + # If we're here there is no external storage to use, but we want to start the overlay anyway. + ENABLE_OVERLAY=true + start_overlay fi } diff --git a/packages/ui/emulationstation/package.mk b/packages/ui/emulationstation/package.mk index 7bbb33701a..3b5316a080 100644 --- a/packages/ui/emulationstation/package.mk +++ b/packages/ui/emulationstation/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="emulationstation" -PKG_VERSION="ee0516ee5934c62c268ad4e5195389b421aba45c" +PKG_VERSION="ac666f2" PKG_GIT_CLONE_BRANCH="main" PKG_REV="1" PKG_ARCH="any" From 3af17579bb96e6b85ca65a88ff8cdd709027c27b Mon Sep 17 00:00:00 2001 From: mason Date: Wed, 29 Nov 2023 16:38:04 +0000 Subject: [PATCH 047/167] Fix bug in RG552 sleep, and add sleep freq set to RK3326 build --- .../Anbernic RG552/sleep.d/pre/002-freq | 2 +- .../platforms/RK3326/sleep.d/post/002-freq | 23 +++++++++++++++++++ .../platforms/RK3326/sleep.d/pre/002-freq | 19 +++++++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 packages/hardware/quirks/platforms/RK3326/sleep.d/post/002-freq create mode 100644 packages/hardware/quirks/platforms/RK3326/sleep.d/pre/002-freq diff --git a/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/pre/002-freq b/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/pre/002-freq index 8f8b35134a..9e66aefa29 100644 --- a/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/pre/002-freq +++ b/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/pre/002-freq @@ -11,7 +11,7 @@ CUR_CPU_FREQ="$(cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor)" CUR_GPU_FREQ="$(cat /sys/devices/platform/ff9a0000.gpu/devfreq/ff9a0000.gpu/governor)" set_setting sleep.cpugovernor "${CUR_CPU_FREQ}" -set_setting sleep.cpugovernor "${CUR_GPU_FREQ}" +set_setting sleep.gpugovernor "${CUR_GPU_FREQ}" ### Set all governors to powersave set_cpu_gov powersave diff --git a/packages/hardware/quirks/platforms/RK3326/sleep.d/post/002-freq b/packages/hardware/quirks/platforms/RK3326/sleep.d/post/002-freq new file mode 100644 index 0000000000..d5c06cc41f --- /dev/null +++ b/packages/hardware/quirks/platforms/RK3326/sleep.d/post/002-freq @@ -0,0 +1,23 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +### Restore previous governors before going to sleep + +. /etc/profile + +### Grab the old governors. +OLD_CPU_FREQ=$(get_setting "sleep.cpugovernor") +if [ ! -n "${OLD_CPU_FREQ}" ]; then + OLD_CPU_FREQ="schedutil" +fi + +OLD_GPU_FREQ=$(get_setting "sleep.gpugovernor") +if [ ! -n "${OLD_GPU_FREQ}" ]; then + OLD_GPU_FREQ="simple_ondemand" +fi + +# Restore old governors. +set_cpu_gov "${OLD_CPU_FREQ}" +set_dmc_gov "${OLD_CPU_FREQ}" +set_gpu_gov "${OLD_GPU_FREQ}" diff --git a/packages/hardware/quirks/platforms/RK3326/sleep.d/pre/002-freq b/packages/hardware/quirks/platforms/RK3326/sleep.d/pre/002-freq new file mode 100644 index 0000000000..9fcc29bd94 --- /dev/null +++ b/packages/hardware/quirks/platforms/RK3326/sleep.d/pre/002-freq @@ -0,0 +1,19 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +# Store current freq governors and set governors to powersave. + +. /etc/profile + +### Get the current cpu and gpu governor, save for when the device wakes from sleep. +CUR_CPU_FREQ="$(cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor)" +CUR_GPU_FREQ="$(cat /sys/devices/platform/ff400000.gpu/devfreq/ff400000.gpu/governor)" + +set_setting sleep.cpugovernor "${CUR_CPU_FREQ}" +set_setting sleep.gpugovernor "${CUR_GPU_FREQ}" + +### Set all governors to powersave +set_cpu_gov powersave +set_dmc_gov powersave +set_gpu_gov powersave From 00064cd40b6c9f350dc30b1a6c2d680e6e8fbac5 Mon Sep 17 00:00:00 2001 From: Nicholas Caito Date: Wed, 29 Nov 2023 10:06:38 -0600 Subject: [PATCH 048/167] Include cps1, cps2, and cps3 in list of cheevo support cps1, cps2, and cps3 default to using FBNeo, which supports Retro Achievements. They work the same as games launched from "arcade" or "neogeo" using FBNeo (and those are already specified in the file). --- packages/jelos/sources/scripts/setsettings.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/jelos/sources/scripts/setsettings.sh b/packages/jelos/sources/scripts/setsettings.sh index 9bfb0ed9d5..05b9e9319f 100755 --- a/packages/jelos/sources/scripts/setsettings.sh +++ b/packages/jelos/sources/scripts/setsettings.sh @@ -52,6 +52,9 @@ declare -a HAS_CHEEVOS=( arcade atari7800 atarilynx colecovision + cps1 + cps2 + cps3 dreamcast famicom fbn From c83f3a2296434f568f5be73ba12c6b6afe878409 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 29 Nov 2023 22:25:24 +0000 Subject: [PATCH 049/167] Change the default EPP from performance to balanced_performance, add simple AMD64 benchmark script. --- packages/jelos/sources/post-update | 9 ++ packages/jelos/sources/scripts/benchmark | 112 ++++++++++++++++++ .../powerstate/profile.d/030-powerfunctions | 17 ++- .../sources/devices/AMD64/set_epp | 2 +- 4 files changed, 138 insertions(+), 2 deletions(-) create mode 100755 packages/jelos/sources/scripts/benchmark diff --git a/packages/jelos/sources/post-update b/packages/jelos/sources/post-update index 6295e920fc..f7ed07fd21 100644 --- a/packages/jelos/sources/post-update +++ b/packages/jelos/sources/post-update @@ -93,6 +93,15 @@ else fi systemctl start storage-roms.mount +### 20231129 - Don't default to performance. +EPP=$(get_setting system.power.epp) +if [ -z "${EPP}" ] || \ + [ "${EPP}" = "performance" ] +then + EPP="balance_performance" + set_setting system.power.epp ${EPP} +fi + ### Items below this line should not be removed. tocon "Update complete, rebooting..." reboot diff --git a/packages/jelos/sources/scripts/benchmark b/packages/jelos/sources/scripts/benchmark new file mode 100755 index 0000000000..0e42bed05d --- /dev/null +++ b/packages/jelos/sources/scripts/benchmark @@ -0,0 +1,112 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +. /etc/profile + +if [ ! "${HW_ARCH}" = "x86_64" ] +then + echo "This platform is not currently supported." + exit 1 +fi + +HOSTNAME=$(hostname) + +if [ -z "${1}" ] +then + BENCHLOG="${1}" +else + BENCHLOG="benchmark.log" +fi + +LOG="${HOME}/${BENCHLOG}.log" + +SYSTEM_TDP=$(get_setting system.overclock) +SYSTEM_GOV=$(get_setting system.cpugovernor) +SYSTEM_EPP=$(get_setting system.power.epp) +SYSTEM_GPU=$(get_setting system.gpuperf) +SYSTEM_THREADS=$(get_setting system.threads) +SYSTEM_POWERSAVE=$(get_setting system.powersave) +SYSTEM_COOLING=$(get_setting cooling.profile) + +case ${1} in + performance) + onlinethreads all + performance + gpu_performance_level profile_peak + cpu_perftune performance + set_setting system.powersave 0 + systemctl restart powerstate + set_setting cooling.profile auto + systemctl restart fancontrol + ;; + balanced_performance) + onlinethreads all + schedutil + gpu_performance_level auto + cpu_perftune balance_performance + set_setting system.powersave 0 + systemctl restart powerstate + set_setting cooling.profile auto + systemctl restart fancontrol + ;; + balanced_powersave) + onlinethreads 4 + powersave + gpu_performance_level low + cpu_perftune balance_power + set_setting system.powersave 1 + systemctl restart powerstate + set_setting cooling.profile quiet + systemctl restart fancontrol + ;; + powersave) + onlinethreads 4 + powersave + gpu_performance_level low + cpu_perftune power + set_setting system.powersave 1 + systemctl restart powerstate + set_setting cooling.profile quiet + systemctl restart fancontrol + ;; + *) + # Default Settings + onlinethreads all + schedutil + gpu_performance_level auto + cpu_perftune balance_performance + set_setting system.powersave 0 + systemctl restart powerstate + set_setting cooling.profile auto + systemctl restart fancontrol + ;; +esac + +if [ -e "${LOG}" ] +then + rm -f ${LOG} +fi + +echo "${HOSTNAME} - ${1}" + +for TDP in 4.5w 6w 9w 15w 18w 24w 28w +do + overclock ${TDP} >/dev/null 2>&1 + echo "Testing @ ${TDP}" 2>&1 | tee -a ${LOG} + echo "----" 2>&1 | tee -a ${LOG} + glmark2-es2-wayland --fullscreen --annotate 2>&1 | awk '/glmark2 Score:/ {print "GLMark: "$3}' | tee -a ${LOG} + cd /usr/bin + ./7z b 2>&1 | awk '/^Tot:/ {print "7z: "$4}' | tee -a ${LOG} + echo "----" 2>&1 | tee -a ${LOG} +done + +overclock ${SYSTEM_TDP} +onlinethreads ${SYSTEM_THREADS} +${SYSTEM_GOV} +gpu_performance_level ${SYSTEM_GPU} +cpu_perftune ${SYSTEM_EPP} +set_setting system.powersave ${SYSTEM_POWERSAVE} +systemctl restart powerstate +set_setting cooling.profile ${SYSTEM_COOLING} +systemctl restart fancontrol diff --git a/packages/sysutils/powerstate/profile.d/030-powerfunctions b/packages/sysutils/powerstate/profile.d/030-powerfunctions index 49a8850198..e42a1b73b9 100644 --- a/packages/sysutils/powerstate/profile.d/030-powerfunctions +++ b/packages/sysutils/powerstate/profile.d/030-powerfunctions @@ -68,6 +68,10 @@ pcie_aspm_policy() { } cpu_perftune() { + if [ -n "${1}" ] + then + DESIRED_EPP=${1} + fi CPUPOWERSAVE=$(get_setting system.power.cpu) POWERSAVEENABLED=$(get_setting system.powersave) CPU="$(awk '/vendor_id/ {print $3;exit}' /proc/cpuinfo)" @@ -91,15 +95,22 @@ cpu_perftune() { AuthenticAMD) PSTATE="amd_pstate" STATUS="active" + WARM="passive" ;; GenuineIntel) PSTATE="intel_pstate" STATUS="passive" + WARM="active" ;; esac if [ -f "/sys/devices/system/cpu/${PSTATE}/status" ] then + if [ -n "${WARM}" ] + then + # Some devices need to switch before the handles are writeable (AYANEO). + echo ${WARM} >/sys/devices/system/cpu/${PSTATE}/status + fi echo ${STATUS} >/sys/devices/system/cpu/${PSTATE}/status while [ ! -f /sys/devices/system/cpu/cpufreq/policy0/energy_performance_preference ] do @@ -110,9 +121,13 @@ cpu_perftune() { EPP=$(get_setting system.power.epp) if [ -z "${EPP}" ] then - EPP="performance" + EPP="balance_performance" set_setting system.power.epp ${EPP} fi + if [ -n "${DESIRED_EPP}" ] + then + EPP="${DESIRED_EPP}" + fi echo ${EPP} >${policy} 2>/dev/null done fi diff --git a/packages/sysutils/system-utils/sources/devices/AMD64/set_epp b/packages/sysutils/system-utils/sources/devices/AMD64/set_epp index 1128a580b1..2acb8dcb33 100755 --- a/packages/sysutils/system-utils/sources/devices/AMD64/set_epp +++ b/packages/sysutils/system-utils/sources/devices/AMD64/set_epp @@ -15,7 +15,7 @@ then PROFILE=$(get_setting system.power.epp) if [ -z "${PROFILE}" ] then - PROFILE="performance" + PROFILE="balance_performance" set_setting system.power.epp ${PROFILE} fi else From 06258275a699a3208ab1b63b8cf7f33cc7e05790 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Thu, 30 Nov 2023 00:50:15 +0000 Subject: [PATCH 050/167] Wireguard tools should be executable. --- packages/network/wireguard-tools/package.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/network/wireguard-tools/package.mk b/packages/network/wireguard-tools/package.mk index 1856f1f2a9..37b09be803 100644 --- a/packages/network/wireguard-tools/package.mk +++ b/packages/network/wireguard-tools/package.mk @@ -27,4 +27,5 @@ makeinstall_target() { cp ${PKG_DIR}/scripts/wg-genconfig ${INSTALL}/usr/bin cp ${PKG_BUILD}/src/wg ${INSTALL}/usr/bin cp ${PKG_BUILD}/src/wg-quick/linux.bash ${INSTALL}/usr/bin/wg-quick + chmod -755 ${INSTALL}/usr/bin/* } From 84fbd851104af90e6b413445184c50eeed43b2a9 Mon Sep 17 00:00:00 2001 From: mason Date: Wed, 29 Nov 2023 23:27:51 +0000 Subject: [PATCH 051/167] Bump Mesa to 23.3.0 --- packages/graphics/mesa/package.mk | 2 +- .../mesa/patches/AMD64/000-fix-i686.patch | 22 ------------------- 2 files changed, 1 insertion(+), 23 deletions(-) delete mode 100644 packages/graphics/mesa/patches/AMD64/000-fix-i686.patch diff --git a/packages/graphics/mesa/package.mk b/packages/graphics/mesa/package.mk index 85fd40bc59..6479ece22c 100644 --- a/packages/graphics/mesa/package.mk +++ b/packages/graphics/mesa/package.mk @@ -22,7 +22,7 @@ case ${DEVICE} in PKG_URL="https://mesa.freedesktop.org/archive/mesa-${PKG_VERSION}.tar.xz" ;; *) - PKG_VERSION="23.2.1" + PKG_VERSION="23.3.0" PKG_SITE="http://www.mesa3d.org/" PKG_URL="https://mesa.freedesktop.org/archive/mesa-${PKG_VERSION}.tar.xz" ;; diff --git a/packages/graphics/mesa/patches/AMD64/000-fix-i686.patch b/packages/graphics/mesa/patches/AMD64/000-fix-i686.patch deleted file mode 100644 index 20e3d94940..0000000000 --- a/packages/graphics/mesa/patches/AMD64/000-fix-i686.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- a/src/gallium/drivers/crocus/crocus_bufmgr.c 2023-03-14 18:16:32.195276836 +0000 -+++ b/src/gallium/drivers/crocus/crocus_bufmgr.c 2023-03-14 18:17:32.920657663 +0000 -@@ -878,7 +878,7 @@ crocus_bo_map_cpu(struct util_debug_call - bo_wait_with_stall_warning(dbg, bo, "CPU mapping"); - } - -- if (!bo->cache_coherent && !bo->bufmgr->has_llc) { -+ //if (!bo->cache_coherent && !bo->bufmgr->has_llc) { - /* If we're reusing an existing CPU mapping, the CPU caches may - * contain stale data from the last time we read from that mapping. - * (With the BO cache, it might even be data from a previous buffer!) -@@ -895,8 +895,8 @@ crocus_bo_map_cpu(struct util_debug_call - * LLC entirely requiring us to keep dirty pixels for the scanout - * out of any cache.) - */ -- intel_invalidate_range(bo->map_cpu, bo->size); -- } -+ // intel_invalidate_range(bo->map_cpu, bo->size); -+ //} - - return bo->map_cpu; - } From 99237b918e7baba8667a0b9b268b261538331dda Mon Sep 17 00:00:00 2001 From: Mauro Ferradini <40890242+mauroferra@users.noreply.github.com> Date: Thu, 30 Nov 2023 11:57:32 +0000 Subject: [PATCH 052/167] removed extra dash from chmod command --- packages/network/wireguard-tools/package.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/network/wireguard-tools/package.mk b/packages/network/wireguard-tools/package.mk index 37b09be803..7c75f7ea81 100644 --- a/packages/network/wireguard-tools/package.mk +++ b/packages/network/wireguard-tools/package.mk @@ -27,5 +27,5 @@ makeinstall_target() { cp ${PKG_DIR}/scripts/wg-genconfig ${INSTALL}/usr/bin cp ${PKG_BUILD}/src/wg ${INSTALL}/usr/bin cp ${PKG_BUILD}/src/wg-quick/linux.bash ${INSTALL}/usr/bin/wg-quick - chmod -755 ${INSTALL}/usr/bin/* + chmod 755 ${INSTALL}/usr/bin/* } From 8bd54cc7312808288aeb70249364df1f53e0d91f Mon Sep 17 00:00:00 2001 From: fewtarius Date: Thu, 30 Nov 2023 15:28:57 +0000 Subject: [PATCH 053/167] samba config should be updated after upgrading. --- packages/jelos/sources/post-update | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/jelos/sources/post-update b/packages/jelos/sources/post-update index f7ed07fd21..accafac504 100644 --- a/packages/jelos/sources/post-update +++ b/packages/jelos/sources/post-update @@ -102,6 +102,9 @@ then set_setting system.power.epp ${EPP} fi +### 20231130 - Replace smb.conf for new overlay mechanism. +cp -f /usr/config/smb.conf /storage/.config + ### Items below this line should not be removed. tocon "Update complete, rebooting..." reboot From 798fa4102b959df1142044a7a87156eef13aa8c8 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Thu, 30 Nov 2023 19:12:26 +0000 Subject: [PATCH 054/167] Fix logic bug in automount that prevented correct mount pattern on some devices. --- packages/jelos/sources/scripts/automount | 32 ++++++++++++++++-------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/packages/jelos/sources/scripts/automount b/packages/jelos/sources/scripts/automount index 875bef226e..8f98374920 100755 --- a/packages/jelos/sources/scripts/automount +++ b/packages/jelos/sources/scripts/automount @@ -11,10 +11,21 @@ GAMES_DEVICE=$(get_setting system.gamesdevice) MOUNT_PATH="/storage/games-external" OVERLAY_PATH="/storage/roms" - start_overlay() { - if [ "${ENABLE_OVERLAY}" = "true" ] + if [ -e "/storage/.overlay_unsupported" ] then + # If we're not using the overlay, bind mount the external storage path + # so we don't need to change any configs. + grep ${MOUNT_PATH} /proc/mounts >/dev/null 2>&1 + if [ ! $? = 0 ] + then + MOUNT_PATH="/storage/games-internal" + fi + log $0 "Executing bind mount of ${MOUNT_PATH} to ${OVERLAY_PATH}" + mount --bind ${MOUNT_PATH} ${OVERLAY_PATH} + exit 0 + else + log $0 "Enabling overlay." systemctl enable storage-roms.mount >/dev/null 2>&1 systemctl start storage-roms.mount >/dev/null 2>&1 fi @@ -29,22 +40,23 @@ then exit 0 fi -load_modules() { +function load_modules() { for MODULE in exfat vfat do lsmod | grep ${MODULE} 2>/dev/null if [ ! $? = 0 ] then + log $0 "Loading ${MODULE}." modprobe ${MODULE} 2>/dev/null fi done } -mount_games() { +function mount_games() { FSTYPE=$(blkid -o export ${1} | awk 'BEGIN {FS="="} /TYPE/ {print $2}') case ${FSTYPE} in ext4) - ENABLE_OVERLAY=true + log $0 "Found supported partition for overlayfs." if [ -e "/storage/.overlay_unsupported" ] then rm -f /storage/.overlay_unsupported @@ -53,8 +65,7 @@ mount_games() { set_setting system.merged.storage 1 ;; *) - ENABLE_OVERLAY=false - MOUNT_PATH=${OVERLAY_PATH} + log $0 "Partition does not support overlayfs, disabling." if [ -e "/storage/.overlay_supported" ] then rm -f /storage/.overlay_supported @@ -65,6 +76,7 @@ mount_games() { if [ ! -d "${MOUNT_PATH}" ] then + log $0 "Create directory ${MOUNT_PATH}" /usr/bin/busybox mkdir -p ${MOUNT_PATH} >/dev/null 2>&1 fi @@ -75,8 +87,8 @@ mount_games() { then ### Udevil shouldn't mount it this early, but just in-case. umount /var/media/* 2>/dev/null - log $0 "FSCK ${1}" - fsck -Mly ${1} + log $0 "Checking filesystem ${1}." + fsck -Mly ${1} >/dev/null 2>&1 log $0 "Mounting ${1} on ${MOUNT_PATH}" /usr/bin/busybox mount ${1} ${MOUNT_PATH} >/dev/null 2>&1 fi @@ -108,12 +120,12 @@ find_games() { [ ! -e "/storage/.please_resize_me" ] then GAMES_DEVICE=${DEV} + log $0 "Found ${DEV} available to mount." mount_games "${DEV}" break fi done # If we're here there is no external storage to use, but we want to start the overlay anyway. - ENABLE_OVERLAY=true start_overlay fi } From f19522946b3ad78ce907ccf813eea66a7f6d38e5 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Fri, 1 Dec 2023 00:29:29 +0000 Subject: [PATCH 055/167] Add RG351V to README.md. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b08b75ff3d..21bb204f5c 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,7 @@ JELOS supports a variety of ARM and Intel/AMD based devices. | Manufacturer | Device | CPU / Architecture | Kernel | GL driver | Interface | | -- | -- | -- | -- | -- | -- | | Anbernic | [RG351P/M](http://jelos.org/devices/anbernic/rg351pm) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | +| Anbernic | [RG351v](http://jelos.org/devices/anbernic/rg351v) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | | Anbernic | [RG353P](http://jelos.org/devices/anbernic/rg353pmvvs) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | | Anbernic | [RG353M](http://jelos.org/devices/anbernic/rg353pmvvs) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | | Anbernic | [RG353V](http://jelos.org/devices/anbernic/rg353pmvvs) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | From a44293fded4945a4cfaa8908fd18309067cb4647 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Fri, 1 Dec 2023 00:30:32 +0000 Subject: [PATCH 056/167] Fix URL. --- README.md | 4 ++-- packages/emulators/standalone/yuzu-sa/package.mk | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 21bb204f5c..d6edc8678a 100644 --- a/README.md +++ b/README.md @@ -101,8 +101,8 @@ JELOS supports a variety of ARM and Intel/AMD based devices. | Manufacturer | Device | CPU / Architecture | Kernel | GL driver | Interface | | -- | -- | -- | -- | -- | -- | -| Anbernic | [RG351P/M](http://jelos.org/devices/anbernic/rg351pm) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | -| Anbernic | [RG351v](http://jelos.org/devices/anbernic/rg351v) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | +| Anbernic | [RG351P/M](http://jelos.org/devices/anbernic/rg351pmv) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | +| Anbernic | [RG351v](http://jelos.org/devices/anbernic/rg351pmv) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | | Anbernic | [RG353P](http://jelos.org/devices/anbernic/rg353pmvvs) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | | Anbernic | [RG353M](http://jelos.org/devices/anbernic/rg353pmvvs) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | | Anbernic | [RG353V](http://jelos.org/devices/anbernic/rg353pmvvs) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | diff --git a/packages/emulators/standalone/yuzu-sa/package.mk b/packages/emulators/standalone/yuzu-sa/package.mk index 4f6c83b9bd..3cd17b1ced 100644 --- a/packages/emulators/standalone/yuzu-sa/package.mk +++ b/packages/emulators/standalone/yuzu-sa/package.mk @@ -48,6 +48,10 @@ PKG_CMAKE_OPTS_TARGET+=" -DENABLE_QT=ON \ -DYUZU_USE_QT_MULTIMEDIA=ON \ -DYUZU_USE_QT_WEB_ENGINE=OFF \ -DUSE_DISCORD_PRESENCE=OFF" +pre_configure_target() { + CFLAGS=$(echo ${CFLAGS} | sed -e "s|-Ofast|-O3|") + CXXFLAGS=$(echo ${CXXFLAGS} | sed -e "s|-Ofast|-O3|") +} makeinstall_target() { mkdir -p ${INSTALL}/usr/bin From 29af320f468fc3718e9078e7008801e697a4b575 Mon Sep 17 00:00:00 2001 From: Sparticuz Date: Mon, 4 Dec 2023 11:13:41 -0500 Subject: [PATCH 057/167] fix merge --- packages/jelos/sources/scripts/automount | 40 --------------------- packages/ui/emulationstation/package.mk | 4 --- projects/Amlogic/packages/linux/package.mk | 4 --- projects/Rockchip/packages/linux/package.mk | 4 --- 4 files changed, 52 deletions(-) diff --git a/packages/jelos/sources/scripts/automount b/packages/jelos/sources/scripts/automount index b48a25f4fa..08072a084f 100755 --- a/packages/jelos/sources/scripts/automount +++ b/packages/jelos/sources/scripts/automount @@ -83,12 +83,6 @@ then set_setting system.automount 1 elif [[ "${MOUNT_GAMES}" == "0" ]] then -<<<<<<< HEAD - start_overlay - exit 0 -fi - -======= start_ms internal exit 0 fi @@ -97,7 +91,6 @@ function create_game_dirs() { systemd-tmpfiles --create /usr/lib/tmpfiles.d/JELOS-system-dirs.conf >/dev/null 2>&1 ||: } ->>>>>>> upstream/dev function load_modules() { for MODULE in exfat vfat do @@ -105,29 +98,18 @@ function load_modules() { if [ ! $? = 0 ] then log $0 "Loading ${MODULE}." -<<<<<<< HEAD - modprobe ${MODULE} 2>/dev/null -======= modprobe ${MODULE} >/dev/null 2>&1 ->>>>>>> upstream/dev fi done } function mount_games() { -<<<<<<< HEAD -======= local MOUNT_PATH="/storage/games-external" ->>>>>>> upstream/dev FSTYPE=$(blkid -o export ${1} | awk 'BEGIN {FS="="} /TYPE/ {print $2}') case ${FSTYPE} in ext4) log $0 "Found supported partition for overlayfs." -<<<<<<< HEAD - if [ -e "/storage/.overlay_unsupported" ] -======= if [ -e "/storage/.ms_unsupported" ] ->>>>>>> upstream/dev then rm -f /storage/.ms_unsupported fi @@ -135,11 +117,7 @@ function mount_games() { ;; *) log $0 "Partition does not support overlayfs, disabling." -<<<<<<< HEAD - if [ -e "/storage/.overlay_supported" ] -======= if [ -e "/storage/.ms_supported" ] ->>>>>>> upstream/dev then rm -f /storage/.ms_supported fi @@ -161,18 +139,6 @@ function mount_games() { ### Udevil shouldn't mount it this early, but just in-case. umount /var/media/* 2>/dev/null -<<<<<<< HEAD - log $0 "Checking filesystem ${1}." - fsck -Mly ${1} >/dev/null 2>&1 - log $0 "Mounting ${1} on ${MOUNT_PATH}" - /usr/bin/busybox mount ${1} ${MOUNT_PATH} >/dev/null 2>&1 - fi - start_overlay -} - -find_games() { - if /usr/bin/busybox mountpoint -q /storage ; then -======= log $0 "Checking filesystem ${1}." fsck -Mly ${1} >/dev/null 2>&1 @@ -188,7 +154,6 @@ find_games() { function find_games() { if /usr/bin/busybox mountpoint -q /storage then ->>>>>>> upstream/dev for DEV in $(for dev in mmcblk[0-9] sd[a-z] nvme[0-9]; do blkid | grep ${dev} | awk 'BEGIN {FS=":"}; /ext4/ || /fat/ {print $1}' | sort -r; done) do ROOTDEV=$(echo ${DEV} | sed -e "s#^/.*/##g" -e "s#p[0-9].*\$##g") @@ -216,15 +181,10 @@ function find_games() { log $0 "${DEV} not available." fi done -<<<<<<< HEAD - # If we're here there is no external storage to use, but we want to start the overlay anyway. - start_overlay -======= log $0 "Could not find external card to mount, assume internal." start_ms internal create_game_dirs exit 0 ->>>>>>> upstream/dev fi } diff --git a/packages/ui/emulationstation/package.mk b/packages/ui/emulationstation/package.mk index e356207605..3192f1b2e6 100644 --- a/packages/ui/emulationstation/package.mk +++ b/packages/ui/emulationstation/package.mk @@ -3,11 +3,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="emulationstation" -<<<<<<< HEAD -PKG_VERSION="ac666f2" -======= PKG_VERSION="adc7cb5" ->>>>>>> upstream/dev PKG_GIT_CLONE_BRANCH="main" PKG_REV="1" PKG_ARCH="any" diff --git a/projects/Amlogic/packages/linux/package.mk b/projects/Amlogic/packages/linux/package.mk index 54674f9936..9ee264ca87 100644 --- a/projects/Amlogic/packages/linux/package.mk +++ b/projects/Amlogic/packages/linux/package.mk @@ -18,11 +18,7 @@ PKG_PATCH_DIRS+="${DEVICE}" case ${DEVICE} in S922X*) -<<<<<<< HEAD - PKG_VERSION="6.1.64" -======= PKG_VERSION="6.1.65" ->>>>>>> upstream/dev PKG_URL="https://www.kernel.org/pub/linux/kernel/v6.x/${PKG_NAME}-${PKG_VERSION}.tar.xz" ;; esac diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index b58cd17482..5bc0d82b28 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -40,11 +40,7 @@ case ${DEVICE} in PKG_GIT_CLONE_BRANCH="main" ;; RK33*) -<<<<<<< HEAD - PKG_VERSION="6.1.64" -======= PKG_VERSION="6.1.65" ->>>>>>> upstream/dev PKG_URL="https://www.kernel.org/pub/linux/kernel/v6.x/${PKG_NAME}-${PKG_VERSION}.tar.xz" ;; esac From 2d4e7301a0ff4afc375223334d574a998a3f5a64 Mon Sep 17 00:00:00 2001 From: Sparticuz Date: Tue, 5 Dec 2023 15:14:22 -0500 Subject: [PATCH 058/167] update to 6.7-rc4 --- packages/kernel/linux-drivers/RTL8821AU/package.mk | 2 +- packages/kernel/linux-drivers/RTL8821CU/package.mk | 2 +- packages/kernel/linux-drivers/RTL88x2BU/package.mk | 2 +- projects/Rockchip/packages/linux/package.mk | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/kernel/linux-drivers/RTL8821AU/package.mk b/packages/kernel/linux-drivers/RTL8821AU/package.mk index 156d50b46e..4da99ae91a 100644 --- a/packages/kernel/linux-drivers/RTL8821AU/package.mk +++ b/packages/kernel/linux-drivers/RTL8821AU/package.mk @@ -4,7 +4,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="RTL8821AU" -PKG_VERSION="7305e07787f5811ee1f5e39818edffa33dcccfb5" +PKG_VERSION="cf0f873b795806f755d92e0bac063c26b3b31f12" PKG_LICENSE="GPL" PKG_SITE="https://github.com/morrownr/8821au-20210708" PKG_URL="${PKG_SITE}.git" diff --git a/packages/kernel/linux-drivers/RTL8821CU/package.mk b/packages/kernel/linux-drivers/RTL8821CU/package.mk index b897b25f8d..12c0a1eec5 100644 --- a/packages/kernel/linux-drivers/RTL8821CU/package.mk +++ b/packages/kernel/linux-drivers/RTL8821CU/package.mk @@ -4,7 +4,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="RTL8821CU" -PKG_VERSION="fdbb62727c1526778e408da928d8c3760cce0fa1" +PKG_VERSION="eb52ece92607394ecc22e96b41671ec3e5b1fa30" PKG_LICENSE="GPL" PKG_SITE="https://github.com/morrownr/8821cu-20210916" PKG_URL="${PKG_SITE}.git" diff --git a/packages/kernel/linux-drivers/RTL88x2BU/package.mk b/packages/kernel/linux-drivers/RTL88x2BU/package.mk index 8bfc73de28..65bb57416f 100644 --- a/packages/kernel/linux-drivers/RTL88x2BU/package.mk +++ b/packages/kernel/linux-drivers/RTL88x2BU/package.mk @@ -4,7 +4,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="RTL88x2BU" -PKG_VERSION="888ba1b309e6258a736ef5c37a68836cd0ea5517" +PKG_VERSION="cd2b6cbd9c8fbfebee8a1f28fab8e4434450456c" PKG_LICENSE="GPL" PKG_SITE="https://github.com/morrownr/88x2bu-20210702" PKG_URL="${PKG_SITE}.git" diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index 5bc0d82b28..954d7dd046 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -30,7 +30,7 @@ case ${DEVICE} in PKG_GIT_CLONE_BRANCH="main" ;; *ML) - PKG_VERSION="6.6" + PKG_VERSION="6.7-rc4" PKG_URL="https://git.kernel.org/torvalds/t/${PKG_NAME}-${PKG_VERSION}.tar.gz" ;; *X55) From 1b1db2b4f49c761ecb82757ca1895af0e57d54e6 Mon Sep 17 00:00:00 2001 From: Sparticuz Date: Fri, 8 Dec 2023 16:17:54 -0500 Subject: [PATCH 059/167] fix panel reporting --- .../quirks/devices/Anbernic RG353P/info.d/001-panel | 12 ++++++------ .../quirks/devices/Anbernic RG353V/info.d/001-panel | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/hardware/quirks/devices/Anbernic RG353P/info.d/001-panel b/packages/hardware/quirks/devices/Anbernic RG353P/info.d/001-panel index 16eacd8a5b..da49dae9de 100755 --- a/packages/hardware/quirks/devices/Anbernic RG353P/info.d/001-panel +++ b/packages/hardware/quirks/devices/Anbernic RG353P/info.d/001-panel @@ -1,11 +1,11 @@ #!/bin/sh -ID=$(dmesg | grep "panel id:" | sed "s#^.*panel id: ##g") +ID=$(dmesg | grep "panel") case ${ID} in - "30 52") - ID="v1 (${ID})" + *newvision*) + ID="v1" ;; - "38 21") - ID="v2 (${ID})" + *sitronix*) + ID="v2" ;; *) ID="Unknown" @@ -15,4 +15,4 @@ esac if [ -n "${ID}" ] then echo "PANEL VERSION: ${ID}" -fi +fi diff --git a/packages/hardware/quirks/devices/Anbernic RG353V/info.d/001-panel b/packages/hardware/quirks/devices/Anbernic RG353V/info.d/001-panel index e4cf3cb554..da49dae9de 100755 --- a/packages/hardware/quirks/devices/Anbernic RG353V/info.d/001-panel +++ b/packages/hardware/quirks/devices/Anbernic RG353V/info.d/001-panel @@ -1,10 +1,10 @@ #!/bin/sh -ID=$(dmesg | grep "panel id:" | sed "s#^.*panel id: ##g") +ID=$(dmesg | grep "panel") case ${ID} in - "30 52") + *newvision*) ID="v1" ;; - "38 21") + *sitronix*) ID="v2" ;; *) @@ -15,4 +15,4 @@ esac if [ -n "${ID}" ] then echo "PANEL VERSION: ${ID}" -fi +fi From b375ec504087fc3d72a13e52fe78effa56767dd3 Mon Sep 17 00:00:00 2001 From: David Williams Date: Thu, 14 Dec 2023 11:24:47 -0800 Subject: [PATCH 060/167] first pass - updated uboot / linux setups, addition of new linux config --- .../linux/linux.jelos.compact.config | 1113 +++++++++++++++++ projects/Rockchip/packages/linux/package.mk | 5 +- ...s.patch => 001-fix-model-names.dont_patch} | 0 ...> 002-rk817-power-driver-names.dont_patch} | 0 ...et.patch => 003-panel-v1-reset.dont_patch} | 0 projects/Rockchip/packages/u-boot/package.mk | 2 +- ...atch => 001-fixup_locating_dts.dont_patch} | 0 ...al_boards_and_features_to_rgxx3.dont_patch | 60 + ...itional_boards_and_features_to_rgxx3.patch | 230 ++++ ...itional_boards_and_features_to_rgxx3.patch | 66 + ...itional_boards_and_features_to_rgxx3.patch | 100 ++ ...itional_boards_and_features_to_rgxx3.patch | 172 +++ ...itional_boards_and_features_to_rgxx3.patch | 110 ++ ...itional_boards_and_features_to_rgxx3.patch | 112 ++ ...itional_boards_and_features_to_rgxx3.patch | 68 + 15 files changed, 2035 insertions(+), 3 deletions(-) create mode 100644 projects/Rockchip/devices/RK3566-ML/linux/linux.jelos.compact.config rename projects/Rockchip/packages/linux/patches/RK3566-ML/{001-fix-model-names.patch => 001-fix-model-names.dont_patch} (100%) rename projects/Rockchip/packages/linux/patches/RK3566-ML/{002-rk817-power-driver-names.patch => 002-rk817-power-driver-names.dont_patch} (100%) rename projects/Rockchip/packages/linux/patches/RK3566-ML/{003-panel-v1-reset.patch => 003-panel-v1-reset.dont_patch} (100%) rename projects/Rockchip/packages/u-boot/patches/RK3566-ML/{001-fixup_locating_dts.patch => 001-fixup_locating_dts.dont_patch} (100%) create mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/100_V3_0_7_Add_additional_boards_and_features_to_rgxx3.dont_patch create mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/101_V3_1_7_Add_additional_boards_and_features_to_rgxx3.patch create mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/102_V3_2_7_Add_additional_boards_and_features_to_rgxx3.patch create mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/103_V3_3_7_Add_additional_boards_and_features_to_rgxx3.patch create mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/104_V3_4_7_Add_additional_boards_and_features_to_rgxx3.patch create mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/105_V3_5_7_Add_additional_boards_and_features_to_rgxx3.patch create mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/106_V3_6_7_Add_additional_boards_and_features_to_rgxx3.patch create mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/107_V3_7_7_Add_additional_boards_and_features_to_rgxx3.patch diff --git a/projects/Rockchip/devices/RK3566-ML/linux/linux.jelos.compact.config b/projects/Rockchip/devices/RK3566-ML/linux/linux.jelos.compact.config new file mode 100644 index 0000000000..bb29c1bef5 --- /dev/null +++ b/projects/Rockchip/devices/RK3566-ML/linux/linux.jelos.compact.config @@ -0,0 +1,1113 @@ +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_DEFAULT_HOSTNAME="" +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_WATCH_QUEUE=y +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_USELIB=y +CONFIG_NO_HZ_IDLE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_BPF_SYSCALL=y +CONFIG_BPF_JIT=y +CONFIG_BPF_JIT_ALWAYS_ON=y +# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set +CONFIG_PREEMPT=y +CONFIG_IRQ_TIME_ACCOUNTING=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_MEMCG=y +CONFIG_BLK_CGROUP=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_RT_GROUP_SCHED=y +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_RDMA=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CPUSETS=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_BPF=y +CONFIG_NAMESPACES=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_RELAY=y +CONFIG_INITRAMFS_SOURCE="${BR_BINARIES_DIR}/rootfs.cpio" +CONFIG_INITRAMFS_COMPRESSION_LZO=y +CONFIG_BOOT_CONFIG=y +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_EXPERT=y +CONFIG_SGETMASK_SYSCALL=y +CONFIG_KALLSYMS_ALL=y +CONFIG_PROFILING=y +CONFIG_ARCH_ROCKCHIP=y +# CONFIG_CAVIUM_ERRATUM_22375 is not set +# CONFIG_CAVIUM_ERRATUM_23154 is not set +# CONFIG_CAVIUM_ERRATUM_27456 is not set +# CONFIG_CAVIUM_ERRATUM_30115 is not set +# CONFIG_CAVIUM_TX2_ERRATUM_219 is not set +# CONFIG_FUJITSU_ERRATUM_010001 is not set +# CONFIG_HISILICON_ERRATUM_161600802 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_1003 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_1009 is not set +# CONFIG_QCOM_QDF2400_ERRATUM_0065 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_E1041 is not set +# CONFIG_NVIDIA_CARMEL_CNP_ERRATUM is not set +# CONFIG_SOCIONEXT_SYNQUACER_PREITS is not set +CONFIG_SCHED_MC=y +CONFIG_SCHED_SMT=y +CONFIG_NR_CPUS=4 +CONFIG_ARM64_SW_TTBR0_PAN=y +CONFIG_COMPAT=y +CONFIG_ARMV8_DEPRECATED=y +CONFIG_ARM64_PMEM=y +# CONFIG_ARM64_BTI is not set +CONFIG_RANDOMIZE_BASE=y +# CONFIG_EFI is not set +CONFIG_SUSPEND_SKIP_SYNC=y +CONFIG_PM_AUTOSLEEP=y +CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y +CONFIG_ENERGY_MODEL=y +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_ARM_PSCI_CPUIDLE=y +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPUFREQ_DT=y +CONFIG_ARM_SCMI_CPUFREQ=y +CONFIG_ARCH_MMAP_RND_BITS=18 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 +# CONFIG_GCC_PLUGINS is not set +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_MAC_PARTITION=y +# CONFIG_MQ_IOSCHED_KYBER is not set +# CONFIG_IOSCHED_BFQ is not set +CONFIG_BINFMT_MISC=y +# CONFIG_SLAB_MERGE_DEFAULT is not set +# CONFIG_SLUB_CPU_PARTIAL is not set +# CONFIG_COMPAT_BRK is not set +# CONFIG_COMPACTION is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +# CONFIG_VM_EVENT_COUNTERS is not set +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_UNIX_DIAG=m +CONFIG_XFRM_USER=y +CONFIG_NET_KEY=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IPGRE=m +CONFIG_IP_MROUTE=y +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_INET_AH=y +CONFIG_INET_ESP=y +CONFIG_INET_IPCOMP=y +# CONFIG_INET_DIAG is not set +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_CUBIC=m +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_CONG_DCTCP=m +CONFIG_TCP_CONG_CDG=m +CONFIG_TCP_MD5SIG=y +# CONFIG_IPV6 is not set +CONFIG_NETFILTER=y +CONFIG_BRIDGE_NETFILTER=y +CONFIG_NETFILTER_NETLINK_QUEUE=y +CONFIG_NETFILTER_NETLINK_LOG=y +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_PROCFS=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_TIMEOUT=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NF_CT_NETLINK_TIMEOUT=m +CONFIG_NF_TABLES=m +CONFIG_NFT_CT=m +CONFIG_NFT_LOG=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_QUEUE=m +CONFIG_NFT_REJECT=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_HASH=m +CONFIG_NETFILTER_XTABLES_COMPAT=y +CONFIG_NETFILTER_XT_SET=m +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NETFILTER_XT_MATCH_CGROUP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_IPCOMP=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_L2TP=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_IP_SET=y +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPMARK=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_MAC=m +CONFIG_IP_SET_HASH_NETPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETNET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_LIST_SET=m +CONFIG_IP_VS=m +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_FO=m +CONFIG_IP_VS_OVF=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_NFCT=y +CONFIG_NF_LOG_ARP=m +CONFIG_NF_LOG_IPV4=m +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SYNPROXY=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=y +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_NF_TABLES_BRIDGE=m +CONFIG_NFT_BRIDGE_META=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_BRIDGE=y +CONFIG_VLAN_8021Q=y +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_HTB=y +CONFIG_NET_SCH_CODEL=y +CONFIG_NET_SCH_FQ_CODEL=y +CONFIG_NET_CLS_U32=y +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_CGROUP=y +CONFIG_DNS_RESOLVER=y +CONFIG_OPENVSWITCH=m +CONFIG_CGROUP_NET_PRIO=y +CONFIG_CAN=y +CONFIG_BT=m +CONFIG_BT_RFCOMM=y +CONFIG_BT_HIDP=y +CONFIG_BT_HS=y +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_ATH3K=y +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_CFG80211=m +# CONFIG_CFG80211_DEFAULT_PS is not set +# CONFIG_CFG80211_CRDA_SUPPORT is not set +CONFIG_MAC80211=m +CONFIG_MAC80211_MESH=y +CONFIG_RFKILL=m +CONFIG_RFKILL_INPUT=y +CONFIG_RFKILL_GPIO=m +# CONFIG_ETHTOOL_NETLINK is not set +CONFIG_PCI=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCIEAER=y +CONFIG_PCIE_ROCKCHIP_HOST=y +CONFIG_PCIE_ROCKCHIP_DW_HOST=y +CONFIG_UEVENT_HELPER=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_DEVTMPFS_SAFE=y +CONFIG_FW_LOADER_USER_HELPER=y +CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y +# CONFIG_ALLOW_DEV_COREDUMP is not set +CONFIG_DEBUG_DEVRES=y +CONFIG_CONNECTOR=y +CONFIG_ARM_SCMI_PROTOCOL=y +CONFIG_ARM_SCMI_POWER_CONTROL=y +CONFIG_ARM_SCPI_PROTOCOL=y +CONFIG_ARM_FFA_TRANSPORT=y +CONFIG_MTD=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_SPI_NOR=y +CONFIG_OF_OVERLAY=y +CONFIG_ZRAM=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_DRBD=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=1 +CONFIG_ATA_OVER_ETH=m +CONFIG_BLK_DEV_RBD=m +CONFIG_BLK_DEV_NVME=m +CONFIG_SRAM=y +CONFIG_EEPROM_93CX6=y +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_SPI_ATTRS=y +CONFIG_MEGARAID_SAS=m +CONFIG_SCSI_MPT2SAS=m +CONFIG_ATA=y +CONFIG_SATA_AHCI=y +CONFIG_SATA_AHCI_PLATFORM=y +CONFIG_SATA_MV=m +CONFIG_SATA_NV=m +CONFIG_SATA_PROMISE=m +CONFIG_SATA_SIL=m +CONFIG_MD=y +CONFIG_MD_LINEAR=m +CONFIG_BCACHE=m +CONFIG_BLK_DEV_DM=y +CONFIG_DM_CRYPT=m +CONFIG_DM_RAID=y +CONFIG_NETDEVICES=y +CONFIG_WIREGUARD=y +CONFIG_MACVLAN=y +CONFIG_IPVLAN=y +CONFIG_VXLAN=m +CONFIG_TUN=m +CONFIG_VETH=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_AGERE is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_CAVIUM is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +# CONFIG_NET_VENDOR_DEC is not set +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_EZCHIP is not set +# CONFIG_NET_VENDOR_HISILICON is not set +CONFIG_E100=y +CONFIG_E1000=y +CONFIG_E1000E=y +CONFIG_IGB=y +CONFIG_IXGBE=y +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_QUALCOMM is not set +# CONFIG_NET_VENDOR_RDC is not set +# CONFIG_NET_VENDOR_REALTEK is not set +# CONFIG_NET_VENDOR_RENESAS is not set +# CONFIG_NET_VENDOR_ROCKER is not set +# CONFIG_NET_VENDOR_SAMSUNG is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SMSC is not set +CONFIG_STMMAC_ETH=y +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_SYNOPSYS is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +CONFIG_ROCKCHIP_PHY=y +CONFIG_CAN_SJA1000=y +CONFIG_CAN_PLX_PCI=y +CONFIG_PPP=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPPOE=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_USB_RTL8150=y +CONFIG_USB_RTL8152=y +CONFIG_USB_USBNET=y +CONFIG_USB_NET_CDC_MBIM=y +# CONFIG_USB_NET_NET1080 is not set +CONFIG_USB_NET_RNDIS_HOST=y +# CONFIG_USB_NET_CDC_SUBSET is not set +# CONFIG_USB_NET_ZAURUS is not set +CONFIG_USB_NET_QMI_WWAN=y +CONFIG_ATH5K=m +CONFIG_ATH9K=m +CONFIG_ATH6KL=m +CONFIG_ATH6KL_USB=m +CONFIG_AR5523=m +CONFIG_ATH10K=m +CONFIG_WCN36XX=m +CONFIG_AT76C50X_USB=m +CONFIG_B43=m +CONFIG_BRCMFMAC=m +# CONFIG_BRCMFMAC_SDIO is not set +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMFMAC_PCIE=y +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBERTAS_THINFIRM=m +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m +CONFIG_MWIFIEX_USB=m +CONFIG_MT7601U=m +CONFIG_RT2X00=m +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +CONFIG_RT2800USB_UNKNOWN=y +CONFIG_RTL8180=m +CONFIG_RTL8187=m +CONFIG_RTL8192CE=m +CONFIG_RTL8192SE=m +CONFIG_RTL8192DE=m +CONFIG_RTL8723AE=m +CONFIG_RTL8723BE=m +CONFIG_RTL8188EE=m +CONFIG_RTL8192EE=m +CONFIG_RTL8821AE=m +CONFIG_RTL8XXXU=m +CONFIG_RTL8XXXU_UNTESTED=y +CONFIG_RTW88=m +CONFIG_RTW88_8822BE=m +CONFIG_RTW88_8822BU=m +CONFIG_RTW88_8822CE=m +CONFIG_RTW88_8822CU=m +CONFIG_RTW88_8723DE=m +CONFIG_RTW88_8723DS=m +CONFIG_RTW88_8723DU=m +CONFIG_RTW88_8821CE=m +CONFIG_RTW88_8821CS=m +CONFIG_RTW89=m +CONFIG_RTW89_8852AE=m +CONFIG_RTW89_8852CE=m +CONFIG_ZD1211RW=m +CONFIG_ISDN=y +CONFIG_INPUT_MATRIXKMAP=y +CONFIG_INPUT_JOYDEV=y +CONFIG_INPUT_EVDEV=y +CONFIG_KEYBOARD_ADC=y +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_GPIO_POLLED=y +# CONFIG_MOUSE_PS2 is not set +CONFIG_INPUT_JOYSTICK=y +CONFIG_JOYSTICK_ADC=y +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_INPUT_TABLET=y +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ATMEL_MXT=y +CONFIG_TOUCHSCREEN_GOODIX=y +CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=y +CONFIG_TOUCHSCREEN_USB_COMPOSITE=y +CONFIG_INPUT_MISC=y +CONFIG_INPUT_UINPUT=y +CONFIG_INPUT_PWM_VIBRA=y +CONFIG_INPUT_RK805_PWRKEY=y +CONFIG_SERIO_SERPORT=m +CONFIG_GAMEPORT=y +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_PCI is not set +CONFIG_SERIAL_8250_NR_UARTS=5 +CONFIG_SERIAL_8250_RUNTIME_UARTS=5 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DW=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_SERIAL_DEV_BUS=y +CONFIG_HW_RANDOM=y +CONFIG_TCG_TPM=y +# CONFIG_I2C_COMPAT is not set +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_DESIGNWARE_PLATFORM=y +CONFIG_I2C_RK3X=y +CONFIG_SPI=y +CONFIG_SPI_GPIO=y +CONFIG_SPI_ROCKCHIP=y +CONFIG_SPI_ROCKCHIP_SFC=y +CONFIG_SPI_MUX=y +CONFIG_SPI_SPIDEV=y +CONFIG_PINCTRL_RK805=y +CONFIG_PINCTRL_SINGLE=y +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_DWAPB=y +CONFIG_GPIO_GENERIC_PLATFORM=y +CONFIG_POWER_RESET_GPIO=y +CONFIG_POWER_RESET_GPIO_RESTART=y +CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y +CONFIG_SYSCON_REBOOT_MODE=y +CONFIG_BATTERY_CW2015=y +CONFIG_BATTERY_SBS=y +CONFIG_CHARGER_GPIO=y +CONFIG_CHARGER_BQ24735=y +CONFIG_CHARGER_RK817=y +CONFIG_SENSORS_PWM_FAN=y +CONFIG_THERMAL=y +CONFIG_THERMAL_WRITABLE_TRIPS=y +CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR=y +CONFIG_THERMAL_GOV_FAIR_SHARE=y +CONFIG_THERMAL_GOV_STEP_WISE=y +CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y +CONFIG_CPU_THERMAL=y +CONFIG_DEVFREQ_THERMAL=y +CONFIG_ROCKCHIP_THERMAL=y +CONFIG_GENERIC_ADC_THERMAL=y +CONFIG_WATCHDOG=y +CONFIG_DW_WATCHDOG=y +CONFIG_SSB=y +CONFIG_BCMA=y +CONFIG_MFD_RK8XX_I2C=y +CONFIG_MFD_TPS6586X=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_DEBUG=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_VIRTUAL_CONSUMER=y +CONFIG_REGULATOR_USERSPACE_CONSUMER=y +CONFIG_REGULATOR_ACT8865=y +CONFIG_REGULATOR_ARM_SCMI=y +CONFIG_REGULATOR_FAN53555=y +CONFIG_REGULATOR_GPIO=y +CONFIG_REGULATOR_PWM=y +CONFIG_REGULATOR_RK808=y +CONFIG_REGULATOR_TPS6586X=y +CONFIG_REGULATOR_VCTRL=y +CONFIG_RC_CORE=y +CONFIG_LIRC=y +CONFIG_RC_DECODERS=y +CONFIG_IR_JVC_DECODER=y +CONFIG_IR_MCE_KBD_DECODER=y +CONFIG_IR_NEC_DECODER=y +CONFIG_IR_RC5_DECODER=y +CONFIG_IR_RC6_DECODER=y +CONFIG_IR_SANYO_DECODER=y +CONFIG_IR_SHARP_DECODER=y +CONFIG_IR_SONY_DECODER=y +CONFIG_IR_XMP_DECODER=y +CONFIG_RC_DEVICES=y +CONFIG_IR_GPIO_CIR=y +CONFIG_MEDIA_CEC_RC=y +CONFIG_MEDIA_CEC_SUPPORT=y +CONFIG_USB_PULSE8_CEC=m +CONFIG_USB_RAINSHADOW_CEC=m +CONFIG_MEDIA_SUPPORT=y +CONFIG_MEDIA_SUPPORT_FILTER=y +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +CONFIG_MEDIA_PLATFORM_SUPPORT=y +CONFIG_MEDIA_TEST_SUPPORT=y +CONFIG_DVB_MAX_ADAPTERS=8 +# CONFIG_DVB_DYNAMIC_MINORS is not set +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_VIDEO_USBTV=m +CONFIG_USB_VIDEO_CLASS=y +# CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV is not set +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m +CONFIG_DVB_AS102=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +CONFIG_DVB_USB_V2=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_AF9035=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_AZ6007=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_DVBSKY=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_USB=y +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_DIBUSB_MB=m +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_USB_AIRSPY=m +CONFIG_USB_HACKRF=m +CONFIG_USB_MSI2500=m +CONFIG_MEDIA_PCI_SUPPORT=y +CONFIG_VIDEO_CX23885=m +CONFIG_VIDEO_CX25821=m +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_DVB_PLATFORM_DRIVERS=y +CONFIG_V4L_MEM2MEM_DRIVERS=y +CONFIG_VIDEO_ROCKCHIP_RGA=y +CONFIG_VIDEO_HANTRO=y +# CONFIG_VIDEO_IR_I2C is not set +CONFIG_VIDEO_IMX219=y +CONFIG_VIDEO_OV5645=y +CONFIG_CXD2880_SPI_DRV=m +CONFIG_DVB_ASCOT2E=m +CONFIG_DVB_HELENE=m +CONFIG_DVB_HORUS3A=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_LGS8GL5=m +CONFIG_DVB_LNBH25=m +CONFIG_DVB_LNBH29=m +CONFIG_DVB_TDA665x=m +CONFIG_DVB_CXD2099=m +CONFIG_DRM=y +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_MALI_DISPLAY=y +CONFIG_DRM_ROCKCHIP=y +CONFIG_ROCKCHIP_VOP2=y +CONFIG_ROCKCHIP_DW_HDMI=y +CONFIG_ROCKCHIP_DW_MIPI_DSI=y +CONFIG_DRM_PANEL_ELIDA_KD35T133=y +CONFIG_DRM_PANEL_HIMAX_HX8394=y +CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=y +CONFIG_DRM_PANEL_NEWVISION_NV3051D=y +CONFIG_DRM_PANEL_SITRONIX_ST7701=y +CONFIG_DRM_PANEL_SITRONIX_ST7703=y +CONFIG_DRM_DISPLAY_CONNECTOR=y +CONFIG_DRM_DW_HDMI_CEC=y +CONFIG_DRM_PANEL_MIPI_DBI=y +CONFIG_DRM_PANFROST=y +CONFIG_FB=y +CONFIG_FIRMWARE_EDID=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_BACKLIGHT_PWM=y +CONFIG_BACKLIGHT_LED=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_HRTIMER=y +CONFIG_SND_DYNAMIC_MINORS=y +# CONFIG_SND_SUPPORT_OLD_API is not set +# CONFIG_SND_VERBOSE_PROCFS is not set +CONFIG_SND_VERBOSE_PRINTK=y +CONFIG_SND_SEQUENCER=y +CONFIG_SND_SEQ_DUMMY=y +# CONFIG_SND_DRIVERS is not set +# CONFIG_SND_PCI is not set +# CONFIG_SND_SPI is not set +CONFIG_SND_USB_AUDIO=y +CONFIG_SND_SOC=y +CONFIG_SND_SOC_FSL_SAI=y +CONFIG_SND_SOC_ROCKCHIP=y +CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=y +CONFIG_SND_SOC_ROCKCHIP_PDM=y +CONFIG_SND_SOC_ROCKCHIP_SPDIF=y +CONFIG_SND_SOC_RK3288_HDMI_ANALOG=y +CONFIG_SND_SOC_ES8316=y +CONFIG_SND_SOC_MAX98090=y +CONFIG_SND_SOC_RK817=y +CONFIG_SND_SOC_SIMPLE_AMPLIFIER=y +CONFIG_SND_SOC_SPDIF=y +CONFIG_SND_SOC_TS3A227E=y +CONFIG_SND_SIMPLE_CARD=y +CONFIG_SND_AUDIO_GRAPH_CARD=y +CONFIG_SND_AUDIO_GRAPH_CARD2=y +CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE=y +CONFIG_SND_TEST_COMPONENT=y +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HIDRAW=y +CONFIG_UHID=y +CONFIG_HID_A4TECH=y +CONFIG_HID_ACRUX=y +CONFIG_HID_APPLE=y +CONFIG_HID_APPLEIR=y +CONFIG_HID_AUREAL=y +CONFIG_HID_BELKIN=y +CONFIG_HID_BETOP_FF=y +CONFIG_HID_CHERRY=y +CONFIG_HID_CHICONY=y +CONFIG_HID_CORSAIR=y +CONFIG_HID_PRODIKEYS=y +CONFIG_HID_CP2112=y +CONFIG_HID_CYPRESS=y +CONFIG_HID_DRAGONRISE=y +CONFIG_DRAGONRISE_FF=y +CONFIG_HID_EMS_FF=y +CONFIG_HID_ELECOM=y +CONFIG_HID_ELO=y +CONFIG_HID_EZKEY=y +CONFIG_HID_GEMBIRD=y +CONFIG_HID_GFRM=y +CONFIG_HID_HOLTEK=y +CONFIG_HOLTEK_FF=y +CONFIG_HID_GT683R=y +CONFIG_HID_KEYTOUCH=y +CONFIG_HID_KYE=y +CONFIG_HID_UCLOGIC=y +CONFIG_HID_WALTOP=y +CONFIG_HID_GYRATION=y +CONFIG_HID_ICADE=y +CONFIG_HID_TWINHAN=y +CONFIG_HID_KENSINGTON=y +CONFIG_HID_LCPOWER=y +CONFIG_HID_LENOVO=y +CONFIG_HID_LOGITECH=y +CONFIG_HID_LOGITECH_DJ=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGIG940_FF=y +CONFIG_HID_MAGICMOUSE=y +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y +CONFIG_HID_MULTITOUCH=y +CONFIG_HID_NTRIG=y +CONFIG_HID_ORTEK=y +CONFIG_HID_PANTHERLORD=y +CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PENMOUNT=y +CONFIG_HID_PETALYNX=y +CONFIG_HID_PLANTRONICS=y +CONFIG_HID_PRIMAX=y +CONFIG_HID_ROCCAT=y +CONFIG_HID_SAITEK=y +CONFIG_HID_SAMSUNG=y +CONFIG_HID_SONY=y +CONFIG_HID_SPEEDLINK=y +CONFIG_HID_STEELSERIES=y +CONFIG_HID_SUNPLUS=y +CONFIG_HID_RMI=y +CONFIG_HID_GREENASIA=y +CONFIG_GREENASIA_FF=y +CONFIG_HID_SMARTJOYPLUS=y +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_HID_TIVO=y +CONFIG_HID_TOPSEED=y +CONFIG_HID_THINGM=y +CONFIG_HID_THRUSTMASTER=y +CONFIG_THRUSTMASTER_FF=y +CONFIG_HID_WACOM=y +CONFIG_HID_WIIMOTE=y +CONFIG_HID_XINMO=y +CONFIG_HID_ZEROPLUS=y +CONFIG_ZEROPLUS_FF=y +CONFIG_HID_ZYDACRON=y +CONFIG_HID_SENSOR_HUB=y +CONFIG_HID_SENSOR_CUSTOM_SENSOR=y +CONFIG_HID_ALPS=y +CONFIG_USB_HIDDEV=y +CONFIG_I2C_HID_OF_GOODIX=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +# CONFIG_USB_DEFAULT_PERSIST is not set +CONFIG_USB_OTG=y +CONFIG_USB_OTG_PRODUCTLIST=y +CONFIG_USB_OTG_FSM=y +CONFIG_USB_LEDS_TRIGGER_USBPORT=y +CONFIG_USB_MON=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_HCD=y +# CONFIG_USB_OHCI_HCD_PCI is not set +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_ACM=y +CONFIG_USB_STORAGE=y +CONFIG_USB_STORAGE_REALTEK=y +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=y +CONFIG_USB_UAS=y +CONFIG_USB_DWC3=y +CONFIG_USB_DWC2=y +CONFIG_USB_SERIAL=y +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_CH341=y +CONFIG_USB_SERIAL_CP210X=y +CONFIG_USB_SERIAL_FTDI_SIO=y +CONFIG_USB_SERIAL_KEYSPAN=y +CONFIG_USB_SERIAL_PL2303=y +CONFIG_USB_SERIAL_OTI6858=y +CONFIG_USB_SERIAL_QUALCOMM=y +CONFIG_USB_SERIAL_SIERRAWIRELESS=y +CONFIG_USB_SERIAL_OPTION=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_DEBUG_FILES=y +CONFIG_USB_GADGET_VBUS_DRAW=500 +CONFIG_U_SERIAL_CONSOLE=y +CONFIG_USB_CONFIGFS=y +CONFIG_USB_CONFIGFS_ACM=y +CONFIG_USB_CONFIGFS_MASS_STORAGE=y +CONFIG_USB_CONFIGFS_F_FS=y +CONFIG_USB_CONFIGFS_F_UVC=y +CONFIG_USB_GADGETFS=m +CONFIG_USB_FUNCTIONFS=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_G_SERIAL=m +CONFIG_TYPEC=y +CONFIG_TYPEC_TCPM=y +CONFIG_TYPEC_FUSB302=y +CONFIG_TYPEC_DP_ALTMODE=y +CONFIG_MMC=y +CONFIG_MMC_BLOCK_MINORS=32 +CONFIG_MMC_TEST=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_OF_DWCMSHC=y +CONFIG_MMC_DW=y +CONFIG_MMC_DW_ROCKCHIP=y +CONFIG_MMC_HSQ=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_PWM=y +CONFIG_LEDS_IS31FL32XX=y +CONFIG_LEDS_SYSCON=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_ONESHOT=y +CONFIG_LEDS_TRIGGER_DISK=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y +CONFIG_RTC_CLASS=y +# CONFIG_RTC_SYSTOHC is not set +# CONFIG_RTC_INTF_PROC is not set +# CONFIG_RTC_INTF_DEV is not set +CONFIG_RTC_DRV_HYM8563=y +CONFIG_RTC_DRV_RK808=y +CONFIG_DMADEVICES=y +CONFIG_PL330_DMA=y +CONFIG_UDMABUF=y +CONFIG_DMABUF_HEAPS=y +CONFIG_DMABUF_HEAPS_SYSTEM=y +# CONFIG_VIRTIO_MENU is not set +# CONFIG_VHOST_MENU is not set +CONFIG_STAGING=y +CONFIG_RTL8723BS=m +CONFIG_R8712U=m +CONFIG_STAGING_MEDIA=y +CONFIG_VIDEO_ROCKCHIP_VDEC=y +CONFIG_CHROME_PLATFORMS=y +# CONFIG_SURFACE_PLATFORMS is not set +CONFIG_COMMON_CLK_RK808=y +CONFIG_COMMON_CLK_SCMI=y +CONFIG_COMMON_CLK_SCPI=y +CONFIG_COMMON_CLK_XGENE=y +CONFIG_COMMON_CLK_PWM=y +CONFIG_COMMON_CLK_FIXED_MMIO=y +# CONFIG_CLK_RK3308 is not set +# CONFIG_CLK_RK3328 is not set +# CONFIG_CLK_RK3368 is not set +# CONFIG_CLK_RK3399 is not set +# CONFIG_FSL_ERRATUM_A008585 is not set +# CONFIG_HISILICON_ERRATUM_161010101 is not set +# CONFIG_ARM64_ERRATUM_858921 is not set +CONFIG_MAILBOX=y +CONFIG_ARM_MHU=y +CONFIG_PLATFORM_MHU=y +CONFIG_ROCKCHIP_MBOX=y +CONFIG_ROCKCHIP_IOMMU=y +CONFIG_ARM_SMMU=y +CONFIG_ARM_SMMU_V3=y +CONFIG_ROCKCHIP_IODOMAIN=y +CONFIG_ROCKCHIP_PM_DOMAINS=y +CONFIG_DEVFREQ_GOV_PERFORMANCE=y +CONFIG_DEVFREQ_GOV_POWERSAVE=y +CONFIG_ARM_RK3399_DMC_DEVFREQ=y +CONFIG_MEMORY=y +CONFIG_IIO=y +CONFIG_IIO_BUFFER_HW_CONSUMER=y +CONFIG_IIO_SW_DEVICE=y +CONFIG_IIO_SW_TRIGGER=y +CONFIG_IIO_TRIGGERED_EVENT=y +CONFIG_ROCKCHIP_SARADC=y +CONFIG_SENSORS_ISL29018=y +CONFIG_SENSORS_TSL2563=y +CONFIG_TSL2583=y +CONFIG_IIO_MUX=y +CONFIG_IIO_HRTIMER_TRIGGER=y +CONFIG_IIO_SYSFS_TRIGGER=y +CONFIG_PWM=y +CONFIG_PWM_ROCKCHIP=y +CONFIG_PHY_ROCKCHIP_DP=y +CONFIG_PHY_ROCKCHIP_DPHY_RX0=y +CONFIG_PHY_ROCKCHIP_EMMC=y +CONFIG_PHY_ROCKCHIP_INNO_HDMI=y +CONFIG_PHY_ROCKCHIP_INNO_USB2=y +CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY=y +CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y +CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=y +CONFIG_PHY_ROCKCHIP_PCIE=y +CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y +CONFIG_PHY_ROCKCHIP_TYPEC=y +CONFIG_PHY_ROCKCHIP_USB=y +CONFIG_ARM_SMMU_V3_PMU=y +CONFIG_MUX_GPIO=y +CONFIG_MUX_MMIO=y +CONFIG_EXT4_FS=y +# CONFIG_EXT4_USE_FOR_EXT2 is not set +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_XFS_FS=y +# CONFIG_DNOTIFY is not set +CONFIG_AUTOFS_FS=y +CONFIG_FUSE_FS=y +CONFIG_OVERLAY_FS=y +CONFIG_FSCACHE=y +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_IOCHARSET="ascii" +CONFIG_EXFAT_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SQUASHFS_ZSTD=y +CONFIG_PSTORE=y +CONFIG_NLS_DEFAULT="utf-8" +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_UTF8=y +CONFIG_SECURITY=y +CONFIG_SECURITY_NETWORK=y +CONFIG_HARDENED_USERCOPY=y +CONFIG_STATIC_USERMODEHELPER=y +CONFIG_LSM="selinux,integrity" +CONFIG_INIT_STACK_NONE=y +CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y +CONFIG_INIT_ON_FREE_DEFAULT_ON=y +CONFIG_CRYPTO_USER=y +CONFIG_CRYPTO_PCRYPT=y +CONFIG_CRYPTO_CRYPTD=y +CONFIG_CRYPTO_ECDH=y +CONFIG_CRYPTO_TWOFISH=y +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_CTS=y +CONFIG_CRYPTO_XTS=y +CONFIG_CRYPTO_CHACHA20POLY1305=y +CONFIG_CRYPTO_CCM=y +CONFIG_CRYPTO_ESSIV=y +CONFIG_CRYPTO_CMAC=y +CONFIG_CRYPTO_XCBC=y +CONFIG_CRYPTO_CRC32=y +CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_LZ4=y +CONFIG_CRYPTO_LZ4HC=y +CONFIG_CRYPTO_ZSTD=y +CONFIG_CRYPTO_ANSI_CPRNG=y +CONFIG_CRYPTO_USER_API_HASH=y +CONFIG_CRYPTO_USER_API_SKCIPHER=y +CONFIG_CRYPTO_USER_API_RNG=y +CONFIG_CRYPTO_USER_API_AEAD=y +CONFIG_CRYPTO_STATS=y +CONFIG_CRYPTO_NHPOLY1305_NEON=y +CONFIG_CRYPTO_GHASH_ARM64_CE=y +CONFIG_CRYPTO_SHA1_ARM64_CE=y +CONFIG_CRYPTO_SHA2_ARM64_CE=y +CONFIG_CRYPTO_SHA512_ARM64_CE=y +CONFIG_CRYPTO_AES_ARM64=y +CONFIG_CRYPTO_AES_ARM64_CE_BLK=y +CONFIG_CRYPTO_AES_ARM64_BS=y +CONFIG_CRYPTO_AES_ARM64_CE_CCM=y +CONFIG_CRYPTO_DEV_ROCKCHIP=y +CONFIG_CORDIC=y +CONFIG_CRC_CCITT=y +CONFIG_CRC_T10DIF=y +CONFIG_CRC_ITU_T=y +CONFIG_CRC7=y +# CONFIG_XZ_DEC_X86 is not set +# CONFIG_XZ_DEC_POWERPC is not set +# CONFIG_XZ_DEC_SPARC is not set +CONFIG_PRINTK_TIME=y +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7 +CONFIG_DYNAMIC_DEBUG=y +# CONFIG_SYMBOLIC_ERRNAME is not set +# CONFIG_DEBUG_MISC is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0 +CONFIG_DEBUG_FS=y +# CONFIG_SLUB_DEBUG is not set +CONFIG_PANIC_TIMEOUT=1 +CONFIG_DETECT_HUNG_TASK=y +CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y +# CONFIG_SCHED_DEBUG is not set +CONFIG_SCHEDSTATS=y +CONFIG_DEBUG_SPINLOCK=y +CONFIG_STACKTRACE=y +CONFIG_DEBUG_CREDENTIALS=y +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=20 +# CONFIG_RCU_TRACE is not set +# CONFIG_FTRACE is not set +# CONFIG_STRICT_DEVMEM is not set +# CONFIG_RUNTIME_TESTING_MENU is not set diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index 76f7eff68e..6902b1dc2f 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -30,8 +30,9 @@ case ${DEVICE} in PKG_GIT_CLONE_BRANCH="main" ;; *ML) - PKG_VERSION="6.6" - PKG_URL="https://git.kernel.org/torvalds/t/${PKG_NAME}-${PKG_VERSION}.tar.gz" +# PKG_VERSION="6.6" +# PKG_URL="https://git.kernel.org/torvalds/t/${PKG_NAME}-${PKG_VERSION}.tar.gz" + PKG_URL="https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/snapshot/linux-next-next-20231212.tar.gz" ;; *X55) PKG_URL="${PKG_SITE}/rk3566-x55-kernel.git" diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/001-fix-model-names.patch b/projects/Rockchip/packages/linux/patches/RK3566-ML/001-fix-model-names.dont_patch similarity index 100% rename from projects/Rockchip/packages/linux/patches/RK3566-ML/001-fix-model-names.patch rename to projects/Rockchip/packages/linux/patches/RK3566-ML/001-fix-model-names.dont_patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/002-rk817-power-driver-names.patch b/projects/Rockchip/packages/linux/patches/RK3566-ML/002-rk817-power-driver-names.dont_patch similarity index 100% rename from projects/Rockchip/packages/linux/patches/RK3566-ML/002-rk817-power-driver-names.patch rename to projects/Rockchip/packages/linux/patches/RK3566-ML/002-rk817-power-driver-names.dont_patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/003-panel-v1-reset.patch b/projects/Rockchip/packages/linux/patches/RK3566-ML/003-panel-v1-reset.dont_patch similarity index 100% rename from projects/Rockchip/packages/linux/patches/RK3566-ML/003-panel-v1-reset.patch rename to projects/Rockchip/packages/linux/patches/RK3566-ML/003-panel-v1-reset.dont_patch diff --git a/projects/Rockchip/packages/u-boot/package.mk b/projects/Rockchip/packages/u-boot/package.mk index 30f0bd6105..9f78a9d851 100644 --- a/projects/Rockchip/packages/u-boot/package.mk +++ b/projects/Rockchip/packages/u-boot/package.mk @@ -20,7 +20,7 @@ case ${DEVICE} in ;; *ML) PKG_URL="https://github.com/u-boot/u-boot.git" - PKG_VERSION="a803f87" + PKG_VERSION="master" ;; RK356*) PKG_URL="${PKG_SITE}/rk356x-uboot.git" diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/001-fixup_locating_dts.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/001-fixup_locating_dts.dont_patch similarity index 100% rename from projects/Rockchip/packages/u-boot/patches/RK3566-ML/001-fixup_locating_dts.patch rename to projects/Rockchip/packages/u-boot/patches/RK3566-ML/001-fixup_locating_dts.dont_patch diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/100_V3_0_7_Add_additional_boards_and_features_to_rgxx3.dont_patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/100_V3_0_7_Add_additional_boards_and_features_to_rgxx3.dont_patch new file mode 100644 index 0000000000..540cfc3679 --- /dev/null +++ b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/100_V3_0_7_Add_additional_boards_and_features_to_rgxx3.dont_patch @@ -0,0 +1,60 @@ +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 0/7] Add Additional Boards and Features to RGxx3 +Date: Mon, 11 Dec 2023 17:21:18 -0600 [thread overview] +Message-ID: <20231211232125.171438-1-macroalpha82@gmail.com> (raw) + +From: Chris Morgan + +The RGxx3 is a pseudo-device for U-Boot that works for every Anbernic +RGxx3 series device on the market. Add support for another series of +very similar devices from Powkiddy. + +Changes since V2: + - Modify the mach-rockchip level rockchip_dnl_key_pressed() so that + we can also call it in SPL mode and eliminate the board specific + function. This requires adding ADC support to SPL. Additionally, + I had to change the regulator for the saradc to a fixed regulator + and add GPIO and regulator support to SPL. + - Move the board specific board_rng_seed to the mach-rockchip level + board file so that other rockchip boards with a hardware RNG can + benefit. This should only be called if both the Rockchip + hardware RNG as well as the rng seed functions are enabled. + - Add two new boards (the RG-ARC-D and RG-ARC-S). I removed the + previous code review due to the extensive changes made. + +Changes since V1: + - Update verbiage around function button to say "recovery" mode + instead of calling it "maskrom" mode, which has a specific + meaning. Also note that recovery function was done in a board + specific manner to ensure it can run early. + - Update board level documentation for the RGxx3. + +Chris Morgan (7): + board: rockchip: Refactor panel auto-detect code + spl: Add Kconfig options for ADC + rockchip: boot_mode: Allow rockchip_dnl_key_pressed() in SPL + board: rockchip: Add Recovery Button for Anbernic RGxx3 + rockchip: board: Add board_rng_seed() for all Rockchip devices + board: rockchip: Add support for new boards to RGxx3 + doc: board: anbernic: Update rgxx3 to add new boards + + .../arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi | 11 + + arch/arm/mach-rockchip/Makefile | 4 +- + arch/arm/mach-rockchip/board.c | 32 +++ + arch/arm/mach-rockchip/boot_mode.c | 11 +- + board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 194 +++++++++++------- + common/spl/Kconfig | 7 + + configs/anbernic-rgxx3-rk3566_defconfig | 16 +- + doc/board/anbernic/rgxx3.rst | 20 +- + drivers/Makefile | 1 + + drivers/adc/Makefile | 2 +- + include/configs/anbernic-rgxx3-rk3566.h | 2 + + 11 files changed, 210 insertions(+), 90 deletions(-) + +-- +2.34.1 + diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/101_V3_1_7_Add_additional_boards_and_features_to_rgxx3.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/101_V3_1_7_Add_additional_boards_and_features_to_rgxx3.patch new file mode 100644 index 0000000000..97b341f193 --- /dev/null +++ b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/101_V3_1_7_Add_additional_boards_and_features_to_rgxx3.patch @@ -0,0 +1,230 @@ +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 1/7] board: rockchip: Refactor panel auto-detect code +Date: Mon, 11 Dec 2023 17:21:19 -0600 [thread overview] +Message-ID: <20231211232125.171438-2-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Make the inability to detect a panel using the auto detection code not +fail the entire boot process. This means that if the panel ID cannot +be read we don't set an environment variable for the panel, and if an +environment variable for the panel is not set we don't attempt to +update the compatible string. Changes to the code also ensure that +when there are multiple compatible strings required for the panel +we use them both, which solves some issues that will pop up soon +for the Linux driver. + +Signed-off-by: Chris Morgan +--- + board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 115 +++++++++++++-------- + 1 file changed, 74 insertions(+), 41 deletions(-) + +diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +index 3f1a42d184..3d0c614623 100644 +--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c ++++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +@@ -40,6 +40,7 @@ struct rg3xx_model { + const char *board; + const char *board_name; + const char *fdtfile; ++ const bool detect_panel; + }; + + enum rgxx3_device_id { +@@ -54,52 +55,67 @@ enum rgxx3_device_id { + + static const struct rg3xx_model rg3xx_model_details[] = { + [RG353M] = { +- 517, /* Observed average from device */ +- "rk3566-anbernic-rg353m", +- "RG353M", +- DTB_DIR "rk3566-anbernic-rg353p.dtb", /* Identical devices */ ++ .adc_value = 517, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg353m", ++ .board_name = "RG353M", ++ /* Device is identical to RG353P. */ ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg353p.dtb", ++ .detect_panel = 1, + }, + [RG353P] = { +- 860, /* Documented value of 860 */ +- "rk3566-anbernic-rg353p", +- "RG353P", +- DTB_DIR "rk3566-anbernic-rg353p.dtb", ++ .adc_value = 860, /* Documented value of 860 */ ++ .board = "rk3566-anbernic-rg353p", ++ .board_name = "RG353P", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg353p.dtb", ++ .detect_panel = 1, + }, + [RG353V] = { +- 695, /* Observed average from device */ +- "rk3566-anbernic-rg353v", +- "RG353V", +- DTB_DIR "rk3566-anbernic-rg353v.dtb", ++ .adc_value = 695, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg353v", ++ .board_name = "RG353V", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg353v.dtb", ++ .detect_panel = 1, + }, + [RG503] = { +- 1023, /* Observed average from device */ +- "rk3566-anbernic-rg503", +- "RG503", +- DTB_DIR "rk3566-anbernic-rg503.dtb", ++ .adc_value = 1023, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg503", ++ .board_name = "RG503", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg503.dtb", ++ .detect_panel = 0, + }, + /* Devices with duplicate ADC value */ + [RG353PS] = { +- 860, /* Observed average from device */ +- "rk3566-anbernic-rg353ps", +- "RG353PS", +- DTB_DIR "rk3566-anbernic-rg353ps.dtb", ++ .adc_value = 860, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg353ps", ++ .board_name = "RG353PS", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg353ps.dtb", ++ .detect_panel = 1, + }, + [RG353VS] = { +- 695, /* Gathered from second hand information */ +- "rk3566-anbernic-rg353vs", +- "RG353VS", +- DTB_DIR "rk3566-anbernic-rg353vs.dtb", ++ .adc_value = 695, /* Gathered from second hand information */ ++ .board = "rk3566-anbernic-rg353vs", ++ .board_name = "RG353VS", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg353vs.dtb", ++ .detect_panel = 1, + }, + }; + + struct rg353_panel { + const u16 id; +- const char *panel_compat; ++ const char *panel_compat[2]; + }; + + static const struct rg353_panel rg353_panel_details[] = { +- { .id = 0x3052, .panel_compat = "newvision,nv3051d"}, +- { .id = 0x3821, .panel_compat = "anbernic,rg353v-panel-v2"}, ++ { ++ .id = 0x3052, ++ .panel_compat[0] = "anbernic,rg353p-panel", ++ .panel_compat[1] = "newvision,nv3051d", ++ }, ++ { ++ .id = 0x3821, ++ .panel_compat[0] = "anbernic,rg353v-panel-v2", ++ .panel_compat[1] = NULL, ++ }, + }; + + /* +@@ -298,11 +314,10 @@ int rgxx3_detect_display(void) + if (!panel) { + printf("Unable to identify panel_id %x\n", + (panel_id[0] << 8) | panel_id[1]); +- env_set("panel", "unknown"); + return -EINVAL; + } + +- env_set("panel", panel->panel_compat); ++ env_set("panel", panel->panel_compat[0]); + + return 0; + } +@@ -367,13 +382,14 @@ int rgxx3_detect_device(void) + rg3xx_model_details[board_id].board_name); + env_set("fdtfile", rg3xx_model_details[board_id].fdtfile); + +- /* Detect the panel type for any device that isn't a 503. */ +- if (board_id == RG503) ++ /* Skip panel detection for when it is not needed. */ ++ if (!rg3xx_model_details[board_id].detect_panel) + return 0; + ++ /* Warn but don't fail for errors in auto-detection of the panel. */ + ret = rgxx3_detect_display(); + if (ret) +- return ret; ++ printf("Failed to detect panel type\n"); + + return 0; + } +@@ -400,7 +416,8 @@ int rk_board_late_init(void) + + int ft_board_setup(void *blob, struct bd_info *bd) + { +- int node, ret; ++ const struct rg353_panel *panel = NULL; ++ int node, ret, i; + char *env; + + /* No fixups necessary for the RG503 */ +@@ -414,6 +431,12 @@ int ft_board_setup(void *blob, struct bd_info *bd) + rg3xx_model_details[RG353M].board_name, + sizeof(rg3xx_model_details[RG353M].board_name)); + ++ env = env_get("panel"); ++ if (!env) { ++ printf("Can't get panel env\n"); ++ return 0; ++ } ++ + /* + * Check if the environment variable doesn't equal the panel. + * If it doesn't, update the devicetree to the correct panel. +@@ -424,12 +447,6 @@ int ft_board_setup(void *blob, struct bd_info *bd) + return -ENODEV; + } + +- env = env_get("panel"); +- if (!env) { +- printf("Can't get panel env\n"); +- return -ENODEV; +- } +- + ret = fdt_node_check_compatible(blob, node, env); + if (ret < 0) + return -ENODEV; +@@ -438,8 +455,24 @@ int ft_board_setup(void *blob, struct bd_info *bd) + if (!ret) + return 0; + +- do_fixup_by_path_string(blob, "/dsi@fe060000/panel@0", +- "compatible", env); ++ /* Panels don't match, search by first compatible value. */ ++ for (i = 0; i < ARRAY_SIZE(rg353_panel_details); i++) { ++ if (!strcmp(env, rg353_panel_details[i].panel_compat[0])) { ++ panel = &rg353_panel_details[i]; ++ break; ++ } ++ } ++ ++ if (!panel) { ++ printf("Unable to identify panel by compat string\n"); ++ return -ENODEV; ++ } ++ ++ /* Set the compatible with the auto-detected values */ ++ fdt_setprop_string(blob, node, "compatible", panel->panel_compat[0]); ++ if (panel->panel_compat[1]) ++ fdt_appendprop_string(blob, node, "compatible", ++ panel->panel_compat[1]); + + return 0; + } +-- +2.34.1 + diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/102_V3_2_7_Add_additional_boards_and_features_to_rgxx3.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/102_V3_2_7_Add_additional_boards_and_features_to_rgxx3.patch new file mode 100644 index 0000000000..131708eff8 --- /dev/null +++ b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/102_V3_2_7_Add_additional_boards_and_features_to_rgxx3.patch @@ -0,0 +1,66 @@ +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 2/7] spl: Add Kconfig options for ADC +Date: Mon, 11 Dec 2023 17:21:20 -0600 [thread overview] +Message-ID: <20231211232125.171438-3-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add kconfig options to enable ADC in SPL + +Signed-off-by: Chris Morgan +--- + common/spl/Kconfig | 7 +++++++ + drivers/Makefile | 1 + + drivers/adc/Makefile | 2 +- + 3 files changed, 9 insertions(+), 1 deletion(-) + +diff --git a/common/spl/Kconfig b/common/spl/Kconfig +index c521b02f4a..ada9dcea5c 100644 +--- a/common/spl/Kconfig ++++ b/common/spl/Kconfig +@@ -579,6 +579,13 @@ config SPL_FIT_IMAGE_TINY + ensure this information is available to the next image + invoked). + ++config SPL_ADC ++ bool "Support ADC drivers" ++ help ++ Enable ADC drivers in SPL. These drivers can allow the reading of ++ analog values from one or more channels. Enable this option to ++ build the drivers in drivers/adc as part of an SPL build. ++ + config SPL_CACHE + bool "Support CACHE drivers" + help +diff --git a/drivers/Makefile b/drivers/Makefile +index bf73b7718c..81ba2c534e 100644 +--- a/drivers/Makefile ++++ b/drivers/Makefile +@@ -1,5 +1,6 @@ + # SPDX-License-Identifier: GPL-2.0+ + ++obj-$(CONFIG_$(SPL_)ADC) += adc/ + obj-$(CONFIG_$(SPL_TPL_)BIOSEMU) += bios_emulator/ + obj-$(CONFIG_$(SPL_TPL_)BLK) += block/ + obj-$(CONFIG_$(SPL_TPL_)BOOTCOUNT_LIMIT) += bootcount/ +diff --git a/drivers/adc/Makefile b/drivers/adc/Makefile +index 5336c82097..9eb07769b0 100644 +--- a/drivers/adc/Makefile ++++ b/drivers/adc/Makefile +@@ -4,7 +4,7 @@ + # Przemyslaw Marczak + # + +-obj-$(CONFIG_ADC) += adc-uclass.o ++obj-$(CONFIG_$(SPL_)ADC) += adc-uclass.o + obj-$(CONFIG_ADC_EXYNOS) += exynos-adc.o + obj-$(CONFIG_ADC_SANDBOX) += sandbox.o + obj-$(CONFIG_SARADC_ROCKCHIP) += rockchip-saradc.o +-- +2.34.1 + diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/103_V3_3_7_Add_additional_boards_and_features_to_rgxx3.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/103_V3_3_7_Add_additional_boards_and_features_to_rgxx3.patch new file mode 100644 index 0000000000..de91069cd4 --- /dev/null +++ b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/103_V3_3_7_Add_additional_boards_and_features_to_rgxx3.patch @@ -0,0 +1,100 @@ +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 3/7] rockchip: boot_mode: Allow rockchip_dnl_key_pressed() in SPL +Date: Mon, 11 Dec 2023 17:21:21 -0600 [thread overview] +Message-ID: <20231211232125.171438-4-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Update the rockchip_dnl_key_pressed() so that it can run in +SPL. Also change the ADC channel to a define that can be +overridden by a board specific option. + +Signed-off-by: Chris Morgan +--- + arch/arm/mach-rockchip/Makefile | 4 ++-- + arch/arm/mach-rockchip/boot_mode.c | 11 ++++++++++- + 2 files changed, 12 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/mach-rockchip/Makefile b/arch/arm/mach-rockchip/Makefile +index 1dc92066bb..ff089ae949 100644 +--- a/arch/arm/mach-rockchip/Makefile ++++ b/arch/arm/mach-rockchip/Makefile +@@ -15,13 +15,13 @@ obj-tpl-$(CONFIG_ROCKCHIP_PX30) += px30-board-tpl.o + + obj-spl-$(CONFIG_ROCKCHIP_RK3036) += rk3036-board-spl.o + +-ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),) +- + # Always include boot_mode.o, as we bypass it (i.e. turn it off) + # inside of boot_mode.c when CONFIG_ROCKCHIP_BOOT_MODE_REG is 0. This way, + # we can have the preprocessor correctly recognise both 0x0 and 0 + # meaning "turn it off". + obj-y += boot_mode.o ++ ++ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),) + obj-$(CONFIG_ROCKCHIP_COMMON_BOARD) += board.o + obj-$(CONFIG_MISC_INIT_R) += misc.o + endif +diff --git a/arch/arm/mach-rockchip/boot_mode.c b/arch/arm/mach-rockchip/boot_mode.c +index eb8f65ae4e..d2308768be 100644 +--- a/arch/arm/mach-rockchip/boot_mode.c ++++ b/arch/arm/mach-rockchip/boot_mode.c +@@ -38,6 +38,10 @@ void set_back_to_bootrom_dnl_flag(void) + #define KEY_DOWN_MIN_VAL 0 + #define KEY_DOWN_MAX_VAL 30 + ++#ifndef RK_DNL_ADC_CHAN ++#define RK_DNL_ADC_CHAN 1 ++#endif ++ + __weak int rockchip_dnl_key_pressed(void) + { + unsigned int val; +@@ -52,7 +56,8 @@ __weak int rockchip_dnl_key_pressed(void) + ret = -ENODEV; + uclass_foreach_dev(dev, uc) { + if (!strncmp(dev->name, "saradc", 6)) { +- ret = adc_channel_single_shot(dev->name, 1, &val); ++ ret = adc_channel_single_shot(dev->name, ++ RK_DNL_ADC_CHAN, &val); + break; + } + } +@@ -73,11 +78,13 @@ __weak int rockchip_dnl_key_pressed(void) + + void rockchip_dnl_mode_check(void) + { ++#if CONFIG_IS_ENABLED(ADC) + if (rockchip_dnl_key_pressed()) { + printf("download key pressed, entering download mode..."); + set_back_to_bootrom_dnl_flag(); + do_reset(NULL, 0, 0, NULL); + } ++#endif + } + + int setup_boot_mode(void) +@@ -90,6 +97,7 @@ int setup_boot_mode(void) + boot_mode = readl(reg); + debug("%s: boot mode 0x%08x\n", __func__, boot_mode); + ++#if !defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + /* Clear boot mode */ + writel(BOOT_NORMAL, reg); + +@@ -103,6 +111,7 @@ int setup_boot_mode(void) + env_set("preboot", "setenv preboot; ums mmc 0"); + break; + } ++#endif + + return 0; + } +-- +2.34.1 + diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/104_V3_4_7_Add_additional_boards_and_features_to_rgxx3.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/104_V3_4_7_Add_additional_boards_and_features_to_rgxx3.patch new file mode 100644 index 0000000000..d38822c3f5 --- /dev/null +++ b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/104_V3_4_7_Add_additional_boards_and_features_to_rgxx3.patch @@ -0,0 +1,172 @@ +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 4/7] board: rockchip: Add Recovery Button for Anbernic RGxx3 +Date: Mon, 11 Dec 2023 17:21:22 -0600 [thread overview] +Message-ID: <20231211232125.171438-5-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add support for users to enter recovery mode by holding the function +button when they power up the device. + +Since the device has soldered eMMC and sometimes does not expose a clk +pin on the mainboard there is a small chance that a user who flashes a +bad bootloader may not be able to recover if the headers themselves +are valid. As a result this check is done during spl_early_init() to +ensure that it runs as early as possible, and it does so by directly +manipulating the ADC hardware in lieu of loading the ADC driver. + +Signed-off-by: Chris Morgan +--- + arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi | 11 +++++++++++ + board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 6 +++++- + configs/anbernic-rgxx3-rk3566_defconfig | 16 ++++++++++++---- + include/configs/anbernic-rgxx3-rk3566.h | 2 ++ + 4 files changed, 30 insertions(+), 5 deletions(-) + +diff --git a/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi b/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi +index f986e1941e..e3ab196d22 100644 +--- a/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi ++++ b/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi +@@ -76,6 +76,12 @@ + /delete-property/ clock-names; + }; + ++&saradc { ++ bootph-all; ++ vref-supply = <&vcc_sys>; ++ status = "okay"; ++}; ++ + &sdhci { + pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>, + <&emmc_datastrobe>, <&emmc_rstnout>; +@@ -94,3 +100,8 @@ + bootph-all; + status = "okay"; + }; ++ ++&vcc_sys { ++ bootph-all; ++ status = "okay"; ++}; +diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +index 3d0c614623..45854709f5 100644 +--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c ++++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +@@ -5,6 +5,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -119,11 +120,14 @@ static const struct rg353_panel rg353_panel_details[] = { + }; + + /* +- * Start LED very early so user knows device is on. Set color ++ * Check if rockchip_dnl button is pressed and reboot into rockusb if ++ * true. Start LED very early so user knows device is on. Set color + * to red. + */ + void spl_board_init(void) + { ++ setup_boot_mode(); ++ + /* Set GPIO0_C5, GPIO0_C6, and GPIO0_C7 to output. */ + writel(GPIO_WRITEMASK(GPIO_C7 | GPIO_C6 | GPIO_C5) | \ + (GPIO_C7 | GPIO_C6 | GPIO_C5), +diff --git a/configs/anbernic-rgxx3-rk3566_defconfig b/configs/anbernic-rgxx3-rk3566_defconfig +index ed6643d9d4..4e72f75815 100644 +--- a/configs/anbernic-rgxx3-rk3566_defconfig ++++ b/configs/anbernic-rgxx3-rk3566_defconfig +@@ -3,6 +3,7 @@ CONFIG_SKIP_LOWLEVEL_INIT=y + CONFIG_COUNTER_FREQUENCY=24000000 + CONFIG_ARCH_ROCKCHIP=y + CONFIG_TEXT_BASE=0x00a00000 ++CONFIG_SPL_GPIO=y + CONFIG_SPL_LIBCOMMON_SUPPORT=y + CONFIG_SPL_LIBGENERIC_SUPPORT=y + CONFIG_NR_DRAM_BANKS=2 +@@ -24,7 +25,9 @@ CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y ++CONFIG_SPL_FIT_SIGNATURE=y + CONFIG_SPL_LOAD_FIT=y ++CONFIG_LEGACY_IMAGE_FORMAT=y + CONFIG_OF_BOARD_SETUP=y + CONFIG_OF_STDOUT_VIA_ALIAS=y + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3566-anbernic-rgxx3.dtb" +@@ -32,7 +35,7 @@ CONFIG_DEFAULT_FDT_FILE="rockchip/rk3566-anbernic-rgxx3.dtb" + # CONFIG_DISPLAY_CPUINFO is not set + CONFIG_DISPLAY_BOARDINFO_LATE=y + CONFIG_BOARD_RNG_SEED=y +-CONFIG_SPL_MAX_SIZE=0x20000 ++CONFIG_SPL_MAX_SIZE=0x40000 + CONFIG_SPL_PAD_TO=0x7f8000 + CONFIG_SPL_HAS_BSS_LINKER_SECTION=y + CONFIG_SPL_BSS_START_ADDR=0x4000000 +@@ -41,6 +44,8 @@ CONFIG_SPL_BOARD_INIT=y + # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set + # CONFIG_SPL_SHARES_INIT_SP_ADDR is not set + CONFIG_SPL_STACK_R=y ++CONFIG_SPL_ADC=y ++CONFIG_SPL_POWER=y + CONFIG_SPL_ATF=y + CONFIG_CMD_PWM=y + CONFIG_CMD_GPT=y +@@ -50,8 +55,10 @@ CONFIG_CMD_MMC=y + # CONFIG_SPL_DOS_PARTITION is not set + CONFIG_SPL_OF_CONTROL=y + CONFIG_OF_LIVE=y ++CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y + # CONFIG_NET is not set ++CONFIG_SPL_DM_SEQ_ALIAS=y + CONFIG_SPL_REGMAP=y + CONFIG_SPL_SYSCON=y + CONFIG_SPL_CLK=y +@@ -67,13 +74,13 @@ CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_ROCKCHIP=y + CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y ++CONFIG_SPL_PINCTRL=y + CONFIG_DM_PMIC=y + CONFIG_DM_PMIC_FAN53555=y + CONFIG_PMIC_RK8XX=y +-CONFIG_REGULATOR_PWM=y +-CONFIG_DM_REGULATOR_GPIO=y ++CONFIG_SPL_DM_REGULATOR=y ++CONFIG_SPL_DM_REGULATOR_FIXED=y + CONFIG_REGULATOR_RK8XX=y +-CONFIG_DM_REGULATOR_SCMI=y + CONFIG_PWM_ROCKCHIP=y + CONFIG_SPL_RAM=y + # CONFIG_RAM_ROCKCHIP_DEBUG is not set +@@ -89,5 +96,6 @@ CONFIG_VIDEO_ROCKCHIP=y + CONFIG_DISPLAY_ROCKCHIP_DW_MIPI=y + CONFIG_VIDEO_BRIDGE=y + CONFIG_REGEX=y ++# CONFIG_RSA is not set + CONFIG_ERRNO_STR=y + # CONFIG_EFI_LOADER is not set +diff --git a/include/configs/anbernic-rgxx3-rk3566.h b/include/configs/anbernic-rgxx3-rk3566.h +index 3c4ea4e7d8..2aaac55c06 100644 +--- a/include/configs/anbernic-rgxx3-rk3566.h ++++ b/include/configs/anbernic-rgxx3-rk3566.h +@@ -9,4 +9,6 @@ + "stdout=serial,vidconsole\0" \ + "stderr=serial,vidconsole\0" + ++#define RK_DNL_ADC_CHAN 0 ++ + #endif +-- +2.34.1 diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/105_V3_5_7_Add_additional_boards_and_features_to_rgxx3.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/105_V3_5_7_Add_additional_boards_and_features_to_rgxx3.patch new file mode 100644 index 0000000000..cc15381e91 --- /dev/null +++ b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/105_V3_5_7_Add_additional_boards_and_features_to_rgxx3.patch @@ -0,0 +1,110 @@ +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 5/7] rockchip: board: Add board_rng_seed() for all Rockchip devices +Date: Mon, 11 Dec 2023 17:21:23 -0600 [thread overview] +Message-ID: <20231211232125.171438-6-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Allow all rockchip devices to use the hardware RNG to seed Linux +RNG. + +Signed-off-by: Chris Morgan +--- + arch/arm/mach-rockchip/board.c | 32 ++++++++++++++++++++++ + board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 29 -------------------- + 2 files changed, 32 insertions(+), 29 deletions(-) + +diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c +index 57f08e0be0..77145524ea 100644 +--- a/arch/arm/mach-rockchip/board.c ++++ b/arch/arm/mach-rockchip/board.c +@@ -348,3 +348,35 @@ __weak int misc_init_r(void) + return ret; + } + #endif ++ ++#if IS_ENABLED(CONFIG_BOARD_RNG_SEED) && IS_ENABLED(CONFIG_RNG_ROCKCHIP) ++#include ++ ++/* Use hardware rng to seed Linux random. */ ++__weak int board_rng_seed(struct abuf *buf) ++{ ++ struct udevice *dev; ++ size_t len = 0x8; ++ u64 *data; ++ ++ data = malloc(len); ++ if (!data) { ++ printf("Out of memory\n"); ++ return -ENOMEM; ++ } ++ ++ if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) { ++ printf("No RNG device\n"); ++ return -ENODEV; ++ } ++ ++ if (dm_rng_read(dev, data, len)) { ++ printf("Reading RNG failed\n"); ++ return -EIO; ++ } ++ ++ abuf_init_set(buf, data, len); ++ ++ return 0; ++} ++#endif +diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +index 45854709f5..7bef5a53f0 100644 +--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c ++++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +@@ -17,7 +17,6 @@ + #include + #include + #include +-#include + #include + #include + +@@ -137,34 +136,6 @@ void spl_board_init(void) + (GPIO0_BASE + GPIO_SWPORT_DR_H)); + } + +-/* Use hardware rng to seed Linux random. */ +-int board_rng_seed(struct abuf *buf) +-{ +- struct udevice *dev; +- size_t len = 0x8; +- u64 *data; +- +- data = malloc(len); +- if (!data) { +- printf("Out of memory\n"); +- return -ENOMEM; +- } +- +- if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) { +- printf("No RNG device\n"); +- return -ENODEV; +- } +- +- if (dm_rng_read(dev, data, len)) { +- printf("Reading RNG failed\n"); +- return -EIO; +- } +- +- abuf_init_set(buf, data, len); +- +- return 0; +-} +- + /* + * Buzz the buzzer so the user knows something is going on. Make it + * optional in case PWM is disabled. +-- +2.34.1 diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/106_V3_6_7_Add_additional_boards_and_features_to_rgxx3.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/106_V3_6_7_Add_additional_boards_and_features_to_rgxx3.patch new file mode 100644 index 0000000000..c0cdd5ac67 --- /dev/null +++ b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/106_V3_6_7_Add_additional_boards_and_features_to_rgxx3.patch @@ -0,0 +1,112 @@ +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 6/7] board: rockchip: Add support for new boards to RGxx3 +Date: Mon, 11 Dec 2023 17:21:24 -0600 [thread overview] +Message-ID: <20231211232125.171438-7-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add support for the Anbernic RG-ARC-D, Anbernic RG-ARC-S, Powkiddy +RK2023, and Powkiddy RGB30 to the Anbernic RGxx3. While the Powkiddy +devices are manufactured by Powkiddy instead of Anbernic, +the hardware is so similar they can all use the same bootloader. + +Signed-off-by: Chris Morgan +--- + board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 44 +++++++++++++++++++--- + 1 file changed, 39 insertions(+), 5 deletions(-) + +diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +index 7bef5a53f0..2445663d43 100644 +--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c ++++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +@@ -48,9 +48,13 @@ enum rgxx3_device_id { + RG353P, + RG353V, + RG503, ++ RGB30, ++ RK2023, ++ RGARCD, + /* Devices with duplicate ADC value */ + RG353PS, + RG353VS, ++ RGARCS, + }; + + static const struct rg3xx_model rg3xx_model_details[] = { +@@ -83,6 +87,27 @@ static const struct rg3xx_model rg3xx_model_details[] = { + .fdtfile = DTB_DIR "rk3566-anbernic-rg503.dtb", + .detect_panel = 0, + }, ++ [RGB30] = { ++ .adc_value = 383, /* Gathered from second hand information */ ++ .board = "rk3566-powkiddy-rgb30", ++ .board_name = "RGB30", ++ .fdtfile = DTB_DIR "rk3566-powkiddy-rgb30.dtb", ++ .detect_panel = 0, ++ }, ++ [RK2023] = { ++ .adc_value = 635, /* Observed average from device */ ++ .board = "rk3566-powkiddy-rk2023", ++ .board_name = "RK2023", ++ .fdtfile = DTB_DIR "rk3566-powkiddy-rk2023.dtb", ++ .detect_panel = 0, ++ }, ++ [RGARCD] = { ++ .adc_value = 183, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg-arc-d", ++ .board_name = "Anbernic RG ARC-D", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg-arc-d.dtb", ++ .detect_panel = 0, ++ }, + /* Devices with duplicate ADC value */ + [RG353PS] = { + .adc_value = 860, /* Observed average from device */ +@@ -98,6 +123,13 @@ static const struct rg3xx_model rg3xx_model_details[] = { + .fdtfile = DTB_DIR "rk3566-anbernic-rg353vs.dtb", + .detect_panel = 1, + }, ++ [RGARCS] = { ++ .adc_value = 183, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg-arc-s", ++ .board_name = "Anbernic RG ARC-S", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg-arc-s.dtb", ++ .detect_panel = 0, ++ }, + }; + + struct rg353_panel { +@@ -332,19 +364,21 @@ int rgxx3_detect_device(void) + } + + /* +- * Try to access the eMMC on an RG353V or RG353P. If it's +- * missing, it's an RG353VS or RG353PS. Note we could also +- * check for a touchscreen at 0x1a on i2c2. ++ * Try to access the eMMC on an RG353V, RG353P, or RG Arc D. ++ * If it's missing, it's an RG353VS, RG353PS, or RG Arc S. ++ * Note we could also check for a touchscreen at 0x1a on i2c2. + */ +- if (board_id == RG353V || board_id == RG353P) { ++ if (board_id == RG353V || board_id == RG353P || board_id == RGARCD) { + mmc = find_mmc_device(0); + if (mmc) { + ret = mmc_init(mmc); + if (ret) { + if (board_id == RG353V) + board_id = RG353VS; +- else ++ if (board_id == RG353P) + board_id = RG353PS; ++ else ++ board_id = RGARCS; + } + } + } +-- +2.34.1 + diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/107_V3_7_7_Add_additional_boards_and_features_to_rgxx3.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/107_V3_7_7_Add_additional_boards_and_features_to_rgxx3.patch new file mode 100644 index 0000000000..f13ee08f79 --- /dev/null +++ b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/107_V3_7_7_Add_additional_boards_and_features_to_rgxx3.patch @@ -0,0 +1,68 @@ +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 7/7] doc: board: anbernic: Update rgxx3 to add new boards +Date: Mon, 11 Dec 2023 17:21:25 -0600 [thread overview] +Message-ID: <20231211232125.171438-8-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Update the RGxx3 documentation to note that it now supports the +RG-ARC-D, RG-ARC-S, Powkiddy RK2023, and Powkiddy RGB30. Also update +verbiage around panel detection to note that it is no longer hard coded +to the RG503. + +Signed-off-by: Chris Morgan +--- + doc/board/anbernic/rgxx3.rst | 20 ++++++++++++++------ + 1 file changed, 14 insertions(+), 6 deletions(-) + +diff --git a/doc/board/anbernic/rgxx3.rst b/doc/board/anbernic/rgxx3.rst +index 7d1beb423c..d159ed2f76 100644 +--- a/doc/board/anbernic/rgxx3.rst ++++ b/doc/board/anbernic/rgxx3.rst +@@ -5,6 +5,8 @@ U-Boot for Anbernic RGxx3 Devices + + This allows U-Boot to boot the following Anbernic devices: + ++ - Anbernic RG-ARC-D ++ - Anbernic RG-ARC-S + - Anbernic RG353M + - Anbernic RG353P + - Anbernic RG353PS +@@ -12,18 +14,24 @@ This allows U-Boot to boot the following Anbernic devices: + - Anbernic RG353VS + - Anbernic RG503 + ++Additionally, the following very similar non-Anbernic devices are also ++supported: ++ ++ - Powkiddy RGB30 ++ - Powkiddy RK2023 ++ + The correct device is detected automatically by comparing ADC values + from ADC channel 1. In the event of an RG353V or RG353P, an attempt + is then made to probe for an eMMC and if it fails the device is assumed + to be an RG353VS or RG353PS. Based on the detected device, the + environment variables "board", "board_name", and "fdtfile" are set to + the correct values corresponding to the board which can be read by a +-boot script to boot with the correct device tree. If the board detected +-is not of type RG503 (which currently has only 1 panel revision) a +-panel detect is then performed by probing a "dummy" display on the DSI +-bus and then querying the display ID. The display ID is then compared +-to a table to get the known compatible string for use in Linux, and +-this string is saved as an environment variable of "panel". ++boot script to boot with the correct device tree. If a board is defined ++as requiring panel detection, a panel detect is then performed by ++probing a "dummy" display on the DSI bus and then querying the display ++ID. The display ID is then compared to a table to get the known ++compatible string for use in Linux, and this string is saved as an ++environment variable of "panel". + + FDT fixups are performed in the event of an RG353M to change the device + name, or in the event the panel detected does not match the devicetree. +-- +2.34.1 From 61ac700f34f7dcd41b24204107f1722ce30888cb Mon Sep 17 00:00:00 2001 From: David Williams Date: Thu, 14 Dec 2023 18:27:14 -0800 Subject: [PATCH 061/167] (just) running on RG353M and RGB30 --- .../RK3566-ML/linux/linux.aarch64.conf | 7005 +------------- .../RK3566-ML/linux/linux.aarch64.old.conf | 8098 +++++++++++++++++ projects/Rockchip/devices/RK3566-ML/options | 2 +- projects/Rockchip/packages/linux/package.mk | 2 +- projects/Rockchip/packages/u-boot/package.mk | 3 +- 5 files changed, 8112 insertions(+), 6998 deletions(-) create mode 100644 projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.old.conf diff --git a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf index 695ec83392..bb29c1bef5 100644 --- a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf @@ -1,388 +1,46 @@ -# -# Automatically generated file; DO NOT EDIT. -# Linux/arm64 6.6.0-rc3 Kernel Configuration -# -CONFIG_CC_VERSION_TEXT="aarch64-libreelec-linux-gnueabi-gcc-12.3.0 (GCC) 12.3.0" -CONFIG_CC_IS_GCC=y -CONFIG_GCC_VERSION=120300 -CONFIG_CLANG_VERSION=0 -CONFIG_AS_IS_GNU=y -CONFIG_AS_VERSION=24100 -CONFIG_LD_IS_BFD=y -CONFIG_LD_VERSION=24100 -CONFIG_LLD_VERSION=0 -CONFIG_CC_CAN_LINK=y -CONFIG_CC_CAN_LINK_STATIC=y -CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y -CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y -CONFIG_CC_HAS_ASM_INLINE=y -CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y -CONFIG_PAHOLE_VERSION=0 -CONFIG_IRQ_WORK=y -CONFIG_BUILDTIME_TABLE_SORT=y -CONFIG_THREAD_INFO_IN_TASK=y - -# -# General setup -# -CONFIG_INIT_ENV_ARG_LIMIT=32 -# CONFIG_COMPILE_TEST is not set -# CONFIG_WERROR is not set -CONFIG_LOCALVERSION="" # CONFIG_LOCALVERSION_AUTO is not set -CONFIG_BUILD_SALT="" -CONFIG_DEFAULT_INIT="" -CONFIG_DEFAULT_HOSTNAME="@DEVICENAME@" +CONFIG_DEFAULT_HOSTNAME="" CONFIG_SYSVIPC=y -CONFIG_SYSVIPC_SYSCTL=y -CONFIG_SYSVIPC_COMPAT=y CONFIG_POSIX_MQUEUE=y -CONFIG_POSIX_MQUEUE_SYSCTL=y CONFIG_WATCH_QUEUE=y # CONFIG_CROSS_MEMORY_ATTACH is not set CONFIG_USELIB=y -# CONFIG_AUDIT is not set -CONFIG_HAVE_ARCH_AUDITSYSCALL=y - -# -# IRQ subsystem -# -CONFIG_GENERIC_IRQ_PROBE=y -CONFIG_GENERIC_IRQ_SHOW=y -CONFIG_GENERIC_IRQ_SHOW_LEVEL=y -CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y -CONFIG_GENERIC_IRQ_MIGRATION=y -CONFIG_HARDIRQS_SW_RESEND=y -CONFIG_GENERIC_IRQ_CHIP=y -CONFIG_IRQ_DOMAIN=y -CONFIG_IRQ_DOMAIN_HIERARCHY=y -CONFIG_GENERIC_IRQ_IPI=y -CONFIG_GENERIC_MSI_IRQ=y -CONFIG_IRQ_MSI_IOMMU=y -CONFIG_IRQ_FORCED_THREADING=y -CONFIG_SPARSE_IRQ=y -# CONFIG_GENERIC_IRQ_DEBUGFS is not set -# end of IRQ subsystem - -CONFIG_GENERIC_TIME_VSYSCALL=y -CONFIG_GENERIC_CLOCKEVENTS=y -CONFIG_ARCH_HAS_TICK_BROADCAST=y -CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y -CONFIG_HAVE_POSIX_CPU_TIMERS_TASK_WORK=y -CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y -CONFIG_CONTEXT_TRACKING=y -CONFIG_CONTEXT_TRACKING_IDLE=y - -# -# Timers subsystem -# -CONFIG_TICK_ONESHOT=y -CONFIG_NO_HZ_COMMON=y -# CONFIG_HZ_PERIODIC is not set CONFIG_NO_HZ_IDLE=y -# CONFIG_NO_HZ_FULL is not set -# CONFIG_NO_HZ is not set CONFIG_HIGH_RES_TIMERS=y -# end of Timers subsystem - -CONFIG_BPF=y -CONFIG_HAVE_EBPF_JIT=y -CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y - -# -# BPF subsystem -# CONFIG_BPF_SYSCALL=y CONFIG_BPF_JIT=y CONFIG_BPF_JIT_ALWAYS_ON=y -CONFIG_BPF_JIT_DEFAULT_ON=y # CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set -# CONFIG_BPF_PRELOAD is not set -# end of BPF subsystem - -CONFIG_PREEMPT_BUILD=y -# CONFIG_PREEMPT_NONE is not set -# CONFIG_PREEMPT_VOLUNTARY is not set CONFIG_PREEMPT=y -CONFIG_PREEMPT_COUNT=y -CONFIG_PREEMPTION=y -# CONFIG_PREEMPT_DYNAMIC is not set -# CONFIG_SCHED_CORE is not set - -# -# CPU/Task time and stats accounting -# -CONFIG_TICK_CPU_ACCOUNTING=y -# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set CONFIG_IRQ_TIME_ACCOUNTING=y -CONFIG_HAVE_SCHED_AVG_IRQ=y -CONFIG_SCHED_THERMAL_PRESSURE=y -# CONFIG_BSD_PROCESS_ACCT is not set -# CONFIG_TASKSTATS is not set -# CONFIG_PSI is not set -# end of CPU/Task time and stats accounting - -CONFIG_CPU_ISOLATION=y - -# -# RCU Subsystem -# -CONFIG_TREE_RCU=y -CONFIG_PREEMPT_RCU=y -# CONFIG_RCU_EXPERT is not set -CONFIG_TREE_SRCU=y -CONFIG_TASKS_RCU_GENERIC=y -CONFIG_TASKS_RCU=y -CONFIG_TASKS_TRACE_RCU=y -CONFIG_RCU_STALL_COMMON=y -CONFIG_RCU_NEED_SEGCBLIST=y -# end of RCU Subsystem - CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y -# CONFIG_IKHEADERS is not set CONFIG_LOG_BUF_SHIFT=18 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 -# CONFIG_PRINTK_INDEX is not set -CONFIG_GENERIC_SCHED_CLOCK=y - -# -# Scheduler features -# -# CONFIG_UCLAMP_TASK is not set -# end of Scheduler features - -CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y -CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y -CONFIG_CC_HAS_INT128=y -CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" -CONFIG_GCC11_NO_ARRAY_BOUNDS=y -CONFIG_CC_NO_ARRAY_BOUNDS=y -CONFIG_ARCH_SUPPORTS_INT128=y -CONFIG_CGROUPS=y -CONFIG_PAGE_COUNTER=y -# CONFIG_CGROUP_FAVOR_DYNMODS is not set CONFIG_MEMCG=y -CONFIG_MEMCG_KMEM=y CONFIG_BLK_CGROUP=y -CONFIG_CGROUP_WRITEBACK=y -CONFIG_CGROUP_SCHED=y -CONFIG_FAIR_GROUP_SCHED=y CONFIG_CFS_BANDWIDTH=y CONFIG_RT_GROUP_SCHED=y -CONFIG_SCHED_MM_CID=y CONFIG_CGROUP_PIDS=y CONFIG_CGROUP_RDMA=y CONFIG_CGROUP_FREEZER=y CONFIG_CPUSETS=y -CONFIG_PROC_PID_CPUSET=y CONFIG_CGROUP_DEVICE=y CONFIG_CGROUP_CPUACCT=y CONFIG_CGROUP_PERF=y CONFIG_CGROUP_BPF=y -# CONFIG_CGROUP_MISC is not set -# CONFIG_CGROUP_DEBUG is not set -CONFIG_SOCK_CGROUP_DATA=y CONFIG_NAMESPACES=y -CONFIG_UTS_NS=y -CONFIG_TIME_NS=y -CONFIG_IPC_NS=y -# CONFIG_USER_NS is not set -CONFIG_PID_NS=y -CONFIG_NET_NS=y -# CONFIG_CHECKPOINT_RESTORE is not set CONFIG_SCHED_AUTOGROUP=y CONFIG_RELAY=y -CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="@INITRAMFS_SOURCE@" -CONFIG_INITRAMFS_ROOT_UID=0 -CONFIG_INITRAMFS_ROOT_GID=0 -CONFIG_RD_GZIP=y -CONFIG_RD_BZIP2=y -CONFIG_RD_LZMA=y -CONFIG_RD_XZ=y -CONFIG_RD_LZO=y -CONFIG_RD_LZ4=y -CONFIG_RD_ZSTD=y -# CONFIG_INITRAMFS_COMPRESSION_GZIP is not set -# CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set -# CONFIG_INITRAMFS_COMPRESSION_LZMA is not set -# CONFIG_INITRAMFS_COMPRESSION_XZ is not set +CONFIG_INITRAMFS_SOURCE="${BR_BINARIES_DIR}/rootfs.cpio" CONFIG_INITRAMFS_COMPRESSION_LZO=y -# CONFIG_INITRAMFS_COMPRESSION_LZ4 is not set -# CONFIG_INITRAMFS_COMPRESSION_ZSTD is not set -# CONFIG_INITRAMFS_COMPRESSION_NONE is not set CONFIG_BOOT_CONFIG=y -# CONFIG_BOOT_CONFIG_FORCE is not set -# CONFIG_BOOT_CONFIG_EMBED is not set -CONFIG_INITRAMFS_PRESERVE_MTIME=y -# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set CONFIG_CC_OPTIMIZE_FOR_SIZE=y -CONFIG_LD_ORPHAN_WARN=y -CONFIG_LD_ORPHAN_WARN_LEVEL="warn" -CONFIG_SYSCTL=y -CONFIG_HAVE_UID16=y -CONFIG_SYSCTL_EXCEPTION_TRACE=y CONFIG_EXPERT=y -CONFIG_UID16=y -CONFIG_MULTIUSER=y CONFIG_SGETMASK_SYSCALL=y -CONFIG_SYSFS_SYSCALL=y -CONFIG_FHANDLE=y -CONFIG_POSIX_TIMERS=y -CONFIG_PRINTK=y -CONFIG_BUG=y -CONFIG_ELF_CORE=y -CONFIG_BASE_FULL=y -CONFIG_FUTEX=y -CONFIG_FUTEX_PI=y -CONFIG_EPOLL=y -CONFIG_SIGNALFD=y -CONFIG_TIMERFD=y -CONFIG_EVENTFD=y -CONFIG_SHMEM=y -CONFIG_AIO=y -CONFIG_IO_URING=y -CONFIG_ADVISE_SYSCALLS=y -CONFIG_MEMBARRIER=y -CONFIG_KALLSYMS=y -# CONFIG_KALLSYMS_SELFTEST is not set CONFIG_KALLSYMS_ALL=y -CONFIG_KALLSYMS_BASE_RELATIVE=y -CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y -CONFIG_KCMP=y -CONFIG_RSEQ=y -CONFIG_CACHESTAT_SYSCALL=y -# CONFIG_DEBUG_RSEQ is not set -CONFIG_HAVE_PERF_EVENTS=y -# CONFIG_PC104 is not set - -# -# Kernel Performance Events And Counters -# -CONFIG_PERF_EVENTS=y -# CONFIG_DEBUG_PERF_USE_VMALLOC is not set -# end of Kernel Performance Events And Counters - -CONFIG_SYSTEM_DATA_VERIFICATION=y CONFIG_PROFILING=y - -# -# Kexec and crash features -# -# CONFIG_KEXEC is not set -# CONFIG_KEXEC_FILE is not set -# CONFIG_CRASH_DUMP is not set -# end of Kexec and crash features -# end of General setup - -CONFIG_ARM64=y -CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS=y -CONFIG_64BIT=y -CONFIG_MMU=y -CONFIG_ARM64_PAGE_SHIFT=12 -CONFIG_ARM64_CONT_PTE_SHIFT=4 -CONFIG_ARM64_CONT_PMD_SHIFT=4 -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_STACKTRACE_SUPPORT=y -CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 -CONFIG_LOCKDEP_SUPPORT=y -CONFIG_GENERIC_BUG=y -CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y -CONFIG_GENERIC_HWEIGHT=y -CONFIG_GENERIC_CSUM=y -CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_SMP=y -CONFIG_KERNEL_MODE_NEON=y -CONFIG_FIX_EARLYCON_MEM=y -CONFIG_PGTABLE_LEVELS=3 -CONFIG_ARCH_SUPPORTS_UPROBES=y -CONFIG_ARCH_PROC_KCORE_TEXT=y -CONFIG_BUILTIN_RETURN_ADDRESS_STRIPS_PAC=y - -# -# Platform selection -# -# CONFIG_ARCH_ACTIONS is not set -# CONFIG_ARCH_SUNXI is not set -# CONFIG_ARCH_ALPINE is not set -# CONFIG_ARCH_APPLE is not set -# CONFIG_ARCH_BCM is not set -# CONFIG_ARCH_BERLIN is not set -# CONFIG_ARCH_BITMAIN is not set -# CONFIG_ARCH_EXYNOS is not set -# CONFIG_ARCH_SPARX5 is not set -# CONFIG_ARCH_K3 is not set -# CONFIG_ARCH_LG1K is not set -# CONFIG_ARCH_HISI is not set -# CONFIG_ARCH_KEEMBAY is not set -# CONFIG_ARCH_MEDIATEK is not set -# CONFIG_ARCH_MESON is not set -# CONFIG_ARCH_MVEBU is not set -# CONFIG_ARCH_NXP is not set -# CONFIG_ARCH_MA35 is not set -# CONFIG_ARCH_NPCM is not set -# CONFIG_ARCH_QCOM is not set -# CONFIG_ARCH_REALTEK is not set -# CONFIG_ARCH_RENESAS is not set CONFIG_ARCH_ROCKCHIP=y -# CONFIG_ARCH_SEATTLE is not set -# CONFIG_ARCH_INTEL_SOCFPGA is not set -# CONFIG_ARCH_STM32 is not set -# CONFIG_ARCH_SYNQUACER is not set -# CONFIG_ARCH_TEGRA is not set -# CONFIG_ARCH_SPRD is not set -# CONFIG_ARCH_THUNDER is not set -# CONFIG_ARCH_THUNDER2 is not set -# CONFIG_ARCH_UNIPHIER is not set -# CONFIG_ARCH_VEXPRESS is not set -# CONFIG_ARCH_VISCONTI is not set -# CONFIG_ARCH_XGENE is not set -# CONFIG_ARCH_ZYNQMP is not set -# end of Platform selection - -# -# Kernel Features -# - -# -# ARM errata workarounds via the alternatives framework -# -CONFIG_AMPERE_ERRATUM_AC03_CPU_38=y -CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y -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_ERRATUM_1742098=y -CONFIG_ARM64_ERRATUM_845719=y -CONFIG_ARM64_ERRATUM_843419=y -CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y -CONFIG_ARM64_ERRATUM_1024718=y -CONFIG_ARM64_ERRATUM_1418040=y -CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y -CONFIG_ARM64_ERRATUM_1165522=y -CONFIG_ARM64_ERRATUM_1319367=y -CONFIG_ARM64_ERRATUM_1530923=y -CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y -CONFIG_ARM64_ERRATUM_2441007=y -CONFIG_ARM64_ERRATUM_1286807=y -CONFIG_ARM64_ERRATUM_1463225=y -CONFIG_ARM64_ERRATUM_1542419=y -CONFIG_ARM64_ERRATUM_1508412=y -CONFIG_ARM64_ERRATUM_2051678=y -CONFIG_ARM64_ERRATUM_2077057=y -CONFIG_ARM64_ERRATUM_2658417=y -CONFIG_ARM64_WORKAROUND_TSB_FLUSH_FAILURE=y -CONFIG_ARM64_ERRATUM_2054223=y -CONFIG_ARM64_ERRATUM_2067961=y -CONFIG_ARM64_ERRATUM_2441009=y -CONFIG_ARM64_ERRATUM_2457168=y -CONFIG_ARM64_ERRATUM_2645198=y # CONFIG_CAVIUM_ERRATUM_22375 is not set # CONFIG_CAVIUM_ERRATUM_23154 is not set # CONFIG_CAVIUM_ERRATUM_27456 is not set @@ -395,586 +53,75 @@ CONFIG_ARM64_ERRATUM_2645198=y # CONFIG_QCOM_QDF2400_ERRATUM_0065 is not set # CONFIG_QCOM_FALKOR_ERRATUM_E1041 is not set # CONFIG_NVIDIA_CARMEL_CNP_ERRATUM is not set -CONFIG_ROCKCHIP_ERRATUM_3588001=y # CONFIG_SOCIONEXT_SYNQUACER_PREITS is not set -# end of ARM errata workarounds via the alternatives framework - -CONFIG_ARM64_4K_PAGES=y -# CONFIG_ARM64_16K_PAGES is not set -# 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_PA_BITS_48=y -CONFIG_ARM64_PA_BITS=48 -# CONFIG_CPU_BIG_ENDIAN is not set -CONFIG_CPU_LITTLE_ENDIAN=y CONFIG_SCHED_MC=y -# CONFIG_SCHED_CLUSTER is not set CONFIG_SCHED_SMT=y CONFIG_NR_CPUS=4 -CONFIG_HOTPLUG_CPU=y -# CONFIG_NUMA is not set -# CONFIG_HZ_100 is not set -CONFIG_HZ_250=y -# CONFIG_HZ_300 is not set -# CONFIG_HZ_1000 is not set -CONFIG_HZ=250 -CONFIG_SCHED_HRTICK=y -CONFIG_ARCH_SPARSEMEM_ENABLE=y -CONFIG_HW_PERF_EVENTS=y -CONFIG_CC_HAVE_SHADOW_CALL_STACK=y -# CONFIG_PARAVIRT is not set -# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set -CONFIG_ARCH_SUPPORTS_KEXEC=y -CONFIG_ARCH_SUPPORTS_KEXEC_FILE=y -CONFIG_ARCH_SUPPORTS_KEXEC_SIG=y -CONFIG_ARCH_SUPPORTS_KEXEC_IMAGE_VERIFY_SIG=y -CONFIG_ARCH_DEFAULT_KEXEC_IMAGE_VERIFY_SIG=y -CONFIG_ARCH_SUPPORTS_CRASH_DUMP=y -# CONFIG_XEN is not set -CONFIG_ARCH_FORCE_MAX_ORDER=10 -CONFIG_UNMAP_KERNEL_AT_EL0=y -CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY=y -CONFIG_RODATA_FULL_DEFAULT_ENABLED=y CONFIG_ARM64_SW_TTBR0_PAN=y -CONFIG_ARM64_TAGGED_ADDR_ABI=y CONFIG_COMPAT=y -CONFIG_KUSER_HELPERS=y -# CONFIG_COMPAT_ALIGNMENT_FIXUPS is not set CONFIG_ARMV8_DEPRECATED=y -# CONFIG_SWP_EMULATION is not set -# CONFIG_CP15_BARRIER_EMULATION is not set -# CONFIG_SETEND_EMULATION is not set - -# -# ARMv8.1 architectural features -# -CONFIG_ARM64_HW_AFDBM=y -CONFIG_ARM64_PAN=y -CONFIG_AS_HAS_LSE_ATOMICS=y -CONFIG_ARM64_LSE_ATOMICS=y -CONFIG_ARM64_USE_LSE_ATOMICS=y -# end of ARMv8.1 architectural features - -# -# ARMv8.2 architectural features -# -CONFIG_AS_HAS_ARMV8_2=y -CONFIG_AS_HAS_SHA3=y CONFIG_ARM64_PMEM=y -CONFIG_ARM64_RAS_EXTN=y -CONFIG_ARM64_CNP=y -# end of ARMv8.2 architectural features - -# -# ARMv8.3 architectural features -# -CONFIG_ARM64_PTR_AUTH=y -CONFIG_ARM64_PTR_AUTH_KERNEL=y -CONFIG_CC_HAS_BRANCH_PROT_PAC_RET=y -CONFIG_CC_HAS_SIGN_RETURN_ADDRESS=y -CONFIG_AS_HAS_ARMV8_3=y -CONFIG_AS_HAS_CFI_NEGATE_RA_STATE=y -CONFIG_AS_HAS_LDAPR=y -# end of ARMv8.3 architectural features - -# -# ARMv8.4 architectural features -# -CONFIG_ARM64_AMU_EXTN=y -CONFIG_AS_HAS_ARMV8_4=y -CONFIG_ARM64_TLB_RANGE=y -# end of ARMv8.4 architectural features - -# -# ARMv8.5 architectural features -# -CONFIG_AS_HAS_ARMV8_5=y # CONFIG_ARM64_BTI is not set -CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI=y -CONFIG_ARM64_E0PD=y -CONFIG_ARM64_AS_HAS_MTE=y -CONFIG_ARM64_MTE=y -# end of ARMv8.5 architectural features - -# -# ARMv8.7 architectural features -# -CONFIG_ARM64_EPAN=y -# end of ARMv8.7 architectural features - -CONFIG_ARM64_SVE=y -CONFIG_ARM64_SME=y -# CONFIG_ARM64_PSEUDO_NMI is not set -CONFIG_RELOCATABLE=y CONFIG_RANDOMIZE_BASE=y -CONFIG_RANDOMIZE_MODULE_REGION_FULL=y -CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y -CONFIG_STACKPROTECTOR_PER_TASK=y -# end of Kernel Features - -# -# Boot options -# -CONFIG_CMDLINE="" # CONFIG_EFI is not set -# end of Boot options - -# -# Power management options -# -CONFIG_SUSPEND=y -CONFIG_SUSPEND_FREEZER=y CONFIG_SUSPEND_SKIP_SYNC=y -# CONFIG_HIBERNATION is not set -CONFIG_PM_SLEEP=y -CONFIG_PM_SLEEP_SMP=y CONFIG_PM_AUTOSLEEP=y -# CONFIG_PM_USERSPACE_AUTOSLEEP is not set -# CONFIG_PM_WAKELOCKS is not set -CONFIG_PM=y -# CONFIG_PM_DEBUG is not set -CONFIG_PM_CLK=y -CONFIG_PM_GENERIC_DOMAINS=y CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y -CONFIG_PM_GENERIC_DOMAINS_SLEEP=y -CONFIG_PM_GENERIC_DOMAINS_OF=y -CONFIG_CPU_PM=y CONFIG_ENERGY_MODEL=y -CONFIG_ARCH_HIBERNATION_POSSIBLE=y -CONFIG_ARCH_SUSPEND_POSSIBLE=y -# end of Power management options - -# -# CPU Power Management -# - -# -# CPU Idle -# CONFIG_CPU_IDLE=y -CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y CONFIG_CPU_IDLE_GOV_LADDER=y -CONFIG_CPU_IDLE_GOV_MENU=y -# CONFIG_CPU_IDLE_GOV_TEO is not set -CONFIG_DT_IDLE_STATES=y -CONFIG_DT_IDLE_GENPD=y - -# -# ARM CPU Idle Drivers -# CONFIG_ARM_PSCI_CPUIDLE=y -CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y -# end of ARM CPU Idle Drivers -# end of CPU Idle - -# -# CPU Frequency scaling -# CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_GOV_ATTR_SET=y -CONFIG_CPU_FREQ_GOV_COMMON=y CONFIG_CPU_FREQ_STAT=y -# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set -CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y -CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_POWERSAVE=y -# CONFIG_CPU_FREQ_GOV_USERSPACE is not set CONFIG_CPU_FREQ_GOV_ONDEMAND=y -# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set -CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y - -# -# CPU frequency scaling drivers -# CONFIG_CPUFREQ_DT=y -CONFIG_CPUFREQ_DT_PLATDEV=y -# CONFIG_ARM_SCPI_CPUFREQ is not set -# CONFIG_ARM_SCMI_CPUFREQ is not set -# end of CPU Frequency scaling -# end of CPU Power Management - -CONFIG_HAVE_KVM=y -# CONFIG_VIRTUALIZATION is not set - -# -# General architecture-dependent options -# -CONFIG_ARCH_HAS_SUBPAGE_FAULTS=y -CONFIG_HOTPLUG_CORE_SYNC=y -CONFIG_HOTPLUG_CORE_SYNC_DEAD=y -# CONFIG_KPROBES is not set -# CONFIG_JUMP_LABEL is not set -CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y -CONFIG_HAVE_IOREMAP_PROT=y -CONFIG_HAVE_KPROBES=y -CONFIG_HAVE_KRETPROBES=y -CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y -CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y -CONFIG_HAVE_NMI=y -CONFIG_TRACE_IRQFLAGS_SUPPORT=y -CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y -CONFIG_HAVE_ARCH_TRACEHOOK=y -CONFIG_HAVE_DMA_CONTIGUOUS=y -CONFIG_GENERIC_SMP_IDLE_THREAD=y -CONFIG_GENERIC_IDLE_POLL_SETUP=y -CONFIG_ARCH_HAS_FORTIFY_SOURCE=y -CONFIG_ARCH_HAS_KEEPINITRD=y -CONFIG_ARCH_HAS_SET_MEMORY=y -CONFIG_ARCH_HAS_SET_DIRECT_MAP=y -CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y -CONFIG_ARCH_WANTS_NO_INSTR=y -CONFIG_HAVE_ASM_MODVERSIONS=y -CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y -CONFIG_HAVE_RSEQ=y -CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=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_ARCH_JUMP_LABEL_RELATIVE=y -CONFIG_MMU_GATHER_TABLE_FREE=y -CONFIG_MMU_GATHER_RCU_TABLE_FREE=y -CONFIG_MMU_LAZY_TLB_REFCOUNT=y -CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y -CONFIG_ARCH_HAS_NMI_SAFE_THIS_CPU_OPS=y -CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y -CONFIG_HAVE_CMPXCHG_LOCAL=y -CONFIG_HAVE_CMPXCHG_DOUBLE=y -CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y -CONFIG_HAVE_ARCH_SECCOMP=y -CONFIG_HAVE_ARCH_SECCOMP_FILTER=y -CONFIG_SECCOMP=y -CONFIG_SECCOMP_FILTER=y -# CONFIG_SECCOMP_CACHE_DEBUG is not set -CONFIG_HAVE_ARCH_STACKLEAK=y -CONFIG_HAVE_STACKPROTECTOR=y -CONFIG_STACKPROTECTOR=y -CONFIG_STACKPROTECTOR_STRONG=y -CONFIG_ARCH_SUPPORTS_SHADOW_CALL_STACK=y -# CONFIG_SHADOW_CALL_STACK is not set -CONFIG_ARCH_SUPPORTS_LTO_CLANG=y -CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y -CONFIG_LTO_NONE=y -CONFIG_ARCH_SUPPORTS_CFI_CLANG=y -CONFIG_HAVE_CONTEXT_TRACKING_USER=y -CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y -CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y -CONFIG_HAVE_MOVE_PUD=y -CONFIG_HAVE_MOVE_PMD=y -CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y -CONFIG_HAVE_ARCH_HUGE_VMAP=y -CONFIG_HAVE_ARCH_HUGE_VMALLOC=y -CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y -CONFIG_HAVE_MOD_ARCH_SPECIFIC=y -CONFIG_MODULES_USE_ELF_RELA=y -CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK=y -CONFIG_SOFTIRQ_ON_OWN_STACK=y -CONFIG_ARCH_HAS_ELF_RANDOMIZE=y -CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_ARM_SCMI_CPUFREQ=y CONFIG_ARCH_MMAP_RND_BITS=18 -CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 -CONFIG_PAGE_SIZE_LESS_THAN_64KB=y -CONFIG_PAGE_SIZE_LESS_THAN_256KB=y -CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y -CONFIG_CLONE_BACKWARDS=y -CONFIG_OLD_SIGSUSPEND3=y -CONFIG_COMPAT_OLD_SIGACTION=y -CONFIG_COMPAT_32BIT_TIME=y -CONFIG_HAVE_ARCH_VMAP_STACK=y -CONFIG_VMAP_STACK=y -CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y -CONFIG_RANDOMIZE_KSTACK_OFFSET=y -# CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT is not set -CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y -CONFIG_STRICT_KERNEL_RWX=y -CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y -CONFIG_STRICT_MODULE_RWX=y -CONFIG_HAVE_ARCH_COMPILER_H=y -CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y -# CONFIG_LOCK_EVENT_COUNTS is not set -CONFIG_ARCH_HAS_RELR=y -CONFIG_HAVE_PREEMPT_DYNAMIC=y -CONFIG_HAVE_PREEMPT_DYNAMIC_KEY=y -CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y -CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y -CONFIG_ARCH_SUPPORTS_PAGE_TABLE_CHECK=y -CONFIG_ARCH_HAVE_TRACE_MMIO_ACCESS=y - -# -# GCOV-based kernel profiling -# -# CONFIG_GCOV_KERNEL is not set -CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y -# end of GCOV-based kernel profiling - -CONFIG_HAVE_GCC_PLUGINS=y -CONFIG_GCC_PLUGINS=y -# CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set -CONFIG_FUNCTION_ALIGNMENT_4B=y -CONFIG_FUNCTION_ALIGNMENT=4 -# end of General architecture-dependent options - -CONFIG_RT_MUTEXES=y -CONFIG_BASE_SMALL=0 +# CONFIG_GCC_PLUGINS is not set CONFIG_MODULES=y -# CONFIG_MODULE_DEBUG is not set CONFIG_MODULE_FORCE_LOAD=y CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y -# CONFIG_MODULE_UNLOAD_TAINT_TRACKING is not set -# CONFIG_MODVERSIONS is not set -# CONFIG_MODULE_SRCVERSION_ALL is not set -# CONFIG_MODULE_SIG is not set -CONFIG_MODULE_COMPRESS_NONE=y -# CONFIG_MODULE_COMPRESS_GZIP is not set -# CONFIG_MODULE_COMPRESS_XZ is not set -# CONFIG_MODULE_COMPRESS_ZSTD is not set -# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set -CONFIG_MODPROBE_PATH="/sbin/modprobe" -# CONFIG_TRIM_UNUSED_KSYMS is not set -CONFIG_MODULES_TREE_LOOKUP=y -CONFIG_BLOCK=y -CONFIG_BLOCK_LEGACY_AUTOLOAD=y -CONFIG_BLK_DEV_BSG_COMMON=y -CONFIG_BLK_DEV_BSGLIB=y -# CONFIG_BLK_DEV_INTEGRITY is not set -# CONFIG_BLK_DEV_ZONED is not set -# CONFIG_BLK_DEV_THROTTLING is not set -# CONFIG_BLK_WBT is not set -# CONFIG_BLK_CGROUP_IOLATENCY is not set -# CONFIG_BLK_CGROUP_IOCOST is not set -# CONFIG_BLK_CGROUP_IOPRIO is not set -CONFIG_BLK_DEBUG_FS=y -# CONFIG_BLK_SED_OPAL is not set -# CONFIG_BLK_INLINE_ENCRYPTION is not set - -# -# Partition Types -# CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_AIX_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set CONFIG_MAC_PARTITION=y -CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_MINIX_SUBPARTITION is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_KARMA_PARTITION is not set -CONFIG_EFI_PARTITION=y -# CONFIG_SYSV68_PARTITION is not set -# CONFIG_CMDLINE_PARTITION is not set -# end of Partition Types - -CONFIG_BLK_MQ_PCI=y -CONFIG_BLK_PM=y -CONFIG_BLOCK_HOLDER_DEPRECATED=y -CONFIG_BLK_MQ_STACKING=y - -# -# IO Schedulers -# -CONFIG_MQ_IOSCHED_DEADLINE=y # CONFIG_MQ_IOSCHED_KYBER is not set # CONFIG_IOSCHED_BFQ is not set -# end of IO Schedulers - -CONFIG_PADATA=y -CONFIG_ASN1=y -CONFIG_UNINLINE_SPIN_UNLOCK=y -CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y -CONFIG_MUTEX_SPIN_ON_OWNER=y -CONFIG_RWSEM_SPIN_ON_OWNER=y -CONFIG_LOCK_SPIN_ON_OWNER=y -CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y -CONFIG_QUEUED_SPINLOCKS=y -CONFIG_ARCH_USE_QUEUED_RWLOCKS=y -CONFIG_QUEUED_RWLOCKS=y -CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y -CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y -CONFIG_FREEZER=y - -# -# Executable file formats -# -CONFIG_BINFMT_ELF=y -CONFIG_COMPAT_BINFMT_ELF=y -CONFIG_ARCH_BINFMT_ELF_STATE=y -CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y -CONFIG_ARCH_HAVE_ELF_PROT=y -CONFIG_ARCH_USE_GNU_PROPERTY=y -CONFIG_ELFCORE=y -CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y -CONFIG_BINFMT_SCRIPT=y CONFIG_BINFMT_MISC=y -CONFIG_COREDUMP=y -# end of Executable file formats - -# -# Memory Management options -# -CONFIG_SWAP=y -# CONFIG_ZSWAP is not set -CONFIG_ZSMALLOC=y -# CONFIG_ZSMALLOC_STAT is not set -CONFIG_ZSMALLOC_CHAIN_SIZE=8 - -# -# SLAB allocator options -# -# CONFIG_SLAB_DEPRECATED is not set -CONFIG_SLUB=y -# CONFIG_SLUB_TINY is not set # CONFIG_SLAB_MERGE_DEFAULT is not set -# CONFIG_SLAB_FREELIST_RANDOM is not set -# CONFIG_SLAB_FREELIST_HARDENED is not set -# CONFIG_SLUB_STATS is not set # CONFIG_SLUB_CPU_PARTIAL is not set -# CONFIG_RANDOM_KMALLOC_CACHES is not set -# end of SLAB allocator options - -# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set # CONFIG_COMPAT_BRK is not set -CONFIG_SPARSEMEM=y -CONFIG_SPARSEMEM_EXTREME=y -CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y -CONFIG_SPARSEMEM_VMEMMAP=y -CONFIG_HAVE_FAST_GUP=y -CONFIG_ARCH_KEEP_MEMBLOCK=y -CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y -CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y -# CONFIG_MEMORY_HOTPLUG is not set -CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y -CONFIG_SPLIT_PTLOCK_CPUS=4 -CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y # CONFIG_COMPACTION is not set -# CONFIG_PAGE_REPORTING is not set -CONFIG_MIGRATION=y -CONFIG_PHYS_ADDR_T_64BIT=y -# CONFIG_KSM is not set CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 -CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y -# CONFIG_MEMORY_FAILURE is not set -CONFIG_ARCH_WANTS_THP_SWAP=y -# CONFIG_TRANSPARENT_HUGEPAGE is not set -# CONFIG_CMA is not set -CONFIG_GENERIC_EARLY_IOREMAP=y -# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set -# CONFIG_IDLE_PAGE_TRACKING is not set -CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y -CONFIG_ARCH_HAS_CURRENT_STACK_POINTER=y -CONFIG_ARCH_HAS_PTE_DEVMAP=y -CONFIG_ARCH_HAS_ZONE_DMA_SET=y -CONFIG_ZONE_DMA=y -CONFIG_ZONE_DMA32=y -CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y -CONFIG_ARCH_USES_PG_ARCH_X=y # CONFIG_VM_EVENT_COUNTERS is not set -# CONFIG_PERCPU_STATS is not set -# CONFIG_GUP_TEST is not set -# CONFIG_DMAPOOL_TEST is not set -CONFIG_ARCH_HAS_PTE_SPECIAL=y -CONFIG_MEMFD_CREATE=y -CONFIG_SECRETMEM=y -# CONFIG_ANON_VMA_NAME is not set -# CONFIG_USERFAULTFD is not set -# CONFIG_LRU_GEN is not set -CONFIG_ARCH_SUPPORTS_PER_VMA_LOCK=y -CONFIG_PER_VMA_LOCK=y -CONFIG_LOCK_MM_AND_FIND_VMA=y - -# -# Data Access Monitoring -# -# CONFIG_DAMON is not set -# end of Data Access Monitoring -# end of Memory Management options - CONFIG_NET=y -CONFIG_COMPAT_NETLINK_MESSAGES=y -CONFIG_NET_INGRESS=y -CONFIG_NET_EGRESS=y -CONFIG_NET_XGRESS=y -CONFIG_SKB_EXTENSIONS=y - -# -# Networking options -# CONFIG_PACKET=y -# CONFIG_PACKET_DIAG is not set CONFIG_UNIX=y -CONFIG_UNIX_SCM=y -CONFIG_AF_UNIX_OOB=y CONFIG_UNIX_DIAG=m -# CONFIG_TLS is not set -CONFIG_XFRM=y -CONFIG_XFRM_ALGO=y CONFIG_XFRM_USER=y -# CONFIG_XFRM_SUB_POLICY is not set -# CONFIG_XFRM_MIGRATE is not set -# CONFIG_XFRM_STATISTICS is not set -CONFIG_XFRM_AH=y -CONFIG_XFRM_ESP=y -CONFIG_XFRM_IPCOMP=y CONFIG_NET_KEY=y -# CONFIG_NET_KEY_MIGRATE is not set -# CONFIG_XDP_SOCKETS 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=y CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_ROUTE_CLASSID=y -# CONFIG_IP_PNP is not set CONFIG_NET_IPIP=m CONFIG_NET_IPGRE_DEMUX=m -CONFIG_NET_IP_TUNNEL=y CONFIG_NET_IPGRE=m -# CONFIG_NET_IPGRE_BROADCAST is not set -CONFIG_IP_MROUTE_COMMON=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_NET_FOU_IP_TUNNELS is not set CONFIG_INET_AH=y CONFIG_INET_ESP=y -# CONFIG_INET_ESP_OFFLOAD is not set -# CONFIG_INET_ESPINTCP is not set CONFIG_INET_IPCOMP=y -CONFIG_INET_TABLE_PERTURB_ORDER=16 -CONFIG_INET_XFRM_TUNNEL=y -CONFIG_INET_TUNNEL=y # CONFIG_INET_DIAG is not set CONFIG_TCP_CONG_ADVANCED=y -CONFIG_TCP_CONG_BIC=m CONFIG_TCP_CONG_CUBIC=m -CONFIG_TCP_CONG_WESTWOOD=m -CONFIG_TCP_CONG_HTCP=m CONFIG_TCP_CONG_HSTCP=m CONFIG_TCP_CONG_HYBLA=m -CONFIG_TCP_CONG_VEGAS=m -# CONFIG_TCP_CONG_NV is not set CONFIG_TCP_CONG_SCALABLE=m CONFIG_TCP_CONG_LP=m CONFIG_TCP_CONG_VENO=m @@ -982,54 +129,21 @@ CONFIG_TCP_CONG_YEAH=m CONFIG_TCP_CONG_ILLINOIS=m CONFIG_TCP_CONG_DCTCP=m CONFIG_TCP_CONG_CDG=m -# CONFIG_TCP_CONG_BBR is not set -CONFIG_DEFAULT_RENO=y -CONFIG_DEFAULT_TCP_CONG="reno" CONFIG_TCP_MD5SIG=y # CONFIG_IPV6 is not set -# CONFIG_NETLABEL is not set -# CONFIG_MPTCP is not set -# CONFIG_NETWORK_SECMARK is not set -CONFIG_NET_PTP_CLASSIFY=y -# CONFIG_NETWORK_PHY_TIMESTAMPING is not set CONFIG_NETFILTER=y -CONFIG_NETFILTER_ADVANCED=y CONFIG_BRIDGE_NETFILTER=y - -# -# Core Netfilter Configuration -# -CONFIG_NETFILTER_INGRESS=y -CONFIG_NETFILTER_EGRESS=y -CONFIG_NETFILTER_NETLINK=y -CONFIG_NETFILTER_FAMILY_BRIDGE=y -CONFIG_NETFILTER_FAMILY_ARP=y -CONFIG_NETFILTER_BPF_LINK=y -# CONFIG_NETFILTER_NETLINK_HOOK is not set -CONFIG_NETFILTER_NETLINK_ACCT=m CONFIG_NETFILTER_NETLINK_QUEUE=y CONFIG_NETFILTER_NETLINK_LOG=y -CONFIG_NETFILTER_NETLINK_OSF=m CONFIG_NF_CONNTRACK=m -CONFIG_NF_LOG_SYSLOG=m -CONFIG_NETFILTER_CONNCOUNT=m -CONFIG_NF_CONNTRACK_MARK=y -# CONFIG_NF_CONNTRACK_ZONES is not set CONFIG_NF_CONNTRACK_PROCFS=y CONFIG_NF_CONNTRACK_EVENTS=y CONFIG_NF_CONNTRACK_TIMEOUT=y CONFIG_NF_CONNTRACK_TIMESTAMP=y -CONFIG_NF_CONNTRACK_LABELS=y -CONFIG_NF_CONNTRACK_OVS=y -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=m CONFIG_NF_CONNTRACK_FTP=m CONFIG_NF_CONNTRACK_H323=m CONFIG_NF_CONNTRACK_IRC=m -CONFIG_NF_CONNTRACK_BROADCAST=m CONFIG_NF_CONNTRACK_NETBIOS_NS=m CONFIG_NF_CONNTRACK_SNMP=m CONFIG_NF_CONNTRACK_PPTP=m @@ -1038,79 +152,35 @@ CONFIG_NF_CONNTRACK_SIP=m CONFIG_NF_CONNTRACK_TFTP=m CONFIG_NF_CT_NETLINK=m CONFIG_NF_CT_NETLINK_TIMEOUT=m -# CONFIG_NETFILTER_NETLINK_GLUE_CT is not set -CONFIG_NF_NAT=m -CONFIG_NF_NAT_AMANDA=m -CONFIG_NF_NAT_FTP=m -CONFIG_NF_NAT_IRC=m -CONFIG_NF_NAT_SIP=m -CONFIG_NF_NAT_TFTP=m -CONFIG_NF_NAT_REDIRECT=y -CONFIG_NF_NAT_MASQUERADE=y -CONFIG_NF_NAT_OVS=y -CONFIG_NETFILTER_SYNPROXY=m CONFIG_NF_TABLES=m -# CONFIG_NF_TABLES_NETDEV is not set -# CONFIG_NFT_NUMGEN is not set CONFIG_NFT_CT=m -# CONFIG_NFT_CONNLIMIT is not set CONFIG_NFT_LOG=m CONFIG_NFT_LIMIT=m CONFIG_NFT_MASQ=m CONFIG_NFT_REDIR=m -# CONFIG_NFT_TUNNEL is not set CONFIG_NFT_QUEUE=m -# CONFIG_NFT_QUOTA is not set CONFIG_NFT_REJECT=m CONFIG_NFT_COMPAT=m CONFIG_NFT_HASH=m -# CONFIG_NFT_XFRM is not set -# CONFIG_NFT_SOCKET is not set -# CONFIG_NFT_OSF is not set -# CONFIG_NFT_TPROXY is not set -# CONFIG_NFT_SYNPROXY is not set -# CONFIG_NF_FLOW_TABLE is not set -CONFIG_NETFILTER_XTABLES=y CONFIG_NETFILTER_XTABLES_COMPAT=y - -# -# Xtables combined modules -# -CONFIG_NETFILTER_XT_MARK=m -CONFIG_NETFILTER_XT_CONNMARK=m CONFIG_NETFILTER_XT_SET=m - -# -# Xtables targets -# CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -CONFIG_NETFILTER_XT_TARGET_CT=m CONFIG_NETFILTER_XT_TARGET_DSCP=m -CONFIG_NETFILTER_XT_TARGET_HL=m CONFIG_NETFILTER_XT_TARGET_HMARK=m CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m CONFIG_NETFILTER_XT_TARGET_LED=m CONFIG_NETFILTER_XT_TARGET_LOG=m CONFIG_NETFILTER_XT_TARGET_MARK=m -CONFIG_NETFILTER_XT_NAT=m -CONFIG_NETFILTER_XT_TARGET_NETMAP=m CONFIG_NETFILTER_XT_TARGET_NFLOG=m CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m CONFIG_NETFILTER_XT_TARGET_NOTRACK=m -CONFIG_NETFILTER_XT_TARGET_RATEEST=m -CONFIG_NETFILTER_XT_TARGET_REDIRECT=m -CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m CONFIG_NETFILTER_XT_TARGET_TEE=m CONFIG_NETFILTER_XT_TARGET_TPROXY=m CONFIG_NETFILTER_XT_TARGET_TRACE=m CONFIG_NETFILTER_XT_TARGET_TCPMSS=m CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m - -# -# Xtables matches -# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m CONFIG_NETFILTER_XT_MATCH_BPF=m CONFIG_NETFILTER_XT_MATCH_CGROUP=m @@ -1125,11 +195,9 @@ CONFIG_NETFILTER_XT_MATCH_CPU=m CONFIG_NETFILTER_XT_MATCH_DCCP=m CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m CONFIG_NETFILTER_XT_MATCH_DSCP=m -CONFIG_NETFILTER_XT_MATCH_ECN=m CONFIG_NETFILTER_XT_MATCH_ESP=m CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m CONFIG_NETFILTER_XT_MATCH_HELPER=m -CONFIG_NETFILTER_XT_MATCH_HL=m CONFIG_NETFILTER_XT_MATCH_IPCOMP=m CONFIG_NETFILTER_XT_MATCH_IPRANGE=m CONFIG_NETFILTER_XT_MATCH_IPVS=m @@ -1157,10 +225,7 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m CONFIG_NETFILTER_XT_MATCH_TCPMSS=m CONFIG_NETFILTER_XT_MATCH_TIME=m CONFIG_NETFILTER_XT_MATCH_U32=m -# end of Core Netfilter Configuration - CONFIG_IP_SET=y -CONFIG_IP_SET_MAX=256 CONFIG_IP_SET_BITMAP_IP=m CONFIG_IP_SET_BITMAP_IPMAC=m CONFIG_IP_SET_BITMAP_PORT=m @@ -1169,7 +234,6 @@ CONFIG_IP_SET_HASH_IPMARK=m CONFIG_IP_SET_HASH_IPPORT=m CONFIG_IP_SET_HASH_IPPORTIP=m CONFIG_IP_SET_HASH_IPPORTNET=m -# CONFIG_IP_SET_HASH_IPMAC is not set CONFIG_IP_SET_HASH_MAC=m CONFIG_IP_SET_HASH_NETPORTNET=m CONFIG_IP_SET_HASH_NET=m @@ -1178,22 +242,11 @@ CONFIG_IP_SET_HASH_NETPORT=m CONFIG_IP_SET_HASH_NETIFACE=m CONFIG_IP_SET_LIST_SET=m CONFIG_IP_VS=m -# CONFIG_IP_VS_DEBUG is not set -CONFIG_IP_VS_TAB_BITS=12 - -# -# IPVS transport protocol load balancing support -# CONFIG_IP_VS_PROTO_TCP=y CONFIG_IP_VS_PROTO_UDP=y -CONFIG_IP_VS_PROTO_AH_ESP=y CONFIG_IP_VS_PROTO_ESP=y CONFIG_IP_VS_PROTO_AH=y CONFIG_IP_VS_PROTO_SCTP=y - -# -# IPVS scheduler -# CONFIG_IP_VS_RR=m CONFIG_IP_VS_WRR=m CONFIG_IP_VS_LC=m @@ -1204,43 +257,11 @@ CONFIG_IP_VS_LBLC=m CONFIG_IP_VS_LBLCR=m CONFIG_IP_VS_DH=m CONFIG_IP_VS_SH=m -# CONFIG_IP_VS_MH is not set CONFIG_IP_VS_SED=m CONFIG_IP_VS_NQ=m -# CONFIG_IP_VS_TWOS is not set - -# -# IPVS SH scheduler -# -CONFIG_IP_VS_SH_TAB_BITS=8 - -# -# IPVS MH scheduler -# -CONFIG_IP_VS_MH_TAB_INDEX=12 - -# -# IPVS application helper -# -# CONFIG_IP_VS_FTP is not set CONFIG_IP_VS_NFCT=y -# CONFIG_IP_VS_PE_SIP is not set - -# -# IP: Netfilter Configuration -# -CONFIG_NF_DEFRAG_IPV4=m -CONFIG_NF_SOCKET_IPV4=m -CONFIG_NF_TPROXY_IPV4=m -# CONFIG_NF_TABLES_IPV4 is not set -# CONFIG_NF_TABLES_ARP is not set -CONFIG_NF_DUP_IPV4=m CONFIG_NF_LOG_ARP=m CONFIG_NF_LOG_IPV4=m -CONFIG_NF_REJECT_IPV4=m -CONFIG_NF_NAT_SNMP_BASIC=m -CONFIG_NF_NAT_PPTP=m -CONFIG_NF_NAT_H323=m CONFIG_IP_NF_IPTABLES=y CONFIG_IP_NF_MATCH_AH=m CONFIG_IP_NF_MATCH_ECN=m @@ -1261,11 +282,8 @@ CONFIG_IP_NF_SECURITY=y CONFIG_IP_NF_ARPTABLES=m CONFIG_IP_NF_ARPFILTER=m CONFIG_IP_NF_ARP_MANGLE=m -# end of IP: Netfilter Configuration - CONFIG_NF_TABLES_BRIDGE=m CONFIG_NFT_BRIDGE_META=m -# CONFIG_NF_CONNTRACK_BRIDGE is not set CONFIG_BRIDGE_NF_EBTABLES=m CONFIG_BRIDGE_EBT_BROUTE=m CONFIG_BRIDGE_EBT_T_FILTER=m @@ -1286,1000 +304,127 @@ CONFIG_BRIDGE_EBT_REDIRECT=m CONFIG_BRIDGE_EBT_SNAT=m CONFIG_BRIDGE_EBT_LOG=m CONFIG_BRIDGE_EBT_NFLOG=m -# CONFIG_BPFILTER 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 is not set -CONFIG_STP=y CONFIG_BRIDGE=y -CONFIG_BRIDGE_IGMP_SNOOPING=y -# CONFIG_BRIDGE_VLAN_FILTERING is not set -# CONFIG_BRIDGE_MRP is not set -# CONFIG_BRIDGE_CFM is not set -# CONFIG_NET_DSA is not set CONFIG_VLAN_8021Q=y -# CONFIG_VLAN_8021Q_GVRP is not set -# CONFIG_VLAN_8021Q_MVRP is not set -CONFIG_LLC=y -# CONFIG_LLC2 is not set -# CONFIG_ATALK is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_PHONET is not set -# CONFIG_IEEE802154 is not set CONFIG_NET_SCHED=y - -# -# Queueing/Scheduling -# CONFIG_NET_SCH_HTB=y -# CONFIG_NET_SCH_HFSC is not set -# CONFIG_NET_SCH_PRIO is not set -# CONFIG_NET_SCH_MULTIQ is not set -# 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_CBS is not set -# CONFIG_NET_SCH_ETF is not set -# CONFIG_NET_SCH_TAPRIO is not set -# CONFIG_NET_SCH_GRED 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_SKBPRIO is not set -# CONFIG_NET_SCH_CHOKE is not set -# CONFIG_NET_SCH_QFQ is not set CONFIG_NET_SCH_CODEL=y CONFIG_NET_SCH_FQ_CODEL=y -# CONFIG_NET_SCH_CAKE 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_PLUG is not set -# CONFIG_NET_SCH_ETS is not set -# CONFIG_NET_SCH_DEFAULT is not set - -# -# Classification -# -CONFIG_NET_CLS=y -# CONFIG_NET_CLS_BASIC is not set -# CONFIG_NET_CLS_ROUTE4 is not set -# CONFIG_NET_CLS_FW is not set CONFIG_NET_CLS_U32=y -# CONFIG_CLS_U32_PERF is not set CONFIG_CLS_U32_MARK=y -# CONFIG_NET_CLS_FLOW is not set CONFIG_NET_CLS_CGROUP=y -# CONFIG_NET_CLS_BPF is not set -# CONFIG_NET_CLS_FLOWER is not set -# CONFIG_NET_CLS_MATCHALL is not set -# CONFIG_NET_EMATCH is not set -# CONFIG_NET_CLS_ACT is not set -CONFIG_NET_SCH_FIFO=y -# CONFIG_DCB is not set CONFIG_DNS_RESOLVER=y -# CONFIG_BATMAN_ADV is not set CONFIG_OPENVSWITCH=m -CONFIG_OPENVSWITCH_GRE=m -CONFIG_OPENVSWITCH_VXLAN=m -# CONFIG_VSOCKETS is not set -# CONFIG_NETLINK_DIAG is not set -CONFIG_MPLS=y -CONFIG_NET_MPLS_GSO=m -# CONFIG_MPLS_ROUTING is not set -CONFIG_NET_NSH=m -# CONFIG_HSR is not set -# CONFIG_NET_SWITCHDEV is not set -CONFIG_NET_L3_MASTER_DEV=y -# CONFIG_QRTR is not set -# CONFIG_NET_NCSI is not set -CONFIG_PCPU_DEV_REFCNT=y -CONFIG_MAX_SKB_FRAGS=17 -CONFIG_RPS=y -CONFIG_RFS_ACCEL=y -CONFIG_SOCK_RX_QUEUE_MAPPING=y -CONFIG_XPS=y CONFIG_CGROUP_NET_PRIO=y -CONFIG_CGROUP_NET_CLASSID=y -CONFIG_NET_RX_BUSY_POLL=y -CONFIG_BQL=y -# CONFIG_BPF_STREAM_PARSER is not set -CONFIG_NET_FLOW_LIMIT=y - -# -# Network testing -# -# CONFIG_NET_PKTGEN is not set -# end of Network testing -# end of Networking options - -# CONFIG_HAMRADIO is not set CONFIG_CAN=y -CONFIG_CAN_RAW=y -CONFIG_CAN_BCM=y -CONFIG_CAN_GW=y -# CONFIG_CAN_J1939 is not set -# CONFIG_CAN_ISOTP is not set CONFIG_BT=m -CONFIG_BT_BREDR=y CONFIG_BT_RFCOMM=y -# CONFIG_BT_RFCOMM_TTY is not set -# CONFIG_BT_BNEP is not set -# CONFIG_BT_CMTP is not set CONFIG_BT_HIDP=y CONFIG_BT_HS=y -CONFIG_BT_LE=y -CONFIG_BT_LE_L2CAP_ECRED=y -# CONFIG_BT_LEDS is not set -# CONFIG_BT_MSFTEXT is not set -# CONFIG_BT_AOSPEXT is not set -CONFIG_BT_DEBUGFS=y -# CONFIG_BT_SELFTEST is not set - -# -# Bluetooth device drivers -# -CONFIG_BT_INTEL=m -CONFIG_BT_BCM=m -CONFIG_BT_RTL=m CONFIG_BT_HCIBTUSB=m -# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set -CONFIG_BT_HCIBTUSB_POLL_SYNC=y -CONFIG_BT_HCIBTUSB_BCM=y -# CONFIG_BT_HCIBTUSB_MTK is not set -CONFIG_BT_HCIBTUSB_RTL=y -# CONFIG_BT_HCIBTSDIO is not set CONFIG_BT_HCIUART=m -CONFIG_BT_HCIUART_SERDEV=y -CONFIG_BT_HCIUART_H4=y -# CONFIG_BT_HCIUART_NOKIA is not set -# CONFIG_BT_HCIUART_BCSP is not set CONFIG_BT_HCIUART_ATH3K=y -# CONFIG_BT_HCIUART_LL is not set -# CONFIG_BT_HCIUART_3WIRE is not set -# CONFIG_BT_HCIUART_INTEL is not set -# CONFIG_BT_HCIUART_BCM is not set -# CONFIG_BT_HCIUART_RTL is not set -# CONFIG_BT_HCIUART_QCA is not set -# CONFIG_BT_HCIUART_AG6XX is not set -# CONFIG_BT_HCIUART_MRVL is not set -# CONFIG_BT_HCIBCM203X is not set -# CONFIG_BT_HCIBCM4377 is not set -# CONFIG_BT_HCIBPA10X is not set CONFIG_BT_HCIBFUSB=m CONFIG_BT_HCIVHCI=m CONFIG_BT_MRVL=m CONFIG_BT_MRVL_SDIO=m -# CONFIG_BT_ATH3K is not set -# CONFIG_BT_MTKSDIO is not set -# CONFIG_BT_MTKUART is not set -# CONFIG_BT_NXPUART is not set -# end of Bluetooth device drivers - -# CONFIG_AF_RXRPC is not set -# CONFIG_AF_KCM is not set -# CONFIG_MCTP is not set -CONFIG_FIB_RULES=y -CONFIG_WIRELESS=y -CONFIG_WIRELESS_EXT=y -CONFIG_WEXT_CORE=y -CONFIG_WEXT_PROC=y -CONFIG_WEXT_SPY=y -CONFIG_WEXT_PRIV=y CONFIG_CFG80211=m -# CONFIG_NL80211_TESTMODE is not set -# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set -# CONFIG_CFG80211_CERTIFICATION_ONUS is not set -CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y -CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y # CONFIG_CFG80211_DEFAULT_PS is not set -# CONFIG_CFG80211_DEBUGFS is not set # CONFIG_CFG80211_CRDA_SUPPORT is not set -CONFIG_CFG80211_WEXT=y -CONFIG_LIB80211=m -# CONFIG_LIB80211_DEBUG is not set CONFIG_MAC80211=m -CONFIG_MAC80211_HAS_RC=y -CONFIG_MAC80211_RC_MINSTREL=y -CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y -CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" CONFIG_MAC80211_MESH=y -CONFIG_MAC80211_LEDS=y -# CONFIG_MAC80211_DEBUGFS is not set -# CONFIG_MAC80211_MESSAGE_TRACING is not set -# CONFIG_MAC80211_DEBUG_MENU is not set -CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 CONFIG_RFKILL=m -CONFIG_RFKILL_LEDS=y CONFIG_RFKILL_INPUT=y CONFIG_RFKILL_GPIO=m -# CONFIG_NET_9P is not set -# CONFIG_CAIF is not set -CONFIG_CEPH_LIB=m -# CONFIG_CEPH_LIB_PRETTYDEBUG is not set -# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set -# CONFIG_NFC is not set -# CONFIG_PSAMPLE is not set -# CONFIG_NET_IFE is not set -# CONFIG_LWTUNNEL is not set -CONFIG_DST_CACHE=y -CONFIG_GRO_CELLS=y -CONFIG_NET_SELFTESTS=y -CONFIG_NET_SOCK_MSG=y -CONFIG_PAGE_POOL=y -# CONFIG_PAGE_POOL_STATS is not set -# CONFIG_FAILOVER is not set # CONFIG_ETHTOOL_NETLINK is not set - -# -# Device Drivers -# -CONFIG_ARM_AMBA=y -CONFIG_HAVE_PCI=y CONFIG_PCI=y -CONFIG_PCI_DOMAINS=y -CONFIG_PCI_DOMAINS_GENERIC=y -CONFIG_PCI_SYSCALL=y CONFIG_PCIEPORTBUS=y CONFIG_PCIEAER=y -# CONFIG_PCIEAER_INJECT is not set -# CONFIG_PCIE_ECRC is not set -CONFIG_PCIEASPM=y -CONFIG_PCIEASPM_DEFAULT=y -# CONFIG_PCIEASPM_POWERSAVE is not set -# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set -# CONFIG_PCIEASPM_PERFORMANCE is not set -CONFIG_PCIE_PME=y -# CONFIG_PCIE_DPC is not set -# CONFIG_PCIE_PTM is not set -CONFIG_PCI_MSI=y -CONFIG_PCI_QUIRKS=y -# CONFIG_PCI_DEBUG is not set -# CONFIG_PCI_STUB is not set -# CONFIG_PCI_IOV is not set -# CONFIG_PCI_PRI is not set -# CONFIG_PCI_PASID is not set -# CONFIG_PCI_DYNAMIC_OF_NODES is not set -# CONFIG_PCIE_BUS_TUNE_OFF is not set -CONFIG_PCIE_BUS_DEFAULT=y -# CONFIG_PCIE_BUS_SAFE is not set -# CONFIG_PCIE_BUS_PERFORMANCE is not set -# CONFIG_PCIE_BUS_PEER2PEER is not set -CONFIG_VGA_ARB=y -CONFIG_VGA_ARB_MAX_GPUS=16 -# CONFIG_HOTPLUG_PCI is not set - -# -# PCI controller drivers -# -# CONFIG_PCIE_ALTERA is not set -# CONFIG_PCI_HOST_THUNDER_PEM is not set -# CONFIG_PCI_HOST_THUNDER_ECAM is not set -# CONFIG_PCI_FTPCI100 is not set -# CONFIG_PCI_HOST_GENERIC is not set -# CONFIG_PCIE_MICROCHIP_HOST is not set -CONFIG_PCIE_ROCKCHIP=y CONFIG_PCIE_ROCKCHIP_HOST=y -# CONFIG_PCI_XGENE is not set -# CONFIG_PCIE_XILINX is not set - -# -# Cadence-based PCIe controllers -# -# CONFIG_PCIE_CADENCE_PLAT_HOST is not set -# CONFIG_PCI_J721E_HOST is not set -# end of Cadence-based PCIe controllers - -# -# DesignWare-based PCIe controllers -# -CONFIG_PCIE_DW=y -CONFIG_PCIE_DW_HOST=y -# CONFIG_PCIE_AL is not set -# CONFIG_PCI_MESON is not set -# CONFIG_PCI_HISI is not set -# CONFIG_PCIE_KIRIN is not set -# CONFIG_PCIE_DW_PLAT_HOST is not set CONFIG_PCIE_ROCKCHIP_DW_HOST=y -# end of DesignWare-based PCIe controllers - -# -# Mobiveil-based PCIe controllers -# -# end of Mobiveil-based PCIe controllers -# end of PCI controller drivers - -# -# PCI Endpoint -# -# CONFIG_PCI_ENDPOINT is not set -# end of PCI Endpoint - -# -# PCI switch controller drivers -# -# CONFIG_PCI_SW_SWITCHTEC is not set -# end of PCI switch controller drivers - -# CONFIG_CXL_BUS is not set -# CONFIG_PCCARD is not set -# CONFIG_RAPIDIO is not set - -# -# Generic Driver Options -# CONFIG_UEVENT_HELPER=y -CONFIG_UEVENT_HELPER_PATH="" CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y CONFIG_DEVTMPFS_SAFE=y -CONFIG_STANDALONE=y -CONFIG_PREVENT_FIRMWARE_BUILD=y - -# -# Firmware loader -# -CONFIG_FW_LOADER=y -CONFIG_FW_LOADER_DEBUG=y -CONFIG_FW_LOADER_PAGED_BUF=y -CONFIG_FW_LOADER_SYSFS=y -CONFIG_EXTRA_FIRMWARE="" CONFIG_FW_LOADER_USER_HELPER=y CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y -# CONFIG_FW_LOADER_COMPRESS is not set -CONFIG_FW_CACHE=y -# CONFIG_FW_UPLOAD is not set -# end of Firmware loader - -CONFIG_WANT_DEV_COREDUMP=y # CONFIG_ALLOW_DEV_COREDUMP is not set -# CONFIG_DEBUG_DRIVER is not set CONFIG_DEBUG_DEVRES=y -# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set -# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set -CONFIG_GENERIC_CPU_AUTOPROBE=y -CONFIG_GENERIC_CPU_VULNERABILITIES=y -CONFIG_SOC_BUS=y -CONFIG_REGMAP=y -CONFIG_REGMAP_I2C=y -CONFIG_REGMAP_SPI=y -CONFIG_REGMAP_MMIO=y -CONFIG_REGMAP_IRQ=y -CONFIG_DMA_SHARED_BUFFER=y -# CONFIG_DMA_FENCE_TRACE is not set -CONFIG_GENERIC_ARCH_TOPOLOGY=y -# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set -# end of Generic Driver Options - -# -# Bus devices -# -# CONFIG_BRCMSTB_GISB_ARB is not set -# CONFIG_MOXTET is not set -# CONFIG_VEXPRESS_CONFIG is not set -# CONFIG_MHI_BUS is not set -# CONFIG_MHI_BUS_EP is not set -# end of Bus devices - -# -# Cache Drivers -# -# end of Cache Drivers - CONFIG_CONNECTOR=y -CONFIG_PROC_EVENTS=y - -# -# Firmware Drivers -# - -# -# ARM System Control and Management Interface Protocol -# CONFIG_ARM_SCMI_PROTOCOL=y -# CONFIG_ARM_SCMI_RAW_MODE_SUPPORT is not set -CONFIG_ARM_SCMI_HAVE_TRANSPORT=y -CONFIG_ARM_SCMI_HAVE_SHMEM=y -CONFIG_ARM_SCMI_TRANSPORT_MAILBOX=y -CONFIG_ARM_SCMI_TRANSPORT_SMC=y -# CONFIG_ARM_SCMI_TRANSPORT_SMC_ATOMIC_ENABLE is not set -CONFIG_ARM_SCMI_POWER_DOMAIN=y CONFIG_ARM_SCMI_POWER_CONTROL=y -# end of ARM System Control and Management Interface Protocol - CONFIG_ARM_SCPI_PROTOCOL=y -CONFIG_ARM_SCPI_POWER_DOMAIN=y -# CONFIG_FIRMWARE_MEMMAP is not set -# CONFIG_FW_CFG_SYSFS is not set CONFIG_ARM_FFA_TRANSPORT=y -CONFIG_ARM_FFA_SMCCC=y -# CONFIG_GOOGLE_FIRMWARE is not set -CONFIG_ARM_PSCI_FW=y -# CONFIG_ARM_PSCI_CHECKER is not set -CONFIG_HAVE_ARM_SMCCC=y -CONFIG_HAVE_ARM_SMCCC_DISCOVERY=y -CONFIG_ARM_SMCCC_SOC_ID=y - -# -# Tegra firmware driver -# -# end of Tegra firmware driver -# end of Firmware Drivers - -# CONFIG_GNSS is not set CONFIG_MTD=y -# CONFIG_MTD_TESTS is not set - -# -# Partition parsers -# -# CONFIG_MTD_AR7_PARTS is not set -# CONFIG_MTD_CMDLINE_PARTS is not set -CONFIG_MTD_OF_PARTS=y -# CONFIG_MTD_AFS_PARTS is not set -# CONFIG_MTD_REDBOOT_PARTS is not set -# end of Partition parsers - -# -# User Modules And Translation Layers -# -CONFIG_MTD_BLKDEVS=y CONFIG_MTD_BLOCK=y - -# -# Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK. -# -# 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 -# CONFIG_MTD_SWAP is not set -# CONFIG_MTD_PARTITIONED_MASTER 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_CFI_I1=y -CONFIG_MTD_CFI_I2=y -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# end of RAM/ROM/Flash chip drivers - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_COMPLEX_MAPPINGS is not set -# CONFIG_MTD_INTEL_VR_NOR is not set -# CONFIG_MTD_PLATRAM is not set -# end of Mapping drivers for chip access - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_DATAFLASH is not set -# CONFIG_MTD_MCHP23K256 is not set -# CONFIG_MTD_MCHP48L640 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 -# end of Self-contained MTD device drivers - -# -# NAND -# -# CONFIG_MTD_ONENAND is not set -# CONFIG_MTD_RAW_NAND is not set -# CONFIG_MTD_SPI_NAND is not set - -# -# ECC engine support -# -# CONFIG_MTD_NAND_ECC_SW_HAMMING is not set -# CONFIG_MTD_NAND_ECC_SW_BCH is not set -# CONFIG_MTD_NAND_ECC_MXIC is not set -# end of ECC engine support -# end of NAND - -# -# LPDDR & LPDDR2 PCM memory drivers -# -# CONFIG_MTD_LPDDR is not set -# end of LPDDR & LPDDR2 PCM memory drivers - CONFIG_MTD_SPI_NOR=y -CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y -# CONFIG_MTD_SPI_NOR_SWP_DISABLE is not set -CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y -# CONFIG_MTD_SPI_NOR_SWP_KEEP is not set -# CONFIG_MTD_UBI is not set -# CONFIG_MTD_HYPERBUS is not set -CONFIG_DTC=y -CONFIG_OF=y -# CONFIG_OF_UNITTEST is not set -CONFIG_OF_FLATTREE=y -CONFIG_OF_EARLY_FLATTREE=y -CONFIG_OF_KOBJ=y -CONFIG_OF_DYNAMIC=y -CONFIG_OF_ADDRESS=y -CONFIG_OF_IRQ=y -CONFIG_OF_RESERVED_MEM=y -CONFIG_OF_RESOLVE=y CONFIG_OF_OVERLAY=y -# CONFIG_PARPORT is not set -CONFIG_BLK_DEV=y -# CONFIG_BLK_DEV_NULL_BLK is not set -CONFIG_CDROM=y -# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set CONFIG_ZRAM=y -CONFIG_ZRAM_DEF_COMP_LZORLE=y -# CONFIG_ZRAM_DEF_COMP_ZSTD is not set -# CONFIG_ZRAM_DEF_COMP_LZ4 is not set -# CONFIG_ZRAM_DEF_COMP_LZO is not set -# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set -CONFIG_ZRAM_DEF_COMP="lzo-rle" -# CONFIG_ZRAM_WRITEBACK is not set -# CONFIG_ZRAM_MEMORY_TRACKING is not set -# CONFIG_ZRAM_MULTI_COMP is not set CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 CONFIG_BLK_DEV_DRBD=m -# CONFIG_DRBD_FAULT_INJECTION is not set CONFIG_BLK_DEV_NBD=m CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=1 -CONFIG_BLK_DEV_RAM_SIZE=4096 -# CONFIG_CDROM_PKTCDVD is not set CONFIG_ATA_OVER_ETH=m CONFIG_BLK_DEV_RBD=m -# CONFIG_BLK_DEV_UBLK is not set - -# -# NVME Support -# -CONFIG_NVME_CORE=m CONFIG_BLK_DEV_NVME=m -# CONFIG_NVME_MULTIPATH is not set -# CONFIG_NVME_VERBOSE_ERRORS is not set -# CONFIG_NVME_HWMON is not set -# CONFIG_NVME_FC is not set -# CONFIG_NVME_TCP is not set -# CONFIG_NVME_AUTH is not set -# CONFIG_NVME_TARGET is not set -# end of NVME Support - -# -# Misc devices -# -# CONFIG_AD525X_DPOT is not set -# CONFIG_DUMMY_IRQ is not set -# CONFIG_PHANTOM is not set -# CONFIG_TIFM_CORE is not set -# CONFIG_ICS932S401 is not set -# CONFIG_ENCLOSURE_SERVICES is not set -# CONFIG_HP_ILO 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_BH1770 is not set -# CONFIG_SENSORS_APDS990X is not set -# CONFIG_HMC6352 is not set -# CONFIG_DS1682 is not set -# CONFIG_LATTICE_ECP3_CONFIG is not set CONFIG_SRAM=y -# CONFIG_DW_XDATA_PCIE is not set -# CONFIG_PCI_ENDPOINT_TEST is not set -# CONFIG_XILINX_SDFEC is not set -# CONFIG_HISI_HIKEY_USB is not set -# CONFIG_OPEN_DICE is not set -# CONFIG_VCPU_STALL_DETECTOR is not set -# 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=y -# CONFIG_EEPROM_93XX46 is not set -# CONFIG_EEPROM_IDT_89HPESX is not set -# CONFIG_EEPROM_EE1004 is not set -# end of EEPROM support - -# CONFIG_CB710_CORE is not set - -# -# Texas Instruments shared transport line discipline -# -# CONFIG_TI_ST is not set -# end of Texas Instruments shared transport line discipline - -# CONFIG_SENSORS_LIS3_SPI is not set -# CONFIG_SENSORS_LIS3_I2C is not set -# CONFIG_ALTERA_STAPL is not set -# CONFIG_VMWARE_VMCI is not set -# CONFIG_GENWQE is not set -# CONFIG_ECHO is not set -# CONFIG_BCM_VK is not set -# CONFIG_MISC_ALCOR_PCI is not set -# CONFIG_MISC_RTSX_PCI is not set -# CONFIG_MISC_RTSX_USB is not set -# CONFIG_UACCE is not set -# CONFIG_PVPANIC is not set -# CONFIG_GP_PCI1XXXX is not set -# end of Misc devices - -# -# SCSI device support -# -CONFIG_SCSI_MOD=y -CONFIG_RAID_ATTRS=m -CONFIG_SCSI_COMMON=y -CONFIG_SCSI=y -CONFIG_SCSI_DMA=y -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_BLK_DEV_SR=y -# CONFIG_CHR_DEV_SG is not set -CONFIG_BLK_DEV_BSG=y -# 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=y -# CONFIG_SCSI_FC_ATTRS is not set -# CONFIG_SCSI_ISCSI_ATTRS is not set -CONFIG_SCSI_SAS_ATTRS=m -# CONFIG_SCSI_SAS_LIBSAS is not set -# CONFIG_SCSI_SRP_ATTRS is not set -# end of SCSI Transports - -CONFIG_SCSI_LOWLEVEL=y -# CONFIG_ISCSI_TCP is not set -# CONFIG_ISCSI_BOOT_SYSFS is not set -# CONFIG_SCSI_CXGB3_ISCSI is not set -# CONFIG_SCSI_CXGB4_ISCSI is not set -# CONFIG_SCSI_BNX2_ISCSI is not set -# CONFIG_BE2ISCSI is not set -# CONFIG_BLK_DEV_3W_XXXX_RAID is not set -# CONFIG_SCSI_HPSA is not set -# CONFIG_SCSI_3W_9XXX is not set -# CONFIG_SCSI_3W_SAS is not set -# CONFIG_SCSI_ACARD is not set -# CONFIG_SCSI_AACRAID is not set -# CONFIG_SCSI_AIC7XXX is not set -# CONFIG_SCSI_AIC79XX is not set -# CONFIG_SCSI_AIC94XX is not set -# CONFIG_SCSI_HISI_SAS is not set -# CONFIG_SCSI_MVSAS is not set -# CONFIG_SCSI_MVUMI is not set -# CONFIG_SCSI_ADVANSYS is not set -# CONFIG_SCSI_ARCMSR is not set -# CONFIG_SCSI_ESAS2R is not set -# CONFIG_MEGARAID_NEWGEN is not set -# CONFIG_MEGARAID_LEGACY is not set CONFIG_MEGARAID_SAS=m -CONFIG_SCSI_MPT3SAS=m -CONFIG_SCSI_MPT2SAS_MAX_SGE=128 -CONFIG_SCSI_MPT3SAS_MAX_SGE=128 CONFIG_SCSI_MPT2SAS=m -# CONFIG_SCSI_MPI3MR is not set -# CONFIG_SCSI_SMARTPQI is not set -# CONFIG_SCSI_HPTIOP is not set -# CONFIG_SCSI_BUSLOGIC is not set -# CONFIG_SCSI_MYRB is not set -# CONFIG_SCSI_MYRS is not set -# CONFIG_SCSI_SNIC is not set -# CONFIG_SCSI_DMX3191D is not set -# CONFIG_SCSI_FDOMAIN_PCI is not set -# CONFIG_SCSI_IPS is not set -# CONFIG_SCSI_INITIO is not set -# CONFIG_SCSI_INIA100 is not set -# CONFIG_SCSI_STEX is not set -# CONFIG_SCSI_SYM53C8XX_2 is not set -# CONFIG_SCSI_IPR is not set -# CONFIG_SCSI_QLOGIC_1280 is not set -# CONFIG_SCSI_QLA_ISCSI is not set -# CONFIG_SCSI_DC395x is not set -# CONFIG_SCSI_AM53C974 is not set -# CONFIG_SCSI_WD719X is not set -# CONFIG_SCSI_DEBUG is not set -# CONFIG_SCSI_PMCRAID is not set -# CONFIG_SCSI_PM8001 is not set -# CONFIG_SCSI_DH is not set -# end of SCSI device support - CONFIG_ATA=y -CONFIG_SATA_HOST=y -CONFIG_ATA_VERBOSE_ERROR=y -CONFIG_ATA_FORCE=y -CONFIG_SATA_PMP=y - -# -# Controllers with non-SFF native interface -# CONFIG_SATA_AHCI=y -CONFIG_SATA_MOBILE_LPM_POLICY=0 CONFIG_SATA_AHCI_PLATFORM=y -# CONFIG_AHCI_DWC is not set -# CONFIG_AHCI_CEVA is not set -# CONFIG_SATA_INIC162X is not set -# CONFIG_SATA_ACARD_AHCI is not set -# CONFIG_SATA_SIL24 is not set -CONFIG_ATA_SFF=y - -# -# SFF controllers with custom DMA interface -# -# CONFIG_PDC_ADMA is not set -# CONFIG_SATA_QSTOR is not set -# CONFIG_SATA_SX4 is not set -CONFIG_ATA_BMDMA=y - -# -# SATA SFF controllers with BMDMA -# -# CONFIG_ATA_PIIX is not set -# CONFIG_SATA_DWC is not set CONFIG_SATA_MV=m CONFIG_SATA_NV=m CONFIG_SATA_PROMISE=m CONFIG_SATA_SIL=m -# CONFIG_SATA_SIS is not set -# CONFIG_SATA_SVW is not set -# CONFIG_SATA_ULI is not set -# CONFIG_SATA_VIA is not set -# CONFIG_SATA_VITESSE is not set - -# -# PATA SFF controllers with BMDMA -# -# CONFIG_PATA_ALI is not set -# CONFIG_PATA_AMD is not set -# CONFIG_PATA_ARTOP is not set -# CONFIG_PATA_ATIIXP is not set -# CONFIG_PATA_ATP867X is not set -# CONFIG_PATA_CMD64X is not set -# CONFIG_PATA_CYPRESS is not set -# CONFIG_PATA_EFAR is not set -# CONFIG_PATA_HPT366 is not set -# CONFIG_PATA_HPT37X is not set -# CONFIG_PATA_HPT3X2N is not set -# CONFIG_PATA_HPT3X3 is not set -# CONFIG_PATA_IT8213 is not set -# CONFIG_PATA_IT821X is not set -# CONFIG_PATA_JMICRON is not set -# CONFIG_PATA_MARVELL is not set -# CONFIG_PATA_NETCELL is not set -# CONFIG_PATA_NINJA32 is not set -# CONFIG_PATA_NS87415 is not set -# CONFIG_PATA_OLDPIIX is not set -# CONFIG_PATA_OPTIDMA is not set -# CONFIG_PATA_PDC2027X is not set -# CONFIG_PATA_PDC_OLD is not set -# CONFIG_PATA_RADISYS is not set -# CONFIG_PATA_RDC is not set -# CONFIG_PATA_SCH is not set -# CONFIG_PATA_SERVERWORKS is not set -# CONFIG_PATA_SIL680 is not set -# CONFIG_PATA_SIS is not set -# CONFIG_PATA_TOSHIBA is not set -# CONFIG_PATA_TRIFLEX is not set -# CONFIG_PATA_VIA is not set -# CONFIG_PATA_WINBOND is not set - -# -# PIO-only SFF controllers -# -# CONFIG_PATA_CMD640_PCI is not set -# CONFIG_PATA_MPIIX is not set -# CONFIG_PATA_NS87410 is not set -# CONFIG_PATA_OPTI is not set -# CONFIG_PATA_OF_PLATFORM is not set -# CONFIG_PATA_RZ1000 is not set - -# -# Generic fallback / legacy drivers -# -# CONFIG_ATA_GENERIC is not set -# CONFIG_PATA_LEGACY is not set CONFIG_MD=y -CONFIG_BLK_DEV_MD=y -CONFIG_MD_AUTODETECT=y -CONFIG_MD_BITMAP_FILE=y CONFIG_MD_LINEAR=m -CONFIG_MD_RAID0=y -CONFIG_MD_RAID1=y -CONFIG_MD_RAID10=y -CONFIG_MD_RAID456=y -# CONFIG_MD_MULTIPATH is not set -# CONFIG_MD_FAULTY is not set CONFIG_BCACHE=m -# CONFIG_BCACHE_DEBUG is not set -# CONFIG_BCACHE_CLOSURES_DEBUG is not set -# CONFIG_BCACHE_ASYNC_REGISTRATION is not set -CONFIG_BLK_DEV_DM_BUILTIN=y CONFIG_BLK_DEV_DM=y -# CONFIG_DM_DEBUG is not set -# CONFIG_DM_UNSTRIPED is not set CONFIG_DM_CRYPT=m -# CONFIG_DM_SNAPSHOT is not set -# CONFIG_DM_THIN_PROVISIONING is not set -# CONFIG_DM_CACHE is not set -# CONFIG_DM_WRITECACHE is not set -# CONFIG_DM_EBS is not set -# CONFIG_DM_ERA is not set -# CONFIG_DM_CLONE is not set -# CONFIG_DM_MIRROR is not set CONFIG_DM_RAID=y -# CONFIG_DM_ZERO is not set -# CONFIG_DM_MULTIPATH is not set -# CONFIG_DM_DELAY is not set -# CONFIG_DM_DUST is not set -# CONFIG_DM_INIT is not set -# CONFIG_DM_UEVENT is not set -# CONFIG_DM_FLAKEY is not set -# CONFIG_DM_VERITY is not set -# CONFIG_DM_SWITCH is not set -# CONFIG_DM_LOG_WRITES is not set -# CONFIG_DM_INTEGRITY is not set -# CONFIG_TARGET_CORE is not set -# CONFIG_FUSION is not set - -# -# IEEE 1394 (FireWire) support -# -# CONFIG_FIREWIRE is not set -# CONFIG_FIREWIRE_NOSY is not set -# end of IEEE 1394 (FireWire) support - CONFIG_NETDEVICES=y -CONFIG_MII=y -CONFIG_NET_CORE=y -# CONFIG_BONDING is not set -# CONFIG_DUMMY is not set CONFIG_WIREGUARD=y -# CONFIG_WIREGUARD_DEBUG is not set -# CONFIG_EQUALIZER is not set -# CONFIG_NET_FC is not set -# CONFIG_NET_TEAM is not set CONFIG_MACVLAN=y -# CONFIG_MACVTAP is not set -CONFIG_IPVLAN_L3S=y CONFIG_IPVLAN=y -# CONFIG_IPVTAP is not set CONFIG_VXLAN=m -# CONFIG_GENEVE is not set -# CONFIG_BAREUDP is not set -# CONFIG_GTP is not set -# CONFIG_AMT is not set -# CONFIG_MACSEC is not set -# CONFIG_NETCONSOLE is not set CONFIG_TUN=m -# CONFIG_TUN_VNET_CROSS_LE is not set CONFIG_VETH=y -# CONFIG_NLMON is not set -# CONFIG_NET_VRF is not set -# CONFIG_ARCNET is not set -CONFIG_ETHERNET=y -CONFIG_MDIO=y # CONFIG_NET_VENDOR_3COM is not set # CONFIG_NET_VENDOR_ADAPTEC is not set # CONFIG_NET_VENDOR_AGERE is not set -CONFIG_NET_VENDOR_ALACRITECH=y -# CONFIG_SLICOSS is not set # CONFIG_NET_VENDOR_ALTEON is not set -# CONFIG_ALTERA_TSE is not set -CONFIG_NET_VENDOR_AMAZON=y -# CONFIG_ENA_ETHERNET is not set # CONFIG_NET_VENDOR_AMD is not set -CONFIG_NET_VENDOR_AQUANTIA=y -# CONFIG_AQTION is not set # CONFIG_NET_VENDOR_ARC is not set -CONFIG_NET_VENDOR_ASIX=y -# CONFIG_SPI_AX88796C is not set # CONFIG_NET_VENDOR_ATHEROS is not set # CONFIG_NET_VENDOR_BROADCOM is not set -CONFIG_NET_VENDOR_CADENCE=y -# CONFIG_MACB is not set # CONFIG_NET_VENDOR_CAVIUM is not set # CONFIG_NET_VENDOR_CHELSIO is not set # CONFIG_NET_VENDOR_CISCO is not set -CONFIG_NET_VENDOR_CORTINA=y -# CONFIG_GEMINI_ETHERNET is not set -CONFIG_NET_VENDOR_DAVICOM=y -# CONFIG_DM9051 is not set -# CONFIG_DNET is not set # CONFIG_NET_VENDOR_DEC is not set # CONFIG_NET_VENDOR_DLINK is not set # CONFIG_NET_VENDOR_EMULEX is not set -CONFIG_NET_VENDOR_ENGLEDER=y -# CONFIG_TSNEP is not set # CONFIG_NET_VENDOR_EZCHIP is not set -CONFIG_NET_VENDOR_FUNGIBLE=y -# CONFIG_FUN_ETH is not set -CONFIG_NET_VENDOR_GOOGLE=y -# CONFIG_GVE is not set # CONFIG_NET_VENDOR_HISILICON is not set -CONFIG_NET_VENDOR_HUAWEI=y -# CONFIG_HINIC is not set -CONFIG_NET_VENDOR_I825XX=y -CONFIG_NET_VENDOR_INTEL=y CONFIG_E100=y CONFIG_E1000=y CONFIG_E1000E=y CONFIG_IGB=y -CONFIG_IGB_HWMON=y -# CONFIG_IGBVF is not set CONFIG_IXGBE=y -CONFIG_IXGBE_HWMON=y -# CONFIG_IXGBEVF is not set -# CONFIG_I40E is not set -# CONFIG_I40EVF is not set -# CONFIG_ICE is not set -# CONFIG_FM10K is not set -# CONFIG_IGC is not set -# CONFIG_JME is not set -CONFIG_NET_VENDOR_ADI=y -CONFIG_NET_VENDOR_LITEX=y -# CONFIG_LITEX_LITEETH is not set # CONFIG_NET_VENDOR_MARVELL is not set # CONFIG_NET_VENDOR_MELLANOX is not set # CONFIG_NET_VENDOR_MICREL is not set # CONFIG_NET_VENDOR_MICROCHIP is not set -CONFIG_NET_VENDOR_MICROSEMI=y -CONFIG_NET_VENDOR_MICROSOFT=y # CONFIG_NET_VENDOR_MYRI is not set -# CONFIG_FEALNX is not set -CONFIG_NET_VENDOR_NI=y -# CONFIG_NI_XGE_MANAGEMENT_ENET is not set # CONFIG_NET_VENDOR_NATSEMI is not set -CONFIG_NET_VENDOR_NETERION=y -# CONFIG_S2IO is not set -CONFIG_NET_VENDOR_NETRONOME=y -# CONFIG_NFP is not set # CONFIG_NET_VENDOR_NVIDIA is not set # CONFIG_NET_VENDOR_OKI is not set -# CONFIG_ETHOC is not set -CONFIG_NET_VENDOR_PACKET_ENGINES=y -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -CONFIG_NET_VENDOR_PENSANDO=y -# CONFIG_IONIC is not set # CONFIG_NET_VENDOR_QLOGIC is not set # CONFIG_NET_VENDOR_BROCADE is not set # CONFIG_NET_VENDOR_QUALCOMM is not set @@ -2291,384 +436,62 @@ CONFIG_NET_VENDOR_PENSANDO=y # CONFIG_NET_VENDOR_SEEQ is not set # CONFIG_NET_VENDOR_SILAN is not set # CONFIG_NET_VENDOR_SIS is not set -CONFIG_NET_VENDOR_SOLARFLARE=y -# CONFIG_SFC is not set -# CONFIG_SFC_FALCON is not set -# CONFIG_SFC_SIENA is not set # CONFIG_NET_VENDOR_SMSC is not set -CONFIG_NET_VENDOR_SOCIONEXT=y -CONFIG_NET_VENDOR_STMICRO=y CONFIG_STMMAC_ETH=y -# CONFIG_STMMAC_SELFTESTS is not set -CONFIG_STMMAC_PLATFORM=y -# CONFIG_DWMAC_DWC_QOS_ETH is not set -CONFIG_DWMAC_GENERIC=y -CONFIG_DWMAC_ROCKCHIP=y -# CONFIG_DWMAC_INTEL_PLAT is not set -# CONFIG_DWMAC_LOONGSON is not set -# CONFIG_STMMAC_PCI is not set # CONFIG_NET_VENDOR_SUN is not set # CONFIG_NET_VENDOR_SYNOPSYS is not set # CONFIG_NET_VENDOR_TEHUTI is not set # CONFIG_NET_VENDOR_TI is not set -CONFIG_NET_VENDOR_VERTEXCOM=y -# CONFIG_MSE102X is not set # CONFIG_NET_VENDOR_VIA is not set -CONFIG_NET_VENDOR_WANGXUN=y -# CONFIG_NGBE is not set -# CONFIG_TXGBE is not set # CONFIG_NET_VENDOR_WIZNET is not set -CONFIG_NET_VENDOR_XILINX=y -# CONFIG_XILINX_EMACLITE is not set -# CONFIG_XILINX_AXI_EMAC is not set -# CONFIG_XILINX_LL_TEMAC is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -CONFIG_PHYLINK=y -CONFIG_PHYLIB=y -CONFIG_SWPHY=y -# CONFIG_LED_TRIGGER_PHY is not set -CONFIG_PHYLIB_LEDS=y -CONFIG_FIXED_PHY=y -# CONFIG_SFP is not set - -# -# MII PHY device drivers -# -# CONFIG_AMD_PHY is not set -# CONFIG_ADIN_PHY is not set -# CONFIG_ADIN1100_PHY is not set -# CONFIG_AQUANTIA_PHY is not set -CONFIG_AX88796B_PHY=y -# CONFIG_BROADCOM_PHY is not set -# CONFIG_BCM54140_PHY is not set -# CONFIG_BCM7XXX_PHY is not set -# CONFIG_BCM84881_PHY is not set -# CONFIG_BCM87XX_PHY is not set -# CONFIG_CICADA_PHY is not set -# CONFIG_CORTINA_PHY is not set -# CONFIG_DAVICOM_PHY is not set -# CONFIG_ICPLUS_PHY is not set -# CONFIG_LXT_PHY is not set -# CONFIG_INTEL_XWAY_PHY is not set -# CONFIG_LSI_ET1011C_PHY is not set -# CONFIG_MARVELL_PHY is not set -# CONFIG_MARVELL_10G_PHY is not set -# CONFIG_MARVELL_88Q2XXX_PHY is not set -# CONFIG_MARVELL_88X2222_PHY is not set -# CONFIG_MAXLINEAR_GPHY is not set -# CONFIG_MEDIATEK_GE_PHY is not set -# CONFIG_MICREL_PHY is not set -# CONFIG_MICROCHIP_T1S_PHY is not set -# CONFIG_MICROCHIP_PHY is not set -# CONFIG_MICROCHIP_T1_PHY is not set -# CONFIG_MICROSEMI_PHY is not set -# CONFIG_MOTORCOMM_PHY is not set -# CONFIG_NATIONAL_PHY is not set -# CONFIG_NXP_CBTX_PHY is not set -# CONFIG_NXP_C45_TJA11XX_PHY is not set -# CONFIG_NXP_TJA11XX_PHY is not set -# CONFIG_NCN26000_PHY is not set -# CONFIG_AT803X_PHY is not set -# CONFIG_QSEMI_PHY is not set -# CONFIG_REALTEK_PHY is not set -# CONFIG_RENESAS_PHY is not set CONFIG_ROCKCHIP_PHY=y -# CONFIG_SMSC_PHY is not set -# CONFIG_STE10XP is not set -# CONFIG_TERANETICS_PHY is not set -# CONFIG_DP83822_PHY is not set -# CONFIG_DP83TC811_PHY is not set -# CONFIG_DP83848_PHY is not set -# CONFIG_DP83867_PHY is not set -# CONFIG_DP83869_PHY is not set -# CONFIG_DP83TD510_PHY is not set -# CONFIG_VITESSE_PHY is not set -# CONFIG_XILINX_GMII2RGMII is not set -# CONFIG_MICREL_KS8995MA is not set -# CONFIG_PSE_CONTROLLER is not set -CONFIG_CAN_DEV=y -# CONFIG_CAN_VCAN is not set -# CONFIG_CAN_VXCAN is not set -CONFIG_CAN_NETLINK=y -CONFIG_CAN_CALC_BITTIMING=y -# CONFIG_CAN_CAN327 is not set -# CONFIG_CAN_FLEXCAN is not set -# CONFIG_CAN_GRCAN is not set -# CONFIG_CAN_KVASER_PCIEFD is not set -# CONFIG_CAN_SLCAN is not set -# CONFIG_CAN_XILINXCAN is not set -# CONFIG_CAN_C_CAN is not set -# CONFIG_CAN_CC770 is not set -# CONFIG_CAN_CTUCANFD_PCI is not set -# CONFIG_CAN_CTUCANFD_PLATFORM is not set -# CONFIG_CAN_IFI_CANFD is not set -# CONFIG_CAN_M_CAN is not set -# CONFIG_CAN_PEAK_PCIEFD is not set CONFIG_CAN_SJA1000=y -# CONFIG_CAN_EMS_PCI is not set -# CONFIG_CAN_F81601 is not set -# CONFIG_CAN_KVASER_PCI is not set -# CONFIG_CAN_PEAK_PCI is not set CONFIG_CAN_PLX_PCI=y -# CONFIG_CAN_SJA1000_ISA is not set -# CONFIG_CAN_SJA1000_PLATFORM is not set -# CONFIG_CAN_SOFTING is not set - -# -# CAN SPI interfaces -# -# CONFIG_CAN_HI311X is not set -# CONFIG_CAN_MCP251X is not set -# CONFIG_CAN_MCP251XFD is not set -# end of CAN SPI interfaces - -# -# CAN USB interfaces -# -# CONFIG_CAN_8DEV_USB is not set -# CONFIG_CAN_EMS_USB is not set -# CONFIG_CAN_ESD_USB is not set -# CONFIG_CAN_ETAS_ES58X is not set -# CONFIG_CAN_F81604 is not set -# CONFIG_CAN_GS_USB is not set -# CONFIG_CAN_KVASER_USB is not set -# CONFIG_CAN_MCBA_USB is not set -# CONFIG_CAN_PEAK_USB is not set -# CONFIG_CAN_UCAN is not set -# end of CAN USB interfaces - -# CONFIG_CAN_DEBUG_DEVICES is not set -CONFIG_MDIO_DEVICE=y -CONFIG_MDIO_BUS=y -CONFIG_FWNODE_MDIO=y -CONFIG_OF_MDIO=y -CONFIG_MDIO_DEVRES=y -# CONFIG_MDIO_BITBANG is not set -# CONFIG_MDIO_BCM_UNIMAC is not set -# CONFIG_MDIO_HISI_FEMAC is not set -# CONFIG_MDIO_MVUSB is not set -# CONFIG_MDIO_MSCC_MIIM is not set -# CONFIG_MDIO_OCTEON is not set -# CONFIG_MDIO_IPQ4019 is not set -# CONFIG_MDIO_IPQ8064 is not set -# CONFIG_MDIO_THUNDER is not set - -# -# MDIO Multiplexers -# -# CONFIG_MDIO_BUS_MUX_GPIO is not set -# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set -# CONFIG_MDIO_BUS_MUX_MMIOREG is not set - -# -# PCS device drivers -# -CONFIG_PCS_XPCS=y -# end of PCS device drivers - CONFIG_PPP=m CONFIG_PPP_BSDCOMP=m CONFIG_PPP_DEFLATE=m -# CONFIG_PPP_FILTER is not set -# CONFIG_PPP_MPPE is not set -# CONFIG_PPP_MULTILINK is not set CONFIG_PPPOE=m -# CONFIG_PPPOE_HASH_BITS_1 is not set -# CONFIG_PPPOE_HASH_BITS_2 is not set -CONFIG_PPPOE_HASH_BITS_4=y -# CONFIG_PPPOE_HASH_BITS_8 is not set -CONFIG_PPPOE_HASH_BITS=4 -# CONFIG_PPTP is not set CONFIG_PPP_ASYNC=m CONFIG_PPP_SYNC_TTY=m -# CONFIG_SLIP is not set -CONFIG_SLHC=m -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=y CONFIG_USB_RTL8152=y -# CONFIG_USB_LAN78XX is not set CONFIG_USB_USBNET=y -CONFIG_USB_NET_AX8817X=y -CONFIG_USB_NET_AX88179_178A=y -CONFIG_USB_NET_CDCETHER=y -# CONFIG_USB_NET_CDC_EEM is not set -CONFIG_USB_NET_CDC_NCM=y -# CONFIG_USB_NET_HUAWEI_CDC_NCM is not set CONFIG_USB_NET_CDC_MBIM=y -# CONFIG_USB_NET_DM9601 is not set -# CONFIG_USB_NET_SR9700 is not set -# CONFIG_USB_NET_SR9800 is not set -# CONFIG_USB_NET_SMSC75XX is not set -# CONFIG_USB_NET_SMSC95XX is not set -# CONFIG_USB_NET_GL620A is not set # CONFIG_USB_NET_NET1080 is not set -# CONFIG_USB_NET_PLUSB is not set -# CONFIG_USB_NET_MCS7830 is not set CONFIG_USB_NET_RNDIS_HOST=y # CONFIG_USB_NET_CDC_SUBSET is not set # CONFIG_USB_NET_ZAURUS is not set -# CONFIG_USB_NET_CX82310_ETH is not set -# CONFIG_USB_NET_KALMIA is not set CONFIG_USB_NET_QMI_WWAN=y -# CONFIG_USB_HSO is not set -# CONFIG_USB_NET_INT51X1 is not set -# CONFIG_USB_IPHETH is not set -# CONFIG_USB_SIERRA_NET is not set -# CONFIG_USB_VL600 is not set -# CONFIG_USB_NET_CH9200 is not set -# CONFIG_USB_NET_AQC111 is not set -CONFIG_USB_RTL8153_ECM=y -CONFIG_WLAN=y -CONFIG_WLAN_VENDOR_ADMTEK=y -# CONFIG_ADM8211 is not set -CONFIG_ATH_COMMON=m -CONFIG_WLAN_VENDOR_ATH=y -# CONFIG_ATH_DEBUG is not set CONFIG_ATH5K=m -# CONFIG_ATH5K_DEBUG is not set -CONFIG_ATH5K_PCI=y -CONFIG_ATH9K_HW=m -CONFIG_ATH9K_COMMON=m -CONFIG_ATH9K_BTCOEX_SUPPORT=y CONFIG_ATH9K=m -CONFIG_ATH9K_PCI=y -# CONFIG_ATH9K_AHB is not set -# CONFIG_ATH9K_DEBUGFS is not set -# CONFIG_ATH9K_DYNACK is not set -# CONFIG_ATH9K_WOW is not set -CONFIG_ATH9K_RFKILL=y -# CONFIG_ATH9K_CHANNEL_CONTEXT is not set -CONFIG_ATH9K_PCOEM=y -# CONFIG_ATH9K_PCI_NO_EEPROM is not set -# CONFIG_ATH9K_HTC is not set -# CONFIG_ATH9K_HWRNG is not set -# CONFIG_CARL9170 is not set CONFIG_ATH6KL=m -# CONFIG_ATH6KL_SDIO is not set CONFIG_ATH6KL_USB=m -# CONFIG_ATH6KL_DEBUG is not set CONFIG_AR5523=m -# CONFIG_WIL6210 is not set CONFIG_ATH10K=m -CONFIG_ATH10K_CE=y -# CONFIG_ATH10K_PCI is not set -# CONFIG_ATH10K_SDIO is not set -# CONFIG_ATH10K_USB is not set -# CONFIG_ATH10K_DEBUG is not set -# CONFIG_ATH10K_DEBUGFS is not set CONFIG_WCN36XX=m -# CONFIG_WCN36XX_DEBUGFS is not set -CONFIG_WLAN_VENDOR_ATMEL=y -# CONFIG_ATMEL is not set CONFIG_AT76C50X_USB=m -CONFIG_WLAN_VENDOR_BROADCOM=y CONFIG_B43=m -CONFIG_B43_BCMA=y -CONFIG_B43_SSB=y -CONFIG_B43_BUSES_BCMA_AND_SSB=y -# CONFIG_B43_BUSES_BCMA is not set -# CONFIG_B43_BUSES_SSB is not set -CONFIG_B43_PCI_AUTOSELECT=y -CONFIG_B43_PCICORE_AUTOSELECT=y -# CONFIG_B43_SDIO is not set -CONFIG_B43_BCMA_PIO=y -CONFIG_B43_PIO=y -CONFIG_B43_PHY_G=y -CONFIG_B43_PHY_N=y -CONFIG_B43_PHY_LP=y -CONFIG_B43_PHY_HT=y -CONFIG_B43_LEDS=y -CONFIG_B43_HWRNG=y -# CONFIG_B43_DEBUG is not set -# CONFIG_B43LEGACY is not set -CONFIG_BRCMUTIL=m -# CONFIG_BRCMSMAC is not set CONFIG_BRCMFMAC=m -CONFIG_BRCMFMAC_PROTO_BCDC=y -CONFIG_BRCMFMAC_PROTO_MSGBUF=y # CONFIG_BRCMFMAC_SDIO is not set CONFIG_BRCMFMAC_USB=y CONFIG_BRCMFMAC_PCIE=y -# CONFIG_BRCM_TRACING is not set -# CONFIG_BRCMDBG is not set -CONFIG_WLAN_VENDOR_CISCO=y -# CONFIG_AIRO is not set -CONFIG_WLAN_VENDOR_INTEL=y -# CONFIG_IPW2100 is not set -# CONFIG_IPW2200 is not set -# CONFIG_IWL4965 is not set -# CONFIG_IWL3945 is not set -# CONFIG_IWLWIFI is not set -CONFIG_WLAN_VENDOR_INTERSIL=y -# CONFIG_HOSTAP is not set -# CONFIG_HERMES is not set -# CONFIG_P54_COMMON is not set -CONFIG_WLAN_VENDOR_MARVELL=y CONFIG_LIBERTAS=m CONFIG_LIBERTAS_USB=m -# CONFIG_LIBERTAS_SDIO is not set -# CONFIG_LIBERTAS_SPI is not set -# CONFIG_LIBERTAS_DEBUG is not set -# CONFIG_LIBERTAS_MESH is not set CONFIG_LIBERTAS_THINFIRM=m -# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set -# CONFIG_LIBERTAS_THINFIRM_USB is not set CONFIG_MWIFIEX=m CONFIG_MWIFIEX_SDIO=m -# CONFIG_MWIFIEX_PCIE is not set CONFIG_MWIFIEX_USB=m -# CONFIG_MWL8K is not set -CONFIG_WLAN_VENDOR_MEDIATEK=y CONFIG_MT7601U=m -# CONFIG_MT76x0U is not set -# CONFIG_MT76x0E is not set -# CONFIG_MT76x2E is not set -# CONFIG_MT76x2U is not set -# CONFIG_MT7603E is not set -# CONFIG_MT7615E is not set -# CONFIG_MT7663U is not set -# CONFIG_MT7663S is not set -# CONFIG_MT7915E is not set -# CONFIG_MT7921E is not set -# CONFIG_MT7921S is not set -# CONFIG_MT7921U is not set -# CONFIG_MT7996E is not set -CONFIG_WLAN_VENDOR_MICROCHIP=y -# CONFIG_WILC1000_SDIO is not set -# CONFIG_WILC1000_SPI is not set -CONFIG_WLAN_VENDOR_PURELIFI=y -# CONFIG_PLFXLC is not set -CONFIG_WLAN_VENDOR_RALINK=y CONFIG_RT2X00=m -# CONFIG_RT2400PCI is not set -# CONFIG_RT2500PCI is not set -# CONFIG_RT61PCI is not set -# CONFIG_RT2800PCI is not set CONFIG_RT2500USB=m CONFIG_RT73USB=m CONFIG_RT2800USB=m -CONFIG_RT2800USB_RT33XX=y -CONFIG_RT2800USB_RT35XX=y CONFIG_RT2800USB_RT3573=y CONFIG_RT2800USB_RT53XX=y CONFIG_RT2800USB_RT55XX=y CONFIG_RT2800USB_UNKNOWN=y -CONFIG_RT2800_LIB=m -CONFIG_RT2X00_LIB_USB=m -CONFIG_RT2X00_LIB=m -CONFIG_RT2X00_LIB_FIRMWARE=y -CONFIG_RT2X00_LIB_CRYPTO=y -CONFIG_RT2X00_LIB_LEDS=y -# CONFIG_RT2X00_DEBUG is not set -CONFIG_WLAN_VENDOR_REALTEK=y CONFIG_RTL8180=m CONFIG_RTL8187=m -CONFIG_RTL8187_LEDS=y -CONFIG_RTL_CARDS=m CONFIG_RTL8192CE=m CONFIG_RTL8192SE=m CONFIG_RTL8192DE=m @@ -2677,1312 +500,136 @@ CONFIG_RTL8723BE=m CONFIG_RTL8188EE=m CONFIG_RTL8192EE=m CONFIG_RTL8821AE=m -# CONFIG_RTL8192CU is not set -CONFIG_RTLWIFI=m -CONFIG_RTLWIFI_PCI=m -CONFIG_RTLWIFI_DEBUG=y -CONFIG_RTL8192C_COMMON=m -CONFIG_RTL8723_COMMON=m -CONFIG_RTLBTCOEXIST=m CONFIG_RTL8XXXU=m CONFIG_RTL8XXXU_UNTESTED=y CONFIG_RTW88=m -CONFIG_RTW88_CORE=m -CONFIG_RTW88_PCI=m -CONFIG_RTW88_SDIO=m -CONFIG_RTW88_USB=m -CONFIG_RTW88_8822B=m -CONFIG_RTW88_8822C=m -CONFIG_RTW88_8723D=m -CONFIG_RTW88_8821C=m CONFIG_RTW88_8822BE=m -# CONFIG_RTW88_8822BS is not set CONFIG_RTW88_8822BU=m CONFIG_RTW88_8822CE=m -# CONFIG_RTW88_8822CS is not set CONFIG_RTW88_8822CU=m CONFIG_RTW88_8723DE=m CONFIG_RTW88_8723DS=m CONFIG_RTW88_8723DU=m CONFIG_RTW88_8821CE=m CONFIG_RTW88_8821CS=m -# CONFIG_RTW88_8821CU is not set -# CONFIG_RTW88_DEBUG is not set -# CONFIG_RTW88_DEBUGFS is not set CONFIG_RTW89=m -CONFIG_RTW89_CORE=m -CONFIG_RTW89_PCI=m -CONFIG_RTW89_8852A=m -CONFIG_RTW89_8852C=m -# CONFIG_RTW89_8851BE is not set CONFIG_RTW89_8852AE=m -# CONFIG_RTW89_8852BE is not set CONFIG_RTW89_8852CE=m -# CONFIG_RTW89_DEBUGMSG is not set -# CONFIG_RTW89_DEBUGFS is not set -CONFIG_WLAN_VENDOR_RSI=y -# CONFIG_RSI_91X is not set -CONFIG_WLAN_VENDOR_SILABS=y -# CONFIG_WFX is not set -CONFIG_WLAN_VENDOR_ST=y -# CONFIG_CW1200 is not set -CONFIG_WLAN_VENDOR_TI=y -# CONFIG_WL1251 is not set -# CONFIG_WL12XX is not set -# CONFIG_WL18XX is not set -# CONFIG_WLCORE is not set -CONFIG_WLAN_VENDOR_ZYDAS=y -# CONFIG_USB_ZD1201 is not set CONFIG_ZD1211RW=m -# CONFIG_ZD1211RW_DEBUG is not set -CONFIG_WLAN_VENDOR_QUANTENNA=y -# CONFIG_QTNFMAC_PCIE is not set -CONFIG_USB_NET_RNDIS_WLAN=m -# CONFIG_MAC80211_HWSIM is not set -# CONFIG_VIRT_WIFI is not set -# CONFIG_WAN is not set - -# -# Wireless WAN -# -# CONFIG_WWAN is not set -# end of Wireless WAN - -# CONFIG_VMXNET3 is not set -# CONFIG_NETDEVSIM is not set -# CONFIG_NET_FAILOVER is not set CONFIG_ISDN=y -CONFIG_ISDN_CAPI=y -# CONFIG_MISDN is not set - -# -# Input device support -# -CONFIG_INPUT=y -CONFIG_INPUT_LEDS=y -CONFIG_INPUT_FF_MEMLESS=y -# CONFIG_INPUT_SPARSEKMAP is not set CONFIG_INPUT_MATRIXKMAP=y -CONFIG_INPUT_VIVALDIFMAP=y - -# -# Userland interfaces -# -# CONFIG_INPUT_MOUSEDEV is not set CONFIG_INPUT_JOYDEV=y CONFIG_INPUT_EVDEV=y -# CONFIG_INPUT_EVBUG is not set - -# -# Input Device Drivers -# -CONFIG_INPUT_KEYBOARD=y CONFIG_KEYBOARD_ADC=y -# CONFIG_KEYBOARD_ADP5588 is not set -# CONFIG_KEYBOARD_ADP5589 is not set -CONFIG_KEYBOARD_ATKBD=y -# CONFIG_KEYBOARD_QT1050 is not set -# CONFIG_KEYBOARD_QT1070 is not set -# CONFIG_KEYBOARD_QT2160 is not set -# CONFIG_KEYBOARD_DLINK_DIR685 is not set -# CONFIG_KEYBOARD_LKKBD is not set CONFIG_KEYBOARD_GPIO=y CONFIG_KEYBOARD_GPIO_POLLED=y -# CONFIG_KEYBOARD_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_PINEPHONE 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_TM2_TOUCHKEY is not set -# CONFIG_KEYBOARD_XTKBD is not set -# CONFIG_KEYBOARD_CAP11XX is not set -# CONFIG_KEYBOARD_BCM is not set -# CONFIG_KEYBOARD_CYPRESS_SF is not set -CONFIG_INPUT_MOUSE=y # CONFIG_MOUSE_PS2 is not set -# CONFIG_MOUSE_SERIAL is not set -# CONFIG_MOUSE_APPLETOUCH is not set -# CONFIG_MOUSE_BCM5974 is not set -# CONFIG_MOUSE_CYAPA is not set -# CONFIG_MOUSE_ELAN_I2C is not set -# CONFIG_MOUSE_VSXXXAA is not set -# CONFIG_MOUSE_GPIO is not set -# CONFIG_MOUSE_SYNAPTICS_I2C is not set -# CONFIG_MOUSE_SYNAPTICS_USB is not set CONFIG_INPUT_JOYSTICK=y -# CONFIG_JOYSTICK_ANALOG is not set -# CONFIG_JOYSTICK_A3D is not set CONFIG_JOYSTICK_ADC=y -# CONFIG_JOYSTICK_ADI is not set -# CONFIG_JOYSTICK_COBRA is not set -# CONFIG_JOYSTICK_GF2K is not set -# CONFIG_JOYSTICK_GRIP is not set -# CONFIG_JOYSTICK_GRIP_MP is not set -# CONFIG_JOYSTICK_GUILLEMOT is not set -# CONFIG_JOYSTICK_INTERACT is not set -# CONFIG_JOYSTICK_SIDEWINDER is not set -# CONFIG_JOYSTICK_TMDC is not set -# CONFIG_JOYSTICK_IFORCE is not set -# CONFIG_JOYSTICK_WARRIOR is not set -# CONFIG_JOYSTICK_MAGELLAN is not set -# CONFIG_JOYSTICK_SPACEORB is not set -# CONFIG_JOYSTICK_SPACEBALL is not set -# CONFIG_JOYSTICK_STINGER is not set -# CONFIG_JOYSTICK_TWIDJOY is not set -# CONFIG_JOYSTICK_ZHENHUA is not set -# CONFIG_JOYSTICK_AS5011 is not set -# CONFIG_JOYSTICK_JOYDUMP is not set CONFIG_JOYSTICK_XPAD=m CONFIG_JOYSTICK_XPAD_FF=y -# CONFIG_JOYSTICK_XPAD_LEDS is not set -# CONFIG_JOYSTICK_PSXPAD_SPI is not set -# CONFIG_JOYSTICK_PXRC is not set -# CONFIG_JOYSTICK_QWIIC is not set -# CONFIG_JOYSTICK_FSIA6B is not set -# CONFIG_JOYSTICK_SENSEHAT is not set CONFIG_INPUT_TABLET=y -# CONFIG_TABLET_USB_ACECAD is not set -# CONFIG_TABLET_USB_AIPTEK is not set -# CONFIG_TABLET_USB_HANWANG is not set -# CONFIG_TABLET_USB_KBTAB is not set -# CONFIG_TABLET_USB_PEGASUS is not set -# CONFIG_TABLET_SERIAL_WACOM4 is not set CONFIG_INPUT_TOUCHSCREEN=y -# CONFIG_TOUCHSCREEN_ADS7846 is not set -# CONFIG_TOUCHSCREEN_AD7877 is not set -# CONFIG_TOUCHSCREEN_AD7879 is not set -# CONFIG_TOUCHSCREEN_ADC is not set -# CONFIG_TOUCHSCREEN_AR1021_I2C is not set CONFIG_TOUCHSCREEN_ATMEL_MXT=y -# CONFIG_TOUCHSCREEN_ATMEL_MXT_T37 is not set -# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set -# CONFIG_TOUCHSCREEN_BU21013 is not set -# CONFIG_TOUCHSCREEN_BU21029 is not set -# CONFIG_TOUCHSCREEN_CHIPONE_ICN8318 is not set -# CONFIG_TOUCHSCREEN_CY8CTMA140 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_CYTTSP5 is not set -# CONFIG_TOUCHSCREEN_DYNAPRO is not set -# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set -# CONFIG_TOUCHSCREEN_EETI is not set -# CONFIG_TOUCHSCREEN_EGALAX is not set -# CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set -# CONFIG_TOUCHSCREEN_EXC3000 is not set -# CONFIG_TOUCHSCREEN_FUJITSU is not set CONFIG_TOUCHSCREEN_GOODIX=y -# CONFIG_TOUCHSCREEN_HIDEEP is not set -# CONFIG_TOUCHSCREEN_HYCON_HY46XX is not set CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=y -# CONFIG_TOUCHSCREEN_ILI210X is not set -# CONFIG_TOUCHSCREEN_ILITEK is not set -# CONFIG_TOUCHSCREEN_S6SY761 is not set -# CONFIG_TOUCHSCREEN_GUNZE is not set -# CONFIG_TOUCHSCREEN_EKTF2127 is not set -# CONFIG_TOUCHSCREEN_ELAN is not set -# CONFIG_TOUCHSCREEN_ELO is not set -# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set -# CONFIG_TOUCHSCREEN_WACOM_I2C is not set -# CONFIG_TOUCHSCREEN_MAX11801 is not set -# CONFIG_TOUCHSCREEN_MCS5000 is not set -# CONFIG_TOUCHSCREEN_MMS114 is not set -# CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set -# CONFIG_TOUCHSCREEN_MSG2638 is not set -# CONFIG_TOUCHSCREEN_MTOUCH is not set -# CONFIG_TOUCHSCREEN_NOVATEK_NVT_TS is not set -# CONFIG_TOUCHSCREEN_IMAGIS is not set -# CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set -# CONFIG_TOUCHSCREEN_INEXIO is not set -# CONFIG_TOUCHSCREEN_PENMOUNT is not set -# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set -# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set -# CONFIG_TOUCHSCREEN_TOUCHWIN is not set -# CONFIG_TOUCHSCREEN_PIXCIR is not set -# CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set CONFIG_TOUCHSCREEN_USB_COMPOSITE=y -CONFIG_TOUCHSCREEN_USB_EGALAX=y -CONFIG_TOUCHSCREEN_USB_PANJIT=y -CONFIG_TOUCHSCREEN_USB_3M=y -CONFIG_TOUCHSCREEN_USB_ITM=y -CONFIG_TOUCHSCREEN_USB_ETURBO=y -CONFIG_TOUCHSCREEN_USB_GUNZE=y -CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y -CONFIG_TOUCHSCREEN_USB_IRTOUCH=y -CONFIG_TOUCHSCREEN_USB_IDEALTEK=y -CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y -CONFIG_TOUCHSCREEN_USB_GOTOP=y -CONFIG_TOUCHSCREEN_USB_JASTEC=y -CONFIG_TOUCHSCREEN_USB_ELO=y -CONFIG_TOUCHSCREEN_USB_E2I=y -CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y -CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y -CONFIG_TOUCHSCREEN_USB_NEXIO=y -CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y -# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set -# CONFIG_TOUCHSCREEN_TSC_SERIO is not set -# CONFIG_TOUCHSCREEN_TSC2004 is not set -# CONFIG_TOUCHSCREEN_TSC2005 is not set -# CONFIG_TOUCHSCREEN_TSC2007 is not set -# CONFIG_TOUCHSCREEN_RM_TS is not set -# CONFIG_TOUCHSCREEN_SILEAD is not set -# CONFIG_TOUCHSCREEN_SIS_I2C is not set -# CONFIG_TOUCHSCREEN_ST1232 is not set -# CONFIG_TOUCHSCREEN_STMFTS is not set -# CONFIG_TOUCHSCREEN_SUR40 is not set -# CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set -# CONFIG_TOUCHSCREEN_SX8654 is not set -# CONFIG_TOUCHSCREEN_TPS6507X is not set -# CONFIG_TOUCHSCREEN_ZET6223 is not set -# CONFIG_TOUCHSCREEN_ZFORCE is not set -# CONFIG_TOUCHSCREEN_COLIBRI_VF50 is not set -# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set -# CONFIG_TOUCHSCREEN_IQS5XX is not set -# CONFIG_TOUCHSCREEN_IQS7211 is not set -# CONFIG_TOUCHSCREEN_ZINITIX is not set -# CONFIG_TOUCHSCREEN_HIMAX_HX83112B is not set CONFIG_INPUT_MISC=y -# CONFIG_INPUT_AD714X is not set -# CONFIG_INPUT_ATMEL_CAPTOUCH is not set -# CONFIG_INPUT_BMA150 is not set -# CONFIG_INPUT_E3X0_BUTTON is not set -# CONFIG_INPUT_MMA8450 is not set -# CONFIG_INPUT_GPIO_BEEPER is not set -# CONFIG_INPUT_GPIO_DECODER is not set -# CONFIG_INPUT_GPIO_VIBRA is not set -# CONFIG_INPUT_ATI_REMOTE2 is not set -# CONFIG_INPUT_KEYSPAN_REMOTE is not set -# CONFIG_INPUT_KXTJ9 is not set -# CONFIG_INPUT_POWERMATE is not set -# CONFIG_INPUT_YEALINK is not set -# CONFIG_INPUT_CM109 is not set -# CONFIG_INPUT_REGULATOR_HAPTIC is not set CONFIG_INPUT_UINPUT=y -# CONFIG_INPUT_PCF8574 is not set -# CONFIG_INPUT_PWM_BEEPER is not set CONFIG_INPUT_PWM_VIBRA=y CONFIG_INPUT_RK805_PWRKEY=y -# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set -# CONFIG_INPUT_DA7280_HAPTICS is not set -# CONFIG_INPUT_ADXL34X is not set -# CONFIG_INPUT_IMS_PCU is not set -# CONFIG_INPUT_IQS269A is not set -# CONFIG_INPUT_IQS626A is not set -# CONFIG_INPUT_IQS7222 is not set -# CONFIG_INPUT_CMA3000 is not set -# CONFIG_INPUT_DRV260X_HAPTICS is not set -# CONFIG_INPUT_DRV2665_HAPTICS is not set -# CONFIG_INPUT_DRV2667_HAPTICS is not set -CONFIG_RMI4_CORE=y -# CONFIG_RMI4_I2C is not set -# CONFIG_RMI4_SPI is not set -# CONFIG_RMI4_SMB is not set -CONFIG_RMI4_F03=y -CONFIG_RMI4_F03_SERIO=y -CONFIG_RMI4_2D_SENSOR=y -CONFIG_RMI4_F11=y -CONFIG_RMI4_F12=y -CONFIG_RMI4_F30=y -# CONFIG_RMI4_F34 is not set -# CONFIG_RMI4_F3A is not set -# CONFIG_RMI4_F54 is not set -# CONFIG_RMI4_F55 is not set - -# -# Hardware I/O ports -# -CONFIG_SERIO=y CONFIG_SERIO_SERPORT=m -# CONFIG_SERIO_AMBAKMI is not set -# CONFIG_SERIO_PCIPS2 is not set -CONFIG_SERIO_LIBPS2=y -# CONFIG_SERIO_RAW is not set -# CONFIG_SERIO_ALTERA_PS2 is not set -# CONFIG_SERIO_PS2MULT is not set -# CONFIG_SERIO_ARC_PS2 is not set -# CONFIG_SERIO_APBPS2 is not set -# CONFIG_SERIO_GPIO_PS2 is not set -# CONFIG_USERIO is not set CONFIG_GAMEPORT=y -# CONFIG_GAMEPORT_EMU10K1 is not set -# CONFIG_GAMEPORT_FM801 is not set -# end of Hardware I/O ports -# end of Input device support - -# -# Character devices -# -CONFIG_TTY=y -CONFIG_VT=y -CONFIG_CONSOLE_TRANSLATIONS=y -CONFIG_VT_CONSOLE=y -CONFIG_VT_CONSOLE_SLEEP=y -CONFIG_HW_CONSOLE=y -CONFIG_VT_HW_CONSOLE_BINDING=y -CONFIG_UNIX98_PTYS=y # CONFIG_LEGACY_PTYS is not set -CONFIG_LEGACY_TIOCSTI=y -CONFIG_LDISC_AUTOLOAD=y - -# -# Serial drivers -# -CONFIG_SERIAL_EARLYCON=y CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y -CONFIG_SERIAL_8250_16550A_VARIANTS=y -# CONFIG_SERIAL_8250_FINTEK is not set CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_DMA=y # CONFIG_SERIAL_8250_PCI is not set CONFIG_SERIAL_8250_NR_UARTS=5 CONFIG_SERIAL_8250_RUNTIME_UARTS=5 CONFIG_SERIAL_8250_EXTENDED=y -# CONFIG_SERIAL_8250_MANY_PORTS is not set -# CONFIG_SERIAL_8250_PCI1XXXX is not set CONFIG_SERIAL_8250_SHARE_IRQ=y -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_RSA is not set -CONFIG_SERIAL_8250_DWLIB=y -CONFIG_SERIAL_8250_FSL=y CONFIG_SERIAL_8250_DW=y -# CONFIG_SERIAL_8250_RT288X is not set -CONFIG_SERIAL_8250_PERICOM=y CONFIG_SERIAL_OF_PLATFORM=y - -# -# Non-8250 serial port support -# -# CONFIG_SERIAL_AMBA_PL010 is not set CONFIG_SERIAL_AMBA_PL011=y CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -# CONFIG_SERIAL_EARLYCON_SEMIHOST is not set -# CONFIG_SERIAL_MAX3100 is not set -# CONFIG_SERIAL_MAX310X is not set -# CONFIG_SERIAL_UARTLITE is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -# CONFIG_SERIAL_JSM is not set -# CONFIG_SERIAL_SIFIVE is not set -# 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_XILINX_PS_UART is not set -# CONFIG_SERIAL_ARC is not set -# CONFIG_SERIAL_RP2 is not set -# CONFIG_SERIAL_FSL_LPUART is not set -# CONFIG_SERIAL_FSL_LINFLEXUART is not set -# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set -# CONFIG_SERIAL_SPRD is not set -# end of Serial drivers - -CONFIG_SERIAL_MCTRL_GPIO=y -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_N_GSM is not set -# CONFIG_NOZOMI is not set -# CONFIG_NULL_TTY is not set -# CONFIG_HVC_DCC is not set CONFIG_SERIAL_DEV_BUS=y -CONFIG_SERIAL_DEV_CTRL_TTYPORT=y -# CONFIG_TTY_PRINTK is not set -# CONFIG_VIRTIO_CONSOLE is not set -# CONFIG_IPMI_HANDLER is not set CONFIG_HW_RANDOM=y -# CONFIG_HW_RANDOM_TIMERIOMEM is not set -# CONFIG_HW_RANDOM_BA431 is not set -# CONFIG_HW_RANDOM_CCTRNG is not set -# CONFIG_HW_RANDOM_XIPHERA is not set -CONFIG_HW_RANDOM_ARM_SMCCC_TRNG=y -CONFIG_HW_RANDOM_CN10K=y -# CONFIG_APPLICOM is not set -CONFIG_DEVMEM=y -CONFIG_DEVPORT=y CONFIG_TCG_TPM=y -CONFIG_HW_RANDOM_TPM=y -# CONFIG_TCG_TIS is not set -# CONFIG_TCG_TIS_SPI is not set -# CONFIG_TCG_TIS_I2C is not set -# CONFIG_TCG_TIS_I2C_CR50 is not set -# CONFIG_TCG_TIS_I2C_ATMEL is not set -# CONFIG_TCG_TIS_I2C_INFINEON is not set -# CONFIG_TCG_TIS_I2C_NUVOTON is not set -# CONFIG_TCG_ATMEL is not set -# CONFIG_TCG_VTPM_PROXY is not set -# CONFIG_TCG_TIS_ST33ZP24_I2C is not set -# CONFIG_TCG_TIS_ST33ZP24_SPI is not set -# CONFIG_XILLYBUS is not set -# CONFIG_XILLYUSB is not set -# end of Character devices - -# -# I2C support -# -CONFIG_I2C=y -CONFIG_I2C_BOARDINFO=y # CONFIG_I2C_COMPAT is not set CONFIG_I2C_CHARDEV=y -CONFIG_I2C_MUX=y - -# -# Multiplexer I2C Chip support -# -# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set -# CONFIG_I2C_MUX_GPIO is not set -# CONFIG_I2C_MUX_GPMUX is not set -# CONFIG_I2C_MUX_LTC4306 is not set -# CONFIG_I2C_MUX_PCA9541 is not set -# CONFIG_I2C_MUX_PCA954x is not set -# CONFIG_I2C_MUX_PINCTRL is not set -# CONFIG_I2C_MUX_REG is not set -# CONFIG_I2C_DEMUX_PINCTRL is not set -# CONFIG_I2C_MUX_MLXCPLD is not set -# end of Multiplexer I2C Chip support - -CONFIG_I2C_HELPER_AUTO=y -CONFIG_I2C_ALGOBIT=y - -# -# I2C Hardware Bus support -# - -# -# PC SMBus host controller drivers -# -# CONFIG_I2C_ALI1535 is not set -# CONFIG_I2C_ALI1563 is not set -# CONFIG_I2C_ALI15X3 is not set -# CONFIG_I2C_AMD756 is not set -# CONFIG_I2C_AMD8111 is not set -# CONFIG_I2C_I801 is not set -# CONFIG_I2C_ISCH is not set -# CONFIG_I2C_PIIX4 is not set -# CONFIG_I2C_NFORCE2 is not set -# CONFIG_I2C_NVIDIA_GPU is not set -# CONFIG_I2C_SIS5595 is not set -# CONFIG_I2C_SIS630 is not set -# CONFIG_I2C_SIS96X is not set -# CONFIG_I2C_VIA is not set -# CONFIG_I2C_VIAPRO is not set - -# -# I2C system bus drivers (mostly embedded / system-on-chip) -# -# CONFIG_I2C_CADENCE is not set -# CONFIG_I2C_CBUS_GPIO is not set -CONFIG_I2C_DESIGNWARE_CORE=y -# CONFIG_I2C_DESIGNWARE_SLAVE is not set CONFIG_I2C_DESIGNWARE_PLATFORM=y -# CONFIG_I2C_DESIGNWARE_PCI is not set -# CONFIG_I2C_EMEV2 is not set -# CONFIG_I2C_GPIO is not set -# CONFIG_I2C_HISI is not set -# CONFIG_I2C_NOMADIK is not set -# CONFIG_I2C_OCORES is not set -# CONFIG_I2C_PCA_PLATFORM is not set CONFIG_I2C_RK3X=y -# CONFIG_I2C_SIMTEC is not set -# CONFIG_I2C_THUNDERX is not set -# CONFIG_I2C_XILINX is not set - -# -# External I2C/SMBus adapter drivers -# -# CONFIG_I2C_DIOLAN_U2C is not set -# CONFIG_I2C_CP2615 is not set -# CONFIG_I2C_PCI1XXXX 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_VIRTIO is not set -# end of I2C Hardware Bus support - -# CONFIG_I2C_STUB is not set -# CONFIG_I2C_SLAVE is not set -# CONFIG_I2C_DEBUG_CORE is not set -# CONFIG_I2C_DEBUG_ALGO is not set -# CONFIG_I2C_DEBUG_BUS is not set -# end of I2C support - -# CONFIG_I3C is not set CONFIG_SPI=y -# CONFIG_SPI_DEBUG is not set -CONFIG_SPI_MASTER=y -CONFIG_SPI_MEM=y - -# -# SPI Master Controller Drivers -# -# CONFIG_SPI_ALTERA is not set -# CONFIG_SPI_AXI_SPI_ENGINE is not set -CONFIG_SPI_BITBANG=y -# CONFIG_SPI_CADENCE is not set -# CONFIG_SPI_CADENCE_QUADSPI is not set -# CONFIG_SPI_CADENCE_XSPI is not set -# CONFIG_SPI_DESIGNWARE is not set CONFIG_SPI_GPIO=y -# CONFIG_SPI_FSL_SPI is not set -# CONFIG_SPI_MICROCHIP_CORE is not set -# CONFIG_SPI_MICROCHIP_CORE_QSPI is not set -# CONFIG_SPI_OC_TINY is not set -# CONFIG_SPI_PCI1XXXX is not set -# CONFIG_SPI_PL022 is not set -# CONFIG_SPI_PXA2XX is not set CONFIG_SPI_ROCKCHIP=y CONFIG_SPI_ROCKCHIP_SFC=y -# CONFIG_SPI_SC18IS602 is not set -# CONFIG_SPI_SIFIVE is not set -# CONFIG_SPI_SN_F_OSPI is not set -# CONFIG_SPI_MXIC is not set -# CONFIG_SPI_THUNDERX is not set -# CONFIG_SPI_XCOMM is not set -# CONFIG_SPI_XILINX is not set -# CONFIG_SPI_ZYNQMP_GQSPI is not set -# CONFIG_SPI_AMD is not set - -# -# SPI Multiplexer support -# CONFIG_SPI_MUX=y - -# -# SPI Protocol Masters -# CONFIG_SPI_SPIDEV=y -# CONFIG_SPI_LOOPBACK_TEST is not set -# CONFIG_SPI_TLE62X0 is not set -# CONFIG_SPI_SLAVE is not set -CONFIG_SPI_DYNAMIC=y -# CONFIG_SPMI is not set -# CONFIG_HSI is not set -CONFIG_PPS=y -# CONFIG_PPS_DEBUG is not set - -# -# PPS clients support -# -# CONFIG_PPS_CLIENT_KTIMER is not set -# CONFIG_PPS_CLIENT_LDISC is not set -# CONFIG_PPS_CLIENT_GPIO is not set - -# -# PPS generators support -# - -# -# PTP clock support -# -CONFIG_PTP_1588_CLOCK=y -CONFIG_PTP_1588_CLOCK_OPTIONAL=y - -# -# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. -# -CONFIG_PTP_1588_CLOCK_KVM=y -# CONFIG_PTP_1588_CLOCK_IDT82P33 is not set -# CONFIG_PTP_1588_CLOCK_IDTCM is not set -# CONFIG_PTP_1588_CLOCK_MOCK is not set -# CONFIG_PTP_1588_CLOCK_OCP is not set -# end of PTP clock support - -CONFIG_PINCTRL=y -CONFIG_GENERIC_PINCTRL_GROUPS=y -CONFIG_PINMUX=y -CONFIG_GENERIC_PINMUX_FUNCTIONS=y -CONFIG_PINCONF=y -CONFIG_GENERIC_PINCONF=y -# CONFIG_DEBUG_PINCTRL is not set -# CONFIG_PINCTRL_CY8C95X0 is not set -# CONFIG_PINCTRL_MCP23S08 is not set -# CONFIG_PINCTRL_MICROCHIP_SGPIO is not set -# CONFIG_PINCTRL_OCELOT is not set CONFIG_PINCTRL_RK805=y -CONFIG_PINCTRL_ROCKCHIP=y CONFIG_PINCTRL_SINGLE=y -# CONFIG_PINCTRL_STMFX is not set -# CONFIG_PINCTRL_SX150X is not set - -# -# Renesas pinctrl drivers -# -# end of Renesas pinctrl drivers - -CONFIG_GPIOLIB=y -CONFIG_GPIOLIB_FASTPATH_LIMIT=512 -CONFIG_OF_GPIO=y -CONFIG_GPIOLIB_IRQCHIP=y -# CONFIG_DEBUG_GPIO is not set CONFIG_GPIO_SYSFS=y -CONFIG_GPIO_CDEV=y -CONFIG_GPIO_CDEV_V1=y -CONFIG_GPIO_GENERIC=y - -# -# Memory mapped GPIO drivers -# -# CONFIG_GPIO_74XX_MMIO is not set -# CONFIG_GPIO_ALTERA is not set -# CONFIG_GPIO_CADENCE is not set CONFIG_GPIO_DWAPB=y -# CONFIG_GPIO_FTGPIO010 is not set CONFIG_GPIO_GENERIC_PLATFORM=y -# CONFIG_GPIO_GRGPIO is not set -# CONFIG_GPIO_HISI is not set -# CONFIG_GPIO_HLWD is not set -# CONFIG_GPIO_LOGICVC is not set -# CONFIG_GPIO_MB86S7X is not set -# CONFIG_GPIO_PL061 is not set -CONFIG_GPIO_ROCKCHIP=y -# CONFIG_GPIO_SIFIVE is not set -# CONFIG_GPIO_SYSCON is not set -# CONFIG_GPIO_XGENE is not set -# CONFIG_GPIO_XILINX is not set -# CONFIG_GPIO_AMD_FCH is not set -# end of Memory mapped GPIO drivers - -# -# I2C GPIO expanders -# -# CONFIG_GPIO_ADNP is not set -# CONFIG_GPIO_FXL6408 is not set -# CONFIG_GPIO_DS4520 is not set -# CONFIG_GPIO_GW_PLD is not set -# CONFIG_GPIO_MAX7300 is not set -# CONFIG_GPIO_MAX732X is not set -# CONFIG_GPIO_PCA953X is not set -# CONFIG_GPIO_PCA9570 is not set -# CONFIG_GPIO_PCF857X is not set -# CONFIG_GPIO_TPIC2810 is not set -# end of I2C GPIO expanders - -# -# MFD GPIO expanders -# -# CONFIG_GPIO_TPS6586X is not set -# end of MFD GPIO expanders - -# -# PCI GPIO expanders -# -# CONFIG_GPIO_BT8XX is not set -# CONFIG_GPIO_PCI_IDIO_16 is not set -# CONFIG_GPIO_PCIE_IDIO_24 is not set -# CONFIG_GPIO_RDC321X is not set -# end of PCI GPIO expanders - -# -# SPI GPIO expanders -# -# CONFIG_GPIO_74X164 is not set -# CONFIG_GPIO_MAX3191X is not set -# CONFIG_GPIO_MAX7301 is not set -# CONFIG_GPIO_MC33880 is not set -# CONFIG_GPIO_PISOSR is not set -# CONFIG_GPIO_XRA1403 is not set -# end of SPI GPIO expanders - -# -# USB GPIO expanders -# -# end of USB GPIO expanders - -# -# Virtual GPIO drivers -# -# CONFIG_GPIO_AGGREGATOR is not set -# CONFIG_GPIO_LATCH is not set -# CONFIG_GPIO_MOCKUP is not set -# CONFIG_GPIO_SIM is not set -# end of Virtual GPIO drivers - -# CONFIG_W1 is not set -CONFIG_POWER_RESET=y -# CONFIG_POWER_RESET_BRCMSTB is not set CONFIG_POWER_RESET_GPIO=y CONFIG_POWER_RESET_GPIO_RESTART=y -# CONFIG_POWER_RESET_LTC2952 is not set -# CONFIG_POWER_RESET_REGULATOR is not set -# CONFIG_POWER_RESET_RESTART is not set -# CONFIG_POWER_RESET_XGENE is not set CONFIG_POWER_RESET_SYSCON=y CONFIG_POWER_RESET_SYSCON_POWEROFF=y -CONFIG_REBOOT_MODE=y CONFIG_SYSCON_REBOOT_MODE=y -# CONFIG_NVMEM_REBOOT_MODE is not set -CONFIG_POWER_SUPPLY=y -# CONFIG_POWER_SUPPLY_DEBUG is not set -CONFIG_POWER_SUPPLY_HWMON=y -# CONFIG_GENERIC_ADC_BATTERY is not set -# CONFIG_IP5XXX_POWER is not set -# CONFIG_TEST_POWER is not set -# CONFIG_CHARGER_ADP5061 is not set CONFIG_BATTERY_CW2015=y -# CONFIG_BATTERY_DS2780 is not set -# CONFIG_BATTERY_DS2781 is not set -# CONFIG_BATTERY_DS2782 is not set -# CONFIG_BATTERY_SAMSUNG_SDI is not set CONFIG_BATTERY_SBS=y -# CONFIG_CHARGER_SBS is not set -# CONFIG_MANAGER_SBS is not set -# CONFIG_BATTERY_BQ27XXX is not set -# CONFIG_BATTERY_MAX17040 is not set -# CONFIG_BATTERY_MAX17042 is not set -# CONFIG_CHARGER_ISP1704 is not set -# CONFIG_CHARGER_MAX8903 is not set -# CONFIG_CHARGER_LP8727 is not set CONFIG_CHARGER_GPIO=y -# CONFIG_CHARGER_MANAGER is not set -# CONFIG_CHARGER_LT3651 is not set -# CONFIG_CHARGER_LTC4162L is not set -# CONFIG_CHARGER_DETECTOR_MAX14656 is not set -# CONFIG_CHARGER_MAX77976 is not set -# CONFIG_CHARGER_BQ2415X is not set -# CONFIG_CHARGER_BQ24190 is not set -# CONFIG_CHARGER_BQ24257 is not set CONFIG_CHARGER_BQ24735=y -# CONFIG_CHARGER_BQ2515X is not set -# CONFIG_CHARGER_BQ25890 is not set -# CONFIG_CHARGER_BQ25980 is not set -# CONFIG_CHARGER_BQ256XX is not set CONFIG_CHARGER_RK817=y -# CONFIG_CHARGER_SMB347 is not set -# CONFIG_BATTERY_GAUGE_LTC2941 is not set -# CONFIG_BATTERY_GOLDFISH is not set -# CONFIG_BATTERY_RT5033 is not set -# CONFIG_CHARGER_RT9455 is not set -# CONFIG_CHARGER_RT9467 is not set -# CONFIG_CHARGER_RT9471 is not set -# CONFIG_CHARGER_UCS1002 is not set -# CONFIG_CHARGER_BD99954 is not set -# CONFIG_BATTERY_UG3105 is not set -CONFIG_HWMON=y -# CONFIG_HWMON_DEBUG_CHIP is not set - -# -# Native drivers -# -# CONFIG_SENSORS_AD7314 is not set -# CONFIG_SENSORS_AD7414 is not set -# CONFIG_SENSORS_AD7418 is not set -# CONFIG_SENSORS_ADM1021 is not set -# CONFIG_SENSORS_ADM1025 is not set -# CONFIG_SENSORS_ADM1026 is not set -# CONFIG_SENSORS_ADM1029 is not set -# CONFIG_SENSORS_ADM1031 is not set -# CONFIG_SENSORS_ADM1177 is not set -# CONFIG_SENSORS_ADM9240 is not set -# CONFIG_SENSORS_ADT7310 is not set -# CONFIG_SENSORS_ADT7410 is not set -# CONFIG_SENSORS_ADT7411 is not set -# CONFIG_SENSORS_ADT7462 is not set -# CONFIG_SENSORS_ADT7470 is not set -# CONFIG_SENSORS_ADT7475 is not set -# CONFIG_SENSORS_AHT10 is not set -# CONFIG_SENSORS_AQUACOMPUTER_D5NEXT is not set -# CONFIG_SENSORS_AS370 is not set -# CONFIG_SENSORS_ASC7621 is not set -# CONFIG_SENSORS_AXI_FAN_CONTROL is not set -# CONFIG_SENSORS_ARM_SCMI is not set -# CONFIG_SENSORS_ARM_SCPI is not set -# CONFIG_SENSORS_ATXP1 is not set -# CONFIG_SENSORS_CORSAIR_CPRO is not set -# CONFIG_SENSORS_CORSAIR_PSU is not set -# CONFIG_SENSORS_DRIVETEMP is not set -# CONFIG_SENSORS_DS620 is not set -# CONFIG_SENSORS_DS1621 is not set -# CONFIG_SENSORS_I5K_AMB is not set -# CONFIG_SENSORS_F71805F is not set -# CONFIG_SENSORS_F71882FG is not set -# CONFIG_SENSORS_F75375S is not set -# CONFIG_SENSORS_FTSTEUTATES is not set -# CONFIG_SENSORS_GL518SM is not set -# CONFIG_SENSORS_GL520SM is not set -# CONFIG_SENSORS_G760A is not set -# CONFIG_SENSORS_G762 is not set -# CONFIG_SENSORS_GPIO_FAN is not set -# CONFIG_SENSORS_HIH6130 is not set -# CONFIG_SENSORS_HS3001 is not set -# CONFIG_SENSORS_IIO_HWMON is not set -# CONFIG_SENSORS_IT87 is not set -# CONFIG_SENSORS_JC42 is not set -# CONFIG_SENSORS_POWR1220 is not set -# CONFIG_SENSORS_LINEAGE is not set -# CONFIG_SENSORS_LTC2945 is not set -# CONFIG_SENSORS_LTC2947_I2C is not set -# CONFIG_SENSORS_LTC2947_SPI is not set -# CONFIG_SENSORS_LTC2990 is not set -# CONFIG_SENSORS_LTC2992 is not set -# CONFIG_SENSORS_LTC4151 is not set -# CONFIG_SENSORS_LTC4215 is not set -# CONFIG_SENSORS_LTC4222 is not set -# CONFIG_SENSORS_LTC4245 is not set -# CONFIG_SENSORS_LTC4260 is not set -# CONFIG_SENSORS_LTC4261 is not set -# CONFIG_SENSORS_MAX1111 is not set -# CONFIG_SENSORS_MAX127 is not set -# CONFIG_SENSORS_MAX16065 is not set -# CONFIG_SENSORS_MAX1619 is not set -# CONFIG_SENSORS_MAX1668 is not set -# CONFIG_SENSORS_MAX197 is not set -# CONFIG_SENSORS_MAX31722 is not set -# CONFIG_SENSORS_MAX31730 is not set -# CONFIG_SENSORS_MAX31760 is not set -# CONFIG_MAX31827 is not set -# CONFIG_SENSORS_MAX6620 is not set -# CONFIG_SENSORS_MAX6621 is not set -# CONFIG_SENSORS_MAX6639 is not set -# CONFIG_SENSORS_MAX6642 is not set -# CONFIG_SENSORS_MAX6650 is not set -# CONFIG_SENSORS_MAX6697 is not set -# CONFIG_SENSORS_MAX31790 is not set -# CONFIG_SENSORS_MC34VR500 is not set -# CONFIG_SENSORS_MCP3021 is not set -# CONFIG_SENSORS_TC654 is not set -# CONFIG_SENSORS_TPS23861 is not set -# CONFIG_SENSORS_MR75203 is not set -# CONFIG_SENSORS_ADCXX is not set -# CONFIG_SENSORS_LM63 is not set -# CONFIG_SENSORS_LM70 is not set -# CONFIG_SENSORS_LM73 is not set -# CONFIG_SENSORS_LM75 is not set -# CONFIG_SENSORS_LM77 is not set -# CONFIG_SENSORS_LM78 is not set -# CONFIG_SENSORS_LM80 is not set -# CONFIG_SENSORS_LM83 is not set -# CONFIG_SENSORS_LM85 is not set -# CONFIG_SENSORS_LM87 is not set -# CONFIG_SENSORS_LM90 is not set -# CONFIG_SENSORS_LM92 is not set -# CONFIG_SENSORS_LM93 is not set -# CONFIG_SENSORS_LM95234 is not set -# CONFIG_SENSORS_LM95241 is not set -# CONFIG_SENSORS_LM95245 is not set -# CONFIG_SENSORS_PC87360 is not set -# CONFIG_SENSORS_PC87427 is not set -# CONFIG_SENSORS_NTC_THERMISTOR is not set -# CONFIG_SENSORS_NCT6683 is not set -# CONFIG_SENSORS_NCT6775 is not set -# CONFIG_SENSORS_NCT6775_I2C is not set -# CONFIG_SENSORS_NCT7802 is not set -# CONFIG_SENSORS_NCT7904 is not set -# CONFIG_SENSORS_NPCM7XX is not set -# CONFIG_SENSORS_NZXT_KRAKEN2 is not set -# CONFIG_SENSORS_NZXT_SMART2 is not set -# CONFIG_SENSORS_OCC_P8_I2C is not set -# CONFIG_SENSORS_PCF8591 is not set -# CONFIG_PMBUS is not set CONFIG_SENSORS_PWM_FAN=y -# CONFIG_SENSORS_SBTSI is not set -# CONFIG_SENSORS_SBRMI is not set -# CONFIG_SENSORS_SHT15 is not set -# CONFIG_SENSORS_SHT21 is not set -# CONFIG_SENSORS_SHT3x is not set -# CONFIG_SENSORS_SHT4x is not set -# CONFIG_SENSORS_SHTC1 is not set -# CONFIG_SENSORS_SIS5595 is not set -# CONFIG_SENSORS_DME1737 is not set -# CONFIG_SENSORS_EMC1403 is not set -# CONFIG_SENSORS_EMC2103 is not set -# CONFIG_SENSORS_EMC2305 is not set -# CONFIG_SENSORS_EMC6W201 is not set -# CONFIG_SENSORS_SMSC47M1 is not set -# CONFIG_SENSORS_SMSC47M192 is not set -# CONFIG_SENSORS_SMSC47B397 is not set -# CONFIG_SENSORS_SCH5627 is not set -# CONFIG_SENSORS_SCH5636 is not set -# CONFIG_SENSORS_STTS751 is not set -# CONFIG_SENSORS_ADC128D818 is not set -# CONFIG_SENSORS_ADS7828 is not set -# CONFIG_SENSORS_ADS7871 is not set -# CONFIG_SENSORS_AMC6821 is not set -# CONFIG_SENSORS_INA209 is not set -# CONFIG_SENSORS_INA2XX is not set -# CONFIG_SENSORS_INA238 is not set -# CONFIG_SENSORS_INA3221 is not set -# CONFIG_SENSORS_TC74 is not set -# CONFIG_SENSORS_THMC50 is not set -# CONFIG_SENSORS_TMP102 is not set -# CONFIG_SENSORS_TMP103 is not set -# CONFIG_SENSORS_TMP108 is not set -# CONFIG_SENSORS_TMP401 is not set -# CONFIG_SENSORS_TMP421 is not set -# CONFIG_SENSORS_TMP464 is not set -# CONFIG_SENSORS_TMP513 is not set -# CONFIG_SENSORS_VIA686A is not set -# CONFIG_SENSORS_VT1211 is not set -# CONFIG_SENSORS_VT8231 is not set -# CONFIG_SENSORS_W83773G is not set -# CONFIG_SENSORS_W83781D is not set -# CONFIG_SENSORS_W83791D is not set -# CONFIG_SENSORS_W83792D is not set -# CONFIG_SENSORS_W83793 is not set -# CONFIG_SENSORS_W83795 is not set -# CONFIG_SENSORS_W83L785TS is not set -# CONFIG_SENSORS_W83L786NG is not set -# CONFIG_SENSORS_W83627HF is not set -# CONFIG_SENSORS_W83627EHF is not set CONFIG_THERMAL=y -# CONFIG_THERMAL_NETLINK is not set -# CONFIG_THERMAL_STATISTICS is not set -CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 -CONFIG_THERMAL_HWMON=y -CONFIG_THERMAL_OF=y CONFIG_THERMAL_WRITABLE_TRIPS=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_DEFAULT_GOV_POWER_ALLOCATOR=y CONFIG_THERMAL_GOV_FAIR_SHARE=y CONFIG_THERMAL_GOV_STEP_WISE=y -# CONFIG_THERMAL_GOV_BANG_BANG is not set -# CONFIG_THERMAL_GOV_USER_SPACE is not set CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y CONFIG_CPU_THERMAL=y -CONFIG_CPU_FREQ_THERMAL=y CONFIG_DEVFREQ_THERMAL=y -# CONFIG_THERMAL_EMULATION is not set -# CONFIG_THERMAL_MMIO is not set CONFIG_ROCKCHIP_THERMAL=y -# CONFIG_GENERIC_ADC_THERMAL is not set +CONFIG_GENERIC_ADC_THERMAL=y CONFIG_WATCHDOG=y -CONFIG_WATCHDOG_CORE=y -# CONFIG_WATCHDOG_NOWAYOUT is not set -CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y -CONFIG_WATCHDOG_OPEN_TIMEOUT=0 -# CONFIG_WATCHDOG_SYSFS is not set -# CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set - -# -# Watchdog Pretimeout Governors -# -# CONFIG_WATCHDOG_PRETIMEOUT_GOV 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_XILINX_WINDOW_WATCHDOG is not set -# CONFIG_ZIIRAVE_WATCHDOG is not set -# CONFIG_ARM_SP805_WATCHDOG is not set -# CONFIG_ARM_SBSA_WATCHDOG is not set -# CONFIG_CADENCE_WATCHDOG is not set CONFIG_DW_WATCHDOG=y -# CONFIG_MAX63XX_WATCHDOG is not set -# CONFIG_ARM_SMC_WATCHDOG is not set -# CONFIG_ALIM7101_WDT is not set -# CONFIG_I6300ESB_WDT is not set -# CONFIG_HP_WATCHDOG is not set -# CONFIG_MEN_A21_WDT is not set - -# -# PCI-based Watchdog Cards -# -# CONFIG_PCIPCWATCHDOG is not set -# CONFIG_WDTPCI is not set - -# -# USB-based Watchdog Cards -# -# CONFIG_USBPCWATCHDOG is not set -CONFIG_SSB_POSSIBLE=y CONFIG_SSB=y -CONFIG_SSB_SPROM=y -CONFIG_SSB_BLOCKIO=y -CONFIG_SSB_PCIHOST_POSSIBLE=y -CONFIG_SSB_PCIHOST=y -CONFIG_SSB_B43_PCI_BRIDGE=y -CONFIG_SSB_SDIOHOST_POSSIBLE=y -# CONFIG_SSB_SDIOHOST is not set -CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y -CONFIG_SSB_DRIVER_PCICORE=y -# CONFIG_SSB_DRIVER_GPIO is not set -CONFIG_BCMA_POSSIBLE=y CONFIG_BCMA=y -CONFIG_BCMA_BLOCKIO=y -CONFIG_BCMA_HOST_PCI_POSSIBLE=y -CONFIG_BCMA_HOST_PCI=y -# CONFIG_BCMA_HOST_SOC is not set -CONFIG_BCMA_DRIVER_PCI=y -# CONFIG_BCMA_DRIVER_GMAC_CMN is not set -# CONFIG_BCMA_DRIVER_GPIO is not set -# CONFIG_BCMA_DEBUG is not set - -# -# Multifunction device drivers -# -CONFIG_MFD_CORE=y -# CONFIG_MFD_ACT8945A is not set -# CONFIG_MFD_AS3711 is not set -# CONFIG_MFD_SMPRO is not set -# CONFIG_MFD_AS3722 is not set -# CONFIG_PMIC_ADP5520 is not set -# CONFIG_MFD_AAT2870_CORE is not set -# CONFIG_MFD_ATMEL_FLEXCOM is not set -# CONFIG_MFD_ATMEL_HLCDC is not set -# CONFIG_MFD_BCM590XX is not set -# CONFIG_MFD_BD9571MWV is not set -# CONFIG_MFD_AXP20X_I2C is not set -# CONFIG_MFD_CS42L43_I2C is not set -# CONFIG_MFD_MADERA is not set -# CONFIG_MFD_MAX5970 is not set -# CONFIG_PMIC_DA903X is not set -# CONFIG_MFD_DA9052_SPI is not set -# CONFIG_MFD_DA9052_I2C is not set -# CONFIG_MFD_DA9055 is not set -# CONFIG_MFD_DA9062 is not set -# CONFIG_MFD_DA9063 is not set -# CONFIG_MFD_DA9150 is not set -# CONFIG_MFD_DLN2 is not set -# CONFIG_MFD_GATEWORKS_GSC is not set -# CONFIG_MFD_MC13XXX_SPI is not set -# CONFIG_MFD_MC13XXX_I2C is not set -# CONFIG_MFD_MP2629 is not set -# CONFIG_MFD_HI6421_PMIC is not set -# CONFIG_LPC_ICH is not set -# CONFIG_LPC_SCH is not set -# CONFIG_MFD_IQS62X is not set -# CONFIG_MFD_JANZ_CMODIO 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_MAX77541 is not set -# CONFIG_MFD_MAX77620 is not set -# CONFIG_MFD_MAX77650 is not set -# CONFIG_MFD_MAX77686 is not set -# CONFIG_MFD_MAX77693 is not set -# CONFIG_MFD_MAX77714 is not set -# CONFIG_MFD_MAX77843 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_MT6360 is not set -# CONFIG_MFD_MT6370 is not set -# CONFIG_MFD_MT6397 is not set -# CONFIG_MFD_MENF21BMC is not set -# CONFIG_MFD_OCELOT is not set -# CONFIG_EZX_PCAP is not set -# CONFIG_MFD_CPCAP is not set -# CONFIG_MFD_VIPERBOARD is not set -# CONFIG_MFD_NTXEC is not set -# CONFIG_MFD_RETU is not set -# CONFIG_MFD_PCF50633 is not set -# CONFIG_MFD_SY7636A is not set -# CONFIG_MFD_RDC321X is not set -# CONFIG_MFD_RT4831 is not set -# CONFIG_MFD_RT5033 is not set -# CONFIG_MFD_RT5120 is not set -# CONFIG_MFD_RC5T583 is not set -CONFIG_MFD_RK8XX=y CONFIG_MFD_RK8XX_I2C=y -# CONFIG_MFD_RK8XX_SPI is not set -# CONFIG_MFD_RN5T618 is not set -# CONFIG_MFD_SEC_CORE is not set -# CONFIG_MFD_SI476X_CORE is not set -# CONFIG_MFD_SM501 is not set -# CONFIG_MFD_SKY81452 is not set -# CONFIG_MFD_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_TI_LMU is not set -# CONFIG_MFD_PALMAS is not set -# CONFIG_TPS6105X is not set -# CONFIG_TPS65010 is not set -# CONFIG_TPS6507X is not set -# CONFIG_MFD_TPS65086 is not set -# CONFIG_MFD_TPS65090 is not set -# CONFIG_MFD_TPS65217 is not set -# CONFIG_MFD_TI_LP873X is not set -# CONFIG_MFD_TI_LP87565 is not set -# CONFIG_MFD_TPS65218 is not set -# CONFIG_MFD_TPS65219 is not set CONFIG_MFD_TPS6586X=y -# CONFIG_MFD_TPS65910 is not set -# CONFIG_MFD_TPS65912_I2C is not set -# CONFIG_MFD_TPS65912_SPI is not set -# CONFIG_MFD_TPS6594_I2C is not set -# CONFIG_MFD_TPS6594_SPI 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_TQMX86 is not set -# CONFIG_MFD_VX855 is not set -# CONFIG_MFD_LOCHNAGAR 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_MFD_ROHM_BD718XX is not set -# CONFIG_MFD_ROHM_BD71828 is not set -# CONFIG_MFD_ROHM_BD957XMUF is not set -# CONFIG_MFD_STPMIC1 is not set -# CONFIG_MFD_STMFX is not set -# CONFIG_MFD_ATC260X_I2C is not set -# CONFIG_MFD_KHADAS_MCU is not set -# CONFIG_MFD_QCOM_PM8008 is not set -# CONFIG_RAVE_SP_CORE is not set -# CONFIG_MFD_INTEL_M10_BMC_SPI is not set -# CONFIG_MFD_RSMU_I2C is not set -# CONFIG_MFD_RSMU_SPI is not set -# end of Multifunction device drivers - CONFIG_REGULATOR=y CONFIG_REGULATOR_DEBUG=y CONFIG_REGULATOR_FIXED_VOLTAGE=y CONFIG_REGULATOR_VIRTUAL_CONSUMER=y CONFIG_REGULATOR_USERSPACE_CONSUMER=y -# CONFIG_REGULATOR_88PG86X is not set CONFIG_REGULATOR_ACT8865=y -# CONFIG_REGULATOR_AD5398 is not set CONFIG_REGULATOR_ARM_SCMI=y -# CONFIG_REGULATOR_AW37503 is not set -# CONFIG_REGULATOR_DA9121 is not set -# CONFIG_REGULATOR_DA9210 is not set -# CONFIG_REGULATOR_DA9211 is not set CONFIG_REGULATOR_FAN53555=y -# CONFIG_REGULATOR_FAN53880 is not set CONFIG_REGULATOR_GPIO=y -# CONFIG_REGULATOR_ISL9305 is not set -# CONFIG_REGULATOR_ISL6271A is not set -# CONFIG_REGULATOR_LP3971 is not set -# CONFIG_REGULATOR_LP3972 is not set -# CONFIG_REGULATOR_LP872X is not set -# CONFIG_REGULATOR_LP8755 is not set -# CONFIG_REGULATOR_LTC3589 is not set -# CONFIG_REGULATOR_LTC3676 is not set -# CONFIG_REGULATOR_MAX1586 is not set -# CONFIG_REGULATOR_MAX77857 is not set -# CONFIG_REGULATOR_MAX8649 is not set -# CONFIG_REGULATOR_MAX8660 is not set -# CONFIG_REGULATOR_MAX8893 is not set -# CONFIG_REGULATOR_MAX8952 is not set -# CONFIG_REGULATOR_MAX8973 is not set -# CONFIG_REGULATOR_MAX20086 is not set -# CONFIG_REGULATOR_MAX20411 is not set -# CONFIG_REGULATOR_MAX77826 is not set -# CONFIG_REGULATOR_MCP16502 is not set -# CONFIG_REGULATOR_MP5416 is not set -# CONFIG_REGULATOR_MP8859 is not set -# CONFIG_REGULATOR_MP886X is not set -# CONFIG_REGULATOR_MPQ7920 is not set -# CONFIG_REGULATOR_MT6311 is not set -# CONFIG_REGULATOR_PCA9450 is not set -# CONFIG_REGULATOR_PF8X00 is not set -# CONFIG_REGULATOR_PFUZE100 is not set -# CONFIG_REGULATOR_PV88060 is not set -# CONFIG_REGULATOR_PV88080 is not set -# CONFIG_REGULATOR_PV88090 is not set CONFIG_REGULATOR_PWM=y -# CONFIG_REGULATOR_RAA215300 is not set -# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set CONFIG_REGULATOR_RK808=y -# CONFIG_REGULATOR_RT4801 is not set -# CONFIG_REGULATOR_RT4803 is not set -# CONFIG_REGULATOR_RT5190A is not set -# CONFIG_REGULATOR_RT5739 is not set -# CONFIG_REGULATOR_RT5759 is not set -# CONFIG_REGULATOR_RT6160 is not set -# CONFIG_REGULATOR_RT6190 is not set -# CONFIG_REGULATOR_RT6245 is not set -# CONFIG_REGULATOR_RTQ2134 is not set -# CONFIG_REGULATOR_RTMV20 is not set -# CONFIG_REGULATOR_RTQ6752 is not set -# CONFIG_REGULATOR_RTQ2208 is not set -# CONFIG_REGULATOR_SLG51000 is not set -# CONFIG_REGULATOR_SY8106A is not set -# CONFIG_REGULATOR_SY8824X is not set -# CONFIG_REGULATOR_SY8827N is not set -# CONFIG_REGULATOR_TPS51632 is not set -# CONFIG_REGULATOR_TPS62360 is not set -# CONFIG_REGULATOR_TPS6286X is not set -# CONFIG_REGULATOR_TPS6287X is not set -# CONFIG_REGULATOR_TPS65023 is not set -# CONFIG_REGULATOR_TPS6507X is not set -# CONFIG_REGULATOR_TPS65132 is not set -# CONFIG_REGULATOR_TPS6524X is not set CONFIG_REGULATOR_TPS6586X=y CONFIG_REGULATOR_VCTRL=y CONFIG_RC_CORE=y -# CONFIG_BPF_LIRC_MODE2 is not set CONFIG_LIRC=y -CONFIG_RC_MAP=y CONFIG_RC_DECODERS=y -# CONFIG_IR_IMON_DECODER is not set CONFIG_IR_JVC_DECODER=y CONFIG_IR_MCE_KBD_DECODER=y CONFIG_IR_NEC_DECODER=y CONFIG_IR_RC5_DECODER=y CONFIG_IR_RC6_DECODER=y -# CONFIG_IR_RCMM_DECODER is not set CONFIG_IR_SANYO_DECODER=y CONFIG_IR_SHARP_DECODER=y CONFIG_IR_SONY_DECODER=y CONFIG_IR_XMP_DECODER=y CONFIG_RC_DEVICES=y CONFIG_IR_GPIO_CIR=y -# CONFIG_IR_GPIO_TX is not set -# CONFIG_IR_HIX5HD2 is not set -# CONFIG_IR_IGORPLUGUSB is not set -# CONFIG_IR_IGUANA is not set -# CONFIG_IR_IMON is not set -# CONFIG_IR_IMON_RAW is not set -# CONFIG_IR_MCEUSB is not set -# CONFIG_IR_PWM_TX is not set -# CONFIG_IR_REDRAT3 is not set -# CONFIG_IR_SERIAL is not set -# CONFIG_IR_SPI is not set -# CONFIG_IR_STREAMZAP is not set -# CONFIG_IR_TOY is not set -# CONFIG_IR_TTUSBIR is not set -# CONFIG_RC_ATI_REMOTE is not set -# CONFIG_RC_LOOPBACK is not set -# CONFIG_RC_XBOX_DVD is not set -CONFIG_CEC_CORE=y -CONFIG_CEC_NOTIFIER=y - -# -# CEC support -# CONFIG_MEDIA_CEC_RC=y CONFIG_MEDIA_CEC_SUPPORT=y -# CONFIG_CEC_CH7322 is not set -# CONFIG_CEC_GPIO is not set CONFIG_USB_PULSE8_CEC=m CONFIG_USB_RAINSHADOW_CEC=m -# end of CEC support - CONFIG_MEDIA_SUPPORT=y CONFIG_MEDIA_SUPPORT_FILTER=y -CONFIG_MEDIA_SUBDRV_AUTOSELECT=y - -# -# Media device types -# CONFIG_MEDIA_CAMERA_SUPPORT=y CONFIG_MEDIA_ANALOG_TV_SUPPORT=y CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y @@ -3990,93 +637,18 @@ CONFIG_MEDIA_RADIO_SUPPORT=y CONFIG_MEDIA_SDR_SUPPORT=y CONFIG_MEDIA_PLATFORM_SUPPORT=y CONFIG_MEDIA_TEST_SUPPORT=y -# end of Media device types - -CONFIG_VIDEO_DEV=y -CONFIG_MEDIA_CONTROLLER=y -CONFIG_DVB_CORE=y - -# -# Video4Linux options -# -CONFIG_VIDEO_V4L2_I2C=y -CONFIG_VIDEO_V4L2_SUBDEV_API=y -# CONFIG_VIDEO_ADV_DEBUG is not set -# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set -CONFIG_VIDEO_TUNER=m -CONFIG_V4L2_H264=y -CONFIG_V4L2_VP9=y -CONFIG_V4L2_MEM2MEM_DEV=y -CONFIG_V4L2_FWNODE=y -CONFIG_V4L2_ASYNC=y -# end of Video4Linux options - -# -# Media controller options -# -CONFIG_MEDIA_CONTROLLER_DVB=y -CONFIG_MEDIA_CONTROLLER_REQUEST_API=y -# end of Media controller options - -# -# Digital TV options -# -# CONFIG_DVB_MMAP is not set -CONFIG_DVB_NET=y CONFIG_DVB_MAX_ADAPTERS=8 # CONFIG_DVB_DYNAMIC_MINORS is not set -# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set -# CONFIG_DVB_ULE_DEBUG is not set -# end of Digital TV options - -# -# Media drivers -# - -# -# Drivers filtered as selected at 'Filter media drivers' -# - -# -# Media drivers -# CONFIG_MEDIA_USB_SUPPORT=y - -# -# Webcam devices -# -# CONFIG_USB_GSPCA is not set -# CONFIG_USB_PWC is not set -# CONFIG_USB_S2255 is not set CONFIG_VIDEO_USBTV=m CONFIG_USB_VIDEO_CLASS=y # CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV is not set - -# -# Analog TV USB devices -# -# CONFIG_VIDEO_GO7007 is not set -# CONFIG_VIDEO_HDPVR is not set -# CONFIG_VIDEO_PVRUSB2 is not set -# CONFIG_VIDEO_STK1160 is not set - -# -# Analog/digital TV USB devices -# CONFIG_VIDEO_AU0828=m -CONFIG_VIDEO_AU0828_V4L2=y -# CONFIG_VIDEO_AU0828_RC is not set CONFIG_VIDEO_CX231XX=m -CONFIG_VIDEO_CX231XX_RC=y CONFIG_VIDEO_CX231XX_ALSA=m CONFIG_VIDEO_CX231XX_DVB=m - -# -# Digital TV USB devices -# CONFIG_DVB_AS102=m CONFIG_DVB_B2C2_FLEXCOP_USB=m -# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set CONFIG_DVB_USB_V2=m CONFIG_DVB_USB_AF9015=m CONFIG_DVB_USB_AF9035=m @@ -4090,20 +662,15 @@ CONFIG_DVB_USB_GL861=m CONFIG_DVB_USB_LME2510=m CONFIG_DVB_USB_MXL111SF=m CONFIG_DVB_USB_RTL28XXU=m -# CONFIG_DVB_USB_ZD1301 is not set CONFIG_DVB_USB=y -# CONFIG_DVB_USB_DEBUG is not set CONFIG_DVB_USB_A800=m CONFIG_DVB_USB_AF9005=m CONFIG_DVB_USB_AF9005_REMOTE=m CONFIG_DVB_USB_AZ6027=m CONFIG_DVB_USB_CINERGY_T2=m CONFIG_DVB_USB_CXUSB=m -# CONFIG_DVB_USB_CXUSB_ANALOG is not set CONFIG_DVB_USB_DIB0700=m -CONFIG_DVB_USB_DIB3000MC=m CONFIG_DVB_USB_DIBUSB_MB=m -# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set CONFIG_DVB_USB_DIBUSB_MC=m CONFIG_DVB_USB_DIGITV=m CONFIG_DVB_USB_DTT200U=m @@ -4119,1387 +686,149 @@ CONFIG_DVB_USB_TTUSB2=m CONFIG_DVB_USB_UMT_010=m CONFIG_DVB_USB_VP702X=m CONFIG_DVB_USB_VP7045=m -# CONFIG_SMS_USB_DRV is not set CONFIG_DVB_TTUSB_BUDGET=m CONFIG_DVB_TTUSB_DEC=m - -# -# Webcam, TV (analog/digital) USB devices -# CONFIG_VIDEO_EM28XX=m CONFIG_VIDEO_EM28XX_V4L2=m CONFIG_VIDEO_EM28XX_ALSA=m CONFIG_VIDEO_EM28XX_DVB=m -CONFIG_VIDEO_EM28XX_RC=m - -# -# Software defined radio USB devices -# CONFIG_USB_AIRSPY=m CONFIG_USB_HACKRF=m CONFIG_USB_MSI2500=m CONFIG_MEDIA_PCI_SUPPORT=y - -# -# Media capture support -# -# CONFIG_VIDEO_SOLO6X10 is not set -# CONFIG_VIDEO_TW5864 is not set -# CONFIG_VIDEO_TW68 is not set -# CONFIG_VIDEO_TW686X is not set -# CONFIG_VIDEO_ZORAN is not set - -# -# Media capture/analog TV support -# -# CONFIG_VIDEO_DT3155 is not set -# CONFIG_VIDEO_IVTV is not set -# CONFIG_VIDEO_HEXIUM_GEMINI is not set -# CONFIG_VIDEO_HEXIUM_ORION is not set -# CONFIG_VIDEO_MXB is not set - -# -# Media capture/analog/hybrid TV support -# -# CONFIG_VIDEO_BT848 is not set -# CONFIG_VIDEO_CX18 is not set CONFIG_VIDEO_CX23885=m -# CONFIG_MEDIA_ALTERA_CI is not set CONFIG_VIDEO_CX25821=m -# CONFIG_VIDEO_CX25821_ALSA is not set -# CONFIG_VIDEO_CX88 is not set -# CONFIG_VIDEO_SAA7134 is not set -# CONFIG_VIDEO_SAA7164 is not set - -# -# Media digital TV PCI Adapters -# -# CONFIG_DVB_B2C2_FLEXCOP_PCI is not set -# CONFIG_DVB_DDBRIDGE is not set -# CONFIG_DVB_DM1105 is not set -# CONFIG_MANTIS_CORE is not set -# CONFIG_DVB_NETUP_UNIDVB is not set -# CONFIG_DVB_NGENE is not set -# CONFIG_DVB_PLUTO2 is not set -# CONFIG_DVB_PT1 is not set -# CONFIG_DVB_PT3 is not set -# CONFIG_DVB_SMIPCIE is not set -# CONFIG_DVB_BUDGET_CORE is not set -CONFIG_RADIO_ADAPTERS=y -# CONFIG_RADIO_MAXIRADIO is not set -# CONFIG_RADIO_SAA7706H is not set -# CONFIG_RADIO_SHARK is not set -# CONFIG_RADIO_SHARK2 is not set -# CONFIG_RADIO_SI4713 is not set -# CONFIG_RADIO_TEA5764 is not set -# CONFIG_RADIO_TEF6862 is not set -# CONFIG_RADIO_WL1273 is not set -# CONFIG_USB_DSBR is not set -# CONFIG_USB_KEENE is not set -# CONFIG_USB_MA901 is not set -# CONFIG_USB_MR800 is not set -# CONFIG_USB_RAREMONO is not set -# CONFIG_RADIO_SI470X is not set -CONFIG_MEDIA_PLATFORM_DRIVERS=y CONFIG_V4L_PLATFORM_DRIVERS=y -# CONFIG_SDR_PLATFORM_DRIVERS is not set CONFIG_DVB_PLATFORM_DRIVERS=y CONFIG_V4L_MEM2MEM_DRIVERS=y -# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set -# CONFIG_VIDEO_MUX is not set - -# -# Allegro DVT media platform drivers -# - -# -# Amlogic media platform drivers -# - -# -# Amphion drivers -# - -# -# Aspeed media platform drivers -# - -# -# Atmel media platform drivers -# - -# -# Cadence media platform drivers -# -# CONFIG_VIDEO_CADENCE_CSI2RX is not set -# CONFIG_VIDEO_CADENCE_CSI2TX is not set - -# -# Chips&Media media platform drivers -# - -# -# Intel media platform drivers -# - -# -# Marvell media platform drivers -# -# CONFIG_VIDEO_CAFE_CCIC is not set - -# -# Mediatek media platform drivers -# - -# -# Microchip Technology, Inc. media platform drivers -# - -# -# NVidia media platform drivers -# - -# -# NXP media platform drivers -# - -# -# Qualcomm media platform drivers -# - -# -# Renesas media platform drivers -# - -# -# Rockchip media platform drivers -# CONFIG_VIDEO_ROCKCHIP_RGA=y -# CONFIG_VIDEO_ROCKCHIP_ISP1 is not set - -# -# Samsung media platform drivers -# - -# -# STMicroelectronics media platform drivers -# - -# -# Sunxi media platform drivers -# - -# -# Texas Instruments drivers -# - -# -# Verisilicon media platform drivers -# CONFIG_VIDEO_HANTRO=y -CONFIG_VIDEO_HANTRO_ROCKCHIP=y - -# -# VIA media platform drivers -# - -# -# Xilinx media platform drivers -# -# CONFIG_VIDEO_XILINX is not set - -# -# MMC/SDIO DVB adapters -# -# CONFIG_SMS_SDIO_DRV is not set -# CONFIG_V4L_TEST_DRIVERS is not set -# CONFIG_DVB_TEST_DRIVERS is not set -CONFIG_CYPRESS_FIRMWARE=y -CONFIG_TTPCI_EEPROM=m -CONFIG_UVC_COMMON=y -CONFIG_VIDEO_CX2341X=m -CONFIG_VIDEO_TVEEPROM=m -CONFIG_DVB_B2C2_FLEXCOP=m -CONFIG_VIDEOBUF2_CORE=y -CONFIG_VIDEOBUF2_V4L2=y -CONFIG_VIDEOBUF2_MEMOPS=y -CONFIG_VIDEOBUF2_DMA_CONTIG=y -CONFIG_VIDEOBUF2_VMALLOC=y -CONFIG_VIDEOBUF2_DMA_SG=y -CONFIG_VIDEOBUF2_DVB=m -# end of Media drivers - -# -# Media ancillary drivers -# -CONFIG_MEDIA_ATTACH=y - -# -# IR I2C driver auto-selected by 'Autoselect ancillary drivers' -# # CONFIG_VIDEO_IR_I2C is not set -CONFIG_VIDEO_CAMERA_SENSOR=y -# CONFIG_VIDEO_AR0521 is not set -# CONFIG_VIDEO_HI556 is not set -# CONFIG_VIDEO_HI846 is not set -# CONFIG_VIDEO_HI847 is not set -# CONFIG_VIDEO_IMX208 is not set -# CONFIG_VIDEO_IMX214 is not set CONFIG_VIDEO_IMX219=y -# CONFIG_VIDEO_IMX258 is not set -# CONFIG_VIDEO_IMX274 is not set -# CONFIG_VIDEO_IMX290 is not set -# CONFIG_VIDEO_IMX296 is not set -# CONFIG_VIDEO_IMX319 is not set -# CONFIG_VIDEO_IMX334 is not set -# CONFIG_VIDEO_IMX335 is not set -# CONFIG_VIDEO_IMX355 is not set -# CONFIG_VIDEO_IMX412 is not set -# CONFIG_VIDEO_IMX415 is not set -# CONFIG_VIDEO_MT9M001 is not set -# CONFIG_VIDEO_MT9M111 is not set -# CONFIG_VIDEO_MT9P031 is not set -# CONFIG_VIDEO_MT9T112 is not set -CONFIG_VIDEO_MT9V011=m -# CONFIG_VIDEO_MT9V032 is not set -# CONFIG_VIDEO_MT9V111 is not set -# CONFIG_VIDEO_OG01A1B is not set -# CONFIG_VIDEO_OV01A10 is not set -# CONFIG_VIDEO_OV02A10 is not set -# CONFIG_VIDEO_OV08D10 is not set -# CONFIG_VIDEO_OV08X40 is not set -# CONFIG_VIDEO_OV13858 is not set -# CONFIG_VIDEO_OV13B10 is not set -CONFIG_VIDEO_OV2640=m -# CONFIG_VIDEO_OV2659 is not set -# CONFIG_VIDEO_OV2680 is not set -# CONFIG_VIDEO_OV2685 is not set -# CONFIG_VIDEO_OV4689 is not set -# CONFIG_VIDEO_OV5640 is not set CONFIG_VIDEO_OV5645=y -# CONFIG_VIDEO_OV5647 is not set -# CONFIG_VIDEO_OV5648 is not set -# CONFIG_VIDEO_OV5670 is not set -# CONFIG_VIDEO_OV5675 is not set -# CONFIG_VIDEO_OV5693 is not set -# CONFIG_VIDEO_OV5695 is not set -# CONFIG_VIDEO_OV6650 is not set -# CONFIG_VIDEO_OV7251 is not set -# CONFIG_VIDEO_OV7640 is not set -# CONFIG_VIDEO_OV7670 is not set -# CONFIG_VIDEO_OV772X is not set -# CONFIG_VIDEO_OV7740 is not set -# CONFIG_VIDEO_OV8856 is not set -# CONFIG_VIDEO_OV8858 is not set -# CONFIG_VIDEO_OV8865 is not set -# CONFIG_VIDEO_OV9282 is not set -# CONFIG_VIDEO_OV9640 is not set -# CONFIG_VIDEO_OV9650 is not set -# CONFIG_VIDEO_RDACM20 is not set -# CONFIG_VIDEO_RDACM21 is not set -# CONFIG_VIDEO_RJ54N1 is not set -# CONFIG_VIDEO_S5C73M3 is not set -# CONFIG_VIDEO_S5K5BAF is not set -# CONFIG_VIDEO_S5K6A3 is not set -# CONFIG_VIDEO_ST_VGXY61 is not set -# CONFIG_VIDEO_CCS is not set -# CONFIG_VIDEO_ET8EK8 is not set - -# -# Lens drivers -# -# CONFIG_VIDEO_AD5820 is not set -# CONFIG_VIDEO_AK7375 is not set -# CONFIG_VIDEO_DW9714 is not set -# CONFIG_VIDEO_DW9719 is not set -# CONFIG_VIDEO_DW9768 is not set -# CONFIG_VIDEO_DW9807_VCM is not set -# end of Lens drivers - -# -# Flash devices -# -# CONFIG_VIDEO_ADP1653 is not set -# CONFIG_VIDEO_LM3560 is not set -# CONFIG_VIDEO_LM3646 is not set -# end of Flash devices - -# -# Audio decoders, processors and mixers -# -CONFIG_VIDEO_CS3308=m -# CONFIG_VIDEO_CS5345 is not set -# CONFIG_VIDEO_CS53L32A is not set -CONFIG_VIDEO_MSP3400=m -# CONFIG_VIDEO_SONY_BTF_MPX is not set -# CONFIG_VIDEO_TDA1997X is not set -# CONFIG_VIDEO_TDA7432 is not set -# CONFIG_VIDEO_TDA9840 is not set -# CONFIG_VIDEO_TEA6415C is not set -# CONFIG_VIDEO_TEA6420 is not set -# CONFIG_VIDEO_TLV320AIC23B is not set -# CONFIG_VIDEO_TVAUDIO is not set -# CONFIG_VIDEO_UDA1342 is not set -# CONFIG_VIDEO_VP27SMPX is not set -# CONFIG_VIDEO_WM8739 is not set -# CONFIG_VIDEO_WM8775 is not set -# end of Audio decoders, processors and mixers - -# -# RDS decoders -# -# CONFIG_VIDEO_SAA6588 is not set -# end of RDS decoders - -# -# Video decoders -# -# CONFIG_VIDEO_ADV7180 is not set -# CONFIG_VIDEO_ADV7183 is not set -# CONFIG_VIDEO_ADV748X is not set -# CONFIG_VIDEO_ADV7604 is not set -# CONFIG_VIDEO_ADV7842 is not set -# CONFIG_VIDEO_BT819 is not set -# CONFIG_VIDEO_BT856 is not set -# CONFIG_VIDEO_BT866 is not set -# CONFIG_VIDEO_ISL7998X is not set -# CONFIG_VIDEO_KS0127 is not set -# CONFIG_VIDEO_MAX9286 is not set -# CONFIG_VIDEO_ML86V7667 is not set -# CONFIG_VIDEO_SAA7110 is not set -CONFIG_VIDEO_SAA711X=m -# CONFIG_VIDEO_TC358743 is not set -# CONFIG_VIDEO_TC358746 is not set -# CONFIG_VIDEO_TVP514X is not set -CONFIG_VIDEO_TVP5150=m -# CONFIG_VIDEO_TVP7002 is not set -# CONFIG_VIDEO_TW2804 is not set -# CONFIG_VIDEO_TW9903 is not set -# CONFIG_VIDEO_TW9906 is not set -# CONFIG_VIDEO_TW9910 is not set -# CONFIG_VIDEO_VPX3220 is not set - -# -# Video and audio decoders -# -# CONFIG_VIDEO_SAA717X is not set -CONFIG_VIDEO_CX25840=m -# end of Video decoders - -# -# Video encoders -# -# CONFIG_VIDEO_ADV7170 is not set -# CONFIG_VIDEO_ADV7175 is not set -# CONFIG_VIDEO_ADV7343 is not set -# CONFIG_VIDEO_ADV7393 is not set -# CONFIG_VIDEO_ADV7511 is not set -# CONFIG_VIDEO_AK881X is not set -# CONFIG_VIDEO_SAA7127 is not set -# CONFIG_VIDEO_SAA7185 is not set -# CONFIG_VIDEO_THS8200 is not set -# end of Video encoders - -# -# Video improvement chips -# -# CONFIG_VIDEO_UPD64031A is not set -# CONFIG_VIDEO_UPD64083 is not set -# end of Video improvement chips - -# -# Audio/Video compression chips -# -# CONFIG_VIDEO_SAA6752HS is not set -# end of Audio/Video compression chips - -# -# SDR tuner chips -# -# CONFIG_SDR_MAX2175 is not set -# end of SDR tuner chips - -# -# Miscellaneous helper chips -# -# CONFIG_VIDEO_I2C is not set -# CONFIG_VIDEO_M52790 is not set -# CONFIG_VIDEO_ST_MIPID02 is not set -# CONFIG_VIDEO_THS7303 is not set -# end of Miscellaneous helper chips - -# -# Video serializers and deserializers -# -# CONFIG_VIDEO_DS90UB913 is not set -# CONFIG_VIDEO_DS90UB953 is not set -# CONFIG_VIDEO_DS90UB960 is not set -# end of Video serializers and deserializers - -# -# Media SPI Adapters -# CONFIG_CXD2880_SPI_DRV=m -# CONFIG_VIDEO_GS1662 is not set -# end of Media SPI Adapters - -CONFIG_MEDIA_TUNER=y - -# -# Customize TV tuners -# -CONFIG_MEDIA_TUNER_E4000=m -CONFIG_MEDIA_TUNER_FC0011=m -CONFIG_MEDIA_TUNER_FC0012=m -CONFIG_MEDIA_TUNER_FC0013=m -CONFIG_MEDIA_TUNER_FC2580=m -CONFIG_MEDIA_TUNER_IT913X=m -CONFIG_MEDIA_TUNER_M88RS6000T=m -CONFIG_MEDIA_TUNER_MAX2165=m -CONFIG_MEDIA_TUNER_MC44S803=y -CONFIG_MEDIA_TUNER_MSI001=m -CONFIG_MEDIA_TUNER_MT2060=m -CONFIG_MEDIA_TUNER_MT2063=m -CONFIG_MEDIA_TUNER_MT20XX=y -CONFIG_MEDIA_TUNER_MT2131=m -CONFIG_MEDIA_TUNER_MT2266=m -# CONFIG_MEDIA_TUNER_MXL301RF is not set -CONFIG_MEDIA_TUNER_MXL5005S=m -CONFIG_MEDIA_TUNER_MXL5007T=m -# CONFIG_MEDIA_TUNER_QM1D1B0004 is not set -CONFIG_MEDIA_TUNER_QM1D1C0042=m -CONFIG_MEDIA_TUNER_QT1010=m -CONFIG_MEDIA_TUNER_R820T=m -CONFIG_MEDIA_TUNER_SI2157=m -CONFIG_MEDIA_TUNER_SIMPLE=y -CONFIG_MEDIA_TUNER_TDA18212=m -CONFIG_MEDIA_TUNER_TDA18218=m -CONFIG_MEDIA_TUNER_TDA18250=m -CONFIG_MEDIA_TUNER_TDA18271=y -CONFIG_MEDIA_TUNER_TDA827X=y -CONFIG_MEDIA_TUNER_TDA8290=y -CONFIG_MEDIA_TUNER_TDA9887=y -CONFIG_MEDIA_TUNER_TEA5761=y -CONFIG_MEDIA_TUNER_TEA5767=y -CONFIG_MEDIA_TUNER_TUA9001=m -CONFIG_MEDIA_TUNER_XC2028=y -CONFIG_MEDIA_TUNER_XC4000=y -CONFIG_MEDIA_TUNER_XC5000=y -# end of Customize TV tuners - -# -# Customise DVB Frontends -# - -# -# Multistandard (satellite) frontends -# -CONFIG_DVB_M88DS3103=m -# CONFIG_DVB_MXL5XX is not set -CONFIG_DVB_STB0899=m -CONFIG_DVB_STB6100=m -CONFIG_DVB_STV090x=m -# CONFIG_DVB_STV0910 is not set -CONFIG_DVB_STV6110x=m -# CONFIG_DVB_STV6111 is not set - -# -# Multistandard (cable + terrestrial) frontends -# -CONFIG_DVB_DRXK=m -CONFIG_DVB_MN88472=m -CONFIG_DVB_MN88473=m -CONFIG_DVB_SI2165=m -CONFIG_DVB_TDA18271C2DD=m - -# -# DVB-S (satellite) frontends -# -# CONFIG_DVB_CX24110 is not set -CONFIG_DVB_CX24116=m -CONFIG_DVB_CX24117=m -CONFIG_DVB_CX24120=m -CONFIG_DVB_CX24123=m -CONFIG_DVB_DS3000=m -# CONFIG_DVB_MB86A16 is not set -CONFIG_DVB_MT312=m -CONFIG_DVB_S5H1420=m -CONFIG_DVB_SI21XX=m -CONFIG_DVB_STB6000=m -CONFIG_DVB_STV0288=m -CONFIG_DVB_STV0299=m -CONFIG_DVB_STV0900=m -CONFIG_DVB_STV6110=m -CONFIG_DVB_TDA10071=m -CONFIG_DVB_TDA10086=m -CONFIG_DVB_TDA8083=m -# CONFIG_DVB_TDA8261 is not set -CONFIG_DVB_TDA826X=m -CONFIG_DVB_TS2020=m -# CONFIG_DVB_TUA6100 is not set -CONFIG_DVB_TUNER_CX24113=m -CONFIG_DVB_TUNER_ITD1000=m -# CONFIG_DVB_VES1X93 is not set -# CONFIG_DVB_ZL10036 is not set -CONFIG_DVB_ZL10039=m - -# -# DVB-T (terrestrial) frontends -# -CONFIG_DVB_AF9013=m -CONFIG_DVB_AS102_FE=m -CONFIG_DVB_CX22700=m -CONFIG_DVB_CX22702=m -CONFIG_DVB_CXD2820R=m -CONFIG_DVB_CXD2841ER=m -CONFIG_DVB_DIB3000MB=m -CONFIG_DVB_DIB3000MC=m -CONFIG_DVB_DIB7000M=m -CONFIG_DVB_DIB7000P=m -# CONFIG_DVB_DIB9000 is not set -CONFIG_DVB_DRXD=m -CONFIG_DVB_EC100=m -CONFIG_DVB_GP8PSK_FE=m -# CONFIG_DVB_L64781 is not set -CONFIG_DVB_MT352=m -CONFIG_DVB_NXT6000=m -CONFIG_DVB_RTL2830=m -CONFIG_DVB_RTL2832=m -CONFIG_DVB_RTL2832_SDR=m -# CONFIG_DVB_S5H1432 is not set -CONFIG_DVB_SI2168=m -# CONFIG_DVB_SP887X is not set -CONFIG_DVB_STV0367=m -CONFIG_DVB_TDA10048=m -CONFIG_DVB_TDA1004X=m -# CONFIG_DVB_ZD1301_DEMOD is not set -CONFIG_DVB_ZL10353=m -# CONFIG_DVB_CXD2880 is not set - -# -# DVB-C (cable) frontends -# -CONFIG_DVB_STV0297=m -# CONFIG_DVB_TDA10021 is not set -CONFIG_DVB_TDA10023=m -CONFIG_DVB_VES1820=m - -# -# ATSC (North American/Korean Terrestrial/Cable DTV) frontends -# -CONFIG_DVB_AU8522=m -CONFIG_DVB_AU8522_DTV=m -CONFIG_DVB_AU8522_V4L=m -CONFIG_DVB_BCM3510=m -CONFIG_DVB_LG2160=m -CONFIG_DVB_LGDT3305=m -CONFIG_DVB_LGDT3306A=m -CONFIG_DVB_LGDT330X=m -CONFIG_DVB_MXL692=m -CONFIG_DVB_NXT200X=m -# CONFIG_DVB_OR51132 is not set -# CONFIG_DVB_OR51211 is not set -CONFIG_DVB_S5H1409=m -CONFIG_DVB_S5H1411=m - -# -# ISDB-T (terrestrial) frontends -# -CONFIG_DVB_DIB8000=m -CONFIG_DVB_MB86A20S=m -CONFIG_DVB_S921=m - -# -# ISDB-S (satellite) & ISDB-T (terrestrial) frontends -# -# CONFIG_DVB_MN88443X is not set -CONFIG_DVB_TC90522=m - -# -# Digital terrestrial only tuners/PLL -# -CONFIG_DVB_PLL=m -CONFIG_DVB_TUNER_DIB0070=m -CONFIG_DVB_TUNER_DIB0090=m - -# -# SEC control devices for DVB-S -# -CONFIG_DVB_A8293=m -CONFIG_DVB_AF9033=m CONFIG_DVB_ASCOT2E=m -CONFIG_DVB_ATBM8830=m CONFIG_DVB_HELENE=m CONFIG_DVB_HORUS3A=m CONFIG_DVB_ISL6405=m -CONFIG_DVB_ISL6421=m -CONFIG_DVB_ISL6423=m -CONFIG_DVB_IX2505V=m CONFIG_DVB_LGS8GL5=m -CONFIG_DVB_LGS8GXX=m CONFIG_DVB_LNBH25=m CONFIG_DVB_LNBH29=m -CONFIG_DVB_LNBP21=m -CONFIG_DVB_LNBP22=m -CONFIG_DVB_M88RS2000=m CONFIG_DVB_TDA665x=m -CONFIG_DVB_DRX39XYJ=m - -# -# Common Interface (EN50221) controller drivers -# CONFIG_DVB_CXD2099=m -CONFIG_DVB_SP2=m -# end of Customise DVB Frontends - -# -# Tools to develop new frontends -# -# CONFIG_DVB_DUMMY_FE is not set -# end of Media ancillary drivers - -# -# Graphics support -# -CONFIG_VIDEO_CMDLINE=y -CONFIG_VIDEO_NOMODESET=y -# CONFIG_AUXDISPLAY is not set CONFIG_DRM=y -CONFIG_DRM_MIPI_DBI=y -CONFIG_DRM_MIPI_DSI=y -# CONFIG_DRM_DEBUG_MM is not set -CONFIG_DRM_KMS_HELPER=y -# CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set -# CONFIG_DRM_DEBUG_MODESET_LOCK is not set -CONFIG_DRM_FBDEV_EMULATION=y -CONFIG_DRM_FBDEV_OVERALLOC=100 -# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set CONFIG_DRM_LOAD_EDID_FIRMWARE=y -CONFIG_DRM_DISPLAY_HELPER=y -CONFIG_DRM_DISPLAY_HDMI_HELPER=y -# CONFIG_DRM_DP_AUX_CHARDEV is not set -# CONFIG_DRM_DP_CEC is not set -CONFIG_DRM_GEM_DMA_HELPER=y -CONFIG_DRM_GEM_SHMEM_HELPER=y -CONFIG_DRM_SCHED=y - -# -# I2C encoder or helper chips -# -# CONFIG_DRM_I2C_CH7006 is not set -# CONFIG_DRM_I2C_SIL164 is not set -# CONFIG_DRM_I2C_NXP_TDA998X is not set -# CONFIG_DRM_I2C_NXP_TDA9950 is not set -# end of I2C encoder or helper chips - -# -# ARM devices -# -# CONFIG_DRM_HDLCD is not set CONFIG_DRM_MALI_DISPLAY=y -# CONFIG_DRM_KOMEDA is not set -# end of ARM devices - -# CONFIG_DRM_RADEON is not set -# CONFIG_DRM_AMDGPU is not set -# CONFIG_DRM_NOUVEAU is not set -# CONFIG_DRM_VGEM is not set -# CONFIG_DRM_VKMS is not set CONFIG_DRM_ROCKCHIP=y -CONFIG_ROCKCHIP_VOP=y CONFIG_ROCKCHIP_VOP2=y -# CONFIG_ROCKCHIP_ANALOGIX_DP is not set -# CONFIG_ROCKCHIP_CDN_DP is not set CONFIG_ROCKCHIP_DW_HDMI=y CONFIG_ROCKCHIP_DW_MIPI_DSI=y -# CONFIG_ROCKCHIP_INNO_HDMI is not set -# CONFIG_ROCKCHIP_LVDS is not set -# CONFIG_ROCKCHIP_RGB is not set -# CONFIG_ROCKCHIP_RK3066_HDMI is not set -# CONFIG_DRM_VMWGFX is not set -# CONFIG_DRM_UDL is not set -# CONFIG_DRM_AST is not set -# CONFIG_DRM_MGAG200 is not set -# CONFIG_DRM_QXL is not set -CONFIG_DRM_PANEL=y - -# -# Display Panels -# -# CONFIG_DRM_PANEL_ABT_Y030XX067A is not set -# CONFIG_DRM_PANEL_ARM_VERSATILE is not set -# CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596 is not set -# CONFIG_DRM_PANEL_AUO_A030JTN01 is not set -# CONFIG_DRM_PANEL_BOE_BF060Y8M_AJ0 is not set -# CONFIG_DRM_PANEL_BOE_HIMAX8279D is not set -# CONFIG_DRM_PANEL_BOE_TV101WUM_NL6 is not set -# CONFIG_DRM_PANEL_DSI_CM is not set -# CONFIG_DRM_PANEL_LVDS is not set -# CONFIG_DRM_PANEL_SIMPLE is not set -# CONFIG_DRM_PANEL_EDP is not set -# CONFIG_DRM_PANEL_EBBG_FT8719 is not set CONFIG_DRM_PANEL_ELIDA_KD35T133=y -# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set -# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set -# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set -# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set -# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set -# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set -# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set -# CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set -# CONFIG_DRM_PANEL_JADARD_JD9365DA_H3 is not set -# CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set -# CONFIG_DRM_PANEL_JDI_R63452 is not set -# CONFIG_DRM_PANEL_KHADAS_TS050 is not set -# CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04 is not set -# CONFIG_DRM_PANEL_LEADTEK_LTK050H3146W is not set -# CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 is not set -# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set -# CONFIG_DRM_PANEL_LG_LB035Q02 is not set -# CONFIG_DRM_PANEL_LG_LG4573 is not set +CONFIG_DRM_PANEL_HIMAX_HX8394=y CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=y -# CONFIG_DRM_PANEL_NEC_NL8048HL11 is not set CONFIG_DRM_PANEL_NEWVISION_NV3051D=y -# CONFIG_DRM_PANEL_NEWVISION_NV3052C is not set -# CONFIG_DRM_PANEL_NOVATEK_NT35510 is not set -# CONFIG_DRM_PANEL_NOVATEK_NT35560 is not set -# CONFIG_DRM_PANEL_NOVATEK_NT35950 is not set -# CONFIG_DRM_PANEL_NOVATEK_NT36523 is not set -# CONFIG_DRM_PANEL_NOVATEK_NT36672A is not set -# CONFIG_DRM_PANEL_NOVATEK_NT39016 is not set -# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set -# CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO is not set -# CONFIG_DRM_PANEL_ORISETECH_OTA5601A is not set -# CONFIG_DRM_PANEL_ORISETECH_OTM8009A is not set -# CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS is not set -# CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set -# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set -# CONFIG_DRM_PANEL_RAYDIUM_RM67191 is not set -# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set -# CONFIG_DRM_PANEL_RONBO_RB070D30 is not set -# CONFIG_DRM_PANEL_SAMSUNG_ATNA33XC20 is not set -# CONFIG_DRM_PANEL_SAMSUNG_DB7430 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6D16D0 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6D27A1 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6D7AA0 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set -# CONFIG_DRM_PANEL_SAMSUNG_SOFEF00 is not set -# CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set -# CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 is not set -# CONFIG_DRM_PANEL_SHARP_LS037V7DW01 is not set -# CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set -# CONFIG_DRM_PANEL_SHARP_LS060T1SX01 is not set -# CONFIG_DRM_PANEL_SITRONIX_ST7701 is not set +CONFIG_DRM_PANEL_SITRONIX_ST7701=y CONFIG_DRM_PANEL_SITRONIX_ST7703=y -# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set -# CONFIG_DRM_PANEL_SONY_ACX565AKM is not set -# CONFIG_DRM_PANEL_SONY_TD4353_JDI is not set -# CONFIG_DRM_PANEL_SONY_TULIP_TRULY_NT35521 is not set -# CONFIG_DRM_PANEL_STARTEK_KD070FHFID015 is not set -# CONFIG_DRM_PANEL_TDO_TL070WSH30 is not set -# CONFIG_DRM_PANEL_TPO_TD028TTEC1 is not set -# CONFIG_DRM_PANEL_TPO_TD043MTEA1 is not set -# CONFIG_DRM_PANEL_TPO_TPG110 is not set -# CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA is not set -# CONFIG_DRM_PANEL_VISIONOX_RM69299 is not set -# CONFIG_DRM_PANEL_VISIONOX_VTDR6130 is not set -# CONFIG_DRM_PANEL_VISIONOX_R66451 is not set -# CONFIG_DRM_PANEL_WIDECHIPS_WS2401 is not set -# CONFIG_DRM_PANEL_XINPENG_XPP055C272 is not set -# end of Display Panels - -CONFIG_DRM_BRIDGE=y -CONFIG_DRM_PANEL_BRIDGE=y - -# -# Display Interface Bridges -# -# CONFIG_DRM_CHIPONE_ICN6211 is not set -# CONFIG_DRM_CHRONTEL_CH7033 is not set CONFIG_DRM_DISPLAY_CONNECTOR=y -# CONFIG_DRM_ITE_IT6505 is not set -# CONFIG_DRM_LONTIUM_LT8912B is not set -# CONFIG_DRM_LONTIUM_LT9211 is not set -# CONFIG_DRM_LONTIUM_LT9611 is not set -# CONFIG_DRM_LONTIUM_LT9611UXC is not set -# CONFIG_DRM_ITE_IT66121 is not set -# CONFIG_DRM_LVDS_CODEC is not set -# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set -# CONFIG_DRM_NWL_MIPI_DSI is not set -# CONFIG_DRM_NXP_PTN3460 is not set -# CONFIG_DRM_PARADE_PS8622 is not set -# CONFIG_DRM_PARADE_PS8640 is not set -# CONFIG_DRM_SAMSUNG_DSIM is not set -# CONFIG_DRM_SIL_SII8620 is not set -# CONFIG_DRM_SII902X is not set -# CONFIG_DRM_SII9234 is not set -# CONFIG_DRM_SIMPLE_BRIDGE is not set -# CONFIG_DRM_THINE_THC63LVD1024 is not set -# CONFIG_DRM_TOSHIBA_TC358762 is not set -# CONFIG_DRM_TOSHIBA_TC358764 is not set -# CONFIG_DRM_TOSHIBA_TC358767 is not set -# CONFIG_DRM_TOSHIBA_TC358768 is not set -# CONFIG_DRM_TOSHIBA_TC358775 is not set -# CONFIG_DRM_TI_DLPC3433 is not set -# CONFIG_DRM_TI_TFP410 is not set -# CONFIG_DRM_TI_SN65DSI83 is not set -# CONFIG_DRM_TI_SN65DSI86 is not set -# CONFIG_DRM_TI_TPD12S015 is not set -# CONFIG_DRM_ANALOGIX_ANX6345 is not set -# CONFIG_DRM_ANALOGIX_ANX78XX is not set -# CONFIG_DRM_ANALOGIX_ANX7625 is not set -# CONFIG_DRM_I2C_ADV7511 is not set -# CONFIG_DRM_CDNS_DSI is not set -# CONFIG_DRM_CDNS_MHDP8546 is not set -CONFIG_DRM_DW_HDMI=y -# CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set -CONFIG_DRM_DW_HDMI_I2S_AUDIO=m -# CONFIG_DRM_DW_HDMI_GP_AUDIO is not set CONFIG_DRM_DW_HDMI_CEC=y -CONFIG_DRM_DW_MIPI_DSI=y -# end of Display Interface Bridges - -# CONFIG_DRM_LOONGSON is not set -# CONFIG_DRM_ETNAVIV is not set -# CONFIG_DRM_HISI_HIBMC is not set -# CONFIG_DRM_HISI_KIRIN is not set -# CONFIG_DRM_LOGICVC is not set -# CONFIG_DRM_ARCPGU is not set -# CONFIG_DRM_BOCHS is not set -# CONFIG_DRM_CIRRUS_QEMU is not set -# CONFIG_DRM_GM12U320 is not set CONFIG_DRM_PANEL_MIPI_DBI=y -# CONFIG_DRM_SIMPLEDRM is not set -# CONFIG_TINYDRM_HX8357D is not set -# CONFIG_TINYDRM_ILI9163 is not set -# CONFIG_TINYDRM_ILI9225 is not set -# CONFIG_TINYDRM_ILI9341 is not set -# CONFIG_TINYDRM_ILI9486 is not set -# CONFIG_TINYDRM_MI0283QT is not set -# CONFIG_TINYDRM_REPAPER is not set -# CONFIG_TINYDRM_ST7586 is not set -# CONFIG_TINYDRM_ST7735R is not set -# CONFIG_DRM_PL111 is not set -# CONFIG_DRM_LIMA is not set CONFIG_DRM_PANFROST=y -# CONFIG_DRM_TIDSS is not set -# CONFIG_DRM_GUD is not set -# CONFIG_DRM_SSD130X is not set -# CONFIG_DRM_LEGACY is not set -CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y - -# -# Frame buffer Devices -# CONFIG_FB=y -# CONFIG_FB_CIRRUS is not set -# CONFIG_FB_PM2 is not set -# CONFIG_FB_ARMCLCD is not set -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_ASILIANT is not set -# CONFIG_FB_IMSTT is not set -# CONFIG_FB_UVESA is not set -# CONFIG_FB_OPENCORES is not set -# CONFIG_FB_S1D13XXX is not set -# CONFIG_FB_NVIDIA is not set -# CONFIG_FB_RIVA is not set -# CONFIG_FB_I740 is not set -# CONFIG_FB_MATROX is not set -# CONFIG_FB_RADEON is not set -# CONFIG_FB_ATY128 is not set -# CONFIG_FB_ATY is not set -# CONFIG_FB_S3 is not set -# CONFIG_FB_SAVAGE is not set -# CONFIG_FB_SIS is not set -# CONFIG_FB_NEOMAGIC is not set -# CONFIG_FB_KYRO is not set -# CONFIG_FB_3DFX is not set -# CONFIG_FB_VOODOO1 is not set -# CONFIG_FB_VT8623 is not set -# CONFIG_FB_TRIDENT is not set -# CONFIG_FB_ARK is not set -# CONFIG_FB_PM3 is not set -# CONFIG_FB_CARMINE is not set -# CONFIG_FB_SMSCUFX is not set -# CONFIG_FB_UDL is not set -# CONFIG_FB_IBM_GXT4500 is not set -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FB_METRONOME is not set -# CONFIG_FB_MB862XX is not set -# CONFIG_FB_SIMPLE is not set -# CONFIG_FB_SSD1307 is not set -# CONFIG_FB_SM712 is not set -CONFIG_FB_CORE=y -CONFIG_FB_NOTIFY=y CONFIG_FIRMWARE_EDID=y -CONFIG_FB_DEVICE=y -CONFIG_FB_SYS_FILLRECT=y -CONFIG_FB_SYS_COPYAREA=y -CONFIG_FB_SYS_IMAGEBLIT=y -# CONFIG_FB_FOREIGN_ENDIAN is not set -CONFIG_FB_SYS_FOPS=y -CONFIG_FB_DEFERRED_IO=y -CONFIG_FB_DMAMEM_HELPERS=y -CONFIG_FB_SYSMEM_HELPERS=y -CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y CONFIG_FB_MODE_HELPERS=y -# CONFIG_FB_TILEBLITTING is not set -# end of Frame buffer Devices - -# -# Backlight & LCD device support -# -# CONFIG_LCD_CLASS_DEVICE is not set -CONFIG_BACKLIGHT_CLASS_DEVICE=y -# CONFIG_BACKLIGHT_KTD253 is not set -# CONFIG_BACKLIGHT_KTZ8866 is not set CONFIG_BACKLIGHT_PWM=y -# CONFIG_BACKLIGHT_QCOM_WLED is not set -# CONFIG_BACKLIGHT_ADP8860 is not set -# CONFIG_BACKLIGHT_ADP8870 is not set -# CONFIG_BACKLIGHT_LM3630A is not set -# CONFIG_BACKLIGHT_LM3639 is not set -# CONFIG_BACKLIGHT_LP855X is not set -# CONFIG_BACKLIGHT_GPIO is not set -# CONFIG_BACKLIGHT_LV5207LP is not set -# CONFIG_BACKLIGHT_BD6107 is not set -# CONFIG_BACKLIGHT_ARCXCNN is not set CONFIG_BACKLIGHT_LED=y -# end of Backlight & LCD device support - -CONFIG_VIDEOMODE_HELPERS=y -CONFIG_HDMI=y - -# -# Console display driver support -# -CONFIG_DUMMY_CONSOLE=y -CONFIG_DUMMY_CONSOLE_COLUMNS=80 -CONFIG_DUMMY_CONSOLE_ROWS=25 -CONFIG_FRAMEBUFFER_CONSOLE=y -# CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION is not set -CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y -# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set -# end of Console display driver support - -# CONFIG_LOGO is not set -# end of Graphics support - -# CONFIG_DRM_ACCEL is not set CONFIG_SOUND=y CONFIG_SND=y -CONFIG_SND_TIMER=y -CONFIG_SND_PCM=y -CONFIG_SND_PCM_ELD=y -CONFIG_SND_PCM_IEC958=y -CONFIG_SND_DMAENGINE_PCM=y -CONFIG_SND_HWDEP=y -CONFIG_SND_SEQ_DEVICE=y -CONFIG_SND_RAWMIDI=y -CONFIG_SND_JACK=y -CONFIG_SND_JACK_INPUT_DEV=y -# CONFIG_SND_OSSEMUL is not set -CONFIG_SND_PCM_TIMER=y CONFIG_SND_HRTIMER=y CONFIG_SND_DYNAMIC_MINORS=y -CONFIG_SND_MAX_CARDS=32 # CONFIG_SND_SUPPORT_OLD_API is not set -CONFIG_SND_PROC_FS=y # CONFIG_SND_VERBOSE_PROCFS is not set CONFIG_SND_VERBOSE_PRINTK=y -CONFIG_SND_CTL_FAST_LOOKUP=y -# CONFIG_SND_DEBUG is not set -# CONFIG_SND_CTL_INPUT_VALIDATION is not set CONFIG_SND_SEQUENCER=y CONFIG_SND_SEQ_DUMMY=y -CONFIG_SND_SEQ_HRTIMER_DEFAULT=y -CONFIG_SND_SEQ_MIDI_EVENT=y -CONFIG_SND_SEQ_MIDI=y -# CONFIG_SND_SEQ_UMP is not set # CONFIG_SND_DRIVERS is not set # CONFIG_SND_PCI is not set - -# -# HD-Audio -# -# end of HD-Audio - -CONFIG_SND_HDA_PREALLOC_SIZE=64 # CONFIG_SND_SPI is not set -CONFIG_SND_USB=y CONFIG_SND_USB_AUDIO=y -# CONFIG_SND_USB_AUDIO_MIDI_V2 is not set -CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=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_USB_POD is not set -# CONFIG_SND_USB_PODHD is not set -# CONFIG_SND_USB_TONEPORT is not set -# CONFIG_SND_USB_VARIAX is not set CONFIG_SND_SOC=y -CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y -# CONFIG_SND_SOC_ADI is not set -# CONFIG_SND_SOC_AMD_ACP is not set -# CONFIG_SND_AMD_ACP_CONFIG is not set -# CONFIG_SND_ATMEL_SOC is not set -# CONFIG_SND_BCM63XX_I2S_WHISTLER 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=y -# CONFIG_SND_SOC_FSL_MQS is not set -# CONFIG_SND_SOC_FSL_AUDMIX 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_FSL_MICFIL is not set -# CONFIG_SND_SOC_FSL_XCVR is not set -CONFIG_SND_SOC_FSL_UTILS=y -# CONFIG_SND_SOC_IMX_AUDMUX is not set -# end of SoC Audio for Freescale CPUs - -# CONFIG_SND_SOC_CHV3_I2S is not set -# CONFIG_SND_I2S_HI6210_I2S is not set -# CONFIG_SND_SOC_IMG is not set -# CONFIG_SND_SOC_MTK_BTCVSD is not set CONFIG_SND_SOC_ROCKCHIP=y -CONFIG_SND_SOC_ROCKCHIP_I2S=y CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=y CONFIG_SND_SOC_ROCKCHIP_PDM=y CONFIG_SND_SOC_ROCKCHIP_SPDIF=y -# CONFIG_SND_SOC_ROCKCHIP_MAX98090 is not set -# CONFIG_SND_SOC_ROCKCHIP_RT5645 is not set -# CONFIG_SND_SOC_RK3288_HDMI_ANALOG is not set -# CONFIG_SND_SOC_RK3399_GRU_SOUND is not set -# CONFIG_SND_SOC_SOF_TOPLEVEL is not set - -# -# STMicroelectronics STM32 SOC audio support -# -# end of STMicroelectronics STM32 SOC audio support - -# CONFIG_SND_SOC_XILINX_I2S is not set -# CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set -# CONFIG_SND_SOC_XILINX_SPDIF is not set -# CONFIG_SND_SOC_XTFPGA_I2S is not set -CONFIG_SND_SOC_I2C_AND_SPI=y - -# -# CODEC drivers -# -# CONFIG_SND_SOC_AC97_CODEC is not set -# CONFIG_SND_SOC_ADAU1372_I2C is not set -# CONFIG_SND_SOC_ADAU1372_SPI is not set -# CONFIG_SND_SOC_ADAU1701 is not set -# CONFIG_SND_SOC_ADAU1761_I2C is not set -# CONFIG_SND_SOC_ADAU1761_SPI is not set -# CONFIG_SND_SOC_ADAU7002 is not set -# CONFIG_SND_SOC_ADAU7118_HW is not set -# CONFIG_SND_SOC_ADAU7118_I2C is not set -# CONFIG_SND_SOC_AK4104 is not set -# CONFIG_SND_SOC_AK4118 is not set -# CONFIG_SND_SOC_AK4375 is not set -# CONFIG_SND_SOC_AK4458 is not set -# CONFIG_SND_SOC_AK4554 is not set -# CONFIG_SND_SOC_AK4613 is not set -# CONFIG_SND_SOC_AK4642 is not set -# CONFIG_SND_SOC_AK5386 is not set -# CONFIG_SND_SOC_AK5558 is not set -# CONFIG_SND_SOC_ALC5623 is not set -# CONFIG_SND_SOC_AUDIO_IIO_AUX is not set -# CONFIG_SND_SOC_AW8738 is not set -# CONFIG_SND_SOC_AW88395 is not set -# CONFIG_SND_SOC_AW88261 is not set -# CONFIG_SND_SOC_BD28623 is not set -# CONFIG_SND_SOC_BT_SCO is not set -# CONFIG_SND_SOC_CHV3_CODEC is not set -# CONFIG_SND_SOC_CS35L32 is not set -# CONFIG_SND_SOC_CS35L33 is not set -# CONFIG_SND_SOC_CS35L34 is not set -# CONFIG_SND_SOC_CS35L35 is not set -# CONFIG_SND_SOC_CS35L36 is not set -# CONFIG_SND_SOC_CS35L41_SPI is not set -# CONFIG_SND_SOC_CS35L41_I2C is not set -# CONFIG_SND_SOC_CS35L45_SPI is not set -# CONFIG_SND_SOC_CS35L45_I2C is not set -# CONFIG_SND_SOC_CS35L56_I2C is not set -# CONFIG_SND_SOC_CS35L56_SPI is not set -# CONFIG_SND_SOC_CS42L42 is not set -# CONFIG_SND_SOC_CS42L51_I2C is not set -# CONFIG_SND_SOC_CS42L52 is not set -# CONFIG_SND_SOC_CS42L56 is not set -# CONFIG_SND_SOC_CS42L73 is not set -# CONFIG_SND_SOC_CS42L83 is not set -# CONFIG_SND_SOC_CS4234 is not set -# CONFIG_SND_SOC_CS4265 is not set -# CONFIG_SND_SOC_CS4270 is not set -# CONFIG_SND_SOC_CS4271_I2C is not set -# CONFIG_SND_SOC_CS4271_SPI is not set -# CONFIG_SND_SOC_CS42XX8_I2C is not set -# CONFIG_SND_SOC_CS43130 is not set -# CONFIG_SND_SOC_CS4341 is not set -# CONFIG_SND_SOC_CS4349 is not set -# CONFIG_SND_SOC_CS53L30 is not set -# CONFIG_SND_SOC_CX2072X is not set -# CONFIG_SND_SOC_DA7213 is not set -# CONFIG_SND_SOC_DMIC is not set -CONFIG_SND_SOC_HDMI_CODEC=m -# CONFIG_SND_SOC_ES7134 is not set -# CONFIG_SND_SOC_ES7241 is not set +CONFIG_SND_SOC_RK3288_HDMI_ANALOG=y CONFIG_SND_SOC_ES8316=y -# CONFIG_SND_SOC_ES8326 is not set -# CONFIG_SND_SOC_ES8328_I2C is not set -# CONFIG_SND_SOC_ES8328_SPI is not set -# CONFIG_SND_SOC_GTM601 is not set -# CONFIG_SND_SOC_HDA is not set -# CONFIG_SND_SOC_ICS43432 is not set -# CONFIG_SND_SOC_IDT821034 is not set -# CONFIG_SND_SOC_INNO_RK3036 is not set -# CONFIG_SND_SOC_MAX98088 is not set CONFIG_SND_SOC_MAX98090=y -# CONFIG_SND_SOC_MAX98357A is not set -# CONFIG_SND_SOC_MAX98504 is not set -# CONFIG_SND_SOC_MAX9867 is not set -# CONFIG_SND_SOC_MAX98927 is not set -# CONFIG_SND_SOC_MAX98520 is not set -# CONFIG_SND_SOC_MAX98373_I2C is not set -# CONFIG_SND_SOC_MAX98388 is not set -# CONFIG_SND_SOC_MAX98390 is not set -# CONFIG_SND_SOC_MAX98396 is not set -# CONFIG_SND_SOC_MAX9860 is not set -# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set -# CONFIG_SND_SOC_PCM1681 is not set -# CONFIG_SND_SOC_PCM1789_I2C is not set -# CONFIG_SND_SOC_PCM179X_I2C is not set -# CONFIG_SND_SOC_PCM179X_SPI is not set -# CONFIG_SND_SOC_PCM186X_I2C is not set -# CONFIG_SND_SOC_PCM186X_SPI is not set -# CONFIG_SND_SOC_PCM3060_I2C is not set -# CONFIG_SND_SOC_PCM3060_SPI is not set -# CONFIG_SND_SOC_PCM3168A_I2C is not set -# CONFIG_SND_SOC_PCM3168A_SPI is not set -# CONFIG_SND_SOC_PCM5102A is not set -# CONFIG_SND_SOC_PCM512x_I2C is not set -# CONFIG_SND_SOC_PCM512x_SPI is not set -# CONFIG_SND_SOC_PEB2466 is not set -# CONFIG_SND_SOC_RK3328 is not set CONFIG_SND_SOC_RK817=y -# CONFIG_SND_SOC_RT5616 is not set -# CONFIG_SND_SOC_RT5631 is not set -# CONFIG_SND_SOC_RT5640 is not set -# CONFIG_SND_SOC_RT5659 is not set -# CONFIG_SND_SOC_RT9120 is not set -# CONFIG_SND_SOC_SGTL5000 is not set CONFIG_SND_SOC_SIMPLE_AMPLIFIER=y -# CONFIG_SND_SOC_SIMPLE_MUX is not set -# CONFIG_SND_SOC_SMA1303 is not set CONFIG_SND_SOC_SPDIF=y -# CONFIG_SND_SOC_SRC4XXX_I2C is not set -# CONFIG_SND_SOC_SSM2305 is not set -# CONFIG_SND_SOC_SSM2518 is not set -# CONFIG_SND_SOC_SSM2602_SPI is not set -# CONFIG_SND_SOC_SSM2602_I2C is not set -# CONFIG_SND_SOC_SSM3515 is not set -# CONFIG_SND_SOC_SSM4567 is not set -# CONFIG_SND_SOC_STA32X is not set -# CONFIG_SND_SOC_STA350 is not set -# CONFIG_SND_SOC_STI_SAS is not set -# CONFIG_SND_SOC_TAS2552 is not set -# CONFIG_SND_SOC_TAS2562 is not set -# CONFIG_SND_SOC_TAS2764 is not set -# CONFIG_SND_SOC_TAS2770 is not set -# CONFIG_SND_SOC_TAS2780 is not set -# CONFIG_SND_SOC_TAS2781_I2C is not set -# CONFIG_SND_SOC_TAS5086 is not set -# CONFIG_SND_SOC_TAS571X is not set -# CONFIG_SND_SOC_TAS5720 is not set -# CONFIG_SND_SOC_TAS5805M is not set -# CONFIG_SND_SOC_TAS6424 is not set -# CONFIG_SND_SOC_TDA7419 is not set -# CONFIG_SND_SOC_TFA9879 is not set -# CONFIG_SND_SOC_TFA989X is not set -# CONFIG_SND_SOC_TLV320ADC3XXX is not set -# CONFIG_SND_SOC_TLV320AIC23_I2C is not set -# CONFIG_SND_SOC_TLV320AIC23_SPI is not set -# CONFIG_SND_SOC_TLV320AIC31XX is not set -# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set -# CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set -# CONFIG_SND_SOC_TLV320AIC3X_I2C is not set -# CONFIG_SND_SOC_TLV320AIC3X_SPI is not set -# CONFIG_SND_SOC_TLV320ADCX140 is not set CONFIG_SND_SOC_TS3A227E=y -# CONFIG_SND_SOC_TSCS42XX is not set -# CONFIG_SND_SOC_TSCS454 is not set -# CONFIG_SND_SOC_UDA1334 is not set -# CONFIG_SND_SOC_WM8510 is not set -# CONFIG_SND_SOC_WM8523 is not set -# CONFIG_SND_SOC_WM8524 is not set -# CONFIG_SND_SOC_WM8580 is not set -# CONFIG_SND_SOC_WM8711 is not set -# CONFIG_SND_SOC_WM8728 is not set -# CONFIG_SND_SOC_WM8731_I2C is not set -# CONFIG_SND_SOC_WM8731_SPI is not set -# CONFIG_SND_SOC_WM8737 is not set -# CONFIG_SND_SOC_WM8741 is not set -# CONFIG_SND_SOC_WM8750 is not set -# CONFIG_SND_SOC_WM8753 is not set -# CONFIG_SND_SOC_WM8770 is not set -# CONFIG_SND_SOC_WM8776 is not set -# CONFIG_SND_SOC_WM8782 is not set -# CONFIG_SND_SOC_WM8804_I2C is not set -# CONFIG_SND_SOC_WM8804_SPI is not set -# CONFIG_SND_SOC_WM8903 is not set -# CONFIG_SND_SOC_WM8904 is not set -# CONFIG_SND_SOC_WM8940 is not set -# CONFIG_SND_SOC_WM8960 is not set -# CONFIG_SND_SOC_WM8961 is not set -# CONFIG_SND_SOC_WM8962 is not set -# CONFIG_SND_SOC_WM8974 is not set -# CONFIG_SND_SOC_WM8978 is not set -# CONFIG_SND_SOC_WM8985 is not set -# CONFIG_SND_SOC_ZL38060 is not set -# CONFIG_SND_SOC_MAX9759 is not set -# CONFIG_SND_SOC_MT6351 is not set -# CONFIG_SND_SOC_MT6358 is not set -# CONFIG_SND_SOC_MT6660 is not set -# CONFIG_SND_SOC_NAU8315 is not set -# CONFIG_SND_SOC_NAU8540 is not set -# CONFIG_SND_SOC_NAU8810 is not set -# CONFIG_SND_SOC_NAU8821 is not set -# CONFIG_SND_SOC_NAU8822 is not set -# CONFIG_SND_SOC_NAU8824 is not set -# CONFIG_SND_SOC_TPA6130A2 is not set -# CONFIG_SND_SOC_LPASS_WSA_MACRO is not set -# CONFIG_SND_SOC_LPASS_VA_MACRO is not set -# CONFIG_SND_SOC_LPASS_RX_MACRO is not set -# CONFIG_SND_SOC_LPASS_TX_MACRO is not set -# end of CODEC drivers - -CONFIG_SND_SIMPLE_CARD_UTILS=y CONFIG_SND_SIMPLE_CARD=y CONFIG_SND_AUDIO_GRAPH_CARD=y CONFIG_SND_AUDIO_GRAPH_CARD2=y CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE=y CONFIG_SND_TEST_COMPONENT=y -CONFIG_HID_SUPPORT=y -CONFIG_HID=y CONFIG_HID_BATTERY_STRENGTH=y CONFIG_HIDRAW=y CONFIG_UHID=y -CONFIG_HID_GENERIC=y - -# -# Special HID drivers -# CONFIG_HID_A4TECH=y -# CONFIG_HID_ACCUTOUCH is not set CONFIG_HID_ACRUX=y -# CONFIG_HID_ACRUX_FF is not set CONFIG_HID_APPLE=y CONFIG_HID_APPLEIR=y -# CONFIG_HID_ASUS is not set CONFIG_HID_AUREAL=y CONFIG_HID_BELKIN=y CONFIG_HID_BETOP_FF=y -# CONFIG_HID_BIGBEN_FF is not set CONFIG_HID_CHERRY=y CONFIG_HID_CHICONY=y CONFIG_HID_CORSAIR=y -# CONFIG_HID_COUGAR is not set -# CONFIG_HID_MACALLY is not set CONFIG_HID_PRODIKEYS=y -# CONFIG_HID_CMEDIA is not set CONFIG_HID_CP2112=y -# CONFIG_HID_CREATIVE_SB0540 is not set CONFIG_HID_CYPRESS=y CONFIG_HID_DRAGONRISE=y CONFIG_DRAGONRISE_FF=y CONFIG_HID_EMS_FF=y -# CONFIG_HID_ELAN is not set CONFIG_HID_ELECOM=y CONFIG_HID_ELO=y -# CONFIG_HID_EVISION is not set CONFIG_HID_EZKEY=y -# CONFIG_HID_FT260 is not set CONFIG_HID_GEMBIRD=y CONFIG_HID_GFRM=y -# CONFIG_HID_GLORIOUS is not set CONFIG_HID_HOLTEK=y CONFIG_HOLTEK_FF=y -# CONFIG_HID_GOOGLE_STADIA_FF is not set -# CONFIG_HID_VIVALDI is not set CONFIG_HID_GT683R=y CONFIG_HID_KEYTOUCH=y CONFIG_HID_KYE=y CONFIG_HID_UCLOGIC=y CONFIG_HID_WALTOP=y -# CONFIG_HID_VIEWSONIC is not set -# CONFIG_HID_VRC2 is not set -# CONFIG_HID_XIAOMI is not set CONFIG_HID_GYRATION=y CONFIG_HID_ICADE=y -# CONFIG_HID_ITE is not set -# CONFIG_HID_JABRA is not set CONFIG_HID_TWINHAN=y CONFIG_HID_KENSINGTON=y CONFIG_HID_LCPOWER=y -CONFIG_HID_LED=y CONFIG_HID_LENOVO=y -# CONFIG_HID_LETSKETCH is not set CONFIG_HID_LOGITECH=y CONFIG_HID_LOGITECH_DJ=y -CONFIG_HID_LOGITECH_HIDPP=y CONFIG_LOGITECH_FF=y CONFIG_LOGIRUMBLEPAD2_FF=y CONFIG_LOGIG940_FF=y -CONFIG_LOGIWHEELS_FF=y CONFIG_HID_MAGICMOUSE=y -# CONFIG_HID_MALTRON is not set -# CONFIG_HID_MAYFLASH is not set -# CONFIG_HID_MEGAWORLD_FF is not set -# CONFIG_HID_REDRAGON is not set CONFIG_HID_MICROSOFT=y CONFIG_HID_MONTEREY=y CONFIG_HID_MULTITOUCH=y -# CONFIG_HID_NINTENDO is not set -# CONFIG_HID_NTI is not set CONFIG_HID_NTRIG=y -# CONFIG_HID_NVIDIA_SHIELD is not set CONFIG_HID_ORTEK=y CONFIG_HID_PANTHERLORD=y CONFIG_PANTHERLORD_FF=y CONFIG_HID_PENMOUNT=y CONFIG_HID_PETALYNX=y -# CONFIG_HID_PICOLCD is not set CONFIG_HID_PLANTRONICS=y -# CONFIG_HID_PXRC is not set -# CONFIG_HID_RAZER is not set CONFIG_HID_PRIMAX=y -# CONFIG_HID_RETRODE is not set CONFIG_HID_ROCCAT=y CONFIG_HID_SAITEK=y CONFIG_HID_SAMSUNG=y -# CONFIG_HID_SEMITEK is not set -# CONFIG_HID_SIGMAMICRO is not set CONFIG_HID_SONY=y -# CONFIG_SONY_FF is not set CONFIG_HID_SPEEDLINK=y -# CONFIG_HID_STEAM is not set CONFIG_HID_STEELSERIES=y CONFIG_HID_SUNPLUS=y CONFIG_HID_RMI=y @@ -5509,12 +838,9 @@ CONFIG_HID_SMARTJOYPLUS=y CONFIG_SMARTJOYPLUS_FF=y CONFIG_HID_TIVO=y CONFIG_HID_TOPSEED=y -# CONFIG_HID_TOPRE is not set CONFIG_HID_THINGM=y CONFIG_HID_THRUSTMASTER=y CONFIG_THRUSTMASTER_FF=y -# CONFIG_HID_UDRAW_PS3 is not set -# CONFIG_HID_U2FZERO is not set CONFIG_HID_WACOM=y CONFIG_HID_WIIMOTE=y CONFIG_HID_XINMO=y @@ -5524,100 +850,25 @@ CONFIG_HID_ZYDACRON=y CONFIG_HID_SENSOR_HUB=y CONFIG_HID_SENSOR_CUSTOM_SENSOR=y CONFIG_HID_ALPS=y -# CONFIG_HID_MCP2221 is not set -# end of Special HID drivers - -# -# HID-BPF support -# -# end of HID-BPF support - -# -# USB HID support -# -CONFIG_USB_HID=y -# CONFIG_HID_PID is not set CONFIG_USB_HIDDEV=y -# end of USB HID support - -CONFIG_I2C_HID=y -# CONFIG_I2C_HID_OF is not set -# CONFIG_I2C_HID_OF_ELAN is not set CONFIG_I2C_HID_OF_GOODIX=y -CONFIG_I2C_HID_CORE=y -CONFIG_USB_OHCI_LITTLE_ENDIAN=y -CONFIG_USB_SUPPORT=y -CONFIG_USB_COMMON=y -# CONFIG_USB_LED_TRIG is not set -# CONFIG_USB_ULPI_BUS is not set -# CONFIG_USB_CONN_GPIO is not set -CONFIG_USB_ARCH_HAS_HCD=y -CONFIG_USB=y -CONFIG_USB_PCI=y CONFIG_USB_ANNOUNCE_NEW_DEVICES=y - -# -# Miscellaneous USB options -# # CONFIG_USB_DEFAULT_PERSIST is not set -# CONFIG_USB_FEW_INIT_RETRIES is not set -# CONFIG_USB_DYNAMIC_MINORS is not set CONFIG_USB_OTG=y CONFIG_USB_OTG_PRODUCTLIST=y -# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set CONFIG_USB_OTG_FSM=y CONFIG_USB_LEDS_TRIGGER_USBPORT=y -CONFIG_USB_AUTOSUSPEND_DELAY=2 CONFIG_USB_MON=y - -# -# USB Host Controller Drivers -# -# CONFIG_USB_C67X00_HCD is not set CONFIG_USB_XHCI_HCD=y -# CONFIG_USB_XHCI_DBGCAP is not set -CONFIG_USB_XHCI_PCI=y -# CONFIG_USB_XHCI_PCI_RENESAS is not set -CONFIG_USB_XHCI_PLATFORM=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y -CONFIG_USB_EHCI_TT_NEWSCHED=y -CONFIG_USB_EHCI_PCI=y -# CONFIG_USB_EHCI_FSL is not set CONFIG_USB_EHCI_HCD_PLATFORM=y -# CONFIG_USB_OXU210HP_HCD is not set -# CONFIG_USB_ISP116X_HCD is not set -# CONFIG_USB_MAX3421_HCD is not set CONFIG_USB_OHCI_HCD=y # CONFIG_USB_OHCI_HCD_PCI is not set -# CONFIG_USB_OHCI_HCD_SSB is not set CONFIG_USB_OHCI_HCD_PLATFORM=y -# CONFIG_USB_UHCI_HCD is not set -# CONFIG_USB_SL811_HCD is not set -# CONFIG_USB_R8A66597_HCD is not set -# CONFIG_USB_HCD_BCMA is not set -# CONFIG_USB_HCD_SSB is not set -# CONFIG_USB_HCD_TEST_MODE is not set - -# -# USB Device Class drivers -# CONFIG_USB_ACM=y -# CONFIG_USB_PRINTER is not set -CONFIG_USB_WDM=y -# 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=y -CONFIG_REALTEK_AUTOPM=y CONFIG_USB_STORAGE_DATAFAB=y CONFIG_USB_STORAGE_FREECOM=y CONFIG_USB_STORAGE_ISD200=y @@ -5631,1448 +882,117 @@ CONFIG_USB_STORAGE_KARMA=y CONFIG_USB_STORAGE_CYPRESS_ATACB=y CONFIG_USB_STORAGE_ENE_UB6250=y CONFIG_USB_UAS=y - -# -# USB Imaging devices -# -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USBIP_CORE is not set - -# -# USB dual-mode controller drivers -# -# CONFIG_USB_CDNS_SUPPORT is not set -# CONFIG_USB_MUSB_HDRC is not set CONFIG_USB_DWC3=y -# CONFIG_USB_DWC3_HOST is not set -# CONFIG_USB_DWC3_GADGET is not set -CONFIG_USB_DWC3_DUAL_ROLE=y - -# -# Platform Glue Driver Support -# -CONFIG_USB_DWC3_HAPS=y -CONFIG_USB_DWC3_OF_SIMPLE=y CONFIG_USB_DWC2=y -# CONFIG_USB_DWC2_HOST is not set - -# -# Gadget/Dual-role mode requires USB Gadget support to be enabled -# -# CONFIG_USB_DWC2_PERIPHERAL is not set -CONFIG_USB_DWC2_DUAL_ROLE=y -# CONFIG_USB_DWC2_PCI is not set -# CONFIG_USB_DWC2_DEBUG is not set -# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set -# CONFIG_USB_CHIPIDEA is not set -# CONFIG_USB_ISP1760 is not set - -# -# USB port drivers -# CONFIG_USB_SERIAL=y -# CONFIG_USB_SERIAL_CONSOLE is not set CONFIG_USB_SERIAL_GENERIC=y -# CONFIG_USB_SERIAL_SIMPLE is not set -# CONFIG_USB_SERIAL_AIRCABLE is not set -# CONFIG_USB_SERIAL_ARK3116 is not set -# CONFIG_USB_SERIAL_BELKIN is not set CONFIG_USB_SERIAL_CH341=y -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set CONFIG_USB_SERIAL_CP210X=y -# CONFIG_USB_SERIAL_CYPRESS_M8 is not set -# CONFIG_USB_SERIAL_EMPEG is not set CONFIG_USB_SERIAL_FTDI_SIO=y -# CONFIG_USB_SERIAL_VISOR is not set -# CONFIG_USB_SERIAL_IPAQ is not set -# CONFIG_USB_SERIAL_IR is not set -# CONFIG_USB_SERIAL_EDGEPORT is not set -# CONFIG_USB_SERIAL_EDGEPORT_TI is not set -# CONFIG_USB_SERIAL_F81232 is not set -# CONFIG_USB_SERIAL_F8153X is not set -# CONFIG_USB_SERIAL_GARMIN is not set -# CONFIG_USB_SERIAL_IPW is not set -# CONFIG_USB_SERIAL_IUU is not set -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set CONFIG_USB_SERIAL_KEYSPAN=y -# CONFIG_USB_SERIAL_KLSI is not set -# CONFIG_USB_SERIAL_KOBIL_SCT is not set -# CONFIG_USB_SERIAL_MCT_U232 is not set -# CONFIG_USB_SERIAL_METRO is not set -# CONFIG_USB_SERIAL_MOS7720 is not set -# CONFIG_USB_SERIAL_MOS7840 is not set -# CONFIG_USB_SERIAL_MXUPORT is not set -# CONFIG_USB_SERIAL_NAVMAN is not set CONFIG_USB_SERIAL_PL2303=y CONFIG_USB_SERIAL_OTI6858=y -# CONFIG_USB_SERIAL_QCAUX is not set CONFIG_USB_SERIAL_QUALCOMM=y -# CONFIG_USB_SERIAL_SPCP8X5 is not set -# CONFIG_USB_SERIAL_SAFE is not set CONFIG_USB_SERIAL_SIERRAWIRELESS=y -# CONFIG_USB_SERIAL_SYMBOL is not set -# CONFIG_USB_SERIAL_TI is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -CONFIG_USB_SERIAL_WWAN=y CONFIG_USB_SERIAL_OPTION=y -# CONFIG_USB_SERIAL_OMNINET is not set -# CONFIG_USB_SERIAL_OPTICON is not set -# CONFIG_USB_SERIAL_XSENS_MT is not set -# CONFIG_USB_SERIAL_WISHBONE is not set -# CONFIG_USB_SERIAL_SSU100 is not set -# CONFIG_USB_SERIAL_QT2 is not set -# CONFIG_USB_SERIAL_UPD78F0730 is not set -# CONFIG_USB_SERIAL_XR is not set -# CONFIG_USB_SERIAL_DEBUG 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_LEGOTOWER is not set -# CONFIG_USB_LCD is not set -# CONFIG_USB_CYPRESS_CY7C63 is not set -# CONFIG_USB_CYTHERM is not set -# CONFIG_USB_IDMOUSE is not set -# CONFIG_USB_APPLEDISPLAY is not set -# CONFIG_APPLE_MFI_FASTCHARGE is not set -# CONFIG_USB_SISUSBVGA is not set -# CONFIG_USB_LD is not set -# CONFIG_USB_TRANCEVIBRATOR is not set -# CONFIG_USB_IOWARRIOR is not set -# CONFIG_USB_TEST is not set -# CONFIG_USB_EHSET_TEST_FIXTURE is not set -# CONFIG_USB_ISIGHTFW is not set -# CONFIG_USB_YUREX is not set -CONFIG_USB_EZUSB_FX2=y -# CONFIG_USB_HUB_USB251XB is not set -# CONFIG_USB_HSIC_USB3503 is not set -# CONFIG_USB_HSIC_USB4604 is not set -# CONFIG_USB_LINK_LAYER_TEST is not set -# CONFIG_USB_CHAOSKEY is not set -# CONFIG_USB_ONBOARD_HUB is not set - -# -# USB Physical Layer drivers -# -CONFIG_USB_PHY=y CONFIG_NOP_USB_XCEIV=y -# CONFIG_USB_GPIO_VBUS is not set -# CONFIG_USB_ISP1301 is not set -# CONFIG_USB_ULPI is not set -# end of USB Physical Layer drivers - CONFIG_USB_GADGET=y -# CONFIG_USB_GADGET_DEBUG is not set CONFIG_USB_GADGET_DEBUG_FILES=y -# CONFIG_USB_GADGET_DEBUG_FS is not set CONFIG_USB_GADGET_VBUS_DRAW=500 -CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 CONFIG_U_SERIAL_CONSOLE=y - -# -# USB Peripheral Controller -# -# CONFIG_USB_GR_UDC is not set -# CONFIG_USB_R8A66597 is not set -# CONFIG_USB_PXA27X is not set -# CONFIG_USB_MV_UDC is not set -# CONFIG_USB_MV_U3D is not set -# CONFIG_USB_SNP_UDC_PLAT is not set -# CONFIG_USB_M66592 is not set -# CONFIG_USB_BDC_UDC is not set -# CONFIG_USB_AMD5536UDC is not set -# CONFIG_USB_NET2272 is not set -# CONFIG_USB_NET2280 is not set -# CONFIG_USB_GOKU is not set -# CONFIG_USB_EG20T is not set -# CONFIG_USB_GADGET_XILINX is not set -# CONFIG_USB_MAX3420_UDC is not set -# CONFIG_USB_DUMMY_HCD is not set -# end of USB Peripheral Controller - -CONFIG_USB_LIBCOMPOSITE=y -CONFIG_USB_F_ACM=y -CONFIG_USB_U_SERIAL=y -CONFIG_USB_F_SERIAL=m -CONFIG_USB_F_OBEX=m -CONFIG_USB_F_MASS_STORAGE=y -CONFIG_USB_F_FS=y -CONFIG_USB_F_UVC=y CONFIG_USB_CONFIGFS=y -# CONFIG_USB_CONFIGFS_SERIAL is not set CONFIG_USB_CONFIGFS_ACM=y -# CONFIG_USB_CONFIGFS_OBEX is not set -# CONFIG_USB_CONFIGFS_NCM is not set -# CONFIG_USB_CONFIGFS_ECM is not set -# CONFIG_USB_CONFIGFS_ECM_SUBSET is not set -# CONFIG_USB_CONFIGFS_RNDIS is not set -# CONFIG_USB_CONFIGFS_EEM is not set CONFIG_USB_CONFIGFS_MASS_STORAGE=y -# CONFIG_USB_CONFIGFS_F_LB_SS is not set CONFIG_USB_CONFIGFS_F_FS=y -# CONFIG_USB_CONFIGFS_F_UAC1 is not set -# CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set -# CONFIG_USB_CONFIGFS_F_UAC2 is not set -# CONFIG_USB_CONFIGFS_F_MIDI is not set -# CONFIG_USB_CONFIGFS_F_MIDI2 is not set -# CONFIG_USB_CONFIGFS_F_HID is not set CONFIG_USB_CONFIGFS_F_UVC=y -# CONFIG_USB_CONFIGFS_F_PRINTER is not set - -# -# USB Gadget precomposed configurations -# -# 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=m CONFIG_USB_FUNCTIONFS=m -# CONFIG_USB_FUNCTIONFS_ETH is not set -# CONFIG_USB_FUNCTIONFS_RNDIS is not set -CONFIG_USB_FUNCTIONFS_GENERIC=y CONFIG_USB_MASS_STORAGE=m CONFIG_USB_G_SERIAL=m -# CONFIG_USB_MIDI_GADGET is not set -# CONFIG_USB_G_PRINTER is not set -# CONFIG_USB_CDC_COMPOSITE is not set -# CONFIG_USB_G_ACM_MS is not set -# CONFIG_USB_G_MULTI is not set -# CONFIG_USB_G_HID is not set -# CONFIG_USB_G_DBGP is not set -# CONFIG_USB_G_WEBCAM is not set -# CONFIG_USB_RAW_GADGET is not set -# end of USB Gadget precomposed configurations - CONFIG_TYPEC=y CONFIG_TYPEC_TCPM=y -# CONFIG_TYPEC_TCPCI is not set CONFIG_TYPEC_FUSB302=y -# CONFIG_TYPEC_UCSI is not set -# CONFIG_TYPEC_TPS6598X is not set -# CONFIG_TYPEC_ANX7411 is not set -# CONFIG_TYPEC_RT1719 is not set -# CONFIG_TYPEC_HD3SS3220 is not set -# CONFIG_TYPEC_STUSB160X is not set -# CONFIG_TYPEC_WUSB3801 is not set - -# -# USB Type-C Multiplexer/DeMultiplexer Switch support -# -# CONFIG_TYPEC_MUX_FSA4480 is not set -# CONFIG_TYPEC_MUX_GPIO_SBU is not set -# CONFIG_TYPEC_MUX_PI3USB30532 is not set -# CONFIG_TYPEC_MUX_NB7VPQ904M is not set -# end of USB Type-C Multiplexer/DeMultiplexer Switch support - -# -# USB Type-C Alternate Mode drivers -# CONFIG_TYPEC_DP_ALTMODE=y -# CONFIG_TYPEC_NVIDIA_ALTMODE is not set -# end of USB Type-C Alternate Mode drivers - -CONFIG_USB_ROLE_SWITCH=y CONFIG_MMC=y -CONFIG_PWRSEQ_EMMC=y -# CONFIG_PWRSEQ_SD8787 is not set -CONFIG_PWRSEQ_SIMPLE=y -CONFIG_MMC_BLOCK=y CONFIG_MMC_BLOCK_MINORS=32 -# CONFIG_SDIO_UART is not set CONFIG_MMC_TEST=y - -# -# MMC/SD/SDIO Host Controller Drivers -# -# CONFIG_MMC_DEBUG is not set -# CONFIG_MMC_ARMMMCI is not set CONFIG_MMC_SDHCI=y -# CONFIG_MMC_SDHCI_PCI is not set CONFIG_MMC_SDHCI_PLTFM=y -# CONFIG_MMC_SDHCI_OF_ARASAN is not set -# CONFIG_MMC_SDHCI_OF_AT91 is not set -# CONFIG_MMC_SDHCI_OF_DWCMSHC is not set -# CONFIG_MMC_SDHCI_CADENCE is not set -# CONFIG_MMC_SDHCI_F_SDH30 is not set -# CONFIG_MMC_SDHCI_MILBEAUT is not set -# CONFIG_MMC_TIFM_SD is not set -# CONFIG_MMC_SPI is not set -# CONFIG_MMC_CB710 is not set -# CONFIG_MMC_VIA_SDMMC is not set +CONFIG_MMC_SDHCI_OF_DWCMSHC=y CONFIG_MMC_DW=y -CONFIG_MMC_DW_PLTFM=y -# CONFIG_MMC_DW_BLUEFIELD is not set -# CONFIG_MMC_DW_EXYNOS is not set -# CONFIG_MMC_DW_HI3798CV200 is not set -# CONFIG_MMC_DW_K3 is not set -# CONFIG_MMC_DW_PCI is not set CONFIG_MMC_DW_ROCKCHIP=y -# CONFIG_MMC_VUB300 is not set -# CONFIG_MMC_USHC is not set -# CONFIG_MMC_USDHI6ROL0 is not set -# CONFIG_MMC_CQHCI is not set -# CONFIG_MMC_HSQ is not set -# CONFIG_MMC_TOSHIBA_PCI is not set -# CONFIG_MMC_MTK is not set -# CONFIG_MMC_SDHCI_XENON is not set -# CONFIG_MMC_SDHCI_OMAP is not set -# CONFIG_MMC_SDHCI_AM654 is not set -# CONFIG_SCSI_UFSHCD is not set -# CONFIG_MEMSTICK is not set -CONFIG_NEW_LEDS=y -CONFIG_LEDS_CLASS=y -# CONFIG_LEDS_CLASS_FLASH is not set -# CONFIG_LEDS_CLASS_MULTICOLOR is not set -# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set - -# -# LED drivers -# -# CONFIG_LEDS_AN30259A is not set -# CONFIG_LEDS_AW200XX is not set -# CONFIG_LEDS_AW2013 is not set -# CONFIG_LEDS_BCM6328 is not set -# CONFIG_LEDS_BCM6358 is not set -# CONFIG_LEDS_CR0014114 is not set -# CONFIG_LEDS_EL15203000 is not set -# CONFIG_LEDS_LM3530 is not set -# CONFIG_LEDS_LM3532 is not set -# CONFIG_LEDS_LM3642 is not set -# CONFIG_LEDS_LM3692X is not set -# CONFIG_LEDS_PCA9532 is not set +CONFIG_MMC_HSQ=y CONFIG_LEDS_GPIO=y -# CONFIG_LEDS_LP3944 is not set -# CONFIG_LEDS_LP3952 is not set -# CONFIG_LEDS_LP50XX is not set -# CONFIG_LEDS_LP55XX_COMMON is not set -# CONFIG_LEDS_LP8860 is not set -# CONFIG_LEDS_PCA955X is not set -# CONFIG_LEDS_PCA963X is not set -# CONFIG_LEDS_PCA995X is not set -# CONFIG_LEDS_DAC124S085 is not set CONFIG_LEDS_PWM=y -# CONFIG_LEDS_REGULATOR is not set -# CONFIG_LEDS_BD2606MVV is not set -# CONFIG_LEDS_BD2802 is not set -# CONFIG_LEDS_LT3593 is not set -# CONFIG_LEDS_TCA6507 is not set -# CONFIG_LEDS_TLC591XX is not set -# CONFIG_LEDS_LM355x is not set -# CONFIG_LEDS_IS31FL319X is not set CONFIG_LEDS_IS31FL32XX=y - -# -# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) -# -# CONFIG_LEDS_BLINKM is not set CONFIG_LEDS_SYSCON=y -# CONFIG_LEDS_MLXREG is not set -# CONFIG_LEDS_USER is not set -# CONFIG_LEDS_SPI_BYTE is not set -# CONFIG_LEDS_LM3697 is not set - -# -# Flash and Torch LED drivers -# - -# -# RGB LED drivers -# - -# -# LED Triggers -# -CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGER_TIMER=y CONFIG_LEDS_TRIGGER_ONESHOT=y CONFIG_LEDS_TRIGGER_DISK=y -# CONFIG_LEDS_TRIGGER_MTD is not set CONFIG_LEDS_TRIGGER_HEARTBEAT=y CONFIG_LEDS_TRIGGER_BACKLIGHT=y CONFIG_LEDS_TRIGGER_CPU=y -# CONFIG_LEDS_TRIGGER_ACTIVITY is not set CONFIG_LEDS_TRIGGER_DEFAULT_ON=y - -# -# iptables trigger is under Netfilter config (LED target) -# -# CONFIG_LEDS_TRIGGER_TRANSIENT is not set -# CONFIG_LEDS_TRIGGER_CAMERA is not set -# CONFIG_LEDS_TRIGGER_PANIC is not set -# CONFIG_LEDS_TRIGGER_NETDEV is not set -# CONFIG_LEDS_TRIGGER_PATTERN is not set -# CONFIG_LEDS_TRIGGER_AUDIO is not set -# CONFIG_LEDS_TRIGGER_TTY is not set - -# -# Simple LED drivers -# -# CONFIG_ACCESSIBILITY is not set -# CONFIG_INFINIBAND is not set -CONFIG_EDAC_SUPPORT=y -# CONFIG_EDAC is not set -CONFIG_RTC_LIB=y CONFIG_RTC_CLASS=y -CONFIG_RTC_HCTOSYS=y -CONFIG_RTC_HCTOSYS_DEVICE="rtc0" # CONFIG_RTC_SYSTOHC is not set -# CONFIG_RTC_DEBUG is not set -CONFIG_RTC_NVMEM=y - -# -# RTC interfaces -# -CONFIG_RTC_INTF_SYSFS=y # CONFIG_RTC_INTF_PROC is not set # CONFIG_RTC_INTF_DEV is not set -# CONFIG_RTC_DRV_TEST is not set - -# -# I2C RTC drivers -# -# CONFIG_RTC_DRV_ABB5ZES3 is not set -# CONFIG_RTC_DRV_ABEOZ9 is not set -# CONFIG_RTC_DRV_ABX80X is not set -# CONFIG_RTC_DRV_DS1307 is not set -# CONFIG_RTC_DRV_DS1374 is not set -# CONFIG_RTC_DRV_DS1672 is not set CONFIG_RTC_DRV_HYM8563=y -# CONFIG_RTC_DRV_MAX6900 is not set -# CONFIG_RTC_DRV_NCT3018Y is not set CONFIG_RTC_DRV_RK808=y -# CONFIG_RTC_DRV_RS5C372 is not set -# CONFIG_RTC_DRV_ISL1208 is not set -# CONFIG_RTC_DRV_ISL12022 is not set -# CONFIG_RTC_DRV_ISL12026 is not set -# CONFIG_RTC_DRV_X1205 is not set -# CONFIG_RTC_DRV_PCF8523 is not set -# CONFIG_RTC_DRV_PCF85063 is not set -# CONFIG_RTC_DRV_PCF85363 is not set -# CONFIG_RTC_DRV_PCF8563 is not set -# CONFIG_RTC_DRV_PCF8583 is not set -# CONFIG_RTC_DRV_M41T80 is not set -# CONFIG_RTC_DRV_BQ32K is not set -# CONFIG_RTC_DRV_TPS6586X is not set -# CONFIG_RTC_DRV_S35390A is not set -# CONFIG_RTC_DRV_FM3130 is not set -# CONFIG_RTC_DRV_RX8010 is not set -# CONFIG_RTC_DRV_RX8581 is not set -# CONFIG_RTC_DRV_RX8025 is not set -# CONFIG_RTC_DRV_EM3027 is not set -# CONFIG_RTC_DRV_RV3028 is not set -# CONFIG_RTC_DRV_RV3032 is not set -# CONFIG_RTC_DRV_RV8803 is not set -# CONFIG_RTC_DRV_SD3078 is not set - -# -# SPI RTC drivers -# -# CONFIG_RTC_DRV_M41T93 is not set -# CONFIG_RTC_DRV_M41T94 is not set -# CONFIG_RTC_DRV_DS1302 is not set -# CONFIG_RTC_DRV_DS1305 is not set -# CONFIG_RTC_DRV_DS1343 is not set -# CONFIG_RTC_DRV_DS1347 is not set -# CONFIG_RTC_DRV_DS1390 is not set -# CONFIG_RTC_DRV_MAX6916 is not set -# CONFIG_RTC_DRV_R9701 is not set -# CONFIG_RTC_DRV_RX4581 is not set -# CONFIG_RTC_DRV_RS5C348 is not set -# CONFIG_RTC_DRV_MAX6902 is not set -# CONFIG_RTC_DRV_PCF2123 is not set -# CONFIG_RTC_DRV_MCP795 is not set -CONFIG_RTC_I2C_AND_SPI=y - -# -# SPI and I2C RTC drivers -# -# CONFIG_RTC_DRV_DS3232 is not set -# CONFIG_RTC_DRV_PCF2127 is not set -# CONFIG_RTC_DRV_RV3029C2 is not set -# CONFIG_RTC_DRV_RX6110 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_DS1685_FAMILY is not set -# CONFIG_RTC_DRV_DS1742 is not set -# CONFIG_RTC_DRV_DS2404 is not set -# CONFIG_RTC_DRV_STK17TA8 is not set -# CONFIG_RTC_DRV_M48T86 is not set -# CONFIG_RTC_DRV_M48T35 is not set -# CONFIG_RTC_DRV_M48T59 is not set -# CONFIG_RTC_DRV_MSM6242 is not set -# CONFIG_RTC_DRV_RP5C01 is not set -# CONFIG_RTC_DRV_ZYNQMP is not set - -# -# on-CPU RTC drivers -# -# CONFIG_RTC_DRV_PL030 is not set -# CONFIG_RTC_DRV_PL031 is not set -# CONFIG_RTC_DRV_CADENCE is not set -# CONFIG_RTC_DRV_FTRTC010 is not set -# CONFIG_RTC_DRV_R7301 is not set - -# -# HID Sensor RTC drivers -# -# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set -# CONFIG_RTC_DRV_GOLDFISH is not set CONFIG_DMADEVICES=y -# CONFIG_DMADEVICES_DEBUG is not set - -# -# DMA Devices -# -CONFIG_DMA_ENGINE=y -CONFIG_DMA_OF=y -# CONFIG_ALTERA_MSGDMA is not set -# CONFIG_AMBA_PL08X is not set -# CONFIG_BCM_SBA_RAID is not set -# CONFIG_DW_AXI_DMAC is not set -# CONFIG_FSL_EDMA is not set -# CONFIG_FSL_QDMA is not set -# CONFIG_INTEL_IDMA64 is not set -# CONFIG_MV_XOR_V2 is not set CONFIG_PL330_DMA=y -# CONFIG_PLX_DMA is not set -# CONFIG_XILINX_DMA is not set -# CONFIG_XILINX_XDMA is not set -# CONFIG_XILINX_ZYNQMP_DMA is not set -# CONFIG_XILINX_ZYNQMP_DPDMA is not set -# CONFIG_QCOM_HIDMA_MGMT is not set -# CONFIG_QCOM_HIDMA is not set -# CONFIG_DW_DMAC is not set -# CONFIG_DW_DMAC_PCI is not set -# CONFIG_DW_EDMA is not set -# CONFIG_SF_PDMA is not set - -# -# DMA Clients -# -# CONFIG_ASYNC_TX_DMA is not set -# CONFIG_DMATEST is not set - -# -# DMABUF options -# -CONFIG_SYNC_FILE=y -# CONFIG_SW_SYNC is not set CONFIG_UDMABUF=y -# CONFIG_DMABUF_MOVE_NOTIFY is not set -# CONFIG_DMABUF_DEBUG is not set -# CONFIG_DMABUF_SELFTESTS is not set CONFIG_DMABUF_HEAPS=y -# CONFIG_DMABUF_SYSFS_STATS is not set CONFIG_DMABUF_HEAPS_SYSTEM=y -# end of DMABUF options - -# CONFIG_UIO is not set -# CONFIG_VFIO is not set -# CONFIG_VIRT_DRIVERS is not set # CONFIG_VIRTIO_MENU is not set -# CONFIG_VDPA is not set # CONFIG_VHOST_MENU is not set - -# -# Microsoft Hyper-V guest support -# -# end of Microsoft Hyper-V guest support - -# CONFIG_GREYBUS is not set -# CONFIG_COMEDI is not set CONFIG_STAGING=y -# CONFIG_PRISM2_USB is not set -# CONFIG_RTL8192U is not set -# CONFIG_RTLLIB is not set CONFIG_RTL8723BS=m CONFIG_R8712U=m -# CONFIG_RTS5208 is not set -# CONFIG_VT6655 is not set -# CONFIG_VT6656 is not set - -# -# IIO staging drivers -# - -# -# Accelerometers -# -# CONFIG_ADIS16203 is not set -# CONFIG_ADIS16240 is not set -# end of Accelerometers - -# -# Analog to digital converters -# -# CONFIG_AD7816 is not set -# end of Analog to digital converters - -# -# Analog digital bi-direction converters -# -# CONFIG_ADT7316 is not set -# end of Analog digital bi-direction converters - -# -# Direct Digital Synthesis -# -# CONFIG_AD9832 is not set -# CONFIG_AD9834 is not set -# end of Direct Digital Synthesis - -# -# Network Analyzer, Impedance Converters -# -# CONFIG_AD5933 is not set -# end of Network Analyzer, Impedance Converters - -# -# Resolver to digital converters -# -# CONFIG_AD2S1210 is not set -# end of Resolver to digital converters -# end of IIO staging drivers - -# CONFIG_FB_SM750 is not set CONFIG_STAGING_MEDIA=y -# CONFIG_DVB_AV7110 is not set -# CONFIG_VIDEO_MAX96712 is not set CONFIG_VIDEO_ROCKCHIP_VDEC=y -# CONFIG_STAGING_MEDIA_DEPRECATED is not set -# CONFIG_STAGING_BOARD is not set -# CONFIG_LTE_GDM724X is not set -# CONFIG_FB_TFT is not set -# CONFIG_KS7010 is not set -# CONFIG_PI433 is not set -# CONFIG_XIL_AXIS_FIFO is not set -# CONFIG_FIELDBUS_DEV is not set -# CONFIG_QLGE is not set -# CONFIG_VME_BUS is not set -# CONFIG_GOLDFISH is not set CONFIG_CHROME_PLATFORMS=y -# CONFIG_CROS_EC is not set -# CONFIG_CROS_HPS_I2C is not set -# CONFIG_MELLANOX_PLATFORM is not set # CONFIG_SURFACE_PLATFORMS is not set -CONFIG_HAVE_CLK=y -CONFIG_HAVE_CLK_PREPARE=y -CONFIG_COMMON_CLK=y - -# -# Clock driver for ARM Reference designs -# -# CONFIG_CLK_ICST is not set -# CONFIG_CLK_SP810 is not set -# end of Clock driver for ARM Reference designs - -# CONFIG_LMK04832 is not set -# CONFIG_COMMON_CLK_MAX9485 is not set CONFIG_COMMON_CLK_RK808=y CONFIG_COMMON_CLK_SCMI=y CONFIG_COMMON_CLK_SCPI=y -# CONFIG_COMMON_CLK_SI5341 is not set -# CONFIG_COMMON_CLK_SI5351 is not set -# CONFIG_COMMON_CLK_SI514 is not set -# CONFIG_COMMON_CLK_SI544 is not set -# CONFIG_COMMON_CLK_SI570 is not set -# CONFIG_COMMON_CLK_CDCE706 is not set -# CONFIG_COMMON_CLK_CDCE925 is not set -# CONFIG_COMMON_CLK_CS2000_CP is not set -# CONFIG_COMMON_CLK_AXI_CLKGEN is not set CONFIG_COMMON_CLK_XGENE=y CONFIG_COMMON_CLK_PWM=y -# CONFIG_COMMON_CLK_RS9_PCIE is not set -# CONFIG_COMMON_CLK_SI521XX is not set -# CONFIG_COMMON_CLK_VC3 is not set -# CONFIG_COMMON_CLK_VC5 is not set -# CONFIG_COMMON_CLK_VC7 is not set CONFIG_COMMON_CLK_FIXED_MMIO=y -CONFIG_COMMON_CLK_ROCKCHIP=y -CONFIG_CLK_PX30=y # CONFIG_CLK_RK3308 is not set # CONFIG_CLK_RK3328 is not set # CONFIG_CLK_RK3368 is not set # CONFIG_CLK_RK3399 is not set -CONFIG_CLK_RK3568=y -CONFIG_CLK_RK3588=y -# CONFIG_XILINX_VCU is not set -# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set -# CONFIG_HWSPINLOCK is not set - -# -# Clock Source drivers -# -CONFIG_TIMER_OF=y -CONFIG_TIMER_PROBE=y -CONFIG_CLKSRC_MMIO=y -CONFIG_ROCKCHIP_TIMER=y -CONFIG_ARM_ARCH_TIMER=y -CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y # CONFIG_FSL_ERRATUM_A008585 is not set # CONFIG_HISILICON_ERRATUM_161010101 is not set # CONFIG_ARM64_ERRATUM_858921 is not set -# end of Clock Source drivers - CONFIG_MAILBOX=y CONFIG_ARM_MHU=y -# CONFIG_ARM_MHU_V2 is not set CONFIG_PLATFORM_MHU=y -# CONFIG_PL320_MBOX is not set CONFIG_ROCKCHIP_MBOX=y -# CONFIG_ALTERA_MBOX is not set -# CONFIG_MAILBOX_TEST is not set -CONFIG_IOMMU_IOVA=y -CONFIG_IOMMU_API=y -CONFIG_IOMMU_SUPPORT=y - -# -# Generic IOMMU Pagetable Support -# -CONFIG_IOMMU_IO_PGTABLE=y -CONFIG_IOMMU_IO_PGTABLE_LPAE=y -# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set -# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set -# CONFIG_IOMMU_IO_PGTABLE_DART is not set -# end of Generic IOMMU Pagetable Support - -# CONFIG_IOMMU_DEBUGFS is not set -CONFIG_IOMMU_DEFAULT_DMA_STRICT=y -# CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set -# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set -CONFIG_OF_IOMMU=y -CONFIG_IOMMU_DMA=y -# CONFIG_IOMMUFD is not set CONFIG_ROCKCHIP_IOMMU=y CONFIG_ARM_SMMU=y -# CONFIG_ARM_SMMU_LEGACY_DT_BINDINGS is not set -CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT=y CONFIG_ARM_SMMU_V3=y -# CONFIG_ARM_SMMU_V3_SVA is not set - -# -# Remoteproc drivers -# -# CONFIG_REMOTEPROC is not set -# end of Remoteproc drivers - -# -# Rpmsg drivers -# -# CONFIG_RPMSG_QCOM_GLINK_RPM is not set -# CONFIG_RPMSG_VIRTIO is not set -# end of Rpmsg drivers - -# CONFIG_SOUNDWIRE is not set - -# -# SOC (System On Chip) specific Drivers -# - -# -# Amlogic SoC drivers -# -# end of Amlogic SoC drivers - -# -# Broadcom SoC drivers -# -# CONFIG_SOC_BRCMSTB is not set -# end of Broadcom SoC drivers - -# -# NXP/Freescale QorIQ SoC drivers -# -# CONFIG_QUICC_ENGINE is not set -# CONFIG_FSL_RCPM is not set -# end of NXP/Freescale QorIQ SoC drivers - -# -# fujitsu SoC drivers -# -# end of fujitsu SoC drivers - -# -# i.MX SoC drivers -# -# end of i.MX SoC drivers - -# -# Enable LiteX SoC Builder specific drivers -# -# CONFIG_LITEX_SOC_CONTROLLER is not set -# end of Enable LiteX SoC Builder specific drivers - -# CONFIG_WPCM450_SOC is not set - -# -# Qualcomm SoC drivers -# -# end of Qualcomm SoC drivers - -CONFIG_ROCKCHIP_GRF=y CONFIG_ROCKCHIP_IODOMAIN=y CONFIG_ROCKCHIP_PM_DOMAINS=y -# CONFIG_SOC_TI is not set - -# -# Xilinx SoC drivers -# -# end of Xilinx SoC drivers -# end of SOC (System On Chip) specific Drivers - -CONFIG_PM_DEVFREQ=y - -# -# DEVFREQ Governors -# -CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y CONFIG_DEVFREQ_GOV_PERFORMANCE=y CONFIG_DEVFREQ_GOV_POWERSAVE=y -# CONFIG_DEVFREQ_GOV_USERSPACE is not set -# CONFIG_DEVFREQ_GOV_PASSIVE is not set - -# -# DEVFREQ Drivers -# CONFIG_ARM_RK3399_DMC_DEVFREQ=y -CONFIG_PM_DEVFREQ_EVENT=y -CONFIG_DEVFREQ_EVENT_ROCKCHIP_DFI=y -CONFIG_EXTCON=y - -# -# Extcon Device Drivers -# -# CONFIG_EXTCON_ADC_JACK is not set -# CONFIG_EXTCON_FSA9480 is not set -# CONFIG_EXTCON_GPIO is not set -# CONFIG_EXTCON_MAX3355 is not set -# CONFIG_EXTCON_PTN5150 is not set -# CONFIG_EXTCON_RT8973A is not set -# CONFIG_EXTCON_SM5502 is not set -# CONFIG_EXTCON_USB_GPIO is not set -# CONFIG_EXTCON_USBC_TUSB320 is not set CONFIG_MEMORY=y -# CONFIG_ARM_PL172_MPMC is not set CONFIG_IIO=y -CONFIG_IIO_BUFFER=y -CONFIG_IIO_BUFFER_CB=y -# CONFIG_IIO_BUFFER_DMA is not set -# CONFIG_IIO_BUFFER_DMAENGINE is not set CONFIG_IIO_BUFFER_HW_CONSUMER=y -CONFIG_IIO_KFIFO_BUF=y -CONFIG_IIO_TRIGGERED_BUFFER=y -CONFIG_IIO_CONFIGFS=y -CONFIG_IIO_TRIGGER=y -CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 CONFIG_IIO_SW_DEVICE=y CONFIG_IIO_SW_TRIGGER=y CONFIG_IIO_TRIGGERED_EVENT=y - -# -# Accelerometers -# -# CONFIG_ADIS16201 is not set -# CONFIG_ADIS16209 is not set -# CONFIG_ADXL313_I2C is not set -# CONFIG_ADXL313_SPI is not set -# CONFIG_ADXL345_I2C is not set -# CONFIG_ADXL345_SPI is not set -# CONFIG_ADXL355_I2C is not set -# CONFIG_ADXL355_SPI is not set -# CONFIG_ADXL367_SPI is not set -# CONFIG_ADXL367_I2C is not set -# CONFIG_ADXL372_SPI is not set -# CONFIG_ADXL372_I2C is not set -# CONFIG_BMA180 is not set -# CONFIG_BMA220 is not set -# CONFIG_BMA400 is not set -# CONFIG_BMC150_ACCEL is not set -# CONFIG_BMI088_ACCEL is not set -# CONFIG_DA280 is not set -# CONFIG_DA311 is not set -# CONFIG_DMARD06 is not set -# CONFIG_DMARD09 is not set -# CONFIG_DMARD10 is not set -# CONFIG_FXLS8962AF_I2C is not set -# CONFIG_FXLS8962AF_SPI is not set -# CONFIG_HID_SENSOR_ACCEL_3D is not set -# CONFIG_IIO_ST_ACCEL_3AXIS is not set -# CONFIG_IIO_KX022A_SPI is not set -# CONFIG_IIO_KX022A_I2C is not set -# CONFIG_KXSD9 is not set -# CONFIG_KXCJK1013 is not set -# CONFIG_MC3230 is not set -# CONFIG_MMA7455_I2C is not set -# CONFIG_MMA7455_SPI is not set -# CONFIG_MMA7660 is not set -# CONFIG_MMA8452 is not set -# CONFIG_MMA9551 is not set -# CONFIG_MMA9553 is not set -# CONFIG_MSA311 is not set -# CONFIG_MXC4005 is not set -# CONFIG_MXC6255 is not set -# CONFIG_SCA3000 is not set -# CONFIG_SCA3300 is not set -# CONFIG_STK8312 is not set -# CONFIG_STK8BA50 is not set -# end of Accelerometers - -# -# Analog to digital converters -# -# CONFIG_AD4130 is not set -# CONFIG_AD7091R5 is not set -# CONFIG_AD7124 is not set -# CONFIG_AD7192 is not set -# CONFIG_AD7266 is not set -# CONFIG_AD7280 is not set -# CONFIG_AD7291 is not set -# CONFIG_AD7292 is not set -# CONFIG_AD7298 is not set -# CONFIG_AD7476 is not set -# CONFIG_AD7606_IFACE_PARALLEL is not set -# CONFIG_AD7606_IFACE_SPI is not set -# CONFIG_AD7766 is not set -# CONFIG_AD7768_1 is not set -# CONFIG_AD7780 is not set -# CONFIG_AD7791 is not set -# CONFIG_AD7793 is not set -# CONFIG_AD7887 is not set -# CONFIG_AD7923 is not set -# CONFIG_AD7949 is not set -# CONFIG_AD799X is not set -# CONFIG_ADI_AXI_ADC is not set -# CONFIG_CC10001_ADC is not set -# CONFIG_ENVELOPE_DETECTOR is not set -# CONFIG_HI8435 is not set -# CONFIG_HX711 is not set -# CONFIG_INA2XX_ADC is not set -# CONFIG_LTC2471 is not set -# CONFIG_LTC2485 is not set -# CONFIG_LTC2496 is not set -# CONFIG_LTC2497 is not set -# CONFIG_MAX1027 is not set -# CONFIG_MAX11100 is not set -# CONFIG_MAX1118 is not set -# CONFIG_MAX11205 is not set -# CONFIG_MAX11410 is not set -# CONFIG_MAX1241 is not set -# CONFIG_MAX1363 is not set -# CONFIG_MAX9611 is not set -# CONFIG_MCP320X is not set -# CONFIG_MCP3422 is not set -# CONFIG_MCP3911 is not set -# CONFIG_NAU7802 is not set CONFIG_ROCKCHIP_SARADC=y -# CONFIG_RICHTEK_RTQ6056 is not set -# CONFIG_SD_ADC_MODULATOR is not set -# CONFIG_TI_ADC081C is not set -# CONFIG_TI_ADC0832 is not set -# CONFIG_TI_ADC084S021 is not set -# CONFIG_TI_ADC12138 is not set -# CONFIG_TI_ADC108S102 is not set -# CONFIG_TI_ADC128S052 is not set -# CONFIG_TI_ADC161S626 is not set -# CONFIG_TI_ADS1015 is not set -# CONFIG_TI_ADS7924 is not set -# CONFIG_TI_ADS1100 is not set -# CONFIG_TI_ADS7950 is not set -# CONFIG_TI_ADS8344 is not set -# CONFIG_TI_ADS8688 is not set -# CONFIG_TI_ADS124S08 is not set -# CONFIG_TI_ADS131E08 is not set -# CONFIG_TI_LMP92064 is not set -# CONFIG_TI_TLC4541 is not set -# CONFIG_TI_TSC2046 is not set -# CONFIG_VF610_ADC is not set -# CONFIG_XILINX_XADC is not set -# end of Analog to digital converters - -# -# Analog to digital and digital to analog converters -# -# CONFIG_AD74115 is not set -# CONFIG_AD74413R is not set -# end of Analog to digital and digital to analog converters - -# -# Analog Front Ends -# -# CONFIG_IIO_RESCALE is not set -# end of Analog Front Ends - -# -# Amplifiers -# -# CONFIG_AD8366 is not set -# CONFIG_ADA4250 is not set -# CONFIG_HMC425 is not set -# end of Amplifiers - -# -# Capacitance to digital converters -# -# CONFIG_AD7150 is not set -# CONFIG_AD7746 is not set -# end of Capacitance to digital converters - -# -# Chemical Sensors -# -# CONFIG_ATLAS_PH_SENSOR is not set -# CONFIG_ATLAS_EZO_SENSOR is not set -# CONFIG_BME680 is not set -# CONFIG_CCS811 is not set -# CONFIG_IAQCORE is not set -# CONFIG_PMS7003 is not set -# CONFIG_SCD30_CORE is not set -# CONFIG_SCD4X is not set -# CONFIG_SENSIRION_SGP30 is not set -# CONFIG_SENSIRION_SGP40 is not set -# CONFIG_SPS30_I2C is not set -# CONFIG_SPS30_SERIAL is not set -# CONFIG_SENSEAIR_SUNRISE_CO2 is not set -# CONFIG_VZ89X is not set -# end of Chemical Sensors - -# -# Hid Sensor IIO Common -# -# CONFIG_HID_SENSOR_IIO_COMMON is not set -# end of Hid Sensor IIO Common - -# -# IIO SCMI Sensors -# -# CONFIG_IIO_SCMI is not set -# end of IIO SCMI Sensors - -# -# SSP Sensor Common -# -# CONFIG_IIO_SSP_SENSORHUB is not set -# end of SSP Sensor Common - -# -# Digital to analog converters -# -# CONFIG_AD3552R is not set -# CONFIG_AD5064 is not set -# CONFIG_AD5360 is not set -# CONFIG_AD5380 is not set -# CONFIG_AD5421 is not set -# CONFIG_AD5446 is not set -# CONFIG_AD5449 is not set -# CONFIG_AD5592R is not set -# CONFIG_AD5593R is not set -# CONFIG_AD5504 is not set -# CONFIG_AD5624R_SPI is not set -# CONFIG_LTC2688 is not set -# CONFIG_AD5686_SPI is not set -# CONFIG_AD5696_I2C is not set -# CONFIG_AD5755 is not set -# CONFIG_AD5758 is not set -# CONFIG_AD5761 is not set -# CONFIG_AD5764 is not set -# CONFIG_AD5766 is not set -# CONFIG_AD5770R is not set -# CONFIG_AD5791 is not set -# CONFIG_AD7293 is not set -# CONFIG_AD7303 is not set -# CONFIG_AD8801 is not set -# CONFIG_DPOT_DAC is not set -# CONFIG_DS4424 is not set -# CONFIG_LTC1660 is not set -# CONFIG_LTC2632 is not set -# CONFIG_M62332 is not set -# CONFIG_MAX517 is not set -# CONFIG_MAX5522 is not set -# CONFIG_MAX5821 is not set -# CONFIG_MCP4725 is not set -# CONFIG_MCP4728 is not set -# CONFIG_MCP4922 is not set -# CONFIG_TI_DAC082S085 is not set -# CONFIG_TI_DAC5571 is not set -# CONFIG_TI_DAC7311 is not set -# CONFIG_TI_DAC7612 is not set -# CONFIG_VF610_DAC is not set -# end of Digital to analog converters - -# -# IIO dummy driver -# -# CONFIG_IIO_SIMPLE_DUMMY is not set -# end of IIO dummy driver - -# -# Filters -# -# CONFIG_ADMV8818 is not set -# end of Filters - -# -# Frequency Synthesizers DDS/PLL -# - -# -# Clock Generator/Distribution -# -# CONFIG_AD9523 is not set -# end of Clock Generator/Distribution - -# -# Phase-Locked Loop (PLL) frequency synthesizers -# -# CONFIG_ADF4350 is not set -# CONFIG_ADF4371 is not set -# CONFIG_ADF4377 is not set -# CONFIG_ADMV1013 is not set -# CONFIG_ADMV1014 is not set -# CONFIG_ADMV4420 is not set -# CONFIG_ADRF6780 is not set -# end of Phase-Locked Loop (PLL) frequency synthesizers -# end of Frequency Synthesizers DDS/PLL - -# -# Digital gyroscope sensors -# -# CONFIG_ADIS16080 is not set -# CONFIG_ADIS16130 is not set -# CONFIG_ADIS16136 is not set -# CONFIG_ADIS16260 is not set -# CONFIG_ADXRS290 is not set -# CONFIG_ADXRS450 is not set -# CONFIG_BMG160 is not set -# CONFIG_FXAS21002C is not set -# CONFIG_HID_SENSOR_GYRO_3D is not set -# CONFIG_MPU3050_I2C is not set -# CONFIG_IIO_ST_GYRO_3AXIS is not set -# CONFIG_ITG3200 is not set -# end of Digital gyroscope sensors - -# -# Health Sensors -# - -# -# Heart Rate Monitors -# -# CONFIG_AFE4403 is not set -# CONFIG_AFE4404 is not set -# CONFIG_MAX30100 is not set -# CONFIG_MAX30102 is not set -# end of Heart Rate Monitors -# end of Health Sensors - -# -# Humidity sensors -# -# CONFIG_AM2315 is not set -# CONFIG_DHT11 is not set -# CONFIG_HDC100X is not set -# CONFIG_HDC2010 is not set -# CONFIG_HID_SENSOR_HUMIDITY is not set -# CONFIG_HTS221 is not set -# CONFIG_HTU21 is not set -# CONFIG_SI7005 is not set -# CONFIG_SI7020 is not set -# end of Humidity sensors - -# -# Inertial measurement units -# -# CONFIG_ADIS16400 is not set -# CONFIG_ADIS16460 is not set -# CONFIG_ADIS16475 is not set -# CONFIG_ADIS16480 is not set -# CONFIG_BMI160_I2C is not set -# CONFIG_BMI160_SPI is not set -# CONFIG_BOSCH_BNO055_SERIAL is not set -# CONFIG_BOSCH_BNO055_I2C is not set -# CONFIG_FXOS8700_I2C is not set -# CONFIG_FXOS8700_SPI is not set -# CONFIG_KMX61 is not set -# CONFIG_INV_ICM42600_I2C is not set -# CONFIG_INV_ICM42600_SPI is not set -# CONFIG_INV_MPU6050_I2C is not set -# CONFIG_INV_MPU6050_SPI is not set -# CONFIG_IIO_ST_LSM6DSX is not set -# CONFIG_IIO_ST_LSM9DS0 is not set -# end of Inertial measurement units - -# -# Light sensors -# -# CONFIG_ADJD_S311 is not set -# CONFIG_ADUX1020 is not set -# CONFIG_AL3010 is not set -# CONFIG_AL3320A is not set -# CONFIG_APDS9300 is not set -# CONFIG_APDS9960 is not set -# CONFIG_AS73211 is not set -# CONFIG_BH1750 is not set -# CONFIG_BH1780 is not set -# CONFIG_CM32181 is not set -# CONFIG_CM3232 is not set -# CONFIG_CM3323 is not set -# CONFIG_CM3605 is not set -# CONFIG_CM36651 is not set -# CONFIG_GP2AP002 is not set -# CONFIG_GP2AP020A00F is not set CONFIG_SENSORS_ISL29018=y -# CONFIG_SENSORS_ISL29028 is not set -# CONFIG_ISL29125 is not set -# CONFIG_HID_SENSOR_ALS is not set -# CONFIG_HID_SENSOR_PROX is not set -# CONFIG_JSA1212 is not set -# CONFIG_ROHM_BU27008 is not set -# CONFIG_ROHM_BU27034 is not set -# CONFIG_RPR0521 is not set -# CONFIG_LTR501 is not set -# CONFIG_LTRF216A is not set -# CONFIG_LV0104CS is not set -# CONFIG_MAX44000 is not set -# CONFIG_MAX44009 is not set -# CONFIG_NOA1305 is not set -# CONFIG_OPT3001 is not set -# CONFIG_OPT4001 is not set -# CONFIG_PA12203001 is not set -# CONFIG_SI1133 is not set -# CONFIG_SI1145 is not set -# CONFIG_STK3310 is not set -# CONFIG_ST_UVIS25 is not set -# CONFIG_TCS3414 is not set -# CONFIG_TCS3472 is not set CONFIG_SENSORS_TSL2563=y CONFIG_TSL2583=y -# CONFIG_TSL2591 is not set -# CONFIG_TSL2772 is not set -# CONFIG_TSL4531 is not set -# CONFIG_US5182D is not set -# CONFIG_VCNL4000 is not set -# CONFIG_VCNL4035 is not set -# CONFIG_VEML6030 is not set -# CONFIG_VEML6070 is not set -# CONFIG_VL6180 is not set -# CONFIG_ZOPT2201 is not set -# end of Light sensors - -# -# Magnetometer sensors -# -# CONFIG_AK8974 is not set -# CONFIG_AK8975 is not set -# CONFIG_AK09911 is not set -# CONFIG_BMC150_MAGN_I2C is not set -# CONFIG_BMC150_MAGN_SPI is not set -# CONFIG_MAG3110 is not set -# CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set -# CONFIG_MMC35240 is not set -# CONFIG_IIO_ST_MAGN_3AXIS is not set -# CONFIG_SENSORS_HMC5843_I2C is not set -# CONFIG_SENSORS_HMC5843_SPI is not set -# CONFIG_SENSORS_RM3100_I2C is not set -# CONFIG_SENSORS_RM3100_SPI is not set -# CONFIG_TI_TMAG5273 is not set -# CONFIG_YAMAHA_YAS530 is not set -# end of Magnetometer sensors - -# -# Multiplexers -# CONFIG_IIO_MUX=y -# end of Multiplexers - -# -# Inclinometer sensors -# -# CONFIG_HID_SENSOR_INCLINOMETER_3D is not set -# CONFIG_HID_SENSOR_DEVICE_ROTATION is not set -# end of Inclinometer sensors - -# -# Triggers - standalone -# CONFIG_IIO_HRTIMER_TRIGGER=y -# CONFIG_IIO_INTERRUPT_TRIGGER is not set -# CONFIG_IIO_TIGHTLOOP_TRIGGER is not set CONFIG_IIO_SYSFS_TRIGGER=y -# end of Triggers - standalone - -# -# Linear and angular position sensors -# -# CONFIG_HID_SENSOR_CUSTOM_INTEL_HINGE is not set -# end of Linear and angular position sensors - -# -# Digital potentiometers -# -# CONFIG_AD5110 is not set -# CONFIG_AD5272 is not set -# CONFIG_DS1803 is not set -# CONFIG_MAX5432 is not set -# CONFIG_MAX5481 is not set -# CONFIG_MAX5487 is not set -# CONFIG_MCP4018 is not set -# CONFIG_MCP4131 is not set -# CONFIG_MCP4531 is not set -# CONFIG_MCP41010 is not set -# CONFIG_TPL0102 is not set -# CONFIG_X9250 is not set -# end of Digital potentiometers - -# -# Digital potentiostats -# -# CONFIG_LMP91000 is not set -# end of Digital potentiostats - -# -# Pressure sensors -# -# CONFIG_ABP060MG is not set -# CONFIG_BMP280 is not set -# CONFIG_DLHL60D is not set -# CONFIG_DPS310 is not set -# CONFIG_HID_SENSOR_PRESS is not set -# CONFIG_HP03 is not set -# CONFIG_ICP10100 is not set -# CONFIG_MPL115_I2C is not set -# CONFIG_MPL115_SPI is not set -# CONFIG_MPL3115 is not set -# CONFIG_MPRLS0025PA is not set -# CONFIG_MS5611 is not set -# CONFIG_MS5637 is not set -# CONFIG_IIO_ST_PRESS is not set -# CONFIG_T5403 is not set -# CONFIG_HP206C is not set -# CONFIG_ZPA2326 is not set -# end of Pressure sensors - -# -# Lightning sensors -# -# CONFIG_AS3935 is not set -# end of Lightning sensors - -# -# Proximity and distance sensors -# -# CONFIG_IRSD200 is not set -# CONFIG_ISL29501 is not set -# CONFIG_LIDAR_LITE_V2 is not set -# CONFIG_MB1232 is not set -# CONFIG_PING is not set -# CONFIG_RFD77402 is not set -# CONFIG_SRF04 is not set -# CONFIG_SX9310 is not set -# CONFIG_SX9324 is not set -# CONFIG_SX9360 is not set -# CONFIG_SX9500 is not set -# CONFIG_SRF08 is not set -# CONFIG_VCNL3020 is not set -# CONFIG_VL53L0X_I2C is not set -# end of Proximity and distance sensors - -# -# Resolver to digital converters -# -# CONFIG_AD2S90 is not set -# CONFIG_AD2S1200 is not set -# end of Resolver to digital converters - -# -# Temperature sensors -# -# CONFIG_LTC2983 is not set -# CONFIG_MAXIM_THERMOCOUPLE is not set -# CONFIG_HID_SENSOR_TEMP is not set -# CONFIG_MLX90614 is not set -# CONFIG_MLX90632 is not set -# CONFIG_TMP006 is not set -# CONFIG_TMP007 is not set -# CONFIG_TMP117 is not set -# CONFIG_TSYS01 is not set -# CONFIG_TSYS02D is not set -# CONFIG_MAX30208 is not set -# CONFIG_MAX31856 is not set -# CONFIG_MAX31865 is not set -# end of Temperature sensors - -# CONFIG_NTB is not set CONFIG_PWM=y -CONFIG_PWM_SYSFS=y -# CONFIG_PWM_DEBUG is not set -# CONFIG_PWM_ATMEL_TCB is not set -# CONFIG_PWM_CLK is not set -# CONFIG_PWM_DWC is not set -# CONFIG_PWM_FSL_FTM is not set -# CONFIG_PWM_PCA9685 is not set CONFIG_PWM_ROCKCHIP=y -# CONFIG_PWM_XILINX is not set - -# -# IRQ chip support -# -CONFIG_IRQCHIP=y -CONFIG_ARM_GIC=y -CONFIG_ARM_GIC_MAX_NR=1 -CONFIG_ARM_GIC_V2M=y -CONFIG_ARM_GIC_V3=y -CONFIG_ARM_GIC_V3_ITS=y -CONFIG_ARM_GIC_V3_ITS_PCI=y -# CONFIG_AL_FIC is not set -# CONFIG_XILINX_INTC is not set -CONFIG_PARTITION_PERCPU=y -# end of IRQ chip support - -# CONFIG_IPACK_BUS is not set -CONFIG_ARCH_HAS_RESET_CONTROLLER=y -CONFIG_RESET_CONTROLLER=y -CONFIG_RESET_SCMI=y -# CONFIG_RESET_SIMPLE is not set -# CONFIG_RESET_TI_SYSCON is not set -# CONFIG_RESET_TI_TPS380X is not set - -# -# PHY Subsystem -# -CONFIG_GENERIC_PHY=y -CONFIG_GENERIC_PHY_MIPI_DPHY=y -# CONFIG_PHY_CAN_TRANSCEIVER is not set - -# -# PHY drivers for Broadcom platforms -# -# CONFIG_BCM_KONA_USB2_PHY is not set -# end of PHY drivers for Broadcom platforms - -# CONFIG_PHY_CADENCE_TORRENT is not set -# CONFIG_PHY_CADENCE_DPHY is not set -# CONFIG_PHY_CADENCE_DPHY_RX is not set -# CONFIG_PHY_CADENCE_SIERRA is not set -# CONFIG_PHY_CADENCE_SALVO is not set -# CONFIG_PHY_PXA_28NM_HSIC is not set -# CONFIG_PHY_PXA_28NM_USB2 is not set -# CONFIG_PHY_LAN966X_SERDES is not set -# CONFIG_PHY_CPCAP_USB is not set -# CONFIG_PHY_MAPPHONE_MDM6600 is not set -# CONFIG_PHY_OCELOT_SERDES is not set -# CONFIG_PHY_RTK_RTD_USB2PHY is not set -# CONFIG_PHY_RTK_RTD_USB3PHY is not set CONFIG_PHY_ROCKCHIP_DP=y CONFIG_PHY_ROCKCHIP_DPHY_RX0=y CONFIG_PHY_ROCKCHIP_EMMC=y @@ -7085,1014 +1005,109 @@ CONFIG_PHY_ROCKCHIP_PCIE=y CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y CONFIG_PHY_ROCKCHIP_TYPEC=y CONFIG_PHY_ROCKCHIP_USB=y -# CONFIG_PHY_SAMSUNG_USB2 is not set -# end of PHY Subsystem - -# CONFIG_POWERCAP is not set -# CONFIG_MCB is not set - -# -# Performance monitor support -# -# CONFIG_ARM_CCI_PMU is not set -# CONFIG_ARM_CCN is not set -# CONFIG_ARM_CMN is not set -CONFIG_ARM_PMU=y CONFIG_ARM_SMMU_V3_PMU=y -CONFIG_ARM_PMUV3=y -# CONFIG_ARM_DSU_PMU is not set -# CONFIG_ARM_SPE_PMU is not set -# CONFIG_HISI_PCIE_PMU is not set -# CONFIG_HNS3_PMU is not set -# CONFIG_ARM_CORESIGHT_PMU_ARCH_SYSTEM_PMU is not set -# end of Performance monitor support - -CONFIG_RAS=y -# CONFIG_USB4 is not set - -# -# Android -# -# CONFIG_ANDROID_BINDER_IPC is not set -# end of Android - -# CONFIG_LIBNVDIMM is not set -# CONFIG_DAX is not set -CONFIG_NVMEM=y -CONFIG_NVMEM_SYSFS=y - -# -# Layout Types -# -# CONFIG_NVMEM_LAYOUT_SL28_VPD is not set -# CONFIG_NVMEM_LAYOUT_ONIE_TLV is not set -# end of Layout Types - -# CONFIG_NVMEM_RMEM is not set -# CONFIG_NVMEM_ROCKCHIP_EFUSE is not set -# CONFIG_NVMEM_ROCKCHIP_OTP is not set -# CONFIG_NVMEM_U_BOOT_ENV is not set - -# -# HW tracing support -# -# CONFIG_STM is not set -# CONFIG_INTEL_TH is not set -# CONFIG_HISI_PTT is not set -# end of HW tracing support - -# CONFIG_FPGA is not set -# CONFIG_FSI is not set -# CONFIG_TEE is not set -CONFIG_MULTIPLEXER=y - -# -# Multiplexer drivers -# -# CONFIG_MUX_ADG792A is not set -# CONFIG_MUX_ADGS1408 is not set CONFIG_MUX_GPIO=y CONFIG_MUX_MMIO=y -# end of Multiplexer drivers - -CONFIG_PM_OPP=y -# CONFIG_SIOX is not set -# CONFIG_SLIMBUS is not set -# CONFIG_INTERCONNECT is not set -# CONFIG_COUNTER is not set -# CONFIG_MOST is not set -# CONFIG_PECI is not set -# CONFIG_HTE is not set -# CONFIG_CDX_BUS is not set -# end of Device Drivers - -# -# File systems -# -CONFIG_DCACHE_WORD_ACCESS=y -# CONFIG_VALIDATE_FS_PARSER is not set -CONFIG_FS_IOMAP=y -CONFIG_BUFFER_HEAD=y -CONFIG_LEGACY_DIRECT_IO=y -# CONFIG_EXT2_FS is not set -# CONFIG_EXT3_FS is not set CONFIG_EXT4_FS=y # CONFIG_EXT4_USE_FOR_EXT2 is not set CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=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=y -CONFIG_XFS_SUPPORT_V4=y -CONFIG_XFS_SUPPORT_ASCII_CI=y -# CONFIG_XFS_QUOTA is not set -# CONFIG_XFS_POSIX_ACL is not set -# CONFIG_XFS_RT is not set -# CONFIG_XFS_ONLINE_SCRUB is not set -# CONFIG_XFS_WARN is not set -# CONFIG_XFS_DEBUG is not set -# CONFIG_GFS2_FS is not set -# CONFIG_OCFS2_FS is not set -# CONFIG_BTRFS_FS is not set -# CONFIG_NILFS2_FS is not set -# CONFIG_F2FS_FS is not set -CONFIG_FS_POSIX_ACL=y -CONFIG_EXPORTFS=y -# CONFIG_EXPORTFS_BLOCK_OPS is not set -CONFIG_FILE_LOCKING=y -# CONFIG_FS_ENCRYPTION is not set -# CONFIG_FS_VERITY is not set -CONFIG_FSNOTIFY=y # CONFIG_DNOTIFY is not set -CONFIG_INOTIFY_USER=y -# CONFIG_FANOTIFY is not set -# CONFIG_QUOTA is not set CONFIG_AUTOFS_FS=y CONFIG_FUSE_FS=y -# CONFIG_CUSE is not set -# CONFIG_VIRTIO_FS is not set CONFIG_OVERLAY_FS=y -# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set -CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y -# CONFIG_OVERLAY_FS_INDEX is not set -# CONFIG_OVERLAY_FS_XINO_AUTO is not set -# CONFIG_OVERLAY_FS_METACOPY is not set -# CONFIG_OVERLAY_FS_DEBUG is not set - -# -# Caches -# -CONFIG_NETFS_SUPPORT=y -# CONFIG_NETFS_STATS is not set CONFIG_FSCACHE=y -# CONFIG_FSCACHE_STATS is not set -# CONFIG_FSCACHE_DEBUG is not set -# CONFIG_CACHEFILES is not set -# end of Caches - -# -# CD-ROM/DVD Filesystems -# CONFIG_ISO9660_FS=y CONFIG_JOLIET=y CONFIG_ZISOFS=y -# CONFIG_UDF_FS is not set -# end of CD-ROM/DVD Filesystems - -# -# DOS/FAT/EXFAT/NT Filesystems -# -CONFIG_FAT_FS=y CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y -CONFIG_FAT_DEFAULT_CODEPAGE=437 CONFIG_FAT_DEFAULT_IOCHARSET="ascii" -# CONFIG_FAT_DEFAULT_UTF8 is not set CONFIG_EXFAT_FS=y -CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8" -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS3_FS is not set -# end of DOS/FAT/EXFAT/NT Filesystems - -# -# Pseudo filesystems -# -CONFIG_PROC_FS=y -# CONFIG_PROC_KCORE is not set -CONFIG_PROC_SYSCTL=y -CONFIG_PROC_PAGE_MONITOR=y -# CONFIG_PROC_CHILDREN is not set -CONFIG_KERNFS=y -CONFIG_SYSFS=y CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y -CONFIG_TMPFS_XATTR=y -# CONFIG_TMPFS_INODE64 is not set -# CONFIG_TMPFS_QUOTA is not set -CONFIG_ARCH_SUPPORTS_HUGETLBFS=y -# CONFIG_HUGETLBFS is not set -CONFIG_ARCH_HAS_GIGANTIC_PAGE=y -CONFIG_CONFIGFS_FS=y -# end of Pseudo filesystems - -CONFIG_MISC_FILESYSTEMS=y -# CONFIG_ORANGEFS_FS is not set -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_ECRYPT_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_HFSPLUS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS2_FS is not set -# CONFIG_CRAMFS is not set CONFIG_SQUASHFS=y -CONFIG_SQUASHFS_FILE_CACHE=y -# CONFIG_SQUASHFS_FILE_DIRECT is not set -CONFIG_SQUASHFS_DECOMP_SINGLE=y -# CONFIG_SQUASHFS_CHOICE_DECOMP_BY_MOUNT is not set -CONFIG_SQUASHFS_COMPILE_DECOMP_SINGLE=y -# CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI is not set -# CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI_PERCPU is not set -# CONFIG_SQUASHFS_XATTR is not set -CONFIG_SQUASHFS_ZLIB=y CONFIG_SQUASHFS_LZ4=y CONFIG_SQUASHFS_LZO=y CONFIG_SQUASHFS_XZ=y CONFIG_SQUASHFS_ZSTD=y -# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set -# CONFIG_SQUASHFS_EMBEDDED is not set -CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 -# 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_DEFAULT_KMSG_BYTES=10240 -CONFIG_PSTORE_COMPRESS=y -# CONFIG_PSTORE_CONSOLE is not set -# CONFIG_PSTORE_PMSG is not set -# CONFIG_PSTORE_RAM is not set -# CONFIG_PSTORE_BLK is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UFS_FS is not set -# CONFIG_EROFS_FS is not set -CONFIG_NETWORK_FILESYSTEMS=y -# CONFIG_NFS_FS is not set -# CONFIG_NFSD is not set -# CONFIG_CEPH_FS is not set -# CONFIG_CIFS is not set -# CONFIG_SMB_SERVER is not set -# CONFIG_CODA_FS is not set -# CONFIG_AFS_FS is not set -CONFIG_NLS=y CONFIG_NLS_DEFAULT="utf-8" 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 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1250 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set CONFIG_NLS_ASCII=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_UNICODE is not set -CONFIG_IO_WQ=y -# end of File systems - -# -# Security options -# -CONFIG_KEYS=y -# CONFIG_KEYS_REQUEST_CACHE is not set -# CONFIG_PERSISTENT_KEYRINGS is not set -# CONFIG_BIG_KEYS is not set -# CONFIG_TRUSTED_KEYS is not set -# CONFIG_ENCRYPTED_KEYS is not set -# CONFIG_KEY_DH_OPERATIONS is not set -# CONFIG_KEY_NOTIFICATIONS is not set -# CONFIG_SECURITY_DMESG_RESTRICT is not set CONFIG_SECURITY=y -CONFIG_SECURITYFS=y CONFIG_SECURITY_NETWORK=y -# CONFIG_SECURITY_NETWORK_XFRM is not set -# CONFIG_SECURITY_PATH is not set CONFIG_HARDENED_USERCOPY=y -# CONFIG_FORTIFY_SOURCE is not set CONFIG_STATIC_USERMODEHELPER=y -CONFIG_STATIC_USERMODEHELPER_PATH="/sbin/usermode-helper" -# CONFIG_SECURITY_SMACK is not set -# CONFIG_SECURITY_TOMOYO is not set -# CONFIG_SECURITY_APPARMOR is not set -# CONFIG_SECURITY_LOADPIN is not set -# CONFIG_SECURITY_YAMA is not set -# CONFIG_SECURITY_SAFESETID is not set -# CONFIG_SECURITY_LOCKDOWN_LSM is not set -# CONFIG_SECURITY_LANDLOCK is not set -CONFIG_INTEGRITY=y -# CONFIG_INTEGRITY_SIGNATURE is not set -# CONFIG_IMA is not set -# CONFIG_EVM is not set -CONFIG_DEFAULT_SECURITY_DAC=y CONFIG_LSM="selinux,integrity" - -# -# Kernel hardening options -# - -# -# Memory initialization -# -CONFIG_CC_HAS_AUTO_VAR_INIT_PATTERN=y -CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO_BARE=y -CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y CONFIG_INIT_STACK_NONE=y -# CONFIG_INIT_STACK_ALL_PATTERN is not set -# CONFIG_INIT_STACK_ALL_ZERO is not set -# CONFIG_GCC_PLUGIN_STACKLEAK is not set CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y CONFIG_INIT_ON_FREE_DEFAULT_ON=y -CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y -# CONFIG_ZERO_CALL_USED_REGS is not set -# end of Memory initialization - -# -# Hardening of kernel data structures -# -# CONFIG_LIST_HARDENED is not set -# CONFIG_BUG_ON_DATA_CORRUPTION is not set -# end of Hardening of kernel data structures - -CONFIG_RANDSTRUCT_NONE=y -# CONFIG_RANDSTRUCT_FULL is not set -# CONFIG_RANDSTRUCT_PERFORMANCE is not set -# end of Kernel hardening options -# end of Security options - -CONFIG_XOR_BLOCKS=y -CONFIG_ASYNC_CORE=y -CONFIG_ASYNC_MEMCPY=y -CONFIG_ASYNC_XOR=y -CONFIG_ASYNC_PQ=y -CONFIG_ASYNC_RAID6_RECOV=y -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_SIG2=y -CONFIG_CRYPTO_SKCIPHER=y -CONFIG_CRYPTO_SKCIPHER2=y -CONFIG_CRYPTO_HASH=y -CONFIG_CRYPTO_HASH2=y -CONFIG_CRYPTO_RNG=y -CONFIG_CRYPTO_RNG2=y -CONFIG_CRYPTO_RNG_DEFAULT=y -CONFIG_CRYPTO_AKCIPHER2=y -CONFIG_CRYPTO_AKCIPHER=y -CONFIG_CRYPTO_KPP2=y -CONFIG_CRYPTO_KPP=y -CONFIG_CRYPTO_ACOMP2=y -CONFIG_CRYPTO_MANAGER=y -CONFIG_CRYPTO_MANAGER2=y CONFIG_CRYPTO_USER=y -CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y -CONFIG_CRYPTO_NULL=y -CONFIG_CRYPTO_NULL2=y CONFIG_CRYPTO_PCRYPT=y CONFIG_CRYPTO_CRYPTD=y -CONFIG_CRYPTO_AUTHENC=y -# CONFIG_CRYPTO_TEST is not set -CONFIG_CRYPTO_ENGINE=y -# end of Crypto core or helper - -# -# Public-key cryptography -# -CONFIG_CRYPTO_RSA=y -# CONFIG_CRYPTO_DH is not set -CONFIG_CRYPTO_ECC=y CONFIG_CRYPTO_ECDH=y -# CONFIG_CRYPTO_ECDSA is not set -# CONFIG_CRYPTO_ECRDSA is not set -# CONFIG_CRYPTO_SM2 is not set -# CONFIG_CRYPTO_CURVE25519 is not set -# end of Public-key cryptography - -# -# Block ciphers -# -CONFIG_CRYPTO_AES=y -# CONFIG_CRYPTO_AES_TI is not set -# CONFIG_CRYPTO_ANUBIS is not set -# CONFIG_CRYPTO_ARIA is not set -# 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_SEED is not set -# CONFIG_CRYPTO_SERPENT is not set -# CONFIG_CRYPTO_SM4_GENERIC is not set -# CONFIG_CRYPTO_TEA is not set CONFIG_CRYPTO_TWOFISH=y -CONFIG_CRYPTO_TWOFISH_COMMON=y -# end of Block ciphers - -# -# Length-preserving ciphers and modes -# -# CONFIG_CRYPTO_ADIANTUM is not set CONFIG_CRYPTO_ARC4=y -CONFIG_CRYPTO_CHACHA20=y -CONFIG_CRYPTO_CBC=y -CONFIG_CRYPTO_CFB=y -CONFIG_CRYPTO_CTR=y CONFIG_CRYPTO_CTS=y -CONFIG_CRYPTO_ECB=y -# CONFIG_CRYPTO_HCTR2 is not set -# CONFIG_CRYPTO_KEYWRAP is not set -# CONFIG_CRYPTO_LRW is not set -# CONFIG_CRYPTO_OFB is not set -# CONFIG_CRYPTO_PCBC is not set CONFIG_CRYPTO_XTS=y -CONFIG_CRYPTO_NHPOLY1305=y -# end of Length-preserving ciphers and modes - -# -# AEAD (authenticated encryption with associated data) ciphers -# -# CONFIG_CRYPTO_AEGIS128 is not set CONFIG_CRYPTO_CHACHA20POLY1305=y CONFIG_CRYPTO_CCM=y -CONFIG_CRYPTO_GCM=y -CONFIG_CRYPTO_GENIV=y -CONFIG_CRYPTO_SEQIV=y -CONFIG_CRYPTO_ECHAINIV=y CONFIG_CRYPTO_ESSIV=y -# end of AEAD (authenticated encryption with associated data) ciphers - -# -# Hashes, digests, and MACs -# -# CONFIG_CRYPTO_BLAKE2B is not set CONFIG_CRYPTO_CMAC=y -CONFIG_CRYPTO_GHASH=y -CONFIG_CRYPTO_HMAC=y -# CONFIG_CRYPTO_MD4 is not set -CONFIG_CRYPTO_MD5=y -# CONFIG_CRYPTO_MICHAEL_MIC is not set -CONFIG_CRYPTO_POLY1305=y -# CONFIG_CRYPTO_RMD160 is not set -CONFIG_CRYPTO_SHA1=y -CONFIG_CRYPTO_SHA256=y -CONFIG_CRYPTO_SHA512=y -CONFIG_CRYPTO_SHA3=y -# CONFIG_CRYPTO_SM3_GENERIC is not set -# CONFIG_CRYPTO_STREEBOG is not set -# CONFIG_CRYPTO_VMAC is not set -# CONFIG_CRYPTO_WP512 is not set CONFIG_CRYPTO_XCBC=y -# CONFIG_CRYPTO_XXHASH is not set -# end of Hashes, digests, and MACs - -# -# CRCs (cyclic redundancy checks) -# -CONFIG_CRYPTO_CRC32C=y CONFIG_CRYPTO_CRC32=y -CONFIG_CRYPTO_CRCT10DIF=y -# CONFIG_CRYPTO_CRC64_ROCKSOFT is not set -# end of CRCs (cyclic redundancy checks) - -# -# Compression -# -CONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_LZO=y -# CONFIG_CRYPTO_842 is not set CONFIG_CRYPTO_LZ4=y CONFIG_CRYPTO_LZ4HC=y CONFIG_CRYPTO_ZSTD=y -# end of Compression - -# -# Random number generation -# CONFIG_CRYPTO_ANSI_CPRNG=y -CONFIG_CRYPTO_DRBG_MENU=y -CONFIG_CRYPTO_DRBG_HMAC=y -# CONFIG_CRYPTO_DRBG_HASH is not set -# CONFIG_CRYPTO_DRBG_CTR is not set -CONFIG_CRYPTO_DRBG=y -CONFIG_CRYPTO_JITTERENTROPY=y -# CONFIG_CRYPTO_JITTERENTROPY_TESTINTERFACE is not set -# end of Random number generation - -# -# Userspace interface -# -CONFIG_CRYPTO_USER_API=y CONFIG_CRYPTO_USER_API_HASH=y CONFIG_CRYPTO_USER_API_SKCIPHER=y CONFIG_CRYPTO_USER_API_RNG=y -# CONFIG_CRYPTO_USER_API_RNG_CAVP is not set CONFIG_CRYPTO_USER_API_AEAD=y -CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y CONFIG_CRYPTO_STATS=y -# end of Userspace interface - -CONFIG_CRYPTO_HASH_INFO=y CONFIG_CRYPTO_NHPOLY1305_NEON=y -CONFIG_CRYPTO_CHACHA20_NEON=y - -# -# Accelerated Cryptographic Algorithms for CPU (arm64) -# CONFIG_CRYPTO_GHASH_ARM64_CE=y -CONFIG_CRYPTO_POLY1305_NEON=y CONFIG_CRYPTO_SHA1_ARM64_CE=y -CONFIG_CRYPTO_SHA256_ARM64=y CONFIG_CRYPTO_SHA2_ARM64_CE=y -CONFIG_CRYPTO_SHA512_ARM64=y CONFIG_CRYPTO_SHA512_ARM64_CE=y -# CONFIG_CRYPTO_SHA3_ARM64 is not set -# CONFIG_CRYPTO_SM3_NEON is not set -# CONFIG_CRYPTO_SM3_ARM64_CE is not set -# CONFIG_CRYPTO_POLYVAL_ARM64_CE is not set CONFIG_CRYPTO_AES_ARM64=y -CONFIG_CRYPTO_AES_ARM64_CE=y CONFIG_CRYPTO_AES_ARM64_CE_BLK=y -CONFIG_CRYPTO_AES_ARM64_NEON_BLK=y CONFIG_CRYPTO_AES_ARM64_BS=y -# CONFIG_CRYPTO_SM4_ARM64_CE is not set -# CONFIG_CRYPTO_SM4_ARM64_CE_BLK is not set -# CONFIG_CRYPTO_SM4_ARM64_NEON_BLK is not set CONFIG_CRYPTO_AES_ARM64_CE_CCM=y -# CONFIG_CRYPTO_SM4_ARM64_CE_CCM is not set -# CONFIG_CRYPTO_SM4_ARM64_CE_GCM is not set -# CONFIG_CRYPTO_CRCT10DIF_ARM64_CE is not set -# end of Accelerated Cryptographic Algorithms for CPU (arm64) - -CONFIG_CRYPTO_HW=y -# CONFIG_CRYPTO_DEV_ATMEL_ECC is not set -# CONFIG_CRYPTO_DEV_ATMEL_SHA204A is not set -# CONFIG_CRYPTO_DEV_CCP is not set -# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set -# CONFIG_CRYPTO_DEV_QAT_DH895xCC is not set -# CONFIG_CRYPTO_DEV_QAT_C3XXX is not set -# CONFIG_CRYPTO_DEV_QAT_C62X is not set -# CONFIG_CRYPTO_DEV_QAT_4XXX is not set -# CONFIG_CRYPTO_DEV_QAT_DH895xCCVF is not set -# CONFIG_CRYPTO_DEV_QAT_C3XXXVF is not set -# CONFIG_CRYPTO_DEV_QAT_C62XVF is not set -# CONFIG_CRYPTO_DEV_CAVIUM_ZIP is not set CONFIG_CRYPTO_DEV_ROCKCHIP=y -# CONFIG_CRYPTO_DEV_ROCKCHIP_DEBUG is not set -# CONFIG_CRYPTO_DEV_SAFEXCEL is not set -# CONFIG_CRYPTO_DEV_CCREE is not set -# CONFIG_CRYPTO_DEV_HISI_SEC is not set -# CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set -CONFIG_ASYMMETRIC_KEY_TYPE=y -CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y -CONFIG_X509_CERTIFICATE_PARSER=y -# CONFIG_PKCS8_PRIVATE_KEY_PARSER is not set -CONFIG_PKCS7_MESSAGE_PARSER=y -# CONFIG_PKCS7_TEST_KEY is not set -# CONFIG_SIGNED_PE_FILE_VERIFICATION is not set -# CONFIG_FIPS_SIGNATURE_SELFTEST is not set - -# -# Certificates for signature checking -# -CONFIG_SYSTEM_TRUSTED_KEYRING=y -CONFIG_SYSTEM_TRUSTED_KEYS="" -# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set -# CONFIG_SECONDARY_TRUSTED_KEYRING is not set -# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set -# end of Certificates for signature checking - -CONFIG_BINARY_PRINTF=y - -# -# Library routines -# -CONFIG_RAID6_PQ=y -CONFIG_RAID6_PQ_BENCHMARK=y -CONFIG_LINEAR_RANGES=y -# CONFIG_PACKING is not set -CONFIG_BITREVERSE=y -CONFIG_HAVE_ARCH_BITREVERSE=y -CONFIG_GENERIC_STRNCPY_FROM_USER=y -CONFIG_GENERIC_STRNLEN_USER=y -CONFIG_GENERIC_NET_UTILS=y CONFIG_CORDIC=y -# CONFIG_PRIME_NUMBERS is not set -CONFIG_RATIONAL=y -CONFIG_GENERIC_PCI_IOMAP=y -CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y -CONFIG_ARCH_HAS_FAST_MULTIPLIER=y -CONFIG_ARCH_USE_SYM_ANNOTATIONS=y -# CONFIG_INDIRECT_PIO is not set - -# -# Crypto library routines -# -CONFIG_CRYPTO_LIB_UTILS=y -CONFIG_CRYPTO_LIB_AES=y -CONFIG_CRYPTO_LIB_ARC4=y -CONFIG_CRYPTO_LIB_GF128MUL=y -CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y -CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=y -CONFIG_CRYPTO_LIB_CHACHA_GENERIC=y -CONFIG_CRYPTO_LIB_CHACHA=y -CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=y -CONFIG_CRYPTO_LIB_CURVE25519=y -CONFIG_CRYPTO_LIB_DES=y -CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 -CONFIG_CRYPTO_ARCH_HAVE_LIB_POLY1305=y -CONFIG_CRYPTO_LIB_POLY1305_GENERIC=y -CONFIG_CRYPTO_LIB_POLY1305=y -CONFIG_CRYPTO_LIB_CHACHA20POLY1305=y -CONFIG_CRYPTO_LIB_SHA1=y -CONFIG_CRYPTO_LIB_SHA256=y -# end of Crypto library routines - CONFIG_CRC_CCITT=y -CONFIG_CRC16=y CONFIG_CRC_T10DIF=y -# CONFIG_CRC64_ROCKSOFT is not set CONFIG_CRC_ITU_T=y -CONFIG_CRC32=y -# CONFIG_CRC32_SELFTEST is not set -CONFIG_CRC32_SLICEBY8=y -# CONFIG_CRC32_SLICEBY4 is not set -# CONFIG_CRC32_SARWATE is not set -# CONFIG_CRC32_BIT is not set -CONFIG_CRC64=m -# CONFIG_CRC4 is not set CONFIG_CRC7=y -CONFIG_LIBCRC32C=y -# CONFIG_CRC8 is not set -CONFIG_XXHASH=y -CONFIG_AUDIT_ARCH_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_LZ4_COMPRESS=y -CONFIG_LZ4HC_COMPRESS=y -CONFIG_LZ4_DECOMPRESS=y -CONFIG_ZSTD_COMMON=y -CONFIG_ZSTD_COMPRESS=y -CONFIG_ZSTD_DECOMPRESS=y -CONFIG_XZ_DEC=y # CONFIG_XZ_DEC_X86 is not set # CONFIG_XZ_DEC_POWERPC is not set -# CONFIG_XZ_DEC_IA64 is not set -CONFIG_XZ_DEC_ARM=y -CONFIG_XZ_DEC_ARMTHUMB=y # CONFIG_XZ_DEC_SPARC is not set -# CONFIG_XZ_DEC_MICROLZMA is not set -CONFIG_XZ_DEC_BCJ=y -# CONFIG_XZ_DEC_TEST is not set -CONFIG_DECOMPRESS_GZIP=y -CONFIG_DECOMPRESS_BZIP2=y -CONFIG_DECOMPRESS_LZMA=y -CONFIG_DECOMPRESS_XZ=y -CONFIG_DECOMPRESS_LZO=y -CONFIG_DECOMPRESS_LZ4=y -CONFIG_DECOMPRESS_ZSTD=y -CONFIG_GENERIC_ALLOCATOR=y -CONFIG_TEXTSEARCH=y -CONFIG_TEXTSEARCH_KMP=m -CONFIG_TEXTSEARCH_BM=m -CONFIG_TEXTSEARCH_FSM=m -CONFIG_XARRAY_MULTI=y -CONFIG_ASSOCIATIVE_ARRAY=y -CONFIG_HAS_IOMEM=y -CONFIG_HAS_IOPORT=y -CONFIG_HAS_IOPORT_MAP=y -CONFIG_HAS_DMA=y -CONFIG_DMA_OPS=y -CONFIG_NEED_SG_DMA_FLAGS=y -CONFIG_NEED_SG_DMA_LENGTH=y -CONFIG_NEED_DMA_MAP_STATE=y -CONFIG_ARCH_DMA_ADDR_T_64BIT=y -CONFIG_DMA_DECLARE_COHERENT=y -CONFIG_ARCH_HAS_SETUP_DMA_OPS=y -CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS=y -CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y -CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU=y -CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y -CONFIG_SWIOTLB=y -# CONFIG_SWIOTLB_DYNAMIC is not set -CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC=y -# CONFIG_DMA_RESTRICTED_POOL is not set -CONFIG_DMA_NONCOHERENT_MMAP=y -CONFIG_DMA_COHERENT_POOL=y -CONFIG_DMA_DIRECT_REMAP=y -# CONFIG_DMA_API_DEBUG is not set -# CONFIG_DMA_MAP_BENCHMARK is not set -CONFIG_SGL_ALLOC=y -# CONFIG_FORCE_NR_CPUS is not set -CONFIG_CPU_RMAP=y -CONFIG_DQL=y -CONFIG_GLOB=y -# CONFIG_GLOB_SELFTEST is not set -CONFIG_NLATTR=y -CONFIG_LRU_CACHE=m -CONFIG_CLZ_TAB=y -CONFIG_IRQ_POLL=y -CONFIG_MPILIB=y -CONFIG_LIBFDT=y -CONFIG_OID_REGISTRY=y -CONFIG_HAVE_GENERIC_VDSO=y -CONFIG_GENERIC_GETTIMEOFDAY=y -CONFIG_GENERIC_VDSO_TIME_NS=y -CONFIG_FONT_SUPPORT=y -# CONFIG_FONTS is not set -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y -CONFIG_SG_POOL=y -CONFIG_ARCH_HAS_PMEM_API=y -CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y -CONFIG_ARCH_STACKWALK=y -CONFIG_SBITMAP=y -# end of Library routines - -CONFIG_GENERIC_IOREMAP=y -CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y - -# -# Kernel hacking -# - -# -# printk and dmesg options -# CONFIG_PRINTK_TIME=y -# CONFIG_PRINTK_CALLER is not set -# CONFIG_STACKTRACE_BUILD_ID is not set -CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 -CONFIG_CONSOLE_LOGLEVEL_QUIET=4 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7 -# CONFIG_BOOT_PRINTK_DELAY is not set CONFIG_DYNAMIC_DEBUG=y -CONFIG_DYNAMIC_DEBUG_CORE=y # CONFIG_SYMBOLIC_ERRNAME is not set -CONFIG_DEBUG_BUGVERBOSE=y -# end of printk and dmesg options - -CONFIG_DEBUG_KERNEL=y # CONFIG_DEBUG_MISC is not set - -# -# Compile-time checks and compiler options -# -CONFIG_AS_HAS_NON_CONST_LEB128=y -CONFIG_DEBUG_INFO_NONE=y -# CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set -# CONFIG_DEBUG_INFO_DWARF4 is not set -# CONFIG_DEBUG_INFO_DWARF5 is not set -CONFIG_FRAME_WARN=2048 -# CONFIG_STRIP_ASM_SYMS is not set -# CONFIG_READABLE_ASM is not set -# CONFIG_HEADERS_INSTALL is not set -# CONFIG_DEBUG_SECTION_MISMATCH is not set -CONFIG_SECTION_MISMATCH_WARN_ONLY=y -# CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B is not set -CONFIG_ARCH_WANT_FRAME_POINTERS=y -CONFIG_FRAME_POINTER=y -# CONFIG_VMLINUX_MAP is not set -# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set -# end of Compile-time checks and compiler options - -# -# Generic Kernel Debugging Instruments -# CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0 -CONFIG_MAGIC_SYSRQ_SERIAL=y -CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE="" CONFIG_DEBUG_FS=y -CONFIG_DEBUG_FS_ALLOW_ALL=y -# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set -# CONFIG_DEBUG_FS_ALLOW_NONE is not set -CONFIG_HAVE_ARCH_KGDB=y -# CONFIG_KGDB is not set -CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y -# CONFIG_UBSAN is not set -CONFIG_HAVE_ARCH_KCSAN=y -CONFIG_HAVE_KCSAN_COMPILER=y -# CONFIG_KCSAN is not set -# end of Generic Kernel Debugging Instruments - -# -# Networking Debugging -# -# CONFIG_NET_DEV_REFCNT_TRACKER is not set -# CONFIG_NET_NS_REFCNT_TRACKER is not set -# CONFIG_DEBUG_NET is not set -# end of Networking Debugging - -# -# Memory Debugging -# -# CONFIG_PAGE_EXTENSION is not set -# CONFIG_DEBUG_PAGEALLOC is not set # CONFIG_SLUB_DEBUG is not set -# CONFIG_PAGE_OWNER is not set -# CONFIG_PAGE_POISONING is not set -# CONFIG_DEBUG_RODATA_TEST is not set -CONFIG_ARCH_HAS_DEBUG_WX=y -# CONFIG_DEBUG_WX is not set -CONFIG_GENERIC_PTDUMP=y -# CONFIG_PTDUMP_DEBUGFS is not set -CONFIG_HAVE_DEBUG_KMEMLEAK=y -# CONFIG_DEBUG_KMEMLEAK is not set -# CONFIG_PER_VMA_LOCK_STATS is not set -# CONFIG_DEBUG_OBJECTS is not set -# CONFIG_SHRINKER_DEBUG is not set -# CONFIG_DEBUG_STACK_USAGE is not set -# CONFIG_SCHED_STACK_END_CHECK is not set -CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y -# CONFIG_DEBUG_VM is not set -# CONFIG_DEBUG_VM_PGTABLE is not set -CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y -# CONFIG_DEBUG_VIRTUAL is not set -# CONFIG_DEBUG_MEMORY_INIT is not set -# CONFIG_DEBUG_PER_CPU_MAPS is not set -CONFIG_HAVE_ARCH_KASAN=y -CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y -CONFIG_HAVE_ARCH_KASAN_HW_TAGS=y -CONFIG_HAVE_ARCH_KASAN_VMALLOC=y -CONFIG_CC_HAS_KASAN_GENERIC=y -CONFIG_CC_HAS_KASAN_SW_TAGS=y -CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y -# CONFIG_KASAN is not set -CONFIG_HAVE_ARCH_KFENCE=y -# CONFIG_KFENCE is not set -# end of Memory Debugging - -# CONFIG_DEBUG_SHIRQ is not set - -# -# Debug Oops, Lockups and Hangs -# -# CONFIG_PANIC_ON_OOPS is not set -CONFIG_PANIC_ON_OOPS_VALUE=0 CONFIG_PANIC_TIMEOUT=1 -# CONFIG_SOFTLOCKUP_DETECTOR is not set -CONFIG_HAVE_HARDLOCKUP_DETECTOR_BUDDY=y -# CONFIG_HARDLOCKUP_DETECTOR is not set CONFIG_DETECT_HUNG_TASK=y -CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y -# CONFIG_WQ_WATCHDOG is not set -# CONFIG_WQ_CPU_INTENSIVE_REPORT is not set -# CONFIG_TEST_LOCKUP is not set -# end of Debug Oops, Lockups and Hangs - -# -# Scheduler Debugging -# # CONFIG_SCHED_DEBUG is not set -CONFIG_SCHED_INFO=y CONFIG_SCHEDSTATS=y -# end of Scheduler Debugging - -# CONFIG_DEBUG_TIMEKEEPING is not set -# CONFIG_DEBUG_PREEMPT is not set - -# -# Lock Debugging (spinlocks, mutexes, etc...) -# -CONFIG_LOCK_DEBUGGING_SUPPORT=y -# CONFIG_PROVE_LOCKING is not set -# CONFIG_LOCK_STAT is not set -# CONFIG_DEBUG_RT_MUTEXES is not set CONFIG_DEBUG_SPINLOCK=y -# CONFIG_DEBUG_MUTEXES is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set -# CONFIG_DEBUG_RWSEMS is not set -# CONFIG_DEBUG_LOCK_ALLOC is not set -# CONFIG_DEBUG_ATOMIC_SLEEP is not set -# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set -# CONFIG_LOCK_TORTURE_TEST is not set -# CONFIG_WW_MUTEX_SELFTEST is not set -# CONFIG_SCF_TORTURE_TEST is not set -# CONFIG_CSD_LOCK_WAIT_DEBUG is not set -# end of Lock Debugging (spinlocks, mutexes, etc...) - -# CONFIG_DEBUG_IRQFLAGS is not set CONFIG_STACKTRACE=y -# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set -# CONFIG_DEBUG_KOBJECT is not set - -# -# Debug kernel data structures -# -# CONFIG_DEBUG_LIST is not set -# CONFIG_DEBUG_PLIST is not set -# CONFIG_DEBUG_SG is not set -# CONFIG_DEBUG_NOTIFIERS is not set -# CONFIG_DEBUG_MAPLE_TREE is not set -# end of Debug kernel data structures - CONFIG_DEBUG_CREDENTIALS=y - -# -# RCU Debugging -# -# CONFIG_RCU_SCALE_TEST is not set -# CONFIG_RCU_TORTURE_TEST is not set -# CONFIG_RCU_REF_SCALE_TEST is not set CONFIG_RCU_CPU_STALL_TIMEOUT=60 CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=20 -# CONFIG_RCU_CPU_STALL_CPUTIME is not set # CONFIG_RCU_TRACE is not set -# CONFIG_RCU_EQS_DEBUG is not set -# end of RCU Debugging - -# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set -# CONFIG_LATENCYTOP is not set -CONFIG_HAVE_FUNCTION_TRACER=y -CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y -CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y -CONFIG_HAVE_DYNAMIC_FTRACE=y -CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS=y -CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y -CONFIG_HAVE_SYSCALL_TRACEPOINTS=y -CONFIG_HAVE_C_RECORDMCOUNT=y -CONFIG_TRACING_SUPPORT=y # CONFIG_FTRACE is not set -# CONFIG_SAMPLES is not set -CONFIG_HAVE_SAMPLE_FTRACE_DIRECT=y -CONFIG_HAVE_SAMPLE_FTRACE_DIRECT_MULTI=y # CONFIG_STRICT_DEVMEM is not set - -# -# arm64 Debugging -# -# CONFIG_PID_IN_CONTEXTIDR is not set -# CONFIG_ARM64_RELOC_TEST is not set -# CONFIG_CORESIGHT is not set -# end of arm64 Debugging - -# -# Kernel Testing and Coverage -# -# CONFIG_KUNIT is not set -# CONFIG_NOTIFIER_ERROR_INJECTION is not set -# CONFIG_FAULT_INJECTION is not set -CONFIG_ARCH_HAS_KCOV=y -CONFIG_CC_HAS_SANCOV_TRACE_PC=y -# CONFIG_KCOV is not set # CONFIG_RUNTIME_TESTING_MENU is not set -CONFIG_ARCH_USE_MEMTEST=y -# CONFIG_MEMTEST is not set -# end of Kernel Testing and Coverage - -# -# Rust hacking -# -# end of Rust hacking -# end of Kernel hacking diff --git a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.old.conf b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.old.conf new file mode 100644 index 0000000000..695ec83392 --- /dev/null +++ b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.old.conf @@ -0,0 +1,8098 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/arm64 6.6.0-rc3 Kernel Configuration +# +CONFIG_CC_VERSION_TEXT="aarch64-libreelec-linux-gnueabi-gcc-12.3.0 (GCC) 12.3.0" +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=120300 +CONFIG_CLANG_VERSION=0 +CONFIG_AS_IS_GNU=y +CONFIG_AS_VERSION=24100 +CONFIG_LD_IS_BFD=y +CONFIG_LD_VERSION=24100 +CONFIG_LLD_VERSION=0 +CONFIG_CC_CAN_LINK=y +CONFIG_CC_CAN_LINK_STATIC=y +CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y +CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y +CONFIG_CC_HAS_ASM_INLINE=y +CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y +CONFIG_PAHOLE_VERSION=0 +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_TABLE_SORT=y +CONFIG_THREAD_INFO_IN_TASK=y + +# +# General setup +# +CONFIG_INIT_ENV_ARG_LIMIT=32 +# CONFIG_COMPILE_TEST is not set +# CONFIG_WERROR is not set +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_BUILD_SALT="" +CONFIG_DEFAULT_INIT="" +CONFIG_DEFAULT_HOSTNAME="@DEVICENAME@" +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_SYSVIPC_COMPAT=y +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +CONFIG_WATCH_QUEUE=y +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_USELIB=y +# CONFIG_AUDIT is not set +CONFIG_HAVE_ARCH_AUDITSYSCALL=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y +CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y +CONFIG_GENERIC_IRQ_MIGRATION=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_CHIP=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_GENERIC_IRQ_IPI=y +CONFIG_GENERIC_MSI_IRQ=y +CONFIG_IRQ_MSI_IOMMU=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_SPARSE_IRQ=y +# CONFIG_GENERIC_IRQ_DEBUGFS is not set +# end of IRQ subsystem + +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_ARCH_HAS_TICK_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_HAVE_POSIX_CPU_TIMERS_TASK_WORK=y +CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y +CONFIG_CONTEXT_TRACKING=y +CONFIG_CONTEXT_TRACKING_IDLE=y + +# +# Timers subsystem +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ_COMMON=y +# CONFIG_HZ_PERIODIC is not set +CONFIG_NO_HZ_IDLE=y +# CONFIG_NO_HZ_FULL is not set +# CONFIG_NO_HZ is not set +CONFIG_HIGH_RES_TIMERS=y +# end of Timers subsystem + +CONFIG_BPF=y +CONFIG_HAVE_EBPF_JIT=y +CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y + +# +# BPF subsystem +# +CONFIG_BPF_SYSCALL=y +CONFIG_BPF_JIT=y +CONFIG_BPF_JIT_ALWAYS_ON=y +CONFIG_BPF_JIT_DEFAULT_ON=y +# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set +# CONFIG_BPF_PRELOAD is not set +# end of BPF subsystem + +CONFIG_PREEMPT_BUILD=y +# CONFIG_PREEMPT_NONE is not set +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREEMPT=y +CONFIG_PREEMPT_COUNT=y +CONFIG_PREEMPTION=y +# CONFIG_PREEMPT_DYNAMIC is not set +# CONFIG_SCHED_CORE is not set + +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +CONFIG_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_SCHED_AVG_IRQ=y +CONFIG_SCHED_THERMAL_PRESSURE=y +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_TASKSTATS is not set +# CONFIG_PSI is not set +# end of CPU/Task time and stats accounting + +CONFIG_CPU_ISOLATION=y + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +CONFIG_PREEMPT_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_TREE_SRCU=y +CONFIG_TASKS_RCU_GENERIC=y +CONFIG_TASKS_RCU=y +CONFIG_TASKS_TRACE_RCU=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_RCU_NEED_SEGCBLIST=y +# end of RCU Subsystem + +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +# CONFIG_IKHEADERS is not set +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +# CONFIG_PRINTK_INDEX is not set +CONFIG_GENERIC_SCHED_CLOCK=y + +# +# Scheduler features +# +# CONFIG_UCLAMP_TASK is not set +# end of Scheduler features + +CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y +CONFIG_CC_HAS_INT128=y +CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" +CONFIG_GCC11_NO_ARRAY_BOUNDS=y +CONFIG_CC_NO_ARRAY_BOUNDS=y +CONFIG_ARCH_SUPPORTS_INT128=y +CONFIG_CGROUPS=y +CONFIG_PAGE_COUNTER=y +# CONFIG_CGROUP_FAVOR_DYNMODS is not set +CONFIG_MEMCG=y +CONFIG_MEMCG_KMEM=y +CONFIG_BLK_CGROUP=y +CONFIG_CGROUP_WRITEBACK=y +CONFIG_CGROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_RT_GROUP_SCHED=y +CONFIG_SCHED_MM_CID=y +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_RDMA=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CPUSETS=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_BPF=y +# CONFIG_CGROUP_MISC is not set +# CONFIG_CGROUP_DEBUG is not set +CONFIG_SOCK_CGROUP_DATA=y +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_TIME_NS=y +CONFIG_IPC_NS=y +# CONFIG_USER_NS is not set +CONFIG_PID_NS=y +CONFIG_NET_NS=y +# CONFIG_CHECKPOINT_RESTORE is not set +CONFIG_SCHED_AUTOGROUP=y +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="@INITRAMFS_SOURCE@" +CONFIG_INITRAMFS_ROOT_UID=0 +CONFIG_INITRAMFS_ROOT_GID=0 +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_RD_XZ=y +CONFIG_RD_LZO=y +CONFIG_RD_LZ4=y +CONFIG_RD_ZSTD=y +# CONFIG_INITRAMFS_COMPRESSION_GZIP is not set +# CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set +# CONFIG_INITRAMFS_COMPRESSION_LZMA is not set +# CONFIG_INITRAMFS_COMPRESSION_XZ is not set +CONFIG_INITRAMFS_COMPRESSION_LZO=y +# CONFIG_INITRAMFS_COMPRESSION_LZ4 is not set +# CONFIG_INITRAMFS_COMPRESSION_ZSTD is not set +# CONFIG_INITRAMFS_COMPRESSION_NONE is not set +CONFIG_BOOT_CONFIG=y +# CONFIG_BOOT_CONFIG_FORCE is not set +# CONFIG_BOOT_CONFIG_EMBED is not set +CONFIG_INITRAMFS_PRESERVE_MTIME=y +# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_LD_ORPHAN_WARN=y +CONFIG_LD_ORPHAN_WARN_LEVEL="warn" +CONFIG_SYSCTL=y +CONFIG_HAVE_UID16=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_EXPERT=y +CONFIG_UID16=y +CONFIG_MULTIUSER=y +CONFIG_SGETMASK_SYSCALL=y +CONFIG_SYSFS_SYSCALL=y +CONFIG_FHANDLE=y +CONFIG_POSIX_TIMERS=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_FUTEX_PI=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_IO_URING=y +CONFIG_ADVISE_SYSCALLS=y +CONFIG_MEMBARRIER=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_SELFTEST is not set +CONFIG_KALLSYMS_ALL=y +CONFIG_KALLSYMS_BASE_RELATIVE=y +CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y +CONFIG_KCMP=y +CONFIG_RSEQ=y +CONFIG_CACHESTAT_SYSCALL=y +# CONFIG_DEBUG_RSEQ is not set +CONFIG_HAVE_PERF_EVENTS=y +# CONFIG_PC104 is not set + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +# end of Kernel Performance Events And Counters + +CONFIG_SYSTEM_DATA_VERIFICATION=y +CONFIG_PROFILING=y + +# +# Kexec and crash features +# +# CONFIG_KEXEC is not set +# CONFIG_KEXEC_FILE is not set +# CONFIG_CRASH_DUMP is not set +# end of Kexec and crash features +# end of General setup + +CONFIG_ARM64=y +CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS=y +CONFIG_64BIT=y +CONFIG_MMU=y +CONFIG_ARM64_PAGE_SHIFT=12 +CONFIG_ARM64_CONT_PTE_SHIFT=4 +CONFIG_ARM64_CONT_PMD_SHIFT=4 +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_STACKTRACE_SUPPORT=y +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CSUM=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SMP=y +CONFIG_KERNEL_MODE_NEON=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_PGTABLE_LEVELS=3 +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_ARCH_PROC_KCORE_TEXT=y +CONFIG_BUILTIN_RETURN_ADDRESS_STRIPS_PAC=y + +# +# Platform selection +# +# CONFIG_ARCH_ACTIONS is not set +# CONFIG_ARCH_SUNXI is not set +# CONFIG_ARCH_ALPINE is not set +# CONFIG_ARCH_APPLE is not set +# CONFIG_ARCH_BCM is not set +# CONFIG_ARCH_BERLIN is not set +# CONFIG_ARCH_BITMAIN is not set +# CONFIG_ARCH_EXYNOS is not set +# CONFIG_ARCH_SPARX5 is not set +# CONFIG_ARCH_K3 is not set +# CONFIG_ARCH_LG1K is not set +# CONFIG_ARCH_HISI is not set +# CONFIG_ARCH_KEEMBAY is not set +# CONFIG_ARCH_MEDIATEK is not set +# CONFIG_ARCH_MESON is not set +# CONFIG_ARCH_MVEBU is not set +# CONFIG_ARCH_NXP is not set +# CONFIG_ARCH_MA35 is not set +# CONFIG_ARCH_NPCM is not set +# CONFIG_ARCH_QCOM is not set +# CONFIG_ARCH_REALTEK is not set +# CONFIG_ARCH_RENESAS is not set +CONFIG_ARCH_ROCKCHIP=y +# CONFIG_ARCH_SEATTLE is not set +# CONFIG_ARCH_INTEL_SOCFPGA is not set +# CONFIG_ARCH_STM32 is not set +# CONFIG_ARCH_SYNQUACER is not set +# CONFIG_ARCH_TEGRA is not set +# CONFIG_ARCH_SPRD is not set +# CONFIG_ARCH_THUNDER is not set +# CONFIG_ARCH_THUNDER2 is not set +# CONFIG_ARCH_UNIPHIER is not set +# CONFIG_ARCH_VEXPRESS is not set +# CONFIG_ARCH_VISCONTI is not set +# CONFIG_ARCH_XGENE is not set +# CONFIG_ARCH_ZYNQMP is not set +# end of Platform selection + +# +# Kernel Features +# + +# +# ARM errata workarounds via the alternatives framework +# +CONFIG_AMPERE_ERRATUM_AC03_CPU_38=y +CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y +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_ERRATUM_1742098=y +CONFIG_ARM64_ERRATUM_845719=y +CONFIG_ARM64_ERRATUM_843419=y +CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y +CONFIG_ARM64_ERRATUM_1024718=y +CONFIG_ARM64_ERRATUM_1418040=y +CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y +CONFIG_ARM64_ERRATUM_1165522=y +CONFIG_ARM64_ERRATUM_1319367=y +CONFIG_ARM64_ERRATUM_1530923=y +CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y +CONFIG_ARM64_ERRATUM_2441007=y +CONFIG_ARM64_ERRATUM_1286807=y +CONFIG_ARM64_ERRATUM_1463225=y +CONFIG_ARM64_ERRATUM_1542419=y +CONFIG_ARM64_ERRATUM_1508412=y +CONFIG_ARM64_ERRATUM_2051678=y +CONFIG_ARM64_ERRATUM_2077057=y +CONFIG_ARM64_ERRATUM_2658417=y +CONFIG_ARM64_WORKAROUND_TSB_FLUSH_FAILURE=y +CONFIG_ARM64_ERRATUM_2054223=y +CONFIG_ARM64_ERRATUM_2067961=y +CONFIG_ARM64_ERRATUM_2441009=y +CONFIG_ARM64_ERRATUM_2457168=y +CONFIG_ARM64_ERRATUM_2645198=y +# CONFIG_CAVIUM_ERRATUM_22375 is not set +# CONFIG_CAVIUM_ERRATUM_23154 is not set +# CONFIG_CAVIUM_ERRATUM_27456 is not set +# CONFIG_CAVIUM_ERRATUM_30115 is not set +# CONFIG_CAVIUM_TX2_ERRATUM_219 is not set +# CONFIG_FUJITSU_ERRATUM_010001 is not set +# CONFIG_HISILICON_ERRATUM_161600802 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_1003 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_1009 is not set +# CONFIG_QCOM_QDF2400_ERRATUM_0065 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_E1041 is not set +# CONFIG_NVIDIA_CARMEL_CNP_ERRATUM is not set +CONFIG_ROCKCHIP_ERRATUM_3588001=y +# CONFIG_SOCIONEXT_SYNQUACER_PREITS is not set +# end of ARM errata workarounds via the alternatives framework + +CONFIG_ARM64_4K_PAGES=y +# CONFIG_ARM64_16K_PAGES is not set +# 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_PA_BITS_48=y +CONFIG_ARM64_PA_BITS=48 +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_SCHED_MC=y +# CONFIG_SCHED_CLUSTER is not set +CONFIG_SCHED_SMT=y +CONFIG_NR_CPUS=4 +CONFIG_HOTPLUG_CPU=y +# CONFIG_NUMA is not set +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +CONFIG_SCHED_HRTICK=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_HW_PERF_EVENTS=y +CONFIG_CC_HAVE_SHADOW_CALL_STACK=y +# CONFIG_PARAVIRT is not set +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +CONFIG_ARCH_SUPPORTS_KEXEC=y +CONFIG_ARCH_SUPPORTS_KEXEC_FILE=y +CONFIG_ARCH_SUPPORTS_KEXEC_SIG=y +CONFIG_ARCH_SUPPORTS_KEXEC_IMAGE_VERIFY_SIG=y +CONFIG_ARCH_DEFAULT_KEXEC_IMAGE_VERIFY_SIG=y +CONFIG_ARCH_SUPPORTS_CRASH_DUMP=y +# CONFIG_XEN is not set +CONFIG_ARCH_FORCE_MAX_ORDER=10 +CONFIG_UNMAP_KERNEL_AT_EL0=y +CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY=y +CONFIG_RODATA_FULL_DEFAULT_ENABLED=y +CONFIG_ARM64_SW_TTBR0_PAN=y +CONFIG_ARM64_TAGGED_ADDR_ABI=y +CONFIG_COMPAT=y +CONFIG_KUSER_HELPERS=y +# CONFIG_COMPAT_ALIGNMENT_FIXUPS is not set +CONFIG_ARMV8_DEPRECATED=y +# CONFIG_SWP_EMULATION is not set +# CONFIG_CP15_BARRIER_EMULATION is not set +# CONFIG_SETEND_EMULATION is not set + +# +# ARMv8.1 architectural features +# +CONFIG_ARM64_HW_AFDBM=y +CONFIG_ARM64_PAN=y +CONFIG_AS_HAS_LSE_ATOMICS=y +CONFIG_ARM64_LSE_ATOMICS=y +CONFIG_ARM64_USE_LSE_ATOMICS=y +# end of ARMv8.1 architectural features + +# +# ARMv8.2 architectural features +# +CONFIG_AS_HAS_ARMV8_2=y +CONFIG_AS_HAS_SHA3=y +CONFIG_ARM64_PMEM=y +CONFIG_ARM64_RAS_EXTN=y +CONFIG_ARM64_CNP=y +# end of ARMv8.2 architectural features + +# +# ARMv8.3 architectural features +# +CONFIG_ARM64_PTR_AUTH=y +CONFIG_ARM64_PTR_AUTH_KERNEL=y +CONFIG_CC_HAS_BRANCH_PROT_PAC_RET=y +CONFIG_CC_HAS_SIGN_RETURN_ADDRESS=y +CONFIG_AS_HAS_ARMV8_3=y +CONFIG_AS_HAS_CFI_NEGATE_RA_STATE=y +CONFIG_AS_HAS_LDAPR=y +# end of ARMv8.3 architectural features + +# +# ARMv8.4 architectural features +# +CONFIG_ARM64_AMU_EXTN=y +CONFIG_AS_HAS_ARMV8_4=y +CONFIG_ARM64_TLB_RANGE=y +# end of ARMv8.4 architectural features + +# +# ARMv8.5 architectural features +# +CONFIG_AS_HAS_ARMV8_5=y +# CONFIG_ARM64_BTI is not set +CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI=y +CONFIG_ARM64_E0PD=y +CONFIG_ARM64_AS_HAS_MTE=y +CONFIG_ARM64_MTE=y +# end of ARMv8.5 architectural features + +# +# ARMv8.7 architectural features +# +CONFIG_ARM64_EPAN=y +# end of ARMv8.7 architectural features + +CONFIG_ARM64_SVE=y +CONFIG_ARM64_SME=y +# CONFIG_ARM64_PSEUDO_NMI is not set +CONFIG_RELOCATABLE=y +CONFIG_RANDOMIZE_BASE=y +CONFIG_RANDOMIZE_MODULE_REGION_FULL=y +CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y +CONFIG_STACKPROTECTOR_PER_TASK=y +# end of Kernel Features + +# +# Boot options +# +CONFIG_CMDLINE="" +# CONFIG_EFI is not set +# end of Boot options + +# +# Power management options +# +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_SUSPEND_SKIP_SYNC=y +# CONFIG_HIBERNATION is not set +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_AUTOSLEEP=y +# CONFIG_PM_USERSPACE_AUTOSLEEP is not set +# CONFIG_PM_WAKELOCKS is not set +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_CLK=y +CONFIG_PM_GENERIC_DOMAINS=y +CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y +CONFIG_PM_GENERIC_DOMAINS_SLEEP=y +CONFIG_PM_GENERIC_DOMAINS_OF=y +CONFIG_CPU_PM=y +CONFIG_ENERGY_MODEL=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +# end of Power management options + +# +# CPU Power Management +# + +# +# CPU Idle +# +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y +# CONFIG_CPU_IDLE_GOV_TEO is not set +CONFIG_DT_IDLE_STATES=y +CONFIG_DT_IDLE_GENPD=y + +# +# ARM CPU Idle Drivers +# +CONFIG_ARM_PSCI_CPUIDLE=y +CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y +# end of ARM CPU Idle Drivers +# end of CPU Idle + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_GOV_ATTR_SET=y +CONFIG_CPU_FREQ_GOV_COMMON=y +CONFIG_CPU_FREQ_STAT=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +# CONFIG_CPU_FREQ_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y + +# +# CPU frequency scaling drivers +# +CONFIG_CPUFREQ_DT=y +CONFIG_CPUFREQ_DT_PLATDEV=y +# CONFIG_ARM_SCPI_CPUFREQ is not set +# CONFIG_ARM_SCMI_CPUFREQ is not set +# end of CPU Frequency scaling +# end of CPU Power Management + +CONFIG_HAVE_KVM=y +# CONFIG_VIRTUALIZATION is not set + +# +# General architecture-dependent options +# +CONFIG_ARCH_HAS_SUBPAGE_FAULTS=y +CONFIG_HOTPLUG_CORE_SYNC=y +CONFIG_HOTPLUG_CORE_SYNC_DEAD=y +# CONFIG_KPROBES is not set +# CONFIG_JUMP_LABEL is not set +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y +CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y +CONFIG_HAVE_NMI=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GENERIC_IDLE_POLL_SETUP=y +CONFIG_ARCH_HAS_FORTIFY_SOURCE=y +CONFIG_ARCH_HAS_KEEPINITRD=y +CONFIG_ARCH_HAS_SET_MEMORY=y +CONFIG_ARCH_HAS_SET_DIRECT_MAP=y +CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y +CONFIG_ARCH_WANTS_NO_INSTR=y +CONFIG_HAVE_ASM_MODVERSIONS=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_RSEQ=y +CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=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_ARCH_JUMP_LABEL_RELATIVE=y +CONFIG_MMU_GATHER_TABLE_FREE=y +CONFIG_MMU_GATHER_RCU_TABLE_FREE=y +CONFIG_MMU_LAZY_TLB_REFCOUNT=y +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_ARCH_HAS_NMI_SAFE_THIS_CPU_OPS=y +CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y +CONFIG_HAVE_CMPXCHG_LOCAL=y +CONFIG_HAVE_CMPXCHG_DOUBLE=y +CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y +CONFIG_HAVE_ARCH_SECCOMP=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_SECCOMP=y +CONFIG_SECCOMP_FILTER=y +# CONFIG_SECCOMP_CACHE_DEBUG is not set +CONFIG_HAVE_ARCH_STACKLEAK=y +CONFIG_HAVE_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR_STRONG=y +CONFIG_ARCH_SUPPORTS_SHADOW_CALL_STACK=y +# CONFIG_SHADOW_CALL_STACK is not set +CONFIG_ARCH_SUPPORTS_LTO_CLANG=y +CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y +CONFIG_LTO_NONE=y +CONFIG_ARCH_SUPPORTS_CFI_CLANG=y +CONFIG_HAVE_CONTEXT_TRACKING_USER=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_MOVE_PUD=y +CONFIG_HAVE_MOVE_PMD=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_HAVE_ARCH_HUGE_VMAP=y +CONFIG_HAVE_ARCH_HUGE_VMALLOC=y +CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_MODULES_USE_ELF_RELA=y +CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK=y +CONFIG_SOFTIRQ_ON_OWN_STACK=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_ARCH_MMAP_RND_BITS=18 +CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 +CONFIG_PAGE_SIZE_LESS_THAN_64KB=y +CONFIG_PAGE_SIZE_LESS_THAN_256KB=y +CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y +CONFIG_CLONE_BACKWARDS=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_COMPAT_OLD_SIGACTION=y +CONFIG_COMPAT_32BIT_TIME=y +CONFIG_HAVE_ARCH_VMAP_STACK=y +CONFIG_VMAP_STACK=y +CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y +CONFIG_RANDOMIZE_KSTACK_OFFSET=y +# CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT is not set +CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y +CONFIG_STRICT_KERNEL_RWX=y +CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y +CONFIG_STRICT_MODULE_RWX=y +CONFIG_HAVE_ARCH_COMPILER_H=y +CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y +# CONFIG_LOCK_EVENT_COUNTS is not set +CONFIG_ARCH_HAS_RELR=y +CONFIG_HAVE_PREEMPT_DYNAMIC=y +CONFIG_HAVE_PREEMPT_DYNAMIC_KEY=y +CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_SUPPORTS_PAGE_TABLE_CHECK=y +CONFIG_ARCH_HAVE_TRACE_MMIO_ACCESS=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +# end of GCOV-based kernel profiling + +CONFIG_HAVE_GCC_PLUGINS=y +CONFIG_GCC_PLUGINS=y +# CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set +CONFIG_FUNCTION_ALIGNMENT_4B=y +CONFIG_FUNCTION_ALIGNMENT=4 +# end of General architecture-dependent options + +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_DEBUG is not set +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_MODULE_UNLOAD_TAINT_TRACKING is not set +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODULE_SIG is not set +CONFIG_MODULE_COMPRESS_NONE=y +# CONFIG_MODULE_COMPRESS_GZIP is not set +# CONFIG_MODULE_COMPRESS_XZ is not set +# CONFIG_MODULE_COMPRESS_ZSTD is not set +# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set +CONFIG_MODPROBE_PATH="/sbin/modprobe" +# CONFIG_TRIM_UNUSED_KSYMS is not set +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_BLOCK=y +CONFIG_BLOCK_LEGACY_AUTOLOAD=y +CONFIG_BLK_DEV_BSG_COMMON=y +CONFIG_BLK_DEV_BSGLIB=y +# CONFIG_BLK_DEV_INTEGRITY is not set +# CONFIG_BLK_DEV_ZONED is not set +# CONFIG_BLK_DEV_THROTTLING is not set +# CONFIG_BLK_WBT is not set +# CONFIG_BLK_CGROUP_IOLATENCY is not set +# CONFIG_BLK_CGROUP_IOCOST is not set +# CONFIG_BLK_CGROUP_IOPRIO is not set +CONFIG_BLK_DEBUG_FS=y +# CONFIG_BLK_SED_OPAL is not set +# CONFIG_BLK_INLINE_ENCRYPTION is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_AIX_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_KARMA_PARTITION is not set +CONFIG_EFI_PARTITION=y +# CONFIG_SYSV68_PARTITION is not set +# CONFIG_CMDLINE_PARTITION is not set +# end of Partition Types + +CONFIG_BLK_MQ_PCI=y +CONFIG_BLK_PM=y +CONFIG_BLOCK_HOLDER_DEPRECATED=y +CONFIG_BLK_MQ_STACKING=y + +# +# IO Schedulers +# +CONFIG_MQ_IOSCHED_DEADLINE=y +# CONFIG_MQ_IOSCHED_KYBER is not set +# CONFIG_IOSCHED_BFQ is not set +# end of IO Schedulers + +CONFIG_PADATA=y +CONFIG_ASN1=y +CONFIG_UNINLINE_SPIN_UNLOCK=y +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_LOCK_SPIN_ON_OWNER=y +CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y +CONFIG_ARCH_USE_QUEUED_RWLOCKS=y +CONFIG_QUEUED_RWLOCKS=y +CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y +CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y +CONFIG_FREEZER=y + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +CONFIG_COMPAT_BINFMT_ELF=y +CONFIG_ARCH_BINFMT_ELF_STATE=y +CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y +CONFIG_ARCH_HAVE_ELF_PROT=y +CONFIG_ARCH_USE_GNU_PROPERTY=y +CONFIG_ELFCORE=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +CONFIG_BINFMT_SCRIPT=y +CONFIG_BINFMT_MISC=y +CONFIG_COREDUMP=y +# end of Executable file formats + +# +# Memory Management options +# +CONFIG_SWAP=y +# CONFIG_ZSWAP is not set +CONFIG_ZSMALLOC=y +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_ZSMALLOC_CHAIN_SIZE=8 + +# +# SLAB allocator options +# +# CONFIG_SLAB_DEPRECATED is not set +CONFIG_SLUB=y +# CONFIG_SLUB_TINY is not set +# CONFIG_SLAB_MERGE_DEFAULT is not set +# CONFIG_SLAB_FREELIST_RANDOM is not set +# CONFIG_SLAB_FREELIST_HARDENED is not set +# CONFIG_SLUB_STATS is not set +# CONFIG_SLUB_CPU_PARTIAL is not set +# CONFIG_RANDOM_KMALLOC_CACHES is not set +# end of SLAB allocator options + +# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set +# CONFIG_COMPAT_BRK is not set +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_HAVE_FAST_GUP=y +CONFIG_ARCH_KEEP_MEMBLOCK=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y +# CONFIG_MEMORY_HOTPLUG is not set +CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y +# CONFIG_COMPACTION is not set +# CONFIG_PAGE_REPORTING is not set +CONFIG_MIGRATION=y +CONFIG_PHYS_ADDR_T_64BIT=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +# CONFIG_MEMORY_FAILURE is not set +CONFIG_ARCH_WANTS_THP_SWAP=y +# CONFIG_TRANSPARENT_HUGEPAGE is not set +# CONFIG_CMA is not set +CONFIG_GENERIC_EARLY_IOREMAP=y +# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set +# CONFIG_IDLE_PAGE_TRACKING is not set +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_ARCH_HAS_CURRENT_STACK_POINTER=y +CONFIG_ARCH_HAS_PTE_DEVMAP=y +CONFIG_ARCH_HAS_ZONE_DMA_SET=y +CONFIG_ZONE_DMA=y +CONFIG_ZONE_DMA32=y +CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y +CONFIG_ARCH_USES_PG_ARCH_X=y +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_PERCPU_STATS is not set +# CONFIG_GUP_TEST is not set +# CONFIG_DMAPOOL_TEST is not set +CONFIG_ARCH_HAS_PTE_SPECIAL=y +CONFIG_MEMFD_CREATE=y +CONFIG_SECRETMEM=y +# CONFIG_ANON_VMA_NAME is not set +# CONFIG_USERFAULTFD is not set +# CONFIG_LRU_GEN is not set +CONFIG_ARCH_SUPPORTS_PER_VMA_LOCK=y +CONFIG_PER_VMA_LOCK=y +CONFIG_LOCK_MM_AND_FIND_VMA=y + +# +# Data Access Monitoring +# +# CONFIG_DAMON is not set +# end of Data Access Monitoring +# end of Memory Management options + +CONFIG_NET=y +CONFIG_COMPAT_NETLINK_MESSAGES=y +CONFIG_NET_INGRESS=y +CONFIG_NET_EGRESS=y +CONFIG_NET_XGRESS=y +CONFIG_SKB_EXTENSIONS=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_DIAG is not set +CONFIG_UNIX=y +CONFIG_UNIX_SCM=y +CONFIG_AF_UNIX_OOB=y +CONFIG_UNIX_DIAG=m +# CONFIG_TLS is not set +CONFIG_XFRM=y +CONFIG_XFRM_ALGO=y +CONFIG_XFRM_USER=y +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +CONFIG_XFRM_AH=y +CONFIG_XFRM_ESP=y +CONFIG_XFRM_IPCOMP=y +CONFIG_NET_KEY=y +# CONFIG_NET_KEY_MIGRATE is not set +# CONFIG_XDP_SOCKETS 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=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_ROUTE_CLASSID=y +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IP_TUNNEL=y +CONFIG_NET_IPGRE=m +# CONFIG_NET_IPGRE_BROADCAST is not set +CONFIG_IP_MROUTE_COMMON=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_NET_FOU_IP_TUNNELS is not set +CONFIG_INET_AH=y +CONFIG_INET_ESP=y +# CONFIG_INET_ESP_OFFLOAD is not set +# CONFIG_INET_ESPINTCP is not set +CONFIG_INET_IPCOMP=y +CONFIG_INET_TABLE_PERTURB_ORDER=16 +CONFIG_INET_XFRM_TUNNEL=y +CONFIG_INET_TUNNEL=y +# CONFIG_INET_DIAG is not set +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CUBIC=m +CONFIG_TCP_CONG_WESTWOOD=m +CONFIG_TCP_CONG_HTCP=m +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_VEGAS=m +# CONFIG_TCP_CONG_NV is not set +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_CONG_DCTCP=m +CONFIG_TCP_CONG_CDG=m +# CONFIG_TCP_CONG_BBR is not set +CONFIG_DEFAULT_RENO=y +CONFIG_DEFAULT_TCP_CONG="reno" +CONFIG_TCP_MD5SIG=y +# CONFIG_IPV6 is not set +# CONFIG_NETLABEL is not set +# CONFIG_MPTCP is not set +# CONFIG_NETWORK_SECMARK is not set +CONFIG_NET_PTP_CLASSIFY=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=y + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_EGRESS=y +CONFIG_NETFILTER_NETLINK=y +CONFIG_NETFILTER_FAMILY_BRIDGE=y +CONFIG_NETFILTER_FAMILY_ARP=y +CONFIG_NETFILTER_BPF_LINK=y +# CONFIG_NETFILTER_NETLINK_HOOK is not set +CONFIG_NETFILTER_NETLINK_ACCT=m +CONFIG_NETFILTER_NETLINK_QUEUE=y +CONFIG_NETFILTER_NETLINK_LOG=y +CONFIG_NETFILTER_NETLINK_OSF=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_LOG_SYSLOG=m +CONFIG_NETFILTER_CONNCOUNT=m +CONFIG_NF_CONNTRACK_MARK=y +# CONFIG_NF_CONNTRACK_ZONES is not set +CONFIG_NF_CONNTRACK_PROCFS=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_TIMEOUT=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CONNTRACK_LABELS=y +CONFIG_NF_CONNTRACK_OVS=y +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=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_BROADCAST=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NF_CT_NETLINK_TIMEOUT=m +# CONFIG_NETFILTER_NETLINK_GLUE_CT is not set +CONFIG_NF_NAT=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_SIP=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT_REDIRECT=y +CONFIG_NF_NAT_MASQUERADE=y +CONFIG_NF_NAT_OVS=y +CONFIG_NETFILTER_SYNPROXY=m +CONFIG_NF_TABLES=m +# CONFIG_NF_TABLES_NETDEV is not set +# CONFIG_NFT_NUMGEN is not set +CONFIG_NFT_CT=m +# CONFIG_NFT_CONNLIMIT is not set +CONFIG_NFT_LOG=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_REDIR=m +# CONFIG_NFT_TUNNEL is not set +CONFIG_NFT_QUEUE=m +# CONFIG_NFT_QUOTA is not set +CONFIG_NFT_REJECT=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_HASH=m +# CONFIG_NFT_XFRM is not set +# CONFIG_NFT_SOCKET is not set +# CONFIG_NFT_OSF is not set +# CONFIG_NFT_TPROXY is not set +# CONFIG_NFT_SYNPROXY is not set +# CONFIG_NF_FLOW_TABLE is not set +CONFIG_NETFILTER_XTABLES=y +CONFIG_NETFILTER_XTABLES_COMPAT=y + +# +# Xtables combined modules +# +CONFIG_NETFILTER_XT_MARK=m +CONFIG_NETFILTER_XT_CONNMARK=m +CONFIG_NETFILTER_XT_SET=m + +# +# Xtables targets +# +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CT=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_NAT=m +CONFIG_NETFILTER_XT_TARGET_NETMAP=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m + +# +# Xtables matches +# +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NETFILTER_XT_MATCH_CGROUP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ECN=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_IPCOMP=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_L2TP=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +# end of Core Netfilter Configuration + +CONFIG_IP_SET=y +CONFIG_IP_SET_MAX=256 +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPMARK=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +# CONFIG_IP_SET_HASH_IPMAC is not set +CONFIG_IP_SET_HASH_MAC=m +CONFIG_IP_SET_HASH_NETPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETNET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_LIST_SET=m +CONFIG_IP_VS=m +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_AH_ESP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y + +# +# IPVS scheduler +# +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_FO=m +CONFIG_IP_VS_OVF=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +# CONFIG_IP_VS_MH is not set +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m +# CONFIG_IP_VS_TWOS is not set + +# +# IPVS SH scheduler +# +CONFIG_IP_VS_SH_TAB_BITS=8 + +# +# IPVS MH scheduler +# +CONFIG_IP_VS_MH_TAB_INDEX=12 + +# +# IPVS application helper +# +# CONFIG_IP_VS_FTP is not set +CONFIG_IP_VS_NFCT=y +# CONFIG_IP_VS_PE_SIP is not set + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_NF_SOCKET_IPV4=m +CONFIG_NF_TPROXY_IPV4=m +# CONFIG_NF_TABLES_IPV4 is not set +# CONFIG_NF_TABLES_ARP is not set +CONFIG_NF_DUP_IPV4=m +CONFIG_NF_LOG_ARP=m +CONFIG_NF_LOG_IPV4=m +CONFIG_NF_REJECT_IPV4=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_H323=m +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SYNPROXY=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=y +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +# end of IP: Netfilter Configuration + +CONFIG_NF_TABLES_BRIDGE=m +CONFIG_NFT_BRIDGE_META=m +# CONFIG_NF_CONNTRACK_BRIDGE is not set +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_NFLOG=m +# CONFIG_BPFILTER 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 is not set +CONFIG_STP=y +CONFIG_BRIDGE=y +CONFIG_BRIDGE_IGMP_SNOOPING=y +# CONFIG_BRIDGE_VLAN_FILTERING is not set +# CONFIG_BRIDGE_MRP is not set +# CONFIG_BRIDGE_CFM is not set +# CONFIG_NET_DSA is not set +CONFIG_VLAN_8021Q=y +# CONFIG_VLAN_8021Q_GVRP is not set +# CONFIG_VLAN_8021Q_MVRP is not set +CONFIG_LLC=y +# CONFIG_LLC2 is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_PHONET is not set +# CONFIG_IEEE802154 is not set +CONFIG_NET_SCHED=y + +# +# Queueing/Scheduling +# +CONFIG_NET_SCH_HTB=y +# CONFIG_NET_SCH_HFSC is not set +# CONFIG_NET_SCH_PRIO is not set +# CONFIG_NET_SCH_MULTIQ is not set +# 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_CBS is not set +# CONFIG_NET_SCH_ETF is not set +# CONFIG_NET_SCH_TAPRIO is not set +# CONFIG_NET_SCH_GRED 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_SKBPRIO is not set +# CONFIG_NET_SCH_CHOKE is not set +# CONFIG_NET_SCH_QFQ is not set +CONFIG_NET_SCH_CODEL=y +CONFIG_NET_SCH_FQ_CODEL=y +# CONFIG_NET_SCH_CAKE 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_PLUG is not set +# CONFIG_NET_SCH_ETS is not set +# CONFIG_NET_SCH_DEFAULT is not set + +# +# Classification +# +CONFIG_NET_CLS=y +# CONFIG_NET_CLS_BASIC is not set +# CONFIG_NET_CLS_ROUTE4 is not set +# CONFIG_NET_CLS_FW is not set +CONFIG_NET_CLS_U32=y +# CONFIG_CLS_U32_PERF is not set +CONFIG_CLS_U32_MARK=y +# CONFIG_NET_CLS_FLOW is not set +CONFIG_NET_CLS_CGROUP=y +# CONFIG_NET_CLS_BPF is not set +# CONFIG_NET_CLS_FLOWER is not set +# CONFIG_NET_CLS_MATCHALL is not set +# CONFIG_NET_EMATCH is not set +# CONFIG_NET_CLS_ACT is not set +CONFIG_NET_SCH_FIFO=y +# CONFIG_DCB is not set +CONFIG_DNS_RESOLVER=y +# CONFIG_BATMAN_ADV is not set +CONFIG_OPENVSWITCH=m +CONFIG_OPENVSWITCH_GRE=m +CONFIG_OPENVSWITCH_VXLAN=m +# CONFIG_VSOCKETS is not set +# CONFIG_NETLINK_DIAG is not set +CONFIG_MPLS=y +CONFIG_NET_MPLS_GSO=m +# CONFIG_MPLS_ROUTING is not set +CONFIG_NET_NSH=m +# CONFIG_HSR is not set +# CONFIG_NET_SWITCHDEV is not set +CONFIG_NET_L3_MASTER_DEV=y +# CONFIG_QRTR is not set +# CONFIG_NET_NCSI is not set +CONFIG_PCPU_DEV_REFCNT=y +CONFIG_MAX_SKB_FRAGS=17 +CONFIG_RPS=y +CONFIG_RFS_ACCEL=y +CONFIG_SOCK_RX_QUEUE_MAPPING=y +CONFIG_XPS=y +CONFIG_CGROUP_NET_PRIO=y +CONFIG_CGROUP_NET_CLASSID=y +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y +# CONFIG_BPF_STREAM_PARSER is not set +CONFIG_NET_FLOW_LIMIT=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# end of Network testing +# end of Networking options + +# CONFIG_HAMRADIO is not set +CONFIG_CAN=y +CONFIG_CAN_RAW=y +CONFIG_CAN_BCM=y +CONFIG_CAN_GW=y +# CONFIG_CAN_J1939 is not set +# CONFIG_CAN_ISOTP is not set +CONFIG_BT=m +CONFIG_BT_BREDR=y +CONFIG_BT_RFCOMM=y +# CONFIG_BT_RFCOMM_TTY is not set +# CONFIG_BT_BNEP is not set +# CONFIG_BT_CMTP is not set +CONFIG_BT_HIDP=y +CONFIG_BT_HS=y +CONFIG_BT_LE=y +CONFIG_BT_LE_L2CAP_ECRED=y +# CONFIG_BT_LEDS is not set +# CONFIG_BT_MSFTEXT is not set +# CONFIG_BT_AOSPEXT is not set +CONFIG_BT_DEBUGFS=y +# CONFIG_BT_SELFTEST is not set + +# +# Bluetooth device drivers +# +CONFIG_BT_INTEL=m +CONFIG_BT_BCM=m +CONFIG_BT_RTL=m +CONFIG_BT_HCIBTUSB=m +# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set +CONFIG_BT_HCIBTUSB_POLL_SYNC=y +CONFIG_BT_HCIBTUSB_BCM=y +# CONFIG_BT_HCIBTUSB_MTK is not set +CONFIG_BT_HCIBTUSB_RTL=y +# CONFIG_BT_HCIBTSDIO is not set +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_SERDEV=y +CONFIG_BT_HCIUART_H4=y +# CONFIG_BT_HCIUART_NOKIA is not set +# CONFIG_BT_HCIUART_BCSP is not set +CONFIG_BT_HCIUART_ATH3K=y +# CONFIG_BT_HCIUART_LL is not set +# CONFIG_BT_HCIUART_3WIRE is not set +# CONFIG_BT_HCIUART_INTEL is not set +# CONFIG_BT_HCIUART_BCM is not set +# CONFIG_BT_HCIUART_RTL is not set +# CONFIG_BT_HCIUART_QCA is not set +# CONFIG_BT_HCIUART_AG6XX is not set +# CONFIG_BT_HCIUART_MRVL is not set +# CONFIG_BT_HCIBCM203X is not set +# CONFIG_BT_HCIBCM4377 is not set +# CONFIG_BT_HCIBPA10X is not set +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +# CONFIG_BT_ATH3K is not set +# CONFIG_BT_MTKSDIO is not set +# CONFIG_BT_MTKUART is not set +# CONFIG_BT_NXPUART is not set +# end of Bluetooth device drivers + +# CONFIG_AF_RXRPC is not set +# CONFIG_AF_KCM is not set +# CONFIG_MCTP is not set +CONFIG_FIB_RULES=y +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_SPY=y +CONFIG_WEXT_PRIV=y +CONFIG_CFG80211=m +# CONFIG_NL80211_TESTMODE is not set +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +# CONFIG_CFG80211_CERTIFICATION_ONUS is not set +CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y +CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y +# CONFIG_CFG80211_DEFAULT_PS is not set +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_CFG80211_CRDA_SUPPORT is not set +CONFIG_CFG80211_WEXT=y +CONFIG_LIB80211=m +# CONFIG_LIB80211_DEBUG is not set +CONFIG_MAC80211=m +CONFIG_MAC80211_HAS_RC=y +CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" +CONFIG_MAC80211_MESH=y +CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_DEBUGFS is not set +# CONFIG_MAC80211_MESSAGE_TRACING is not set +# CONFIG_MAC80211_DEBUG_MENU is not set +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 +CONFIG_RFKILL=m +CONFIG_RFKILL_LEDS=y +CONFIG_RFKILL_INPUT=y +CONFIG_RFKILL_GPIO=m +# CONFIG_NET_9P is not set +# CONFIG_CAIF is not set +CONFIG_CEPH_LIB=m +# CONFIG_CEPH_LIB_PRETTYDEBUG is not set +# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set +# CONFIG_NFC is not set +# CONFIG_PSAMPLE is not set +# CONFIG_NET_IFE is not set +# CONFIG_LWTUNNEL is not set +CONFIG_DST_CACHE=y +CONFIG_GRO_CELLS=y +CONFIG_NET_SELFTESTS=y +CONFIG_NET_SOCK_MSG=y +CONFIG_PAGE_POOL=y +# CONFIG_PAGE_POOL_STATS is not set +# CONFIG_FAILOVER is not set +# CONFIG_ETHTOOL_NETLINK is not set + +# +# Device Drivers +# +CONFIG_ARM_AMBA=y +CONFIG_HAVE_PCI=y +CONFIG_PCI=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_DOMAINS_GENERIC=y +CONFIG_PCI_SYSCALL=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCIEAER=y +# CONFIG_PCIEAER_INJECT is not set +# CONFIG_PCIE_ECRC is not set +CONFIG_PCIEASPM=y +CONFIG_PCIEASPM_DEFAULT=y +# CONFIG_PCIEASPM_POWERSAVE is not set +# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set +# CONFIG_PCIEASPM_PERFORMANCE is not set +CONFIG_PCIE_PME=y +# CONFIG_PCIE_DPC is not set +# CONFIG_PCIE_PTM is not set +CONFIG_PCI_MSI=y +CONFIG_PCI_QUIRKS=y +# CONFIG_PCI_DEBUG is not set +# CONFIG_PCI_STUB is not set +# CONFIG_PCI_IOV is not set +# CONFIG_PCI_PRI is not set +# CONFIG_PCI_PASID is not set +# CONFIG_PCI_DYNAMIC_OF_NODES is not set +# CONFIG_PCIE_BUS_TUNE_OFF is not set +CONFIG_PCIE_BUS_DEFAULT=y +# CONFIG_PCIE_BUS_SAFE is not set +# CONFIG_PCIE_BUS_PERFORMANCE is not set +# CONFIG_PCIE_BUS_PEER2PEER is not set +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 +# CONFIG_HOTPLUG_PCI is not set + +# +# PCI controller drivers +# +# CONFIG_PCIE_ALTERA is not set +# CONFIG_PCI_HOST_THUNDER_PEM is not set +# CONFIG_PCI_HOST_THUNDER_ECAM is not set +# CONFIG_PCI_FTPCI100 is not set +# CONFIG_PCI_HOST_GENERIC is not set +# CONFIG_PCIE_MICROCHIP_HOST is not set +CONFIG_PCIE_ROCKCHIP=y +CONFIG_PCIE_ROCKCHIP_HOST=y +# CONFIG_PCI_XGENE is not set +# CONFIG_PCIE_XILINX is not set + +# +# Cadence-based PCIe controllers +# +# CONFIG_PCIE_CADENCE_PLAT_HOST is not set +# CONFIG_PCI_J721E_HOST is not set +# end of Cadence-based PCIe controllers + +# +# DesignWare-based PCIe controllers +# +CONFIG_PCIE_DW=y +CONFIG_PCIE_DW_HOST=y +# CONFIG_PCIE_AL is not set +# CONFIG_PCI_MESON is not set +# CONFIG_PCI_HISI is not set +# CONFIG_PCIE_KIRIN is not set +# CONFIG_PCIE_DW_PLAT_HOST is not set +CONFIG_PCIE_ROCKCHIP_DW_HOST=y +# end of DesignWare-based PCIe controllers + +# +# Mobiveil-based PCIe controllers +# +# end of Mobiveil-based PCIe controllers +# end of PCI controller drivers + +# +# PCI Endpoint +# +# CONFIG_PCI_ENDPOINT is not set +# end of PCI Endpoint + +# +# PCI switch controller drivers +# +# CONFIG_PCI_SW_SWITCHTEC is not set +# end of PCI switch controller drivers + +# CONFIG_CXL_BUS is not set +# CONFIG_PCCARD is not set +# CONFIG_RAPIDIO is not set + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_DEVTMPFS_SAFE=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y + +# +# Firmware loader +# +CONFIG_FW_LOADER=y +CONFIG_FW_LOADER_DEBUG=y +CONFIG_FW_LOADER_PAGED_BUF=y +CONFIG_FW_LOADER_SYSFS=y +CONFIG_EXTRA_FIRMWARE="" +CONFIG_FW_LOADER_USER_HELPER=y +CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y +# CONFIG_FW_LOADER_COMPRESS is not set +CONFIG_FW_CACHE=y +# CONFIG_FW_UPLOAD is not set +# end of Firmware loader + +CONFIG_WANT_DEV_COREDUMP=y +# CONFIG_ALLOW_DEV_COREDUMP is not set +# CONFIG_DEBUG_DRIVER is not set +CONFIG_DEBUG_DEVRES=y +# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set +# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set +CONFIG_GENERIC_CPU_AUTOPROBE=y +CONFIG_GENERIC_CPU_VULNERABILITIES=y +CONFIG_SOC_BUS=y +CONFIG_REGMAP=y +CONFIG_REGMAP_I2C=y +CONFIG_REGMAP_SPI=y +CONFIG_REGMAP_MMIO=y +CONFIG_REGMAP_IRQ=y +CONFIG_DMA_SHARED_BUFFER=y +# CONFIG_DMA_FENCE_TRACE is not set +CONFIG_GENERIC_ARCH_TOPOLOGY=y +# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set +# end of Generic Driver Options + +# +# Bus devices +# +# CONFIG_BRCMSTB_GISB_ARB is not set +# CONFIG_MOXTET is not set +# CONFIG_VEXPRESS_CONFIG is not set +# CONFIG_MHI_BUS is not set +# CONFIG_MHI_BUS_EP is not set +# end of Bus devices + +# +# Cache Drivers +# +# end of Cache Drivers + +CONFIG_CONNECTOR=y +CONFIG_PROC_EVENTS=y + +# +# Firmware Drivers +# + +# +# ARM System Control and Management Interface Protocol +# +CONFIG_ARM_SCMI_PROTOCOL=y +# CONFIG_ARM_SCMI_RAW_MODE_SUPPORT is not set +CONFIG_ARM_SCMI_HAVE_TRANSPORT=y +CONFIG_ARM_SCMI_HAVE_SHMEM=y +CONFIG_ARM_SCMI_TRANSPORT_MAILBOX=y +CONFIG_ARM_SCMI_TRANSPORT_SMC=y +# CONFIG_ARM_SCMI_TRANSPORT_SMC_ATOMIC_ENABLE is not set +CONFIG_ARM_SCMI_POWER_DOMAIN=y +CONFIG_ARM_SCMI_POWER_CONTROL=y +# end of ARM System Control and Management Interface Protocol + +CONFIG_ARM_SCPI_PROTOCOL=y +CONFIG_ARM_SCPI_POWER_DOMAIN=y +# CONFIG_FIRMWARE_MEMMAP is not set +# CONFIG_FW_CFG_SYSFS is not set +CONFIG_ARM_FFA_TRANSPORT=y +CONFIG_ARM_FFA_SMCCC=y +# CONFIG_GOOGLE_FIRMWARE is not set +CONFIG_ARM_PSCI_FW=y +# CONFIG_ARM_PSCI_CHECKER is not set +CONFIG_HAVE_ARM_SMCCC=y +CONFIG_HAVE_ARM_SMCCC_DISCOVERY=y +CONFIG_ARM_SMCCC_SOC_ID=y + +# +# Tegra firmware driver +# +# end of Tegra firmware driver +# end of Firmware Drivers + +# CONFIG_GNSS is not set +CONFIG_MTD=y +# CONFIG_MTD_TESTS is not set + +# +# Partition parsers +# +# CONFIG_MTD_AR7_PARTS is not set +# CONFIG_MTD_CMDLINE_PARTS is not set +CONFIG_MTD_OF_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_REDBOOT_PARTS is not set +# end of Partition parsers + +# +# User Modules And Translation Layers +# +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y + +# +# Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK. +# +# 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 +# CONFIG_MTD_SWAP is not set +# CONFIG_MTD_PARTITIONED_MASTER 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_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# end of RAM/ROM/Flash chip drivers + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_INTEL_VR_NOR is not set +# CONFIG_MTD_PLATRAM is not set +# end of Mapping drivers for chip access + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_MCHP23K256 is not set +# CONFIG_MTD_MCHP48L640 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 +# end of Self-contained MTD device drivers + +# +# NAND +# +# CONFIG_MTD_ONENAND is not set +# CONFIG_MTD_RAW_NAND is not set +# CONFIG_MTD_SPI_NAND is not set + +# +# ECC engine support +# +# CONFIG_MTD_NAND_ECC_SW_HAMMING is not set +# CONFIG_MTD_NAND_ECC_SW_BCH is not set +# CONFIG_MTD_NAND_ECC_MXIC is not set +# end of ECC engine support +# end of NAND + +# +# LPDDR & LPDDR2 PCM memory drivers +# +# CONFIG_MTD_LPDDR is not set +# end of LPDDR & LPDDR2 PCM memory drivers + +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y +# CONFIG_MTD_SPI_NOR_SWP_DISABLE is not set +CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y +# CONFIG_MTD_SPI_NOR_SWP_KEEP is not set +# CONFIG_MTD_UBI is not set +# CONFIG_MTD_HYPERBUS is not set +CONFIG_DTC=y +CONFIG_OF=y +# CONFIG_OF_UNITTEST is not set +CONFIG_OF_FLATTREE=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_KOBJ=y +CONFIG_OF_DYNAMIC=y +CONFIG_OF_ADDRESS=y +CONFIG_OF_IRQ=y +CONFIG_OF_RESERVED_MEM=y +CONFIG_OF_RESOLVE=y +CONFIG_OF_OVERLAY=y +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_NULL_BLK is not set +CONFIG_CDROM=y +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +CONFIG_ZRAM=y +CONFIG_ZRAM_DEF_COMP_LZORLE=y +# CONFIG_ZRAM_DEF_COMP_ZSTD is not set +# CONFIG_ZRAM_DEF_COMP_LZ4 is not set +# CONFIG_ZRAM_DEF_COMP_LZO is not set +# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set +CONFIG_ZRAM_DEF_COMP="lzo-rle" +# CONFIG_ZRAM_WRITEBACK is not set +# CONFIG_ZRAM_MEMORY_TRACKING is not set +# CONFIG_ZRAM_MULTI_COMP is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +CONFIG_BLK_DEV_DRBD=m +# CONFIG_DRBD_FAULT_INJECTION is not set +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=1 +CONFIG_BLK_DEV_RAM_SIZE=4096 +# CONFIG_CDROM_PKTCDVD is not set +CONFIG_ATA_OVER_ETH=m +CONFIG_BLK_DEV_RBD=m +# CONFIG_BLK_DEV_UBLK is not set + +# +# NVME Support +# +CONFIG_NVME_CORE=m +CONFIG_BLK_DEV_NVME=m +# CONFIG_NVME_MULTIPATH is not set +# CONFIG_NVME_VERBOSE_ERRORS is not set +# CONFIG_NVME_HWMON is not set +# CONFIG_NVME_FC is not set +# CONFIG_NVME_TCP is not set +# CONFIG_NVME_AUTH is not set +# CONFIG_NVME_TARGET is not set +# end of NVME Support + +# +# Misc devices +# +# CONFIG_AD525X_DPOT is not set +# CONFIG_DUMMY_IRQ is not set +# CONFIG_PHANTOM is not set +# CONFIG_TIFM_CORE is not set +# CONFIG_ICS932S401 is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_HP_ILO 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_BH1770 is not set +# CONFIG_SENSORS_APDS990X is not set +# CONFIG_HMC6352 is not set +# CONFIG_DS1682 is not set +# CONFIG_LATTICE_ECP3_CONFIG is not set +CONFIG_SRAM=y +# CONFIG_DW_XDATA_PCIE is not set +# CONFIG_PCI_ENDPOINT_TEST is not set +# CONFIG_XILINX_SDFEC is not set +# CONFIG_HISI_HIKEY_USB is not set +# CONFIG_OPEN_DICE is not set +# CONFIG_VCPU_STALL_DETECTOR is not set +# 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=y +# CONFIG_EEPROM_93XX46 is not set +# CONFIG_EEPROM_IDT_89HPESX is not set +# CONFIG_EEPROM_EE1004 is not set +# end of EEPROM support + +# CONFIG_CB710_CORE is not set + +# +# Texas Instruments shared transport line discipline +# +# CONFIG_TI_ST is not set +# end of Texas Instruments shared transport line discipline + +# CONFIG_SENSORS_LIS3_SPI is not set +# CONFIG_SENSORS_LIS3_I2C is not set +# CONFIG_ALTERA_STAPL is not set +# CONFIG_VMWARE_VMCI is not set +# CONFIG_GENWQE is not set +# CONFIG_ECHO is not set +# CONFIG_BCM_VK is not set +# CONFIG_MISC_ALCOR_PCI is not set +# CONFIG_MISC_RTSX_PCI is not set +# CONFIG_MISC_RTSX_USB is not set +# CONFIG_UACCE is not set +# CONFIG_PVPANIC is not set +# CONFIG_GP_PCI1XXXX is not set +# end of Misc devices + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +CONFIG_RAID_ATTRS=m +CONFIG_SCSI_COMMON=y +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +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_BLK_DEV_SR=y +# CONFIG_CHR_DEV_SG is not set +CONFIG_BLK_DEV_BSG=y +# 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=y +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +CONFIG_SCSI_SAS_ATTRS=m +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SRP_ATTRS is not set +# end of SCSI Transports + +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_ISCSI_TCP is not set +# CONFIG_ISCSI_BOOT_SYSFS is not set +# CONFIG_SCSI_CXGB3_ISCSI is not set +# CONFIG_SCSI_CXGB4_ISCSI is not set +# CONFIG_SCSI_BNX2_ISCSI is not set +# CONFIG_BE2ISCSI is not set +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_HPSA is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_3W_SAS is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC94XX is not set +# CONFIG_SCSI_HISI_SAS is not set +# CONFIG_SCSI_MVSAS is not set +# CONFIG_SCSI_MVUMI is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_SCSI_ESAS2R is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_LEGACY is not set +CONFIG_MEGARAID_SAS=m +CONFIG_SCSI_MPT3SAS=m +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 +CONFIG_SCSI_MPT3SAS_MAX_SGE=128 +CONFIG_SCSI_MPT2SAS=m +# CONFIG_SCSI_MPI3MR is not set +# CONFIG_SCSI_SMARTPQI is not set +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_MYRB is not set +# CONFIG_SCSI_MYRS is not set +# CONFIG_SCSI_SNIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_FDOMAIN_PCI is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_STEX is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_QLA_ISCSI is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_WD719X is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_PMCRAID is not set +# CONFIG_SCSI_PM8001 is not set +# CONFIG_SCSI_DH is not set +# end of SCSI device support + +CONFIG_ATA=y +CONFIG_SATA_HOST=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATA_FORCE=y +CONFIG_SATA_PMP=y + +# +# Controllers with non-SFF native interface +# +CONFIG_SATA_AHCI=y +CONFIG_SATA_MOBILE_LPM_POLICY=0 +CONFIG_SATA_AHCI_PLATFORM=y +# CONFIG_AHCI_DWC is not set +# CONFIG_AHCI_CEVA is not set +# CONFIG_SATA_INIC162X is not set +# CONFIG_SATA_ACARD_AHCI is not set +# CONFIG_SATA_SIL24 is not set +CONFIG_ATA_SFF=y + +# +# SFF controllers with custom DMA interface +# +# CONFIG_PDC_ADMA is not set +# CONFIG_SATA_QSTOR is not set +# CONFIG_SATA_SX4 is not set +CONFIG_ATA_BMDMA=y + +# +# SATA SFF controllers with BMDMA +# +# CONFIG_ATA_PIIX is not set +# CONFIG_SATA_DWC is not set +CONFIG_SATA_MV=m +CONFIG_SATA_NV=m +CONFIG_SATA_PROMISE=m +CONFIG_SATA_SIL=m +# CONFIG_SATA_SIS is not set +# CONFIG_SATA_SVW is not set +# CONFIG_SATA_ULI is not set +# CONFIG_SATA_VIA is not set +# CONFIG_SATA_VITESSE is not set + +# +# PATA SFF controllers with BMDMA +# +# CONFIG_PATA_ALI is not set +# CONFIG_PATA_AMD is not set +# CONFIG_PATA_ARTOP is not set +# CONFIG_PATA_ATIIXP is not set +# CONFIG_PATA_ATP867X is not set +# CONFIG_PATA_CMD64X is not set +# CONFIG_PATA_CYPRESS is not set +# CONFIG_PATA_EFAR is not set +# CONFIG_PATA_HPT366 is not set +# CONFIG_PATA_HPT37X is not set +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +# CONFIG_PATA_IT8213 is not set +# CONFIG_PATA_IT821X is not set +# CONFIG_PATA_JMICRON is not set +# CONFIG_PATA_MARVELL is not set +# CONFIG_PATA_NETCELL is not set +# CONFIG_PATA_NINJA32 is not set +# CONFIG_PATA_NS87415 is not set +# CONFIG_PATA_OLDPIIX is not set +# CONFIG_PATA_OPTIDMA is not set +# CONFIG_PATA_PDC2027X is not set +# CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_RADISYS is not set +# CONFIG_PATA_RDC is not set +# CONFIG_PATA_SCH is not set +# CONFIG_PATA_SERVERWORKS is not set +# CONFIG_PATA_SIL680 is not set +# CONFIG_PATA_SIS is not set +# CONFIG_PATA_TOSHIBA is not set +# CONFIG_PATA_TRIFLEX is not set +# CONFIG_PATA_VIA is not set +# CONFIG_PATA_WINBOND is not set + +# +# PIO-only SFF controllers +# +# CONFIG_PATA_CMD640_PCI is not set +# CONFIG_PATA_MPIIX is not set +# CONFIG_PATA_NS87410 is not set +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_OF_PLATFORM is not set +# CONFIG_PATA_RZ1000 is not set + +# +# Generic fallback / legacy drivers +# +# CONFIG_ATA_GENERIC is not set +# CONFIG_PATA_LEGACY is not set +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_AUTODETECT=y +CONFIG_MD_BITMAP_FILE=y +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=y +CONFIG_MD_RAID1=y +CONFIG_MD_RAID10=y +CONFIG_MD_RAID456=y +# CONFIG_MD_MULTIPATH is not set +# CONFIG_MD_FAULTY is not set +CONFIG_BCACHE=m +# CONFIG_BCACHE_DEBUG is not set +# CONFIG_BCACHE_CLOSURES_DEBUG is not set +# CONFIG_BCACHE_ASYNC_REGISTRATION is not set +CONFIG_BLK_DEV_DM_BUILTIN=y +CONFIG_BLK_DEV_DM=y +# CONFIG_DM_DEBUG is not set +# CONFIG_DM_UNSTRIPED is not set +CONFIG_DM_CRYPT=m +# CONFIG_DM_SNAPSHOT is not set +# CONFIG_DM_THIN_PROVISIONING is not set +# CONFIG_DM_CACHE is not set +# CONFIG_DM_WRITECACHE is not set +# CONFIG_DM_EBS is not set +# CONFIG_DM_ERA is not set +# CONFIG_DM_CLONE is not set +# CONFIG_DM_MIRROR is not set +CONFIG_DM_RAID=y +# CONFIG_DM_ZERO is not set +# CONFIG_DM_MULTIPATH is not set +# CONFIG_DM_DELAY is not set +# CONFIG_DM_DUST is not set +# CONFIG_DM_INIT is not set +# CONFIG_DM_UEVENT is not set +# CONFIG_DM_FLAKEY is not set +# CONFIG_DM_VERITY is not set +# CONFIG_DM_SWITCH is not set +# CONFIG_DM_LOG_WRITES is not set +# CONFIG_DM_INTEGRITY is not set +# CONFIG_TARGET_CORE is not set +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# +# CONFIG_FIREWIRE is not set +# CONFIG_FIREWIRE_NOSY is not set +# end of IEEE 1394 (FireWire) support + +CONFIG_NETDEVICES=y +CONFIG_MII=y +CONFIG_NET_CORE=y +# CONFIG_BONDING is not set +# CONFIG_DUMMY is not set +CONFIG_WIREGUARD=y +# CONFIG_WIREGUARD_DEBUG is not set +# CONFIG_EQUALIZER is not set +# CONFIG_NET_FC is not set +# CONFIG_NET_TEAM is not set +CONFIG_MACVLAN=y +# CONFIG_MACVTAP is not set +CONFIG_IPVLAN_L3S=y +CONFIG_IPVLAN=y +# CONFIG_IPVTAP is not set +CONFIG_VXLAN=m +# CONFIG_GENEVE is not set +# CONFIG_BAREUDP is not set +# CONFIG_GTP is not set +# CONFIG_AMT is not set +# CONFIG_MACSEC is not set +# CONFIG_NETCONSOLE is not set +CONFIG_TUN=m +# CONFIG_TUN_VNET_CROSS_LE is not set +CONFIG_VETH=y +# CONFIG_NLMON is not set +# CONFIG_NET_VRF is not set +# CONFIG_ARCNET is not set +CONFIG_ETHERNET=y +CONFIG_MDIO=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_AGERE is not set +CONFIG_NET_VENDOR_ALACRITECH=y +# CONFIG_SLICOSS is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_ALTERA_TSE is not set +CONFIG_NET_VENDOR_AMAZON=y +# CONFIG_ENA_ETHERNET is not set +# CONFIG_NET_VENDOR_AMD is not set +CONFIG_NET_VENDOR_AQUANTIA=y +# CONFIG_AQTION is not set +# CONFIG_NET_VENDOR_ARC is not set +CONFIG_NET_VENDOR_ASIX=y +# CONFIG_SPI_AX88796C is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +CONFIG_NET_VENDOR_CADENCE=y +# CONFIG_MACB is not set +# CONFIG_NET_VENDOR_CAVIUM is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +CONFIG_NET_VENDOR_CORTINA=y +# CONFIG_GEMINI_ETHERNET is not set +CONFIG_NET_VENDOR_DAVICOM=y +# CONFIG_DM9051 is not set +# CONFIG_DNET is not set +# CONFIG_NET_VENDOR_DEC is not set +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +CONFIG_NET_VENDOR_ENGLEDER=y +# CONFIG_TSNEP is not set +# CONFIG_NET_VENDOR_EZCHIP is not set +CONFIG_NET_VENDOR_FUNGIBLE=y +# CONFIG_FUN_ETH is not set +CONFIG_NET_VENDOR_GOOGLE=y +# CONFIG_GVE is not set +# CONFIG_NET_VENDOR_HISILICON is not set +CONFIG_NET_VENDOR_HUAWEI=y +# CONFIG_HINIC is not set +CONFIG_NET_VENDOR_I825XX=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_E100=y +CONFIG_E1000=y +CONFIG_E1000E=y +CONFIG_IGB=y +CONFIG_IGB_HWMON=y +# CONFIG_IGBVF is not set +CONFIG_IXGBE=y +CONFIG_IXGBE_HWMON=y +# CONFIG_IXGBEVF is not set +# CONFIG_I40E is not set +# CONFIG_I40EVF is not set +# CONFIG_ICE is not set +# CONFIG_FM10K is not set +# CONFIG_IGC is not set +# CONFIG_JME is not set +CONFIG_NET_VENDOR_ADI=y +CONFIG_NET_VENDOR_LITEX=y +# CONFIG_LITEX_LITEETH is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +CONFIG_NET_VENDOR_MICROSEMI=y +CONFIG_NET_VENDOR_MICROSOFT=y +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_FEALNX is not set +CONFIG_NET_VENDOR_NI=y +# CONFIG_NI_XGE_MANAGEMENT_ENET is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +CONFIG_NET_VENDOR_NETERION=y +# CONFIG_S2IO is not set +CONFIG_NET_VENDOR_NETRONOME=y +# CONFIG_NFP is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_ETHOC is not set +CONFIG_NET_VENDOR_PACKET_ENGINES=y +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +CONFIG_NET_VENDOR_PENSANDO=y +# CONFIG_IONIC is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_QUALCOMM is not set +# CONFIG_NET_VENDOR_RDC is not set +# CONFIG_NET_VENDOR_REALTEK is not set +# CONFIG_NET_VENDOR_RENESAS is not set +# CONFIG_NET_VENDOR_ROCKER is not set +# CONFIG_NET_VENDOR_SAMSUNG is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +CONFIG_NET_VENDOR_SOLARFLARE=y +# CONFIG_SFC is not set +# CONFIG_SFC_FALCON is not set +# CONFIG_SFC_SIENA is not set +# CONFIG_NET_VENDOR_SMSC is not set +CONFIG_NET_VENDOR_SOCIONEXT=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_STMMAC_ETH=y +# CONFIG_STMMAC_SELFTESTS is not set +CONFIG_STMMAC_PLATFORM=y +# CONFIG_DWMAC_DWC_QOS_ETH is not set +CONFIG_DWMAC_GENERIC=y +CONFIG_DWMAC_ROCKCHIP=y +# CONFIG_DWMAC_INTEL_PLAT is not set +# CONFIG_DWMAC_LOONGSON is not set +# CONFIG_STMMAC_PCI is not set +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_SYNOPSYS is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +CONFIG_NET_VENDOR_VERTEXCOM=y +# CONFIG_MSE102X is not set +# CONFIG_NET_VENDOR_VIA is not set +CONFIG_NET_VENDOR_WANGXUN=y +# CONFIG_NGBE is not set +# CONFIG_TXGBE is not set +# CONFIG_NET_VENDOR_WIZNET is not set +CONFIG_NET_VENDOR_XILINX=y +# CONFIG_XILINX_EMACLITE is not set +# CONFIG_XILINX_AXI_EMAC is not set +# CONFIG_XILINX_LL_TEMAC is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +CONFIG_PHYLINK=y +CONFIG_PHYLIB=y +CONFIG_SWPHY=y +# CONFIG_LED_TRIGGER_PHY is not set +CONFIG_PHYLIB_LEDS=y +CONFIG_FIXED_PHY=y +# CONFIG_SFP is not set + +# +# MII PHY device drivers +# +# CONFIG_AMD_PHY is not set +# CONFIG_ADIN_PHY is not set +# CONFIG_ADIN1100_PHY is not set +# CONFIG_AQUANTIA_PHY is not set +CONFIG_AX88796B_PHY=y +# CONFIG_BROADCOM_PHY is not set +# CONFIG_BCM54140_PHY is not set +# CONFIG_BCM7XXX_PHY is not set +# CONFIG_BCM84881_PHY is not set +# CONFIG_BCM87XX_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_CORTINA_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_ICPLUS_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_INTEL_XWAY_PHY is not set +# CONFIG_LSI_ET1011C_PHY is not set +# CONFIG_MARVELL_PHY is not set +# CONFIG_MARVELL_10G_PHY is not set +# CONFIG_MARVELL_88Q2XXX_PHY is not set +# CONFIG_MARVELL_88X2222_PHY is not set +# CONFIG_MAXLINEAR_GPHY is not set +# CONFIG_MEDIATEK_GE_PHY is not set +# CONFIG_MICREL_PHY is not set +# CONFIG_MICROCHIP_T1S_PHY is not set +# CONFIG_MICROCHIP_PHY is not set +# CONFIG_MICROCHIP_T1_PHY is not set +# CONFIG_MICROSEMI_PHY is not set +# CONFIG_MOTORCOMM_PHY is not set +# CONFIG_NATIONAL_PHY is not set +# CONFIG_NXP_CBTX_PHY is not set +# CONFIG_NXP_C45_TJA11XX_PHY is not set +# CONFIG_NXP_TJA11XX_PHY is not set +# CONFIG_NCN26000_PHY is not set +# CONFIG_AT803X_PHY is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_REALTEK_PHY is not set +# CONFIG_RENESAS_PHY is not set +CONFIG_ROCKCHIP_PHY=y +# CONFIG_SMSC_PHY is not set +# CONFIG_STE10XP is not set +# CONFIG_TERANETICS_PHY is not set +# CONFIG_DP83822_PHY is not set +# CONFIG_DP83TC811_PHY is not set +# CONFIG_DP83848_PHY is not set +# CONFIG_DP83867_PHY is not set +# CONFIG_DP83869_PHY is not set +# CONFIG_DP83TD510_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_XILINX_GMII2RGMII is not set +# CONFIG_MICREL_KS8995MA is not set +# CONFIG_PSE_CONTROLLER is not set +CONFIG_CAN_DEV=y +# CONFIG_CAN_VCAN is not set +# CONFIG_CAN_VXCAN is not set +CONFIG_CAN_NETLINK=y +CONFIG_CAN_CALC_BITTIMING=y +# CONFIG_CAN_CAN327 is not set +# CONFIG_CAN_FLEXCAN is not set +# CONFIG_CAN_GRCAN is not set +# CONFIG_CAN_KVASER_PCIEFD is not set +# CONFIG_CAN_SLCAN is not set +# CONFIG_CAN_XILINXCAN is not set +# CONFIG_CAN_C_CAN is not set +# CONFIG_CAN_CC770 is not set +# CONFIG_CAN_CTUCANFD_PCI is not set +# CONFIG_CAN_CTUCANFD_PLATFORM is not set +# CONFIG_CAN_IFI_CANFD is not set +# CONFIG_CAN_M_CAN is not set +# CONFIG_CAN_PEAK_PCIEFD is not set +CONFIG_CAN_SJA1000=y +# CONFIG_CAN_EMS_PCI is not set +# CONFIG_CAN_F81601 is not set +# CONFIG_CAN_KVASER_PCI is not set +# CONFIG_CAN_PEAK_PCI is not set +CONFIG_CAN_PLX_PCI=y +# CONFIG_CAN_SJA1000_ISA is not set +# CONFIG_CAN_SJA1000_PLATFORM is not set +# CONFIG_CAN_SOFTING is not set + +# +# CAN SPI interfaces +# +# CONFIG_CAN_HI311X is not set +# CONFIG_CAN_MCP251X is not set +# CONFIG_CAN_MCP251XFD is not set +# end of CAN SPI interfaces + +# +# CAN USB interfaces +# +# CONFIG_CAN_8DEV_USB is not set +# CONFIG_CAN_EMS_USB is not set +# CONFIG_CAN_ESD_USB is not set +# CONFIG_CAN_ETAS_ES58X is not set +# CONFIG_CAN_F81604 is not set +# CONFIG_CAN_GS_USB is not set +# CONFIG_CAN_KVASER_USB is not set +# CONFIG_CAN_MCBA_USB is not set +# CONFIG_CAN_PEAK_USB is not set +# CONFIG_CAN_UCAN is not set +# end of CAN USB interfaces + +# CONFIG_CAN_DEBUG_DEVICES is not set +CONFIG_MDIO_DEVICE=y +CONFIG_MDIO_BUS=y +CONFIG_FWNODE_MDIO=y +CONFIG_OF_MDIO=y +CONFIG_MDIO_DEVRES=y +# CONFIG_MDIO_BITBANG is not set +# CONFIG_MDIO_BCM_UNIMAC is not set +# CONFIG_MDIO_HISI_FEMAC is not set +# CONFIG_MDIO_MVUSB is not set +# CONFIG_MDIO_MSCC_MIIM is not set +# CONFIG_MDIO_OCTEON is not set +# CONFIG_MDIO_IPQ4019 is not set +# CONFIG_MDIO_IPQ8064 is not set +# CONFIG_MDIO_THUNDER is not set + +# +# MDIO Multiplexers +# +# CONFIG_MDIO_BUS_MUX_GPIO is not set +# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set +# CONFIG_MDIO_BUS_MUX_MMIOREG is not set + +# +# PCS device drivers +# +CONFIG_PCS_XPCS=y +# end of PCS device drivers + +CONFIG_PPP=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +# CONFIG_PPP_FILTER is not set +# CONFIG_PPP_MPPE is not set +# CONFIG_PPP_MULTILINK is not set +CONFIG_PPPOE=m +# CONFIG_PPPOE_HASH_BITS_1 is not set +# CONFIG_PPPOE_HASH_BITS_2 is not set +CONFIG_PPPOE_HASH_BITS_4=y +# CONFIG_PPPOE_HASH_BITS_8 is not set +CONFIG_PPPOE_HASH_BITS=4 +# CONFIG_PPTP is not set +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +# CONFIG_SLIP is not set +CONFIG_SLHC=m +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=y +CONFIG_USB_RTL8152=y +# CONFIG_USB_LAN78XX is not set +CONFIG_USB_USBNET=y +CONFIG_USB_NET_AX8817X=y +CONFIG_USB_NET_AX88179_178A=y +CONFIG_USB_NET_CDCETHER=y +# CONFIG_USB_NET_CDC_EEM is not set +CONFIG_USB_NET_CDC_NCM=y +# CONFIG_USB_NET_HUAWEI_CDC_NCM is not set +CONFIG_USB_NET_CDC_MBIM=y +# CONFIG_USB_NET_DM9601 is not set +# CONFIG_USB_NET_SR9700 is not set +# CONFIG_USB_NET_SR9800 is not set +# CONFIG_USB_NET_SMSC75XX is not set +# CONFIG_USB_NET_SMSC95XX is not set +# CONFIG_USB_NET_GL620A is not set +# CONFIG_USB_NET_NET1080 is not set +# CONFIG_USB_NET_PLUSB is not set +# CONFIG_USB_NET_MCS7830 is not set +CONFIG_USB_NET_RNDIS_HOST=y +# CONFIG_USB_NET_CDC_SUBSET is not set +# CONFIG_USB_NET_ZAURUS is not set +# CONFIG_USB_NET_CX82310_ETH is not set +# CONFIG_USB_NET_KALMIA is not set +CONFIG_USB_NET_QMI_WWAN=y +# CONFIG_USB_HSO is not set +# CONFIG_USB_NET_INT51X1 is not set +# CONFIG_USB_IPHETH is not set +# CONFIG_USB_SIERRA_NET is not set +# CONFIG_USB_VL600 is not set +# CONFIG_USB_NET_CH9200 is not set +# CONFIG_USB_NET_AQC111 is not set +CONFIG_USB_RTL8153_ECM=y +CONFIG_WLAN=y +CONFIG_WLAN_VENDOR_ADMTEK=y +# CONFIG_ADM8211 is not set +CONFIG_ATH_COMMON=m +CONFIG_WLAN_VENDOR_ATH=y +# CONFIG_ATH_DEBUG is not set +CONFIG_ATH5K=m +# CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH5K_PCI=y +CONFIG_ATH9K_HW=m +CONFIG_ATH9K_COMMON=m +CONFIG_ATH9K_BTCOEX_SUPPORT=y +CONFIG_ATH9K=m +CONFIG_ATH9K_PCI=y +# CONFIG_ATH9K_AHB is not set +# CONFIG_ATH9K_DEBUGFS is not set +# CONFIG_ATH9K_DYNACK is not set +# CONFIG_ATH9K_WOW is not set +CONFIG_ATH9K_RFKILL=y +# CONFIG_ATH9K_CHANNEL_CONTEXT is not set +CONFIG_ATH9K_PCOEM=y +# CONFIG_ATH9K_PCI_NO_EEPROM is not set +# CONFIG_ATH9K_HTC is not set +# CONFIG_ATH9K_HWRNG is not set +# CONFIG_CARL9170 is not set +CONFIG_ATH6KL=m +# CONFIG_ATH6KL_SDIO is not set +CONFIG_ATH6KL_USB=m +# CONFIG_ATH6KL_DEBUG is not set +CONFIG_AR5523=m +# CONFIG_WIL6210 is not set +CONFIG_ATH10K=m +CONFIG_ATH10K_CE=y +# CONFIG_ATH10K_PCI is not set +# CONFIG_ATH10K_SDIO is not set +# CONFIG_ATH10K_USB is not set +# CONFIG_ATH10K_DEBUG is not set +# CONFIG_ATH10K_DEBUGFS is not set +CONFIG_WCN36XX=m +# CONFIG_WCN36XX_DEBUGFS is not set +CONFIG_WLAN_VENDOR_ATMEL=y +# CONFIG_ATMEL is not set +CONFIG_AT76C50X_USB=m +CONFIG_WLAN_VENDOR_BROADCOM=y +CONFIG_B43=m +CONFIG_B43_BCMA=y +CONFIG_B43_SSB=y +CONFIG_B43_BUSES_BCMA_AND_SSB=y +# CONFIG_B43_BUSES_BCMA is not set +# CONFIG_B43_BUSES_SSB is not set +CONFIG_B43_PCI_AUTOSELECT=y +CONFIG_B43_PCICORE_AUTOSELECT=y +# CONFIG_B43_SDIO is not set +CONFIG_B43_BCMA_PIO=y +CONFIG_B43_PIO=y +CONFIG_B43_PHY_G=y +CONFIG_B43_PHY_N=y +CONFIG_B43_PHY_LP=y +CONFIG_B43_PHY_HT=y +CONFIG_B43_LEDS=y +CONFIG_B43_HWRNG=y +# CONFIG_B43_DEBUG is not set +# CONFIG_B43LEGACY is not set +CONFIG_BRCMUTIL=m +# CONFIG_BRCMSMAC is not set +CONFIG_BRCMFMAC=m +CONFIG_BRCMFMAC_PROTO_BCDC=y +CONFIG_BRCMFMAC_PROTO_MSGBUF=y +# CONFIG_BRCMFMAC_SDIO is not set +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMFMAC_PCIE=y +# CONFIG_BRCM_TRACING is not set +# CONFIG_BRCMDBG is not set +CONFIG_WLAN_VENDOR_CISCO=y +# CONFIG_AIRO is not set +CONFIG_WLAN_VENDOR_INTEL=y +# CONFIG_IPW2100 is not set +# CONFIG_IPW2200 is not set +# CONFIG_IWL4965 is not set +# CONFIG_IWL3945 is not set +# CONFIG_IWLWIFI is not set +CONFIG_WLAN_VENDOR_INTERSIL=y +# CONFIG_HOSTAP is not set +# CONFIG_HERMES is not set +# CONFIG_P54_COMMON is not set +CONFIG_WLAN_VENDOR_MARVELL=y +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +# CONFIG_LIBERTAS_SDIO is not set +# CONFIG_LIBERTAS_SPI is not set +# CONFIG_LIBERTAS_DEBUG is not set +# CONFIG_LIBERTAS_MESH is not set +CONFIG_LIBERTAS_THINFIRM=m +# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set +# CONFIG_LIBERTAS_THINFIRM_USB is not set +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m +# CONFIG_MWIFIEX_PCIE is not set +CONFIG_MWIFIEX_USB=m +# CONFIG_MWL8K is not set +CONFIG_WLAN_VENDOR_MEDIATEK=y +CONFIG_MT7601U=m +# CONFIG_MT76x0U is not set +# CONFIG_MT76x0E is not set +# CONFIG_MT76x2E is not set +# CONFIG_MT76x2U is not set +# CONFIG_MT7603E is not set +# CONFIG_MT7615E is not set +# CONFIG_MT7663U is not set +# CONFIG_MT7663S is not set +# CONFIG_MT7915E is not set +# CONFIG_MT7921E is not set +# CONFIG_MT7921S is not set +# CONFIG_MT7921U is not set +# CONFIG_MT7996E is not set +CONFIG_WLAN_VENDOR_MICROCHIP=y +# CONFIG_WILC1000_SDIO is not set +# CONFIG_WILC1000_SPI is not set +CONFIG_WLAN_VENDOR_PURELIFI=y +# CONFIG_PLFXLC is not set +CONFIG_WLAN_VENDOR_RALINK=y +CONFIG_RT2X00=m +# CONFIG_RT2400PCI is not set +# CONFIG_RT2500PCI is not set +# CONFIG_RT61PCI is not set +# CONFIG_RT2800PCI is not set +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT33XX=y +CONFIG_RT2800USB_RT35XX=y +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +CONFIG_RT2800USB_UNKNOWN=y +CONFIG_RT2800_LIB=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y +# CONFIG_RT2X00_DEBUG is not set +CONFIG_WLAN_VENDOR_REALTEK=y +CONFIG_RTL8180=m +CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y +CONFIG_RTL_CARDS=m +CONFIG_RTL8192CE=m +CONFIG_RTL8192SE=m +CONFIG_RTL8192DE=m +CONFIG_RTL8723AE=m +CONFIG_RTL8723BE=m +CONFIG_RTL8188EE=m +CONFIG_RTL8192EE=m +CONFIG_RTL8821AE=m +# CONFIG_RTL8192CU is not set +CONFIG_RTLWIFI=m +CONFIG_RTLWIFI_PCI=m +CONFIG_RTLWIFI_DEBUG=y +CONFIG_RTL8192C_COMMON=m +CONFIG_RTL8723_COMMON=m +CONFIG_RTLBTCOEXIST=m +CONFIG_RTL8XXXU=m +CONFIG_RTL8XXXU_UNTESTED=y +CONFIG_RTW88=m +CONFIG_RTW88_CORE=m +CONFIG_RTW88_PCI=m +CONFIG_RTW88_SDIO=m +CONFIG_RTW88_USB=m +CONFIG_RTW88_8822B=m +CONFIG_RTW88_8822C=m +CONFIG_RTW88_8723D=m +CONFIG_RTW88_8821C=m +CONFIG_RTW88_8822BE=m +# CONFIG_RTW88_8822BS is not set +CONFIG_RTW88_8822BU=m +CONFIG_RTW88_8822CE=m +# CONFIG_RTW88_8822CS is not set +CONFIG_RTW88_8822CU=m +CONFIG_RTW88_8723DE=m +CONFIG_RTW88_8723DS=m +CONFIG_RTW88_8723DU=m +CONFIG_RTW88_8821CE=m +CONFIG_RTW88_8821CS=m +# CONFIG_RTW88_8821CU is not set +# CONFIG_RTW88_DEBUG is not set +# CONFIG_RTW88_DEBUGFS is not set +CONFIG_RTW89=m +CONFIG_RTW89_CORE=m +CONFIG_RTW89_PCI=m +CONFIG_RTW89_8852A=m +CONFIG_RTW89_8852C=m +# CONFIG_RTW89_8851BE is not set +CONFIG_RTW89_8852AE=m +# CONFIG_RTW89_8852BE is not set +CONFIG_RTW89_8852CE=m +# CONFIG_RTW89_DEBUGMSG is not set +# CONFIG_RTW89_DEBUGFS is not set +CONFIG_WLAN_VENDOR_RSI=y +# CONFIG_RSI_91X is not set +CONFIG_WLAN_VENDOR_SILABS=y +# CONFIG_WFX is not set +CONFIG_WLAN_VENDOR_ST=y +# CONFIG_CW1200 is not set +CONFIG_WLAN_VENDOR_TI=y +# CONFIG_WL1251 is not set +# CONFIG_WL12XX is not set +# CONFIG_WL18XX is not set +# CONFIG_WLCORE is not set +CONFIG_WLAN_VENDOR_ZYDAS=y +# CONFIG_USB_ZD1201 is not set +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set +CONFIG_WLAN_VENDOR_QUANTENNA=y +# CONFIG_QTNFMAC_PCIE is not set +CONFIG_USB_NET_RNDIS_WLAN=m +# CONFIG_MAC80211_HWSIM is not set +# CONFIG_VIRT_WIFI is not set +# CONFIG_WAN is not set + +# +# Wireless WAN +# +# CONFIG_WWAN is not set +# end of Wireless WAN + +# CONFIG_VMXNET3 is not set +# CONFIG_NETDEVSIM is not set +# CONFIG_NET_FAILOVER is not set +CONFIG_ISDN=y +CONFIG_ISDN_CAPI=y +# CONFIG_MISDN is not set + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_LEDS=y +CONFIG_INPUT_FF_MEMLESS=y +# CONFIG_INPUT_SPARSEKMAP is not set +CONFIG_INPUT_MATRIXKMAP=y +CONFIG_INPUT_VIVALDIFMAP=y + +# +# Userland interfaces +# +# CONFIG_INPUT_MOUSEDEV is not set +CONFIG_INPUT_JOYDEV=y +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ADC=y +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ADP5589 is not set +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_QT1050 is not set +# CONFIG_KEYBOARD_QT1070 is not set +# CONFIG_KEYBOARD_QT2160 is not set +# CONFIG_KEYBOARD_DLINK_DIR685 is not set +# CONFIG_KEYBOARD_LKKBD is not set +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_GPIO_POLLED=y +# CONFIG_KEYBOARD_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_PINEPHONE 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_TM2_TOUCHKEY is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_CAP11XX is not set +# CONFIG_KEYBOARD_BCM is not set +# CONFIG_KEYBOARD_CYPRESS_SF is not set +CONFIG_INPUT_MOUSE=y +# CONFIG_MOUSE_PS2 is not set +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_APPLETOUCH is not set +# CONFIG_MOUSE_BCM5974 is not set +# CONFIG_MOUSE_CYAPA is not set +# CONFIG_MOUSE_ELAN_I2C is not set +# CONFIG_MOUSE_VSXXXAA is not set +# CONFIG_MOUSE_GPIO is not set +# CONFIG_MOUSE_SYNAPTICS_I2C is not set +# CONFIG_MOUSE_SYNAPTICS_USB is not set +CONFIG_INPUT_JOYSTICK=y +# CONFIG_JOYSTICK_ANALOG is not set +# CONFIG_JOYSTICK_A3D is not set +CONFIG_JOYSTICK_ADC=y +# CONFIG_JOYSTICK_ADI is not set +# CONFIG_JOYSTICK_COBRA is not set +# CONFIG_JOYSTICK_GF2K is not set +# CONFIG_JOYSTICK_GRIP is not set +# CONFIG_JOYSTICK_GRIP_MP is not set +# CONFIG_JOYSTICK_GUILLEMOT is not set +# CONFIG_JOYSTICK_INTERACT is not set +# CONFIG_JOYSTICK_SIDEWINDER is not set +# CONFIG_JOYSTICK_TMDC is not set +# CONFIG_JOYSTICK_IFORCE is not set +# CONFIG_JOYSTICK_WARRIOR is not set +# CONFIG_JOYSTICK_MAGELLAN is not set +# CONFIG_JOYSTICK_SPACEORB is not set +# CONFIG_JOYSTICK_SPACEBALL is not set +# CONFIG_JOYSTICK_STINGER is not set +# CONFIG_JOYSTICK_TWIDJOY is not set +# CONFIG_JOYSTICK_ZHENHUA is not set +# CONFIG_JOYSTICK_AS5011 is not set +# CONFIG_JOYSTICK_JOYDUMP is not set +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +# CONFIG_JOYSTICK_XPAD_LEDS is not set +# CONFIG_JOYSTICK_PSXPAD_SPI is not set +# CONFIG_JOYSTICK_PXRC is not set +# CONFIG_JOYSTICK_QWIIC is not set +# CONFIG_JOYSTICK_FSIA6B is not set +# CONFIG_JOYSTICK_SENSEHAT is not set +CONFIG_INPUT_TABLET=y +# CONFIG_TABLET_USB_ACECAD is not set +# CONFIG_TABLET_USB_AIPTEK is not set +# CONFIG_TABLET_USB_HANWANG is not set +# CONFIG_TABLET_USB_KBTAB is not set +# CONFIG_TABLET_USB_PEGASUS is not set +# CONFIG_TABLET_SERIAL_WACOM4 is not set +CONFIG_INPUT_TOUCHSCREEN=y +# CONFIG_TOUCHSCREEN_ADS7846 is not set +# CONFIG_TOUCHSCREEN_AD7877 is not set +# CONFIG_TOUCHSCREEN_AD7879 is not set +# CONFIG_TOUCHSCREEN_ADC is not set +# CONFIG_TOUCHSCREEN_AR1021_I2C is not set +CONFIG_TOUCHSCREEN_ATMEL_MXT=y +# CONFIG_TOUCHSCREEN_ATMEL_MXT_T37 is not set +# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set +# CONFIG_TOUCHSCREEN_BU21013 is not set +# CONFIG_TOUCHSCREEN_BU21029 is not set +# CONFIG_TOUCHSCREEN_CHIPONE_ICN8318 is not set +# CONFIG_TOUCHSCREEN_CY8CTMA140 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_CYTTSP5 is not set +# CONFIG_TOUCHSCREEN_DYNAPRO is not set +# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set +# CONFIG_TOUCHSCREEN_EETI is not set +# CONFIG_TOUCHSCREEN_EGALAX is not set +# CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set +# CONFIG_TOUCHSCREEN_EXC3000 is not set +# CONFIG_TOUCHSCREEN_FUJITSU is not set +CONFIG_TOUCHSCREEN_GOODIX=y +# CONFIG_TOUCHSCREEN_HIDEEP is not set +# CONFIG_TOUCHSCREEN_HYCON_HY46XX is not set +CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=y +# CONFIG_TOUCHSCREEN_ILI210X is not set +# CONFIG_TOUCHSCREEN_ILITEK is not set +# CONFIG_TOUCHSCREEN_S6SY761 is not set +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_EKTF2127 is not set +# CONFIG_TOUCHSCREEN_ELAN is not set +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set +# CONFIG_TOUCHSCREEN_WACOM_I2C is not set +# CONFIG_TOUCHSCREEN_MAX11801 is not set +# CONFIG_TOUCHSCREEN_MCS5000 is not set +# CONFIG_TOUCHSCREEN_MMS114 is not set +# CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set +# CONFIG_TOUCHSCREEN_MSG2638 is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_NOVATEK_NVT_TS is not set +# CONFIG_TOUCHSCREEN_IMAGIS is not set +# CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set +# CONFIG_TOUCHSCREEN_INEXIO is not set +# CONFIG_TOUCHSCREEN_PENMOUNT is not set +# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set +# CONFIG_TOUCHSCREEN_PIXCIR is not set +# CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set +CONFIG_TOUCHSCREEN_USB_COMPOSITE=y +CONFIG_TOUCHSCREEN_USB_EGALAX=y +CONFIG_TOUCHSCREEN_USB_PANJIT=y +CONFIG_TOUCHSCREEN_USB_3M=y +CONFIG_TOUCHSCREEN_USB_ITM=y +CONFIG_TOUCHSCREEN_USB_ETURBO=y +CONFIG_TOUCHSCREEN_USB_GUNZE=y +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y +CONFIG_TOUCHSCREEN_USB_IDEALTEK=y +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y +CONFIG_TOUCHSCREEN_USB_GOTOP=y +CONFIG_TOUCHSCREEN_USB_JASTEC=y +CONFIG_TOUCHSCREEN_USB_ELO=y +CONFIG_TOUCHSCREEN_USB_E2I=y +CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y +CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y +CONFIG_TOUCHSCREEN_USB_NEXIO=y +CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y +# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set +# CONFIG_TOUCHSCREEN_TSC_SERIO is not set +# CONFIG_TOUCHSCREEN_TSC2004 is not set +# CONFIG_TOUCHSCREEN_TSC2005 is not set +# CONFIG_TOUCHSCREEN_TSC2007 is not set +# CONFIG_TOUCHSCREEN_RM_TS is not set +# CONFIG_TOUCHSCREEN_SILEAD is not set +# CONFIG_TOUCHSCREEN_SIS_I2C is not set +# CONFIG_TOUCHSCREEN_ST1232 is not set +# CONFIG_TOUCHSCREEN_STMFTS is not set +# CONFIG_TOUCHSCREEN_SUR40 is not set +# CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set +# CONFIG_TOUCHSCREEN_SX8654 is not set +# CONFIG_TOUCHSCREEN_TPS6507X is not set +# CONFIG_TOUCHSCREEN_ZET6223 is not set +# CONFIG_TOUCHSCREEN_ZFORCE is not set +# CONFIG_TOUCHSCREEN_COLIBRI_VF50 is not set +# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set +# CONFIG_TOUCHSCREEN_IQS5XX is not set +# CONFIG_TOUCHSCREEN_IQS7211 is not set +# CONFIG_TOUCHSCREEN_ZINITIX is not set +# CONFIG_TOUCHSCREEN_HIMAX_HX83112B is not set +CONFIG_INPUT_MISC=y +# CONFIG_INPUT_AD714X is not set +# CONFIG_INPUT_ATMEL_CAPTOUCH is not set +# CONFIG_INPUT_BMA150 is not set +# CONFIG_INPUT_E3X0_BUTTON is not set +# CONFIG_INPUT_MMA8450 is not set +# CONFIG_INPUT_GPIO_BEEPER is not set +# CONFIG_INPUT_GPIO_DECODER is not set +# CONFIG_INPUT_GPIO_VIBRA is not set +# CONFIG_INPUT_ATI_REMOTE2 is not set +# CONFIG_INPUT_KEYSPAN_REMOTE is not set +# CONFIG_INPUT_KXTJ9 is not set +# CONFIG_INPUT_POWERMATE is not set +# CONFIG_INPUT_YEALINK is not set +# CONFIG_INPUT_CM109 is not set +# CONFIG_INPUT_REGULATOR_HAPTIC is not set +CONFIG_INPUT_UINPUT=y +# CONFIG_INPUT_PCF8574 is not set +# CONFIG_INPUT_PWM_BEEPER is not set +CONFIG_INPUT_PWM_VIBRA=y +CONFIG_INPUT_RK805_PWRKEY=y +# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set +# CONFIG_INPUT_DA7280_HAPTICS is not set +# CONFIG_INPUT_ADXL34X is not set +# CONFIG_INPUT_IMS_PCU is not set +# CONFIG_INPUT_IQS269A is not set +# CONFIG_INPUT_IQS626A is not set +# CONFIG_INPUT_IQS7222 is not set +# CONFIG_INPUT_CMA3000 is not set +# CONFIG_INPUT_DRV260X_HAPTICS is not set +# CONFIG_INPUT_DRV2665_HAPTICS is not set +# CONFIG_INPUT_DRV2667_HAPTICS is not set +CONFIG_RMI4_CORE=y +# CONFIG_RMI4_I2C is not set +# CONFIG_RMI4_SPI is not set +# CONFIG_RMI4_SMB is not set +CONFIG_RMI4_F03=y +CONFIG_RMI4_F03_SERIO=y +CONFIG_RMI4_2D_SENSOR=y +CONFIG_RMI4_F11=y +CONFIG_RMI4_F12=y +CONFIG_RMI4_F30=y +# CONFIG_RMI4_F34 is not set +# CONFIG_RMI4_F3A is not set +# CONFIG_RMI4_F54 is not set +# CONFIG_RMI4_F55 is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_SERIO_SERPORT=m +# CONFIG_SERIO_AMBAKMI is not set +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_ARC_PS2 is not set +# CONFIG_SERIO_APBPS2 is not set +# CONFIG_SERIO_GPIO_PS2 is not set +# CONFIG_USERIO is not set +CONFIG_GAMEPORT=y +# CONFIG_GAMEPORT_EMU10K1 is not set +# CONFIG_GAMEPORT_FM801 is not set +# end of Hardware I/O ports +# end of Input device support + +# +# Character devices +# +CONFIG_TTY=y +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_UNIX98_PTYS=y +# CONFIG_LEGACY_PTYS is not set +CONFIG_LEGACY_TIOCSTI=y +CONFIG_LDISC_AUTOLOAD=y + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y +CONFIG_SERIAL_8250_16550A_VARIANTS=y +# CONFIG_SERIAL_8250_FINTEK is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DMA=y +# CONFIG_SERIAL_8250_PCI is not set +CONFIG_SERIAL_8250_NR_UARTS=5 +CONFIG_SERIAL_8250_RUNTIME_UARTS=5 +CONFIG_SERIAL_8250_EXTENDED=y +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_PCI1XXXX is not set +CONFIG_SERIAL_8250_SHARE_IRQ=y +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_RSA is not set +CONFIG_SERIAL_8250_DWLIB=y +CONFIG_SERIAL_8250_FSL=y +CONFIG_SERIAL_8250_DW=y +# CONFIG_SERIAL_8250_RT288X is not set +CONFIG_SERIAL_8250_PERICOM=y +CONFIG_SERIAL_OF_PLATFORM=y + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_AMBA_PL010 is not set +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +# CONFIG_SERIAL_EARLYCON_SEMIHOST is not set +# CONFIG_SERIAL_MAX3100 is not set +# CONFIG_SERIAL_MAX310X is not set +# CONFIG_SERIAL_UARTLITE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set +# CONFIG_SERIAL_SIFIVE is not set +# 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_XILINX_PS_UART is not set +# CONFIG_SERIAL_ARC is not set +# CONFIG_SERIAL_RP2 is not set +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_FSL_LINFLEXUART is not set +# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set +# CONFIG_SERIAL_SPRD is not set +# end of Serial drivers + +CONFIG_SERIAL_MCTRL_GPIO=y +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_N_GSM is not set +# CONFIG_NOZOMI is not set +# CONFIG_NULL_TTY is not set +# CONFIG_HVC_DCC is not set +CONFIG_SERIAL_DEV_BUS=y +CONFIG_SERIAL_DEV_CTRL_TTYPORT=y +# CONFIG_TTY_PRINTK is not set +# CONFIG_VIRTIO_CONSOLE is not set +# CONFIG_IPMI_HANDLER is not set +CONFIG_HW_RANDOM=y +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +# CONFIG_HW_RANDOM_BA431 is not set +# CONFIG_HW_RANDOM_CCTRNG is not set +# CONFIG_HW_RANDOM_XIPHERA is not set +CONFIG_HW_RANDOM_ARM_SMCCC_TRNG=y +CONFIG_HW_RANDOM_CN10K=y +# CONFIG_APPLICOM is not set +CONFIG_DEVMEM=y +CONFIG_DEVPORT=y +CONFIG_TCG_TPM=y +CONFIG_HW_RANDOM_TPM=y +# CONFIG_TCG_TIS is not set +# CONFIG_TCG_TIS_SPI is not set +# CONFIG_TCG_TIS_I2C is not set +# CONFIG_TCG_TIS_I2C_CR50 is not set +# CONFIG_TCG_TIS_I2C_ATMEL is not set +# CONFIG_TCG_TIS_I2C_INFINEON is not set +# CONFIG_TCG_TIS_I2C_NUVOTON is not set +# CONFIG_TCG_ATMEL is not set +# CONFIG_TCG_VTPM_PROXY is not set +# CONFIG_TCG_TIS_ST33ZP24_I2C is not set +# CONFIG_TCG_TIS_ST33ZP24_SPI is not set +# CONFIG_XILLYBUS is not set +# CONFIG_XILLYUSB is not set +# end of Character devices + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +# CONFIG_I2C_COMPAT is not set +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX=y + +# +# Multiplexer I2C Chip support +# +# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set +# CONFIG_I2C_MUX_GPIO is not set +# CONFIG_I2C_MUX_GPMUX is not set +# CONFIG_I2C_MUX_LTC4306 is not set +# CONFIG_I2C_MUX_PCA9541 is not set +# CONFIG_I2C_MUX_PCA954x is not set +# CONFIG_I2C_MUX_PINCTRL is not set +# CONFIG_I2C_MUX_REG is not set +# CONFIG_I2C_DEMUX_PINCTRL is not set +# CONFIG_I2C_MUX_MLXCPLD is not set +# end of Multiplexer I2C Chip support + +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=y + +# +# I2C Hardware Bus support +# + +# +# PC SMBus host controller drivers +# +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +# CONFIG_I2C_AMD8111 is not set +# CONFIG_I2C_I801 is not set +# CONFIG_I2C_ISCH is not set +# CONFIG_I2C_PIIX4 is not set +# CONFIG_I2C_NFORCE2 is not set +# CONFIG_I2C_NVIDIA_GPU is not set +# CONFIG_I2C_SIS5595 is not set +# CONFIG_I2C_SIS630 is not set +# CONFIG_I2C_SIS96X is not set +# CONFIG_I2C_VIA is not set +# CONFIG_I2C_VIAPRO is not set + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_CADENCE is not set +# CONFIG_I2C_CBUS_GPIO is not set +CONFIG_I2C_DESIGNWARE_CORE=y +# CONFIG_I2C_DESIGNWARE_SLAVE is not set +CONFIG_I2C_DESIGNWARE_PLATFORM=y +# CONFIG_I2C_DESIGNWARE_PCI is not set +# CONFIG_I2C_EMEV2 is not set +# CONFIG_I2C_GPIO is not set +# CONFIG_I2C_HISI is not set +# CONFIG_I2C_NOMADIK is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PCA_PLATFORM is not set +CONFIG_I2C_RK3X=y +# CONFIG_I2C_SIMTEC is not set +# CONFIG_I2C_THUNDERX is not set +# CONFIG_I2C_XILINX is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_DIOLAN_U2C is not set +# CONFIG_I2C_CP2615 is not set +# CONFIG_I2C_PCI1XXXX 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_VIRTIO is not set +# end of I2C Hardware Bus support + +# CONFIG_I2C_STUB is not set +# CONFIG_I2C_SLAVE is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# end of I2C support + +# CONFIG_I3C is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y +CONFIG_SPI_MEM=y + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_ALTERA is not set +# CONFIG_SPI_AXI_SPI_ENGINE is not set +CONFIG_SPI_BITBANG=y +# CONFIG_SPI_CADENCE is not set +# CONFIG_SPI_CADENCE_QUADSPI is not set +# CONFIG_SPI_CADENCE_XSPI is not set +# CONFIG_SPI_DESIGNWARE is not set +CONFIG_SPI_GPIO=y +# CONFIG_SPI_FSL_SPI is not set +# CONFIG_SPI_MICROCHIP_CORE is not set +# CONFIG_SPI_MICROCHIP_CORE_QSPI is not set +# CONFIG_SPI_OC_TINY is not set +# CONFIG_SPI_PCI1XXXX is not set +# CONFIG_SPI_PL022 is not set +# CONFIG_SPI_PXA2XX is not set +CONFIG_SPI_ROCKCHIP=y +CONFIG_SPI_ROCKCHIP_SFC=y +# CONFIG_SPI_SC18IS602 is not set +# CONFIG_SPI_SIFIVE is not set +# CONFIG_SPI_SN_F_OSPI is not set +# CONFIG_SPI_MXIC is not set +# CONFIG_SPI_THUNDERX is not set +# CONFIG_SPI_XCOMM is not set +# CONFIG_SPI_XILINX is not set +# CONFIG_SPI_ZYNQMP_GQSPI is not set +# CONFIG_SPI_AMD is not set + +# +# SPI Multiplexer support +# +CONFIG_SPI_MUX=y + +# +# SPI Protocol Masters +# +CONFIG_SPI_SPIDEV=y +# CONFIG_SPI_LOOPBACK_TEST is not set +# CONFIG_SPI_TLE62X0 is not set +# CONFIG_SPI_SLAVE is not set +CONFIG_SPI_DYNAMIC=y +# CONFIG_SPMI is not set +# CONFIG_HSI is not set +CONFIG_PPS=y +# CONFIG_PPS_DEBUG is not set + +# +# PPS clients support +# +# CONFIG_PPS_CLIENT_KTIMER is not set +# CONFIG_PPS_CLIENT_LDISC is not set +# CONFIG_PPS_CLIENT_GPIO is not set + +# +# PPS generators support +# + +# +# PTP clock support +# +CONFIG_PTP_1588_CLOCK=y +CONFIG_PTP_1588_CLOCK_OPTIONAL=y + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +CONFIG_PTP_1588_CLOCK_KVM=y +# CONFIG_PTP_1588_CLOCK_IDT82P33 is not set +# CONFIG_PTP_1588_CLOCK_IDTCM is not set +# CONFIG_PTP_1588_CLOCK_MOCK is not set +# CONFIG_PTP_1588_CLOCK_OCP is not set +# end of PTP clock support + +CONFIG_PINCTRL=y +CONFIG_GENERIC_PINCTRL_GROUPS=y +CONFIG_PINMUX=y +CONFIG_GENERIC_PINMUX_FUNCTIONS=y +CONFIG_PINCONF=y +CONFIG_GENERIC_PINCONF=y +# CONFIG_DEBUG_PINCTRL is not set +# CONFIG_PINCTRL_CY8C95X0 is not set +# CONFIG_PINCTRL_MCP23S08 is not set +# CONFIG_PINCTRL_MICROCHIP_SGPIO is not set +# CONFIG_PINCTRL_OCELOT is not set +CONFIG_PINCTRL_RK805=y +CONFIG_PINCTRL_ROCKCHIP=y +CONFIG_PINCTRL_SINGLE=y +# CONFIG_PINCTRL_STMFX is not set +# CONFIG_PINCTRL_SX150X is not set + +# +# Renesas pinctrl drivers +# +# end of Renesas pinctrl drivers + +CONFIG_GPIOLIB=y +CONFIG_GPIOLIB_FASTPATH_LIMIT=512 +CONFIG_OF_GPIO=y +CONFIG_GPIOLIB_IRQCHIP=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_CDEV=y +CONFIG_GPIO_CDEV_V1=y +CONFIG_GPIO_GENERIC=y + +# +# Memory mapped GPIO drivers +# +# CONFIG_GPIO_74XX_MMIO is not set +# CONFIG_GPIO_ALTERA is not set +# CONFIG_GPIO_CADENCE is not set +CONFIG_GPIO_DWAPB=y +# CONFIG_GPIO_FTGPIO010 is not set +CONFIG_GPIO_GENERIC_PLATFORM=y +# CONFIG_GPIO_GRGPIO is not set +# CONFIG_GPIO_HISI is not set +# CONFIG_GPIO_HLWD is not set +# CONFIG_GPIO_LOGICVC is not set +# CONFIG_GPIO_MB86S7X is not set +# CONFIG_GPIO_PL061 is not set +CONFIG_GPIO_ROCKCHIP=y +# CONFIG_GPIO_SIFIVE is not set +# CONFIG_GPIO_SYSCON is not set +# CONFIG_GPIO_XGENE is not set +# CONFIG_GPIO_XILINX is not set +# CONFIG_GPIO_AMD_FCH is not set +# end of Memory mapped GPIO drivers + +# +# I2C GPIO expanders +# +# CONFIG_GPIO_ADNP is not set +# CONFIG_GPIO_FXL6408 is not set +# CONFIG_GPIO_DS4520 is not set +# CONFIG_GPIO_GW_PLD is not set +# CONFIG_GPIO_MAX7300 is not set +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCA9570 is not set +# CONFIG_GPIO_PCF857X is not set +# CONFIG_GPIO_TPIC2810 is not set +# end of I2C GPIO expanders + +# +# MFD GPIO expanders +# +# CONFIG_GPIO_TPS6586X is not set +# end of MFD GPIO expanders + +# +# PCI GPIO expanders +# +# CONFIG_GPIO_BT8XX is not set +# CONFIG_GPIO_PCI_IDIO_16 is not set +# CONFIG_GPIO_PCIE_IDIO_24 is not set +# CONFIG_GPIO_RDC321X is not set +# end of PCI GPIO expanders + +# +# SPI GPIO expanders +# +# CONFIG_GPIO_74X164 is not set +# CONFIG_GPIO_MAX3191X is not set +# CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MC33880 is not set +# CONFIG_GPIO_PISOSR is not set +# CONFIG_GPIO_XRA1403 is not set +# end of SPI GPIO expanders + +# +# USB GPIO expanders +# +# end of USB GPIO expanders + +# +# Virtual GPIO drivers +# +# CONFIG_GPIO_AGGREGATOR is not set +# CONFIG_GPIO_LATCH is not set +# CONFIG_GPIO_MOCKUP is not set +# CONFIG_GPIO_SIM is not set +# end of Virtual GPIO drivers + +# CONFIG_W1 is not set +CONFIG_POWER_RESET=y +# CONFIG_POWER_RESET_BRCMSTB is not set +CONFIG_POWER_RESET_GPIO=y +CONFIG_POWER_RESET_GPIO_RESTART=y +# CONFIG_POWER_RESET_LTC2952 is not set +# CONFIG_POWER_RESET_REGULATOR is not set +# CONFIG_POWER_RESET_RESTART is not set +# CONFIG_POWER_RESET_XGENE is not set +CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y +CONFIG_REBOOT_MODE=y +CONFIG_SYSCON_REBOOT_MODE=y +# CONFIG_NVMEM_REBOOT_MODE is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +CONFIG_POWER_SUPPLY_HWMON=y +# CONFIG_GENERIC_ADC_BATTERY is not set +# CONFIG_IP5XXX_POWER is not set +# CONFIG_TEST_POWER is not set +# CONFIG_CHARGER_ADP5061 is not set +CONFIG_BATTERY_CW2015=y +# CONFIG_BATTERY_DS2780 is not set +# CONFIG_BATTERY_DS2781 is not set +# CONFIG_BATTERY_DS2782 is not set +# CONFIG_BATTERY_SAMSUNG_SDI is not set +CONFIG_BATTERY_SBS=y +# CONFIG_CHARGER_SBS is not set +# CONFIG_MANAGER_SBS is not set +# CONFIG_BATTERY_BQ27XXX is not set +# CONFIG_BATTERY_MAX17040 is not set +# CONFIG_BATTERY_MAX17042 is not set +# CONFIG_CHARGER_ISP1704 is not set +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_CHARGER_LP8727 is not set +CONFIG_CHARGER_GPIO=y +# CONFIG_CHARGER_MANAGER is not set +# CONFIG_CHARGER_LT3651 is not set +# CONFIG_CHARGER_LTC4162L is not set +# CONFIG_CHARGER_DETECTOR_MAX14656 is not set +# CONFIG_CHARGER_MAX77976 is not set +# CONFIG_CHARGER_BQ2415X is not set +# CONFIG_CHARGER_BQ24190 is not set +# CONFIG_CHARGER_BQ24257 is not set +CONFIG_CHARGER_BQ24735=y +# CONFIG_CHARGER_BQ2515X is not set +# CONFIG_CHARGER_BQ25890 is not set +# CONFIG_CHARGER_BQ25980 is not set +# CONFIG_CHARGER_BQ256XX is not set +CONFIG_CHARGER_RK817=y +# CONFIG_CHARGER_SMB347 is not set +# CONFIG_BATTERY_GAUGE_LTC2941 is not set +# CONFIG_BATTERY_GOLDFISH is not set +# CONFIG_BATTERY_RT5033 is not set +# CONFIG_CHARGER_RT9455 is not set +# CONFIG_CHARGER_RT9467 is not set +# CONFIG_CHARGER_RT9471 is not set +# CONFIG_CHARGER_UCS1002 is not set +# CONFIG_CHARGER_BD99954 is not set +# CONFIG_BATTERY_UG3105 is not set +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +# CONFIG_SENSORS_AD7314 is not set +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM1177 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADT7310 is not set +# CONFIG_SENSORS_ADT7410 is not set +# CONFIG_SENSORS_ADT7411 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_AHT10 is not set +# CONFIG_SENSORS_AQUACOMPUTER_D5NEXT is not set +# CONFIG_SENSORS_AS370 is not set +# CONFIG_SENSORS_ASC7621 is not set +# CONFIG_SENSORS_AXI_FAN_CONTROL is not set +# CONFIG_SENSORS_ARM_SCMI is not set +# CONFIG_SENSORS_ARM_SCPI is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_CORSAIR_CPRO is not set +# CONFIG_SENSORS_CORSAIR_PSU is not set +# CONFIG_SENSORS_DRIVETEMP is not set +# CONFIG_SENSORS_DS620 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_I5K_AMB is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_FTSTEUTATES is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_G760A is not set +# CONFIG_SENSORS_G762 is not set +# CONFIG_SENSORS_GPIO_FAN is not set +# CONFIG_SENSORS_HIH6130 is not set +# CONFIG_SENSORS_HS3001 is not set +# CONFIG_SENSORS_IIO_HWMON is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_JC42 is not set +# CONFIG_SENSORS_POWR1220 is not set +# CONFIG_SENSORS_LINEAGE is not set +# CONFIG_SENSORS_LTC2945 is not set +# CONFIG_SENSORS_LTC2947_I2C is not set +# CONFIG_SENSORS_LTC2947_SPI is not set +# CONFIG_SENSORS_LTC2990 is not set +# CONFIG_SENSORS_LTC2992 is not set +# CONFIG_SENSORS_LTC4151 is not set +# CONFIG_SENSORS_LTC4215 is not set +# CONFIG_SENSORS_LTC4222 is not set +# CONFIG_SENSORS_LTC4245 is not set +# CONFIG_SENSORS_LTC4260 is not set +# CONFIG_SENSORS_LTC4261 is not set +# CONFIG_SENSORS_MAX1111 is not set +# CONFIG_SENSORS_MAX127 is not set +# CONFIG_SENSORS_MAX16065 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX1668 is not set +# CONFIG_SENSORS_MAX197 is not set +# CONFIG_SENSORS_MAX31722 is not set +# CONFIG_SENSORS_MAX31730 is not set +# CONFIG_SENSORS_MAX31760 is not set +# CONFIG_MAX31827 is not set +# CONFIG_SENSORS_MAX6620 is not set +# CONFIG_SENSORS_MAX6621 is not set +# CONFIG_SENSORS_MAX6639 is not set +# CONFIG_SENSORS_MAX6642 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_MAX6697 is not set +# CONFIG_SENSORS_MAX31790 is not set +# CONFIG_SENSORS_MC34VR500 is not set +# CONFIG_SENSORS_MCP3021 is not set +# CONFIG_SENSORS_TC654 is not set +# CONFIG_SENSORS_TPS23861 is not set +# CONFIG_SENSORS_MR75203 is not set +# CONFIG_SENSORS_ADCXX is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM70 is not set +# CONFIG_SENSORS_LM73 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_LM95234 is not set +# CONFIG_SENSORS_LM95241 is not set +# CONFIG_SENSORS_LM95245 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_NTC_THERMISTOR is not set +# CONFIG_SENSORS_NCT6683 is not set +# CONFIG_SENSORS_NCT6775 is not set +# CONFIG_SENSORS_NCT6775_I2C is not set +# CONFIG_SENSORS_NCT7802 is not set +# CONFIG_SENSORS_NCT7904 is not set +# CONFIG_SENSORS_NPCM7XX is not set +# CONFIG_SENSORS_NZXT_KRAKEN2 is not set +# CONFIG_SENSORS_NZXT_SMART2 is not set +# CONFIG_SENSORS_OCC_P8_I2C is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_PMBUS is not set +CONFIG_SENSORS_PWM_FAN=y +# CONFIG_SENSORS_SBTSI is not set +# CONFIG_SENSORS_SBRMI is not set +# CONFIG_SENSORS_SHT15 is not set +# CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SHT3x is not set +# CONFIG_SENSORS_SHT4x is not set +# CONFIG_SENSORS_SHTC1 is not set +# CONFIG_SENSORS_SIS5595 is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_EMC1403 is not set +# CONFIG_SENSORS_EMC2103 is not set +# CONFIG_SENSORS_EMC2305 is not set +# CONFIG_SENSORS_EMC6W201 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_SCH5627 is not set +# CONFIG_SENSORS_SCH5636 is not set +# CONFIG_SENSORS_STTS751 is not set +# CONFIG_SENSORS_ADC128D818 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_ADS7871 is not set +# CONFIG_SENSORS_AMC6821 is not set +# CONFIG_SENSORS_INA209 is not set +# CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_INA238 is not set +# CONFIG_SENSORS_INA3221 is not set +# CONFIG_SENSORS_TC74 is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_TMP102 is not set +# CONFIG_SENSORS_TMP103 is not set +# CONFIG_SENSORS_TMP108 is not set +# CONFIG_SENSORS_TMP401 is not set +# CONFIG_SENSORS_TMP421 is not set +# CONFIG_SENSORS_TMP464 is not set +# CONFIG_SENSORS_TMP513 is not set +# CONFIG_SENSORS_VIA686A is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_VT8231 is not set +# CONFIG_SENSORS_W83773G is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83795 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set +CONFIG_THERMAL=y +# CONFIG_THERMAL_NETLINK is not set +# CONFIG_THERMAL_STATISTICS is not set +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_OF=y +CONFIG_THERMAL_WRITABLE_TRIPS=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_DEFAULT_GOV_POWER_ALLOCATOR=y +CONFIG_THERMAL_GOV_FAIR_SHARE=y +CONFIG_THERMAL_GOV_STEP_WISE=y +# CONFIG_THERMAL_GOV_BANG_BANG is not set +# CONFIG_THERMAL_GOV_USER_SPACE is not set +CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y +CONFIG_CPU_THERMAL=y +CONFIG_CPU_FREQ_THERMAL=y +CONFIG_DEVFREQ_THERMAL=y +# CONFIG_THERMAL_EMULATION is not set +# CONFIG_THERMAL_MMIO is not set +CONFIG_ROCKCHIP_THERMAL=y +# CONFIG_GENERIC_ADC_THERMAL is not set +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y +CONFIG_WATCHDOG_OPEN_TIMEOUT=0 +# CONFIG_WATCHDOG_SYSFS is not set +# CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set + +# +# Watchdog Pretimeout Governors +# +# CONFIG_WATCHDOG_PRETIMEOUT_GOV 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_XILINX_WINDOW_WATCHDOG is not set +# CONFIG_ZIIRAVE_WATCHDOG is not set +# CONFIG_ARM_SP805_WATCHDOG is not set +# CONFIG_ARM_SBSA_WATCHDOG is not set +# CONFIG_CADENCE_WATCHDOG is not set +CONFIG_DW_WATCHDOG=y +# CONFIG_MAX63XX_WATCHDOG is not set +# CONFIG_ARM_SMC_WATCHDOG is not set +# CONFIG_ALIM7101_WDT is not set +# CONFIG_I6300ESB_WDT is not set +# CONFIG_HP_WATCHDOG is not set +# CONFIG_MEN_A21_WDT is not set + +# +# PCI-based Watchdog Cards +# +# CONFIG_PCIPCWATCHDOG is not set +# CONFIG_WDTPCI is not set + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set +CONFIG_SSB_POSSIBLE=y +CONFIG_SSB=y +CONFIG_SSB_SPROM=y +CONFIG_SSB_BLOCKIO=y +CONFIG_SSB_PCIHOST_POSSIBLE=y +CONFIG_SSB_PCIHOST=y +CONFIG_SSB_B43_PCI_BRIDGE=y +CONFIG_SSB_SDIOHOST_POSSIBLE=y +# CONFIG_SSB_SDIOHOST is not set +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y +CONFIG_SSB_DRIVER_PCICORE=y +# CONFIG_SSB_DRIVER_GPIO is not set +CONFIG_BCMA_POSSIBLE=y +CONFIG_BCMA=y +CONFIG_BCMA_BLOCKIO=y +CONFIG_BCMA_HOST_PCI_POSSIBLE=y +CONFIG_BCMA_HOST_PCI=y +# CONFIG_BCMA_HOST_SOC is not set +CONFIG_BCMA_DRIVER_PCI=y +# CONFIG_BCMA_DRIVER_GMAC_CMN is not set +# CONFIG_BCMA_DRIVER_GPIO is not set +# CONFIG_BCMA_DEBUG is not set + +# +# Multifunction device drivers +# +CONFIG_MFD_CORE=y +# CONFIG_MFD_ACT8945A is not set +# CONFIG_MFD_AS3711 is not set +# CONFIG_MFD_SMPRO is not set +# CONFIG_MFD_AS3722 is not set +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_MFD_AAT2870_CORE is not set +# CONFIG_MFD_ATMEL_FLEXCOM is not set +# CONFIG_MFD_ATMEL_HLCDC is not set +# CONFIG_MFD_BCM590XX is not set +# CONFIG_MFD_BD9571MWV is not set +# CONFIG_MFD_AXP20X_I2C is not set +# CONFIG_MFD_CS42L43_I2C is not set +# CONFIG_MFD_MADERA is not set +# CONFIG_MFD_MAX5970 is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_MFD_DA9052_SPI is not set +# CONFIG_MFD_DA9052_I2C is not set +# CONFIG_MFD_DA9055 is not set +# CONFIG_MFD_DA9062 is not set +# CONFIG_MFD_DA9063 is not set +# CONFIG_MFD_DA9150 is not set +# CONFIG_MFD_DLN2 is not set +# CONFIG_MFD_GATEWORKS_GSC is not set +# CONFIG_MFD_MC13XXX_SPI is not set +# CONFIG_MFD_MC13XXX_I2C is not set +# CONFIG_MFD_MP2629 is not set +# CONFIG_MFD_HI6421_PMIC is not set +# CONFIG_LPC_ICH is not set +# CONFIG_LPC_SCH is not set +# CONFIG_MFD_IQS62X is not set +# CONFIG_MFD_JANZ_CMODIO 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_MAX77541 is not set +# CONFIG_MFD_MAX77620 is not set +# CONFIG_MFD_MAX77650 is not set +# CONFIG_MFD_MAX77686 is not set +# CONFIG_MFD_MAX77693 is not set +# CONFIG_MFD_MAX77714 is not set +# CONFIG_MFD_MAX77843 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_MT6360 is not set +# CONFIG_MFD_MT6370 is not set +# CONFIG_MFD_MT6397 is not set +# CONFIG_MFD_MENF21BMC is not set +# CONFIG_MFD_OCELOT is not set +# CONFIG_EZX_PCAP is not set +# CONFIG_MFD_CPCAP is not set +# CONFIG_MFD_VIPERBOARD is not set +# CONFIG_MFD_NTXEC is not set +# CONFIG_MFD_RETU is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_MFD_SY7636A is not set +# CONFIG_MFD_RDC321X is not set +# CONFIG_MFD_RT4831 is not set +# CONFIG_MFD_RT5033 is not set +# CONFIG_MFD_RT5120 is not set +# CONFIG_MFD_RC5T583 is not set +CONFIG_MFD_RK8XX=y +CONFIG_MFD_RK8XX_I2C=y +# CONFIG_MFD_RK8XX_SPI is not set +# CONFIG_MFD_RN5T618 is not set +# CONFIG_MFD_SEC_CORE is not set +# CONFIG_MFD_SI476X_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SKY81452 is not set +# CONFIG_MFD_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_TI_LMU is not set +# CONFIG_MFD_PALMAS is not set +# CONFIG_TPS6105X is not set +# CONFIG_TPS65010 is not set +# CONFIG_TPS6507X is not set +# CONFIG_MFD_TPS65086 is not set +# CONFIG_MFD_TPS65090 is not set +# CONFIG_MFD_TPS65217 is not set +# CONFIG_MFD_TI_LP873X is not set +# CONFIG_MFD_TI_LP87565 is not set +# CONFIG_MFD_TPS65218 is not set +# CONFIG_MFD_TPS65219 is not set +CONFIG_MFD_TPS6586X=y +# CONFIG_MFD_TPS65910 is not set +# CONFIG_MFD_TPS65912_I2C is not set +# CONFIG_MFD_TPS65912_SPI is not set +# CONFIG_MFD_TPS6594_I2C is not set +# CONFIG_MFD_TPS6594_SPI 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_TQMX86 is not set +# CONFIG_MFD_VX855 is not set +# CONFIG_MFD_LOCHNAGAR 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_MFD_ROHM_BD718XX is not set +# CONFIG_MFD_ROHM_BD71828 is not set +# CONFIG_MFD_ROHM_BD957XMUF is not set +# CONFIG_MFD_STPMIC1 is not set +# CONFIG_MFD_STMFX is not set +# CONFIG_MFD_ATC260X_I2C is not set +# CONFIG_MFD_KHADAS_MCU is not set +# CONFIG_MFD_QCOM_PM8008 is not set +# CONFIG_RAVE_SP_CORE is not set +# CONFIG_MFD_INTEL_M10_BMC_SPI is not set +# CONFIG_MFD_RSMU_I2C is not set +# CONFIG_MFD_RSMU_SPI is not set +# end of Multifunction device drivers + +CONFIG_REGULATOR=y +CONFIG_REGULATOR_DEBUG=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_VIRTUAL_CONSUMER=y +CONFIG_REGULATOR_USERSPACE_CONSUMER=y +# CONFIG_REGULATOR_88PG86X is not set +CONFIG_REGULATOR_ACT8865=y +# CONFIG_REGULATOR_AD5398 is not set +CONFIG_REGULATOR_ARM_SCMI=y +# CONFIG_REGULATOR_AW37503 is not set +# CONFIG_REGULATOR_DA9121 is not set +# CONFIG_REGULATOR_DA9210 is not set +# CONFIG_REGULATOR_DA9211 is not set +CONFIG_REGULATOR_FAN53555=y +# CONFIG_REGULATOR_FAN53880 is not set +CONFIG_REGULATOR_GPIO=y +# CONFIG_REGULATOR_ISL9305 is not set +# CONFIG_REGULATOR_ISL6271A is not set +# CONFIG_REGULATOR_LP3971 is not set +# CONFIG_REGULATOR_LP3972 is not set +# CONFIG_REGULATOR_LP872X is not set +# CONFIG_REGULATOR_LP8755 is not set +# CONFIG_REGULATOR_LTC3589 is not set +# CONFIG_REGULATOR_LTC3676 is not set +# CONFIG_REGULATOR_MAX1586 is not set +# CONFIG_REGULATOR_MAX77857 is not set +# CONFIG_REGULATOR_MAX8649 is not set +# CONFIG_REGULATOR_MAX8660 is not set +# CONFIG_REGULATOR_MAX8893 is not set +# CONFIG_REGULATOR_MAX8952 is not set +# CONFIG_REGULATOR_MAX8973 is not set +# CONFIG_REGULATOR_MAX20086 is not set +# CONFIG_REGULATOR_MAX20411 is not set +# CONFIG_REGULATOR_MAX77826 is not set +# CONFIG_REGULATOR_MCP16502 is not set +# CONFIG_REGULATOR_MP5416 is not set +# CONFIG_REGULATOR_MP8859 is not set +# CONFIG_REGULATOR_MP886X is not set +# CONFIG_REGULATOR_MPQ7920 is not set +# CONFIG_REGULATOR_MT6311 is not set +# CONFIG_REGULATOR_PCA9450 is not set +# CONFIG_REGULATOR_PF8X00 is not set +# CONFIG_REGULATOR_PFUZE100 is not set +# CONFIG_REGULATOR_PV88060 is not set +# CONFIG_REGULATOR_PV88080 is not set +# CONFIG_REGULATOR_PV88090 is not set +CONFIG_REGULATOR_PWM=y +# CONFIG_REGULATOR_RAA215300 is not set +# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set +CONFIG_REGULATOR_RK808=y +# CONFIG_REGULATOR_RT4801 is not set +# CONFIG_REGULATOR_RT4803 is not set +# CONFIG_REGULATOR_RT5190A is not set +# CONFIG_REGULATOR_RT5739 is not set +# CONFIG_REGULATOR_RT5759 is not set +# CONFIG_REGULATOR_RT6160 is not set +# CONFIG_REGULATOR_RT6190 is not set +# CONFIG_REGULATOR_RT6245 is not set +# CONFIG_REGULATOR_RTQ2134 is not set +# CONFIG_REGULATOR_RTMV20 is not set +# CONFIG_REGULATOR_RTQ6752 is not set +# CONFIG_REGULATOR_RTQ2208 is not set +# CONFIG_REGULATOR_SLG51000 is not set +# CONFIG_REGULATOR_SY8106A is not set +# CONFIG_REGULATOR_SY8824X is not set +# CONFIG_REGULATOR_SY8827N is not set +# CONFIG_REGULATOR_TPS51632 is not set +# CONFIG_REGULATOR_TPS62360 is not set +# CONFIG_REGULATOR_TPS6286X is not set +# CONFIG_REGULATOR_TPS6287X is not set +# CONFIG_REGULATOR_TPS65023 is not set +# CONFIG_REGULATOR_TPS6507X is not set +# CONFIG_REGULATOR_TPS65132 is not set +# CONFIG_REGULATOR_TPS6524X is not set +CONFIG_REGULATOR_TPS6586X=y +CONFIG_REGULATOR_VCTRL=y +CONFIG_RC_CORE=y +# CONFIG_BPF_LIRC_MODE2 is not set +CONFIG_LIRC=y +CONFIG_RC_MAP=y +CONFIG_RC_DECODERS=y +# CONFIG_IR_IMON_DECODER is not set +CONFIG_IR_JVC_DECODER=y +CONFIG_IR_MCE_KBD_DECODER=y +CONFIG_IR_NEC_DECODER=y +CONFIG_IR_RC5_DECODER=y +CONFIG_IR_RC6_DECODER=y +# CONFIG_IR_RCMM_DECODER is not set +CONFIG_IR_SANYO_DECODER=y +CONFIG_IR_SHARP_DECODER=y +CONFIG_IR_SONY_DECODER=y +CONFIG_IR_XMP_DECODER=y +CONFIG_RC_DEVICES=y +CONFIG_IR_GPIO_CIR=y +# CONFIG_IR_GPIO_TX is not set +# CONFIG_IR_HIX5HD2 is not set +# CONFIG_IR_IGORPLUGUSB is not set +# CONFIG_IR_IGUANA is not set +# CONFIG_IR_IMON is not set +# CONFIG_IR_IMON_RAW is not set +# CONFIG_IR_MCEUSB is not set +# CONFIG_IR_PWM_TX is not set +# CONFIG_IR_REDRAT3 is not set +# CONFIG_IR_SERIAL is not set +# CONFIG_IR_SPI is not set +# CONFIG_IR_STREAMZAP is not set +# CONFIG_IR_TOY is not set +# CONFIG_IR_TTUSBIR is not set +# CONFIG_RC_ATI_REMOTE is not set +# CONFIG_RC_LOOPBACK is not set +# CONFIG_RC_XBOX_DVD is not set +CONFIG_CEC_CORE=y +CONFIG_CEC_NOTIFIER=y + +# +# CEC support +# +CONFIG_MEDIA_CEC_RC=y +CONFIG_MEDIA_CEC_SUPPORT=y +# CONFIG_CEC_CH7322 is not set +# CONFIG_CEC_GPIO is not set +CONFIG_USB_PULSE8_CEC=m +CONFIG_USB_RAINSHADOW_CEC=m +# end of CEC support + +CONFIG_MEDIA_SUPPORT=y +CONFIG_MEDIA_SUPPORT_FILTER=y +CONFIG_MEDIA_SUBDRV_AUTOSELECT=y + +# +# Media device types +# +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +CONFIG_MEDIA_PLATFORM_SUPPORT=y +CONFIG_MEDIA_TEST_SUPPORT=y +# end of Media device types + +CONFIG_VIDEO_DEV=y +CONFIG_MEDIA_CONTROLLER=y +CONFIG_DVB_CORE=y + +# +# Video4Linux options +# +CONFIG_VIDEO_V4L2_I2C=y +CONFIG_VIDEO_V4L2_SUBDEV_API=y +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +CONFIG_VIDEO_TUNER=m +CONFIG_V4L2_H264=y +CONFIG_V4L2_VP9=y +CONFIG_V4L2_MEM2MEM_DEV=y +CONFIG_V4L2_FWNODE=y +CONFIG_V4L2_ASYNC=y +# end of Video4Linux options + +# +# Media controller options +# +CONFIG_MEDIA_CONTROLLER_DVB=y +CONFIG_MEDIA_CONTROLLER_REQUEST_API=y +# end of Media controller options + +# +# Digital TV options +# +# CONFIG_DVB_MMAP is not set +CONFIG_DVB_NET=y +CONFIG_DVB_MAX_ADAPTERS=8 +# CONFIG_DVB_DYNAMIC_MINORS is not set +# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set +# CONFIG_DVB_ULE_DEBUG is not set +# end of Digital TV options + +# +# Media drivers +# + +# +# Drivers filtered as selected at 'Filter media drivers' +# + +# +# Media drivers +# +CONFIG_MEDIA_USB_SUPPORT=y + +# +# Webcam devices +# +# CONFIG_USB_GSPCA is not set +# CONFIG_USB_PWC is not set +# CONFIG_USB_S2255 is not set +CONFIG_VIDEO_USBTV=m +CONFIG_USB_VIDEO_CLASS=y +# CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV is not set + +# +# Analog TV USB devices +# +# CONFIG_VIDEO_GO7007 is not set +# CONFIG_VIDEO_HDPVR is not set +# CONFIG_VIDEO_PVRUSB2 is not set +# CONFIG_VIDEO_STK1160 is not set + +# +# Analog/digital TV USB devices +# +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_AU0828_V4L2=y +# CONFIG_VIDEO_AU0828_RC is not set +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_RC=y +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m + +# +# Digital TV USB devices +# +CONFIG_DVB_AS102=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set +CONFIG_DVB_USB_V2=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_AF9035=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_AZ6007=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_DVBSKY=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_RTL28XXU=m +# CONFIG_DVB_USB_ZD1301 is not set +CONFIG_DVB_USB=y +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_CXUSB=m +# CONFIG_DVB_USB_CXUSB_ANALOG is not set +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_DIB3000MC=m +CONFIG_DVB_USB_DIBUSB_MB=m +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_VP7045=m +# CONFIG_SMS_USB_DRV is not set +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m + +# +# Webcam, TV (analog/digital) USB devices +# +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_VIDEO_EM28XX_RC=m + +# +# Software defined radio USB devices +# +CONFIG_USB_AIRSPY=m +CONFIG_USB_HACKRF=m +CONFIG_USB_MSI2500=m +CONFIG_MEDIA_PCI_SUPPORT=y + +# +# Media capture support +# +# CONFIG_VIDEO_SOLO6X10 is not set +# CONFIG_VIDEO_TW5864 is not set +# CONFIG_VIDEO_TW68 is not set +# CONFIG_VIDEO_TW686X is not set +# CONFIG_VIDEO_ZORAN is not set + +# +# Media capture/analog TV support +# +# CONFIG_VIDEO_DT3155 is not set +# CONFIG_VIDEO_IVTV is not set +# CONFIG_VIDEO_HEXIUM_GEMINI is not set +# CONFIG_VIDEO_HEXIUM_ORION is not set +# CONFIG_VIDEO_MXB is not set + +# +# Media capture/analog/hybrid TV support +# +# CONFIG_VIDEO_BT848 is not set +# CONFIG_VIDEO_CX18 is not set +CONFIG_VIDEO_CX23885=m +# CONFIG_MEDIA_ALTERA_CI is not set +CONFIG_VIDEO_CX25821=m +# CONFIG_VIDEO_CX25821_ALSA is not set +# CONFIG_VIDEO_CX88 is not set +# CONFIG_VIDEO_SAA7134 is not set +# CONFIG_VIDEO_SAA7164 is not set + +# +# Media digital TV PCI Adapters +# +# CONFIG_DVB_B2C2_FLEXCOP_PCI is not set +# CONFIG_DVB_DDBRIDGE is not set +# CONFIG_DVB_DM1105 is not set +# CONFIG_MANTIS_CORE is not set +# CONFIG_DVB_NETUP_UNIDVB is not set +# CONFIG_DVB_NGENE is not set +# CONFIG_DVB_PLUTO2 is not set +# CONFIG_DVB_PT1 is not set +# CONFIG_DVB_PT3 is not set +# CONFIG_DVB_SMIPCIE is not set +# CONFIG_DVB_BUDGET_CORE is not set +CONFIG_RADIO_ADAPTERS=y +# CONFIG_RADIO_MAXIRADIO is not set +# CONFIG_RADIO_SAA7706H is not set +# CONFIG_RADIO_SHARK is not set +# CONFIG_RADIO_SHARK2 is not set +# CONFIG_RADIO_SI4713 is not set +# CONFIG_RADIO_TEA5764 is not set +# CONFIG_RADIO_TEF6862 is not set +# CONFIG_RADIO_WL1273 is not set +# CONFIG_USB_DSBR is not set +# CONFIG_USB_KEENE is not set +# CONFIG_USB_MA901 is not set +# CONFIG_USB_MR800 is not set +# CONFIG_USB_RAREMONO is not set +# CONFIG_RADIO_SI470X is not set +CONFIG_MEDIA_PLATFORM_DRIVERS=y +CONFIG_V4L_PLATFORM_DRIVERS=y +# CONFIG_SDR_PLATFORM_DRIVERS is not set +CONFIG_DVB_PLATFORM_DRIVERS=y +CONFIG_V4L_MEM2MEM_DRIVERS=y +# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set +# CONFIG_VIDEO_MUX is not set + +# +# Allegro DVT media platform drivers +# + +# +# Amlogic media platform drivers +# + +# +# Amphion drivers +# + +# +# Aspeed media platform drivers +# + +# +# Atmel media platform drivers +# + +# +# Cadence media platform drivers +# +# CONFIG_VIDEO_CADENCE_CSI2RX is not set +# CONFIG_VIDEO_CADENCE_CSI2TX is not set + +# +# Chips&Media media platform drivers +# + +# +# Intel media platform drivers +# + +# +# Marvell media platform drivers +# +# CONFIG_VIDEO_CAFE_CCIC is not set + +# +# Mediatek media platform drivers +# + +# +# Microchip Technology, Inc. media platform drivers +# + +# +# NVidia media platform drivers +# + +# +# NXP media platform drivers +# + +# +# Qualcomm media platform drivers +# + +# +# Renesas media platform drivers +# + +# +# Rockchip media platform drivers +# +CONFIG_VIDEO_ROCKCHIP_RGA=y +# CONFIG_VIDEO_ROCKCHIP_ISP1 is not set + +# +# Samsung media platform drivers +# + +# +# STMicroelectronics media platform drivers +# + +# +# Sunxi media platform drivers +# + +# +# Texas Instruments drivers +# + +# +# Verisilicon media platform drivers +# +CONFIG_VIDEO_HANTRO=y +CONFIG_VIDEO_HANTRO_ROCKCHIP=y + +# +# VIA media platform drivers +# + +# +# Xilinx media platform drivers +# +# CONFIG_VIDEO_XILINX is not set + +# +# MMC/SDIO DVB adapters +# +# CONFIG_SMS_SDIO_DRV is not set +# CONFIG_V4L_TEST_DRIVERS is not set +# CONFIG_DVB_TEST_DRIVERS is not set +CONFIG_CYPRESS_FIRMWARE=y +CONFIG_TTPCI_EEPROM=m +CONFIG_UVC_COMMON=y +CONFIG_VIDEO_CX2341X=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_DVB_B2C2_FLEXCOP=m +CONFIG_VIDEOBUF2_CORE=y +CONFIG_VIDEOBUF2_V4L2=y +CONFIG_VIDEOBUF2_MEMOPS=y +CONFIG_VIDEOBUF2_DMA_CONTIG=y +CONFIG_VIDEOBUF2_VMALLOC=y +CONFIG_VIDEOBUF2_DMA_SG=y +CONFIG_VIDEOBUF2_DVB=m +# end of Media drivers + +# +# Media ancillary drivers +# +CONFIG_MEDIA_ATTACH=y + +# +# IR I2C driver auto-selected by 'Autoselect ancillary drivers' +# +# CONFIG_VIDEO_IR_I2C is not set +CONFIG_VIDEO_CAMERA_SENSOR=y +# CONFIG_VIDEO_AR0521 is not set +# CONFIG_VIDEO_HI556 is not set +# CONFIG_VIDEO_HI846 is not set +# CONFIG_VIDEO_HI847 is not set +# CONFIG_VIDEO_IMX208 is not set +# CONFIG_VIDEO_IMX214 is not set +CONFIG_VIDEO_IMX219=y +# CONFIG_VIDEO_IMX258 is not set +# CONFIG_VIDEO_IMX274 is not set +# CONFIG_VIDEO_IMX290 is not set +# CONFIG_VIDEO_IMX296 is not set +# CONFIG_VIDEO_IMX319 is not set +# CONFIG_VIDEO_IMX334 is not set +# CONFIG_VIDEO_IMX335 is not set +# CONFIG_VIDEO_IMX355 is not set +# CONFIG_VIDEO_IMX412 is not set +# CONFIG_VIDEO_IMX415 is not set +# CONFIG_VIDEO_MT9M001 is not set +# CONFIG_VIDEO_MT9M111 is not set +# CONFIG_VIDEO_MT9P031 is not set +# CONFIG_VIDEO_MT9T112 is not set +CONFIG_VIDEO_MT9V011=m +# CONFIG_VIDEO_MT9V032 is not set +# CONFIG_VIDEO_MT9V111 is not set +# CONFIG_VIDEO_OG01A1B is not set +# CONFIG_VIDEO_OV01A10 is not set +# CONFIG_VIDEO_OV02A10 is not set +# CONFIG_VIDEO_OV08D10 is not set +# CONFIG_VIDEO_OV08X40 is not set +# CONFIG_VIDEO_OV13858 is not set +# CONFIG_VIDEO_OV13B10 is not set +CONFIG_VIDEO_OV2640=m +# CONFIG_VIDEO_OV2659 is not set +# CONFIG_VIDEO_OV2680 is not set +# CONFIG_VIDEO_OV2685 is not set +# CONFIG_VIDEO_OV4689 is not set +# CONFIG_VIDEO_OV5640 is not set +CONFIG_VIDEO_OV5645=y +# CONFIG_VIDEO_OV5647 is not set +# CONFIG_VIDEO_OV5648 is not set +# CONFIG_VIDEO_OV5670 is not set +# CONFIG_VIDEO_OV5675 is not set +# CONFIG_VIDEO_OV5693 is not set +# CONFIG_VIDEO_OV5695 is not set +# CONFIG_VIDEO_OV6650 is not set +# CONFIG_VIDEO_OV7251 is not set +# CONFIG_VIDEO_OV7640 is not set +# CONFIG_VIDEO_OV7670 is not set +# CONFIG_VIDEO_OV772X is not set +# CONFIG_VIDEO_OV7740 is not set +# CONFIG_VIDEO_OV8856 is not set +# CONFIG_VIDEO_OV8858 is not set +# CONFIG_VIDEO_OV8865 is not set +# CONFIG_VIDEO_OV9282 is not set +# CONFIG_VIDEO_OV9640 is not set +# CONFIG_VIDEO_OV9650 is not set +# CONFIG_VIDEO_RDACM20 is not set +# CONFIG_VIDEO_RDACM21 is not set +# CONFIG_VIDEO_RJ54N1 is not set +# CONFIG_VIDEO_S5C73M3 is not set +# CONFIG_VIDEO_S5K5BAF is not set +# CONFIG_VIDEO_S5K6A3 is not set +# CONFIG_VIDEO_ST_VGXY61 is not set +# CONFIG_VIDEO_CCS is not set +# CONFIG_VIDEO_ET8EK8 is not set + +# +# Lens drivers +# +# CONFIG_VIDEO_AD5820 is not set +# CONFIG_VIDEO_AK7375 is not set +# CONFIG_VIDEO_DW9714 is not set +# CONFIG_VIDEO_DW9719 is not set +# CONFIG_VIDEO_DW9768 is not set +# CONFIG_VIDEO_DW9807_VCM is not set +# end of Lens drivers + +# +# Flash devices +# +# CONFIG_VIDEO_ADP1653 is not set +# CONFIG_VIDEO_LM3560 is not set +# CONFIG_VIDEO_LM3646 is not set +# end of Flash devices + +# +# Audio decoders, processors and mixers +# +CONFIG_VIDEO_CS3308=m +# CONFIG_VIDEO_CS5345 is not set +# CONFIG_VIDEO_CS53L32A is not set +CONFIG_VIDEO_MSP3400=m +# CONFIG_VIDEO_SONY_BTF_MPX is not set +# CONFIG_VIDEO_TDA1997X is not set +# CONFIG_VIDEO_TDA7432 is not set +# CONFIG_VIDEO_TDA9840 is not set +# CONFIG_VIDEO_TEA6415C is not set +# CONFIG_VIDEO_TEA6420 is not set +# CONFIG_VIDEO_TLV320AIC23B is not set +# CONFIG_VIDEO_TVAUDIO is not set +# CONFIG_VIDEO_UDA1342 is not set +# CONFIG_VIDEO_VP27SMPX is not set +# CONFIG_VIDEO_WM8739 is not set +# CONFIG_VIDEO_WM8775 is not set +# end of Audio decoders, processors and mixers + +# +# RDS decoders +# +# CONFIG_VIDEO_SAA6588 is not set +# end of RDS decoders + +# +# Video decoders +# +# CONFIG_VIDEO_ADV7180 is not set +# CONFIG_VIDEO_ADV7183 is not set +# CONFIG_VIDEO_ADV748X is not set +# CONFIG_VIDEO_ADV7604 is not set +# CONFIG_VIDEO_ADV7842 is not set +# CONFIG_VIDEO_BT819 is not set +# CONFIG_VIDEO_BT856 is not set +# CONFIG_VIDEO_BT866 is not set +# CONFIG_VIDEO_ISL7998X is not set +# CONFIG_VIDEO_KS0127 is not set +# CONFIG_VIDEO_MAX9286 is not set +# CONFIG_VIDEO_ML86V7667 is not set +# CONFIG_VIDEO_SAA7110 is not set +CONFIG_VIDEO_SAA711X=m +# CONFIG_VIDEO_TC358743 is not set +# CONFIG_VIDEO_TC358746 is not set +# CONFIG_VIDEO_TVP514X is not set +CONFIG_VIDEO_TVP5150=m +# CONFIG_VIDEO_TVP7002 is not set +# CONFIG_VIDEO_TW2804 is not set +# CONFIG_VIDEO_TW9903 is not set +# CONFIG_VIDEO_TW9906 is not set +# CONFIG_VIDEO_TW9910 is not set +# CONFIG_VIDEO_VPX3220 is not set + +# +# Video and audio decoders +# +# CONFIG_VIDEO_SAA717X is not set +CONFIG_VIDEO_CX25840=m +# end of Video decoders + +# +# Video encoders +# +# CONFIG_VIDEO_ADV7170 is not set +# CONFIG_VIDEO_ADV7175 is not set +# CONFIG_VIDEO_ADV7343 is not set +# CONFIG_VIDEO_ADV7393 is not set +# CONFIG_VIDEO_ADV7511 is not set +# CONFIG_VIDEO_AK881X is not set +# CONFIG_VIDEO_SAA7127 is not set +# CONFIG_VIDEO_SAA7185 is not set +# CONFIG_VIDEO_THS8200 is not set +# end of Video encoders + +# +# Video improvement chips +# +# CONFIG_VIDEO_UPD64031A is not set +# CONFIG_VIDEO_UPD64083 is not set +# end of Video improvement chips + +# +# Audio/Video compression chips +# +# CONFIG_VIDEO_SAA6752HS is not set +# end of Audio/Video compression chips + +# +# SDR tuner chips +# +# CONFIG_SDR_MAX2175 is not set +# end of SDR tuner chips + +# +# Miscellaneous helper chips +# +# CONFIG_VIDEO_I2C is not set +# CONFIG_VIDEO_M52790 is not set +# CONFIG_VIDEO_ST_MIPID02 is not set +# CONFIG_VIDEO_THS7303 is not set +# end of Miscellaneous helper chips + +# +# Video serializers and deserializers +# +# CONFIG_VIDEO_DS90UB913 is not set +# CONFIG_VIDEO_DS90UB953 is not set +# CONFIG_VIDEO_DS90UB960 is not set +# end of Video serializers and deserializers + +# +# Media SPI Adapters +# +CONFIG_CXD2880_SPI_DRV=m +# CONFIG_VIDEO_GS1662 is not set +# end of Media SPI Adapters + +CONFIG_MEDIA_TUNER=y + +# +# Customize TV tuners +# +CONFIG_MEDIA_TUNER_E4000=m +CONFIG_MEDIA_TUNER_FC0011=m +CONFIG_MEDIA_TUNER_FC0012=m +CONFIG_MEDIA_TUNER_FC0013=m +CONFIG_MEDIA_TUNER_FC2580=m +CONFIG_MEDIA_TUNER_IT913X=m +CONFIG_MEDIA_TUNER_M88RS6000T=m +CONFIG_MEDIA_TUNER_MAX2165=m +CONFIG_MEDIA_TUNER_MC44S803=y +CONFIG_MEDIA_TUNER_MSI001=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2063=m +CONFIG_MEDIA_TUNER_MT20XX=y +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_MT2266=m +# CONFIG_MEDIA_TUNER_MXL301RF is not set +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m +# CONFIG_MEDIA_TUNER_QM1D1B0004 is not set +CONFIG_MEDIA_TUNER_QM1D1C0042=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_R820T=m +CONFIG_MEDIA_TUNER_SI2157=m +CONFIG_MEDIA_TUNER_SIMPLE=y +CONFIG_MEDIA_TUNER_TDA18212=m +CONFIG_MEDIA_TUNER_TDA18218=m +CONFIG_MEDIA_TUNER_TDA18250=m +CONFIG_MEDIA_TUNER_TDA18271=y +CONFIG_MEDIA_TUNER_TDA827X=y +CONFIG_MEDIA_TUNER_TDA8290=y +CONFIG_MEDIA_TUNER_TDA9887=y +CONFIG_MEDIA_TUNER_TEA5761=y +CONFIG_MEDIA_TUNER_TEA5767=y +CONFIG_MEDIA_TUNER_TUA9001=m +CONFIG_MEDIA_TUNER_XC2028=y +CONFIG_MEDIA_TUNER_XC4000=y +CONFIG_MEDIA_TUNER_XC5000=y +# end of Customize TV tuners + +# +# Customise DVB Frontends +# + +# +# Multistandard (satellite) frontends +# +CONFIG_DVB_M88DS3103=m +# CONFIG_DVB_MXL5XX is not set +CONFIG_DVB_STB0899=m +CONFIG_DVB_STB6100=m +CONFIG_DVB_STV090x=m +# CONFIG_DVB_STV0910 is not set +CONFIG_DVB_STV6110x=m +# CONFIG_DVB_STV6111 is not set + +# +# Multistandard (cable + terrestrial) frontends +# +CONFIG_DVB_DRXK=m +CONFIG_DVB_MN88472=m +CONFIG_DVB_MN88473=m +CONFIG_DVB_SI2165=m +CONFIG_DVB_TDA18271C2DD=m + +# +# DVB-S (satellite) frontends +# +# CONFIG_DVB_CX24110 is not set +CONFIG_DVB_CX24116=m +CONFIG_DVB_CX24117=m +CONFIG_DVB_CX24120=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_DS3000=m +# CONFIG_DVB_MB86A16 is not set +CONFIG_DVB_MT312=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_SI21XX=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV0900=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_TDA10071=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA8083=m +# CONFIG_DVB_TDA8261 is not set +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TS2020=m +# CONFIG_DVB_TUA6100 is not set +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TUNER_ITD1000=m +# CONFIG_DVB_VES1X93 is not set +# CONFIG_DVB_ZL10036 is not set +CONFIG_DVB_ZL10039=m + +# +# DVB-T (terrestrial) frontends +# +CONFIG_DVB_AF9013=m +CONFIG_DVB_AS102_FE=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_CXD2820R=m +CONFIG_DVB_CXD2841ER=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +# CONFIG_DVB_DIB9000 is not set +CONFIG_DVB_DRXD=m +CONFIG_DVB_EC100=m +CONFIG_DVB_GP8PSK_FE=m +# CONFIG_DVB_L64781 is not set +CONFIG_DVB_MT352=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_RTL2830=m +CONFIG_DVB_RTL2832=m +CONFIG_DVB_RTL2832_SDR=m +# CONFIG_DVB_S5H1432 is not set +CONFIG_DVB_SI2168=m +# CONFIG_DVB_SP887X is not set +CONFIG_DVB_STV0367=m +CONFIG_DVB_TDA10048=m +CONFIG_DVB_TDA1004X=m +# CONFIG_DVB_ZD1301_DEMOD is not set +CONFIG_DVB_ZL10353=m +# CONFIG_DVB_CXD2880 is not set + +# +# DVB-C (cable) frontends +# +CONFIG_DVB_STV0297=m +# CONFIG_DVB_TDA10021 is not set +CONFIG_DVB_TDA10023=m +CONFIG_DVB_VES1820=m + +# +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends +# +CONFIG_DVB_AU8522=m +CONFIG_DVB_AU8522_DTV=m +CONFIG_DVB_AU8522_V4L=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LG2160=m +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LGDT3306A=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_MXL692=m +CONFIG_DVB_NXT200X=m +# CONFIG_DVB_OR51132 is not set +# CONFIG_DVB_OR51211 is not set +CONFIG_DVB_S5H1409=m +CONFIG_DVB_S5H1411=m + +# +# ISDB-T (terrestrial) frontends +# +CONFIG_DVB_DIB8000=m +CONFIG_DVB_MB86A20S=m +CONFIG_DVB_S921=m + +# +# ISDB-S (satellite) & ISDB-T (terrestrial) frontends +# +# CONFIG_DVB_MN88443X is not set +CONFIG_DVB_TC90522=m + +# +# Digital terrestrial only tuners/PLL +# +CONFIG_DVB_PLL=m +CONFIG_DVB_TUNER_DIB0070=m +CONFIG_DVB_TUNER_DIB0090=m + +# +# SEC control devices for DVB-S +# +CONFIG_DVB_A8293=m +CONFIG_DVB_AF9033=m +CONFIG_DVB_ASCOT2E=m +CONFIG_DVB_ATBM8830=m +CONFIG_DVB_HELENE=m +CONFIG_DVB_HORUS3A=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +CONFIG_DVB_ISL6423=m +CONFIG_DVB_IX2505V=m +CONFIG_DVB_LGS8GL5=m +CONFIG_DVB_LGS8GXX=m +CONFIG_DVB_LNBH25=m +CONFIG_DVB_LNBH29=m +CONFIG_DVB_LNBP21=m +CONFIG_DVB_LNBP22=m +CONFIG_DVB_M88RS2000=m +CONFIG_DVB_TDA665x=m +CONFIG_DVB_DRX39XYJ=m + +# +# Common Interface (EN50221) controller drivers +# +CONFIG_DVB_CXD2099=m +CONFIG_DVB_SP2=m +# end of Customise DVB Frontends + +# +# Tools to develop new frontends +# +# CONFIG_DVB_DUMMY_FE is not set +# end of Media ancillary drivers + +# +# Graphics support +# +CONFIG_VIDEO_CMDLINE=y +CONFIG_VIDEO_NOMODESET=y +# CONFIG_AUXDISPLAY is not set +CONFIG_DRM=y +CONFIG_DRM_MIPI_DBI=y +CONFIG_DRM_MIPI_DSI=y +# CONFIG_DRM_DEBUG_MM is not set +CONFIG_DRM_KMS_HELPER=y +# CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set +# CONFIG_DRM_DEBUG_MODESET_LOCK is not set +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_FBDEV_OVERALLOC=100 +# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_DISPLAY_HELPER=y +CONFIG_DRM_DISPLAY_HDMI_HELPER=y +# CONFIG_DRM_DP_AUX_CHARDEV is not set +# CONFIG_DRM_DP_CEC is not set +CONFIG_DRM_GEM_DMA_HELPER=y +CONFIG_DRM_GEM_SHMEM_HELPER=y +CONFIG_DRM_SCHED=y + +# +# I2C encoder or helper chips +# +# CONFIG_DRM_I2C_CH7006 is not set +# CONFIG_DRM_I2C_SIL164 is not set +# CONFIG_DRM_I2C_NXP_TDA998X is not set +# CONFIG_DRM_I2C_NXP_TDA9950 is not set +# end of I2C encoder or helper chips + +# +# ARM devices +# +# CONFIG_DRM_HDLCD is not set +CONFIG_DRM_MALI_DISPLAY=y +# CONFIG_DRM_KOMEDA is not set +# end of ARM devices + +# CONFIG_DRM_RADEON is not set +# CONFIG_DRM_AMDGPU is not set +# CONFIG_DRM_NOUVEAU is not set +# CONFIG_DRM_VGEM is not set +# CONFIG_DRM_VKMS is not set +CONFIG_DRM_ROCKCHIP=y +CONFIG_ROCKCHIP_VOP=y +CONFIG_ROCKCHIP_VOP2=y +# CONFIG_ROCKCHIP_ANALOGIX_DP is not set +# CONFIG_ROCKCHIP_CDN_DP is not set +CONFIG_ROCKCHIP_DW_HDMI=y +CONFIG_ROCKCHIP_DW_MIPI_DSI=y +# CONFIG_ROCKCHIP_INNO_HDMI is not set +# CONFIG_ROCKCHIP_LVDS is not set +# CONFIG_ROCKCHIP_RGB is not set +# CONFIG_ROCKCHIP_RK3066_HDMI is not set +# CONFIG_DRM_VMWGFX is not set +# CONFIG_DRM_UDL is not set +# CONFIG_DRM_AST is not set +# CONFIG_DRM_MGAG200 is not set +# CONFIG_DRM_QXL is not set +CONFIG_DRM_PANEL=y + +# +# Display Panels +# +# CONFIG_DRM_PANEL_ABT_Y030XX067A is not set +# CONFIG_DRM_PANEL_ARM_VERSATILE is not set +# CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596 is not set +# CONFIG_DRM_PANEL_AUO_A030JTN01 is not set +# CONFIG_DRM_PANEL_BOE_BF060Y8M_AJ0 is not set +# CONFIG_DRM_PANEL_BOE_HIMAX8279D is not set +# CONFIG_DRM_PANEL_BOE_TV101WUM_NL6 is not set +# CONFIG_DRM_PANEL_DSI_CM is not set +# CONFIG_DRM_PANEL_LVDS is not set +# CONFIG_DRM_PANEL_SIMPLE is not set +# CONFIG_DRM_PANEL_EDP is not set +# CONFIG_DRM_PANEL_EBBG_FT8719 is not set +CONFIG_DRM_PANEL_ELIDA_KD35T133=y +# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set +# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set +# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set +# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set +# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set +# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set +# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set +# CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set +# CONFIG_DRM_PANEL_JADARD_JD9365DA_H3 is not set +# CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set +# CONFIG_DRM_PANEL_JDI_R63452 is not set +# CONFIG_DRM_PANEL_KHADAS_TS050 is not set +# CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04 is not set +# CONFIG_DRM_PANEL_LEADTEK_LTK050H3146W is not set +# CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 is not set +# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set +# CONFIG_DRM_PANEL_LG_LB035Q02 is not set +# CONFIG_DRM_PANEL_LG_LG4573 is not set +CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=y +# CONFIG_DRM_PANEL_NEC_NL8048HL11 is not set +CONFIG_DRM_PANEL_NEWVISION_NV3051D=y +# CONFIG_DRM_PANEL_NEWVISION_NV3052C is not set +# CONFIG_DRM_PANEL_NOVATEK_NT35510 is not set +# CONFIG_DRM_PANEL_NOVATEK_NT35560 is not set +# CONFIG_DRM_PANEL_NOVATEK_NT35950 is not set +# CONFIG_DRM_PANEL_NOVATEK_NT36523 is not set +# CONFIG_DRM_PANEL_NOVATEK_NT36672A is not set +# CONFIG_DRM_PANEL_NOVATEK_NT39016 is not set +# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set +# CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO is not set +# CONFIG_DRM_PANEL_ORISETECH_OTA5601A is not set +# CONFIG_DRM_PANEL_ORISETECH_OTM8009A is not set +# CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS is not set +# CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set +# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set +# CONFIG_DRM_PANEL_RAYDIUM_RM67191 is not set +# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set +# CONFIG_DRM_PANEL_RONBO_RB070D30 is not set +# CONFIG_DRM_PANEL_SAMSUNG_ATNA33XC20 is not set +# CONFIG_DRM_PANEL_SAMSUNG_DB7430 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6D16D0 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6D27A1 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6D7AA0 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set +# CONFIG_DRM_PANEL_SAMSUNG_SOFEF00 is not set +# CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set +# CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 is not set +# CONFIG_DRM_PANEL_SHARP_LS037V7DW01 is not set +# CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set +# CONFIG_DRM_PANEL_SHARP_LS060T1SX01 is not set +# CONFIG_DRM_PANEL_SITRONIX_ST7701 is not set +CONFIG_DRM_PANEL_SITRONIX_ST7703=y +# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set +# CONFIG_DRM_PANEL_SONY_ACX565AKM is not set +# CONFIG_DRM_PANEL_SONY_TD4353_JDI is not set +# CONFIG_DRM_PANEL_SONY_TULIP_TRULY_NT35521 is not set +# CONFIG_DRM_PANEL_STARTEK_KD070FHFID015 is not set +# CONFIG_DRM_PANEL_TDO_TL070WSH30 is not set +# CONFIG_DRM_PANEL_TPO_TD028TTEC1 is not set +# CONFIG_DRM_PANEL_TPO_TD043MTEA1 is not set +# CONFIG_DRM_PANEL_TPO_TPG110 is not set +# CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA is not set +# CONFIG_DRM_PANEL_VISIONOX_RM69299 is not set +# CONFIG_DRM_PANEL_VISIONOX_VTDR6130 is not set +# CONFIG_DRM_PANEL_VISIONOX_R66451 is not set +# CONFIG_DRM_PANEL_WIDECHIPS_WS2401 is not set +# CONFIG_DRM_PANEL_XINPENG_XPP055C272 is not set +# end of Display Panels + +CONFIG_DRM_BRIDGE=y +CONFIG_DRM_PANEL_BRIDGE=y + +# +# Display Interface Bridges +# +# CONFIG_DRM_CHIPONE_ICN6211 is not set +# CONFIG_DRM_CHRONTEL_CH7033 is not set +CONFIG_DRM_DISPLAY_CONNECTOR=y +# CONFIG_DRM_ITE_IT6505 is not set +# CONFIG_DRM_LONTIUM_LT8912B is not set +# CONFIG_DRM_LONTIUM_LT9211 is not set +# CONFIG_DRM_LONTIUM_LT9611 is not set +# CONFIG_DRM_LONTIUM_LT9611UXC is not set +# CONFIG_DRM_ITE_IT66121 is not set +# CONFIG_DRM_LVDS_CODEC is not set +# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set +# CONFIG_DRM_NWL_MIPI_DSI is not set +# CONFIG_DRM_NXP_PTN3460 is not set +# CONFIG_DRM_PARADE_PS8622 is not set +# CONFIG_DRM_PARADE_PS8640 is not set +# CONFIG_DRM_SAMSUNG_DSIM is not set +# CONFIG_DRM_SIL_SII8620 is not set +# CONFIG_DRM_SII902X is not set +# CONFIG_DRM_SII9234 is not set +# CONFIG_DRM_SIMPLE_BRIDGE is not set +# CONFIG_DRM_THINE_THC63LVD1024 is not set +# CONFIG_DRM_TOSHIBA_TC358762 is not set +# CONFIG_DRM_TOSHIBA_TC358764 is not set +# CONFIG_DRM_TOSHIBA_TC358767 is not set +# CONFIG_DRM_TOSHIBA_TC358768 is not set +# CONFIG_DRM_TOSHIBA_TC358775 is not set +# CONFIG_DRM_TI_DLPC3433 is not set +# CONFIG_DRM_TI_TFP410 is not set +# CONFIG_DRM_TI_SN65DSI83 is not set +# CONFIG_DRM_TI_SN65DSI86 is not set +# CONFIG_DRM_TI_TPD12S015 is not set +# CONFIG_DRM_ANALOGIX_ANX6345 is not set +# CONFIG_DRM_ANALOGIX_ANX78XX is not set +# CONFIG_DRM_ANALOGIX_ANX7625 is not set +# CONFIG_DRM_I2C_ADV7511 is not set +# CONFIG_DRM_CDNS_DSI is not set +# CONFIG_DRM_CDNS_MHDP8546 is not set +CONFIG_DRM_DW_HDMI=y +# CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set +CONFIG_DRM_DW_HDMI_I2S_AUDIO=m +# CONFIG_DRM_DW_HDMI_GP_AUDIO is not set +CONFIG_DRM_DW_HDMI_CEC=y +CONFIG_DRM_DW_MIPI_DSI=y +# end of Display Interface Bridges + +# CONFIG_DRM_LOONGSON is not set +# CONFIG_DRM_ETNAVIV is not set +# CONFIG_DRM_HISI_HIBMC is not set +# CONFIG_DRM_HISI_KIRIN is not set +# CONFIG_DRM_LOGICVC is not set +# CONFIG_DRM_ARCPGU is not set +# CONFIG_DRM_BOCHS is not set +# CONFIG_DRM_CIRRUS_QEMU is not set +# CONFIG_DRM_GM12U320 is not set +CONFIG_DRM_PANEL_MIPI_DBI=y +# CONFIG_DRM_SIMPLEDRM is not set +# CONFIG_TINYDRM_HX8357D is not set +# CONFIG_TINYDRM_ILI9163 is not set +# CONFIG_TINYDRM_ILI9225 is not set +# CONFIG_TINYDRM_ILI9341 is not set +# CONFIG_TINYDRM_ILI9486 is not set +# CONFIG_TINYDRM_MI0283QT is not set +# CONFIG_TINYDRM_REPAPER is not set +# CONFIG_TINYDRM_ST7586 is not set +# CONFIG_TINYDRM_ST7735R is not set +# CONFIG_DRM_PL111 is not set +# CONFIG_DRM_LIMA is not set +CONFIG_DRM_PANFROST=y +# CONFIG_DRM_TIDSS is not set +# CONFIG_DRM_GUD is not set +# CONFIG_DRM_SSD130X is not set +# CONFIG_DRM_LEGACY is not set +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y + +# +# Frame buffer Devices +# +CONFIG_FB=y +# CONFIG_FB_CIRRUS is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_ARMCLCD is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +# CONFIG_FB_UVESA is not set +# CONFIG_FB_OPENCORES is not set +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_NVIDIA is not set +# CONFIG_FB_RIVA is not set +# CONFIG_FB_I740 is not set +# CONFIG_FB_MATROX is not set +# CONFIG_FB_RADEON is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_S3 is not set +# CONFIG_FB_SAVAGE is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_KYRO is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_VT8623 is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_ARK is not set +# CONFIG_FB_PM3 is not set +# CONFIG_FB_CARMINE is not set +# CONFIG_FB_SMSCUFX is not set +# CONFIG_FB_UDL is not set +# CONFIG_FB_IBM_GXT4500 is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_SIMPLE is not set +# CONFIG_FB_SSD1307 is not set +# CONFIG_FB_SM712 is not set +CONFIG_FB_CORE=y +CONFIG_FB_NOTIFY=y +CONFIG_FIRMWARE_EDID=y +CONFIG_FB_DEVICE=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_IMAGEBLIT=y +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_DMAMEM_HELPERS=y +CONFIG_FB_SYSMEM_HELPERS=y +CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y +CONFIG_FB_MODE_HELPERS=y +# CONFIG_FB_TILEBLITTING is not set +# end of Frame buffer Devices + +# +# Backlight & LCD device support +# +# CONFIG_LCD_CLASS_DEVICE is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=y +# CONFIG_BACKLIGHT_KTD253 is not set +# CONFIG_BACKLIGHT_KTZ8866 is not set +CONFIG_BACKLIGHT_PWM=y +# CONFIG_BACKLIGHT_QCOM_WLED is not set +# CONFIG_BACKLIGHT_ADP8860 is not set +# CONFIG_BACKLIGHT_ADP8870 is not set +# CONFIG_BACKLIGHT_LM3630A is not set +# CONFIG_BACKLIGHT_LM3639 is not set +# CONFIG_BACKLIGHT_LP855X is not set +# CONFIG_BACKLIGHT_GPIO is not set +# CONFIG_BACKLIGHT_LV5207LP is not set +# CONFIG_BACKLIGHT_BD6107 is not set +# CONFIG_BACKLIGHT_ARCXCNN is not set +CONFIG_BACKLIGHT_LED=y +# end of Backlight & LCD device support + +CONFIG_VIDEOMODE_HELPERS=y +CONFIG_HDMI=y + +# +# Console display driver support +# +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION is not set +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set +# end of Console display driver support + +# CONFIG_LOGO is not set +# end of Graphics support + +# CONFIG_DRM_ACCEL is not set +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_TIMER=y +CONFIG_SND_PCM=y +CONFIG_SND_PCM_ELD=y +CONFIG_SND_PCM_IEC958=y +CONFIG_SND_DMAENGINE_PCM=y +CONFIG_SND_HWDEP=y +CONFIG_SND_SEQ_DEVICE=y +CONFIG_SND_RAWMIDI=y +CONFIG_SND_JACK=y +CONFIG_SND_JACK_INPUT_DEV=y +# CONFIG_SND_OSSEMUL is not set +CONFIG_SND_PCM_TIMER=y +CONFIG_SND_HRTIMER=y +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_MAX_CARDS=32 +# CONFIG_SND_SUPPORT_OLD_API is not set +CONFIG_SND_PROC_FS=y +# CONFIG_SND_VERBOSE_PROCFS is not set +CONFIG_SND_VERBOSE_PRINTK=y +CONFIG_SND_CTL_FAST_LOOKUP=y +# CONFIG_SND_DEBUG is not set +# CONFIG_SND_CTL_INPUT_VALIDATION is not set +CONFIG_SND_SEQUENCER=y +CONFIG_SND_SEQ_DUMMY=y +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +CONFIG_SND_SEQ_MIDI_EVENT=y +CONFIG_SND_SEQ_MIDI=y +# CONFIG_SND_SEQ_UMP is not set +# CONFIG_SND_DRIVERS is not set +# CONFIG_SND_PCI is not set + +# +# HD-Audio +# +# end of HD-Audio + +CONFIG_SND_HDA_PREALLOC_SIZE=64 +# CONFIG_SND_SPI is not set +CONFIG_SND_USB=y +CONFIG_SND_USB_AUDIO=y +# CONFIG_SND_USB_AUDIO_MIDI_V2 is not set +CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=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_USB_POD is not set +# CONFIG_SND_USB_PODHD is not set +# CONFIG_SND_USB_TONEPORT is not set +# CONFIG_SND_USB_VARIAX is not set +CONFIG_SND_SOC=y +CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y +# CONFIG_SND_SOC_ADI is not set +# CONFIG_SND_SOC_AMD_ACP is not set +# CONFIG_SND_AMD_ACP_CONFIG is not set +# CONFIG_SND_ATMEL_SOC is not set +# CONFIG_SND_BCM63XX_I2S_WHISTLER 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=y +# CONFIG_SND_SOC_FSL_MQS is not set +# CONFIG_SND_SOC_FSL_AUDMIX 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_FSL_MICFIL is not set +# CONFIG_SND_SOC_FSL_XCVR is not set +CONFIG_SND_SOC_FSL_UTILS=y +# CONFIG_SND_SOC_IMX_AUDMUX is not set +# end of SoC Audio for Freescale CPUs + +# CONFIG_SND_SOC_CHV3_I2S is not set +# CONFIG_SND_I2S_HI6210_I2S is not set +# CONFIG_SND_SOC_IMG is not set +# CONFIG_SND_SOC_MTK_BTCVSD is not set +CONFIG_SND_SOC_ROCKCHIP=y +CONFIG_SND_SOC_ROCKCHIP_I2S=y +CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=y +CONFIG_SND_SOC_ROCKCHIP_PDM=y +CONFIG_SND_SOC_ROCKCHIP_SPDIF=y +# CONFIG_SND_SOC_ROCKCHIP_MAX98090 is not set +# CONFIG_SND_SOC_ROCKCHIP_RT5645 is not set +# CONFIG_SND_SOC_RK3288_HDMI_ANALOG is not set +# CONFIG_SND_SOC_RK3399_GRU_SOUND is not set +# CONFIG_SND_SOC_SOF_TOPLEVEL is not set + +# +# STMicroelectronics STM32 SOC audio support +# +# end of STMicroelectronics STM32 SOC audio support + +# CONFIG_SND_SOC_XILINX_I2S is not set +# CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set +# CONFIG_SND_SOC_XILINX_SPDIF is not set +# CONFIG_SND_SOC_XTFPGA_I2S is not set +CONFIG_SND_SOC_I2C_AND_SPI=y + +# +# CODEC drivers +# +# CONFIG_SND_SOC_AC97_CODEC is not set +# CONFIG_SND_SOC_ADAU1372_I2C is not set +# CONFIG_SND_SOC_ADAU1372_SPI is not set +# CONFIG_SND_SOC_ADAU1701 is not set +# CONFIG_SND_SOC_ADAU1761_I2C is not set +# CONFIG_SND_SOC_ADAU1761_SPI is not set +# CONFIG_SND_SOC_ADAU7002 is not set +# CONFIG_SND_SOC_ADAU7118_HW is not set +# CONFIG_SND_SOC_ADAU7118_I2C is not set +# CONFIG_SND_SOC_AK4104 is not set +# CONFIG_SND_SOC_AK4118 is not set +# CONFIG_SND_SOC_AK4375 is not set +# CONFIG_SND_SOC_AK4458 is not set +# CONFIG_SND_SOC_AK4554 is not set +# CONFIG_SND_SOC_AK4613 is not set +# CONFIG_SND_SOC_AK4642 is not set +# CONFIG_SND_SOC_AK5386 is not set +# CONFIG_SND_SOC_AK5558 is not set +# CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_AUDIO_IIO_AUX is not set +# CONFIG_SND_SOC_AW8738 is not set +# CONFIG_SND_SOC_AW88395 is not set +# CONFIG_SND_SOC_AW88261 is not set +# CONFIG_SND_SOC_BD28623 is not set +# CONFIG_SND_SOC_BT_SCO is not set +# CONFIG_SND_SOC_CHV3_CODEC is not set +# CONFIG_SND_SOC_CS35L32 is not set +# CONFIG_SND_SOC_CS35L33 is not set +# CONFIG_SND_SOC_CS35L34 is not set +# CONFIG_SND_SOC_CS35L35 is not set +# CONFIG_SND_SOC_CS35L36 is not set +# CONFIG_SND_SOC_CS35L41_SPI is not set +# CONFIG_SND_SOC_CS35L41_I2C is not set +# CONFIG_SND_SOC_CS35L45_SPI is not set +# CONFIG_SND_SOC_CS35L45_I2C is not set +# CONFIG_SND_SOC_CS35L56_I2C is not set +# CONFIG_SND_SOC_CS35L56_SPI is not set +# CONFIG_SND_SOC_CS42L42 is not set +# CONFIG_SND_SOC_CS42L51_I2C is not set +# CONFIG_SND_SOC_CS42L52 is not set +# CONFIG_SND_SOC_CS42L56 is not set +# CONFIG_SND_SOC_CS42L73 is not set +# CONFIG_SND_SOC_CS42L83 is not set +# CONFIG_SND_SOC_CS4234 is not set +# CONFIG_SND_SOC_CS4265 is not set +# CONFIG_SND_SOC_CS4270 is not set +# CONFIG_SND_SOC_CS4271_I2C is not set +# CONFIG_SND_SOC_CS4271_SPI is not set +# CONFIG_SND_SOC_CS42XX8_I2C is not set +# CONFIG_SND_SOC_CS43130 is not set +# CONFIG_SND_SOC_CS4341 is not set +# CONFIG_SND_SOC_CS4349 is not set +# CONFIG_SND_SOC_CS53L30 is not set +# CONFIG_SND_SOC_CX2072X is not set +# CONFIG_SND_SOC_DA7213 is not set +# CONFIG_SND_SOC_DMIC is not set +CONFIG_SND_SOC_HDMI_CODEC=m +# CONFIG_SND_SOC_ES7134 is not set +# CONFIG_SND_SOC_ES7241 is not set +CONFIG_SND_SOC_ES8316=y +# CONFIG_SND_SOC_ES8326 is not set +# CONFIG_SND_SOC_ES8328_I2C is not set +# CONFIG_SND_SOC_ES8328_SPI is not set +# CONFIG_SND_SOC_GTM601 is not set +# CONFIG_SND_SOC_HDA is not set +# CONFIG_SND_SOC_ICS43432 is not set +# CONFIG_SND_SOC_IDT821034 is not set +# CONFIG_SND_SOC_INNO_RK3036 is not set +# CONFIG_SND_SOC_MAX98088 is not set +CONFIG_SND_SOC_MAX98090=y +# CONFIG_SND_SOC_MAX98357A is not set +# CONFIG_SND_SOC_MAX98504 is not set +# CONFIG_SND_SOC_MAX9867 is not set +# CONFIG_SND_SOC_MAX98927 is not set +# CONFIG_SND_SOC_MAX98520 is not set +# CONFIG_SND_SOC_MAX98373_I2C is not set +# CONFIG_SND_SOC_MAX98388 is not set +# CONFIG_SND_SOC_MAX98390 is not set +# CONFIG_SND_SOC_MAX98396 is not set +# CONFIG_SND_SOC_MAX9860 is not set +# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set +# CONFIG_SND_SOC_PCM1681 is not set +# CONFIG_SND_SOC_PCM1789_I2C is not set +# CONFIG_SND_SOC_PCM179X_I2C is not set +# CONFIG_SND_SOC_PCM179X_SPI is not set +# CONFIG_SND_SOC_PCM186X_I2C is not set +# CONFIG_SND_SOC_PCM186X_SPI is not set +# CONFIG_SND_SOC_PCM3060_I2C is not set +# CONFIG_SND_SOC_PCM3060_SPI is not set +# CONFIG_SND_SOC_PCM3168A_I2C is not set +# CONFIG_SND_SOC_PCM3168A_SPI is not set +# CONFIG_SND_SOC_PCM5102A is not set +# CONFIG_SND_SOC_PCM512x_I2C is not set +# CONFIG_SND_SOC_PCM512x_SPI is not set +# CONFIG_SND_SOC_PEB2466 is not set +# CONFIG_SND_SOC_RK3328 is not set +CONFIG_SND_SOC_RK817=y +# CONFIG_SND_SOC_RT5616 is not set +# CONFIG_SND_SOC_RT5631 is not set +# CONFIG_SND_SOC_RT5640 is not set +# CONFIG_SND_SOC_RT5659 is not set +# CONFIG_SND_SOC_RT9120 is not set +# CONFIG_SND_SOC_SGTL5000 is not set +CONFIG_SND_SOC_SIMPLE_AMPLIFIER=y +# CONFIG_SND_SOC_SIMPLE_MUX is not set +# CONFIG_SND_SOC_SMA1303 is not set +CONFIG_SND_SOC_SPDIF=y +# CONFIG_SND_SOC_SRC4XXX_I2C is not set +# CONFIG_SND_SOC_SSM2305 is not set +# CONFIG_SND_SOC_SSM2518 is not set +# CONFIG_SND_SOC_SSM2602_SPI is not set +# CONFIG_SND_SOC_SSM2602_I2C is not set +# CONFIG_SND_SOC_SSM3515 is not set +# CONFIG_SND_SOC_SSM4567 is not set +# CONFIG_SND_SOC_STA32X is not set +# CONFIG_SND_SOC_STA350 is not set +# CONFIG_SND_SOC_STI_SAS is not set +# CONFIG_SND_SOC_TAS2552 is not set +# CONFIG_SND_SOC_TAS2562 is not set +# CONFIG_SND_SOC_TAS2764 is not set +# CONFIG_SND_SOC_TAS2770 is not set +# CONFIG_SND_SOC_TAS2780 is not set +# CONFIG_SND_SOC_TAS2781_I2C is not set +# CONFIG_SND_SOC_TAS5086 is not set +# CONFIG_SND_SOC_TAS571X is not set +# CONFIG_SND_SOC_TAS5720 is not set +# CONFIG_SND_SOC_TAS5805M is not set +# CONFIG_SND_SOC_TAS6424 is not set +# CONFIG_SND_SOC_TDA7419 is not set +# CONFIG_SND_SOC_TFA9879 is not set +# CONFIG_SND_SOC_TFA989X is not set +# CONFIG_SND_SOC_TLV320ADC3XXX is not set +# CONFIG_SND_SOC_TLV320AIC23_I2C is not set +# CONFIG_SND_SOC_TLV320AIC23_SPI is not set +# CONFIG_SND_SOC_TLV320AIC31XX is not set +# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set +# CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set +# CONFIG_SND_SOC_TLV320AIC3X_I2C is not set +# CONFIG_SND_SOC_TLV320AIC3X_SPI is not set +# CONFIG_SND_SOC_TLV320ADCX140 is not set +CONFIG_SND_SOC_TS3A227E=y +# CONFIG_SND_SOC_TSCS42XX is not set +# CONFIG_SND_SOC_TSCS454 is not set +# CONFIG_SND_SOC_UDA1334 is not set +# CONFIG_SND_SOC_WM8510 is not set +# CONFIG_SND_SOC_WM8523 is not set +# CONFIG_SND_SOC_WM8524 is not set +# CONFIG_SND_SOC_WM8580 is not set +# CONFIG_SND_SOC_WM8711 is not set +# CONFIG_SND_SOC_WM8728 is not set +# CONFIG_SND_SOC_WM8731_I2C is not set +# CONFIG_SND_SOC_WM8731_SPI is not set +# CONFIG_SND_SOC_WM8737 is not set +# CONFIG_SND_SOC_WM8741 is not set +# CONFIG_SND_SOC_WM8750 is not set +# CONFIG_SND_SOC_WM8753 is not set +# CONFIG_SND_SOC_WM8770 is not set +# CONFIG_SND_SOC_WM8776 is not set +# CONFIG_SND_SOC_WM8782 is not set +# CONFIG_SND_SOC_WM8804_I2C is not set +# CONFIG_SND_SOC_WM8804_SPI is not set +# CONFIG_SND_SOC_WM8903 is not set +# CONFIG_SND_SOC_WM8904 is not set +# CONFIG_SND_SOC_WM8940 is not set +# CONFIG_SND_SOC_WM8960 is not set +# CONFIG_SND_SOC_WM8961 is not set +# CONFIG_SND_SOC_WM8962 is not set +# CONFIG_SND_SOC_WM8974 is not set +# CONFIG_SND_SOC_WM8978 is not set +# CONFIG_SND_SOC_WM8985 is not set +# CONFIG_SND_SOC_ZL38060 is not set +# CONFIG_SND_SOC_MAX9759 is not set +# CONFIG_SND_SOC_MT6351 is not set +# CONFIG_SND_SOC_MT6358 is not set +# CONFIG_SND_SOC_MT6660 is not set +# CONFIG_SND_SOC_NAU8315 is not set +# CONFIG_SND_SOC_NAU8540 is not set +# CONFIG_SND_SOC_NAU8810 is not set +# CONFIG_SND_SOC_NAU8821 is not set +# CONFIG_SND_SOC_NAU8822 is not set +# CONFIG_SND_SOC_NAU8824 is not set +# CONFIG_SND_SOC_TPA6130A2 is not set +# CONFIG_SND_SOC_LPASS_WSA_MACRO is not set +# CONFIG_SND_SOC_LPASS_VA_MACRO is not set +# CONFIG_SND_SOC_LPASS_RX_MACRO is not set +# CONFIG_SND_SOC_LPASS_TX_MACRO is not set +# end of CODEC drivers + +CONFIG_SND_SIMPLE_CARD_UTILS=y +CONFIG_SND_SIMPLE_CARD=y +CONFIG_SND_AUDIO_GRAPH_CARD=y +CONFIG_SND_AUDIO_GRAPH_CARD2=y +CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE=y +CONFIG_SND_TEST_COMPONENT=y +CONFIG_HID_SUPPORT=y +CONFIG_HID=y +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HIDRAW=y +CONFIG_UHID=y +CONFIG_HID_GENERIC=y + +# +# Special HID drivers +# +CONFIG_HID_A4TECH=y +# CONFIG_HID_ACCUTOUCH is not set +CONFIG_HID_ACRUX=y +# CONFIG_HID_ACRUX_FF is not set +CONFIG_HID_APPLE=y +CONFIG_HID_APPLEIR=y +# CONFIG_HID_ASUS is not set +CONFIG_HID_AUREAL=y +CONFIG_HID_BELKIN=y +CONFIG_HID_BETOP_FF=y +# CONFIG_HID_BIGBEN_FF is not set +CONFIG_HID_CHERRY=y +CONFIG_HID_CHICONY=y +CONFIG_HID_CORSAIR=y +# CONFIG_HID_COUGAR is not set +# CONFIG_HID_MACALLY is not set +CONFIG_HID_PRODIKEYS=y +# CONFIG_HID_CMEDIA is not set +CONFIG_HID_CP2112=y +# CONFIG_HID_CREATIVE_SB0540 is not set +CONFIG_HID_CYPRESS=y +CONFIG_HID_DRAGONRISE=y +CONFIG_DRAGONRISE_FF=y +CONFIG_HID_EMS_FF=y +# CONFIG_HID_ELAN is not set +CONFIG_HID_ELECOM=y +CONFIG_HID_ELO=y +# CONFIG_HID_EVISION is not set +CONFIG_HID_EZKEY=y +# CONFIG_HID_FT260 is not set +CONFIG_HID_GEMBIRD=y +CONFIG_HID_GFRM=y +# CONFIG_HID_GLORIOUS is not set +CONFIG_HID_HOLTEK=y +CONFIG_HOLTEK_FF=y +# CONFIG_HID_GOOGLE_STADIA_FF is not set +# CONFIG_HID_VIVALDI is not set +CONFIG_HID_GT683R=y +CONFIG_HID_KEYTOUCH=y +CONFIG_HID_KYE=y +CONFIG_HID_UCLOGIC=y +CONFIG_HID_WALTOP=y +# CONFIG_HID_VIEWSONIC is not set +# CONFIG_HID_VRC2 is not set +# CONFIG_HID_XIAOMI is not set +CONFIG_HID_GYRATION=y +CONFIG_HID_ICADE=y +# CONFIG_HID_ITE is not set +# CONFIG_HID_JABRA is not set +CONFIG_HID_TWINHAN=y +CONFIG_HID_KENSINGTON=y +CONFIG_HID_LCPOWER=y +CONFIG_HID_LED=y +CONFIG_HID_LENOVO=y +# CONFIG_HID_LETSKETCH is not set +CONFIG_HID_LOGITECH=y +CONFIG_HID_LOGITECH_DJ=y +CONFIG_HID_LOGITECH_HIDPP=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGIG940_FF=y +CONFIG_LOGIWHEELS_FF=y +CONFIG_HID_MAGICMOUSE=y +# CONFIG_HID_MALTRON is not set +# CONFIG_HID_MAYFLASH is not set +# CONFIG_HID_MEGAWORLD_FF is not set +# CONFIG_HID_REDRAGON is not set +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y +CONFIG_HID_MULTITOUCH=y +# CONFIG_HID_NINTENDO is not set +# CONFIG_HID_NTI is not set +CONFIG_HID_NTRIG=y +# CONFIG_HID_NVIDIA_SHIELD is not set +CONFIG_HID_ORTEK=y +CONFIG_HID_PANTHERLORD=y +CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PENMOUNT=y +CONFIG_HID_PETALYNX=y +# CONFIG_HID_PICOLCD is not set +CONFIG_HID_PLANTRONICS=y +# CONFIG_HID_PXRC is not set +# CONFIG_HID_RAZER is not set +CONFIG_HID_PRIMAX=y +# CONFIG_HID_RETRODE is not set +CONFIG_HID_ROCCAT=y +CONFIG_HID_SAITEK=y +CONFIG_HID_SAMSUNG=y +# CONFIG_HID_SEMITEK is not set +# CONFIG_HID_SIGMAMICRO is not set +CONFIG_HID_SONY=y +# CONFIG_SONY_FF is not set +CONFIG_HID_SPEEDLINK=y +# CONFIG_HID_STEAM is not set +CONFIG_HID_STEELSERIES=y +CONFIG_HID_SUNPLUS=y +CONFIG_HID_RMI=y +CONFIG_HID_GREENASIA=y +CONFIG_GREENASIA_FF=y +CONFIG_HID_SMARTJOYPLUS=y +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_HID_TIVO=y +CONFIG_HID_TOPSEED=y +# CONFIG_HID_TOPRE is not set +CONFIG_HID_THINGM=y +CONFIG_HID_THRUSTMASTER=y +CONFIG_THRUSTMASTER_FF=y +# CONFIG_HID_UDRAW_PS3 is not set +# CONFIG_HID_U2FZERO is not set +CONFIG_HID_WACOM=y +CONFIG_HID_WIIMOTE=y +CONFIG_HID_XINMO=y +CONFIG_HID_ZEROPLUS=y +CONFIG_ZEROPLUS_FF=y +CONFIG_HID_ZYDACRON=y +CONFIG_HID_SENSOR_HUB=y +CONFIG_HID_SENSOR_CUSTOM_SENSOR=y +CONFIG_HID_ALPS=y +# CONFIG_HID_MCP2221 is not set +# end of Special HID drivers + +# +# HID-BPF support +# +# end of HID-BPF support + +# +# USB HID support +# +CONFIG_USB_HID=y +# CONFIG_HID_PID is not set +CONFIG_USB_HIDDEV=y +# end of USB HID support + +CONFIG_I2C_HID=y +# CONFIG_I2C_HID_OF is not set +# CONFIG_I2C_HID_OF_ELAN is not set +CONFIG_I2C_HID_OF_GOODIX=y +CONFIG_I2C_HID_CORE=y +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_COMMON=y +# CONFIG_USB_LED_TRIG is not set +# CONFIG_USB_ULPI_BUS is not set +# CONFIG_USB_CONN_GPIO is not set +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB=y +CONFIG_USB_PCI=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + +# +# Miscellaneous USB options +# +# CONFIG_USB_DEFAULT_PERSIST is not set +# CONFIG_USB_FEW_INIT_RETRIES is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_OTG=y +CONFIG_USB_OTG_PRODUCTLIST=y +# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set +CONFIG_USB_OTG_FSM=y +CONFIG_USB_LEDS_TRIGGER_USBPORT=y +CONFIG_USB_AUTOSUSPEND_DELAY=2 +CONFIG_USB_MON=y + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +CONFIG_USB_XHCI_HCD=y +# CONFIG_USB_XHCI_DBGCAP is not set +CONFIG_USB_XHCI_PCI=y +# CONFIG_USB_XHCI_PCI_RENESAS is not set +CONFIG_USB_XHCI_PLATFORM=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_EHCI_PCI=y +# CONFIG_USB_EHCI_FSL is not set +CONFIG_USB_EHCI_HCD_PLATFORM=y +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_MAX3421_HCD is not set +CONFIG_USB_OHCI_HCD=y +# CONFIG_USB_OHCI_HCD_PCI is not set +# CONFIG_USB_OHCI_HCD_SSB is not set +CONFIG_USB_OHCI_HCD_PLATFORM=y +# CONFIG_USB_UHCI_HCD is not set +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_HCD_BCMA is not set +# CONFIG_USB_HCD_SSB is not set +# CONFIG_USB_HCD_TEST_MODE is not set + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=y +# CONFIG_USB_PRINTER is not set +CONFIG_USB_WDM=y +# 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=y +CONFIG_REALTEK_AUTOPM=y +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=y +CONFIG_USB_UAS=y + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USBIP_CORE is not set + +# +# USB dual-mode controller drivers +# +# CONFIG_USB_CDNS_SUPPORT is not set +# CONFIG_USB_MUSB_HDRC is not set +CONFIG_USB_DWC3=y +# CONFIG_USB_DWC3_HOST is not set +# CONFIG_USB_DWC3_GADGET is not set +CONFIG_USB_DWC3_DUAL_ROLE=y + +# +# Platform Glue Driver Support +# +CONFIG_USB_DWC3_HAPS=y +CONFIG_USB_DWC3_OF_SIMPLE=y +CONFIG_USB_DWC2=y +# CONFIG_USB_DWC2_HOST is not set + +# +# Gadget/Dual-role mode requires USB Gadget support to be enabled +# +# CONFIG_USB_DWC2_PERIPHERAL is not set +CONFIG_USB_DWC2_DUAL_ROLE=y +# CONFIG_USB_DWC2_PCI is not set +# CONFIG_USB_DWC2_DEBUG is not set +# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set +# CONFIG_USB_CHIPIDEA is not set +# CONFIG_USB_ISP1760 is not set + +# +# USB port drivers +# +CONFIG_USB_SERIAL=y +# CONFIG_USB_SERIAL_CONSOLE is not set +CONFIG_USB_SERIAL_GENERIC=y +# CONFIG_USB_SERIAL_SIMPLE is not set +# CONFIG_USB_SERIAL_AIRCABLE is not set +# CONFIG_USB_SERIAL_ARK3116 is not set +# CONFIG_USB_SERIAL_BELKIN is not set +CONFIG_USB_SERIAL_CH341=y +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +CONFIG_USB_SERIAL_CP210X=y +# CONFIG_USB_SERIAL_CYPRESS_M8 is not set +# CONFIG_USB_SERIAL_EMPEG is not set +CONFIG_USB_SERIAL_FTDI_SIO=y +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_EDGEPORT_TI is not set +# CONFIG_USB_SERIAL_F81232 is not set +# CONFIG_USB_SERIAL_F8153X is not set +# CONFIG_USB_SERIAL_GARMIN is not set +# CONFIG_USB_SERIAL_IPW is not set +# CONFIG_USB_SERIAL_IUU is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +CONFIG_USB_SERIAL_KEYSPAN=y +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_KOBIL_SCT is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_METRO is not set +# CONFIG_USB_SERIAL_MOS7720 is not set +# CONFIG_USB_SERIAL_MOS7840 is not set +# CONFIG_USB_SERIAL_MXUPORT is not set +# CONFIG_USB_SERIAL_NAVMAN is not set +CONFIG_USB_SERIAL_PL2303=y +CONFIG_USB_SERIAL_OTI6858=y +# CONFIG_USB_SERIAL_QCAUX is not set +CONFIG_USB_SERIAL_QUALCOMM=y +# CONFIG_USB_SERIAL_SPCP8X5 is not set +# CONFIG_USB_SERIAL_SAFE is not set +CONFIG_USB_SERIAL_SIERRAWIRELESS=y +# CONFIG_USB_SERIAL_SYMBOL is not set +# CONFIG_USB_SERIAL_TI is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +CONFIG_USB_SERIAL_WWAN=y +CONFIG_USB_SERIAL_OPTION=y +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_SERIAL_OPTICON is not set +# CONFIG_USB_SERIAL_XSENS_MT is not set +# CONFIG_USB_SERIAL_WISHBONE is not set +# CONFIG_USB_SERIAL_SSU100 is not set +# CONFIG_USB_SERIAL_QT2 is not set +# CONFIG_USB_SERIAL_UPD78F0730 is not set +# CONFIG_USB_SERIAL_XR is not set +# CONFIG_USB_SERIAL_DEBUG 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_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_APPLE_MFI_FASTCHARGE is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_EHSET_TEST_FIXTURE is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_YUREX is not set +CONFIG_USB_EZUSB_FX2=y +# CONFIG_USB_HUB_USB251XB is not set +# CONFIG_USB_HSIC_USB3503 is not set +# CONFIG_USB_HSIC_USB4604 is not set +# CONFIG_USB_LINK_LAYER_TEST is not set +# CONFIG_USB_CHAOSKEY is not set +# CONFIG_USB_ONBOARD_HUB is not set + +# +# USB Physical Layer drivers +# +CONFIG_USB_PHY=y +CONFIG_NOP_USB_XCEIV=y +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_USB_ISP1301 is not set +# CONFIG_USB_ULPI is not set +# end of USB Physical Layer drivers + +CONFIG_USB_GADGET=y +# CONFIG_USB_GADGET_DEBUG is not set +CONFIG_USB_GADGET_DEBUG_FILES=y +# CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_VBUS_DRAW=500 +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 +CONFIG_U_SERIAL_CONSOLE=y + +# +# USB Peripheral Controller +# +# CONFIG_USB_GR_UDC is not set +# CONFIG_USB_R8A66597 is not set +# CONFIG_USB_PXA27X is not set +# CONFIG_USB_MV_UDC is not set +# CONFIG_USB_MV_U3D is not set +# CONFIG_USB_SNP_UDC_PLAT is not set +# CONFIG_USB_M66592 is not set +# CONFIG_USB_BDC_UDC is not set +# CONFIG_USB_AMD5536UDC is not set +# CONFIG_USB_NET2272 is not set +# CONFIG_USB_NET2280 is not set +# CONFIG_USB_GOKU is not set +# CONFIG_USB_EG20T is not set +# CONFIG_USB_GADGET_XILINX is not set +# CONFIG_USB_MAX3420_UDC is not set +# CONFIG_USB_DUMMY_HCD is not set +# end of USB Peripheral Controller + +CONFIG_USB_LIBCOMPOSITE=y +CONFIG_USB_F_ACM=y +CONFIG_USB_U_SERIAL=y +CONFIG_USB_F_SERIAL=m +CONFIG_USB_F_OBEX=m +CONFIG_USB_F_MASS_STORAGE=y +CONFIG_USB_F_FS=y +CONFIG_USB_F_UVC=y +CONFIG_USB_CONFIGFS=y +# CONFIG_USB_CONFIGFS_SERIAL is not set +CONFIG_USB_CONFIGFS_ACM=y +# CONFIG_USB_CONFIGFS_OBEX is not set +# CONFIG_USB_CONFIGFS_NCM is not set +# CONFIG_USB_CONFIGFS_ECM is not set +# CONFIG_USB_CONFIGFS_ECM_SUBSET is not set +# CONFIG_USB_CONFIGFS_RNDIS is not set +# CONFIG_USB_CONFIGFS_EEM is not set +CONFIG_USB_CONFIGFS_MASS_STORAGE=y +# CONFIG_USB_CONFIGFS_F_LB_SS is not set +CONFIG_USB_CONFIGFS_F_FS=y +# CONFIG_USB_CONFIGFS_F_UAC1 is not set +# CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set +# CONFIG_USB_CONFIGFS_F_UAC2 is not set +# CONFIG_USB_CONFIGFS_F_MIDI is not set +# CONFIG_USB_CONFIGFS_F_MIDI2 is not set +# CONFIG_USB_CONFIGFS_F_HID is not set +CONFIG_USB_CONFIGFS_F_UVC=y +# CONFIG_USB_CONFIGFS_F_PRINTER is not set + +# +# USB Gadget precomposed configurations +# +# 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=m +CONFIG_USB_FUNCTIONFS=m +# CONFIG_USB_FUNCTIONFS_ETH is not set +# CONFIG_USB_FUNCTIONFS_RNDIS is not set +CONFIG_USB_FUNCTIONFS_GENERIC=y +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_G_SERIAL=m +# CONFIG_USB_MIDI_GADGET is not set +# CONFIG_USB_G_PRINTER is not set +# CONFIG_USB_CDC_COMPOSITE is not set +# CONFIG_USB_G_ACM_MS is not set +# CONFIG_USB_G_MULTI is not set +# CONFIG_USB_G_HID is not set +# CONFIG_USB_G_DBGP is not set +# CONFIG_USB_G_WEBCAM is not set +# CONFIG_USB_RAW_GADGET is not set +# end of USB Gadget precomposed configurations + +CONFIG_TYPEC=y +CONFIG_TYPEC_TCPM=y +# CONFIG_TYPEC_TCPCI is not set +CONFIG_TYPEC_FUSB302=y +# CONFIG_TYPEC_UCSI is not set +# CONFIG_TYPEC_TPS6598X is not set +# CONFIG_TYPEC_ANX7411 is not set +# CONFIG_TYPEC_RT1719 is not set +# CONFIG_TYPEC_HD3SS3220 is not set +# CONFIG_TYPEC_STUSB160X is not set +# CONFIG_TYPEC_WUSB3801 is not set + +# +# USB Type-C Multiplexer/DeMultiplexer Switch support +# +# CONFIG_TYPEC_MUX_FSA4480 is not set +# CONFIG_TYPEC_MUX_GPIO_SBU is not set +# CONFIG_TYPEC_MUX_PI3USB30532 is not set +# CONFIG_TYPEC_MUX_NB7VPQ904M is not set +# end of USB Type-C Multiplexer/DeMultiplexer Switch support + +# +# USB Type-C Alternate Mode drivers +# +CONFIG_TYPEC_DP_ALTMODE=y +# CONFIG_TYPEC_NVIDIA_ALTMODE is not set +# end of USB Type-C Alternate Mode drivers + +CONFIG_USB_ROLE_SWITCH=y +CONFIG_MMC=y +CONFIG_PWRSEQ_EMMC=y +# CONFIG_PWRSEQ_SD8787 is not set +CONFIG_PWRSEQ_SIMPLE=y +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_MINORS=32 +# CONFIG_SDIO_UART is not set +CONFIG_MMC_TEST=y + +# +# MMC/SD/SDIO Host Controller Drivers +# +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_ARMMMCI is not set +CONFIG_MMC_SDHCI=y +# CONFIG_MMC_SDHCI_PCI is not set +CONFIG_MMC_SDHCI_PLTFM=y +# CONFIG_MMC_SDHCI_OF_ARASAN is not set +# CONFIG_MMC_SDHCI_OF_AT91 is not set +# CONFIG_MMC_SDHCI_OF_DWCMSHC is not set +# CONFIG_MMC_SDHCI_CADENCE is not set +# CONFIG_MMC_SDHCI_F_SDH30 is not set +# CONFIG_MMC_SDHCI_MILBEAUT is not set +# CONFIG_MMC_TIFM_SD is not set +# CONFIG_MMC_SPI is not set +# CONFIG_MMC_CB710 is not set +# CONFIG_MMC_VIA_SDMMC is not set +CONFIG_MMC_DW=y +CONFIG_MMC_DW_PLTFM=y +# CONFIG_MMC_DW_BLUEFIELD is not set +# CONFIG_MMC_DW_EXYNOS is not set +# CONFIG_MMC_DW_HI3798CV200 is not set +# CONFIG_MMC_DW_K3 is not set +# CONFIG_MMC_DW_PCI is not set +CONFIG_MMC_DW_ROCKCHIP=y +# CONFIG_MMC_VUB300 is not set +# CONFIG_MMC_USHC is not set +# CONFIG_MMC_USDHI6ROL0 is not set +# CONFIG_MMC_CQHCI is not set +# CONFIG_MMC_HSQ is not set +# CONFIG_MMC_TOSHIBA_PCI is not set +# CONFIG_MMC_MTK is not set +# CONFIG_MMC_SDHCI_XENON is not set +# CONFIG_MMC_SDHCI_OMAP is not set +# CONFIG_MMC_SDHCI_AM654 is not set +# CONFIG_SCSI_UFSHCD is not set +# CONFIG_MEMSTICK is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +# CONFIG_LEDS_CLASS_FLASH is not set +# CONFIG_LEDS_CLASS_MULTICOLOR is not set +# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set + +# +# LED drivers +# +# CONFIG_LEDS_AN30259A is not set +# CONFIG_LEDS_AW200XX is not set +# CONFIG_LEDS_AW2013 is not set +# CONFIG_LEDS_BCM6328 is not set +# CONFIG_LEDS_BCM6358 is not set +# CONFIG_LEDS_CR0014114 is not set +# CONFIG_LEDS_EL15203000 is not set +# CONFIG_LEDS_LM3530 is not set +# CONFIG_LEDS_LM3532 is not set +# CONFIG_LEDS_LM3642 is not set +# CONFIG_LEDS_LM3692X is not set +# CONFIG_LEDS_PCA9532 is not set +CONFIG_LEDS_GPIO=y +# CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_LP3952 is not set +# CONFIG_LEDS_LP50XX is not set +# CONFIG_LEDS_LP55XX_COMMON is not set +# CONFIG_LEDS_LP8860 is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_PCA963X is not set +# CONFIG_LEDS_PCA995X is not set +# CONFIG_LEDS_DAC124S085 is not set +CONFIG_LEDS_PWM=y +# CONFIG_LEDS_REGULATOR is not set +# CONFIG_LEDS_BD2606MVV is not set +# CONFIG_LEDS_BD2802 is not set +# CONFIG_LEDS_LT3593 is not set +# CONFIG_LEDS_TCA6507 is not set +# CONFIG_LEDS_TLC591XX is not set +# CONFIG_LEDS_LM355x is not set +# CONFIG_LEDS_IS31FL319X is not set +CONFIG_LEDS_IS31FL32XX=y + +# +# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) +# +# CONFIG_LEDS_BLINKM is not set +CONFIG_LEDS_SYSCON=y +# CONFIG_LEDS_MLXREG is not set +# CONFIG_LEDS_USER is not set +# CONFIG_LEDS_SPI_BYTE is not set +# CONFIG_LEDS_LM3697 is not set + +# +# Flash and Torch LED drivers +# + +# +# RGB LED drivers +# + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_ONESHOT=y +CONFIG_LEDS_TRIGGER_DISK=y +# CONFIG_LEDS_TRIGGER_MTD is not set +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +CONFIG_LEDS_TRIGGER_CPU=y +# CONFIG_LEDS_TRIGGER_ACTIVITY is not set +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y + +# +# iptables trigger is under Netfilter config (LED target) +# +# CONFIG_LEDS_TRIGGER_TRANSIENT is not set +# CONFIG_LEDS_TRIGGER_CAMERA is not set +# CONFIG_LEDS_TRIGGER_PANIC is not set +# CONFIG_LEDS_TRIGGER_NETDEV is not set +# CONFIG_LEDS_TRIGGER_PATTERN is not set +# CONFIG_LEDS_TRIGGER_AUDIO is not set +# CONFIG_LEDS_TRIGGER_TTY is not set + +# +# Simple LED drivers +# +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +CONFIG_EDAC_SUPPORT=y +# CONFIG_EDAC is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +# CONFIG_RTC_SYSTOHC is not set +# CONFIG_RTC_DEBUG is not set +CONFIG_RTC_NVMEM=y + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +# CONFIG_RTC_INTF_PROC is not set +# CONFIG_RTC_INTF_DEV is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_ABB5ZES3 is not set +# CONFIG_RTC_DRV_ABEOZ9 is not set +# CONFIG_RTC_DRV_ABX80X is not set +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +CONFIG_RTC_DRV_HYM8563=y +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_NCT3018Y is not set +CONFIG_RTC_DRV_RK808=y +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_ISL12022 is not set +# CONFIG_RTC_DRV_ISL12026 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8523 is not set +# CONFIG_RTC_DRV_PCF85063 is not set +# CONFIG_RTC_DRV_PCF85363 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +# CONFIG_RTC_DRV_BQ32K is not set +# CONFIG_RTC_DRV_TPS6586X is not set +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +# CONFIG_RTC_DRV_RX8010 is not set +# CONFIG_RTC_DRV_RX8581 is not set +# CONFIG_RTC_DRV_RX8025 is not set +# CONFIG_RTC_DRV_EM3027 is not set +# CONFIG_RTC_DRV_RV3028 is not set +# CONFIG_RTC_DRV_RV3032 is not set +# CONFIG_RTC_DRV_RV8803 is not set +# CONFIG_RTC_DRV_SD3078 is not set + +# +# SPI RTC drivers +# +# CONFIG_RTC_DRV_M41T93 is not set +# CONFIG_RTC_DRV_M41T94 is not set +# CONFIG_RTC_DRV_DS1302 is not set +# CONFIG_RTC_DRV_DS1305 is not set +# CONFIG_RTC_DRV_DS1343 is not set +# CONFIG_RTC_DRV_DS1347 is not set +# CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_MAX6916 is not set +# CONFIG_RTC_DRV_R9701 is not set +# CONFIG_RTC_DRV_RX4581 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_MAX6902 is not set +# CONFIG_RTC_DRV_PCF2123 is not set +# CONFIG_RTC_DRV_MCP795 is not set +CONFIG_RTC_I2C_AND_SPI=y + +# +# SPI and I2C RTC drivers +# +# CONFIG_RTC_DRV_DS3232 is not set +# CONFIG_RTC_DRV_PCF2127 is not set +# CONFIG_RTC_DRV_RV3029C2 is not set +# CONFIG_RTC_DRV_RX6110 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_DS1685_FAMILY is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_DS2404 is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_MSM6242 is not set +# CONFIG_RTC_DRV_RP5C01 is not set +# CONFIG_RTC_DRV_ZYNQMP is not set + +# +# on-CPU RTC drivers +# +# CONFIG_RTC_DRV_PL030 is not set +# CONFIG_RTC_DRV_PL031 is not set +# CONFIG_RTC_DRV_CADENCE is not set +# CONFIG_RTC_DRV_FTRTC010 is not set +# CONFIG_RTC_DRV_R7301 is not set + +# +# HID Sensor RTC drivers +# +# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set +# CONFIG_RTC_DRV_GOLDFISH is not set +CONFIG_DMADEVICES=y +# CONFIG_DMADEVICES_DEBUG is not set + +# +# DMA Devices +# +CONFIG_DMA_ENGINE=y +CONFIG_DMA_OF=y +# CONFIG_ALTERA_MSGDMA is not set +# CONFIG_AMBA_PL08X is not set +# CONFIG_BCM_SBA_RAID is not set +# CONFIG_DW_AXI_DMAC is not set +# CONFIG_FSL_EDMA is not set +# CONFIG_FSL_QDMA is not set +# CONFIG_INTEL_IDMA64 is not set +# CONFIG_MV_XOR_V2 is not set +CONFIG_PL330_DMA=y +# CONFIG_PLX_DMA is not set +# CONFIG_XILINX_DMA is not set +# CONFIG_XILINX_XDMA is not set +# CONFIG_XILINX_ZYNQMP_DMA is not set +# CONFIG_XILINX_ZYNQMP_DPDMA is not set +# CONFIG_QCOM_HIDMA_MGMT is not set +# CONFIG_QCOM_HIDMA is not set +# CONFIG_DW_DMAC is not set +# CONFIG_DW_DMAC_PCI is not set +# CONFIG_DW_EDMA is not set +# CONFIG_SF_PDMA is not set + +# +# DMA Clients +# +# CONFIG_ASYNC_TX_DMA is not set +# CONFIG_DMATEST is not set + +# +# DMABUF options +# +CONFIG_SYNC_FILE=y +# CONFIG_SW_SYNC is not set +CONFIG_UDMABUF=y +# CONFIG_DMABUF_MOVE_NOTIFY is not set +# CONFIG_DMABUF_DEBUG is not set +# CONFIG_DMABUF_SELFTESTS is not set +CONFIG_DMABUF_HEAPS=y +# CONFIG_DMABUF_SYSFS_STATS is not set +CONFIG_DMABUF_HEAPS_SYSTEM=y +# end of DMABUF options + +# CONFIG_UIO is not set +# CONFIG_VFIO is not set +# CONFIG_VIRT_DRIVERS is not set +# CONFIG_VIRTIO_MENU is not set +# CONFIG_VDPA is not set +# CONFIG_VHOST_MENU is not set + +# +# Microsoft Hyper-V guest support +# +# end of Microsoft Hyper-V guest support + +# CONFIG_GREYBUS is not set +# CONFIG_COMEDI is not set +CONFIG_STAGING=y +# CONFIG_PRISM2_USB is not set +# CONFIG_RTL8192U is not set +# CONFIG_RTLLIB is not set +CONFIG_RTL8723BS=m +CONFIG_R8712U=m +# CONFIG_RTS5208 is not set +# CONFIG_VT6655 is not set +# CONFIG_VT6656 is not set + +# +# IIO staging drivers +# + +# +# Accelerometers +# +# CONFIG_ADIS16203 is not set +# CONFIG_ADIS16240 is not set +# end of Accelerometers + +# +# Analog to digital converters +# +# CONFIG_AD7816 is not set +# end of Analog to digital converters + +# +# Analog digital bi-direction converters +# +# CONFIG_ADT7316 is not set +# end of Analog digital bi-direction converters + +# +# Direct Digital Synthesis +# +# CONFIG_AD9832 is not set +# CONFIG_AD9834 is not set +# end of Direct Digital Synthesis + +# +# Network Analyzer, Impedance Converters +# +# CONFIG_AD5933 is not set +# end of Network Analyzer, Impedance Converters + +# +# Resolver to digital converters +# +# CONFIG_AD2S1210 is not set +# end of Resolver to digital converters +# end of IIO staging drivers + +# CONFIG_FB_SM750 is not set +CONFIG_STAGING_MEDIA=y +# CONFIG_DVB_AV7110 is not set +# CONFIG_VIDEO_MAX96712 is not set +CONFIG_VIDEO_ROCKCHIP_VDEC=y +# CONFIG_STAGING_MEDIA_DEPRECATED is not set +# CONFIG_STAGING_BOARD is not set +# CONFIG_LTE_GDM724X is not set +# CONFIG_FB_TFT is not set +# CONFIG_KS7010 is not set +# CONFIG_PI433 is not set +# CONFIG_XIL_AXIS_FIFO is not set +# CONFIG_FIELDBUS_DEV is not set +# CONFIG_QLGE is not set +# CONFIG_VME_BUS is not set +# CONFIG_GOLDFISH is not set +CONFIG_CHROME_PLATFORMS=y +# CONFIG_CROS_EC is not set +# CONFIG_CROS_HPS_I2C is not set +# CONFIG_MELLANOX_PLATFORM is not set +# CONFIG_SURFACE_PLATFORMS is not set +CONFIG_HAVE_CLK=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_COMMON_CLK=y + +# +# Clock driver for ARM Reference designs +# +# CONFIG_CLK_ICST is not set +# CONFIG_CLK_SP810 is not set +# end of Clock driver for ARM Reference designs + +# CONFIG_LMK04832 is not set +# CONFIG_COMMON_CLK_MAX9485 is not set +CONFIG_COMMON_CLK_RK808=y +CONFIG_COMMON_CLK_SCMI=y +CONFIG_COMMON_CLK_SCPI=y +# CONFIG_COMMON_CLK_SI5341 is not set +# CONFIG_COMMON_CLK_SI5351 is not set +# CONFIG_COMMON_CLK_SI514 is not set +# CONFIG_COMMON_CLK_SI544 is not set +# CONFIG_COMMON_CLK_SI570 is not set +# CONFIG_COMMON_CLK_CDCE706 is not set +# CONFIG_COMMON_CLK_CDCE925 is not set +# CONFIG_COMMON_CLK_CS2000_CP is not set +# CONFIG_COMMON_CLK_AXI_CLKGEN is not set +CONFIG_COMMON_CLK_XGENE=y +CONFIG_COMMON_CLK_PWM=y +# CONFIG_COMMON_CLK_RS9_PCIE is not set +# CONFIG_COMMON_CLK_SI521XX is not set +# CONFIG_COMMON_CLK_VC3 is not set +# CONFIG_COMMON_CLK_VC5 is not set +# CONFIG_COMMON_CLK_VC7 is not set +CONFIG_COMMON_CLK_FIXED_MMIO=y +CONFIG_COMMON_CLK_ROCKCHIP=y +CONFIG_CLK_PX30=y +# CONFIG_CLK_RK3308 is not set +# CONFIG_CLK_RK3328 is not set +# CONFIG_CLK_RK3368 is not set +# CONFIG_CLK_RK3399 is not set +CONFIG_CLK_RK3568=y +CONFIG_CLK_RK3588=y +# CONFIG_XILINX_VCU is not set +# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_TIMER_OF=y +CONFIG_TIMER_PROBE=y +CONFIG_CLKSRC_MMIO=y +CONFIG_ROCKCHIP_TIMER=y +CONFIG_ARM_ARCH_TIMER=y +CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y +# CONFIG_FSL_ERRATUM_A008585 is not set +# CONFIG_HISILICON_ERRATUM_161010101 is not set +# CONFIG_ARM64_ERRATUM_858921 is not set +# end of Clock Source drivers + +CONFIG_MAILBOX=y +CONFIG_ARM_MHU=y +# CONFIG_ARM_MHU_V2 is not set +CONFIG_PLATFORM_MHU=y +# CONFIG_PL320_MBOX is not set +CONFIG_ROCKCHIP_MBOX=y +# CONFIG_ALTERA_MBOX is not set +# CONFIG_MAILBOX_TEST is not set +CONFIG_IOMMU_IOVA=y +CONFIG_IOMMU_API=y +CONFIG_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# +CONFIG_IOMMU_IO_PGTABLE=y +CONFIG_IOMMU_IO_PGTABLE_LPAE=y +# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set +# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set +# CONFIG_IOMMU_IO_PGTABLE_DART is not set +# end of Generic IOMMU Pagetable Support + +# CONFIG_IOMMU_DEBUGFS is not set +CONFIG_IOMMU_DEFAULT_DMA_STRICT=y +# CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set +# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set +CONFIG_OF_IOMMU=y +CONFIG_IOMMU_DMA=y +# CONFIG_IOMMUFD is not set +CONFIG_ROCKCHIP_IOMMU=y +CONFIG_ARM_SMMU=y +# CONFIG_ARM_SMMU_LEGACY_DT_BINDINGS is not set +CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT=y +CONFIG_ARM_SMMU_V3=y +# CONFIG_ARM_SMMU_V3_SVA is not set + +# +# Remoteproc drivers +# +# CONFIG_REMOTEPROC is not set +# end of Remoteproc drivers + +# +# Rpmsg drivers +# +# CONFIG_RPMSG_QCOM_GLINK_RPM is not set +# CONFIG_RPMSG_VIRTIO is not set +# end of Rpmsg drivers + +# CONFIG_SOUNDWIRE is not set + +# +# SOC (System On Chip) specific Drivers +# + +# +# Amlogic SoC drivers +# +# end of Amlogic SoC drivers + +# +# Broadcom SoC drivers +# +# CONFIG_SOC_BRCMSTB is not set +# end of Broadcom SoC drivers + +# +# NXP/Freescale QorIQ SoC drivers +# +# CONFIG_QUICC_ENGINE is not set +# CONFIG_FSL_RCPM is not set +# end of NXP/Freescale QorIQ SoC drivers + +# +# fujitsu SoC drivers +# +# end of fujitsu SoC drivers + +# +# i.MX SoC drivers +# +# end of i.MX SoC drivers + +# +# Enable LiteX SoC Builder specific drivers +# +# CONFIG_LITEX_SOC_CONTROLLER is not set +# end of Enable LiteX SoC Builder specific drivers + +# CONFIG_WPCM450_SOC is not set + +# +# Qualcomm SoC drivers +# +# end of Qualcomm SoC drivers + +CONFIG_ROCKCHIP_GRF=y +CONFIG_ROCKCHIP_IODOMAIN=y +CONFIG_ROCKCHIP_PM_DOMAINS=y +# CONFIG_SOC_TI is not set + +# +# Xilinx SoC drivers +# +# end of Xilinx SoC drivers +# end of SOC (System On Chip) specific Drivers + +CONFIG_PM_DEVFREQ=y + +# +# DEVFREQ Governors +# +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y +CONFIG_DEVFREQ_GOV_PERFORMANCE=y +CONFIG_DEVFREQ_GOV_POWERSAVE=y +# CONFIG_DEVFREQ_GOV_USERSPACE is not set +# CONFIG_DEVFREQ_GOV_PASSIVE is not set + +# +# DEVFREQ Drivers +# +CONFIG_ARM_RK3399_DMC_DEVFREQ=y +CONFIG_PM_DEVFREQ_EVENT=y +CONFIG_DEVFREQ_EVENT_ROCKCHIP_DFI=y +CONFIG_EXTCON=y + +# +# Extcon Device Drivers +# +# CONFIG_EXTCON_ADC_JACK is not set +# CONFIG_EXTCON_FSA9480 is not set +# CONFIG_EXTCON_GPIO is not set +# CONFIG_EXTCON_MAX3355 is not set +# CONFIG_EXTCON_PTN5150 is not set +# CONFIG_EXTCON_RT8973A is not set +# CONFIG_EXTCON_SM5502 is not set +# CONFIG_EXTCON_USB_GPIO is not set +# CONFIG_EXTCON_USBC_TUSB320 is not set +CONFIG_MEMORY=y +# CONFIG_ARM_PL172_MPMC is not set +CONFIG_IIO=y +CONFIG_IIO_BUFFER=y +CONFIG_IIO_BUFFER_CB=y +# CONFIG_IIO_BUFFER_DMA is not set +# CONFIG_IIO_BUFFER_DMAENGINE is not set +CONFIG_IIO_BUFFER_HW_CONSUMER=y +CONFIG_IIO_KFIFO_BUF=y +CONFIG_IIO_TRIGGERED_BUFFER=y +CONFIG_IIO_CONFIGFS=y +CONFIG_IIO_TRIGGER=y +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +CONFIG_IIO_SW_DEVICE=y +CONFIG_IIO_SW_TRIGGER=y +CONFIG_IIO_TRIGGERED_EVENT=y + +# +# Accelerometers +# +# CONFIG_ADIS16201 is not set +# CONFIG_ADIS16209 is not set +# CONFIG_ADXL313_I2C is not set +# CONFIG_ADXL313_SPI is not set +# CONFIG_ADXL345_I2C is not set +# CONFIG_ADXL345_SPI is not set +# CONFIG_ADXL355_I2C is not set +# CONFIG_ADXL355_SPI is not set +# CONFIG_ADXL367_SPI is not set +# CONFIG_ADXL367_I2C is not set +# CONFIG_ADXL372_SPI is not set +# CONFIG_ADXL372_I2C is not set +# CONFIG_BMA180 is not set +# CONFIG_BMA220 is not set +# CONFIG_BMA400 is not set +# CONFIG_BMC150_ACCEL is not set +# CONFIG_BMI088_ACCEL is not set +# CONFIG_DA280 is not set +# CONFIG_DA311 is not set +# CONFIG_DMARD06 is not set +# CONFIG_DMARD09 is not set +# CONFIG_DMARD10 is not set +# CONFIG_FXLS8962AF_I2C is not set +# CONFIG_FXLS8962AF_SPI is not set +# CONFIG_HID_SENSOR_ACCEL_3D is not set +# CONFIG_IIO_ST_ACCEL_3AXIS is not set +# CONFIG_IIO_KX022A_SPI is not set +# CONFIG_IIO_KX022A_I2C is not set +# CONFIG_KXSD9 is not set +# CONFIG_KXCJK1013 is not set +# CONFIG_MC3230 is not set +# CONFIG_MMA7455_I2C is not set +# CONFIG_MMA7455_SPI is not set +# CONFIG_MMA7660 is not set +# CONFIG_MMA8452 is not set +# CONFIG_MMA9551 is not set +# CONFIG_MMA9553 is not set +# CONFIG_MSA311 is not set +# CONFIG_MXC4005 is not set +# CONFIG_MXC6255 is not set +# CONFIG_SCA3000 is not set +# CONFIG_SCA3300 is not set +# CONFIG_STK8312 is not set +# CONFIG_STK8BA50 is not set +# end of Accelerometers + +# +# Analog to digital converters +# +# CONFIG_AD4130 is not set +# CONFIG_AD7091R5 is not set +# CONFIG_AD7124 is not set +# CONFIG_AD7192 is not set +# CONFIG_AD7266 is not set +# CONFIG_AD7280 is not set +# CONFIG_AD7291 is not set +# CONFIG_AD7292 is not set +# CONFIG_AD7298 is not set +# CONFIG_AD7476 is not set +# CONFIG_AD7606_IFACE_PARALLEL is not set +# CONFIG_AD7606_IFACE_SPI is not set +# CONFIG_AD7766 is not set +# CONFIG_AD7768_1 is not set +# CONFIG_AD7780 is not set +# CONFIG_AD7791 is not set +# CONFIG_AD7793 is not set +# CONFIG_AD7887 is not set +# CONFIG_AD7923 is not set +# CONFIG_AD7949 is not set +# CONFIG_AD799X is not set +# CONFIG_ADI_AXI_ADC is not set +# CONFIG_CC10001_ADC is not set +# CONFIG_ENVELOPE_DETECTOR is not set +# CONFIG_HI8435 is not set +# CONFIG_HX711 is not set +# CONFIG_INA2XX_ADC is not set +# CONFIG_LTC2471 is not set +# CONFIG_LTC2485 is not set +# CONFIG_LTC2496 is not set +# CONFIG_LTC2497 is not set +# CONFIG_MAX1027 is not set +# CONFIG_MAX11100 is not set +# CONFIG_MAX1118 is not set +# CONFIG_MAX11205 is not set +# CONFIG_MAX11410 is not set +# CONFIG_MAX1241 is not set +# CONFIG_MAX1363 is not set +# CONFIG_MAX9611 is not set +# CONFIG_MCP320X is not set +# CONFIG_MCP3422 is not set +# CONFIG_MCP3911 is not set +# CONFIG_NAU7802 is not set +CONFIG_ROCKCHIP_SARADC=y +# CONFIG_RICHTEK_RTQ6056 is not set +# CONFIG_SD_ADC_MODULATOR is not set +# CONFIG_TI_ADC081C is not set +# CONFIG_TI_ADC0832 is not set +# CONFIG_TI_ADC084S021 is not set +# CONFIG_TI_ADC12138 is not set +# CONFIG_TI_ADC108S102 is not set +# CONFIG_TI_ADC128S052 is not set +# CONFIG_TI_ADC161S626 is not set +# CONFIG_TI_ADS1015 is not set +# CONFIG_TI_ADS7924 is not set +# CONFIG_TI_ADS1100 is not set +# CONFIG_TI_ADS7950 is not set +# CONFIG_TI_ADS8344 is not set +# CONFIG_TI_ADS8688 is not set +# CONFIG_TI_ADS124S08 is not set +# CONFIG_TI_ADS131E08 is not set +# CONFIG_TI_LMP92064 is not set +# CONFIG_TI_TLC4541 is not set +# CONFIG_TI_TSC2046 is not set +# CONFIG_VF610_ADC is not set +# CONFIG_XILINX_XADC is not set +# end of Analog to digital converters + +# +# Analog to digital and digital to analog converters +# +# CONFIG_AD74115 is not set +# CONFIG_AD74413R is not set +# end of Analog to digital and digital to analog converters + +# +# Analog Front Ends +# +# CONFIG_IIO_RESCALE is not set +# end of Analog Front Ends + +# +# Amplifiers +# +# CONFIG_AD8366 is not set +# CONFIG_ADA4250 is not set +# CONFIG_HMC425 is not set +# end of Amplifiers + +# +# Capacitance to digital converters +# +# CONFIG_AD7150 is not set +# CONFIG_AD7746 is not set +# end of Capacitance to digital converters + +# +# Chemical Sensors +# +# CONFIG_ATLAS_PH_SENSOR is not set +# CONFIG_ATLAS_EZO_SENSOR is not set +# CONFIG_BME680 is not set +# CONFIG_CCS811 is not set +# CONFIG_IAQCORE is not set +# CONFIG_PMS7003 is not set +# CONFIG_SCD30_CORE is not set +# CONFIG_SCD4X is not set +# CONFIG_SENSIRION_SGP30 is not set +# CONFIG_SENSIRION_SGP40 is not set +# CONFIG_SPS30_I2C is not set +# CONFIG_SPS30_SERIAL is not set +# CONFIG_SENSEAIR_SUNRISE_CO2 is not set +# CONFIG_VZ89X is not set +# end of Chemical Sensors + +# +# Hid Sensor IIO Common +# +# CONFIG_HID_SENSOR_IIO_COMMON is not set +# end of Hid Sensor IIO Common + +# +# IIO SCMI Sensors +# +# CONFIG_IIO_SCMI is not set +# end of IIO SCMI Sensors + +# +# SSP Sensor Common +# +# CONFIG_IIO_SSP_SENSORHUB is not set +# end of SSP Sensor Common + +# +# Digital to analog converters +# +# CONFIG_AD3552R is not set +# CONFIG_AD5064 is not set +# CONFIG_AD5360 is not set +# CONFIG_AD5380 is not set +# CONFIG_AD5421 is not set +# CONFIG_AD5446 is not set +# CONFIG_AD5449 is not set +# CONFIG_AD5592R is not set +# CONFIG_AD5593R is not set +# CONFIG_AD5504 is not set +# CONFIG_AD5624R_SPI is not set +# CONFIG_LTC2688 is not set +# CONFIG_AD5686_SPI is not set +# CONFIG_AD5696_I2C is not set +# CONFIG_AD5755 is not set +# CONFIG_AD5758 is not set +# CONFIG_AD5761 is not set +# CONFIG_AD5764 is not set +# CONFIG_AD5766 is not set +# CONFIG_AD5770R is not set +# CONFIG_AD5791 is not set +# CONFIG_AD7293 is not set +# CONFIG_AD7303 is not set +# CONFIG_AD8801 is not set +# CONFIG_DPOT_DAC is not set +# CONFIG_DS4424 is not set +# CONFIG_LTC1660 is not set +# CONFIG_LTC2632 is not set +# CONFIG_M62332 is not set +# CONFIG_MAX517 is not set +# CONFIG_MAX5522 is not set +# CONFIG_MAX5821 is not set +# CONFIG_MCP4725 is not set +# CONFIG_MCP4728 is not set +# CONFIG_MCP4922 is not set +# CONFIG_TI_DAC082S085 is not set +# CONFIG_TI_DAC5571 is not set +# CONFIG_TI_DAC7311 is not set +# CONFIG_TI_DAC7612 is not set +# CONFIG_VF610_DAC is not set +# end of Digital to analog converters + +# +# IIO dummy driver +# +# CONFIG_IIO_SIMPLE_DUMMY is not set +# end of IIO dummy driver + +# +# Filters +# +# CONFIG_ADMV8818 is not set +# end of Filters + +# +# Frequency Synthesizers DDS/PLL +# + +# +# Clock Generator/Distribution +# +# CONFIG_AD9523 is not set +# end of Clock Generator/Distribution + +# +# Phase-Locked Loop (PLL) frequency synthesizers +# +# CONFIG_ADF4350 is not set +# CONFIG_ADF4371 is not set +# CONFIG_ADF4377 is not set +# CONFIG_ADMV1013 is not set +# CONFIG_ADMV1014 is not set +# CONFIG_ADMV4420 is not set +# CONFIG_ADRF6780 is not set +# end of Phase-Locked Loop (PLL) frequency synthesizers +# end of Frequency Synthesizers DDS/PLL + +# +# Digital gyroscope sensors +# +# CONFIG_ADIS16080 is not set +# CONFIG_ADIS16130 is not set +# CONFIG_ADIS16136 is not set +# CONFIG_ADIS16260 is not set +# CONFIG_ADXRS290 is not set +# CONFIG_ADXRS450 is not set +# CONFIG_BMG160 is not set +# CONFIG_FXAS21002C is not set +# CONFIG_HID_SENSOR_GYRO_3D is not set +# CONFIG_MPU3050_I2C is not set +# CONFIG_IIO_ST_GYRO_3AXIS is not set +# CONFIG_ITG3200 is not set +# end of Digital gyroscope sensors + +# +# Health Sensors +# + +# +# Heart Rate Monitors +# +# CONFIG_AFE4403 is not set +# CONFIG_AFE4404 is not set +# CONFIG_MAX30100 is not set +# CONFIG_MAX30102 is not set +# end of Heart Rate Monitors +# end of Health Sensors + +# +# Humidity sensors +# +# CONFIG_AM2315 is not set +# CONFIG_DHT11 is not set +# CONFIG_HDC100X is not set +# CONFIG_HDC2010 is not set +# CONFIG_HID_SENSOR_HUMIDITY is not set +# CONFIG_HTS221 is not set +# CONFIG_HTU21 is not set +# CONFIG_SI7005 is not set +# CONFIG_SI7020 is not set +# end of Humidity sensors + +# +# Inertial measurement units +# +# CONFIG_ADIS16400 is not set +# CONFIG_ADIS16460 is not set +# CONFIG_ADIS16475 is not set +# CONFIG_ADIS16480 is not set +# CONFIG_BMI160_I2C is not set +# CONFIG_BMI160_SPI is not set +# CONFIG_BOSCH_BNO055_SERIAL is not set +# CONFIG_BOSCH_BNO055_I2C is not set +# CONFIG_FXOS8700_I2C is not set +# CONFIG_FXOS8700_SPI is not set +# CONFIG_KMX61 is not set +# CONFIG_INV_ICM42600_I2C is not set +# CONFIG_INV_ICM42600_SPI is not set +# CONFIG_INV_MPU6050_I2C is not set +# CONFIG_INV_MPU6050_SPI is not set +# CONFIG_IIO_ST_LSM6DSX is not set +# CONFIG_IIO_ST_LSM9DS0 is not set +# end of Inertial measurement units + +# +# Light sensors +# +# CONFIG_ADJD_S311 is not set +# CONFIG_ADUX1020 is not set +# CONFIG_AL3010 is not set +# CONFIG_AL3320A is not set +# CONFIG_APDS9300 is not set +# CONFIG_APDS9960 is not set +# CONFIG_AS73211 is not set +# CONFIG_BH1750 is not set +# CONFIG_BH1780 is not set +# CONFIG_CM32181 is not set +# CONFIG_CM3232 is not set +# CONFIG_CM3323 is not set +# CONFIG_CM3605 is not set +# CONFIG_CM36651 is not set +# CONFIG_GP2AP002 is not set +# CONFIG_GP2AP020A00F is not set +CONFIG_SENSORS_ISL29018=y +# CONFIG_SENSORS_ISL29028 is not set +# CONFIG_ISL29125 is not set +# CONFIG_HID_SENSOR_ALS is not set +# CONFIG_HID_SENSOR_PROX is not set +# CONFIG_JSA1212 is not set +# CONFIG_ROHM_BU27008 is not set +# CONFIG_ROHM_BU27034 is not set +# CONFIG_RPR0521 is not set +# CONFIG_LTR501 is not set +# CONFIG_LTRF216A is not set +# CONFIG_LV0104CS is not set +# CONFIG_MAX44000 is not set +# CONFIG_MAX44009 is not set +# CONFIG_NOA1305 is not set +# CONFIG_OPT3001 is not set +# CONFIG_OPT4001 is not set +# CONFIG_PA12203001 is not set +# CONFIG_SI1133 is not set +# CONFIG_SI1145 is not set +# CONFIG_STK3310 is not set +# CONFIG_ST_UVIS25 is not set +# CONFIG_TCS3414 is not set +# CONFIG_TCS3472 is not set +CONFIG_SENSORS_TSL2563=y +CONFIG_TSL2583=y +# CONFIG_TSL2591 is not set +# CONFIG_TSL2772 is not set +# CONFIG_TSL4531 is not set +# CONFIG_US5182D is not set +# CONFIG_VCNL4000 is not set +# CONFIG_VCNL4035 is not set +# CONFIG_VEML6030 is not set +# CONFIG_VEML6070 is not set +# CONFIG_VL6180 is not set +# CONFIG_ZOPT2201 is not set +# end of Light sensors + +# +# Magnetometer sensors +# +# CONFIG_AK8974 is not set +# CONFIG_AK8975 is not set +# CONFIG_AK09911 is not set +# CONFIG_BMC150_MAGN_I2C is not set +# CONFIG_BMC150_MAGN_SPI is not set +# CONFIG_MAG3110 is not set +# CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set +# CONFIG_MMC35240 is not set +# CONFIG_IIO_ST_MAGN_3AXIS is not set +# CONFIG_SENSORS_HMC5843_I2C is not set +# CONFIG_SENSORS_HMC5843_SPI is not set +# CONFIG_SENSORS_RM3100_I2C is not set +# CONFIG_SENSORS_RM3100_SPI is not set +# CONFIG_TI_TMAG5273 is not set +# CONFIG_YAMAHA_YAS530 is not set +# end of Magnetometer sensors + +# +# Multiplexers +# +CONFIG_IIO_MUX=y +# end of Multiplexers + +# +# Inclinometer sensors +# +# CONFIG_HID_SENSOR_INCLINOMETER_3D is not set +# CONFIG_HID_SENSOR_DEVICE_ROTATION is not set +# end of Inclinometer sensors + +# +# Triggers - standalone +# +CONFIG_IIO_HRTIMER_TRIGGER=y +# CONFIG_IIO_INTERRUPT_TRIGGER is not set +# CONFIG_IIO_TIGHTLOOP_TRIGGER is not set +CONFIG_IIO_SYSFS_TRIGGER=y +# end of Triggers - standalone + +# +# Linear and angular position sensors +# +# CONFIG_HID_SENSOR_CUSTOM_INTEL_HINGE is not set +# end of Linear and angular position sensors + +# +# Digital potentiometers +# +# CONFIG_AD5110 is not set +# CONFIG_AD5272 is not set +# CONFIG_DS1803 is not set +# CONFIG_MAX5432 is not set +# CONFIG_MAX5481 is not set +# CONFIG_MAX5487 is not set +# CONFIG_MCP4018 is not set +# CONFIG_MCP4131 is not set +# CONFIG_MCP4531 is not set +# CONFIG_MCP41010 is not set +# CONFIG_TPL0102 is not set +# CONFIG_X9250 is not set +# end of Digital potentiometers + +# +# Digital potentiostats +# +# CONFIG_LMP91000 is not set +# end of Digital potentiostats + +# +# Pressure sensors +# +# CONFIG_ABP060MG is not set +# CONFIG_BMP280 is not set +# CONFIG_DLHL60D is not set +# CONFIG_DPS310 is not set +# CONFIG_HID_SENSOR_PRESS is not set +# CONFIG_HP03 is not set +# CONFIG_ICP10100 is not set +# CONFIG_MPL115_I2C is not set +# CONFIG_MPL115_SPI is not set +# CONFIG_MPL3115 is not set +# CONFIG_MPRLS0025PA is not set +# CONFIG_MS5611 is not set +# CONFIG_MS5637 is not set +# CONFIG_IIO_ST_PRESS is not set +# CONFIG_T5403 is not set +# CONFIG_HP206C is not set +# CONFIG_ZPA2326 is not set +# end of Pressure sensors + +# +# Lightning sensors +# +# CONFIG_AS3935 is not set +# end of Lightning sensors + +# +# Proximity and distance sensors +# +# CONFIG_IRSD200 is not set +# CONFIG_ISL29501 is not set +# CONFIG_LIDAR_LITE_V2 is not set +# CONFIG_MB1232 is not set +# CONFIG_PING is not set +# CONFIG_RFD77402 is not set +# CONFIG_SRF04 is not set +# CONFIG_SX9310 is not set +# CONFIG_SX9324 is not set +# CONFIG_SX9360 is not set +# CONFIG_SX9500 is not set +# CONFIG_SRF08 is not set +# CONFIG_VCNL3020 is not set +# CONFIG_VL53L0X_I2C is not set +# end of Proximity and distance sensors + +# +# Resolver to digital converters +# +# CONFIG_AD2S90 is not set +# CONFIG_AD2S1200 is not set +# end of Resolver to digital converters + +# +# Temperature sensors +# +# CONFIG_LTC2983 is not set +# CONFIG_MAXIM_THERMOCOUPLE is not set +# CONFIG_HID_SENSOR_TEMP is not set +# CONFIG_MLX90614 is not set +# CONFIG_MLX90632 is not set +# CONFIG_TMP006 is not set +# CONFIG_TMP007 is not set +# CONFIG_TMP117 is not set +# CONFIG_TSYS01 is not set +# CONFIG_TSYS02D is not set +# CONFIG_MAX30208 is not set +# CONFIG_MAX31856 is not set +# CONFIG_MAX31865 is not set +# end of Temperature sensors + +# CONFIG_NTB is not set +CONFIG_PWM=y +CONFIG_PWM_SYSFS=y +# CONFIG_PWM_DEBUG is not set +# CONFIG_PWM_ATMEL_TCB is not set +# CONFIG_PWM_CLK is not set +# CONFIG_PWM_DWC is not set +# CONFIG_PWM_FSL_FTM is not set +# CONFIG_PWM_PCA9685 is not set +CONFIG_PWM_ROCKCHIP=y +# CONFIG_PWM_XILINX is not set + +# +# IRQ chip support +# +CONFIG_IRQCHIP=y +CONFIG_ARM_GIC=y +CONFIG_ARM_GIC_MAX_NR=1 +CONFIG_ARM_GIC_V2M=y +CONFIG_ARM_GIC_V3=y +CONFIG_ARM_GIC_V3_ITS=y +CONFIG_ARM_GIC_V3_ITS_PCI=y +# CONFIG_AL_FIC is not set +# CONFIG_XILINX_INTC is not set +CONFIG_PARTITION_PERCPU=y +# end of IRQ chip support + +# CONFIG_IPACK_BUS is not set +CONFIG_ARCH_HAS_RESET_CONTROLLER=y +CONFIG_RESET_CONTROLLER=y +CONFIG_RESET_SCMI=y +# CONFIG_RESET_SIMPLE is not set +# CONFIG_RESET_TI_SYSCON is not set +# CONFIG_RESET_TI_TPS380X is not set + +# +# PHY Subsystem +# +CONFIG_GENERIC_PHY=y +CONFIG_GENERIC_PHY_MIPI_DPHY=y +# CONFIG_PHY_CAN_TRANSCEIVER is not set + +# +# PHY drivers for Broadcom platforms +# +# CONFIG_BCM_KONA_USB2_PHY is not set +# end of PHY drivers for Broadcom platforms + +# CONFIG_PHY_CADENCE_TORRENT is not set +# CONFIG_PHY_CADENCE_DPHY is not set +# CONFIG_PHY_CADENCE_DPHY_RX is not set +# CONFIG_PHY_CADENCE_SIERRA is not set +# CONFIG_PHY_CADENCE_SALVO is not set +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_PHY_LAN966X_SERDES is not set +# CONFIG_PHY_CPCAP_USB is not set +# CONFIG_PHY_MAPPHONE_MDM6600 is not set +# CONFIG_PHY_OCELOT_SERDES is not set +# CONFIG_PHY_RTK_RTD_USB2PHY is not set +# CONFIG_PHY_RTK_RTD_USB3PHY is not set +CONFIG_PHY_ROCKCHIP_DP=y +CONFIG_PHY_ROCKCHIP_DPHY_RX0=y +CONFIG_PHY_ROCKCHIP_EMMC=y +CONFIG_PHY_ROCKCHIP_INNO_HDMI=y +CONFIG_PHY_ROCKCHIP_INNO_USB2=y +CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY=y +CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y +CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=y +CONFIG_PHY_ROCKCHIP_PCIE=y +CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y +CONFIG_PHY_ROCKCHIP_TYPEC=y +CONFIG_PHY_ROCKCHIP_USB=y +# CONFIG_PHY_SAMSUNG_USB2 is not set +# end of PHY Subsystem + +# CONFIG_POWERCAP is not set +# CONFIG_MCB is not set + +# +# Performance monitor support +# +# CONFIG_ARM_CCI_PMU is not set +# CONFIG_ARM_CCN is not set +# CONFIG_ARM_CMN is not set +CONFIG_ARM_PMU=y +CONFIG_ARM_SMMU_V3_PMU=y +CONFIG_ARM_PMUV3=y +# CONFIG_ARM_DSU_PMU is not set +# CONFIG_ARM_SPE_PMU is not set +# CONFIG_HISI_PCIE_PMU is not set +# CONFIG_HNS3_PMU is not set +# CONFIG_ARM_CORESIGHT_PMU_ARCH_SYSTEM_PMU is not set +# end of Performance monitor support + +CONFIG_RAS=y +# CONFIG_USB4 is not set + +# +# Android +# +# CONFIG_ANDROID_BINDER_IPC is not set +# end of Android + +# CONFIG_LIBNVDIMM is not set +# CONFIG_DAX is not set +CONFIG_NVMEM=y +CONFIG_NVMEM_SYSFS=y + +# +# Layout Types +# +# CONFIG_NVMEM_LAYOUT_SL28_VPD is not set +# CONFIG_NVMEM_LAYOUT_ONIE_TLV is not set +# end of Layout Types + +# CONFIG_NVMEM_RMEM is not set +# CONFIG_NVMEM_ROCKCHIP_EFUSE is not set +# CONFIG_NVMEM_ROCKCHIP_OTP is not set +# CONFIG_NVMEM_U_BOOT_ENV is not set + +# +# HW tracing support +# +# CONFIG_STM is not set +# CONFIG_INTEL_TH is not set +# CONFIG_HISI_PTT is not set +# end of HW tracing support + +# CONFIG_FPGA is not set +# CONFIG_FSI is not set +# CONFIG_TEE is not set +CONFIG_MULTIPLEXER=y + +# +# Multiplexer drivers +# +# CONFIG_MUX_ADG792A is not set +# CONFIG_MUX_ADGS1408 is not set +CONFIG_MUX_GPIO=y +CONFIG_MUX_MMIO=y +# end of Multiplexer drivers + +CONFIG_PM_OPP=y +# CONFIG_SIOX is not set +# CONFIG_SLIMBUS is not set +# CONFIG_INTERCONNECT is not set +# CONFIG_COUNTER is not set +# CONFIG_MOST is not set +# CONFIG_PECI is not set +# CONFIG_HTE is not set +# CONFIG_CDX_BUS is not set +# end of Device Drivers + +# +# File systems +# +CONFIG_DCACHE_WORD_ACCESS=y +# CONFIG_VALIDATE_FS_PARSER is not set +CONFIG_FS_IOMAP=y +CONFIG_BUFFER_HEAD=y +CONFIG_LEGACY_DIRECT_IO=y +# CONFIG_EXT2_FS is not set +# CONFIG_EXT3_FS is not set +CONFIG_EXT4_FS=y +# CONFIG_EXT4_USE_FOR_EXT2 is not set +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=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=y +CONFIG_XFS_SUPPORT_V4=y +CONFIG_XFS_SUPPORT_ASCII_CI=y +# CONFIG_XFS_QUOTA is not set +# CONFIG_XFS_POSIX_ACL is not set +# CONFIG_XFS_RT is not set +# CONFIG_XFS_ONLINE_SCRUB is not set +# CONFIG_XFS_WARN is not set +# CONFIG_XFS_DEBUG is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_F2FS_FS is not set +CONFIG_FS_POSIX_ACL=y +CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set +CONFIG_FILE_LOCKING=y +# CONFIG_FS_ENCRYPTION is not set +# CONFIG_FS_VERITY is not set +CONFIG_FSNOTIFY=y +# CONFIG_DNOTIFY is not set +CONFIG_INOTIFY_USER=y +# CONFIG_FANOTIFY is not set +# CONFIG_QUOTA is not set +CONFIG_AUTOFS_FS=y +CONFIG_FUSE_FS=y +# CONFIG_CUSE is not set +# CONFIG_VIRTIO_FS is not set +CONFIG_OVERLAY_FS=y +# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set +CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y +# CONFIG_OVERLAY_FS_INDEX is not set +# CONFIG_OVERLAY_FS_XINO_AUTO is not set +# CONFIG_OVERLAY_FS_METACOPY is not set +# CONFIG_OVERLAY_FS_DEBUG is not set + +# +# Caches +# +CONFIG_NETFS_SUPPORT=y +# CONFIG_NETFS_STATS is not set +CONFIG_FSCACHE=y +# CONFIG_FSCACHE_STATS is not set +# CONFIG_FSCACHE_DEBUG is not set +# CONFIG_CACHEFILES is not set +# end of Caches + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +# CONFIG_UDF_FS is not set +# end of CD-ROM/DVD Filesystems + +# +# DOS/FAT/EXFAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="ascii" +# CONFIG_FAT_DEFAULT_UTF8 is not set +CONFIG_EXFAT_FS=y +CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8" +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS3_FS is not set +# end of DOS/FAT/EXFAT/NT Filesystems + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +# CONFIG_PROC_KCORE is not set +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +# CONFIG_PROC_CHILDREN is not set +CONFIG_KERNFS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +# CONFIG_TMPFS_INODE64 is not set +# CONFIG_TMPFS_QUOTA is not set +CONFIG_ARCH_SUPPORTS_HUGETLBFS=y +# CONFIG_HUGETLBFS is not set +CONFIG_ARCH_HAS_GIGANTIC_PAGE=y +CONFIG_CONFIGFS_FS=y +# end of Pseudo filesystems + +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ORANGEFS_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_ECRYPT_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_FILE_CACHE=y +# CONFIG_SQUASHFS_FILE_DIRECT is not set +CONFIG_SQUASHFS_DECOMP_SINGLE=y +# CONFIG_SQUASHFS_CHOICE_DECOMP_BY_MOUNT is not set +CONFIG_SQUASHFS_COMPILE_DECOMP_SINGLE=y +# CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI is not set +# CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI_PERCPU is not set +# CONFIG_SQUASHFS_XATTR is not set +CONFIG_SQUASHFS_ZLIB=y +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SQUASHFS_ZSTD=y +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +# CONFIG_SQUASHFS_EMBEDDED is not set +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +# 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_DEFAULT_KMSG_BYTES=10240 +CONFIG_PSTORE_COMPRESS=y +# CONFIG_PSTORE_CONSOLE is not set +# CONFIG_PSTORE_PMSG is not set +# CONFIG_PSTORE_RAM is not set +# CONFIG_PSTORE_BLK is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +# CONFIG_EROFS_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +# CONFIG_NFS_FS is not set +# CONFIG_NFSD is not set +# CONFIG_CEPH_FS is not set +# CONFIG_CIFS is not set +# CONFIG_SMB_SERVER is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf-8" +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 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ASCII=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_UNICODE is not set +CONFIG_IO_WQ=y +# end of File systems + +# +# Security options +# +CONFIG_KEYS=y +# CONFIG_KEYS_REQUEST_CACHE is not set +# CONFIG_PERSISTENT_KEYRINGS is not set +# CONFIG_BIG_KEYS is not set +# CONFIG_TRUSTED_KEYS is not set +# CONFIG_ENCRYPTED_KEYS is not set +# CONFIG_KEY_DH_OPERATIONS is not set +# CONFIG_KEY_NOTIFICATIONS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_NETWORK=y +# CONFIG_SECURITY_NETWORK_XFRM is not set +# CONFIG_SECURITY_PATH is not set +CONFIG_HARDENED_USERCOPY=y +# CONFIG_FORTIFY_SOURCE is not set +CONFIG_STATIC_USERMODEHELPER=y +CONFIG_STATIC_USERMODEHELPER_PATH="/sbin/usermode-helper" +# CONFIG_SECURITY_SMACK is not set +# CONFIG_SECURITY_TOMOYO is not set +# CONFIG_SECURITY_APPARMOR is not set +# CONFIG_SECURITY_LOADPIN is not set +# CONFIG_SECURITY_YAMA is not set +# CONFIG_SECURITY_SAFESETID is not set +# CONFIG_SECURITY_LOCKDOWN_LSM is not set +# CONFIG_SECURITY_LANDLOCK is not set +CONFIG_INTEGRITY=y +# CONFIG_INTEGRITY_SIGNATURE is not set +# CONFIG_IMA is not set +# CONFIG_EVM is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_LSM="selinux,integrity" + +# +# Kernel hardening options +# + +# +# Memory initialization +# +CONFIG_CC_HAS_AUTO_VAR_INIT_PATTERN=y +CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO_BARE=y +CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y +CONFIG_INIT_STACK_NONE=y +# CONFIG_INIT_STACK_ALL_PATTERN is not set +# CONFIG_INIT_STACK_ALL_ZERO is not set +# CONFIG_GCC_PLUGIN_STACKLEAK is not set +CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y +CONFIG_INIT_ON_FREE_DEFAULT_ON=y +CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y +# CONFIG_ZERO_CALL_USED_REGS is not set +# end of Memory initialization + +# +# Hardening of kernel data structures +# +# CONFIG_LIST_HARDENED is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# end of Hardening of kernel data structures + +CONFIG_RANDSTRUCT_NONE=y +# CONFIG_RANDSTRUCT_FULL is not set +# CONFIG_RANDSTRUCT_PERFORMANCE is not set +# end of Kernel hardening options +# end of Security options + +CONFIG_XOR_BLOCKS=y +CONFIG_ASYNC_CORE=y +CONFIG_ASYNC_MEMCPY=y +CONFIG_ASYNC_XOR=y +CONFIG_ASYNC_PQ=y +CONFIG_ASYNC_RAID6_RECOV=y +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_SIG2=y +CONFIG_CRYPTO_SKCIPHER=y +CONFIG_CRYPTO_SKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_RNG_DEFAULT=y +CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_AKCIPHER=y +CONFIG_CRYPTO_KPP2=y +CONFIG_CRYPTO_KPP=y +CONFIG_CRYPTO_ACOMP2=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_USER=y +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +CONFIG_CRYPTO_NULL=y +CONFIG_CRYPTO_NULL2=y +CONFIG_CRYPTO_PCRYPT=y +CONFIG_CRYPTO_CRYPTD=y +CONFIG_CRYPTO_AUTHENC=y +# CONFIG_CRYPTO_TEST is not set +CONFIG_CRYPTO_ENGINE=y +# end of Crypto core or helper + +# +# Public-key cryptography +# +CONFIG_CRYPTO_RSA=y +# CONFIG_CRYPTO_DH is not set +CONFIG_CRYPTO_ECC=y +CONFIG_CRYPTO_ECDH=y +# CONFIG_CRYPTO_ECDSA is not set +# CONFIG_CRYPTO_ECRDSA is not set +# CONFIG_CRYPTO_SM2 is not set +# CONFIG_CRYPTO_CURVE25519 is not set +# end of Public-key cryptography + +# +# Block ciphers +# +CONFIG_CRYPTO_AES=y +# CONFIG_CRYPTO_AES_TI is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_ARIA is not set +# 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_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_SM4_GENERIC is not set +# CONFIG_CRYPTO_TEA is not set +CONFIG_CRYPTO_TWOFISH=y +CONFIG_CRYPTO_TWOFISH_COMMON=y +# end of Block ciphers + +# +# Length-preserving ciphers and modes +# +# CONFIG_CRYPTO_ADIANTUM is not set +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_CHACHA20=y +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CFB=y +CONFIG_CRYPTO_CTR=y +CONFIG_CRYPTO_CTS=y +CONFIG_CRYPTO_ECB=y +# CONFIG_CRYPTO_HCTR2 is not set +# CONFIG_CRYPTO_KEYWRAP is not set +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_OFB is not set +# CONFIG_CRYPTO_PCBC is not set +CONFIG_CRYPTO_XTS=y +CONFIG_CRYPTO_NHPOLY1305=y +# end of Length-preserving ciphers and modes + +# +# AEAD (authenticated encryption with associated data) ciphers +# +# CONFIG_CRYPTO_AEGIS128 is not set +CONFIG_CRYPTO_CHACHA20POLY1305=y +CONFIG_CRYPTO_CCM=y +CONFIG_CRYPTO_GCM=y +CONFIG_CRYPTO_GENIV=y +CONFIG_CRYPTO_SEQIV=y +CONFIG_CRYPTO_ECHAINIV=y +CONFIG_CRYPTO_ESSIV=y +# end of AEAD (authenticated encryption with associated data) ciphers + +# +# Hashes, digests, and MACs +# +# CONFIG_CRYPTO_BLAKE2B is not set +CONFIG_CRYPTO_CMAC=y +CONFIG_CRYPTO_GHASH=y +CONFIG_CRYPTO_HMAC=y +# CONFIG_CRYPTO_MD4 is not set +CONFIG_CRYPTO_MD5=y +# CONFIG_CRYPTO_MICHAEL_MIC is not set +CONFIG_CRYPTO_POLY1305=y +# CONFIG_CRYPTO_RMD160 is not set +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA512=y +CONFIG_CRYPTO_SHA3=y +# CONFIG_CRYPTO_SM3_GENERIC is not set +# CONFIG_CRYPTO_STREEBOG is not set +# CONFIG_CRYPTO_VMAC is not set +# CONFIG_CRYPTO_WP512 is not set +CONFIG_CRYPTO_XCBC=y +# CONFIG_CRYPTO_XXHASH is not set +# end of Hashes, digests, and MACs + +# +# CRCs (cyclic redundancy checks) +# +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_CRC32=y +CONFIG_CRYPTO_CRCT10DIF=y +# CONFIG_CRYPTO_CRC64_ROCKSOFT is not set +# end of CRCs (cyclic redundancy checks) + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_LZO=y +# CONFIG_CRYPTO_842 is not set +CONFIG_CRYPTO_LZ4=y +CONFIG_CRYPTO_LZ4HC=y +CONFIG_CRYPTO_ZSTD=y +# end of Compression + +# +# Random number generation +# +CONFIG_CRYPTO_ANSI_CPRNG=y +CONFIG_CRYPTO_DRBG_MENU=y +CONFIG_CRYPTO_DRBG_HMAC=y +# CONFIG_CRYPTO_DRBG_HASH is not set +# CONFIG_CRYPTO_DRBG_CTR is not set +CONFIG_CRYPTO_DRBG=y +CONFIG_CRYPTO_JITTERENTROPY=y +# CONFIG_CRYPTO_JITTERENTROPY_TESTINTERFACE is not set +# end of Random number generation + +# +# Userspace interface +# +CONFIG_CRYPTO_USER_API=y +CONFIG_CRYPTO_USER_API_HASH=y +CONFIG_CRYPTO_USER_API_SKCIPHER=y +CONFIG_CRYPTO_USER_API_RNG=y +# CONFIG_CRYPTO_USER_API_RNG_CAVP is not set +CONFIG_CRYPTO_USER_API_AEAD=y +CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y +CONFIG_CRYPTO_STATS=y +# end of Userspace interface + +CONFIG_CRYPTO_HASH_INFO=y +CONFIG_CRYPTO_NHPOLY1305_NEON=y +CONFIG_CRYPTO_CHACHA20_NEON=y + +# +# Accelerated Cryptographic Algorithms for CPU (arm64) +# +CONFIG_CRYPTO_GHASH_ARM64_CE=y +CONFIG_CRYPTO_POLY1305_NEON=y +CONFIG_CRYPTO_SHA1_ARM64_CE=y +CONFIG_CRYPTO_SHA256_ARM64=y +CONFIG_CRYPTO_SHA2_ARM64_CE=y +CONFIG_CRYPTO_SHA512_ARM64=y +CONFIG_CRYPTO_SHA512_ARM64_CE=y +# CONFIG_CRYPTO_SHA3_ARM64 is not set +# CONFIG_CRYPTO_SM3_NEON is not set +# CONFIG_CRYPTO_SM3_ARM64_CE is not set +# CONFIG_CRYPTO_POLYVAL_ARM64_CE is not set +CONFIG_CRYPTO_AES_ARM64=y +CONFIG_CRYPTO_AES_ARM64_CE=y +CONFIG_CRYPTO_AES_ARM64_CE_BLK=y +CONFIG_CRYPTO_AES_ARM64_NEON_BLK=y +CONFIG_CRYPTO_AES_ARM64_BS=y +# CONFIG_CRYPTO_SM4_ARM64_CE is not set +# CONFIG_CRYPTO_SM4_ARM64_CE_BLK is not set +# CONFIG_CRYPTO_SM4_ARM64_NEON_BLK is not set +CONFIG_CRYPTO_AES_ARM64_CE_CCM=y +# CONFIG_CRYPTO_SM4_ARM64_CE_CCM is not set +# CONFIG_CRYPTO_SM4_ARM64_CE_GCM is not set +# CONFIG_CRYPTO_CRCT10DIF_ARM64_CE is not set +# end of Accelerated Cryptographic Algorithms for CPU (arm64) + +CONFIG_CRYPTO_HW=y +# CONFIG_CRYPTO_DEV_ATMEL_ECC is not set +# CONFIG_CRYPTO_DEV_ATMEL_SHA204A is not set +# CONFIG_CRYPTO_DEV_CCP is not set +# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set +# CONFIG_CRYPTO_DEV_QAT_DH895xCC is not set +# CONFIG_CRYPTO_DEV_QAT_C3XXX is not set +# CONFIG_CRYPTO_DEV_QAT_C62X is not set +# CONFIG_CRYPTO_DEV_QAT_4XXX is not set +# CONFIG_CRYPTO_DEV_QAT_DH895xCCVF is not set +# CONFIG_CRYPTO_DEV_QAT_C3XXXVF is not set +# CONFIG_CRYPTO_DEV_QAT_C62XVF is not set +# CONFIG_CRYPTO_DEV_CAVIUM_ZIP is not set +CONFIG_CRYPTO_DEV_ROCKCHIP=y +# CONFIG_CRYPTO_DEV_ROCKCHIP_DEBUG is not set +# CONFIG_CRYPTO_DEV_SAFEXCEL is not set +# CONFIG_CRYPTO_DEV_CCREE is not set +# CONFIG_CRYPTO_DEV_HISI_SEC is not set +# CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set +CONFIG_ASYMMETRIC_KEY_TYPE=y +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y +CONFIG_X509_CERTIFICATE_PARSER=y +# CONFIG_PKCS8_PRIVATE_KEY_PARSER is not set +CONFIG_PKCS7_MESSAGE_PARSER=y +# CONFIG_PKCS7_TEST_KEY is not set +# CONFIG_SIGNED_PE_FILE_VERIFICATION is not set +# CONFIG_FIPS_SIGNATURE_SELFTEST is not set + +# +# Certificates for signature checking +# +CONFIG_SYSTEM_TRUSTED_KEYRING=y +CONFIG_SYSTEM_TRUSTED_KEYS="" +# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set +# CONFIG_SECONDARY_TRUSTED_KEYRING is not set +# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set +# end of Certificates for signature checking + +CONFIG_BINARY_PRINTF=y + +# +# Library routines +# +CONFIG_RAID6_PQ=y +CONFIG_RAID6_PQ_BENCHMARK=y +CONFIG_LINEAR_RANGES=y +# CONFIG_PACKING is not set +CONFIG_BITREVERSE=y +CONFIG_HAVE_ARCH_BITREVERSE=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +CONFIG_CORDIC=y +# CONFIG_PRIME_NUMBERS is not set +CONFIG_RATIONAL=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +CONFIG_ARCH_HAS_FAST_MULTIPLIER=y +CONFIG_ARCH_USE_SYM_ANNOTATIONS=y +# CONFIG_INDIRECT_PIO is not set + +# +# Crypto library routines +# +CONFIG_CRYPTO_LIB_UTILS=y +CONFIG_CRYPTO_LIB_AES=y +CONFIG_CRYPTO_LIB_ARC4=y +CONFIG_CRYPTO_LIB_GF128MUL=y +CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y +CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=y +CONFIG_CRYPTO_LIB_CHACHA_GENERIC=y +CONFIG_CRYPTO_LIB_CHACHA=y +CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=y +CONFIG_CRYPTO_LIB_CURVE25519=y +CONFIG_CRYPTO_LIB_DES=y +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 +CONFIG_CRYPTO_ARCH_HAVE_LIB_POLY1305=y +CONFIG_CRYPTO_LIB_POLY1305_GENERIC=y +CONFIG_CRYPTO_LIB_POLY1305=y +CONFIG_CRYPTO_LIB_CHACHA20POLY1305=y +CONFIG_CRYPTO_LIB_SHA1=y +CONFIG_CRYPTO_LIB_SHA256=y +# end of Crypto library routines + +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +CONFIG_CRC_T10DIF=y +# CONFIG_CRC64_ROCKSOFT is not set +CONFIG_CRC_ITU_T=y +CONFIG_CRC32=y +# CONFIG_CRC32_SELFTEST is not set +CONFIG_CRC32_SLICEBY8=y +# CONFIG_CRC32_SLICEBY4 is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_BIT is not set +CONFIG_CRC64=m +# CONFIG_CRC4 is not set +CONFIG_CRC7=y +CONFIG_LIBCRC32C=y +# CONFIG_CRC8 is not set +CONFIG_XXHASH=y +CONFIG_AUDIT_ARCH_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_LZ4_COMPRESS=y +CONFIG_LZ4HC_COMPRESS=y +CONFIG_LZ4_DECOMPRESS=y +CONFIG_ZSTD_COMMON=y +CONFIG_ZSTD_COMPRESS=y +CONFIG_ZSTD_DECOMPRESS=y +CONFIG_XZ_DEC=y +# CONFIG_XZ_DEC_X86 is not set +# CONFIG_XZ_DEC_POWERPC is not set +# CONFIG_XZ_DEC_IA64 is not set +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +# CONFIG_XZ_DEC_SPARC is not set +# CONFIG_XZ_DEC_MICROLZMA is not set +CONFIG_XZ_DEC_BCJ=y +# CONFIG_XZ_DEC_TEST is not set +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_DECOMPRESS_XZ=y +CONFIG_DECOMPRESS_LZO=y +CONFIG_DECOMPRESS_LZ4=y +CONFIG_DECOMPRESS_ZSTD=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_XARRAY_MULTI=y +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +CONFIG_DMA_OPS=y +CONFIG_NEED_SG_DMA_FLAGS=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_DMA_DECLARE_COHERENT=y +CONFIG_ARCH_HAS_SETUP_DMA_OPS=y +CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS=y +CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y +CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU=y +CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y +CONFIG_SWIOTLB=y +# CONFIG_SWIOTLB_DYNAMIC is not set +CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC=y +# CONFIG_DMA_RESTRICTED_POOL is not set +CONFIG_DMA_NONCOHERENT_MMAP=y +CONFIG_DMA_COHERENT_POOL=y +CONFIG_DMA_DIRECT_REMAP=y +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_DMA_MAP_BENCHMARK is not set +CONFIG_SGL_ALLOC=y +# CONFIG_FORCE_NR_CPUS is not set +CONFIG_CPU_RMAP=y +CONFIG_DQL=y +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +CONFIG_NLATTR=y +CONFIG_LRU_CACHE=m +CONFIG_CLZ_TAB=y +CONFIG_IRQ_POLL=y +CONFIG_MPILIB=y +CONFIG_LIBFDT=y +CONFIG_OID_REGISTRY=y +CONFIG_HAVE_GENERIC_VDSO=y +CONFIG_GENERIC_GETTIMEOFDAY=y +CONFIG_GENERIC_VDSO_TIME_NS=y +CONFIG_FONT_SUPPORT=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_SG_POOL=y +CONFIG_ARCH_HAS_PMEM_API=y +CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y +CONFIG_ARCH_STACKWALK=y +CONFIG_SBITMAP=y +# end of Library routines + +CONFIG_GENERIC_IOREMAP=y +CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y + +# +# Kernel hacking +# + +# +# printk and dmesg options +# +CONFIG_PRINTK_TIME=y +# CONFIG_PRINTK_CALLER is not set +# CONFIG_STACKTRACE_BUILD_ID is not set +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 +CONFIG_CONSOLE_LOGLEVEL_QUIET=4 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7 +# CONFIG_BOOT_PRINTK_DELAY is not set +CONFIG_DYNAMIC_DEBUG=y +CONFIG_DYNAMIC_DEBUG_CORE=y +# CONFIG_SYMBOLIC_ERRNAME is not set +CONFIG_DEBUG_BUGVERBOSE=y +# end of printk and dmesg options + +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_MISC is not set + +# +# Compile-time checks and compiler options +# +CONFIG_AS_HAS_NON_CONST_LEB128=y +CONFIG_DEBUG_INFO_NONE=y +# CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set +# CONFIG_DEBUG_INFO_DWARF4 is not set +# CONFIG_DEBUG_INFO_DWARF5 is not set +CONFIG_FRAME_WARN=2048 +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_READABLE_ASM is not set +# CONFIG_HEADERS_INSTALL is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +# CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B is not set +CONFIG_ARCH_WANT_FRAME_POINTERS=y +CONFIG_FRAME_POINTER=y +# CONFIG_VMLINUX_MAP is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# end of Compile-time checks and compiler options + +# +# Generic Kernel Debugging Instruments +# +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0 +CONFIG_MAGIC_SYSRQ_SERIAL=y +CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE="" +CONFIG_DEBUG_FS=y +CONFIG_DEBUG_FS_ALLOW_ALL=y +# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set +# CONFIG_DEBUG_FS_ALLOW_NONE is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y +# CONFIG_UBSAN is not set +CONFIG_HAVE_ARCH_KCSAN=y +CONFIG_HAVE_KCSAN_COMPILER=y +# CONFIG_KCSAN is not set +# end of Generic Kernel Debugging Instruments + +# +# Networking Debugging +# +# CONFIG_NET_DEV_REFCNT_TRACKER is not set +# CONFIG_NET_NS_REFCNT_TRACKER is not set +# CONFIG_DEBUG_NET is not set +# end of Networking Debugging + +# +# Memory Debugging +# +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_SLUB_DEBUG is not set +# CONFIG_PAGE_OWNER is not set +# CONFIG_PAGE_POISONING is not set +# CONFIG_DEBUG_RODATA_TEST is not set +CONFIG_ARCH_HAS_DEBUG_WX=y +# CONFIG_DEBUG_WX is not set +CONFIG_GENERIC_PTDUMP=y +# CONFIG_PTDUMP_DEBUGFS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_PER_VMA_LOCK_STATS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SHRINKER_DEBUG is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_SCHED_STACK_END_CHECK is not set +CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VM_PGTABLE is not set +CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +CONFIG_HAVE_ARCH_KASAN=y +CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y +CONFIG_HAVE_ARCH_KASAN_HW_TAGS=y +CONFIG_HAVE_ARCH_KASAN_VMALLOC=y +CONFIG_CC_HAS_KASAN_GENERIC=y +CONFIG_CC_HAS_KASAN_SW_TAGS=y +CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y +# CONFIG_KASAN is not set +CONFIG_HAVE_ARCH_KFENCE=y +# CONFIG_KFENCE is not set +# end of Memory Debugging + +# CONFIG_DEBUG_SHIRQ is not set + +# +# Debug Oops, Lockups and Hangs +# +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=1 +# CONFIG_SOFTLOCKUP_DETECTOR is not set +CONFIG_HAVE_HARDLOCKUP_DETECTOR_BUDDY=y +# CONFIG_HARDLOCKUP_DETECTOR is not set +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 +CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y +# CONFIG_WQ_WATCHDOG is not set +# CONFIG_WQ_CPU_INTENSIVE_REPORT is not set +# CONFIG_TEST_LOCKUP is not set +# end of Debug Oops, Lockups and Hangs + +# +# Scheduler Debugging +# +# CONFIG_SCHED_DEBUG is not set +CONFIG_SCHED_INFO=y +CONFIG_SCHEDSTATS=y +# end of Scheduler Debugging + +# CONFIG_DEBUG_TIMEKEEPING is not set +# CONFIG_DEBUG_PREEMPT is not set + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +CONFIG_LOCK_DEBUGGING_SUPPORT=y +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +CONFIG_DEBUG_SPINLOCK=y +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +# CONFIG_DEBUG_RWSEMS is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_LOCK_TORTURE_TEST is not set +# CONFIG_WW_MUTEX_SELFTEST is not set +# CONFIG_SCF_TORTURE_TEST is not set +# CONFIG_CSD_LOCK_WAIT_DEBUG is not set +# end of Lock Debugging (spinlocks, mutexes, etc...) + +# CONFIG_DEBUG_IRQFLAGS is not set +CONFIG_STACKTRACE=y +# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set +# CONFIG_DEBUG_KOBJECT is not set + +# +# Debug kernel data structures +# +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_PLIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_MAPLE_TREE is not set +# end of Debug kernel data structures + +CONFIG_DEBUG_CREDENTIALS=y + +# +# RCU Debugging +# +# CONFIG_RCU_SCALE_TEST is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_REF_SCALE_TEST is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=20 +# CONFIG_RCU_CPU_STALL_CPUTIME is not set +# CONFIG_RCU_TRACE is not set +# CONFIG_RCU_EQS_DEBUG is not set +# end of RCU Debugging + +# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set +# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set +# CONFIG_LATENCYTOP is not set +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_TRACING_SUPPORT=y +# CONFIG_FTRACE is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_SAMPLE_FTRACE_DIRECT=y +CONFIG_HAVE_SAMPLE_FTRACE_DIRECT_MULTI=y +# CONFIG_STRICT_DEVMEM is not set + +# +# arm64 Debugging +# +# CONFIG_PID_IN_CONTEXTIDR is not set +# CONFIG_ARM64_RELOC_TEST is not set +# CONFIG_CORESIGHT is not set +# end of arm64 Debugging + +# +# Kernel Testing and Coverage +# +# CONFIG_KUNIT is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +# CONFIG_FAULT_INJECTION is not set +CONFIG_ARCH_HAS_KCOV=y +CONFIG_CC_HAS_SANCOV_TRACE_PC=y +# CONFIG_KCOV is not set +# CONFIG_RUNTIME_TESTING_MENU is not set +CONFIG_ARCH_USE_MEMTEST=y +# CONFIG_MEMTEST is not set +# end of Kernel Testing and Coverage + +# +# Rust hacking +# +# end of Rust hacking +# end of Kernel hacking diff --git a/projects/Rockchip/devices/RK3566-ML/options b/projects/Rockchip/devices/RK3566-ML/options index e6d7a101eb..858cc0e48a 100644 --- a/projects/Rockchip/devices/RK3566-ML/options +++ b/projects/Rockchip/devices/RK3566-ML/options @@ -32,7 +32,7 @@ PARTITION_TABLE="gpt" UBOOT_LABEL="uboot" TRUST_LABEL="trust" - DEVICE_DTB=("rk3566-anbernic-rg353ps" "rk3566-anbernic-rg353vs" "rk3566-anbernic-rg503" "rk3566-anbernic-rg353p" "rk3566-anbernic-rg353v") + DEVICE_DTB=("rk3566-anbernic-rg353ps" "rk3566-anbernic-rg353vs" "rk3566-anbernic-rg503" "rk3566-anbernic-rg353p" "rk3566-anbernic-rg353v" "rk3566-powkiddy-rgb30") UBOOT_DTB="rk3566" UBOOT_CONFIG="anbernic-rgxx3-rk3566_defconfig" PKG_SOC="rk3568" diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index 2888576332..514dee5d71 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -30,7 +30,7 @@ case ${DEVICE} in PKG_GIT_CLONE_BRANCH="main" ;; *ML) -# PKG_VERSION="6.6" + PKG_VERSION="next-next-20231212" # PKG_URL="https://git.kernel.org/torvalds/t/${PKG_NAME}-${PKG_VERSION}.tar.gz" PKG_URL="https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/snapshot/linux-next-next-20231212.tar.gz" diff --git a/projects/Rockchip/packages/u-boot/package.mk b/projects/Rockchip/packages/u-boot/package.mk index 7d28d950b1..a3a8a2325d 100644 --- a/projects/Rockchip/packages/u-boot/package.mk +++ b/projects/Rockchip/packages/u-boot/package.mk @@ -20,7 +20,8 @@ case ${DEVICE} in ;; *ML) PKG_URL="https://github.com/u-boot/u-boot.git" - PKG_VERSION="master" + PKG_VERSION="27089f1e4d11fd7e0619097b59258d0428cde2ac" + PKG_GIT_CLONE_BRANCH="master" ;; RK356*) PKG_URL="${PKG_SITE}/rk356x-uboot.git" From bb693f1754bc25fb4bc817c8ad7ad135f86a5139 Mon Sep 17 00:00:00 2001 From: David Williams Date: Fri, 15 Dec 2023 11:47:39 -0800 Subject: [PATCH 062/167] removed references to the older firmware --- projects/Rockchip/devices/RK3566-ML/options | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/Rockchip/devices/RK3566-ML/options b/projects/Rockchip/devices/RK3566-ML/options index 858cc0e48a..34f5632760 100644 --- a/projects/Rockchip/devices/RK3566-ML/options +++ b/projects/Rockchip/devices/RK3566-ML/options @@ -83,13 +83,13 @@ # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) # Space separated list is supported, # e.g. FIRMWARE="dvb-firmware misc-firmware wlan-firmware" - FIRMWARE="misc-firmware wlan-firmware RTL8821CS-firmware" + FIRMWARE="misc-firmware" # additional drivers to install: # for a list of additional drivers see packages/linux-drivers # Space separated list is supported, # e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" - ADDITIONAL_DRIVERS="RTL8821AU RTL8821CU RTL88x2BU jelos-gamepad" + ADDITIONAL_DRIVERS="jelos-gamepad" # build and install driver addons (yes / no) DRIVER_ADDONS_SUPPORT="no" From ad3dc89580fb8799af727d6c4f224cba343b9516 Mon Sep 17 00:00:00 2001 From: David Williams Date: Fri, 15 Dec 2023 14:58:49 -0800 Subject: [PATCH 063/167] added the rtl_nic firmware for USB-Ethernet adapters --- .../kernel/linux-firmware/kernel-firmware/firmwares/any.dat | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat b/packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat index 8ad5768aab..d7bae2171e 100644 --- a/packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat +++ b/packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat @@ -21,3 +21,5 @@ brcm/* rtl_bt/* rtlwifi/* rtw*/* + +rtl_nic/* From c2b7a6519971d8e3c1820036ec3e9cfd9ee53bde Mon Sep 17 00:00:00 2001 From: David Williams Date: Fri, 15 Dec 2023 22:45:23 -0800 Subject: [PATCH 064/167] Adding the DTB for the RK2023 --- projects/Rockchip/devices/RK3566-ML/options | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/Rockchip/devices/RK3566-ML/options b/projects/Rockchip/devices/RK3566-ML/options index 34f5632760..e0b068e669 100644 --- a/projects/Rockchip/devices/RK3566-ML/options +++ b/projects/Rockchip/devices/RK3566-ML/options @@ -32,7 +32,7 @@ PARTITION_TABLE="gpt" UBOOT_LABEL="uboot" TRUST_LABEL="trust" - DEVICE_DTB=("rk3566-anbernic-rg353ps" "rk3566-anbernic-rg353vs" "rk3566-anbernic-rg503" "rk3566-anbernic-rg353p" "rk3566-anbernic-rg353v" "rk3566-powkiddy-rgb30") + DEVICE_DTB=("rk3566-anbernic-rg353ps" "rk3566-anbernic-rg353vs" "rk3566-anbernic-rg503" "rk3566-anbernic-rg353p" "rk3566-anbernic-rg353v" "rk3566-powkiddy-rk2023" "rk3566-powkiddy-rgb30") UBOOT_DTB="rk3566" UBOOT_CONFIG="anbernic-rgxx3-rk3566_defconfig" PKG_SOC="rk3568" From d9e3c1a4cfa7a152af29cbd490fbab05474acf83 Mon Sep 17 00:00:00 2001 From: David Williams Date: Sat, 16 Dec 2023 07:13:36 -0800 Subject: [PATCH 065/167] rolled @MM patches and a patch to remove the leading /rockchip from the dtb path expected by u-boot into one --- .../001-fixup_locating_dts.dont_patch | 58 -- ...l_boards_and_features_to_rgxx3.dont_patch} | 0 ...l_boards_and_features_to_rgxx3.dont_patch} | 0 ...l_boards_and_features_to_rgxx3.dont_patch} | 0 ...l_boards_and_features_to_rgxx3.dont_patch} | 0 ...l_boards_and_features_to_rgxx3.dont_patch} | 0 ...l_boards_and_features_to_rgxx3.dont_patch} | 0 ...l_boards_and_features_to_rgxx3.dont_patch} | 0 ...d_removal_of_dir_from_uboot_dtb_path.patch | 652 ++++++++++++++++++ 9 files changed, 652 insertions(+), 58 deletions(-) delete mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/001-fixup_locating_dts.dont_patch rename projects/Rockchip/packages/u-boot/patches/RK3566-ML/{101_V3_1_7_Add_additional_boards_and_features_to_rgxx3.patch => 101_V3_1_7_Add_additional_boards_and_features_to_rgxx3.dont_patch} (100%) rename projects/Rockchip/packages/u-boot/patches/RK3566-ML/{102_V3_2_7_Add_additional_boards_and_features_to_rgxx3.patch => 102_V3_2_7_Add_additional_boards_and_features_to_rgxx3.dont_patch} (100%) rename projects/Rockchip/packages/u-boot/patches/RK3566-ML/{103_V3_3_7_Add_additional_boards_and_features_to_rgxx3.patch => 103_V3_3_7_Add_additional_boards_and_features_to_rgxx3.dont_patch} (100%) rename projects/Rockchip/packages/u-boot/patches/RK3566-ML/{104_V3_4_7_Add_additional_boards_and_features_to_rgxx3.patch => 104_V3_4_7_Add_additional_boards_and_features_to_rgxx3.dont_patch} (100%) rename projects/Rockchip/packages/u-boot/patches/RK3566-ML/{105_V3_5_7_Add_additional_boards_and_features_to_rgxx3.patch => 105_V3_5_7_Add_additional_boards_and_features_to_rgxx3.dont_patch} (100%) rename projects/Rockchip/packages/u-boot/patches/RK3566-ML/{106_V3_6_7_Add_additional_boards_and_features_to_rgxx3.patch => 106_V3_6_7_Add_additional_boards_and_features_to_rgxx3.dont_patch} (100%) rename projects/Rockchip/packages/u-boot/patches/RK3566-ML/{107_V3_7_7_Add_additional_boards_and_features_to_rgxx3.patch => 107_V3_7_7_Add_additional_boards_and_features_to_rgxx3.dont_patch} (100%) create mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/200_Omnibus_patch_with_rgxxx3_changes_and_removal_of_dir_from_uboot_dtb_path.patch diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/001-fixup_locating_dts.dont_patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/001-fixup_locating_dts.dont_patch deleted file mode 100644 index fbc9379ac9..0000000000 --- a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/001-fixup_locating_dts.dont_patch +++ /dev/null @@ -1,58 +0,0 @@ -diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -index 3f1a42d184..6af078d390 100644 ---- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -+++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -@@ -33,8 +33,6 @@ - - #define GPIO_WRITEMASK(bits) ((bits) << 16) - --#define DTB_DIR "rockchip/" -- - struct rg3xx_model { - const u16 adc_value; - const char *board; -@@ -57,38 +55,38 @@ static const struct rg3xx_model rg3xx_model_details[] = { - 517, /* Observed average from device */ - "rk3566-anbernic-rg353m", - "RG353M", -- DTB_DIR "rk3566-anbernic-rg353p.dtb", /* Identical devices */ -+ "rk3566-anbernic-rg353p.dtb", /* Identical devices */ - }, - [RG353P] = { - 860, /* Documented value of 860 */ - "rk3566-anbernic-rg353p", - "RG353P", -- DTB_DIR "rk3566-anbernic-rg353p.dtb", -+ "rk3566-anbernic-rg353p.dtb", - }, - [RG353V] = { - 695, /* Observed average from device */ - "rk3566-anbernic-rg353v", - "RG353V", -- DTB_DIR "rk3566-anbernic-rg353v.dtb", -+ "rk3566-anbernic-rg353v.dtb", - }, - [RG503] = { - 1023, /* Observed average from device */ - "rk3566-anbernic-rg503", - "RG503", -- DTB_DIR "rk3566-anbernic-rg503.dtb", -+ "rk3566-anbernic-rg503.dtb", - }, - /* Devices with duplicate ADC value */ - [RG353PS] = { - 860, /* Observed average from device */ - "rk3566-anbernic-rg353ps", - "RG353PS", -- DTB_DIR "rk3566-anbernic-rg353ps.dtb", -+ "rk3566-anbernic-rg353ps.dtb", - }, - [RG353VS] = { - 695, /* Gathered from second hand information */ - "rk3566-anbernic-rg353vs", - "RG353VS", -- DTB_DIR "rk3566-anbernic-rg353vs.dtb", -+ "rk3566-anbernic-rg353vs.dtb", - }, - }; - diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/101_V3_1_7_Add_additional_boards_and_features_to_rgxx3.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/101_V3_1_7_Add_additional_boards_and_features_to_rgxx3.dont_patch similarity index 100% rename from projects/Rockchip/packages/u-boot/patches/RK3566-ML/101_V3_1_7_Add_additional_boards_and_features_to_rgxx3.patch rename to projects/Rockchip/packages/u-boot/patches/RK3566-ML/101_V3_1_7_Add_additional_boards_and_features_to_rgxx3.dont_patch diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/102_V3_2_7_Add_additional_boards_and_features_to_rgxx3.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/102_V3_2_7_Add_additional_boards_and_features_to_rgxx3.dont_patch similarity index 100% rename from projects/Rockchip/packages/u-boot/patches/RK3566-ML/102_V3_2_7_Add_additional_boards_and_features_to_rgxx3.patch rename to projects/Rockchip/packages/u-boot/patches/RK3566-ML/102_V3_2_7_Add_additional_boards_and_features_to_rgxx3.dont_patch diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/103_V3_3_7_Add_additional_boards_and_features_to_rgxx3.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/103_V3_3_7_Add_additional_boards_and_features_to_rgxx3.dont_patch similarity index 100% rename from projects/Rockchip/packages/u-boot/patches/RK3566-ML/103_V3_3_7_Add_additional_boards_and_features_to_rgxx3.patch rename to projects/Rockchip/packages/u-boot/patches/RK3566-ML/103_V3_3_7_Add_additional_boards_and_features_to_rgxx3.dont_patch diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/104_V3_4_7_Add_additional_boards_and_features_to_rgxx3.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/104_V3_4_7_Add_additional_boards_and_features_to_rgxx3.dont_patch similarity index 100% rename from projects/Rockchip/packages/u-boot/patches/RK3566-ML/104_V3_4_7_Add_additional_boards_and_features_to_rgxx3.patch rename to projects/Rockchip/packages/u-boot/patches/RK3566-ML/104_V3_4_7_Add_additional_boards_and_features_to_rgxx3.dont_patch diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/105_V3_5_7_Add_additional_boards_and_features_to_rgxx3.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/105_V3_5_7_Add_additional_boards_and_features_to_rgxx3.dont_patch similarity index 100% rename from projects/Rockchip/packages/u-boot/patches/RK3566-ML/105_V3_5_7_Add_additional_boards_and_features_to_rgxx3.patch rename to projects/Rockchip/packages/u-boot/patches/RK3566-ML/105_V3_5_7_Add_additional_boards_and_features_to_rgxx3.dont_patch diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/106_V3_6_7_Add_additional_boards_and_features_to_rgxx3.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/106_V3_6_7_Add_additional_boards_and_features_to_rgxx3.dont_patch similarity index 100% rename from projects/Rockchip/packages/u-boot/patches/RK3566-ML/106_V3_6_7_Add_additional_boards_and_features_to_rgxx3.patch rename to projects/Rockchip/packages/u-boot/patches/RK3566-ML/106_V3_6_7_Add_additional_boards_and_features_to_rgxx3.dont_patch diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/107_V3_7_7_Add_additional_boards_and_features_to_rgxx3.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/107_V3_7_7_Add_additional_boards_and_features_to_rgxx3.dont_patch similarity index 100% rename from projects/Rockchip/packages/u-boot/patches/RK3566-ML/107_V3_7_7_Add_additional_boards_and_features_to_rgxx3.patch rename to projects/Rockchip/packages/u-boot/patches/RK3566-ML/107_V3_7_7_Add_additional_boards_and_features_to_rgxx3.dont_patch diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/200_Omnibus_patch_with_rgxxx3_changes_and_removal_of_dir_from_uboot_dtb_path.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/200_Omnibus_patch_with_rgxxx3_changes_and_removal_of_dir_from_uboot_dtb_path.patch new file mode 100644 index 0000000000..908b5f4d11 --- /dev/null +++ b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/200_Omnibus_patch_with_rgxxx3_changes_and_removal_of_dir_from_uboot_dtb_path.patch @@ -0,0 +1,652 @@ +diff --git a/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi b/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi +index f986e1941..e3ab196d2 100644 +--- a/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi ++++ b/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi +@@ -76,6 +76,12 @@ + /delete-property/ clock-names; + }; + ++&saradc { ++ bootph-all; ++ vref-supply = <&vcc_sys>; ++ status = "okay"; ++}; ++ + &sdhci { + pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>, + <&emmc_datastrobe>, <&emmc_rstnout>; +@@ -94,3 +100,8 @@ + bootph-all; + status = "okay"; + }; ++ ++&vcc_sys { ++ bootph-all; ++ status = "okay"; ++}; +diff --git a/arch/arm/mach-rockchip/Makefile b/arch/arm/mach-rockchip/Makefile +index 1dc92066b..ff089ae94 100644 +--- a/arch/arm/mach-rockchip/Makefile ++++ b/arch/arm/mach-rockchip/Makefile +@@ -15,13 +15,13 @@ obj-tpl-$(CONFIG_ROCKCHIP_PX30) += px30-board-tpl.o + + obj-spl-$(CONFIG_ROCKCHIP_RK3036) += rk3036-board-spl.o + +-ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),) +- + # Always include boot_mode.o, as we bypass it (i.e. turn it off) + # inside of boot_mode.c when CONFIG_ROCKCHIP_BOOT_MODE_REG is 0. This way, + # we can have the preprocessor correctly recognise both 0x0 and 0 + # meaning "turn it off". + obj-y += boot_mode.o ++ ++ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),) + obj-$(CONFIG_ROCKCHIP_COMMON_BOARD) += board.o + obj-$(CONFIG_MISC_INIT_R) += misc.o + endif +diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c +index 57f08e0be..77145524e 100644 +--- a/arch/arm/mach-rockchip/board.c ++++ b/arch/arm/mach-rockchip/board.c +@@ -348,3 +348,35 @@ __weak int misc_init_r(void) + return ret; + } + #endif ++ ++#if IS_ENABLED(CONFIG_BOARD_RNG_SEED) && IS_ENABLED(CONFIG_RNG_ROCKCHIP) ++#include ++ ++/* Use hardware rng to seed Linux random. */ ++__weak int board_rng_seed(struct abuf *buf) ++{ ++ struct udevice *dev; ++ size_t len = 0x8; ++ u64 *data; ++ ++ data = malloc(len); ++ if (!data) { ++ printf("Out of memory\n"); ++ return -ENOMEM; ++ } ++ ++ if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) { ++ printf("No RNG device\n"); ++ return -ENODEV; ++ } ++ ++ if (dm_rng_read(dev, data, len)) { ++ printf("Reading RNG failed\n"); ++ return -EIO; ++ } ++ ++ abuf_init_set(buf, data, len); ++ ++ return 0; ++} ++#endif +diff --git a/arch/arm/mach-rockchip/boot_mode.c b/arch/arm/mach-rockchip/boot_mode.c +index eb8f65ae4..d2308768b 100644 +--- a/arch/arm/mach-rockchip/boot_mode.c ++++ b/arch/arm/mach-rockchip/boot_mode.c +@@ -38,6 +38,10 @@ void set_back_to_bootrom_dnl_flag(void) + #define KEY_DOWN_MIN_VAL 0 + #define KEY_DOWN_MAX_VAL 30 + ++#ifndef RK_DNL_ADC_CHAN ++#define RK_DNL_ADC_CHAN 1 ++#endif ++ + __weak int rockchip_dnl_key_pressed(void) + { + unsigned int val; +@@ -52,7 +56,8 @@ __weak int rockchip_dnl_key_pressed(void) + ret = -ENODEV; + uclass_foreach_dev(dev, uc) { + if (!strncmp(dev->name, "saradc", 6)) { +- ret = adc_channel_single_shot(dev->name, 1, &val); ++ ret = adc_channel_single_shot(dev->name, ++ RK_DNL_ADC_CHAN, &val); + break; + } + } +@@ -73,11 +78,13 @@ __weak int rockchip_dnl_key_pressed(void) + + void rockchip_dnl_mode_check(void) + { ++#if CONFIG_IS_ENABLED(ADC) + if (rockchip_dnl_key_pressed()) { + printf("download key pressed, entering download mode..."); + set_back_to_bootrom_dnl_flag(); + do_reset(NULL, 0, 0, NULL); + } ++#endif + } + + int setup_boot_mode(void) +@@ -90,6 +97,7 @@ int setup_boot_mode(void) + boot_mode = readl(reg); + debug("%s: boot mode 0x%08x\n", __func__, boot_mode); + ++#if !defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + /* Clear boot mode */ + writel(BOOT_NORMAL, reg); + +@@ -103,6 +111,7 @@ int setup_boot_mode(void) + env_set("preboot", "setenv preboot; ums mmc 0"); + break; + } ++#endif + + return 0; + } +diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +index 3f1a42d18..94af45cf0 100644 +--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c ++++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +@@ -5,6 +5,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -16,7 +17,6 @@ + #include + #include + #include +-#include + #include + #include + +@@ -33,13 +33,15 @@ + + #define GPIO_WRITEMASK(bits) ((bits) << 16) + +-#define DTB_DIR "rockchip/" ++// #define DTB_DIR "rockchip/" ++#define DTB_DIR "" + + struct rg3xx_model { + const u16 adc_value; + const char *board; + const char *board_name; + const char *fdtfile; ++ const bool detect_panel; + }; + + enum rgxx3_device_id { +@@ -47,67 +49,117 @@ enum rgxx3_device_id { + RG353P, + RG353V, + RG503, ++ RGB30, ++ RK2023, ++ RGARCD, + /* Devices with duplicate ADC value */ + RG353PS, + RG353VS, ++ RGARCS, + }; + + static const struct rg3xx_model rg3xx_model_details[] = { + [RG353M] = { +- 517, /* Observed average from device */ +- "rk3566-anbernic-rg353m", +- "RG353M", +- DTB_DIR "rk3566-anbernic-rg353p.dtb", /* Identical devices */ ++ .adc_value = 517, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg353m", ++ .board_name = "RG353M", ++ /* Device is identical to RG353P. */ ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg353p.dtb", ++ .detect_panel = 1, + }, + [RG353P] = { +- 860, /* Documented value of 860 */ +- "rk3566-anbernic-rg353p", +- "RG353P", +- DTB_DIR "rk3566-anbernic-rg353p.dtb", ++ .adc_value = 860, /* Documented value of 860 */ ++ .board = "rk3566-anbernic-rg353p", ++ .board_name = "RG353P", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg353p.dtb", ++ .detect_panel = 1, + }, + [RG353V] = { +- 695, /* Observed average from device */ +- "rk3566-anbernic-rg353v", +- "RG353V", +- DTB_DIR "rk3566-anbernic-rg353v.dtb", ++ .adc_value = 695, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg353v", ++ .board_name = "RG353V", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg353v.dtb", ++ .detect_panel = 1, + }, + [RG503] = { +- 1023, /* Observed average from device */ +- "rk3566-anbernic-rg503", +- "RG503", +- DTB_DIR "rk3566-anbernic-rg503.dtb", ++ .adc_value = 1023, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg503", ++ .board_name = "RG503", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg503.dtb", ++ .detect_panel = 0, ++ }, ++ [RGB30] = { ++ .adc_value = 383, /* Gathered from second hand information */ ++ .board = "rk3566-powkiddy-rgb30", ++ .board_name = "RGB30", ++ .fdtfile = DTB_DIR "rk3566-powkiddy-rgb30.dtb", ++ .detect_panel = 0, ++ }, ++ [RK2023] = { ++ .adc_value = 635, /* Observed average from device */ ++ .board = "rk3566-powkiddy-rk2023", ++ .board_name = "RK2023", ++ .fdtfile = DTB_DIR "rk3566-powkiddy-rk2023.dtb", ++ .detect_panel = 0, ++ }, ++ [RGARCD] = { ++ .adc_value = 183, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg-arc-d", ++ .board_name = "Anbernic RG ARC-D", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg-arc-d.dtb", ++ .detect_panel = 0, + }, + /* Devices with duplicate ADC value */ + [RG353PS] = { +- 860, /* Observed average from device */ +- "rk3566-anbernic-rg353ps", +- "RG353PS", +- DTB_DIR "rk3566-anbernic-rg353ps.dtb", ++ .adc_value = 860, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg353ps", ++ .board_name = "RG353PS", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg353ps.dtb", ++ .detect_panel = 1, + }, + [RG353VS] = { +- 695, /* Gathered from second hand information */ +- "rk3566-anbernic-rg353vs", +- "RG353VS", +- DTB_DIR "rk3566-anbernic-rg353vs.dtb", ++ .adc_value = 695, /* Gathered from second hand information */ ++ .board = "rk3566-anbernic-rg353vs", ++ .board_name = "RG353VS", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg353vs.dtb", ++ .detect_panel = 1, ++ }, ++ [RGARCS] = { ++ .adc_value = 183, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg-arc-s", ++ .board_name = "Anbernic RG ARC-S", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg-arc-s.dtb", ++ .detect_panel = 0, + }, + }; + + struct rg353_panel { + const u16 id; +- const char *panel_compat; ++ const char *panel_compat[2]; + }; + + static const struct rg353_panel rg353_panel_details[] = { +- { .id = 0x3052, .panel_compat = "newvision,nv3051d"}, +- { .id = 0x3821, .panel_compat = "anbernic,rg353v-panel-v2"}, ++ { ++ .id = 0x3052, ++ .panel_compat[0] = "anbernic,rg353p-panel", ++ .panel_compat[1] = "newvision,nv3051d", ++ }, ++ { ++ .id = 0x3821, ++ .panel_compat[0] = "anbernic,rg353v-panel-v2", ++ .panel_compat[1] = NULL, ++ }, + }; + + /* +- * Start LED very early so user knows device is on. Set color ++ * Check if rockchip_dnl button is pressed and reboot into rockusb if ++ * true. Start LED very early so user knows device is on. Set color + * to red. + */ + void spl_board_init(void) + { ++ setup_boot_mode(); ++ + /* Set GPIO0_C5, GPIO0_C6, and GPIO0_C7 to output. */ + writel(GPIO_WRITEMASK(GPIO_C7 | GPIO_C6 | GPIO_C5) | \ + (GPIO_C7 | GPIO_C6 | GPIO_C5), +@@ -117,34 +169,6 @@ void spl_board_init(void) + (GPIO0_BASE + GPIO_SWPORT_DR_H)); + } + +-/* Use hardware rng to seed Linux random. */ +-int board_rng_seed(struct abuf *buf) +-{ +- struct udevice *dev; +- size_t len = 0x8; +- u64 *data; +- +- data = malloc(len); +- if (!data) { +- printf("Out of memory\n"); +- return -ENOMEM; +- } +- +- if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) { +- printf("No RNG device\n"); +- return -ENODEV; +- } +- +- if (dm_rng_read(dev, data, len)) { +- printf("Reading RNG failed\n"); +- return -EIO; +- } +- +- abuf_init_set(buf, data, len); +- +- return 0; +-} +- + /* + * Buzz the buzzer so the user knows something is going on. Make it + * optional in case PWM is disabled. +@@ -298,11 +322,10 @@ int rgxx3_detect_display(void) + if (!panel) { + printf("Unable to identify panel_id %x\n", + (panel_id[0] << 8) | panel_id[1]); +- env_set("panel", "unknown"); + return -EINVAL; + } + +- env_set("panel", panel->panel_compat); ++ env_set("panel", panel->panel_compat[0]); + + return 0; + } +@@ -342,19 +365,21 @@ int rgxx3_detect_device(void) + } + + /* +- * Try to access the eMMC on an RG353V or RG353P. If it's +- * missing, it's an RG353VS or RG353PS. Note we could also +- * check for a touchscreen at 0x1a on i2c2. ++ * Try to access the eMMC on an RG353V, RG353P, or RG Arc D. ++ * If it's missing, it's an RG353VS, RG353PS, or RG Arc S. ++ * Note we could also check for a touchscreen at 0x1a on i2c2. + */ +- if (board_id == RG353V || board_id == RG353P) { ++ if (board_id == RG353V || board_id == RG353P || board_id == RGARCD) { + mmc = find_mmc_device(0); + if (mmc) { + ret = mmc_init(mmc); + if (ret) { + if (board_id == RG353V) + board_id = RG353VS; +- else ++ if (board_id == RG353P) + board_id = RG353PS; ++ else ++ board_id = RGARCS; + } + } + } +@@ -367,13 +392,14 @@ int rgxx3_detect_device(void) + rg3xx_model_details[board_id].board_name); + env_set("fdtfile", rg3xx_model_details[board_id].fdtfile); + +- /* Detect the panel type for any device that isn't a 503. */ +- if (board_id == RG503) ++ /* Skip panel detection for when it is not needed. */ ++ if (!rg3xx_model_details[board_id].detect_panel) + return 0; + ++ /* Warn but don't fail for errors in auto-detection of the panel. */ + ret = rgxx3_detect_display(); + if (ret) +- return ret; ++ printf("Failed to detect panel type\n"); + + return 0; + } +@@ -400,7 +426,8 @@ int rk_board_late_init(void) + + int ft_board_setup(void *blob, struct bd_info *bd) + { +- int node, ret; ++ const struct rg353_panel *panel = NULL; ++ int node, ret, i; + char *env; + + /* No fixups necessary for the RG503 */ +@@ -414,6 +441,12 @@ int ft_board_setup(void *blob, struct bd_info *bd) + rg3xx_model_details[RG353M].board_name, + sizeof(rg3xx_model_details[RG353M].board_name)); + ++ env = env_get("panel"); ++ if (!env) { ++ printf("Can't get panel env\n"); ++ return 0; ++ } ++ + /* + * Check if the environment variable doesn't equal the panel. + * If it doesn't, update the devicetree to the correct panel. +@@ -424,12 +457,6 @@ int ft_board_setup(void *blob, struct bd_info *bd) + return -ENODEV; + } + +- env = env_get("panel"); +- if (!env) { +- printf("Can't get panel env\n"); +- return -ENODEV; +- } +- + ret = fdt_node_check_compatible(blob, node, env); + if (ret < 0) + return -ENODEV; +@@ -438,8 +465,24 @@ int ft_board_setup(void *blob, struct bd_info *bd) + if (!ret) + return 0; + +- do_fixup_by_path_string(blob, "/dsi@fe060000/panel@0", +- "compatible", env); ++ /* Panels don't match, search by first compatible value. */ ++ for (i = 0; i < ARRAY_SIZE(rg353_panel_details); i++) { ++ if (!strcmp(env, rg353_panel_details[i].panel_compat[0])) { ++ panel = &rg353_panel_details[i]; ++ break; ++ } ++ } ++ ++ if (!panel) { ++ printf("Unable to identify panel by compat string\n"); ++ return -ENODEV; ++ } ++ ++ /* Set the compatible with the auto-detected values */ ++ fdt_setprop_string(blob, node, "compatible", panel->panel_compat[0]); ++ if (panel->panel_compat[1]) ++ fdt_appendprop_string(blob, node, "compatible", ++ panel->panel_compat[1]); + + return 0; + } +diff --git a/common/spl/Kconfig b/common/spl/Kconfig +index c521b02f4..ada9dcea5 100644 +--- a/common/spl/Kconfig ++++ b/common/spl/Kconfig +@@ -579,6 +579,13 @@ config SPL_FIT_IMAGE_TINY + ensure this information is available to the next image + invoked). + ++config SPL_ADC ++ bool "Support ADC drivers" ++ help ++ Enable ADC drivers in SPL. These drivers can allow the reading of ++ analog values from one or more channels. Enable this option to ++ build the drivers in drivers/adc as part of an SPL build. ++ + config SPL_CACHE + bool "Support CACHE drivers" + help +diff --git a/configs/anbernic-rgxx3-rk3566_defconfig b/configs/anbernic-rgxx3-rk3566_defconfig +index ed6643d9d..4e72f7581 100644 +--- a/configs/anbernic-rgxx3-rk3566_defconfig ++++ b/configs/anbernic-rgxx3-rk3566_defconfig +@@ -3,6 +3,7 @@ CONFIG_SKIP_LOWLEVEL_INIT=y + CONFIG_COUNTER_FREQUENCY=24000000 + CONFIG_ARCH_ROCKCHIP=y + CONFIG_TEXT_BASE=0x00a00000 ++CONFIG_SPL_GPIO=y + CONFIG_SPL_LIBCOMMON_SUPPORT=y + CONFIG_SPL_LIBGENERIC_SUPPORT=y + CONFIG_NR_DRAM_BANKS=2 +@@ -24,7 +25,9 @@ CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y ++CONFIG_SPL_FIT_SIGNATURE=y + CONFIG_SPL_LOAD_FIT=y ++CONFIG_LEGACY_IMAGE_FORMAT=y + CONFIG_OF_BOARD_SETUP=y + CONFIG_OF_STDOUT_VIA_ALIAS=y + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3566-anbernic-rgxx3.dtb" +@@ -32,7 +35,7 @@ CONFIG_DEFAULT_FDT_FILE="rockchip/rk3566-anbernic-rgxx3.dtb" + # CONFIG_DISPLAY_CPUINFO is not set + CONFIG_DISPLAY_BOARDINFO_LATE=y + CONFIG_BOARD_RNG_SEED=y +-CONFIG_SPL_MAX_SIZE=0x20000 ++CONFIG_SPL_MAX_SIZE=0x40000 + CONFIG_SPL_PAD_TO=0x7f8000 + CONFIG_SPL_HAS_BSS_LINKER_SECTION=y + CONFIG_SPL_BSS_START_ADDR=0x4000000 +@@ -41,6 +44,8 @@ CONFIG_SPL_BOARD_INIT=y + # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set + # CONFIG_SPL_SHARES_INIT_SP_ADDR is not set + CONFIG_SPL_STACK_R=y ++CONFIG_SPL_ADC=y ++CONFIG_SPL_POWER=y + CONFIG_SPL_ATF=y + CONFIG_CMD_PWM=y + CONFIG_CMD_GPT=y +@@ -50,8 +55,10 @@ CONFIG_CMD_MMC=y + # CONFIG_SPL_DOS_PARTITION is not set + CONFIG_SPL_OF_CONTROL=y + CONFIG_OF_LIVE=y ++CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y + # CONFIG_NET is not set ++CONFIG_SPL_DM_SEQ_ALIAS=y + CONFIG_SPL_REGMAP=y + CONFIG_SPL_SYSCON=y + CONFIG_SPL_CLK=y +@@ -67,13 +74,13 @@ CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_ROCKCHIP=y + CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y ++CONFIG_SPL_PINCTRL=y + CONFIG_DM_PMIC=y + CONFIG_DM_PMIC_FAN53555=y + CONFIG_PMIC_RK8XX=y +-CONFIG_REGULATOR_PWM=y +-CONFIG_DM_REGULATOR_GPIO=y ++CONFIG_SPL_DM_REGULATOR=y ++CONFIG_SPL_DM_REGULATOR_FIXED=y + CONFIG_REGULATOR_RK8XX=y +-CONFIG_DM_REGULATOR_SCMI=y + CONFIG_PWM_ROCKCHIP=y + CONFIG_SPL_RAM=y + # CONFIG_RAM_ROCKCHIP_DEBUG is not set +@@ -89,5 +96,6 @@ CONFIG_VIDEO_ROCKCHIP=y + CONFIG_DISPLAY_ROCKCHIP_DW_MIPI=y + CONFIG_VIDEO_BRIDGE=y + CONFIG_REGEX=y ++# CONFIG_RSA is not set + CONFIG_ERRNO_STR=y + # CONFIG_EFI_LOADER is not set +diff --git a/doc/board/anbernic/rgxx3.rst b/doc/board/anbernic/rgxx3.rst +index 7d1beb423..d159ed2f7 100644 +--- a/doc/board/anbernic/rgxx3.rst ++++ b/doc/board/anbernic/rgxx3.rst +@@ -5,6 +5,8 @@ U-Boot for Anbernic RGxx3 Devices + + This allows U-Boot to boot the following Anbernic devices: + ++ - Anbernic RG-ARC-D ++ - Anbernic RG-ARC-S + - Anbernic RG353M + - Anbernic RG353P + - Anbernic RG353PS +@@ -12,18 +14,24 @@ This allows U-Boot to boot the following Anbernic devices: + - Anbernic RG353VS + - Anbernic RG503 + ++Additionally, the following very similar non-Anbernic devices are also ++supported: ++ ++ - Powkiddy RGB30 ++ - Powkiddy RK2023 ++ + The correct device is detected automatically by comparing ADC values + from ADC channel 1. In the event of an RG353V or RG353P, an attempt + is then made to probe for an eMMC and if it fails the device is assumed + to be an RG353VS or RG353PS. Based on the detected device, the + environment variables "board", "board_name", and "fdtfile" are set to + the correct values corresponding to the board which can be read by a +-boot script to boot with the correct device tree. If the board detected +-is not of type RG503 (which currently has only 1 panel revision) a +-panel detect is then performed by probing a "dummy" display on the DSI +-bus and then querying the display ID. The display ID is then compared +-to a table to get the known compatible string for use in Linux, and +-this string is saved as an environment variable of "panel". ++boot script to boot with the correct device tree. If a board is defined ++as requiring panel detection, a panel detect is then performed by ++probing a "dummy" display on the DSI bus and then querying the display ++ID. The display ID is then compared to a table to get the known ++compatible string for use in Linux, and this string is saved as an ++environment variable of "panel". + + FDT fixups are performed in the event of an RG353M to change the device + name, or in the event the panel detected does not match the devicetree. +diff --git a/drivers/Makefile b/drivers/Makefile +index bf73b7718..81ba2c534 100644 +--- a/drivers/Makefile ++++ b/drivers/Makefile +@@ -1,5 +1,6 @@ + # SPDX-License-Identifier: GPL-2.0+ + ++obj-$(CONFIG_$(SPL_)ADC) += adc/ + obj-$(CONFIG_$(SPL_TPL_)BIOSEMU) += bios_emulator/ + obj-$(CONFIG_$(SPL_TPL_)BLK) += block/ + obj-$(CONFIG_$(SPL_TPL_)BOOTCOUNT_LIMIT) += bootcount/ +diff --git a/drivers/adc/Makefile b/drivers/adc/Makefile +index 5336c8209..9eb07769b 100644 +--- a/drivers/adc/Makefile ++++ b/drivers/adc/Makefile +@@ -4,7 +4,7 @@ + # Przemyslaw Marczak + # + +-obj-$(CONFIG_ADC) += adc-uclass.o ++obj-$(CONFIG_$(SPL_)ADC) += adc-uclass.o + obj-$(CONFIG_ADC_EXYNOS) += exynos-adc.o + obj-$(CONFIG_ADC_SANDBOX) += sandbox.o + obj-$(CONFIG_SARADC_ROCKCHIP) += rockchip-saradc.o +diff --git a/include/configs/anbernic-rgxx3-rk3566.h b/include/configs/anbernic-rgxx3-rk3566.h +index 3c4ea4e7d..2aaac55c0 100644 +--- a/include/configs/anbernic-rgxx3-rk3566.h ++++ b/include/configs/anbernic-rgxx3-rk3566.h +@@ -9,4 +9,6 @@ + "stdout=serial,vidconsole\0" \ + "stderr=serial,vidconsole\0" + ++#define RK_DNL_ADC_CHAN 0 ++ + #endif From 87ea78dcf001a9b907846122823f40ab78affd06 Mon Sep 17 00:00:00 2001 From: David Williams Date: Sun, 17 Dec 2023 13:33:12 -0800 Subject: [PATCH 066/167] Uboot needs to get its initial DTB from / not /rockchip --- ...val_of_dir_from_uboot_dtb_path.dont_patch} | 0 .../RK3566-ML/201_Omnibus_2_patch.patch | 653 ++++++++++++++++++ 2 files changed, 653 insertions(+) rename projects/Rockchip/packages/u-boot/patches/RK3566-ML/{200_Omnibus_patch_with_rgxxx3_changes_and_removal_of_dir_from_uboot_dtb_path.patch => 200_Omnibus_patch_with_rgxxx3_changes_and_removal_of_dir_from_uboot_dtb_path.dont_patch} (100%) create mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/201_Omnibus_2_patch.patch diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/200_Omnibus_patch_with_rgxxx3_changes_and_removal_of_dir_from_uboot_dtb_path.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/200_Omnibus_patch_with_rgxxx3_changes_and_removal_of_dir_from_uboot_dtb_path.dont_patch similarity index 100% rename from projects/Rockchip/packages/u-boot/patches/RK3566-ML/200_Omnibus_patch_with_rgxxx3_changes_and_removal_of_dir_from_uboot_dtb_path.patch rename to projects/Rockchip/packages/u-boot/patches/RK3566-ML/200_Omnibus_patch_with_rgxxx3_changes_and_removal_of_dir_from_uboot_dtb_path.dont_patch diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/201_Omnibus_2_patch.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/201_Omnibus_2_patch.patch new file mode 100644 index 0000000000..c7f3a4fc6a --- /dev/null +++ b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/201_Omnibus_2_patch.patch @@ -0,0 +1,653 @@ +diff --git a/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi b/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi +index f986e1941..e3ab196d2 100644 +--- a/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi ++++ b/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi +@@ -76,6 +76,12 @@ + /delete-property/ clock-names; + }; + ++&saradc { ++ bootph-all; ++ vref-supply = <&vcc_sys>; ++ status = "okay"; ++}; ++ + &sdhci { + pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>, + <&emmc_datastrobe>, <&emmc_rstnout>; +@@ -94,3 +100,8 @@ + bootph-all; + status = "okay"; + }; ++ ++&vcc_sys { ++ bootph-all; ++ status = "okay"; ++}; +diff --git a/arch/arm/mach-rockchip/Makefile b/arch/arm/mach-rockchip/Makefile +index 1dc92066b..ff089ae94 100644 +--- a/arch/arm/mach-rockchip/Makefile ++++ b/arch/arm/mach-rockchip/Makefile +@@ -15,13 +15,13 @@ obj-tpl-$(CONFIG_ROCKCHIP_PX30) += px30-board-tpl.o + + obj-spl-$(CONFIG_ROCKCHIP_RK3036) += rk3036-board-spl.o + +-ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),) +- + # Always include boot_mode.o, as we bypass it (i.e. turn it off) + # inside of boot_mode.c when CONFIG_ROCKCHIP_BOOT_MODE_REG is 0. This way, + # we can have the preprocessor correctly recognise both 0x0 and 0 + # meaning "turn it off". + obj-y += boot_mode.o ++ ++ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),) + obj-$(CONFIG_ROCKCHIP_COMMON_BOARD) += board.o + obj-$(CONFIG_MISC_INIT_R) += misc.o + endif +diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c +index 57f08e0be..77145524e 100644 +--- a/arch/arm/mach-rockchip/board.c ++++ b/arch/arm/mach-rockchip/board.c +@@ -348,3 +348,35 @@ __weak int misc_init_r(void) + return ret; + } + #endif ++ ++#if IS_ENABLED(CONFIG_BOARD_RNG_SEED) && IS_ENABLED(CONFIG_RNG_ROCKCHIP) ++#include ++ ++/* Use hardware rng to seed Linux random. */ ++__weak int board_rng_seed(struct abuf *buf) ++{ ++ struct udevice *dev; ++ size_t len = 0x8; ++ u64 *data; ++ ++ data = malloc(len); ++ if (!data) { ++ printf("Out of memory\n"); ++ return -ENOMEM; ++ } ++ ++ if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) { ++ printf("No RNG device\n"); ++ return -ENODEV; ++ } ++ ++ if (dm_rng_read(dev, data, len)) { ++ printf("Reading RNG failed\n"); ++ return -EIO; ++ } ++ ++ abuf_init_set(buf, data, len); ++ ++ return 0; ++} ++#endif +diff --git a/arch/arm/mach-rockchip/boot_mode.c b/arch/arm/mach-rockchip/boot_mode.c +index eb8f65ae4..d2308768b 100644 +--- a/arch/arm/mach-rockchip/boot_mode.c ++++ b/arch/arm/mach-rockchip/boot_mode.c +@@ -38,6 +38,10 @@ void set_back_to_bootrom_dnl_flag(void) + #define KEY_DOWN_MIN_VAL 0 + #define KEY_DOWN_MAX_VAL 30 + ++#ifndef RK_DNL_ADC_CHAN ++#define RK_DNL_ADC_CHAN 1 ++#endif ++ + __weak int rockchip_dnl_key_pressed(void) + { + unsigned int val; +@@ -52,7 +56,8 @@ __weak int rockchip_dnl_key_pressed(void) + ret = -ENODEV; + uclass_foreach_dev(dev, uc) { + if (!strncmp(dev->name, "saradc", 6)) { +- ret = adc_channel_single_shot(dev->name, 1, &val); ++ ret = adc_channel_single_shot(dev->name, ++ RK_DNL_ADC_CHAN, &val); + break; + } + } +@@ -73,11 +78,13 @@ __weak int rockchip_dnl_key_pressed(void) + + void rockchip_dnl_mode_check(void) + { ++#if CONFIG_IS_ENABLED(ADC) + if (rockchip_dnl_key_pressed()) { + printf("download key pressed, entering download mode..."); + set_back_to_bootrom_dnl_flag(); + do_reset(NULL, 0, 0, NULL); + } ++#endif + } + + int setup_boot_mode(void) +@@ -90,6 +97,7 @@ int setup_boot_mode(void) + boot_mode = readl(reg); + debug("%s: boot mode 0x%08x\n", __func__, boot_mode); + ++#if !defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + /* Clear boot mode */ + writel(BOOT_NORMAL, reg); + +@@ -103,6 +111,7 @@ int setup_boot_mode(void) + env_set("preboot", "setenv preboot; ums mmc 0"); + break; + } ++#endif + + return 0; + } +diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +index 3f1a42d18..978ed2662 100644 +--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c ++++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +@@ -5,6 +5,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -16,7 +17,6 @@ + #include + #include + #include +-#include + #include + #include + +@@ -33,13 +33,15 @@ + + #define GPIO_WRITEMASK(bits) ((bits) << 16) + +-#define DTB_DIR "rockchip/" ++// #define DTB_DIR "rockchip/" ++#define DTB_DIR "" + + struct rg3xx_model { + const u16 adc_value; + const char *board; + const char *board_name; + const char *fdtfile; ++ const bool detect_panel; + }; + + enum rgxx3_device_id { +@@ -47,67 +49,117 @@ enum rgxx3_device_id { + RG353P, + RG353V, + RG503, ++ RGB30, ++ RK2023, ++ RGARCD, + /* Devices with duplicate ADC value */ + RG353PS, + RG353VS, ++ RGARCS, + }; + + static const struct rg3xx_model rg3xx_model_details[] = { + [RG353M] = { +- 517, /* Observed average from device */ +- "rk3566-anbernic-rg353m", +- "RG353M", +- DTB_DIR "rk3566-anbernic-rg353p.dtb", /* Identical devices */ ++ .adc_value = 517, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg353m", ++ .board_name = "RG353M", ++ /* Device is identical to RG353P. */ ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg353p.dtb", ++ .detect_panel = 1, + }, + [RG353P] = { +- 860, /* Documented value of 860 */ +- "rk3566-anbernic-rg353p", +- "RG353P", +- DTB_DIR "rk3566-anbernic-rg353p.dtb", ++ .adc_value = 860, /* Documented value of 860 */ ++ .board = "rk3566-anbernic-rg353p", ++ .board_name = "RG353P", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg353p.dtb", ++ .detect_panel = 1, + }, + [RG353V] = { +- 695, /* Observed average from device */ +- "rk3566-anbernic-rg353v", +- "RG353V", +- DTB_DIR "rk3566-anbernic-rg353v.dtb", ++ .adc_value = 695, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg353v", ++ .board_name = "RG353V", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg353v.dtb", ++ .detect_panel = 1, + }, + [RG503] = { +- 1023, /* Observed average from device */ +- "rk3566-anbernic-rg503", +- "RG503", +- DTB_DIR "rk3566-anbernic-rg503.dtb", ++ .adc_value = 1023, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg503", ++ .board_name = "RG503", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg503.dtb", ++ .detect_panel = 0, ++ }, ++ [RGB30] = { ++ .adc_value = 383, /* Gathered from second hand information */ ++ .board = "rk3566-powkiddy-rgb30", ++ .board_name = "RGB30", ++ .fdtfile = DTB_DIR "rk3566-powkiddy-rgb30.dtb", ++ .detect_panel = 0, ++ }, ++ [RK2023] = { ++ .adc_value = 635, /* Observed average from device */ ++ .board = "rk3566-powkiddy-rk2023", ++ .board_name = "RK2023", ++ .fdtfile = DTB_DIR "rk3566-powkiddy-rk2023.dtb", ++ .detect_panel = 0, ++ }, ++ [RGARCD] = { ++ .adc_value = 183, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg-arc-d", ++ .board_name = "Anbernic RG ARC-D", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg-arc-d.dtb", ++ .detect_panel = 0, + }, + /* Devices with duplicate ADC value */ + [RG353PS] = { +- 860, /* Observed average from device */ +- "rk3566-anbernic-rg353ps", +- "RG353PS", +- DTB_DIR "rk3566-anbernic-rg353ps.dtb", ++ .adc_value = 860, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg353ps", ++ .board_name = "RG353PS", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg353ps.dtb", ++ .detect_panel = 1, + }, + [RG353VS] = { +- 695, /* Gathered from second hand information */ +- "rk3566-anbernic-rg353vs", +- "RG353VS", +- DTB_DIR "rk3566-anbernic-rg353vs.dtb", ++ .adc_value = 695, /* Gathered from second hand information */ ++ .board = "rk3566-anbernic-rg353vs", ++ .board_name = "RG353VS", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg353vs.dtb", ++ .detect_panel = 1, ++ }, ++ [RGARCS] = { ++ .adc_value = 183, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg-arc-s", ++ .board_name = "Anbernic RG ARC-S", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg-arc-s.dtb", ++ .detect_panel = 0, + }, + }; + + struct rg353_panel { + const u16 id; +- const char *panel_compat; ++ const char *panel_compat[2]; + }; + + static const struct rg353_panel rg353_panel_details[] = { +- { .id = 0x3052, .panel_compat = "newvision,nv3051d"}, +- { .id = 0x3821, .panel_compat = "anbernic,rg353v-panel-v2"}, ++ { ++ .id = 0x3052, ++ .panel_compat[0] = "anbernic,rg353p-panel", ++ .panel_compat[1] = "newvision,nv3051d", ++ }, ++ { ++ .id = 0x3821, ++ .panel_compat[0] = "anbernic,rg353v-panel-v2", ++ .panel_compat[1] = NULL, ++ }, + }; + + /* +- * Start LED very early so user knows device is on. Set color ++ * Check if rockchip_dnl button is pressed and reboot into rockusb if ++ * true. Start LED very early so user knows device is on. Set color + * to red. + */ + void spl_board_init(void) + { ++ setup_boot_mode(); ++ + /* Set GPIO0_C5, GPIO0_C6, and GPIO0_C7 to output. */ + writel(GPIO_WRITEMASK(GPIO_C7 | GPIO_C6 | GPIO_C5) | \ + (GPIO_C7 | GPIO_C6 | GPIO_C5), +@@ -117,34 +169,6 @@ void spl_board_init(void) + (GPIO0_BASE + GPIO_SWPORT_DR_H)); + } + +-/* Use hardware rng to seed Linux random. */ +-int board_rng_seed(struct abuf *buf) +-{ +- struct udevice *dev; +- size_t len = 0x8; +- u64 *data; +- +- data = malloc(len); +- if (!data) { +- printf("Out of memory\n"); +- return -ENOMEM; +- } +- +- if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) { +- printf("No RNG device\n"); +- return -ENODEV; +- } +- +- if (dm_rng_read(dev, data, len)) { +- printf("Reading RNG failed\n"); +- return -EIO; +- } +- +- abuf_init_set(buf, data, len); +- +- return 0; +-} +- + /* + * Buzz the buzzer so the user knows something is going on. Make it + * optional in case PWM is disabled. +@@ -298,11 +322,10 @@ int rgxx3_detect_display(void) + if (!panel) { + printf("Unable to identify panel_id %x\n", + (panel_id[0] << 8) | panel_id[1]); +- env_set("panel", "unknown"); + return -EINVAL; + } + +- env_set("panel", panel->panel_compat); ++ env_set("panel", panel->panel_compat[0]); + + return 0; + } +@@ -342,19 +365,21 @@ int rgxx3_detect_device(void) + } + + /* +- * Try to access the eMMC on an RG353V or RG353P. If it's +- * missing, it's an RG353VS or RG353PS. Note we could also +- * check for a touchscreen at 0x1a on i2c2. ++ * Try to access the eMMC on an RG353V, RG353P, or RG Arc D. ++ * If it's missing, it's an RG353VS, RG353PS, or RG Arc S. ++ * Note we could also check for a touchscreen at 0x1a on i2c2. + */ +- if (board_id == RG353V || board_id == RG353P) { ++ if (board_id == RG353V || board_id == RG353P || board_id == RGARCD) { + mmc = find_mmc_device(0); + if (mmc) { + ret = mmc_init(mmc); + if (ret) { + if (board_id == RG353V) + board_id = RG353VS; +- else ++ if (board_id == RG353P) + board_id = RG353PS; ++ else ++ board_id = RGARCS; + } + } + } +@@ -367,13 +392,14 @@ int rgxx3_detect_device(void) + rg3xx_model_details[board_id].board_name); + env_set("fdtfile", rg3xx_model_details[board_id].fdtfile); + +- /* Detect the panel type for any device that isn't a 503. */ +- if (board_id == RG503) ++ /* Skip panel detection for when it is not needed. */ ++ if (!rg3xx_model_details[board_id].detect_panel) + return 0; + ++ /* Warn but don't fail for errors in auto-detection of the panel. */ + ret = rgxx3_detect_display(); + if (ret) +- return ret; ++ printf("Failed to detect panel type\n"); + + return 0; + } +@@ -400,7 +426,8 @@ int rk_board_late_init(void) + + int ft_board_setup(void *blob, struct bd_info *bd) + { +- int node, ret; ++ const struct rg353_panel *panel = NULL; ++ int node, ret, i; + char *env; + + /* No fixups necessary for the RG503 */ +@@ -414,6 +441,12 @@ int ft_board_setup(void *blob, struct bd_info *bd) + rg3xx_model_details[RG353M].board_name, + sizeof(rg3xx_model_details[RG353M].board_name)); + ++ env = env_get("panel"); ++ if (!env) { ++ printf("Can't get panel env\n"); ++ return 0; ++ } ++ + /* + * Check if the environment variable doesn't equal the panel. + * If it doesn't, update the devicetree to the correct panel. +@@ -424,12 +457,6 @@ int ft_board_setup(void *blob, struct bd_info *bd) + return -ENODEV; + } + +- env = env_get("panel"); +- if (!env) { +- printf("Can't get panel env\n"); +- return -ENODEV; +- } +- + ret = fdt_node_check_compatible(blob, node, env); + if (ret < 0) + return -ENODEV; +@@ -438,8 +465,24 @@ int ft_board_setup(void *blob, struct bd_info *bd) + if (!ret) + return 0; + +- do_fixup_by_path_string(blob, "/dsi@fe060000/panel@0", +- "compatible", env); ++ /* Panels don't match, search by first compatible value. */ ++ for (i = 0; i < ARRAY_SIZE(rg353_panel_details); i++) { ++ if (!strcmp(env, rg353_panel_details[i].panel_compat[0])) { ++ panel = &rg353_panel_details[i]; ++ break; ++ } ++ } ++ ++ if (!panel) { ++ printf("Unable to identify panel by compat string\n"); ++ return -ENODEV; ++ } ++ ++ /* Set the compatible with the auto-detected values */ ++ fdt_setprop_string(blob, node, "compatible", panel->panel_compat[0]); ++ if (panel->panel_compat[1]) ++ fdt_appendprop_string(blob, node, "compatible", ++ panel->panel_compat[1]); + + return 0; + } +diff --git a/common/spl/Kconfig b/common/spl/Kconfig +index c521b02f4..ada9dcea5 100644 +--- a/common/spl/Kconfig ++++ b/common/spl/Kconfig +@@ -579,6 +579,13 @@ config SPL_FIT_IMAGE_TINY + ensure this information is available to the next image + invoked). + ++config SPL_ADC ++ bool "Support ADC drivers" ++ help ++ Enable ADC drivers in SPL. These drivers can allow the reading of ++ analog values from one or more channels. Enable this option to ++ build the drivers in drivers/adc as part of an SPL build. ++ + config SPL_CACHE + bool "Support CACHE drivers" + help +diff --git a/configs/anbernic-rgxx3-rk3566_defconfig b/configs/anbernic-rgxx3-rk3566_defconfig +index ed6643d9d..27911cc9f 100644 +--- a/configs/anbernic-rgxx3-rk3566_defconfig ++++ b/configs/anbernic-rgxx3-rk3566_defconfig +@@ -3,6 +3,7 @@ CONFIG_SKIP_LOWLEVEL_INIT=y + CONFIG_COUNTER_FREQUENCY=24000000 + CONFIG_ARCH_ROCKCHIP=y + CONFIG_TEXT_BASE=0x00a00000 ++CONFIG_SPL_GPIO=y + CONFIG_SPL_LIBCOMMON_SUPPORT=y + CONFIG_SPL_LIBGENERIC_SUPPORT=y + CONFIG_NR_DRAM_BANKS=2 +@@ -24,15 +25,17 @@ CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y ++CONFIG_SPL_FIT_SIGNATURE=y + CONFIG_SPL_LOAD_FIT=y ++CONFIG_LEGACY_IMAGE_FORMAT=y + CONFIG_OF_BOARD_SETUP=y + CONFIG_OF_STDOUT_VIA_ALIAS=y +-CONFIG_DEFAULT_FDT_FILE="rockchip/rk3566-anbernic-rgxx3.dtb" ++CONFIG_DEFAULT_FDT_FILE="rk3566-anbernic-rgxx3.dtb" + # CONFIG_CONSOLE_MUX is not set + # CONFIG_DISPLAY_CPUINFO is not set + CONFIG_DISPLAY_BOARDINFO_LATE=y + CONFIG_BOARD_RNG_SEED=y +-CONFIG_SPL_MAX_SIZE=0x20000 ++CONFIG_SPL_MAX_SIZE=0x40000 + CONFIG_SPL_PAD_TO=0x7f8000 + CONFIG_SPL_HAS_BSS_LINKER_SECTION=y + CONFIG_SPL_BSS_START_ADDR=0x4000000 +@@ -41,6 +44,8 @@ CONFIG_SPL_BOARD_INIT=y + # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set + # CONFIG_SPL_SHARES_INIT_SP_ADDR is not set + CONFIG_SPL_STACK_R=y ++CONFIG_SPL_ADC=y ++CONFIG_SPL_POWER=y + CONFIG_SPL_ATF=y + CONFIG_CMD_PWM=y + CONFIG_CMD_GPT=y +@@ -50,8 +55,10 @@ CONFIG_CMD_MMC=y + # CONFIG_SPL_DOS_PARTITION is not set + CONFIG_SPL_OF_CONTROL=y + CONFIG_OF_LIVE=y ++CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y + # CONFIG_NET is not set ++CONFIG_SPL_DM_SEQ_ALIAS=y + CONFIG_SPL_REGMAP=y + CONFIG_SPL_SYSCON=y + CONFIG_SPL_CLK=y +@@ -67,13 +74,13 @@ CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_ROCKCHIP=y + CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y ++CONFIG_SPL_PINCTRL=y + CONFIG_DM_PMIC=y + CONFIG_DM_PMIC_FAN53555=y + CONFIG_PMIC_RK8XX=y +-CONFIG_REGULATOR_PWM=y +-CONFIG_DM_REGULATOR_GPIO=y ++CONFIG_SPL_DM_REGULATOR=y ++CONFIG_SPL_DM_REGULATOR_FIXED=y + CONFIG_REGULATOR_RK8XX=y +-CONFIG_DM_REGULATOR_SCMI=y + CONFIG_PWM_ROCKCHIP=y + CONFIG_SPL_RAM=y + # CONFIG_RAM_ROCKCHIP_DEBUG is not set +@@ -89,5 +96,6 @@ CONFIG_VIDEO_ROCKCHIP=y + CONFIG_DISPLAY_ROCKCHIP_DW_MIPI=y + CONFIG_VIDEO_BRIDGE=y + CONFIG_REGEX=y ++# CONFIG_RSA is not set + CONFIG_ERRNO_STR=y + # CONFIG_EFI_LOADER is not set +diff --git a/doc/board/anbernic/rgxx3.rst b/doc/board/anbernic/rgxx3.rst +index 7d1beb423..d159ed2f7 100644 +--- a/doc/board/anbernic/rgxx3.rst ++++ b/doc/board/anbernic/rgxx3.rst +@@ -5,6 +5,8 @@ U-Boot for Anbernic RGxx3 Devices + + This allows U-Boot to boot the following Anbernic devices: + ++ - Anbernic RG-ARC-D ++ - Anbernic RG-ARC-S + - Anbernic RG353M + - Anbernic RG353P + - Anbernic RG353PS +@@ -12,18 +14,24 @@ This allows U-Boot to boot the following Anbernic devices: + - Anbernic RG353VS + - Anbernic RG503 + ++Additionally, the following very similar non-Anbernic devices are also ++supported: ++ ++ - Powkiddy RGB30 ++ - Powkiddy RK2023 ++ + The correct device is detected automatically by comparing ADC values + from ADC channel 1. In the event of an RG353V or RG353P, an attempt + is then made to probe for an eMMC and if it fails the device is assumed + to be an RG353VS or RG353PS. Based on the detected device, the + environment variables "board", "board_name", and "fdtfile" are set to + the correct values corresponding to the board which can be read by a +-boot script to boot with the correct device tree. If the board detected +-is not of type RG503 (which currently has only 1 panel revision) a +-panel detect is then performed by probing a "dummy" display on the DSI +-bus and then querying the display ID. The display ID is then compared +-to a table to get the known compatible string for use in Linux, and +-this string is saved as an environment variable of "panel". ++boot script to boot with the correct device tree. If a board is defined ++as requiring panel detection, a panel detect is then performed by ++probing a "dummy" display on the DSI bus and then querying the display ++ID. The display ID is then compared to a table to get the known ++compatible string for use in Linux, and this string is saved as an ++environment variable of "panel". + + FDT fixups are performed in the event of an RG353M to change the device + name, or in the event the panel detected does not match the devicetree. +diff --git a/drivers/Makefile b/drivers/Makefile +index bf73b7718..81ba2c534 100644 +--- a/drivers/Makefile ++++ b/drivers/Makefile +@@ -1,5 +1,6 @@ + # SPDX-License-Identifier: GPL-2.0+ + ++obj-$(CONFIG_$(SPL_)ADC) += adc/ + obj-$(CONFIG_$(SPL_TPL_)BIOSEMU) += bios_emulator/ + obj-$(CONFIG_$(SPL_TPL_)BLK) += block/ + obj-$(CONFIG_$(SPL_TPL_)BOOTCOUNT_LIMIT) += bootcount/ +diff --git a/drivers/adc/Makefile b/drivers/adc/Makefile +index 5336c8209..9eb07769b 100644 +--- a/drivers/adc/Makefile ++++ b/drivers/adc/Makefile +@@ -4,7 +4,7 @@ + # Przemyslaw Marczak + # + +-obj-$(CONFIG_ADC) += adc-uclass.o ++obj-$(CONFIG_$(SPL_)ADC) += adc-uclass.o + obj-$(CONFIG_ADC_EXYNOS) += exynos-adc.o + obj-$(CONFIG_ADC_SANDBOX) += sandbox.o + obj-$(CONFIG_SARADC_ROCKCHIP) += rockchip-saradc.o +diff --git a/include/configs/anbernic-rgxx3-rk3566.h b/include/configs/anbernic-rgxx3-rk3566.h +index 3c4ea4e7d..2aaac55c0 100644 +--- a/include/configs/anbernic-rgxx3-rk3566.h ++++ b/include/configs/anbernic-rgxx3-rk3566.h +@@ -9,4 +9,6 @@ + "stdout=serial,vidconsole\0" \ + "stderr=serial,vidconsole\0" + ++#define RK_DNL_ADC_CHAN 0 ++ + #endif From 52d95203723ea65130471ea59eb9cdff580391cf Mon Sep 17 00:00:00 2001 From: Sparticuz Date: Tue, 19 Dec 2023 14:56:14 -0500 Subject: [PATCH 067/167] add all patches, move to 6.7-rc4 --- projects/Rockchip/packages/linux/package.mk | 8 +- ...s.dont_patch => 001-fix-model-names.patch} | 0 ...tch => 002-rk817-power-driver-names.patch} | 0 .../RK3566-ML/003-panel-v1-reset.dont_patch | 13 - .../patches/RK3566-ML/003-v4-add-rk2023.patch | 1495 +++++++++++++++ .../patches/RK3566-ML/004-add-rg351v.patch | 715 +++++++ .../RK3566-ML/005-set-mac-address.patch | 15 + .../RK3566-ML/006-v2-add-powkiddy-x55.patch | 1657 +++++++++++++++++ .../008-add-rtw88-to-anydat.patch.no | 10 + .../RK3566-ML/009-delay-wifi-powerup.patch.no | 11 + ...tional_boards_and_features_to_rgxx3.patch} | 973 ++++++---- .../RK3566-ML/002-v2-add-powkiddy-x55.patch | 1383 ++++++++++++++ .../RK3566-ML/003-move-dtb-directory.patch | 26 + ...al_boards_and_features_to_rgxx3.dont_patch | 60 - ...al_boards_and_features_to_rgxx3.dont_patch | 230 --- ...al_boards_and_features_to_rgxx3.dont_patch | 66 - ...al_boards_and_features_to_rgxx3.dont_patch | 100 - ...al_boards_and_features_to_rgxx3.dont_patch | 172 -- ...al_boards_and_features_to_rgxx3.dont_patch | 110 -- ...al_boards_and_features_to_rgxx3.dont_patch | 112 -- ...al_boards_and_features_to_rgxx3.dont_patch | 68 - .../RK3566-ML/201_Omnibus_2_patch.patch | 653 ------- 22 files changed, 5934 insertions(+), 1943 deletions(-) rename projects/Rockchip/packages/linux/patches/RK3566-ML/{001-fix-model-names.dont_patch => 001-fix-model-names.patch} (100%) rename projects/Rockchip/packages/linux/patches/RK3566-ML/{002-rk817-power-driver-names.dont_patch => 002-rk817-power-driver-names.patch} (100%) delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566-ML/003-panel-v1-reset.dont_patch create mode 100644 projects/Rockchip/packages/linux/patches/RK3566-ML/003-v4-add-rk2023.patch create mode 100644 projects/Rockchip/packages/linux/patches/RK3566-ML/004-add-rg351v.patch create mode 100644 projects/Rockchip/packages/linux/patches/RK3566-ML/005-set-mac-address.patch create mode 100644 projects/Rockchip/packages/linux/patches/RK3566-ML/006-v2-add-powkiddy-x55.patch create mode 100644 projects/Rockchip/packages/linux/patches/RK3566-ML/008-add-rtw88-to-anydat.patch.no create mode 100644 projects/Rockchip/packages/linux/patches/RK3566-ML/009-delay-wifi-powerup.patch.no rename projects/Rockchip/packages/u-boot/patches/RK3566-ML/{200_Omnibus_patch_with_rgxxx3_changes_and_removal_of_dir_from_uboot_dtb_path.dont_patch => 001-v3-add_additional_boards_and_features_to_rgxx3.patch} (59%) create mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/002-v2-add-powkiddy-x55.patch create mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/003-move-dtb-directory.patch delete mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/100_V3_0_7_Add_additional_boards_and_features_to_rgxx3.dont_patch delete mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/101_V3_1_7_Add_additional_boards_and_features_to_rgxx3.dont_patch delete mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/102_V3_2_7_Add_additional_boards_and_features_to_rgxx3.dont_patch delete mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/103_V3_3_7_Add_additional_boards_and_features_to_rgxx3.dont_patch delete mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/104_V3_4_7_Add_additional_boards_and_features_to_rgxx3.dont_patch delete mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/105_V3_5_7_Add_additional_boards_and_features_to_rgxx3.dont_patch delete mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/106_V3_6_7_Add_additional_boards_and_features_to_rgxx3.dont_patch delete mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/107_V3_7_7_Add_additional_boards_and_features_to_rgxx3.dont_patch delete mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-ML/201_Omnibus_2_patch.patch diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index cbe414885d..ce3c5fbc6d 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -30,12 +30,8 @@ case ${DEVICE} in PKG_GIT_CLONE_BRANCH="main" ;; *ML) - PKG_VERSION="next-next-20231212" -# PKG_URL="https://git.kernel.org/torvalds/t/${PKG_NAME}-${PKG_VERSION}.tar.gz" - PKG_URL="https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/snapshot/linux-next-next-20231212.tar.gz" - -# PKG_VERSION="6.7-rc4" -# PKG_URL="https://git.kernel.org/torvalds/t/${PKG_NAME}-${PKG_VERSION}.tar.gz" + PKG_VERSION="6.7-rc6" + PKG_URL="https://git.kernel.org/torvalds/t/${PKG_NAME}-${PKG_VERSION}.tar.gz" ;; *X55) PKG_URL="${PKG_SITE}/rk3566-x55-kernel.git" diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/001-fix-model-names.dont_patch b/projects/Rockchip/packages/linux/patches/RK3566-ML/001-fix-model-names.patch similarity index 100% rename from projects/Rockchip/packages/linux/patches/RK3566-ML/001-fix-model-names.dont_patch rename to projects/Rockchip/packages/linux/patches/RK3566-ML/001-fix-model-names.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/002-rk817-power-driver-names.dont_patch b/projects/Rockchip/packages/linux/patches/RK3566-ML/002-rk817-power-driver-names.patch similarity index 100% rename from projects/Rockchip/packages/linux/patches/RK3566-ML/002-rk817-power-driver-names.dont_patch rename to projects/Rockchip/packages/linux/patches/RK3566-ML/002-rk817-power-driver-names.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/003-panel-v1-reset.dont_patch b/projects/Rockchip/packages/linux/patches/RK3566-ML/003-panel-v1-reset.dont_patch deleted file mode 100644 index fe7a4c2b1b..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566-ML/003-panel-v1-reset.dont_patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c -index 79de6c886292..c44c6945662f 100644 ---- a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c -+++ b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c -@@ -261,6 +261,8 @@ static int panel_nv3051d_unprepare(struct drm_panel *panel) - - usleep_range(10000, 15000); - -+ gpiod_set_value_cansleep(ctx->reset_gpio, 1); -+ - regulator_disable(ctx->vdd); - - return 0; diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/003-v4-add-rk2023.patch b/projects/Rockchip/packages/linux/patches/RK3566-ML/003-v4-add-rk2023.patch new file mode 100644 index 0000000000..707113aa95 --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566-ML/003-v4-add-rk2023.patch @@ -0,0 +1,1495 @@ +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, + sebastian.reichel@collabora.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, + heiko@sntech.de, conor+dt@kernel.org, + krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, + Chris Morgan +Subject: [PATCH V4 0/6] rockchip: Add Powkiddy RK2023 +Date: Fri, 17 Nov 2023 14:25:30 -0600 [thread overview] +Message-ID: <20231117202536.1387815-1-macroalpha82@gmail.com> (raw) + +From: Chris Morgan + +Add support for the Powkiddy RK2023, which is extremely similar to +existing Powkiddy RGB30 device. + +Changes since V3: + - Corrected commit subject lines. + +Changes since V2: + - Split "hold panel in reset" to a separate patch for the NV3051D. + - Changed replaced common include to a new Powkiddy specific include + to better reflect the similarity of these two devices (and so as + to not have to delete so many nodes). + +Changes since V1: + - Necessary clock changes have been accepted to mainline, so removed + from this series. + https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git/commit/?id=f1db0865b4628d5e2e85347350c077a71f0629d2 + - Combined Powkiddy RK3566 devices in devicetree documentation. + Dropped ack from binding as this change is vastly different than + the previous update. + - Updated panel driver to hold panel in reset status after unprepare. + +Chris Morgan (6): + dt-bindings: display: panel: Update NewVision NV3051D compatibles + drm/panel: nv3051d: Hold panel in reset for unprepare + nv3051d: Add Powkiddy RK2023 Panel Support + dt-bindings: arm: rockchip: Add Powkiddy RK2023 + arm64: dts: rockchip: Update powkiddy,rgb30 include to rk2023 DTSI + arm: dts: rockchip: Add Powkiddy RK2023 + + .../devicetree/bindings/arm/rockchip.yaml | 6 +- + .../display/panel/newvision,nv3051d.yaml | 2 +- + arch/arm64/boot/dts/rockchip/Makefile | 1 + + .../dts/rockchip/rk3566-powkiddy-rgb30.dts | 154 +-- + .../dts/rockchip/rk3566-powkiddy-rk2023.dts | 38 + + .../dts/rockchip/rk3566-powkiddy-rk2023.dtsi | 875 ++++++++++++++++++ + .../gpu/drm/panel/panel-newvision-nv3051d.c | 57 +- + 7 files changed, 981 insertions(+), 152 deletions(-) + create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts + create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi + +-- +2.34.1 +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, + sebastian.reichel@collabora.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, + heiko@sntech.de, conor+dt@kernel.org, + krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, + Chris Morgan , + Krzysztof Kozlowski +Subject: [PATCH V4 1/6] dt-bindings: display: nv3051d: Update NewVision NV3051D compatibles +Date: Fri, 17 Nov 2023 14:25:31 -0600 [thread overview] +Message-ID: <20231117202536.1387815-2-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Update the NewVision NV3051D compatible strings by adding a new panel, +the powkiddy,rk2023-panel, and removing another entry, the +anbernic,rg353v-panel. + +The rk2023-panel is similar to the rg353p-panel but has slightly +different timings so it needs a new string. + +The rg353v-panel is duplicate to the rg353p-panel, so remove it. No +current devices use it and changes to the driver mean it is no longer +valid as a compatible string. + +Signed-off-by: Chris Morgan +Acked-by: Krzysztof Kozlowski +--- + .../devicetree/bindings/display/panel/newvision,nv3051d.yaml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Documentation/devicetree/bindings/display/panel/newvision,nv3051d.yaml b/Documentation/devicetree/bindings/display/panel/newvision,nv3051d.yaml +index cce775a87f87..7a634fbc465e 100644 +--- a/Documentation/devicetree/bindings/display/panel/newvision,nv3051d.yaml ++++ b/Documentation/devicetree/bindings/display/panel/newvision,nv3051d.yaml +@@ -21,7 +21,7 @@ properties: + - enum: + - anbernic,rg351v-panel + - anbernic,rg353p-panel +- - anbernic,rg353v-panel ++ - powkiddy,rk2023-panel + - const: newvision,nv3051d + + reg: true +-- +2.34.1 + +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, + sebastian.reichel@collabora.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, + heiko@sntech.de, conor+dt@kernel.org, + krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, + Chris Morgan , + Jessica Zhang +Subject: [PATCH V4 2/6] drm/panel: nv3051d: Hold panel in reset for unprepare +Date: Fri, 17 Nov 2023 14:25:32 -0600 [thread overview] +Message-ID: <20231117202536.1387815-3-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Improve the panel's ability to restore from suspend by holding the +panel in suspend after unprepare. + +Fixes: b1d39f0f4264 ("drm/panel: Add NewVision NV3051D MIPI-DSI LCD panel") +Signed-off-by: Chris Morgan +Reviewed-by: Jessica Zhang +--- + drivers/gpu/drm/panel/panel-newvision-nv3051d.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c +index 79de6c886292..c44c6945662f 100644 +--- a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c ++++ b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c +@@ -261,6 +261,8 @@ static int panel_nv3051d_unprepare(struct drm_panel *panel) + + usleep_range(10000, 15000); + ++ gpiod_set_value_cansleep(ctx->reset_gpio, 1); ++ + regulator_disable(ctx->vdd); + + return 0; +-- +2.34.1 + +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, + sebastian.reichel@collabora.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, + heiko@sntech.de, conor+dt@kernel.org, + krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, + Chris Morgan , + Jessica Zhang +Subject: [PATCH V4 3/6] drm/panel: nv3051d: Add Powkiddy RK2023 Panel Support +Date: Fri, 17 Nov 2023 14:25:33 -0600 [thread overview] +Message-ID: <20231117202536.1387815-4-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Refactor the driver to add support for the powkiddy,rk2023-panel +panel. This panel is extremely similar to the rg353p-panel but +requires a smaller vertical back porch and isn't as tolerant of +higher speeds. Note that while all of these panels are identical in +size (70x57) it is possible future panels may not be. + +Tested on my RG351V, RG353P, RG353V, and RK2023. + +Signed-off-by: Chris Morgan +Reviewed-by: Jessica Zhang +--- + .../gpu/drm/panel/panel-newvision-nv3051d.c | 55 +++++++++++++++---- + 1 file changed, 44 insertions(+), 11 deletions(-) + +diff --git a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c +index c44c6945662f..94d89ffd596b 100644 +--- a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c ++++ b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c +@@ -28,6 +28,7 @@ struct nv3051d_panel_info { + unsigned int num_modes; + u16 width_mm, height_mm; + u32 bus_flags; ++ u32 mode_flags; + }; + + struct panel_nv3051d { +@@ -387,15 +388,7 @@ static int panel_nv3051d_probe(struct mipi_dsi_device *dsi) + + dsi->lanes = 4; + dsi->format = MIPI_DSI_FMT_RGB888; +- dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | +- MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET; +- +- /* +- * The panel in the RG351V is identical to the 353P, except it +- * requires MIPI_DSI_CLOCK_NON_CONTINUOUS to operate correctly. +- */ +- if (of_device_is_compatible(dev->of_node, "anbernic,rg351v-panel")) +- dsi->mode_flags |= MIPI_DSI_CLOCK_NON_CONTINUOUS; ++ dsi->mode_flags = ctx->panel_info->mode_flags; + + drm_panel_init(&ctx->panel, &dsi->dev, &panel_nv3051d_funcs, + DRM_MODE_CONNECTOR_DSI); +@@ -483,16 +476,56 @@ static const struct drm_display_mode nv3051d_rgxx3_modes[] = { + }, + }; + +-static const struct nv3051d_panel_info nv3051d_rgxx3_info = { ++static const struct drm_display_mode nv3051d_rk2023_modes[] = { ++ { ++ .hdisplay = 640, ++ .hsync_start = 640 + 40, ++ .hsync_end = 640 + 40 + 2, ++ .htotal = 640 + 40 + 2 + 80, ++ .vdisplay = 480, ++ .vsync_start = 480 + 18, ++ .vsync_end = 480 + 18 + 2, ++ .vtotal = 480 + 18 + 2 + 4, ++ .clock = 24150, ++ .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, ++ }, ++}; ++ ++static const struct nv3051d_panel_info nv3051d_rg351v_info = { + .display_modes = nv3051d_rgxx3_modes, + .num_modes = ARRAY_SIZE(nv3051d_rgxx3_modes), + .width_mm = 70, + .height_mm = 57, + .bus_flags = DRM_BUS_FLAG_DE_LOW | DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE, ++ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | ++ MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET | ++ MIPI_DSI_CLOCK_NON_CONTINUOUS, ++}; ++ ++static const struct nv3051d_panel_info nv3051d_rg353p_info = { ++ .display_modes = nv3051d_rgxx3_modes, ++ .num_modes = ARRAY_SIZE(nv3051d_rgxx3_modes), ++ .width_mm = 70, ++ .height_mm = 57, ++ .bus_flags = DRM_BUS_FLAG_DE_LOW | DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE, ++ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | ++ MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET, ++}; ++ ++static const struct nv3051d_panel_info nv3051d_rk2023_info = { ++ .display_modes = nv3051d_rk2023_modes, ++ .num_modes = ARRAY_SIZE(nv3051d_rk2023_modes), ++ .width_mm = 70, ++ .height_mm = 57, ++ .bus_flags = DRM_BUS_FLAG_DE_LOW | DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE, ++ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | ++ MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET, + }; + + static const struct of_device_id newvision_nv3051d_of_match[] = { +- { .compatible = "newvision,nv3051d", .data = &nv3051d_rgxx3_info }, ++ { .compatible = "anbernic,rg351v-panel", .data = &nv3051d_rg351v_info }, ++ { .compatible = "anbernic,rg353p-panel", .data = &nv3051d_rg353p_info }, ++ { .compatible = "powkiddy,rk2023-panel", .data = &nv3051d_rk2023_info }, + { /* sentinel */ } + }; + MODULE_DEVICE_TABLE(of, newvision_nv3051d_of_match); +-- +2.34.1 + +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, + sebastian.reichel@collabora.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, + heiko@sntech.de, conor+dt@kernel.org, + krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, + Chris Morgan , + Krzysztof Kozlowski +Subject: [PATCH V4 4/6] dt-bindings: arm: rockchip: Add Powkiddy RK2023 +Date: Fri, 17 Nov 2023 14:25:34 -0600 [thread overview] +Message-ID: <20231117202536.1387815-5-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> + +From: Chris Morgan + +The Powkiddy RK2023 is a handheld gaming device made by Powkiddy and +powered by the Rockchip RK3566 SoC. Group the Powkiddy RK3566 based +devices together as they are both extremely similar. + +Signed-off-by: Chris Morgan +Acked-by: Krzysztof Kozlowski +--- + Documentation/devicetree/bindings/arm/rockchip.yaml | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/Documentation/devicetree/bindings/arm/rockchip.yaml b/Documentation/devicetree/bindings/arm/rockchip.yaml +index 5f7c6c4aad8f..5b015c4ed775 100644 +--- a/Documentation/devicetree/bindings/arm/rockchip.yaml ++++ b/Documentation/devicetree/bindings/arm/rockchip.yaml +@@ -674,9 +674,11 @@ properties: + - const: pine64,soquartz + - const: rockchip,rk3566 + +- - description: Powkiddy RGB30 ++ - description: Powkiddy RK3566 Handheld Gaming Console + items: +- - const: powkiddy,rgb30 ++ - enum: ++ - powkiddy,rgb30 ++ - powkiddy,rk2023 + - const: rockchip,rk3566 + + - description: Radxa Compute Module 3(CM3) +-- +2.34.1 + +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, + sebastian.reichel@collabora.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, + heiko@sntech.de, conor+dt@kernel.org, + krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, + Chris Morgan +Subject: [PATCH V4 5/6] arm64: dts: rockchip: Update powkiddy,rgb30 include to rk2023 DTSI +Date: Fri, 17 Nov 2023 14:25:35 -0600 [thread overview] +Message-ID: <20231117202536.1387815-6-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> + +From: Chris Morgan + +The Powkiddy RGB30 device is similar to the Anbernic RGxx3 series, +however there are several differences which require deleting nodes in +order to properly define the hardware. This was deemed unacceptable +for the RK2023, so instead create a common include file for the +Powkiddy RGB30 and the Powkiddy RK2023. The only notable difference +between these Powkiddy devices are the panel in use, the device +name, and the PLL_VPLL frequency necessary to support the different +panels. + +Since the RK2023 was released on the market first, name the common +include file after it. + +Signed-off-by: Chris Morgan +--- + .../dts/rockchip/rk3566-powkiddy-rgb30.dts | 154 +-- + .../dts/rockchip/rk3566-powkiddy-rk2023.dtsi | 875 ++++++++++++++++++ + 2 files changed, 891 insertions(+), 138 deletions(-) + create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi + +diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts +index 1ead3c5c24b3..0ac64f043b80 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts ++++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts +@@ -5,67 +5,11 @@ + #include + #include + #include +-#include "rk3566-anbernic-rg353x.dtsi" ++#include "rk3566-powkiddy-rk2023.dtsi" + + / { + model = "RGB30"; + compatible = "powkiddy,rgb30", "rockchip,rk3566"; +- +- aliases { +- mmc1 = &sdmmc0; +- mmc2 = &sdmmc1; +- mmc3 = &sdmmc2; +- }; +- +- battery: battery { +- compatible = "simple-battery"; +- charge-full-design-microamp-hours = <3151000>; +- charge-term-current-microamp = <300000>; +- constant-charge-current-max-microamp = <2000000>; +- constant-charge-voltage-max-microvolt = <4250000>; +- factory-internal-resistance-micro-ohms = <117000>; +- voltage-max-design-microvolt = <4172000>; +- voltage-min-design-microvolt = <3400000>; +- +- ocv-capacity-celsius = <20>; +- ocv-capacity-table-0 = <4172000 100>, <4092000 95>, <4035000 90>, <3990000 85>, +- <3939000 80>, <3895000 75>, <3852000 70>, <3807000 65>, +- <3762000 60>, <3713000 55>, <3672000 50>, <3647000 45>, +- <3629000 40>, <3613000 35>, <3598000 30>, <3578000 25>, +- <3550000 20>, <3519000 15>, <3479000 10>, <3438000 5>, +- <3400000 0>; +- }; +- +- /* +- * Channels reversed for speakers. Headphones automatically switch via hardware when +- * detected with no ability to control output in software. Headphones appear to be mono +- * (each output channel receives all audio). No microphone support on 3.5mm jack. +- */ +- sound { +- compatible = "simple-audio-card"; +- simple-audio-card,name = "rk817_ext"; +- simple-audio-card,format = "i2s"; +- simple-audio-card,mclk-fs = <256>; +- simple-audio-card,widgets = +- "Headphone", "Headphones"; +- simple-audio-card,routing = +- "Headphones", "HPOL", +- "Headphones", "HPOR"; +- +- simple-audio-card,codec { +- sound-dai = <&rk817>; +- }; +- +- simple-audio-card,cpu { +- sound-dai = <&i2s1_8ch>; +- }; +- }; +-}; +- +-/delete-node/ &adc_keys; +- +-&chosen { +- /delete-property/ stdout-path; + }; + + &cru { +@@ -75,87 +19,21 @@ &cru { + <200000000>, <292500000>; + }; + +-&gpio_keys_control { +- button-r1 { +- gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>; +- label = "TR"; +- linux,code = ; +- }; +- +- button-r2 { +- gpios = <&gpio3 RK_PB4 GPIO_ACTIVE_LOW>; +- label = "TR2"; +- linux,code = ; +- }; +-}; +- +-/delete-node/ &{/i2c@fdd40000/regulator@40}; +- +-&i2c0 { +- vdd_cpu: regulator@1c { +- compatible = "tcs,tcs4525"; +- reg = <0x1c>; +- fcs,suspend-voltage-selector = <1>; +- regulator-always-on; +- regulator-boot-on; +- regulator-min-microvolt = <712500>; +- regulator-max-microvolt = <1390000>; +- regulator-name = "vdd_cpu"; +- regulator-ramp-delay = <2300>; +- vin-supply = <&vcc_sys>; +- regulator-state-mem { +- regulator-off-in-suspend; ++&dsi0 { ++ panel: panel@0 { ++ compatible = "powkiddy,rgb30-panel"; ++ reg = <0>; ++ backlight = <&backlight>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&lcd_rst>; ++ reset-gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_LOW>; ++ vcc-supply = <&vcc3v3_lcd0_n>; ++ iovcc-supply = <&vcc3v3_lcd0_n>; ++ ++ port { ++ mipi_in_panel: endpoint { ++ remote-endpoint = <&mipi_out_panel>; ++ }; + }; + }; + }; +- +-/* +- * Device has 2 red LEDs instead of an amber and a red. Relabel LEDs as +- * red_led0 and red_led1. +- */ +-/delete-node/ &{/pwm-leds/led-1}; +-/delete-node/ &{/pwm-leds/led-2}; +- +-&leds { +- red_led0: led-1 { +- color = ; +- function = LED_FUNCTION_CHARGING; +- max-brightness = <255>; +- pwms = <&pwm7 0 25000 0>; +- }; +- +- red_led1: led-2 { +- color = ; +- default-state = "off"; +- function = LED_FUNCTION_STATUS; +- max-brightness = <255>; +- pwms = <&pwm0 0 25000 0>; +- }; +-}; +- +-&panel { +- compatible = "powkiddy,rgb30-panel"; +- vcc-supply = <&vcc3v3_lcd0_n>; +- iovcc-supply = <&vcc3v3_lcd0_n>; +- /delete-property/ vdd-supply; +-}; +- +-&pwm5 { +- status = "disabled"; +-}; +- +-&rk817 { +- rk817_charger: charger { +- monitored-battery = <&battery>; +- rockchip,resistor-sense-micro-ohms = <10000>; +- rockchip,sleep-enter-current-microamp = <300000>; +- rockchip,sleep-filter-current-microamp = <100000>; +- }; +-}; +- +-/* There is no UART header visible on the board for this device. */ +-&uart2 { +- status = "disabled"; +-}; +- +-/delete-node/ &vibrator; +diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi +new file mode 100644 +index 000000000000..0fa8f06f94cd +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi +@@ -0,0 +1,875 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include ++#include ++#include ++#include ++#include ++#include "rk3566.dtsi" ++ ++/ { ++ aliases { ++ mmc1 = &sdmmc0; ++ mmc2 = &sdmmc1; ++ mmc3 = &sdmmc2; ++ }; ++ ++ adc-joystick { ++ compatible = "adc-joystick"; ++ io-channels = <&adc_mux 0>, ++ <&adc_mux 1>, ++ <&adc_mux 2>, ++ <&adc_mux 3>; ++ pinctrl-0 = <&joy_mux_en>; ++ pinctrl-names = "default"; ++ poll-interval = <60>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ axis@0 { ++ reg = <0>; ++ abs-flat = <32>; ++ abs-fuzz = <32>; ++ abs-range = <1023 15>; ++ linux,code = ; ++ }; ++ ++ axis@1 { ++ reg = <1>; ++ abs-flat = <32>; ++ abs-fuzz = <32>; ++ abs-range = <15 1023>; ++ linux,code = ; ++ }; ++ ++ axis@2 { ++ reg = <2>; ++ abs-flat = <32>; ++ abs-fuzz = <32>; ++ abs-range = <15 1023>; ++ linux,code = ; ++ }; ++ ++ axis@3 { ++ reg = <3>; ++ abs-flat = <32>; ++ abs-fuzz = <32>; ++ abs-range = <1023 15>; ++ linux,code = ; ++ }; ++ }; ++ ++ adc_mux: adc-mux { ++ compatible = "io-channel-mux"; ++ channels = "left_x", "right_x", "left_y", "right_y"; ++ #io-channel-cells = <1>; ++ io-channels = <&saradc 3>; ++ io-channel-names = "parent"; ++ mux-controls = <&gpio_mux>; ++ settle-time-us = <100>; ++ }; ++ ++ backlight: backlight { ++ compatible = "pwm-backlight"; ++ power-supply = <&vcc_sys>; ++ pwms = <&pwm4 0 25000 0>; ++ }; ++ ++ battery: battery { ++ compatible = "simple-battery"; ++ charge-full-design-microamp-hours = <3151000>; ++ charge-term-current-microamp = <300000>; ++ constant-charge-current-max-microamp = <2000000>; ++ constant-charge-voltage-max-microvolt = <4250000>; ++ factory-internal-resistance-micro-ohms = <117000>; ++ voltage-max-design-microvolt = <4172000>; ++ voltage-min-design-microvolt = <3400000>; ++ ++ ocv-capacity-celsius = <20>; ++ ocv-capacity-table-0 = <4172000 100>, <4092000 95>, <4035000 90>, <3990000 85>, ++ <3939000 80>, <3895000 75>, <3852000 70>, <3807000 65>, ++ <3762000 60>, <3713000 55>, <3672000 50>, <3647000 45>, ++ <3629000 40>, <3613000 35>, <3598000 30>, <3578000 25>, ++ <3550000 20>, <3519000 15>, <3479000 10>, <3438000 5>, ++ <3400000 0>; ++ }; ++ ++ gpio_keys_control: gpio-keys-control { ++ compatible = "gpio-keys"; ++ pinctrl-0 = <&btn_pins_ctrl>; ++ pinctrl-names = "default"; ++ ++ button-a { ++ gpios = <&gpio3 RK_PC2 GPIO_ACTIVE_LOW>; ++ label = "EAST"; ++ linux,code = ; ++ }; ++ ++ button-b { ++ gpios = <&gpio3 RK_PC3 GPIO_ACTIVE_LOW>; ++ label = "SOUTH"; ++ linux,code = ; ++ }; ++ ++ button-down { ++ gpios = <&gpio3 RK_PA4 GPIO_ACTIVE_LOW>; ++ label = "DPAD-DOWN"; ++ linux,code = ; ++ }; ++ ++ button-l1 { ++ gpios = <&gpio3 RK_PB1 GPIO_ACTIVE_LOW>; ++ label = "TL"; ++ linux,code = ; ++ }; ++ ++ button-l2 { ++ gpios = <&gpio3 RK_PB2 GPIO_ACTIVE_LOW>; ++ label = "TL2"; ++ linux,code = ; ++ }; ++ ++ button-left { ++ gpios = <&gpio3 RK_PA6 GPIO_ACTIVE_LOW>; ++ label = "DPAD-LEFT"; ++ linux,code = ; ++ }; ++ ++ button-r1 { ++ gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>; ++ label = "TR"; ++ linux,code = ; ++ }; ++ ++ button-r2 { ++ gpios = <&gpio3 RK_PB4 GPIO_ACTIVE_LOW>; ++ label = "TR2"; ++ linux,code = ; ++ }; ++ ++ button-right { ++ gpios = <&gpio3 RK_PA5 GPIO_ACTIVE_LOW>; ++ label = "DPAD-RIGHT"; ++ linux,code = ; ++ }; ++ ++ button-select { ++ gpios = <&gpio3 RK_PB6 GPIO_ACTIVE_LOW>; ++ label = "SELECT"; ++ linux,code = ; ++ }; ++ ++ button-start { ++ gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_LOW>; ++ label = "START"; ++ linux,code = ; ++ }; ++ ++ button-thumbl { ++ gpios = <&gpio3 RK_PA1 GPIO_ACTIVE_LOW>; ++ label = "THUMBL"; ++ linux,code = ; ++ }; ++ ++ button-thumbr { ++ gpios = <&gpio3 RK_PA2 GPIO_ACTIVE_LOW>; ++ label = "THUMBR"; ++ linux,code = ; ++ }; ++ ++ button-up { ++ gpios = <&gpio3 RK_PA3 GPIO_ACTIVE_LOW>; ++ label = "DPAD-UP"; ++ linux,code = ; ++ }; ++ ++ button-x { ++ gpios = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>; ++ label = "NORTH"; ++ linux,code = ; ++ }; ++ ++ button-y { ++ gpios = <&gpio3 RK_PC1 GPIO_ACTIVE_LOW>; ++ label = "WEST"; ++ linux,code = ; ++ }; ++ }; ++ ++ gpio_keys_vol: gpio-keys-vol { ++ compatible = "gpio-keys"; ++ autorepeat; ++ pinctrl-0 = <&btn_pins_vol>; ++ pinctrl-names = "default"; ++ ++ button-vol-down { ++ gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>; ++ label = "VOLUMEDOWN"; ++ linux,code = ; ++ }; ++ ++ button-vol-up { ++ gpios = <&gpio3 RK_PA7 GPIO_ACTIVE_LOW>; ++ label = "VOLUMEUP"; ++ linux,code = ; ++ }; ++ }; ++ ++ gpio_mux: mux-controller { ++ compatible = "gpio-mux"; ++ mux-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>, ++ <&gpio0 RK_PB7 GPIO_ACTIVE_LOW>; ++ #mux-control-cells = <0>; ++ }; ++ ++ hdmi-con { ++ compatible = "hdmi-connector"; ++ ddc-i2c-bus = <&i2c5>; ++ type = "c"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; ++ ++ /* ++ * Device also includes an always on LED that is wired to the 5V input ++ * voltage and is on when the device is plugged in. ++ */ ++ leds: pwm-leds { ++ compatible = "pwm-leds"; ++ ++ green_led: led-0 { ++ color = ; ++ function = LED_FUNCTION_STATUS; ++ max-brightness = <255>; ++ pwms = <&pwm6 0 25000 0>; ++ }; ++ ++ red_led: led-1 { ++ color = ; ++ function = LED_FUNCTION_CHARGING; ++ max-brightness = <255>; ++ pwms = <&pwm7 0 25000 0>; ++ }; ++ }; ++ ++ sdio_pwrseq: sdio-pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ clocks = <&rk817 1>; ++ clock-names = "ext_clock"; ++ pinctrl-0 = <&wifi_enable_h>; ++ pinctrl-names = "default"; ++ post-power-on-delay-ms = <200>; ++ reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_LOW>; ++ }; ++ ++ /* ++ * Channels reversed for speakers. Headphones automatically switch via hardware when ++ * detected with no ability to control output in software. Headphones appear to be mono ++ * (each output channel receives all audio). No microphone support on 3.5mm jack. ++ */ ++ sound { ++ compatible = "simple-audio-card"; ++ simple-audio-card,name = "rk817_ext"; ++ simple-audio-card,format = "i2s"; ++ simple-audio-card,mclk-fs = <256>; ++ simple-audio-card,widgets = ++ "Headphone", "Headphones"; ++ simple-audio-card,routing = ++ "Headphones", "HPOL", ++ "Headphones", "HPOR"; ++ ++ simple-audio-card,codec { ++ sound-dai = <&rk817>; ++ }; ++ ++ simple-audio-card,cpu { ++ sound-dai = <&i2s1_8ch>; ++ }; ++ }; ++ ++ vcc3v3_lcd0_n: regulator-vcc3v3-lcd0 { ++ compatible = "regulator-fixed"; ++ gpio = <&gpio0 RK_PC2 GPIO_ACTIVE_HIGH>; ++ enable-active-high; ++ pinctrl-0 = <&vcc_lcd_h>; ++ pinctrl-names = "default"; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc3v3_lcd0_n"; ++ vin-supply = <&vcc_3v3>; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_sys: regulator-vcc-sys { ++ compatible = "regulator-fixed"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3800000>; ++ regulator-max-microvolt = <3800000>; ++ regulator-name = "vcc_sys"; ++ }; ++ ++ vcc_wifi: regulator-vcc-wifi { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>; ++ pinctrl-0 = <&vcc_wifi_h>; ++ pinctrl-names = "default"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc_wifi"; ++ }; ++}; ++ ++&combphy1 { ++ status = "okay"; ++}; ++ ++&cpu0 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu1 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu2 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu3 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&dsi0 { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ ports { ++ dsi0_in: port@0 { ++ reg = <0>; ++ dsi0_in_vp1: endpoint { ++ remote-endpoint = <&vp1_out_dsi0>; ++ }; ++ }; ++ ++ dsi0_out: port@1 { ++ reg = <1>; ++ mipi_out_panel: endpoint { ++ remote-endpoint = <&mipi_in_panel>; ++ }; ++ }; ++ }; ++}; ++ ++&dsi_dphy0 { ++ status = "okay"; ++}; ++ ++&gpu { ++ mali-supply = <&vdd_gpu>; ++ status = "okay"; ++}; ++ ++&hdmi { ++ ddc-i2c-bus = <&i2c5>; ++ pinctrl-0 = <&hdmitxm0_cec>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; ++ ++&hdmi_in { ++ hdmi_in_vp0: endpoint { ++ remote-endpoint = <&vp0_out_hdmi>; ++ }; ++}; ++ ++&hdmi_out { ++ hdmi_out_con: endpoint { ++ remote-endpoint = <&hdmi_con_in>; ++ }; ++}; ++ ++&hdmi_sound { ++ status = "okay"; ++}; ++ ++&i2c0 { ++ status = "okay"; ++ ++ rk817: pmic@20 { ++ compatible = "rockchip,rk817"; ++ reg = <0x20>; ++ interrupt-parent = <&gpio0>; ++ interrupts = ; ++ clock-output-names = "rk808-clkout1", "rk808-clkout2"; ++ clock-names = "mclk"; ++ clocks = <&cru I2S1_MCLKOUT_TX>; ++ assigned-clocks = <&cru I2S1_MCLKOUT_TX>; ++ assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>; ++ #clock-cells = <1>; ++ #sound-dai-cells = <0>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2s1m0_mclk>, <&pmic_int_l>; ++ wakeup-source; ++ ++ vcc1-supply = <&vcc_sys>; ++ vcc2-supply = <&vcc_sys>; ++ vcc3-supply = <&vcc_sys>; ++ vcc4-supply = <&vcc_sys>; ++ vcc5-supply = <&vcc_sys>; ++ vcc6-supply = <&vcc_sys>; ++ vcc7-supply = <&vcc_sys>; ++ vcc8-supply = <&vcc_sys>; ++ vcc9-supply = <&dcdc_boost>; ++ ++ regulators { ++ vdd_logic: DCDC_REG1 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vdd_logic"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ regulator-suspend-microvolt = <900000>; ++ }; ++ }; ++ ++ vdd_gpu: DCDC_REG2 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vdd_gpu"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_ddr: DCDC_REG3 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vcc_ddr"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ vcc_3v3: DCDC_REG4 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vcc_3v3"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcca1v8_pmu: LDO_REG1 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcca1v8_pmu"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <1800000>; ++ }; ++ }; ++ ++ vdda_0v9: LDO_REG2 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <900000>; ++ regulator-max-microvolt = <900000>; ++ regulator-name = "vdda_0v9"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vdda0v9_pmu: LDO_REG3 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <900000>; ++ regulator-max-microvolt = <900000>; ++ regulator-name = "vdda0v9_pmu"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <900000>; ++ }; ++ }; ++ ++ vccio_acodec: LDO_REG4 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vccio_acodec"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vccio_sd: LDO_REG5 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vccio_sd"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc3v3_pmu: LDO_REG6 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc3v3_pmu"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcc_1v8: LDO_REG7 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc_1v8"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc1v8_dvp: LDO_REG8 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc1v8_dvp"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc2v8_dvp: LDO_REG9 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <2800000>; ++ regulator-max-microvolt = <2800000>; ++ regulator-name = "vcc2v8_dvp"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ dcdc_boost: BOOST { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <4700000>; ++ regulator-max-microvolt = <5400000>; ++ regulator-name = "boost"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ otg_switch: OTG_SWITCH { ++ regulator-name = "otg_switch"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ }; ++ ++ rk817_charger: charger { ++ monitored-battery = <&battery>; ++ rockchip,resistor-sense-micro-ohms = <10000>; ++ rockchip,sleep-enter-current-microamp = <300000>; ++ rockchip,sleep-filter-current-microamp = <100000>; ++ }; ++ }; ++ ++ vdd_cpu: regulator@1c { ++ compatible = "tcs,tcs4525"; ++ reg = <0x1c>; ++ fcs,suspend-voltage-selector = <1>; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <712500>; ++ regulator-max-microvolt = <1390000>; ++ regulator-name = "vdd_cpu"; ++ regulator-ramp-delay = <2300>; ++ vin-supply = <&vcc_sys>; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++}; ++ ++&i2c5 { ++ pinctrl-0 = <&i2c5m1_xfer>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; ++ ++&i2s0_8ch { ++ status = "okay"; ++}; ++ ++&i2s1_8ch { ++ pinctrl-0 = <&i2s1m0_sclktx ++ &i2s1m0_lrcktx ++ &i2s1m0_sdi0 ++ &i2s1m0_sdo0>; ++ pinctrl-names = "default"; ++ rockchip,trcm-sync-tx-only; ++ status = "okay"; ++}; ++ ++&pinctrl { ++ gpio-btns { ++ btn_pins_ctrl: btn-pins-ctrl { ++ rockchip,pins = ++ <3 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PC1 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PC3 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ ++ btn_pins_vol: btn-pins-vol { ++ rockchip,pins = ++ <3 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ joy-mux { ++ joy_mux_en: joy-mux-en { ++ rockchip,pins = ++ <0 RK_PB5 RK_FUNC_GPIO &pcfg_output_low>; ++ }; ++ }; ++ ++ gpio-lcd { ++ lcd_rst: lcd-rst { ++ rockchip,pins = ++ <4 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ pmic { ++ pmic_int_l: pmic-int-l { ++ rockchip,pins = ++ <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ sdio-pwrseq { ++ wifi_enable_h: wifi-enable-h { ++ rockchip,pins = ++ <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ vcc3v3-lcd { ++ vcc_lcd_h: vcc-lcd-h { ++ rockchip,pins = ++ <0 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ vcc-wifi { ++ vcc_wifi_h: vcc-wifi-h { ++ rockchip,pins = ++ <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++}; ++ ++&pmu_io_domains { ++ status = "okay"; ++ pmuio1-supply = <&vcc3v3_pmu>; ++ pmuio2-supply = <&vcc3v3_pmu>; ++ vccio1-supply = <&vccio_acodec>; ++ vccio3-supply = <&vccio_sd>; ++ vccio4-supply = <&vcc_1v8>; ++ vccio5-supply = <&vcc_3v3>; ++ vccio6-supply = <&vcc1v8_dvp>; ++ vccio7-supply = <&vcc_3v3>; ++}; ++ ++&pwm4 { ++ status = "okay"; ++}; ++ ++&pwm6 { ++ status = "okay"; ++}; ++ ++&pwm7 { ++ status = "okay"; ++}; ++ ++&saradc { ++ vref-supply = <&vcc_1v8>; ++ status = "okay"; ++}; ++ ++&sdmmc0 { ++ bus-width = <4>; ++ cap-sd-highspeed; ++ cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>; ++ disable-wp; ++ pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>; ++ pinctrl-names = "default"; ++ sd-uhs-sdr104; ++ vmmc-supply = <&vcc_3v3>; ++ vqmmc-supply = <&vccio_sd>; ++ status = "okay"; ++}; ++ ++&sdmmc1 { ++ bus-width = <4>; ++ cap-sd-highspeed; ++ cd-gpios = <&gpio2 RK_PB2 GPIO_ACTIVE_LOW>; ++ disable-wp; ++ pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_cmd &sdmmc1_clk &sdmmc1_det>; ++ pinctrl-names = "default"; ++ sd-uhs-sdr104; ++ vmmc-supply = <&vcc_3v3>; ++ vqmmc-supply = <&vcc1v8_dvp>; ++ status = "okay"; ++}; ++ ++&sdmmc2 { ++ bus-width = <4>; ++ cap-sd-highspeed; ++ cap-sdio-irq; ++ keep-power-in-suspend; ++ mmc-pwrseq = <&sdio_pwrseq>; ++ non-removable; ++ pinctrl-0 = <&sdmmc2m0_bus4 &sdmmc2m0_cmd &sdmmc2m0_clk>; ++ pinctrl-names = "default"; ++ vmmc-supply = <&vcc_wifi>; ++ vqmmc-supply = <&vcca1v8_pmu>; ++ status = "okay"; ++}; ++ ++&tsadc { ++ rockchip,hw-tshut-mode = <1>; ++ rockchip,hw-tshut-polarity = <0>; ++ status = "okay"; ++}; ++ ++&uart1 { ++ pinctrl-0 = <&uart1m1_xfer &uart1m1_ctsn &uart1m1_rtsn>; ++ pinctrl-names = "default"; ++ uart-has-rtscts; ++ status = "okay"; ++ ++ bluetooth { ++ compatible = "realtek,rtl8821cs-bt", "realtek,rtl8723bs-bt"; ++ device-wake-gpios = <&gpio4 4 GPIO_ACTIVE_HIGH>; ++ enable-gpios = <&gpio4 3 GPIO_ACTIVE_HIGH>; ++ host-wake-gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>; ++ }; ++}; ++ ++&usb_host0_xhci { ++ dr_mode = "peripheral"; ++ phys = <&usb2phy0_otg>; ++ phy-names = "usb2-phy"; ++ status = "okay"; ++}; ++ ++&usb_host1_ehci { ++ status = "okay"; ++}; ++ ++&usb_host1_ohci { ++ status = "okay"; ++}; ++ ++&usb_host1_xhci { ++ phy-names = "usb2-phy", "usb3-phy"; ++ phys = <&usb2phy1_host>, <&combphy1 PHY_TYPE_USB3>; ++ status = "okay"; ++}; ++ ++&usb2phy0 { ++ status = "okay"; ++}; ++ ++&usb2phy0_otg { ++ status = "okay"; ++}; ++ ++&usb2phy1 { ++ status = "okay"; ++}; ++ ++&usb2phy1_host { ++ status = "okay"; ++}; ++ ++&vop { ++ assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; ++ assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; ++ status = "okay"; ++}; ++ ++&vop_mmu { ++ status = "okay"; ++}; ++ ++&vp0 { ++ vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { ++ reg = ; ++ remote-endpoint = <&hdmi_in_vp0>; ++ }; ++}; ++ ++&vp1 { ++ vp1_out_dsi0: endpoint@ROCKCHIP_VOP2_EP_MIPI0 { ++ reg = ; ++ remote-endpoint = <&dsi0_in_vp1>; ++ }; ++}; +-- +2.34.1 + +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, + sebastian.reichel@collabora.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, + heiko@sntech.de, conor+dt@kernel.org, + krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, + Chris Morgan +Subject: [PATCH V4 6/6] arm64: dts: rockchip: Add Powkiddy RK2023 +Date: Fri, 17 Nov 2023 14:25:36 -0600 [thread overview] +Message-ID: <20231117202536.1387815-7-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add support for the Powkiddy RK2023. The Powkiddy RK2023 is a handheld +gaming device with a 3.5 inch screen powered by the Rockchip RK3566 +SoC. The device looks physically different from the Powkiddy RGB30, +but is functionally identical except for the panel. + +Signed-off-by: Chris Morgan +--- + arch/arm64/boot/dts/rockchip/Makefile | 1 + + .../dts/rockchip/rk3566-powkiddy-rk2023.dts | 38 +++++++++++++++++++ + 2 files changed, 39 insertions(+) + create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts + +diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile +index a18f33bf0c0e..f969618da352 100644 +--- a/arch/arm64/boot/dts/rockchip/Makefile ++++ b/arch/arm64/boot/dts/rockchip/Makefile +@@ -78,6 +78,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-anbernic-rg503.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.1.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.2.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-rgb30.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-rk2023.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-a.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-b.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-radxa-cm3-io.dtb +diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts +new file mode 100644 +index 000000000000..ba32d0793dca +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts +@@ -0,0 +1,38 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include ++#include ++#include ++#include "rk3566-powkiddy-rk2023.dtsi" ++ ++/ { ++ model = "RK2023"; ++ compatible = "powkiddy,rk2023", "rockchip,rk3566"; ++}; ++ ++&cru { ++ assigned-clocks = <&pmucru CLK_RTC_32K>, <&cru PLL_GPLL>, ++ <&pmucru PLL_PPLL>, <&cru PLL_VPLL>; ++ assigned-clock-rates = <32768>, <1200000000>, ++ <200000000>, <115200000>; ++}; ++ ++&dsi0 { ++ panel: panel@0 { ++ compatible = "powkiddy,rk2023-panel", "newvision,nv3051d"; ++ reg = <0>; ++ backlight = <&backlight>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&lcd_rst>; ++ reset-gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_LOW>; ++ vdd-supply = <&vcc3v3_lcd0_n>; ++ ++ port { ++ mipi_in_panel: endpoint { ++ remote-endpoint = <&mipi_out_panel>; ++ }; ++ }; ++ }; ++}; +-- +2.34.1 + diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/004-add-rg351v.patch b/projects/Rockchip/packages/linux/patches/RK3566-ML/004-add-rg351v.patch new file mode 100644 index 0000000000..052ee0fea2 --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566-ML/004-add-rg351v.patch @@ -0,0 +1,715 @@ +From: Chris Morgan +To: devicetree@vger.kernel.org +Cc: linux-rockchip@lists.infradead.org, maccraft123mc@gmail.com, + sebastian.reichel@collabora.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH 0/3] Add Support for Anbernic RG351V +Date: Mon, 20 Nov 2023 17:01:28 -0600 [thread overview] +Message-ID: <20231120230131.57705-1-macroalpha82@gmail.com> (raw) + +From: Chris Morgan + +Add support for the Anbernic RG351V handheld gaming console. + +Chris Morgan (3): + dt-bindings: arm: rockchip: Add Anbernic RG351V + arm64: dts: rockchip: Split RG351M from Odroid Go Advance + arm64: dts: rockchip: Add Anbernic RG351V + + .../devicetree/bindings/arm/rockchip.yaml | 6 +- + arch/arm64/boot/dts/rockchip/Makefile | 1 + + .../dts/rockchip/rk3326-anbernic-rg351m.dts | 18 +- + .../dts/rockchip/rk3326-anbernic-rg351m.dtsi | 478 ++++++++++++++++++ + .../dts/rockchip/rk3326-anbernic-rg351v.dts | 44 ++ + 5 files changed, 529 insertions(+), 18 deletions(-) + create mode 100644 arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dtsi + create mode 100644 arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts + +-- +2.34.1 +From: Chris Morgan +To: devicetree@vger.kernel.org +Cc: linux-rockchip@lists.infradead.org, maccraft123mc@gmail.com, + sebastian.reichel@collabora.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH 1/3] dt-bindings: arm: rockchip: Add Anbernic RG351V +Date: Mon, 20 Nov 2023 17:01:29 -0600 [thread overview] +Message-ID: <20231120230131.57705-2-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231120230131.57705-1-macroalpha82@gmail.com> + +From: Chris Morgan + +The Anbernic RG351V is a portable gaming console from Anbernic with the +RK3326 SoC. + +Signed-off-by: Chris Morgan +--- + Documentation/devicetree/bindings/arm/rockchip.yaml | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/Documentation/devicetree/bindings/arm/rockchip.yaml b/Documentation/devicetree/bindings/arm/rockchip.yaml +index 5f7c6c4aad8f..3786f901a1a7 100644 +--- a/Documentation/devicetree/bindings/arm/rockchip.yaml ++++ b/Documentation/devicetree/bindings/arm/rockchip.yaml +@@ -30,9 +30,11 @@ properties: + - const: amarula,vyasa-rk3288 + - const: rockchip,rk3288 + +- - description: Anbernic RG351M ++ - description: Anbernic RK3326 Handheld Gaming Console + items: +- - const: anbernic,rg351m ++ - enum: ++ - anbernic,rg351m ++ - anbernic,rg351v + - const: rockchip,rk3326 + + - description: Anbernic RG353P +-- +2.34.1 +From: Chris Morgan +To: devicetree@vger.kernel.org +Cc: linux-rockchip@lists.infradead.org, maccraft123mc@gmail.com, + sebastian.reichel@collabora.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH 2/3] arm64: dts: rockchip: Split RG351M from Odroid Go Advance +Date: Mon, 20 Nov 2023 17:01:30 -0600 [thread overview] +Message-ID: <20231120230131.57705-3-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231120230131.57705-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Split the RG351M into its own DTSI file. The RG351M, unlike the Odroid +Go Advance, has no ADC joysticks, no GPIO buttons (except for volume +on the RG351V), a PWM vibrator that interferes with an Odroid +regulator, and different LEDs. Split the RG351M into a DTSI file +that can then be imported into the DTS files for the RG351M and a +new RG351V. + +Signed-off-by: Chris Morgan +--- + .../dts/rockchip/rk3326-anbernic-rg351m.dts | 18 +- + .../dts/rockchip/rk3326-anbernic-rg351m.dtsi | 478 ++++++++++++++++++ + 2 files changed, 480 insertions(+), 16 deletions(-) + create mode 100644 arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dtsi + +diff --git a/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts +index ce318e05f0a6..f4d20f29c1b4 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts ++++ b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts +@@ -6,30 +6,16 @@ + */ + + /dts-v1/; +-#include "rk3326-odroid-go.dtsi" ++#include "rk3326-anbernic-rg351m.dtsi" + + / { + model = "Anbernic RG351M"; + compatible = "anbernic,rg351m", "rockchip,rk3326"; +- +- vibrator { +- compatible = "pwm-vibrator"; +- pwms = <&pwm0 0 1000000 0>; +- pwm-names = "enable"; +- }; + }; + +-/delete-node/ &builtin_gamepad; +-/delete-node/ &vcc_host; /* conflicts with pwm vibration motor */ +- + &internal_display { + compatible = "elida,kd35t133"; + iovcc-supply = <&vcc_lcd>; ++ rotation = <270>; + vdd-supply = <&vcc_lcd>; + }; +- +-&pwm0 { +- status = "okay"; +-}; +- +-/delete-node/ &rk817_charger; +diff --git a/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dtsi b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dtsi +new file mode 100644 +index 000000000000..89e64647b4fa +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dtsi +@@ -0,0 +1,478 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * Copyright (c) 2019 Hardkernel Co., Ltd ++ * Copyright (c) 2020 Theobroma Systems Design und Consulting GmbH ++ * Copyright (c) 2022 Maya Matuszczyk ++ */ ++ ++/dts-v1/; ++#include ++#include ++#include ++#include ++#include "rk3326.dtsi" ++ ++/ { ++ aliases { ++ mmc0 = &sdmmc; ++ }; ++ ++ chosen { ++ stdout-path = "serial2:115200n8"; ++ }; ++ ++ backlight: backlight { ++ compatible = "pwm-backlight"; ++ power-supply = <&vcc_bl>; ++ pwms = <&pwm1 0 25000 0>; ++ }; ++ ++ /* ++ * LED is a tri-state. Driven high it is red, driven low it is ++ * green, and not driven at all (pin set to input) it is amber. ++ * Additionally, there is a 2nd LED that is not controllable ++ * that is on (red) when plugged in to power. ++ */ ++ gpio_led: gpio-leds { ++ compatible = "gpio-leds"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&led_pin>; ++ ++ red_green_led: led-0 { ++ color = ; ++ gpios = <&gpio2 RK_PB5 GPIO_ACTIVE_HIGH>; ++ function = LED_FUNCTION_CHARGING; ++ }; ++ }; ++ ++ rk817-sound { ++ compatible = "simple-audio-card"; ++ simple-audio-card,name = "rk817_int"; ++ simple-audio-card,format = "i2s"; ++ simple-audio-card,hp-det-gpio = <&gpio2 RK_PC6 GPIO_ACTIVE_HIGH>; ++ simple-audio-card,mclk-fs = <256>; ++ simple-audio-card,widgets = ++ "Microphone", "Mic Jack", ++ "Headphone", "Headphones", ++ "Speaker", "Speaker"; ++ simple-audio-card,routing = ++ "MICL", "Mic Jack", ++ "Headphones", "HPOL", ++ "Headphones", "HPOR", ++ "Speaker", "SPKO"; ++ ++ simple-audio-card,codec { ++ sound-dai = <&rk817>; ++ }; ++ ++ simple-audio-card,cpu { ++ sound-dai = <&i2s1_2ch>; ++ }; ++ }; ++ ++ vccsys: vccsys { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc3v8_sys"; ++ regulator-always-on; ++ regulator-min-microvolt = <3800000>; ++ regulator-max-microvolt = <3800000>; ++ }; ++ ++ vibrator { ++ compatible = "pwm-vibrator"; ++ pwms = <&pwm0 0 1000000 0>; ++ pwm-names = "enable"; ++ }; ++}; ++ ++&cpu0 { ++ cpu-supply = <&vdd_arm>; ++}; ++ ++&cpu1 { ++ cpu-supply = <&vdd_arm>; ++}; ++ ++&cpu2 { ++ cpu-supply = <&vdd_arm>; ++}; ++ ++&cpu3 { ++ cpu-supply = <&vdd_arm>; ++}; ++ ++&cru { ++ assigned-clocks = <&cru PLL_NPLL>, ++ <&cru ACLK_BUS_PRE>, <&cru ACLK_PERI_PRE>, ++ <&cru HCLK_BUS_PRE>, <&cru HCLK_PERI_PRE>, ++ <&cru PCLK_BUS_PRE>, <&cru SCLK_GPU>; ++ ++ assigned-clock-rates = <1188000000>, ++ <200000000>, <200000000>, ++ <150000000>, <150000000>, ++ <100000000>, <200000000>; ++}; ++ ++&display_subsystem { ++ status = "okay"; ++}; ++ ++&dsi { ++ status = "okay"; ++ ++ ports { ++ mipi_out: port@1 { ++ reg = <1>; ++ ++ mipi_out_panel: endpoint { ++ remote-endpoint = <&mipi_in_panel>; ++ }; ++ }; ++ }; ++ ++ internal_display: panel@0 { ++ reg = <0>; ++ backlight = <&backlight>; ++ reset-gpios = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>; ++ ++ port { ++ mipi_in_panel: endpoint { ++ remote-endpoint = <&mipi_out_panel>; ++ }; ++ }; ++ }; ++}; ++ ++&dsi_dphy { ++ status = "okay"; ++}; ++ ++&gpu { ++ mali-supply = <&vdd_logic>; ++ status = "okay"; ++}; ++ ++&i2c0 { ++ clock-frequency = <400000>; ++ i2c-scl-falling-time-ns = <16>; ++ i2c-scl-rising-time-ns = <280>; ++ status = "okay"; ++ ++ rk817: pmic@20 { ++ compatible = "rockchip,rk817"; ++ reg = <0x20>; ++ #clock-cells = <1>; ++ clock-names = "mclk"; ++ clock-output-names = "rk808-clkout1", "xin32k"; ++ clocks = <&cru SCLK_I2S1_OUT>; ++ interrupt-parent = <&gpio0>; ++ interrupts = ; ++ pinctrl-0 = <&pmic_int>, <&i2s1_2ch_mclk>; ++ pinctrl-names = "default"; ++ #sound-dai-cells = <0>; ++ wakeup-source; ++ ++ vcc1-supply = <&vccsys>; ++ vcc2-supply = <&vccsys>; ++ vcc3-supply = <&vccsys>; ++ vcc4-supply = <&vccsys>; ++ vcc5-supply = <&vccsys>; ++ vcc6-supply = <&vccsys>; ++ vcc7-supply = <&vccsys>; ++ vcc8-supply = <&vccsys>; ++ ++ regulators { ++ vdd_logic: DCDC_REG1 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-max-microvolt = <1150000>; ++ regulator-min-microvolt = <950000>; ++ regulator-name = "vdd_logic"; ++ regulator-ramp-delay = <6001>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <950000>; ++ }; ++ }; ++ ++ vdd_arm: DCDC_REG2 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-max-microvolt = <1350000>; ++ regulator-min-microvolt = <950000>; ++ regulator-name = "vdd_arm"; ++ regulator-ramp-delay = <6001>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ regulator-suspend-microvolt = <950000>; ++ }; ++ }; ++ ++ vcc_ddr: DCDC_REG3 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-name = "vcc_ddr"; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ vcc_3v3: DCDC_REG4 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-max-microvolt = <3300000>; ++ regulator-min-microvolt = <3300000>; ++ regulator-name = "vcc_3v3"; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcc_1v8: LDO_REG2 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-max-microvolt = <1800000>; ++ regulator-min-microvolt = <1800000>; ++ regulator-name = "vcc_1v8"; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <1800000>; ++ }; ++ }; ++ ++ vdd_1v0: LDO_REG3 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-max-microvolt = <1000000>; ++ regulator-min-microvolt = <1000000>; ++ regulator-name = "vdd_1v0"; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <1000000>; ++ }; ++ }; ++ ++ vcc3v3_pmu: LDO_REG4 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-max-microvolt = <3300000>; ++ regulator-min-microvolt = <3300000>; ++ regulator-name = "vcc3v3_pmu"; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vccio_sd: LDO_REG5 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-max-microvolt = <3300000>; ++ regulator-min-microvolt = <1800000>; ++ regulator-name = "vccio_sd"; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcc_sd: LDO_REG6 { ++ regulator-boot-on; ++ regulator-max-microvolt = <3300000>; ++ regulator-min-microvolt = <3300000>; ++ regulator-name = "vcc_sd"; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcc_bl: LDO_REG7 { ++ regulator-max-microvolt = <3300000>; ++ regulator-min-microvolt = <3300000>; ++ regulator-name = "vcc_bl"; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcc_lcd: LDO_REG8 { ++ regulator-max-microvolt = <2800000>; ++ regulator-min-microvolt = <2800000>; ++ regulator-name = "vcc_lcd"; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ regulator-suspend-microvolt = <2800000>; ++ }; ++ }; ++ ++ vcc_wifi: LDO_REG9 { ++ regulator-max-microvolt = <3300000>; ++ regulator-min-microvolt = <3300000>; ++ regulator-name = "vcc_wifi"; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ usb_midu: BOOST { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-max-microvolt = <5400000>; ++ regulator-min-microvolt = <5000000>; ++ regulator-name = "usb_midu"; ++ }; ++ }; ++ ++ rk817_codec: codec { ++ rockchip,mic-in-differential; ++ }; ++ }; ++}; ++ ++&i2s1_2ch { ++ status = "okay"; ++}; ++ ++&io_domains { ++ vccio1-supply = <&vcc_3v3>; ++ vccio2-supply = <&vccio_sd>; ++ vccio3-supply = <&vcc_3v3>; ++ vccio4-supply = <&vcc_3v3>; ++ vccio5-supply = <&vcc_3v3>; ++ vccio6-supply = <&vcc_3v3>; ++ status = "okay"; ++}; ++ ++&pmu_io_domains { ++ pmuio1-supply = <&vcc3v3_pmu>; ++ pmuio2-supply = <&vcc3v3_pmu>; ++ status = "okay"; ++}; ++ ++&pwm0 { ++ status = "okay"; ++}; ++ ++&pwm1 { ++ status = "okay"; ++}; ++ ++&saradc { ++ vref-supply = <&vcc_1v8>; ++ status = "okay"; ++}; ++ ++&sdmmc { ++ cap-sd-highspeed; ++ card-detect-delay = <200>; ++ cd-gpios = <&gpio0 RK_PA3 GPIO_ACTIVE_LOW>; ++ sd-uhs-sdr12; ++ sd-uhs-sdr25; ++ sd-uhs-sdr50; ++ sd-uhs-sdr104; ++ vmmc-supply = <&vcc_sd>; ++ vqmmc-supply = <&vccio_sd>; ++ status = "okay"; ++}; ++ ++&sfc { ++ #address-cells = <1>; ++ pinctrl-0 = <&sfc_clk &sfc_cs0 &sfc_bus2>; ++ pinctrl-names = "default"; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ flash@0 { ++ compatible = "jedec,spi-nor"; ++ reg = <0>; ++ spi-max-frequency = <108000000>; ++ spi-rx-bus-width = <2>; ++ spi-tx-bus-width = <1>; ++ }; ++}; ++ ++&tsadc { ++ status = "okay"; ++}; ++ ++&u2phy { ++ status = "okay"; ++ ++ u2phy_host: host-port { ++ status = "okay"; ++ }; ++ ++ u2phy_otg: otg-port { ++ status = "disabled"; ++ }; ++}; ++ ++&usb20_otg { ++ status = "okay"; ++}; ++ ++&uart2 { ++ pinctrl-0 = <&uart2m1_xfer>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; ++ ++&vopb { ++ status = "okay"; ++}; ++ ++&vopb_mmu { ++ status = "okay"; ++}; ++ ++&pinctrl { ++ headphone { ++ hp_det: hp-det { ++ rockchip,pins = <2 RK_PC6 RK_FUNC_GPIO &pcfg_pull_down>; ++ }; ++ }; ++ ++ leds { ++ led_pin: led-pin { ++ rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ pmic { ++ dc_det: dc-det { ++ rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ pmic_int: pmic-int { ++ rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ ++ soc_slppin_gpio: soc_slppin_gpio { ++ rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_output_low>; ++ }; ++ ++ soc_slppin_rst: soc_slppin_rst { ++ rockchip,pins = <0 RK_PA4 2 &pcfg_pull_none>; ++ }; ++ ++ soc_slppin_slp: soc_slppin_slp { ++ rockchip,pins = <0 RK_PA4 1 &pcfg_pull_none>; ++ }; ++ }; ++}; +-- +2.34.1 + +From: Chris Morgan +To: devicetree@vger.kernel.org +Cc: linux-rockchip@lists.infradead.org, maccraft123mc@gmail.com, + sebastian.reichel@collabora.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH 3/3] arm64: dts: rockchip: Add Anbernic RG351V +Date: Mon, 20 Nov 2023 17:01:31 -0600 [thread overview] +Message-ID: <20231120230131.57705-4-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231120230131.57705-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add support for the Anbernic RG351V, which is a handheld gaming console +from Anbernic with an RK3326 SoC, a 640x480 LCD display, a single +analog joystick with several face buttons, two USB C ports, and +internal WiFi over USB. All hardware has been tested as working +except for the battery, which will require further modification to the +mainline rk817 battery driver before it can be used (the device was +built without a shunt resistor, and as such the battery cannot +measure current; only voltage). + +Signed-off-by: Chris Morgan +--- + arch/arm64/boot/dts/rockchip/Makefile | 1 + + .../dts/rockchip/rk3326-anbernic-rg351v.dts | 44 +++++++++++++++++++ + 2 files changed, 45 insertions(+) + create mode 100644 arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts + +diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile +index a18f33bf0c0e..0ac27cf782d7 100644 +--- a/arch/arm64/boot/dts/rockchip/Makefile ++++ b/arch/arm64/boot/dts/rockchip/Makefile +@@ -9,6 +9,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-roc-cc.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-rock-pi-s.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3318-a95x-z2.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-anbernic-rg351m.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-anbernic-rg351v.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2-v11.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go3.dtb +diff --git a/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts +new file mode 100644 +index 000000000000..c2f9b56ca5f9 +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts +@@ -0,0 +1,44 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++#include "rk3326-anbernic-rg351m.dtsi" ++ ++/ { ++ model = "Anbernic RG351V"; ++ compatible = "anbernic,rg351v", "rockchip,rk3326"; ++ ++ gpio_keys_vol: gpio-keys-vol { ++ compatible = "gpio-keys"; ++ autorepeat; ++ ++ button-vol-down { ++ label = "VOLUMEDOWN"; ++ linux,code = ; ++ gpios = <&gpio2 RK_PA1 GPIO_ACTIVE_LOW>; ++ }; ++ ++ button-vol-up { ++ label = "VOLUMEUP"; ++ linux,code = ; ++ gpios = <&gpio2 RK_PA0 GPIO_ACTIVE_LOW>; ++ }; ++ }; ++}; ++ ++&internal_display { ++ compatible = "anbernic,rg351v-panel", "newvision,nv3051d"; ++ vdd-supply = <&vcc_lcd>; ++}; ++ ++&io_domains { ++ vccio1-supply = <&vccio_sd>; ++}; ++ ++&vcc_sd { ++ regulator-max-microvolt = <3000000>; ++ regulator-min-microvolt = <1800000>; ++}; ++ ++&vccio_sd { ++ regulator-max-microvolt = <1800000>; ++}; +-- +2.34.1 diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/005-set-mac-address.patch b/projects/Rockchip/packages/linux/patches/RK3566-ML/005-set-mac-address.patch new file mode 100644 index 0000000000..c4878de131 --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566-ML/005-set-mac-address.patch @@ -0,0 +1,15 @@ +diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c +index 4a33d2e47f33..6d22628129d0 100644 +--- a/drivers/net/wireless/realtek/rtw88/main.c ++++ b/drivers/net/wireless/realtek/rtw88/main.c +@@ -2008,6 +2008,11 @@ static int rtw_chip_efuse_info_setup(struct rtw_dev *rtwdev) + efuse->ext_pa_5g = efuse->pa_type_5g & BIT(0) ? 1 : 0; + efuse->ext_lna_2g = efuse->lna_type_5g & BIT(3) ? 1 : 0; + ++ if (!is_valid_ether_addr(efuse->addr)) { ++ eth_random_addr(efuse->addr); ++ dev_warn(rtwdev->dev, "efuse MAC invalid, using random\n"); ++ } ++ + out_disable: + rtw_chip_efuse_disable(rtwdev); diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/006-v2-add-powkiddy-x55.patch b/projects/Rockchip/packages/linux/patches/RK3566-ML/006-v2-add-powkiddy-x55.patch new file mode 100644 index 0000000000..18ce833db2 --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566-ML/006-v2-add-powkiddy-x55.patch @@ -0,0 +1,1657 @@ +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH V2 00/10] rockchip: Add Powkiddy X55 +Date: Mon, 4 Dec 2023 12:57:09 -0600 [thread overview] +Message-ID: <20231204185719.569021-1-macroalpha82@gmail.com> (raw) + +From: Chris Morgan + +Add support for the Rockchip RK3566 based Powkiddy X55 handheld gaming +console. + +Changes since V1: + - Corrected a bug with the DRM mode flags for the video driver. + - Adjusted panel front and back porch and pixel clock to fix + issues with display that occurred after correcting DRM mode + flag bug. + - Add a new clk frequency for PLL_VPLL to get panel to run at ~60hz. + +Chris Morgan (10): + drm/panel: himax-hx8394: Drop prepare/unprepare tracking + drm/panel: himax-hx8394: Drop shutdown logic + dt-bindings: display: Document Himax HX8394 panel rotation + drm/panel: himax-hx8394: Add Panel Rotation Support + dt-bindings: display: himax-hx8394: Add Powkiddy X55 panel + drm/panel: himax-hx8394: Add Support for Powkiddy X55 panel + clk: rockchip: Mark pclk_usb as critical on rk3568 + clk: rockchip: rk3568: Add PLL rate for 126.4MHz + dt-bindings: arm: rockchip: Add Powkiddy X55 + arm64: dts: rockchip: Add Powkiddy X55 + + .../devicetree/bindings/arm/rockchip.yaml | 1 + + .../bindings/display/panel/himax,hx8394.yaml | 3 + + arch/arm64/boot/dts/rockchip/Makefile | 1 + + .../boot/dts/rockchip/rk3566-powkiddy-x55.dts | 926 ++++++++++++++++++ + drivers/clk/rockchip/clk-rk3568.c | 2 + + drivers/gpu/drm/panel/panel-himax-hx8394.c | 180 +++- + 6 files changed, 1085 insertions(+), 28 deletions(-) + create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x55.dts + +-- +2.34.1 +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH V2 01/10] drm/panel: himax-hx8394: Drop prepare/unprepare tracking +Date: Mon, 4 Dec 2023 12:57:10 -0600 [thread overview] +Message-ID: <20231204185719.569021-2-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Drop the panel specific prepare/unprepare logic. This is now tracked +by the DRM stack [1]. + +[1] commit d2aacaf07395 ("drm/panel: Check for already prepared/enabled in +drm_panel") + +Signed-off-by: Chris Morgan +--- + drivers/gpu/drm/panel/panel-himax-hx8394.c | 11 ----------- + 1 file changed, 11 deletions(-) + +diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c +index c73243d85de7..3823ff388b96 100644 +--- a/drivers/gpu/drm/panel/panel-himax-hx8394.c ++++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c +@@ -68,7 +68,6 @@ struct hx8394 { + struct gpio_desc *reset_gpio; + struct regulator *vcc; + struct regulator *iovcc; +- bool prepared; + + const struct hx8394_panel_desc *desc; + }; +@@ -262,16 +261,11 @@ static int hx8394_unprepare(struct drm_panel *panel) + { + struct hx8394 *ctx = panel_to_hx8394(panel); + +- if (!ctx->prepared) +- return 0; +- + gpiod_set_value_cansleep(ctx->reset_gpio, 1); + + regulator_disable(ctx->iovcc); + regulator_disable(ctx->vcc); + +- ctx->prepared = false; +- + return 0; + } + +@@ -280,9 +274,6 @@ static int hx8394_prepare(struct drm_panel *panel) + struct hx8394 *ctx = panel_to_hx8394(panel); + int ret; + +- if (ctx->prepared) +- return 0; +- + gpiod_set_value_cansleep(ctx->reset_gpio, 1); + + ret = regulator_enable(ctx->vcc); +@@ -301,8 +292,6 @@ static int hx8394_prepare(struct drm_panel *panel) + + msleep(180); + +- ctx->prepared = true; +- + return 0; + + disable_vcc: +-- +2.34.1 + +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH V2 02/10] drm/panel: himax-hx8394: Drop shutdown logic +Date: Mon, 4 Dec 2023 12:57:11 -0600 [thread overview] +Message-ID: <20231204185719.569021-3-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> + +From: Chris Morgan + +The driver shutdown is duplicate as it calls drm_unprepare and +drm_disable which are called anyway when associated drivers are +shutdown/removed. + +Signed-off-by: Chris Morgan +--- + drivers/gpu/drm/panel/panel-himax-hx8394.c | 17 ----------------- + 1 file changed, 17 deletions(-) + +diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c +index 3823ff388b96..d8e590d5e1da 100644 +--- a/drivers/gpu/drm/panel/panel-himax-hx8394.c ++++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c +@@ -390,27 +390,11 @@ static int hx8394_probe(struct mipi_dsi_device *dsi) + return 0; + } + +-static void hx8394_shutdown(struct mipi_dsi_device *dsi) +-{ +- struct hx8394 *ctx = mipi_dsi_get_drvdata(dsi); +- int ret; +- +- ret = drm_panel_disable(&ctx->panel); +- if (ret < 0) +- dev_err(&dsi->dev, "Failed to disable panel: %d\n", ret); +- +- ret = drm_panel_unprepare(&ctx->panel); +- if (ret < 0) +- dev_err(&dsi->dev, "Failed to unprepare panel: %d\n", ret); +-} +- + static void hx8394_remove(struct mipi_dsi_device *dsi) + { + struct hx8394 *ctx = mipi_dsi_get_drvdata(dsi); + int ret; + +- hx8394_shutdown(dsi); +- + ret = mipi_dsi_detach(dsi); + if (ret < 0) + dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret); +@@ -427,7 +411,6 @@ MODULE_DEVICE_TABLE(of, hx8394_of_match); + static struct mipi_dsi_driver hx8394_driver = { + .probe = hx8394_probe, + .remove = hx8394_remove, +- .shutdown = hx8394_shutdown, + .driver = { + .name = DRV_NAME, + .of_match_table = hx8394_of_match, +-- +2.34.1 +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan , + Krzysztof Kozlowski +Subject: [PATCH V2 03/10] dt-bindings: display: Document Himax HX8394 panel rotation +Date: Mon, 4 Dec 2023 12:57:12 -0600 [thread overview] +Message-ID: <20231204185719.569021-4-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Document panel rotation for Himax HX8394 display panel. + +Signed-off-by: Chris Morgan +Acked-by: Krzysztof Kozlowski +--- + .../devicetree/bindings/display/panel/himax,hx8394.yaml | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml +index ffb35288ffbb..3096debca55c 100644 +--- a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml ++++ b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml +@@ -31,6 +31,8 @@ properties: + + backlight: true + ++ rotation: true ++ + port: true + + vcc-supply: +-- +2.34.1 +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH V2 04/10] drm/panel: himax-hx8394: Add Panel Rotation Support +Date: Mon, 4 Dec 2023 12:57:13 -0600 [thread overview] +Message-ID: <20231204185719.569021-5-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add support for setting the rotation property for the Himax HX8394 +panel. + +Signed-off-by: Chris Morgan +--- + drivers/gpu/drm/panel/panel-himax-hx8394.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c +index d8e590d5e1da..b68ea09f4725 100644 +--- a/drivers/gpu/drm/panel/panel-himax-hx8394.c ++++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c +@@ -68,6 +68,7 @@ struct hx8394 { + struct gpio_desc *reset_gpio; + struct regulator *vcc; + struct regulator *iovcc; ++ enum drm_panel_orientation orientation; + + const struct hx8394_panel_desc *desc; + }; +@@ -324,12 +325,20 @@ static int hx8394_get_modes(struct drm_panel *panel, + return 1; + } + ++static enum drm_panel_orientation hx8394_get_orientation(struct drm_panel *panel) ++{ ++ struct hx8394 *ctx = panel_to_hx8394(panel); ++ ++ return ctx->orientation; ++} ++ + static const struct drm_panel_funcs hx8394_drm_funcs = { + .disable = hx8394_disable, + .unprepare = hx8394_unprepare, + .prepare = hx8394_prepare, + .enable = hx8394_enable, + .get_modes = hx8394_get_modes, ++ .get_orientation = hx8394_get_orientation, + }; + + static int hx8394_probe(struct mipi_dsi_device *dsi) +@@ -347,6 +356,12 @@ static int hx8394_probe(struct mipi_dsi_device *dsi) + return dev_err_probe(dev, PTR_ERR(ctx->reset_gpio), + "Failed to get reset gpio\n"); + ++ ret = of_drm_get_panel_orientation(dev->of_node, &ctx->orientation); ++ if (ret < 0) { ++ dev_err(dev, "%pOF: failed to get orientation %d\n", dev->of_node, ret); ++ return ret; ++ } ++ + mipi_dsi_set_drvdata(dsi, ctx); + + ctx->dev = dev; +-- +2.34.1 +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan , + Krzysztof Kozlowski +Subject: [PATCH V2 05/10] dt-bindings: display: himax-hx8394: Add Powkiddy X55 panel +Date: Mon, 4 Dec 2023 12:57:14 -0600 [thread overview] +Message-ID: <20231204185719.569021-6-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add compatible string for the Powkiddy X55 panel. + +Signed-off-by: Chris Morgan +Acked-by: Krzysztof Kozlowski +--- + .../devicetree/bindings/display/panel/himax,hx8394.yaml | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml +index 3096debca55c..916bb7f94206 100644 +--- a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml ++++ b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml +@@ -23,6 +23,7 @@ properties: + items: + - enum: + - hannstar,hsd060bhw4 ++ - powkiddy,x55-panel + - const: himax,hx8394 + + reg: true +-- +2.34.1 +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH V2 06/10] drm/panel: himax-hx8394: Add Support for Powkiddy X55 panel +Date: Mon, 4 Dec 2023 12:57:15 -0600 [thread overview] +Message-ID: <20231204185719.569021-7-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add support for the Powkiddy X55 panel as used on the Powkiddy X55 +handheld gaming console. This panel uses a Himax HX8394 display +controller and requires a vendor provided init sequence. The display +resolution is 720x1280 and is 67mm by 121mm as measured with calipers. + +Signed-off-by: Chris Morgan +--- + drivers/gpu/drm/panel/panel-himax-hx8394.c | 137 +++++++++++++++++++++ + 1 file changed, 137 insertions(+) + +diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c +index b68ea09f4725..ff0dc08b9829 100644 +--- a/drivers/gpu/drm/panel/panel-himax-hx8394.c ++++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c +@@ -38,6 +38,7 @@ + #define HX8394_CMD_SETMIPI 0xba + #define HX8394_CMD_SETOTP 0xbb + #define HX8394_CMD_SETREGBANK 0xbd ++#define HX8394_CMD_UNKNOWN5 0xbf + #define HX8394_CMD_UNKNOWN1 0xc0 + #define HX8394_CMD_SETDGCLUT 0xc1 + #define HX8394_CMD_SETID 0xc3 +@@ -52,6 +53,7 @@ + #define HX8394_CMD_SETGIP1 0xd5 + #define HX8394_CMD_SETGIP2 0xd6 + #define HX8394_CMD_SETGPO 0xd6 ++#define HX8394_CMD_UNKNOWN4 0xd8 + #define HX8394_CMD_SETSCALING 0xdd + #define HX8394_CMD_SETIDLE 0xdf + #define HX8394_CMD_SETGAMMA 0xe0 +@@ -203,6 +205,140 @@ static const struct hx8394_panel_desc hsd060bhw4_desc = { + .init_sequence = hsd060bhw4_init_sequence, + }; + ++static int powkiddy_x55_init_sequence(struct hx8394 *ctx) ++{ ++ struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); ++ ++ /* 5.19.8 SETEXTC: Set extension command (B9h) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETEXTC, ++ 0xff, 0x83, 0x94); ++ ++ /* 5.19.9 SETMIPI: Set MIPI control (BAh) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETMIPI, ++ 0x63, 0x03, 0x68, 0x6b, 0xb2, 0xc0); ++ ++ /* 5.19.2 SETPOWER: Set power (B1h) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETPOWER, ++ 0x48, 0x12, 0x72, 0x09, 0x32, 0x54, 0x71, 0x71, 0x57, 0x47); ++ ++ /* 5.19.3 SETDISP: Set display related register (B2h) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETDISP, ++ 0x00, 0x80, 0x64, 0x2c, 0x16, 0x2f); ++ ++ /* 5.19.4 SETCYC: Set display waveform cycles (B4h) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETCYC, ++ 0x73, 0x74, 0x73, 0x74, 0x73, 0x74, 0x01, 0x0c, 0x86, 0x75, ++ 0x00, 0x3f, 0x73, 0x74, 0x73, 0x74, 0x73, 0x74, 0x01, 0x0c, ++ 0x86); ++ ++ /* 5.19.5 SETVCOM: Set VCOM voltage (B6h) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETVCOM, ++ 0x6e, 0x6e); ++ ++ /* 5.19.19 SETGIP0: Set GIP Option0 (D3h) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETGIP0, ++ 0x00, 0x00, 0x07, 0x07, 0x40, 0x07, 0x0c, 0x00, 0x08, 0x10, ++ 0x08, 0x00, 0x08, 0x54, 0x15, 0x0a, 0x05, 0x0a, 0x02, 0x15, ++ 0x06, 0x05, 0x06, 0x47, 0x44, 0x0a, 0x0a, 0x4b, 0x10, 0x07, ++ 0x07, 0x0c, 0x40); ++ ++ /* 5.19.20 Set GIP Option1 (D5h) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETGIP1, ++ 0x1c, 0x1c, 0x1d, 0x1d, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, ++ 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x24, 0x25, 0x18, 0x18, ++ 0x26, 0x27, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, ++ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x20, 0x21, ++ 0x18, 0x18, 0x18, 0x18); ++ ++ /* 5.19.21 Set GIP Option2 (D6h) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETGIP2, ++ 0x1c, 0x1c, 0x1d, 0x1d, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, ++ 0x01, 0x00, 0x0b, 0x0a, 0x09, 0x08, 0x21, 0x20, 0x18, 0x18, ++ 0x27, 0x26, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, ++ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x25, 0x24, ++ 0x18, 0x18, 0x18, 0x18); ++ ++ /* 5.19.25 SETGAMMA: Set gamma curve related setting (E0h) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETGAMMA, ++ 0x00, 0x0a, 0x15, 0x1b, 0x1e, 0x21, 0x24, 0x22, 0x47, 0x56, ++ 0x65, 0x66, 0x6e, 0x82, 0x88, 0x8b, 0x9a, 0x9d, 0x98, 0xa8, ++ 0xb9, 0x5d, 0x5c, 0x61, 0x66, 0x6a, 0x6f, 0x7f, 0x7f, 0x00, ++ 0x0a, 0x15, 0x1b, 0x1e, 0x21, 0x24, 0x22, 0x47, 0x56, 0x65, ++ 0x65, 0x6e, 0x81, 0x87, 0x8b, 0x98, 0x9d, 0x99, 0xa8, 0xba, ++ 0x5d, 0x5d, 0x62, 0x67, 0x6b, 0x72, 0x7f, 0x7f); ++ ++ /* Unknown command, not listed in the HX8394-F datasheet */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_UNKNOWN1, ++ 0x1f, 0x31); ++ ++ /* 5.19.17 SETPANEL (CCh) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETPANEL, ++ 0x0b); ++ ++ /* Unknown command, not listed in the HX8394-F datasheet */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_UNKNOWN3, ++ 0x02); ++ ++ /* 5.19.11 Set register bank (BDh) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETREGBANK, ++ 0x02); ++ ++ /* Unknown command, not listed in the HX8394-F datasheet */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_UNKNOWN4, ++ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff); ++ ++ /* 5.19.11 Set register bank (BDh) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETREGBANK, ++ 0x00); ++ ++ /* 5.19.11 Set register bank (BDh) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETREGBANK, ++ 0x01); ++ ++ /* 5.19.2 SETPOWER: Set power (B1h) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETPOWER, ++ 0x00); ++ ++ /* 5.19.11 Set register bank (BDh) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETREGBANK, ++ 0x00); ++ ++ /* Unknown command, not listed in the HX8394-F datasheet */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_UNKNOWN5, ++ 0x40, 0x81, 0x50, 0x00, 0x1a, 0xfc, 0x01); ++ ++ /* Unknown command, not listed in the HX8394-F datasheet */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_UNKNOWN2, ++ 0xed); ++ ++ return 0; ++} ++ ++static const struct drm_display_mode powkiddy_x55_mode = { ++ .hdisplay = 720, ++ .hsync_start = 720 + 44, ++ .hsync_end = 720 + 44 + 20, ++ .htotal = 720 + 44 + 20 + 20, ++ .vdisplay = 1280, ++ .vsync_start = 1280 + 12, ++ .vsync_end = 1280 + 12 + 10, ++ .vtotal = 1280 + 12 + 10 + 10, ++ .clock = 63290, ++ .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, ++ .width_mm = 67, ++ .height_mm = 121, ++}; ++ ++static const struct hx8394_panel_desc powkiddy_x55_desc = { ++ .mode = &powkiddy_x55_mode, ++ .lanes = 4, ++ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | ++ MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET, ++ .format = MIPI_DSI_FMT_RGB888, ++ .init_sequence = powkiddy_x55_init_sequence, ++}; ++ + static int hx8394_enable(struct drm_panel *panel) + { + struct hx8394 *ctx = panel_to_hx8394(panel); +@@ -419,6 +555,7 @@ static void hx8394_remove(struct mipi_dsi_device *dsi) + + static const struct of_device_id hx8394_of_match[] = { + { .compatible = "hannstar,hsd060bhw4", .data = &hsd060bhw4_desc }, ++ { .compatible = "powkiddy,x55-panel", .data = &powkiddy_x55_desc }, + { /* sentinel */ } + }; + MODULE_DEVICE_TABLE(of, hx8394_of_match); +-- +2.34.1 +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH V2 07/10] clk: rockchip: Mark pclk_usb as critical on rk3568 +Date: Mon, 4 Dec 2023 12:57:16 -0600 [thread overview] +Message-ID: <20231204185719.569021-8-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> + +From: Chris Morgan + +In the reference manual under "2.8.6 NIU Clock gating reliance" +it is stated that pclk_usb_niu has a dependency on hclk_usb_niu. + +While the manual does not state that this is a bi-directional +relationship it was noted that the sdmmc2 failed to operate for me in +mmc mode if the pclk_usb was not marked as critical. The parent clock +of the hclk_sdmmc2 is hclk_usb. + +Signed-off-by: Chris Morgan +--- + drivers/clk/rockchip/clk-rk3568.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/clk/rockchip/clk-rk3568.c b/drivers/clk/rockchip/clk-rk3568.c +index bfbcbb744327..c4fa2375dbfb 100644 +--- a/drivers/clk/rockchip/clk-rk3568.c ++++ b/drivers/clk/rockchip/clk-rk3568.c +@@ -1595,6 +1595,7 @@ static const char *const rk3568_cru_critical_clocks[] __initconst = { + "pclk_php", + "hclk_usb", + "hclk_vo", ++ "pclk_usb", + }; + + static const char *const rk3568_pmucru_critical_clocks[] __initconst = { +-- +2.34.1 +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH V2 08/10] clk: rockchip: rk3568: Add PLL rate for 126.4MHz +Date: Mon, 4 Dec 2023 12:57:17 -0600 [thread overview] +Message-ID: <20231204185719.569021-9-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add support for a PLL rate of 126.4MHz so that the Powkiddy X55 panel +can run at a requested 60hz. + +I have confirmed this rate fits with all the constraints +listed in the TRM for the VPLL (as an integer PLL) in Part 1 "Chapter +2 Clock & Reset Unit (CRU)." + +Signed-off-by: Chris Morgan +--- + drivers/clk/rockchip/clk-rk3568.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/clk/rockchip/clk-rk3568.c b/drivers/clk/rockchip/clk-rk3568.c +index c4fa2375dbfb..fa408fedf625 100644 +--- a/drivers/clk/rockchip/clk-rk3568.c ++++ b/drivers/clk/rockchip/clk-rk3568.c +@@ -78,6 +78,7 @@ static struct rockchip_pll_rate_table rk3568_pll_rates[] = { + RK3036_PLL_RATE(200000000, 1, 100, 3, 4, 1, 0), + RK3036_PLL_RATE(148500000, 1, 99, 4, 4, 1, 0), + RK3036_PLL_RATE(135000000, 2, 45, 4, 1, 1, 0), ++ RK3036_PLL_RATE(126400000, 1, 79, 5, 3, 1, 0), + RK3036_PLL_RATE(119000000, 3, 119, 4, 2, 1, 0), + RK3036_PLL_RATE(115200000, 1, 24, 5, 1, 1, 0), + RK3036_PLL_RATE(108000000, 2, 45, 5, 1, 1, 0), +-- +2.34.1 +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan , + Krzysztof Kozlowski +Subject: [PATCH V2 09/10] dt-bindings: arm: rockchip: Add Powkiddy X55 +Date: Mon, 4 Dec 2023 12:57:18 -0600 [thread overview] +Message-ID: <20231204185719.569021-10-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> + +From: Chris Morgan + +The Powkiddy RK2023 is a handheld gaming device made by Powkiddy and +powered by the Rockchip RK3566 SoC. This device is somewhat similar +to the existing Powkiddy RK3566 devices, which have been grouped +together with a previous commit[1]. + +[1] https://lore.kernel.org/linux-rockchip/20231117202536.1387815-1-macroalpha82@gmail.com/T/#m4764997cfafaca22fe677200de96caa5fb8f0005 + +Signed-off-by: Chris Morgan +Acked-by: Krzysztof Kozlowski +--- + Documentation/devicetree/bindings/arm/rockchip.yaml | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Documentation/devicetree/bindings/arm/rockchip.yaml b/Documentation/devicetree/bindings/arm/rockchip.yaml +index 021a0e95ba62..5e22f247ee6e 100644 +--- a/Documentation/devicetree/bindings/arm/rockchip.yaml ++++ b/Documentation/devicetree/bindings/arm/rockchip.yaml +@@ -681,6 +681,7 @@ properties: + - enum: + - powkiddy,rgb30 + - powkiddy,rk2023 ++ - powkiddy,x55 + - const: rockchip,rk3566 + + - description: Radxa Compute Module 3(CM3) +-- +2.34.1 +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH V2 10/10] arm64: dts: rockchip: Add Powkiddy X55 +Date: Mon, 4 Dec 2023 12:57:19 -0600 [thread overview] +Message-ID: <20231204185719.569021-11-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add support for the Powkiddy X55. The Powkiddy RK2023 is a handheld +gaming device with a 720p 5.5 inch screen powered by the Rockchip +RK3566 SoC. It includes a Realtek 8821cs WiFi/BT module, 2 ADC +joysticks powered by 4 dedicated ADC channels, and several GPIO +face buttons. There are 2 SDMMC slots (sdmmc1 and sdmmc3), and an +8GB internal eMMC. + +Signed-off-by: Chris Morgan +--- + arch/arm64/boot/dts/rockchip/Makefile | 1 + + .../boot/dts/rockchip/rk3566-powkiddy-x55.dts | 926 ++++++++++++++++++ + 2 files changed, 927 insertions(+) + create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x55.dts + +diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile +index 9dcb65f76342..a1a06e33a299 100644 +--- a/arch/arm64/boot/dts/rockchip/Makefile ++++ b/arch/arm64/boot/dts/rockchip/Makefile +@@ -82,6 +82,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.1.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.2.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-rgb30.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-rk2023.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-x55.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-a.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-b.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-radxa-cm3-io.dtb +diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x55.dts b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x55.dts +new file mode 100644 +index 000000000000..4786b19fd017 +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x55.dts +@@ -0,0 +1,926 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include ++#include ++#include ++#include ++#include ++#include "rk3566.dtsi" ++ ++/ { ++ model = "Powkiddy x55"; ++ compatible = "powkiddy,x55", "rockchip,rk3566"; ++ ++ aliases { ++ mmc0 = &sdhci; ++ mmc1 = &sdmmc0; ++ mmc2 = &sdmmc2; ++ mmc3 = &sdmmc1; ++ }; ++ ++ chosen: chosen { ++ stdout-path = "serial2:1500000n8"; ++ }; ++ ++ adc_joystick: adc-joystick { ++ compatible = "adc-joystick"; ++ io-channels = <&saradc 0>, <&saradc 1>, ++ <&saradc 2>, <&saradc 3>; ++ poll-interval = <60>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ axis@0 { ++ reg = <0>; ++ abs-flat = <30>; ++ abs-fuzz = <20>; ++ abs-range = <15 1023>; ++ linux,code = ; ++ }; ++ ++ axis@1 { ++ reg = <1>; ++ abs-flat = <30>; ++ abs-fuzz = <20>; ++ abs-range = <1023 15>; ++ linux,code = ; ++ }; ++ ++ axis@2 { ++ reg = <2>; ++ abs-flat = <30>; ++ abs-fuzz = <20>; ++ abs-range = <15 1023>; ++ linux,code = ; ++ }; ++ ++ axis@3 { ++ reg = <3>; ++ abs-flat = <30>; ++ abs-fuzz = <20>; ++ abs-range = <1023 15>; ++ linux,code = ; ++ }; ++ }; ++ ++ backlight: backlight { ++ compatible = "pwm-backlight"; ++ power-supply = <&vcc_sys>; ++ pwms = <&pwm4 0 25000 0>; ++ }; ++ ++ battery: battery { ++ compatible = "simple-battery"; ++ charge-full-design-microamp-hours = <4000000>; ++ charge-term-current-microamp = <300000>; ++ constant-charge-current-max-microamp = <2000000>; ++ constant-charge-voltage-max-microvolt = <4300000>; ++ factory-internal-resistance-micro-ohms = <91000>; ++ voltage-max-design-microvolt = <4138000>; ++ voltage-min-design-microvolt = <3400000>; ++ ++ ocv-capacity-celsius = <20>; ++ ocv-capacity-table-0 = <4138000 100>, <4083000 95>, <4059000 90>, <4044000 85>, ++ <4030000 80>, <4020000 75>, <4006000 70>, <3972000 65>, ++ <3934000 60>, <3904000 55>, <3878000 50>, <3857000 45>, ++ <3843000 40>, <3826000 35>, <3801000 30>, <3768000 25>, ++ <3735000 20>, <3688000 15>, <3621000 10>, <3553000 5>, ++ <3400000 0>; ++ }; ++ ++ gpio_keys_control: gpio-keys-control { ++ compatible = "gpio-keys"; ++ pinctrl-0 = <&btn_pins_ctrl>; ++ pinctrl-names = "default"; ++ ++ button-a { ++ gpios = <&gpio3 RK_PD3 GPIO_ACTIVE_LOW>; ++ label = "EAST"; ++ linux,code = ; ++ }; ++ ++ button-b { ++ gpios = <&gpio3 RK_PD2 GPIO_ACTIVE_LOW>; ++ label = "SOUTH"; ++ linux,code = ; ++ }; ++ ++ button-down { ++ gpios = <&gpio4 RK_PA1 GPIO_ACTIVE_LOW>; ++ label = "DPAD-DOWN"; ++ linux,code = ; ++ }; ++ ++ button-l1 { ++ gpios = <&gpio3 RK_PD0 GPIO_ACTIVE_LOW>; ++ label = "TL"; ++ linux,code = ; ++ }; ++ ++ button-l2 { ++ gpios = <&gpio3 RK_PD1 GPIO_ACTIVE_LOW>; ++ label = "TL2"; ++ linux,code = ; ++ }; ++ ++ button-left { ++ gpios = <&gpio3 RK_PD6 GPIO_ACTIVE_LOW>; ++ label = "DPAD-LEFT"; ++ linux,code = ; ++ }; ++ ++ button-right { ++ gpios = <&gpio3 RK_PD7 GPIO_ACTIVE_LOW>; ++ label = "DPAD-RIGHT"; ++ linux,code = ; ++ }; ++ ++ button-select { ++ gpios = <&gpio4 RK_PA4 GPIO_ACTIVE_LOW>; ++ label = "SELECT"; ++ linux,code = ; ++ }; ++ ++ button-start { ++ gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_LOW>; ++ label = "START"; ++ linux,code = ; ++ }; ++ ++ button-thumbl { ++ gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_LOW>; ++ label = "THUMBL"; ++ linux,code = ; ++ }; ++ ++ button-thumbr { ++ gpios = <&gpio4 RK_PB0 GPIO_ACTIVE_LOW>; ++ label = "THUMBR"; ++ linux,code = ; ++ }; ++ ++ button-r1 { ++ gpios = <&gpio3 RK_PC6 GPIO_ACTIVE_LOW>; ++ label = "TR"; ++ linux,code = ; ++ }; ++ ++ button-r2 { ++ gpios = <&gpio3 RK_PC7 GPIO_ACTIVE_LOW>; ++ label = "TR2"; ++ linux,code = ; ++ }; ++ ++ button-up { ++ gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_LOW>; ++ label = "DPAD-UP"; ++ linux,code = ; ++ }; ++ ++ button-x { ++ gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>; ++ label = "NORTH"; ++ linux,code = ; ++ }; ++ ++ button-y { ++ gpios = <&gpio3 RK_PD4 GPIO_ACTIVE_LOW>; ++ label = "WEST"; ++ linux,code = ; ++ }; ++ }; ++ ++ gpio_keys_vol: gpio-keys-vol { ++ compatible = "gpio-keys"; ++ autorepeat; ++ pinctrl-0 = <&btn_pins_vol>; ++ pinctrl-names = "default"; ++ ++ button-voldown { ++ gpios = <&gpio4 RK_PA3 GPIO_ACTIVE_LOW>; ++ label = "VOLUMEDOWN"; ++ linux,code = ; ++ }; ++ ++ button-volup { ++ gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_LOW>; ++ label = "VOLUMEUP"; ++ linux,code = ; ++ }; ++ }; ++ ++ gpio_leds: gpio-leds { ++ compatible = "gpio-leds"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&led_pins>; ++ ++ red_led: led-0 { ++ color = ; ++ default-state = "off"; ++ gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>; ++ function = LED_FUNCTION_STATUS; ++ }; ++ ++ green_led: led-1 { ++ color = ; ++ default-state = "on"; ++ gpios = <&gpio4 RK_PB5 GPIO_ACTIVE_HIGH>; ++ function = LED_FUNCTION_POWER; ++ }; ++ ++ amber_led: led-2 { ++ color = ; ++ gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>; ++ function = LED_FUNCTION_CHARGING; ++ }; ++ ++ }; ++ ++ hdmi-con { ++ compatible = "hdmi-connector"; ++ ddc-i2c-bus = <&i2c5>; ++ type = "c"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; ++ ++ sdio_pwrseq: sdio-pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ clocks = <&rk817 1>; ++ clock-names = "ext_clock"; ++ pinctrl-0 = <&wifi_enable_h>; ++ pinctrl-names = "default"; ++ post-power-on-delay-ms = <200>; ++ reset-gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_LOW>; ++ }; ++ ++ /* Channels reversed for both headphones and speakers. */ ++ sound { ++ compatible = "simple-audio-card"; ++ pinctrl-0 = <&hp_det>; ++ pinctrl-names = "default"; ++ simple-audio-card,name = "rk817_ext"; ++ simple-audio-card,aux-devs = <&spk_amp>; ++ simple-audio-card,format = "i2s"; ++ simple-audio-card,hp-det-gpio = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>; ++ simple-audio-card,mclk-fs = <256>; ++ simple-audio-card,widgets = ++ "Microphone", "Mic Jack", ++ "Headphone", "Headphones", ++ "Speaker", "Internal Speakers"; ++ simple-audio-card,routing = ++ "MICL", "Mic Jack", ++ "Headphones", "HPOL", ++ "Headphones", "HPOR", ++ "Internal Speakers", "Speaker Amp OUTL", ++ "Internal Speakers", "Speaker Amp OUTR", ++ "Speaker Amp INL", "HPOL", ++ "Speaker Amp INR", "HPOR"; ++ simple-audio-card,pin-switches = "Internal Speakers"; ++ ++ simple-audio-card,codec { ++ sound-dai = <&rk817>; ++ }; ++ ++ simple-audio-card,cpu { ++ sound-dai = <&i2s1_8ch>; ++ }; ++ }; ++ ++ spk_amp: audio-amplifier { ++ compatible = "simple-audio-amplifier"; ++ enable-gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>; ++ pinctrl-0 = <&spk_amp_enable_h>; ++ pinctrl-names = "default"; ++ sound-name-prefix = "Speaker Amp"; ++ }; ++ ++ vcc5v0_host: regulator-vcc5v0-host { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ gpio = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>; ++ pinctrl-0 = <&vcc5v0_host_en>; ++ pinctrl-names = "default"; ++ regulator-name = "vcc5v0_host"; ++ vin-supply = <&dcdc_boost>; ++ }; ++ ++ vcc_lcd: regulator-vcc-lcd { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ gpio = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>; ++ pinctrl-0 = <&vcc_lcd_en>; ++ pinctrl-names = "default"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc_lcd"; ++ }; ++ ++ vcc_sys: regulator-vcc-sys { ++ compatible = "regulator-fixed"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3800000>; ++ regulator-max-microvolt = <3800000>; ++ regulator-name = "vcc_sys"; ++ }; ++ ++ vcc_wifi: regulator-vcc-wifi { ++ compatible = "regulator-fixed"; ++ gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>; ++ pinctrl-0 = <&vcc_wifi_h>; ++ pinctrl-names = "default"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc_wifi"; ++ }; ++}; ++ ++&combphy1 { ++ status = "okay"; ++}; ++ ++&cru { ++ assigned-clocks = <&pmucru CLK_RTC_32K>, <&cru PLL_GPLL>, ++ <&pmucru PLL_PPLL>, <&cru PLL_VPLL>; ++ assigned-clock-rates = <32768>, <1200000000>, ++ <200000000>, <126400000>; ++}; ++ ++&cpu0 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu1 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu2 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu3 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&dsi_dphy0 { ++ status = "okay"; ++}; ++ ++&dsi0 { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ ports { ++ dsi0_in: port@0 { ++ reg = <0>; ++ dsi0_in_vp1: endpoint { ++ remote-endpoint = <&vp1_out_dsi0>; ++ }; ++ }; ++ ++ dsi0_out: port@1 { ++ reg = <1>; ++ mipi_out_panel: endpoint { ++ remote-endpoint = <&mipi_in_panel>; ++ }; ++ }; ++ }; ++ ++ panel: panel@0 { ++ compatible = "powkiddy,x55-panel", "himax,hx8394"; ++ reg = <0>; ++ backlight = <&backlight>; ++ iovcc-supply = <&vcc_lcd>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&lcd_rst>; ++ reset-gpios = <&gpio0 RK_PD5 GPIO_ACTIVE_LOW>; ++ rotation = <270>; ++ vcc-supply = <&vcc_lcd>; ++ ++ port { ++ mipi_in_panel: endpoint { ++ remote-endpoint = <&mipi_out_panel>; ++ }; ++ }; ++ }; ++}; ++ ++&gpu { ++ mali-supply = <&vdd_gpu>; ++ status = "okay"; ++}; ++ ++&hdmi { ++ ddc-i2c-bus = <&i2c5>; ++ pinctrl-0 = <&hdmitxm0_cec>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; ++ ++&hdmi_in { ++ hdmi_in_vp0: endpoint { ++ remote-endpoint = <&vp0_out_hdmi>; ++ }; ++}; ++ ++&hdmi_out { ++ hdmi_out_con: endpoint { ++ remote-endpoint = <&hdmi_con_in>; ++ }; ++}; ++ ++&hdmi_sound { ++ status = "okay"; ++}; ++ ++&i2c0 { ++ status = "okay"; ++ ++ rk817: pmic@20 { ++ compatible = "rockchip,rk817"; ++ reg = <0x20>; ++ assigned-clocks = <&cru I2S1_MCLKOUT_TX>; ++ assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>; ++ clock-names = "mclk"; ++ clock-output-names = "rk808-clkout1", "rk808-clkout2"; ++ clocks = <&cru I2S1_MCLKOUT_TX>; ++ interrupt-parent = <&gpio0>; ++ interrupts = ; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2s1m0_mclk>, <&pmic_int_l>; ++ wakeup-source; ++ #clock-cells = <1>; ++ #sound-dai-cells = <0>; ++ ++ vcc1-supply = <&vcc_sys>; ++ vcc2-supply = <&vcc_sys>; ++ vcc3-supply = <&vcc_sys>; ++ vcc4-supply = <&vcc_sys>; ++ vcc5-supply = <&vcc_sys>; ++ vcc6-supply = <&vcc_sys>; ++ vcc7-supply = <&vcc_sys>; ++ vcc8-supply = <&vcc_sys>; ++ vcc9-supply = <&dcdc_boost>; ++ ++ regulators { ++ vdd_logic: DCDC_REG1 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vdd_logic"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ regulator-suspend-microvolt = <900000>; ++ }; ++ }; ++ ++ vdd_gpu: DCDC_REG2 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vdd_gpu"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_ddr: DCDC_REG3 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vcc_ddr"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ vcc_3v3: DCDC_REG4 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vcc_3v3"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcca1v8_pmu: LDO_REG1 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcca1v8_pmu"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <1800000>; ++ }; ++ }; ++ ++ vdda_0v9: LDO_REG2 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <900000>; ++ regulator-max-microvolt = <900000>; ++ regulator-name = "vdda_0v9"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vdda0v9_pmu: LDO_REG3 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <900000>; ++ regulator-max-microvolt = <900000>; ++ regulator-name = "vdda0v9_pmu"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <900000>; ++ }; ++ }; ++ ++ vccio_acodec: LDO_REG4 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vccio_acodec"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vccio_sd: LDO_REG5 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vccio_sd"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc3v3_pmu: LDO_REG6 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc3v3_pmu"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcc_1v8: LDO_REG7 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc_1v8"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc1v8_dvp: LDO_REG8 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc1v8_dvp"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ vcc2v8_dvp: LDO_REG9 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc2v8_dvp"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ dcdc_boost: BOOST { ++ regulator-min-microvolt = <4700000>; ++ regulator-max-microvolt = <5400000>; ++ regulator-name = "boost"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ otg_switch: OTG_SWITCH { ++ regulator-name = "otg_switch"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ }; ++ ++ rk817_charger: charger { ++ monitored-battery = <&battery>; ++ rockchip,resistor-sense-micro-ohms = <10000>; ++ rockchip,sleep-enter-current-microamp = <150000>; ++ rockchip,sleep-filter-current-microamp = <100000>; ++ }; ++ ++ }; ++ ++ vdd_cpu: regulator@1c { ++ compatible = "tcs,tcs4525"; ++ reg = <0x1c>; ++ fcs,suspend-voltage-selector = <1>; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <712500>; ++ regulator-max-microvolt = <1390000>; ++ regulator-name = "vdd_cpu"; ++ regulator-ramp-delay = <2300>; ++ vin-supply = <&vcc_sys>; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++}; ++ ++&i2c5 { ++ pinctrl-0 = <&i2c5m1_xfer>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; ++ ++&i2s0_8ch { ++ status = "okay"; ++}; ++ ++&i2s1_8ch { ++ pinctrl-0 = <&i2s1m0_sclktx>, <&i2s1m0_lrcktx>, <&i2s1m0_sdi0>, ++ <&i2s1m0_sdo0>; ++ pinctrl-names = "default"; ++ rockchip,trcm-sync-tx-only; ++ status = "okay"; ++}; ++ ++&pinctrl { ++ audio-amplifier { ++ spk_amp_enable_h: spk-amp-enable-h { ++ rockchip,pins = ++ <4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ gpio-control { ++ btn_pins_ctrl: btn-pins-ctrl { ++ rockchip,pins = ++ <3 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD1 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ ++ btn_pins_vol: btn-pins-vol { ++ rockchip,pins = ++ <4 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ gpio-lcd { ++ lcd_rst: lcd-rst { ++ rockchip,pins = ++ <0 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ gpio-leds { ++ led_pins: led-pins { ++ rockchip,pins = ++ <4 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>, ++ <4 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>, ++ <4 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ hp-detect { ++ hp_det: hp-det { ++ rockchip,pins = ++ <4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ pmic { ++ pmic_int_l: pmic-int-l { ++ rockchip,pins = ++ <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ sdio-pwrseq { ++ wifi_enable_h: wifi-enable-h { ++ rockchip,pins = ++ <0 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ usb { ++ vcc5v0_host_en: vcc5v0-host-en { ++ rockchip,pins = ++ <4 RK_PC4 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ ++ vcc5v0_otg_en: vcc5v0-otg-en { ++ rockchip,pins = ++ <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ vcc-lcd { ++ vcc_lcd_en: vcc-lcd-en { ++ rockchip,pins = ++ <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ vcc-wifi { ++ vcc_wifi_h: vcc-wifi-h { ++ rockchip,pins = ++ <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++}; ++ ++&pmu_io_domains { ++ status = "okay"; ++ pmuio1-supply = <&vcc3v3_pmu>; ++ pmuio2-supply = <&vcca1v8_pmu>; ++ vccio1-supply = <&vccio_acodec>; ++ vccio3-supply = <&vccio_sd>; ++ vccio4-supply = <&vcca1v8_pmu>; ++ vccio5-supply = <&vcc2v8_dvp>; ++ vccio6-supply = <&vcc1v8_dvp>; ++ vccio7-supply = <&vcc_3v3>; ++}; ++ ++&pwm4 { ++ status = "okay"; ++}; ++ ++&saradc { ++ vref-supply = <&vcc_1v8>; ++ status = "okay"; ++}; ++ ++&sdhci { ++ bus-width = <8>; ++ mmc-hs200-1_8v; ++ non-removable; ++ pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>, ++ <&emmc_datastrobe>, <&emmc_rstnout>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; ++ ++&sdmmc0 { ++ bus-width = <4>; ++ cap-mmc-highspeed; ++ cap-sd-highspeed; ++ disable-wp; ++ pinctrl-0 = <&sdmmc0_bus4>, <&sdmmc0_clk>, <&sdmmc0_cmd>, ++ <&sdmmc0_det>; ++ pinctrl-names = "default"; ++ sd-uhs-sdr104; ++ vqmmc-supply = <&vccio_sd>; ++ status = "okay"; ++}; ++ ++&sdmmc1 { ++ bus-width = <4>; ++ cap-sd-highspeed; ++ cap-sdio-irq; ++ keep-power-in-suspend; ++ mmc-pwrseq = <&sdio_pwrseq>; ++ non-removable; ++ pinctrl-0 = <&sdmmc1_bus4>, <&sdmmc1_cmd>, <&sdmmc1_clk>; ++ pinctrl-names = "default"; ++ vmmc-supply = <&vcc_wifi>; ++ status = "okay"; ++}; ++ ++&sdmmc2 { ++ bus-width = <4>; ++ cap-mmc-highspeed; ++ cap-sd-highspeed; ++ disable-wp; ++ pinctrl-0 = <&sdmmc2m1_bus4>, <&sdmmc2m1_cmd>, <&sdmmc2m1_clk>, ++ <&sdmmc2m1_det>; ++ pinctrl-names = "default"; ++ sd-uhs-sdr104; ++ vqmmc-supply = <&vcc2v8_dvp>; ++ status = "okay"; ++}; ++ ++&tsadc { ++ rockchip,hw-tshut-mode = <1>; ++ rockchip,hw-tshut-polarity = <0>; ++ status = "okay"; ++}; ++ ++&uart1 { ++ pinctrl-0 = <&uart1m0_xfer>, <&uart1m0_ctsn>, <&uart1m0_rtsn>; ++ pinctrl-names = "default"; ++ uart-has-rtscts; ++ status = "okay"; ++ ++ bluetooth { ++ compatible = "realtek,rtl8821cs-bt", "realtek,rtl8723bs-bt"; ++ device-wake-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>; ++ enable-gpios = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>; ++ host-wake-gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>; ++ }; ++}; ++ ++&uart2 { ++ status = "okay"; ++}; ++ ++&usb_host0_xhci { ++ phys = <&usb2phy0_otg>; ++ phy-names = "usb2-phy"; ++ status = "okay"; ++}; ++ ++&usb_host1_xhci { ++ status = "okay"; ++}; ++ ++&usb2phy0 { ++ status = "okay"; ++}; ++ ++&usb2phy0_otg { ++ status = "okay"; ++}; ++ ++&usb2phy0_host { ++ phy-supply = <&vcc5v0_host>; ++ status = "okay"; ++}; ++ ++&vop { ++ assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; ++ assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; ++ status = "okay"; ++}; ++ ++&vop_mmu { ++ status = "okay"; ++}; ++ ++&vp0 { ++ vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { ++ reg = ; ++ remote-endpoint = <&hdmi_in_vp0>; ++ }; ++}; ++ ++&vp1 { ++ vp1_out_dsi0: endpoint@ROCKCHIP_VOP2_EP_MIPI0 { ++ reg = ; ++ remote-endpoint = <&dsi0_in_vp1>; ++ }; ++}; +-- +2.34.1 diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/008-add-rtw88-to-anydat.patch.no b/projects/Rockchip/packages/linux/patches/RK3566-ML/008-add-rtw88-to-anydat.patch.no new file mode 100644 index 0000000000..3f877a4bd9 --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566-ML/008-add-rtw88-to-anydat.patch.no @@ -0,0 +1,10 @@ +diff --git a/packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat b/packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat +index 22ab7452..8ad5768a 100644 +--- a/packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat ++++ b/packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat +@@ -20,4 +20,4 @@ ath9k_htc/* + brcm/* + rtl_bt/* + rtlwifi/* +-rtw89/* ++rtw*/* diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/009-delay-wifi-powerup.patch.no b/projects/Rockchip/packages/linux/patches/RK3566-ML/009-delay-wifi-powerup.patch.no new file mode 100644 index 0000000000..f8be999d1f --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566-ML/009-delay-wifi-powerup.patch.no @@ -0,0 +1,11 @@ +diff -rupN a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi +--- a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi 2023-12-11 11:39:10.610833310 -0500 ++++ b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi 2023-12-11 11:39:20.677499539 -0500 +@@ -224,7 +224,7 @@ + clock-names = "ext_clock"; + pinctrl-0 = <&wifi_enable_h>; + pinctrl-names = "default"; +- post-power-on-delay-ms = <200>; ++ post-power-on-delay-ms = <800>; + reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_LOW>; + }; diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/200_Omnibus_patch_with_rgxxx3_changes_and_removal_of_dir_from_uboot_dtb_path.dont_patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/001-v3-add_additional_boards_and_features_to_rgxx3.patch similarity index 59% rename from projects/Rockchip/packages/u-boot/patches/RK3566-ML/200_Omnibus_patch_with_rgxxx3_changes_and_removal_of_dir_from_uboot_dtb_path.dont_patch rename to projects/Rockchip/packages/u-boot/patches/RK3566-ML/001-v3-add_additional_boards_and_features_to_rgxx3.patch index 908b5f4d11..602bbcfa8e 100644 --- a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/200_Omnibus_patch_with_rgxxx3_changes_and_removal_of_dir_from_uboot_dtb_path.dont_patch +++ b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/001-v3-add_additional_boards_and_features_to_rgxx3.patch @@ -1,194 +1,103 @@ -diff --git a/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi b/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi -index f986e1941..e3ab196d2 100644 ---- a/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi -+++ b/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi -@@ -76,6 +76,12 @@ - /delete-property/ clock-names; - }; - -+&saradc { -+ bootph-all; -+ vref-supply = <&vcc_sys>; -+ status = "okay"; -+}; -+ - &sdhci { - pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>, - <&emmc_datastrobe>, <&emmc_rstnout>; -@@ -94,3 +100,8 @@ - bootph-all; - status = "okay"; - }; -+ -+&vcc_sys { -+ bootph-all; -+ status = "okay"; -+}; -diff --git a/arch/arm/mach-rockchip/Makefile b/arch/arm/mach-rockchip/Makefile -index 1dc92066b..ff089ae94 100644 ---- a/arch/arm/mach-rockchip/Makefile -+++ b/arch/arm/mach-rockchip/Makefile -@@ -15,13 +15,13 @@ obj-tpl-$(CONFIG_ROCKCHIP_PX30) += px30-board-tpl.o - - obj-spl-$(CONFIG_ROCKCHIP_RK3036) += rk3036-board-spl.o - --ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),) -- - # Always include boot_mode.o, as we bypass it (i.e. turn it off) - # inside of boot_mode.c when CONFIG_ROCKCHIP_BOOT_MODE_REG is 0. This way, - # we can have the preprocessor correctly recognise both 0x0 and 0 - # meaning "turn it off". - obj-y += boot_mode.o -+ -+ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),) - obj-$(CONFIG_ROCKCHIP_COMMON_BOARD) += board.o - obj-$(CONFIG_MISC_INIT_R) += misc.o - endif -diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c -index 57f08e0be..77145524e 100644 ---- a/arch/arm/mach-rockchip/board.c -+++ b/arch/arm/mach-rockchip/board.c -@@ -348,3 +348,35 @@ __weak int misc_init_r(void) - return ret; - } - #endif -+ -+#if IS_ENABLED(CONFIG_BOARD_RNG_SEED) && IS_ENABLED(CONFIG_RNG_ROCKCHIP) -+#include -+ -+/* Use hardware rng to seed Linux random. */ -+__weak int board_rng_seed(struct abuf *buf) -+{ -+ struct udevice *dev; -+ size_t len = 0x8; -+ u64 *data; -+ -+ data = malloc(len); -+ if (!data) { -+ printf("Out of memory\n"); -+ return -ENOMEM; -+ } -+ -+ if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) { -+ printf("No RNG device\n"); -+ return -ENODEV; -+ } -+ -+ if (dm_rng_read(dev, data, len)) { -+ printf("Reading RNG failed\n"); -+ return -EIO; -+ } -+ -+ abuf_init_set(buf, data, len); -+ -+ return 0; -+} -+#endif -diff --git a/arch/arm/mach-rockchip/boot_mode.c b/arch/arm/mach-rockchip/boot_mode.c -index eb8f65ae4..d2308768b 100644 ---- a/arch/arm/mach-rockchip/boot_mode.c -+++ b/arch/arm/mach-rockchip/boot_mode.c -@@ -38,6 +38,10 @@ void set_back_to_bootrom_dnl_flag(void) - #define KEY_DOWN_MIN_VAL 0 - #define KEY_DOWN_MAX_VAL 30 - -+#ifndef RK_DNL_ADC_CHAN -+#define RK_DNL_ADC_CHAN 1 -+#endif -+ - __weak int rockchip_dnl_key_pressed(void) - { - unsigned int val; -@@ -52,7 +56,8 @@ __weak int rockchip_dnl_key_pressed(void) - ret = -ENODEV; - uclass_foreach_dev(dev, uc) { - if (!strncmp(dev->name, "saradc", 6)) { -- ret = adc_channel_single_shot(dev->name, 1, &val); -+ ret = adc_channel_single_shot(dev->name, -+ RK_DNL_ADC_CHAN, &val); - break; - } - } -@@ -73,11 +78,13 @@ __weak int rockchip_dnl_key_pressed(void) - - void rockchip_dnl_mode_check(void) - { -+#if CONFIG_IS_ENABLED(ADC) - if (rockchip_dnl_key_pressed()) { - printf("download key pressed, entering download mode..."); - set_back_to_bootrom_dnl_flag(); - do_reset(NULL, 0, 0, NULL); - } -+#endif - } - - int setup_boot_mode(void) -@@ -90,6 +97,7 @@ int setup_boot_mode(void) - boot_mode = readl(reg); - debug("%s: boot mode 0x%08x\n", __func__, boot_mode); - -+#if !defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) - /* Clear boot mode */ - writel(BOOT_NORMAL, reg); - -@@ -103,6 +111,7 @@ int setup_boot_mode(void) - env_set("preboot", "setenv preboot; ums mmc 0"); - break; - } -+#endif - - return 0; - } +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 0/7] Add Additional Boards and Features to RGxx3 +Date: Mon, 11 Dec 2023 17:21:18 -0600 [thread overview] +Message-ID: <20231211232125.171438-1-macroalpha82@gmail.com> (raw) + +From: Chris Morgan + +The RGxx3 is a pseudo-device for U-Boot that works for every Anbernic +RGxx3 series device on the market. Add support for another series of +very similar devices from Powkiddy. + +Changes since V2: + - Modify the mach-rockchip level rockchip_dnl_key_pressed() so that + we can also call it in SPL mode and eliminate the board specific + function. This requires adding ADC support to SPL. Additionally, + I had to change the regulator for the saradc to a fixed regulator + and add GPIO and regulator support to SPL. + - Move the board specific board_rng_seed to the mach-rockchip level + board file so that other rockchip boards with a hardware RNG can + benefit. This should only be called if both the Rockchip + hardware RNG as well as the rng seed functions are enabled. + - Add two new boards (the RG-ARC-D and RG-ARC-S). I removed the + previous code review due to the extensive changes made. + +Changes since V1: + - Update verbiage around function button to say "recovery" mode + instead of calling it "maskrom" mode, which has a specific + meaning. Also note that recovery function was done in a board + specific manner to ensure it can run early. + - Update board level documentation for the RGxx3. + +Chris Morgan (7): + board: rockchip: Refactor panel auto-detect code + spl: Add Kconfig options for ADC + rockchip: boot_mode: Allow rockchip_dnl_key_pressed() in SPL + board: rockchip: Add Recovery Button for Anbernic RGxx3 + rockchip: board: Add board_rng_seed() for all Rockchip devices + board: rockchip: Add support for new boards to RGxx3 + doc: board: anbernic: Update rgxx3 to add new boards + + .../arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi | 11 + + arch/arm/mach-rockchip/Makefile | 4 +- + arch/arm/mach-rockchip/board.c | 32 +++ + arch/arm/mach-rockchip/boot_mode.c | 11 +- + board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 194 +++++++++++------- + common/spl/Kconfig | 7 + + configs/anbernic-rgxx3-rk3566_defconfig | 16 +- + doc/board/anbernic/rgxx3.rst | 20 +- + drivers/Makefile | 1 + + drivers/adc/Makefile | 2 +- + include/configs/anbernic-rgxx3-rk3566.h | 2 + + 11 files changed, 210 insertions(+), 90 deletions(-) + +-- +2.34.1 + +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 1/7] board: rockchip: Refactor panel auto-detect code +Date: Mon, 11 Dec 2023 17:21:19 -0600 [thread overview] +Message-ID: <20231211232125.171438-2-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Make the inability to detect a panel using the auto detection code not +fail the entire boot process. This means that if the panel ID cannot +be read we don't set an environment variable for the panel, and if an +environment variable for the panel is not set we don't attempt to +update the compatible string. Changes to the code also ensure that +when there are multiple compatible strings required for the panel +we use them both, which solves some issues that will pop up soon +for the Linux driver. + +Signed-off-by: Chris Morgan +--- + board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 115 +++++++++++++-------- + 1 file changed, 74 insertions(+), 41 deletions(-) + diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -index 3f1a42d18..94af45cf0 100644 +index 3f1a42d184..3d0c614623 100644 --- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -@@ -5,6 +5,7 @@ - - #include - #include -+#include - #include - #include - #include -@@ -16,7 +17,6 @@ - #include - #include - #include --#include - #include - #include - -@@ -33,13 +33,15 @@ - - #define GPIO_WRITEMASK(bits) ((bits) << 16) - --#define DTB_DIR "rockchip/" -+// #define DTB_DIR "rockchip/" -+#define DTB_DIR "" - - struct rg3xx_model { - const u16 adc_value; +@@ -40,6 +40,7 @@ struct rg3xx_model { const char *board; const char *board_name; const char *fdtfile; + const bool detect_panel; }; - + enum rgxx3_device_id { -@@ -47,67 +49,117 @@ enum rgxx3_device_id { - RG353P, - RG353V, - RG503, -+ RGB30, -+ RK2023, -+ RGARCD, - /* Devices with duplicate ADC value */ - RG353PS, - RG353VS, -+ RGARCS, - }; - +@@ -54,52 +55,67 @@ enum rgxx3_device_id { + static const struct rg3xx_model rg3xx_model_details[] = { [RG353M] = { - 517, /* Observed average from device */ @@ -233,27 +142,6 @@ index 3f1a42d18..94af45cf0 100644 + .board = "rk3566-anbernic-rg503", + .board_name = "RG503", + .fdtfile = DTB_DIR "rk3566-anbernic-rg503.dtb", -+ .detect_panel = 0, -+ }, -+ [RGB30] = { -+ .adc_value = 383, /* Gathered from second hand information */ -+ .board = "rk3566-powkiddy-rgb30", -+ .board_name = "RGB30", -+ .fdtfile = DTB_DIR "rk3566-powkiddy-rgb30.dtb", -+ .detect_panel = 0, -+ }, -+ [RK2023] = { -+ .adc_value = 635, /* Observed average from device */ -+ .board = "rk3566-powkiddy-rk2023", -+ .board_name = "RK2023", -+ .fdtfile = DTB_DIR "rk3566-powkiddy-rk2023.dtb", -+ .detect_panel = 0, -+ }, -+ [RGARCD] = { -+ .adc_value = 183, /* Observed average from device */ -+ .board = "rk3566-anbernic-rg-arc-d", -+ .board_name = "Anbernic RG ARC-D", -+ .fdtfile = DTB_DIR "rk3566-anbernic-rg-arc-d.dtb", + .detect_panel = 0, }, /* Devices with duplicate ADC value */ @@ -278,22 +166,15 @@ index 3f1a42d18..94af45cf0 100644 + .board_name = "RG353VS", + .fdtfile = DTB_DIR "rk3566-anbernic-rg353vs.dtb", + .detect_panel = 1, -+ }, -+ [RGARCS] = { -+ .adc_value = 183, /* Observed average from device */ -+ .board = "rk3566-anbernic-rg-arc-s", -+ .board_name = "Anbernic RG ARC-S", -+ .fdtfile = DTB_DIR "rk3566-anbernic-rg-arc-s.dtb", -+ .detect_panel = 0, }, }; - + struct rg353_panel { const u16 id; - const char *panel_compat; + const char *panel_compat[2]; }; - + static const struct rg353_panel rg353_panel_details[] = { - { .id = 0x3052, .panel_compat = "newvision,nv3051d"}, - { .id = 0x3821, .panel_compat = "anbernic,rg353v-panel-v2"}, @@ -308,127 +189,53 @@ index 3f1a42d18..94af45cf0 100644 + .panel_compat[1] = NULL, + }, }; - - /* -- * Start LED very early so user knows device is on. Set color -+ * Check if rockchip_dnl button is pressed and reboot into rockusb if -+ * true. Start LED very early so user knows device is on. Set color - * to red. - */ - void spl_board_init(void) - { -+ setup_boot_mode(); -+ - /* Set GPIO0_C5, GPIO0_C6, and GPIO0_C7 to output. */ - writel(GPIO_WRITEMASK(GPIO_C7 | GPIO_C6 | GPIO_C5) | \ - (GPIO_C7 | GPIO_C6 | GPIO_C5), -@@ -117,34 +169,6 @@ void spl_board_init(void) - (GPIO0_BASE + GPIO_SWPORT_DR_H)); - } - --/* Use hardware rng to seed Linux random. */ --int board_rng_seed(struct abuf *buf) --{ -- struct udevice *dev; -- size_t len = 0x8; -- u64 *data; -- -- data = malloc(len); -- if (!data) { -- printf("Out of memory\n"); -- return -ENOMEM; -- } -- -- if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) { -- printf("No RNG device\n"); -- return -ENODEV; -- } -- -- if (dm_rng_read(dev, data, len)) { -- printf("Reading RNG failed\n"); -- return -EIO; -- } -- -- abuf_init_set(buf, data, len); -- -- return 0; --} -- + /* - * Buzz the buzzer so the user knows something is going on. Make it - * optional in case PWM is disabled. -@@ -298,11 +322,10 @@ int rgxx3_detect_display(void) +@@ -298,11 +314,10 @@ int rgxx3_detect_display(void) if (!panel) { printf("Unable to identify panel_id %x\n", (panel_id[0] << 8) | panel_id[1]); - env_set("panel", "unknown"); return -EINVAL; } - + - env_set("panel", panel->panel_compat); + env_set("panel", panel->panel_compat[0]); - + return 0; } -@@ -342,19 +365,21 @@ int rgxx3_detect_device(void) - } - - /* -- * Try to access the eMMC on an RG353V or RG353P. If it's -- * missing, it's an RG353VS or RG353PS. Note we could also -- * check for a touchscreen at 0x1a on i2c2. -+ * Try to access the eMMC on an RG353V, RG353P, or RG Arc D. -+ * If it's missing, it's an RG353VS, RG353PS, or RG Arc S. -+ * Note we could also check for a touchscreen at 0x1a on i2c2. - */ -- if (board_id == RG353V || board_id == RG353P) { -+ if (board_id == RG353V || board_id == RG353P || board_id == RGARCD) { - mmc = find_mmc_device(0); - if (mmc) { - ret = mmc_init(mmc); - if (ret) { - if (board_id == RG353V) - board_id = RG353VS; -- else -+ if (board_id == RG353P) - board_id = RG353PS; -+ else -+ board_id = RGARCS; - } - } - } -@@ -367,13 +392,14 @@ int rgxx3_detect_device(void) +@@ -367,13 +382,14 @@ int rgxx3_detect_device(void) rg3xx_model_details[board_id].board_name); env_set("fdtfile", rg3xx_model_details[board_id].fdtfile); - + - /* Detect the panel type for any device that isn't a 503. */ - if (board_id == RG503) + /* Skip panel detection for when it is not needed. */ + if (!rg3xx_model_details[board_id].detect_panel) return 0; - + + /* Warn but don't fail for errors in auto-detection of the panel. */ ret = rgxx3_detect_display(); if (ret) - return ret; + printf("Failed to detect panel type\n"); - + return 0; } -@@ -400,7 +426,8 @@ int rk_board_late_init(void) - +@@ -400,7 +416,8 @@ int rk_board_late_init(void) + int ft_board_setup(void *blob, struct bd_info *bd) { - int node, ret; + const struct rg353_panel *panel = NULL; + int node, ret, i; char *env; - + /* No fixups necessary for the RG503 */ -@@ -414,6 +441,12 @@ int ft_board_setup(void *blob, struct bd_info *bd) +@@ -414,6 +431,12 @@ int ft_board_setup(void *blob, struct bd_info *bd) rg3xx_model_details[RG353M].board_name, sizeof(rg3xx_model_details[RG353M].board_name)); - + + env = env_get("panel"); + if (!env) { + printf("Can't get panel env\n"); @@ -438,10 +245,10 @@ index 3f1a42d18..94af45cf0 100644 /* * Check if the environment variable doesn't equal the panel. * If it doesn't, update the devicetree to the correct panel. -@@ -424,12 +457,6 @@ int ft_board_setup(void *blob, struct bd_info *bd) +@@ -424,12 +447,6 @@ int ft_board_setup(void *blob, struct bd_info *bd) return -ENODEV; } - + - env = env_get("panel"); - if (!env) { - printf("Can't get panel env\n"); @@ -451,10 +258,10 @@ index 3f1a42d18..94af45cf0 100644 ret = fdt_node_check_compatible(blob, node, env); if (ret < 0) return -ENODEV; -@@ -438,8 +465,24 @@ int ft_board_setup(void *blob, struct bd_info *bd) +@@ -438,8 +455,24 @@ int ft_board_setup(void *blob, struct bd_info *bd) if (!ret) return 0; - + - do_fixup_by_path_string(blob, "/dsi@fe060000/panel@0", - "compatible", env); + /* Panels don't match, search by first compatible value. */ @@ -475,17 +282,41 @@ index 3f1a42d18..94af45cf0 100644 + if (panel->panel_compat[1]) + fdt_appendprop_string(blob, node, "compatible", + panel->panel_compat[1]); - + return 0; } +-- +2.34.1 + +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 2/7] spl: Add Kconfig options for ADC +Date: Mon, 11 Dec 2023 17:21:20 -0600 [thread overview] +Message-ID: <20231211232125.171438-3-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add kconfig options to enable ADC in SPL + +Signed-off-by: Chris Morgan +--- + common/spl/Kconfig | 7 +++++++ + drivers/Makefile | 1 + + drivers/adc/Makefile | 2 +- + 3 files changed, 9 insertions(+), 1 deletion(-) + diff --git a/common/spl/Kconfig b/common/spl/Kconfig -index c521b02f4..ada9dcea5 100644 +index c521b02f4a..ada9dcea5c 100644 --- a/common/spl/Kconfig +++ b/common/spl/Kconfig @@ -579,6 +579,13 @@ config SPL_FIT_IMAGE_TINY ensure this information is available to the next image invoked). - + +config SPL_ADC + bool "Support ADC drivers" + help @@ -496,13 +327,224 @@ index c521b02f4..ada9dcea5 100644 config SPL_CACHE bool "Support CACHE drivers" help -diff --git a/configs/anbernic-rgxx3-rk3566_defconfig b/configs/anbernic-rgxx3-rk3566_defconfig -index ed6643d9d..4e72f7581 100644 ---- a/configs/anbernic-rgxx3-rk3566_defconfig -+++ b/configs/anbernic-rgxx3-rk3566_defconfig -@@ -3,6 +3,7 @@ CONFIG_SKIP_LOWLEVEL_INIT=y - CONFIG_COUNTER_FREQUENCY=24000000 - CONFIG_ARCH_ROCKCHIP=y +diff --git a/drivers/Makefile b/drivers/Makefile +index bf73b7718c..81ba2c534e 100644 +--- a/drivers/Makefile ++++ b/drivers/Makefile +@@ -1,5 +1,6 @@ + # SPDX-License-Identifier: GPL-2.0+ + ++obj-$(CONFIG_$(SPL_)ADC) += adc/ + obj-$(CONFIG_$(SPL_TPL_)BIOSEMU) += bios_emulator/ + obj-$(CONFIG_$(SPL_TPL_)BLK) += block/ + obj-$(CONFIG_$(SPL_TPL_)BOOTCOUNT_LIMIT) += bootcount/ +diff --git a/drivers/adc/Makefile b/drivers/adc/Makefile +index 5336c82097..9eb07769b0 100644 +--- a/drivers/adc/Makefile ++++ b/drivers/adc/Makefile +@@ -4,7 +4,7 @@ + # Przemyslaw Marczak + # + +-obj-$(CONFIG_ADC) += adc-uclass.o ++obj-$(CONFIG_$(SPL_)ADC) += adc-uclass.o + obj-$(CONFIG_ADC_EXYNOS) += exynos-adc.o + obj-$(CONFIG_ADC_SANDBOX) += sandbox.o + obj-$(CONFIG_SARADC_ROCKCHIP) += rockchip-saradc.o +-- +2.34.1 + +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 3/7] rockchip: boot_mode: Allow rockchip_dnl_key_pressed() in SPL +Date: Mon, 11 Dec 2023 17:21:21 -0600 [thread overview] +Message-ID: <20231211232125.171438-4-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Update the rockchip_dnl_key_pressed() so that it can run in +SPL. Also change the ADC channel to a define that can be +overridden by a board specific option. + +Signed-off-by: Chris Morgan +--- + arch/arm/mach-rockchip/Makefile | 4 ++-- + arch/arm/mach-rockchip/boot_mode.c | 11 ++++++++++- + 2 files changed, 12 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/mach-rockchip/Makefile b/arch/arm/mach-rockchip/Makefile +index 1dc92066bb..ff089ae949 100644 +--- a/arch/arm/mach-rockchip/Makefile ++++ b/arch/arm/mach-rockchip/Makefile +@@ -15,13 +15,13 @@ obj-tpl-$(CONFIG_ROCKCHIP_PX30) += px30-board-tpl.o + + obj-spl-$(CONFIG_ROCKCHIP_RK3036) += rk3036-board-spl.o + +-ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),) +- + # Always include boot_mode.o, as we bypass it (i.e. turn it off) + # inside of boot_mode.c when CONFIG_ROCKCHIP_BOOT_MODE_REG is 0. This way, + # we can have the preprocessor correctly recognise both 0x0 and 0 + # meaning "turn it off". + obj-y += boot_mode.o ++ ++ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),) + obj-$(CONFIG_ROCKCHIP_COMMON_BOARD) += board.o + obj-$(CONFIG_MISC_INIT_R) += misc.o + endif +diff --git a/arch/arm/mach-rockchip/boot_mode.c b/arch/arm/mach-rockchip/boot_mode.c +index eb8f65ae4e..d2308768be 100644 +--- a/arch/arm/mach-rockchip/boot_mode.c ++++ b/arch/arm/mach-rockchip/boot_mode.c +@@ -38,6 +38,10 @@ void set_back_to_bootrom_dnl_flag(void) + #define KEY_DOWN_MIN_VAL 0 + #define KEY_DOWN_MAX_VAL 30 + ++#ifndef RK_DNL_ADC_CHAN ++#define RK_DNL_ADC_CHAN 1 ++#endif ++ + __weak int rockchip_dnl_key_pressed(void) + { + unsigned int val; +@@ -52,7 +56,8 @@ __weak int rockchip_dnl_key_pressed(void) + ret = -ENODEV; + uclass_foreach_dev(dev, uc) { + if (!strncmp(dev->name, "saradc", 6)) { +- ret = adc_channel_single_shot(dev->name, 1, &val); ++ ret = adc_channel_single_shot(dev->name, ++ RK_DNL_ADC_CHAN, &val); + break; + } + } +@@ -73,11 +78,13 @@ __weak int rockchip_dnl_key_pressed(void) + + void rockchip_dnl_mode_check(void) + { ++#if CONFIG_IS_ENABLED(ADC) + if (rockchip_dnl_key_pressed()) { + printf("download key pressed, entering download mode..."); + set_back_to_bootrom_dnl_flag(); + do_reset(NULL, 0, 0, NULL); + } ++#endif + } + + int setup_boot_mode(void) +@@ -90,6 +97,7 @@ int setup_boot_mode(void) + boot_mode = readl(reg); + debug("%s: boot mode 0x%08x\n", __func__, boot_mode); + ++#if !defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + /* Clear boot mode */ + writel(BOOT_NORMAL, reg); + +@@ -103,6 +111,7 @@ int setup_boot_mode(void) + env_set("preboot", "setenv preboot; ums mmc 0"); + break; + } ++#endif + + return 0; + } +-- +2.34.1 + +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 4/7] board: rockchip: Add Recovery Button for Anbernic RGxx3 +Date: Mon, 11 Dec 2023 17:21:22 -0600 [thread overview] +Message-ID: <20231211232125.171438-5-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add support for users to enter recovery mode by holding the function +button when they power up the device. + +Since the device has soldered eMMC and sometimes does not expose a clk +pin on the mainboard there is a small chance that a user who flashes a +bad bootloader may not be able to recover if the headers themselves +are valid. As a result this check is done during spl_early_init() to +ensure that it runs as early as possible, and it does so by directly +manipulating the ADC hardware in lieu of loading the ADC driver. + +Signed-off-by: Chris Morgan +--- + arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi | 11 +++++++++++ + board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 6 +++++- + configs/anbernic-rgxx3-rk3566_defconfig | 16 ++++++++++++---- + include/configs/anbernic-rgxx3-rk3566.h | 2 ++ + 4 files changed, 30 insertions(+), 5 deletions(-) + +diff --git a/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi b/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi +index f986e1941e..e3ab196d22 100644 +--- a/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi ++++ b/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi +@@ -76,6 +76,12 @@ + /delete-property/ clock-names; + }; + ++&saradc { ++ bootph-all; ++ vref-supply = <&vcc_sys>; ++ status = "okay"; ++}; ++ + &sdhci { + pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>, + <&emmc_datastrobe>, <&emmc_rstnout>; +@@ -94,3 +100,8 @@ + bootph-all; + status = "okay"; + }; ++ ++&vcc_sys { ++ bootph-all; ++ status = "okay"; ++}; +diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +index 3d0c614623..45854709f5 100644 +--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c ++++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +@@ -5,6 +5,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -119,11 +120,14 @@ static const struct rg353_panel rg353_panel_details[] = { + }; + + /* +- * Start LED very early so user knows device is on. Set color ++ * Check if rockchip_dnl button is pressed and reboot into rockusb if ++ * true. Start LED very early so user knows device is on. Set color + * to red. + */ + void spl_board_init(void) + { ++ setup_boot_mode(); ++ + /* Set GPIO0_C5, GPIO0_C6, and GPIO0_C7 to output. */ + writel(GPIO_WRITEMASK(GPIO_C7 | GPIO_C6 | GPIO_C5) | \ + (GPIO_C7 | GPIO_C6 | GPIO_C5), +diff --git a/configs/anbernic-rgxx3-rk3566_defconfig b/configs/anbernic-rgxx3-rk3566_defconfig +index ed6643d9d4..4e72f75815 100644 +--- a/configs/anbernic-rgxx3-rk3566_defconfig ++++ b/configs/anbernic-rgxx3-rk3566_defconfig +@@ -3,6 +3,7 @@ CONFIG_SKIP_LOWLEVEL_INIT=y + CONFIG_COUNTER_FREQUENCY=24000000 + CONFIG_ARCH_ROCKCHIP=y CONFIG_TEXT_BASE=0x00a00000 +CONFIG_SPL_GPIO=y CONFIG_SPL_LIBCOMMON_SUPPORT=y @@ -571,14 +613,272 @@ index ed6643d9d..4e72f7581 100644 +# CONFIG_RSA is not set CONFIG_ERRNO_STR=y # CONFIG_EFI_LOADER is not set +diff --git a/include/configs/anbernic-rgxx3-rk3566.h b/include/configs/anbernic-rgxx3-rk3566.h +index 3c4ea4e7d8..2aaac55c06 100644 +--- a/include/configs/anbernic-rgxx3-rk3566.h ++++ b/include/configs/anbernic-rgxx3-rk3566.h +@@ -9,4 +9,6 @@ + "stdout=serial,vidconsole\0" \ + "stderr=serial,vidconsole\0" + ++#define RK_DNL_ADC_CHAN 0 ++ + #endif +-- +2.34.1 + +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 5/7] rockchip: board: Add board_rng_seed() for all Rockchip devices +Date: Mon, 11 Dec 2023 17:21:23 -0600 [thread overview] +Message-ID: <20231211232125.171438-6-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Allow all rockchip devices to use the hardware RNG to seed Linux +RNG. + +Signed-off-by: Chris Morgan +--- + arch/arm/mach-rockchip/board.c | 32 ++++++++++++++++++++++ + board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 29 -------------------- + 2 files changed, 32 insertions(+), 29 deletions(-) + +diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c +index 57f08e0be0..77145524ea 100644 +--- a/arch/arm/mach-rockchip/board.c ++++ b/arch/arm/mach-rockchip/board.c +@@ -348,3 +348,35 @@ __weak int misc_init_r(void) + return ret; + } + #endif ++ ++#if IS_ENABLED(CONFIG_BOARD_RNG_SEED) && IS_ENABLED(CONFIG_RNG_ROCKCHIP) ++#include ++ ++/* Use hardware rng to seed Linux random. */ ++__weak int board_rng_seed(struct abuf *buf) ++{ ++ struct udevice *dev; ++ size_t len = 0x8; ++ u64 *data; ++ ++ data = malloc(len); ++ if (!data) { ++ printf("Out of memory\n"); ++ return -ENOMEM; ++ } ++ ++ if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) { ++ printf("No RNG device\n"); ++ return -ENODEV; ++ } ++ ++ if (dm_rng_read(dev, data, len)) { ++ printf("Reading RNG failed\n"); ++ return -EIO; ++ } ++ ++ abuf_init_set(buf, data, len); ++ ++ return 0; ++} ++#endif +diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +index 45854709f5..7bef5a53f0 100644 +--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c ++++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +@@ -17,7 +17,6 @@ + #include + #include + #include +-#include + #include + #include + +@@ -137,34 +136,6 @@ void spl_board_init(void) + (GPIO0_BASE + GPIO_SWPORT_DR_H)); + } + +-/* Use hardware rng to seed Linux random. */ +-int board_rng_seed(struct abuf *buf) +-{ +- struct udevice *dev; +- size_t len = 0x8; +- u64 *data; +- +- data = malloc(len); +- if (!data) { +- printf("Out of memory\n"); +- return -ENOMEM; +- } +- +- if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) { +- printf("No RNG device\n"); +- return -ENODEV; +- } +- +- if (dm_rng_read(dev, data, len)) { +- printf("Reading RNG failed\n"); +- return -EIO; +- } +- +- abuf_init_set(buf, data, len); +- +- return 0; +-} +- + /* + * Buzz the buzzer so the user knows something is going on. Make it + * optional in case PWM is disabled. +-- +2.34.1 +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 6/7] board: rockchip: Add support for new boards to RGxx3 +Date: Mon, 11 Dec 2023 17:21:24 -0600 [thread overview] +Message-ID: <20231211232125.171438-7-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add support for the Anbernic RG-ARC-D, Anbernic RG-ARC-S, Powkiddy +RK2023, and Powkiddy RGB30 to the Anbernic RGxx3. While the Powkiddy +devices are manufactured by Powkiddy instead of Anbernic, +the hardware is so similar they can all use the same bootloader. + +Signed-off-by: Chris Morgan +--- + board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 44 +++++++++++++++++++--- + 1 file changed, 39 insertions(+), 5 deletions(-) + +diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +index 7bef5a53f0..2445663d43 100644 +--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c ++++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +@@ -48,9 +48,13 @@ enum rgxx3_device_id { + RG353P, + RG353V, + RG503, ++ RGB30, ++ RK2023, ++ RGARCD, + /* Devices with duplicate ADC value */ + RG353PS, + RG353VS, ++ RGARCS, + }; + + static const struct rg3xx_model rg3xx_model_details[] = { +@@ -83,6 +87,27 @@ static const struct rg3xx_model rg3xx_model_details[] = { + .fdtfile = DTB_DIR "rk3566-anbernic-rg503.dtb", + .detect_panel = 0, + }, ++ [RGB30] = { ++ .adc_value = 383, /* Gathered from second hand information */ ++ .board = "rk3566-powkiddy-rgb30", ++ .board_name = "RGB30", ++ .fdtfile = DTB_DIR "rk3566-powkiddy-rgb30.dtb", ++ .detect_panel = 0, ++ }, ++ [RK2023] = { ++ .adc_value = 635, /* Observed average from device */ ++ .board = "rk3566-powkiddy-rk2023", ++ .board_name = "RK2023", ++ .fdtfile = DTB_DIR "rk3566-powkiddy-rk2023.dtb", ++ .detect_panel = 0, ++ }, ++ [RGARCD] = { ++ .adc_value = 183, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg-arc-d", ++ .board_name = "Anbernic RG ARC-D", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg-arc-d.dtb", ++ .detect_panel = 0, ++ }, + /* Devices with duplicate ADC value */ + [RG353PS] = { + .adc_value = 860, /* Observed average from device */ +@@ -98,6 +123,13 @@ static const struct rg3xx_model rg3xx_model_details[] = { + .fdtfile = DTB_DIR "rk3566-anbernic-rg353vs.dtb", + .detect_panel = 1, + }, ++ [RGARCS] = { ++ .adc_value = 183, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg-arc-s", ++ .board_name = "Anbernic RG ARC-S", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg-arc-s.dtb", ++ .detect_panel = 0, ++ }, + }; + + struct rg353_panel { +@@ -332,19 +364,21 @@ int rgxx3_detect_device(void) + } + + /* +- * Try to access the eMMC on an RG353V or RG353P. If it's +- * missing, it's an RG353VS or RG353PS. Note we could also +- * check for a touchscreen at 0x1a on i2c2. ++ * Try to access the eMMC on an RG353V, RG353P, or RG Arc D. ++ * If it's missing, it's an RG353VS, RG353PS, or RG Arc S. ++ * Note we could also check for a touchscreen at 0x1a on i2c2. + */ +- if (board_id == RG353V || board_id == RG353P) { ++ if (board_id == RG353V || board_id == RG353P || board_id == RGARCD) { + mmc = find_mmc_device(0); + if (mmc) { + ret = mmc_init(mmc); + if (ret) { + if (board_id == RG353V) + board_id = RG353VS; +- else ++ if (board_id == RG353P) + board_id = RG353PS; ++ else ++ board_id = RGARCS; + } + } + } +-- +2.34.1 + +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 7/7] doc: board: anbernic: Update rgxx3 to add new boards +Date: Mon, 11 Dec 2023 17:21:25 -0600 [thread overview] +Message-ID: <20231211232125.171438-8-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Update the RGxx3 documentation to note that it now supports the +RG-ARC-D, RG-ARC-S, Powkiddy RK2023, and Powkiddy RGB30. Also update +verbiage around panel detection to note that it is no longer hard coded +to the RG503. + +Signed-off-by: Chris Morgan +--- + doc/board/anbernic/rgxx3.rst | 20 ++++++++++++++------ + 1 file changed, 14 insertions(+), 6 deletions(-) + diff --git a/doc/board/anbernic/rgxx3.rst b/doc/board/anbernic/rgxx3.rst -index 7d1beb423..d159ed2f7 100644 +index 7d1beb423c..d159ed2f76 100644 --- a/doc/board/anbernic/rgxx3.rst +++ b/doc/board/anbernic/rgxx3.rst @@ -5,6 +5,8 @@ U-Boot for Anbernic RGxx3 Devices - + This allows U-Boot to boot the following Anbernic devices: - + + - Anbernic RG-ARC-D + - Anbernic RG-ARC-S - Anbernic RG353M @@ -587,7 +887,7 @@ index 7d1beb423..d159ed2f7 100644 @@ -12,18 +14,24 @@ This allows U-Boot to boot the following Anbernic devices: - Anbernic RG353VS - Anbernic RG503 - + +Additionally, the following very similar non-Anbernic devices are also +supported: + @@ -612,41 +912,8 @@ index 7d1beb423..d159ed2f7 100644 +ID. The display ID is then compared to a table to get the known +compatible string for use in Linux, and this string is saved as an +environment variable of "panel". - + FDT fixups are performed in the event of an RG353M to change the device name, or in the event the panel detected does not match the devicetree. -diff --git a/drivers/Makefile b/drivers/Makefile -index bf73b7718..81ba2c534 100644 ---- a/drivers/Makefile -+++ b/drivers/Makefile -@@ -1,5 +1,6 @@ - # SPDX-License-Identifier: GPL-2.0+ - -+obj-$(CONFIG_$(SPL_)ADC) += adc/ - obj-$(CONFIG_$(SPL_TPL_)BIOSEMU) += bios_emulator/ - obj-$(CONFIG_$(SPL_TPL_)BLK) += block/ - obj-$(CONFIG_$(SPL_TPL_)BOOTCOUNT_LIMIT) += bootcount/ -diff --git a/drivers/adc/Makefile b/drivers/adc/Makefile -index 5336c8209..9eb07769b 100644 ---- a/drivers/adc/Makefile -+++ b/drivers/adc/Makefile -@@ -4,7 +4,7 @@ - # Przemyslaw Marczak - # - --obj-$(CONFIG_ADC) += adc-uclass.o -+obj-$(CONFIG_$(SPL_)ADC) += adc-uclass.o - obj-$(CONFIG_ADC_EXYNOS) += exynos-adc.o - obj-$(CONFIG_ADC_SANDBOX) += sandbox.o - obj-$(CONFIG_SARADC_ROCKCHIP) += rockchip-saradc.o -diff --git a/include/configs/anbernic-rgxx3-rk3566.h b/include/configs/anbernic-rgxx3-rk3566.h -index 3c4ea4e7d..2aaac55c0 100644 ---- a/include/configs/anbernic-rgxx3-rk3566.h -+++ b/include/configs/anbernic-rgxx3-rk3566.h -@@ -9,4 +9,6 @@ - "stdout=serial,vidconsole\0" \ - "stderr=serial,vidconsole\0" - -+#define RK_DNL_ADC_CHAN 0 -+ - #endif +-- +2.34.1 diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/002-v2-add-powkiddy-x55.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/002-v2-add-powkiddy-x55.patch new file mode 100644 index 0000000000..bfc17db1ea --- /dev/null +++ b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/002-v2-add-powkiddy-x55.patch @@ -0,0 +1,1383 @@ +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: jbx6244@gmail.com, jonas@kwiboo.se, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V2] board: rockchip: add Powkiddy X55 +Date: Thu, 14 Dec 2023 12:24:33 -0600 [thread overview] +Message-ID: <20231214182433.37454-1-macroalpha82@gmail.com> (raw) + +From: Chris Morgan + +The Powkiddy X55 is a Rockchip RK3566 based handheld gaming device. +UART, ADC, eMMC, and SDMMC are tested to work in U-Boot and this +successfully boots mainline Linux. + +Changes since V1: + - Built on top of this patch series [1] which makes the ADC detect + function more generic and also moves the board_rng_seed to a more + generic location. + - Updated U-Boot specific devicetree to drop redundant values and + add nodes required for ADC detection in SPL. + - Updated defconfig to add additional options for SPL ADC detection + logic as well as drop some drivers that are not needed. Note that + CONFIG_DM_PMIC_FAN53555 is used by the tcs,tcs4525 regulator on + i2c0 at 0x1c. Additionally the code fails to compile without + selecting CONFIG_SPL_ROCKCHIP_BACK_TO_BROM. + +[1] https://lore.kernel.org/u-boot/20231211232125.171438-1-macroalpha82@gmail.com/ + +Signed-off-by: Chris Morgan +--- + arch/arm/dts/Makefile | 1 + + arch/arm/dts/rk3566-powkiddy-x55-u-boot.dtsi | 67 ++ + arch/arm/dts/rk3566-powkiddy-x55.dts | 926 +++++++++++++++++++ + arch/arm/mach-rockchip/rk3568/Kconfig | 6 + + board/powkiddy/x55/Kconfig | 15 + + board/powkiddy/x55/MAINTAINERS | 9 + + board/powkiddy/x55/Makefile | 6 + + board/powkiddy/x55/x55.c | 42 + + configs/powkiddy-x55-rk3566_defconfig | 92 ++ + doc/board/index.rst | 1 + + doc/board/powkiddy/index.rst | 9 + + doc/board/powkiddy/x55.rst | 25 + + doc/board/rockchip/rockchip.rst | 1 + + include/configs/powkiddy-x55-rk3566.h | 14 + + 14 files changed, 1214 insertions(+) + create mode 100644 arch/arm/dts/rk3566-powkiddy-x55-u-boot.dtsi + create mode 100644 arch/arm/dts/rk3566-powkiddy-x55.dts + create mode 100644 board/powkiddy/x55/Kconfig + create mode 100644 board/powkiddy/x55/MAINTAINERS + create mode 100644 board/powkiddy/x55/Makefile + create mode 100644 board/powkiddy/x55/x55.c + create mode 100644 configs/powkiddy-x55-rk3566_defconfig + create mode 100644 doc/board/powkiddy/index.rst + create mode 100644 doc/board/powkiddy/x55.rst + create mode 100644 include/configs/powkiddy-x55-rk3566.h + +diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile +index 5fc888680b..6e5cb7c3e9 100644 +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -172,6 +172,7 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \ + + dtb-$(CONFIG_ROCKCHIP_RK3568) += \ + rk3566-anbernic-rgxx3.dtb \ ++ rk3566-powkiddy-x55.dtb \ + rk3566-quartz64-a.dtb \ + rk3566-quartz64-b.dtb \ + rk3566-radxa-cm3-io.dtb \ +diff --git a/arch/arm/dts/rk3566-powkiddy-x55-u-boot.dtsi b/arch/arm/dts/rk3566-powkiddy-x55-u-boot.dtsi +new file mode 100644 +index 0000000000..1a3089b598 +--- /dev/null ++++ b/arch/arm/dts/rk3566-powkiddy-x55-u-boot.dtsi +@@ -0,0 +1,67 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++#include "rk356x-u-boot.dtsi" ++ ++/ { ++ chosen { ++ stdout-path = &uart2; ++ }; ++ ++ rng: rng@fe388000 { ++ compatible = "rockchip,cryptov2-rng"; ++ reg = <0x0 0xfe388000 0x0 0x2000>; ++ status = "okay"; ++ }; ++}; ++ ++&cru { ++ assigned-clocks = ++ <&pmucru CLK_RTC_32K>, <&pmucru PLL_PPLL>, ++ <&pmucru PCLK_PMU>, <&cru PLL_CPLL>, ++ <&cru PLL_GPLL>, <&cru PLL_VPLL>, ++ <&cru ACLK_BUS>, <&cru PCLK_BUS>, ++ <&cru ACLK_TOP_HIGH>, <&cru ACLK_TOP_LOW>, ++ <&cru HCLK_TOP>, <&cru PCLK_TOP>, ++ <&cru ACLK_PERIMID>, <&cru HCLK_PERIMID>, ++ <&cru CPLL_500M>, <&cru CPLL_333M>, ++ <&cru CPLL_250M>, <&cru CPLL_125M>, ++ <&cru CPLL_100M>, <&cru CPLL_62P5M>, ++ <&cru CPLL_50M>, <&cru CPLL_25M>; ++ assigned-clock-rates = ++ <32768>, <200000000>, ++ <100000000>, <1000000000>, ++ <1200000000>, <126400000>, ++ <150000000>, <100000000>, ++ <500000000>, <400000000>, ++ <150000000>, <100000000>, ++ <300000000>, <150000000>, ++ <500000000>, <333333333>, ++ <250000000>, <125000000>, ++ <100000000>, <62500000>, ++ <50000000>, <25000000>; ++ assigned-clock-parents = ++ <&pmucru CLK_RTC32K_FRAC>; ++}; ++ ++&pmucru { ++ assigned-clocks = <&pmucru SCLK_32K_IOE>; ++ assigned-clock-parents = <&pmucru CLK_RTC_32K>; ++}; ++ ++/* Move the saradc to a fixed regulator so that it works in SPL. */ ++&saradc { ++ bootph-all; ++ vref-supply = <&vcc_sys>; ++ status = "okay"; ++}; ++ ++&uart2 { ++ clock-frequency = <24000000>; ++ bootph-all; ++ status = "okay"; ++}; ++ ++&vcc_sys { ++ bootph-all; ++ status = "okay"; ++}; +diff --git a/arch/arm/dts/rk3566-powkiddy-x55.dts b/arch/arm/dts/rk3566-powkiddy-x55.dts +new file mode 100644 +index 0000000000..4786b19fd0 +--- /dev/null ++++ b/arch/arm/dts/rk3566-powkiddy-x55.dts +@@ -0,0 +1,926 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include ++#include ++#include ++#include ++#include ++#include "rk3566.dtsi" ++ ++/ { ++ model = "Powkiddy x55"; ++ compatible = "powkiddy,x55", "rockchip,rk3566"; ++ ++ aliases { ++ mmc0 = &sdhci; ++ mmc1 = &sdmmc0; ++ mmc2 = &sdmmc2; ++ mmc3 = &sdmmc1; ++ }; ++ ++ chosen: chosen { ++ stdout-path = "serial2:1500000n8"; ++ }; ++ ++ adc_joystick: adc-joystick { ++ compatible = "adc-joystick"; ++ io-channels = <&saradc 0>, <&saradc 1>, ++ <&saradc 2>, <&saradc 3>; ++ poll-interval = <60>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ axis@0 { ++ reg = <0>; ++ abs-flat = <30>; ++ abs-fuzz = <20>; ++ abs-range = <15 1023>; ++ linux,code = ; ++ }; ++ ++ axis@1 { ++ reg = <1>; ++ abs-flat = <30>; ++ abs-fuzz = <20>; ++ abs-range = <1023 15>; ++ linux,code = ; ++ }; ++ ++ axis@2 { ++ reg = <2>; ++ abs-flat = <30>; ++ abs-fuzz = <20>; ++ abs-range = <15 1023>; ++ linux,code = ; ++ }; ++ ++ axis@3 { ++ reg = <3>; ++ abs-flat = <30>; ++ abs-fuzz = <20>; ++ abs-range = <1023 15>; ++ linux,code = ; ++ }; ++ }; ++ ++ backlight: backlight { ++ compatible = "pwm-backlight"; ++ power-supply = <&vcc_sys>; ++ pwms = <&pwm4 0 25000 0>; ++ }; ++ ++ battery: battery { ++ compatible = "simple-battery"; ++ charge-full-design-microamp-hours = <4000000>; ++ charge-term-current-microamp = <300000>; ++ constant-charge-current-max-microamp = <2000000>; ++ constant-charge-voltage-max-microvolt = <4300000>; ++ factory-internal-resistance-micro-ohms = <91000>; ++ voltage-max-design-microvolt = <4138000>; ++ voltage-min-design-microvolt = <3400000>; ++ ++ ocv-capacity-celsius = <20>; ++ ocv-capacity-table-0 = <4138000 100>, <4083000 95>, <4059000 90>, <4044000 85>, ++ <4030000 80>, <4020000 75>, <4006000 70>, <3972000 65>, ++ <3934000 60>, <3904000 55>, <3878000 50>, <3857000 45>, ++ <3843000 40>, <3826000 35>, <3801000 30>, <3768000 25>, ++ <3735000 20>, <3688000 15>, <3621000 10>, <3553000 5>, ++ <3400000 0>; ++ }; ++ ++ gpio_keys_control: gpio-keys-control { ++ compatible = "gpio-keys"; ++ pinctrl-0 = <&btn_pins_ctrl>; ++ pinctrl-names = "default"; ++ ++ button-a { ++ gpios = <&gpio3 RK_PD3 GPIO_ACTIVE_LOW>; ++ label = "EAST"; ++ linux,code = ; ++ }; ++ ++ button-b { ++ gpios = <&gpio3 RK_PD2 GPIO_ACTIVE_LOW>; ++ label = "SOUTH"; ++ linux,code = ; ++ }; ++ ++ button-down { ++ gpios = <&gpio4 RK_PA1 GPIO_ACTIVE_LOW>; ++ label = "DPAD-DOWN"; ++ linux,code = ; ++ }; ++ ++ button-l1 { ++ gpios = <&gpio3 RK_PD0 GPIO_ACTIVE_LOW>; ++ label = "TL"; ++ linux,code = ; ++ }; ++ ++ button-l2 { ++ gpios = <&gpio3 RK_PD1 GPIO_ACTIVE_LOW>; ++ label = "TL2"; ++ linux,code = ; ++ }; ++ ++ button-left { ++ gpios = <&gpio3 RK_PD6 GPIO_ACTIVE_LOW>; ++ label = "DPAD-LEFT"; ++ linux,code = ; ++ }; ++ ++ button-right { ++ gpios = <&gpio3 RK_PD7 GPIO_ACTIVE_LOW>; ++ label = "DPAD-RIGHT"; ++ linux,code = ; ++ }; ++ ++ button-select { ++ gpios = <&gpio4 RK_PA4 GPIO_ACTIVE_LOW>; ++ label = "SELECT"; ++ linux,code = ; ++ }; ++ ++ button-start { ++ gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_LOW>; ++ label = "START"; ++ linux,code = ; ++ }; ++ ++ button-thumbl { ++ gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_LOW>; ++ label = "THUMBL"; ++ linux,code = ; ++ }; ++ ++ button-thumbr { ++ gpios = <&gpio4 RK_PB0 GPIO_ACTIVE_LOW>; ++ label = "THUMBR"; ++ linux,code = ; ++ }; ++ ++ button-r1 { ++ gpios = <&gpio3 RK_PC6 GPIO_ACTIVE_LOW>; ++ label = "TR"; ++ linux,code = ; ++ }; ++ ++ button-r2 { ++ gpios = <&gpio3 RK_PC7 GPIO_ACTIVE_LOW>; ++ label = "TR2"; ++ linux,code = ; ++ }; ++ ++ button-up { ++ gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_LOW>; ++ label = "DPAD-UP"; ++ linux,code = ; ++ }; ++ ++ button-x { ++ gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>; ++ label = "NORTH"; ++ linux,code = ; ++ }; ++ ++ button-y { ++ gpios = <&gpio3 RK_PD4 GPIO_ACTIVE_LOW>; ++ label = "WEST"; ++ linux,code = ; ++ }; ++ }; ++ ++ gpio_keys_vol: gpio-keys-vol { ++ compatible = "gpio-keys"; ++ autorepeat; ++ pinctrl-0 = <&btn_pins_vol>; ++ pinctrl-names = "default"; ++ ++ button-voldown { ++ gpios = <&gpio4 RK_PA3 GPIO_ACTIVE_LOW>; ++ label = "VOLUMEDOWN"; ++ linux,code = ; ++ }; ++ ++ button-volup { ++ gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_LOW>; ++ label = "VOLUMEUP"; ++ linux,code = ; ++ }; ++ }; ++ ++ gpio_leds: gpio-leds { ++ compatible = "gpio-leds"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&led_pins>; ++ ++ red_led: led-0 { ++ color = ; ++ default-state = "off"; ++ gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>; ++ function = LED_FUNCTION_STATUS; ++ }; ++ ++ green_led: led-1 { ++ color = ; ++ default-state = "on"; ++ gpios = <&gpio4 RK_PB5 GPIO_ACTIVE_HIGH>; ++ function = LED_FUNCTION_POWER; ++ }; ++ ++ amber_led: led-2 { ++ color = ; ++ gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>; ++ function = LED_FUNCTION_CHARGING; ++ }; ++ ++ }; ++ ++ hdmi-con { ++ compatible = "hdmi-connector"; ++ ddc-i2c-bus = <&i2c5>; ++ type = "c"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; ++ ++ sdio_pwrseq: sdio-pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ clocks = <&rk817 1>; ++ clock-names = "ext_clock"; ++ pinctrl-0 = <&wifi_enable_h>; ++ pinctrl-names = "default"; ++ post-power-on-delay-ms = <200>; ++ reset-gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_LOW>; ++ }; ++ ++ /* Channels reversed for both headphones and speakers. */ ++ sound { ++ compatible = "simple-audio-card"; ++ pinctrl-0 = <&hp_det>; ++ pinctrl-names = "default"; ++ simple-audio-card,name = "rk817_ext"; ++ simple-audio-card,aux-devs = <&spk_amp>; ++ simple-audio-card,format = "i2s"; ++ simple-audio-card,hp-det-gpio = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>; ++ simple-audio-card,mclk-fs = <256>; ++ simple-audio-card,widgets = ++ "Microphone", "Mic Jack", ++ "Headphone", "Headphones", ++ "Speaker", "Internal Speakers"; ++ simple-audio-card,routing = ++ "MICL", "Mic Jack", ++ "Headphones", "HPOL", ++ "Headphones", "HPOR", ++ "Internal Speakers", "Speaker Amp OUTL", ++ "Internal Speakers", "Speaker Amp OUTR", ++ "Speaker Amp INL", "HPOL", ++ "Speaker Amp INR", "HPOR"; ++ simple-audio-card,pin-switches = "Internal Speakers"; ++ ++ simple-audio-card,codec { ++ sound-dai = <&rk817>; ++ }; ++ ++ simple-audio-card,cpu { ++ sound-dai = <&i2s1_8ch>; ++ }; ++ }; ++ ++ spk_amp: audio-amplifier { ++ compatible = "simple-audio-amplifier"; ++ enable-gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>; ++ pinctrl-0 = <&spk_amp_enable_h>; ++ pinctrl-names = "default"; ++ sound-name-prefix = "Speaker Amp"; ++ }; ++ ++ vcc5v0_host: regulator-vcc5v0-host { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ gpio = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>; ++ pinctrl-0 = <&vcc5v0_host_en>; ++ pinctrl-names = "default"; ++ regulator-name = "vcc5v0_host"; ++ vin-supply = <&dcdc_boost>; ++ }; ++ ++ vcc_lcd: regulator-vcc-lcd { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ gpio = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>; ++ pinctrl-0 = <&vcc_lcd_en>; ++ pinctrl-names = "default"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc_lcd"; ++ }; ++ ++ vcc_sys: regulator-vcc-sys { ++ compatible = "regulator-fixed"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3800000>; ++ regulator-max-microvolt = <3800000>; ++ regulator-name = "vcc_sys"; ++ }; ++ ++ vcc_wifi: regulator-vcc-wifi { ++ compatible = "regulator-fixed"; ++ gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>; ++ pinctrl-0 = <&vcc_wifi_h>; ++ pinctrl-names = "default"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc_wifi"; ++ }; ++}; ++ ++&combphy1 { ++ status = "okay"; ++}; ++ ++&cru { ++ assigned-clocks = <&pmucru CLK_RTC_32K>, <&cru PLL_GPLL>, ++ <&pmucru PLL_PPLL>, <&cru PLL_VPLL>; ++ assigned-clock-rates = <32768>, <1200000000>, ++ <200000000>, <126400000>; ++}; ++ ++&cpu0 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu1 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu2 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu3 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&dsi_dphy0 { ++ status = "okay"; ++}; ++ ++&dsi0 { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ ports { ++ dsi0_in: port@0 { ++ reg = <0>; ++ dsi0_in_vp1: endpoint { ++ remote-endpoint = <&vp1_out_dsi0>; ++ }; ++ }; ++ ++ dsi0_out: port@1 { ++ reg = <1>; ++ mipi_out_panel: endpoint { ++ remote-endpoint = <&mipi_in_panel>; ++ }; ++ }; ++ }; ++ ++ panel: panel@0 { ++ compatible = "powkiddy,x55-panel", "himax,hx8394"; ++ reg = <0>; ++ backlight = <&backlight>; ++ iovcc-supply = <&vcc_lcd>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&lcd_rst>; ++ reset-gpios = <&gpio0 RK_PD5 GPIO_ACTIVE_LOW>; ++ rotation = <270>; ++ vcc-supply = <&vcc_lcd>; ++ ++ port { ++ mipi_in_panel: endpoint { ++ remote-endpoint = <&mipi_out_panel>; ++ }; ++ }; ++ }; ++}; ++ ++&gpu { ++ mali-supply = <&vdd_gpu>; ++ status = "okay"; ++}; ++ ++&hdmi { ++ ddc-i2c-bus = <&i2c5>; ++ pinctrl-0 = <&hdmitxm0_cec>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; ++ ++&hdmi_in { ++ hdmi_in_vp0: endpoint { ++ remote-endpoint = <&vp0_out_hdmi>; ++ }; ++}; ++ ++&hdmi_out { ++ hdmi_out_con: endpoint { ++ remote-endpoint = <&hdmi_con_in>; ++ }; ++}; ++ ++&hdmi_sound { ++ status = "okay"; ++}; ++ ++&i2c0 { ++ status = "okay"; ++ ++ rk817: pmic@20 { ++ compatible = "rockchip,rk817"; ++ reg = <0x20>; ++ assigned-clocks = <&cru I2S1_MCLKOUT_TX>; ++ assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>; ++ clock-names = "mclk"; ++ clock-output-names = "rk808-clkout1", "rk808-clkout2"; ++ clocks = <&cru I2S1_MCLKOUT_TX>; ++ interrupt-parent = <&gpio0>; ++ interrupts = ; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2s1m0_mclk>, <&pmic_int_l>; ++ wakeup-source; ++ #clock-cells = <1>; ++ #sound-dai-cells = <0>; ++ ++ vcc1-supply = <&vcc_sys>; ++ vcc2-supply = <&vcc_sys>; ++ vcc3-supply = <&vcc_sys>; ++ vcc4-supply = <&vcc_sys>; ++ vcc5-supply = <&vcc_sys>; ++ vcc6-supply = <&vcc_sys>; ++ vcc7-supply = <&vcc_sys>; ++ vcc8-supply = <&vcc_sys>; ++ vcc9-supply = <&dcdc_boost>; ++ ++ regulators { ++ vdd_logic: DCDC_REG1 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vdd_logic"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ regulator-suspend-microvolt = <900000>; ++ }; ++ }; ++ ++ vdd_gpu: DCDC_REG2 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vdd_gpu"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_ddr: DCDC_REG3 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vcc_ddr"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ vcc_3v3: DCDC_REG4 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vcc_3v3"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcca1v8_pmu: LDO_REG1 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcca1v8_pmu"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <1800000>; ++ }; ++ }; ++ ++ vdda_0v9: LDO_REG2 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <900000>; ++ regulator-max-microvolt = <900000>; ++ regulator-name = "vdda_0v9"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vdda0v9_pmu: LDO_REG3 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <900000>; ++ regulator-max-microvolt = <900000>; ++ regulator-name = "vdda0v9_pmu"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <900000>; ++ }; ++ }; ++ ++ vccio_acodec: LDO_REG4 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vccio_acodec"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vccio_sd: LDO_REG5 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vccio_sd"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc3v3_pmu: LDO_REG6 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc3v3_pmu"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcc_1v8: LDO_REG7 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc_1v8"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc1v8_dvp: LDO_REG8 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc1v8_dvp"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ vcc2v8_dvp: LDO_REG9 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc2v8_dvp"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ dcdc_boost: BOOST { ++ regulator-min-microvolt = <4700000>; ++ regulator-max-microvolt = <5400000>; ++ regulator-name = "boost"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ otg_switch: OTG_SWITCH { ++ regulator-name = "otg_switch"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ }; ++ ++ rk817_charger: charger { ++ monitored-battery = <&battery>; ++ rockchip,resistor-sense-micro-ohms = <10000>; ++ rockchip,sleep-enter-current-microamp = <150000>; ++ rockchip,sleep-filter-current-microamp = <100000>; ++ }; ++ ++ }; ++ ++ vdd_cpu: regulator@1c { ++ compatible = "tcs,tcs4525"; ++ reg = <0x1c>; ++ fcs,suspend-voltage-selector = <1>; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <712500>; ++ regulator-max-microvolt = <1390000>; ++ regulator-name = "vdd_cpu"; ++ regulator-ramp-delay = <2300>; ++ vin-supply = <&vcc_sys>; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++}; ++ ++&i2c5 { ++ pinctrl-0 = <&i2c5m1_xfer>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; ++ ++&i2s0_8ch { ++ status = "okay"; ++}; ++ ++&i2s1_8ch { ++ pinctrl-0 = <&i2s1m0_sclktx>, <&i2s1m0_lrcktx>, <&i2s1m0_sdi0>, ++ <&i2s1m0_sdo0>; ++ pinctrl-names = "default"; ++ rockchip,trcm-sync-tx-only; ++ status = "okay"; ++}; ++ ++&pinctrl { ++ audio-amplifier { ++ spk_amp_enable_h: spk-amp-enable-h { ++ rockchip,pins = ++ <4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ gpio-control { ++ btn_pins_ctrl: btn-pins-ctrl { ++ rockchip,pins = ++ <3 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD1 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ ++ btn_pins_vol: btn-pins-vol { ++ rockchip,pins = ++ <4 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ gpio-lcd { ++ lcd_rst: lcd-rst { ++ rockchip,pins = ++ <0 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ gpio-leds { ++ led_pins: led-pins { ++ rockchip,pins = ++ <4 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>, ++ <4 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>, ++ <4 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ hp-detect { ++ hp_det: hp-det { ++ rockchip,pins = ++ <4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ pmic { ++ pmic_int_l: pmic-int-l { ++ rockchip,pins = ++ <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ sdio-pwrseq { ++ wifi_enable_h: wifi-enable-h { ++ rockchip,pins = ++ <0 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ usb { ++ vcc5v0_host_en: vcc5v0-host-en { ++ rockchip,pins = ++ <4 RK_PC4 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ ++ vcc5v0_otg_en: vcc5v0-otg-en { ++ rockchip,pins = ++ <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ vcc-lcd { ++ vcc_lcd_en: vcc-lcd-en { ++ rockchip,pins = ++ <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ vcc-wifi { ++ vcc_wifi_h: vcc-wifi-h { ++ rockchip,pins = ++ <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++}; ++ ++&pmu_io_domains { ++ status = "okay"; ++ pmuio1-supply = <&vcc3v3_pmu>; ++ pmuio2-supply = <&vcca1v8_pmu>; ++ vccio1-supply = <&vccio_acodec>; ++ vccio3-supply = <&vccio_sd>; ++ vccio4-supply = <&vcca1v8_pmu>; ++ vccio5-supply = <&vcc2v8_dvp>; ++ vccio6-supply = <&vcc1v8_dvp>; ++ vccio7-supply = <&vcc_3v3>; ++}; ++ ++&pwm4 { ++ status = "okay"; ++}; ++ ++&saradc { ++ vref-supply = <&vcc_1v8>; ++ status = "okay"; ++}; ++ ++&sdhci { ++ bus-width = <8>; ++ mmc-hs200-1_8v; ++ non-removable; ++ pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>, ++ <&emmc_datastrobe>, <&emmc_rstnout>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; ++ ++&sdmmc0 { ++ bus-width = <4>; ++ cap-mmc-highspeed; ++ cap-sd-highspeed; ++ disable-wp; ++ pinctrl-0 = <&sdmmc0_bus4>, <&sdmmc0_clk>, <&sdmmc0_cmd>, ++ <&sdmmc0_det>; ++ pinctrl-names = "default"; ++ sd-uhs-sdr104; ++ vqmmc-supply = <&vccio_sd>; ++ status = "okay"; ++}; ++ ++&sdmmc1 { ++ bus-width = <4>; ++ cap-sd-highspeed; ++ cap-sdio-irq; ++ keep-power-in-suspend; ++ mmc-pwrseq = <&sdio_pwrseq>; ++ non-removable; ++ pinctrl-0 = <&sdmmc1_bus4>, <&sdmmc1_cmd>, <&sdmmc1_clk>; ++ pinctrl-names = "default"; ++ vmmc-supply = <&vcc_wifi>; ++ status = "okay"; ++}; ++ ++&sdmmc2 { ++ bus-width = <4>; ++ cap-mmc-highspeed; ++ cap-sd-highspeed; ++ disable-wp; ++ pinctrl-0 = <&sdmmc2m1_bus4>, <&sdmmc2m1_cmd>, <&sdmmc2m1_clk>, ++ <&sdmmc2m1_det>; ++ pinctrl-names = "default"; ++ sd-uhs-sdr104; ++ vqmmc-supply = <&vcc2v8_dvp>; ++ status = "okay"; ++}; ++ ++&tsadc { ++ rockchip,hw-tshut-mode = <1>; ++ rockchip,hw-tshut-polarity = <0>; ++ status = "okay"; ++}; ++ ++&uart1 { ++ pinctrl-0 = <&uart1m0_xfer>, <&uart1m0_ctsn>, <&uart1m0_rtsn>; ++ pinctrl-names = "default"; ++ uart-has-rtscts; ++ status = "okay"; ++ ++ bluetooth { ++ compatible = "realtek,rtl8821cs-bt", "realtek,rtl8723bs-bt"; ++ device-wake-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>; ++ enable-gpios = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>; ++ host-wake-gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>; ++ }; ++}; ++ ++&uart2 { ++ status = "okay"; ++}; ++ ++&usb_host0_xhci { ++ phys = <&usb2phy0_otg>; ++ phy-names = "usb2-phy"; ++ status = "okay"; ++}; ++ ++&usb_host1_xhci { ++ status = "okay"; ++}; ++ ++&usb2phy0 { ++ status = "okay"; ++}; ++ ++&usb2phy0_otg { ++ status = "okay"; ++}; ++ ++&usb2phy0_host { ++ phy-supply = <&vcc5v0_host>; ++ status = "okay"; ++}; ++ ++&vop { ++ assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; ++ assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; ++ status = "okay"; ++}; ++ ++&vop_mmu { ++ status = "okay"; ++}; ++ ++&vp0 { ++ vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { ++ reg = ; ++ remote-endpoint = <&hdmi_in_vp0>; ++ }; ++}; ++ ++&vp1 { ++ vp1_out_dsi0: endpoint@ROCKCHIP_VOP2_EP_MIPI0 { ++ reg = ; ++ remote-endpoint = <&dsi0_in_vp1>; ++ }; ++}; +diff --git a/arch/arm/mach-rockchip/rk3568/Kconfig b/arch/arm/mach-rockchip/rk3568/Kconfig +index baa51349f4..a97da8ae55 100644 +--- a/arch/arm/mach-rockchip/rk3568/Kconfig ++++ b/arch/arm/mach-rockchip/rk3568/Kconfig +@@ -22,6 +22,11 @@ config TARGET_ODROID_M1_RK3568 + help + Hardkernel ODROID-M1 single board computer with a RK3568B2 SoC. + ++config TARGET_POWKIDDY_X55_RK3566 ++ bool "Powkiddy X55" ++ help ++ Powkiddy X55 handheld gaming console with an RK3566 SoC. ++ + config TARGET_QUARTZ64_RK3566 + bool "Pine64 Quartz64" + help +@@ -45,5 +50,6 @@ source "board/rockchip/evb_rk3568/Kconfig" + source "board/anbernic/rgxx3_rk3566/Kconfig" + source "board/hardkernel/odroid_m1/Kconfig" + source "board/pine64/quartz64_rk3566/Kconfig" ++source "board/powkiddy/x55/Kconfig" + + endif +diff --git a/board/powkiddy/x55/Kconfig b/board/powkiddy/x55/Kconfig +new file mode 100644 +index 0000000000..a7b3ed4d0d +--- /dev/null ++++ b/board/powkiddy/x55/Kconfig +@@ -0,0 +1,15 @@ ++if TARGET_POWKIDDY_X55_RK3566 ++ ++config SYS_BOARD ++ default "x55" ++ ++config SYS_VENDOR ++ default "powkiddy" ++ ++config SYS_CONFIG_NAME ++ default "powkiddy-x55-rk3566" ++ ++config BOARD_SPECIFIC_OPTIONS ++ def_bool y ++ ++endif +diff --git a/board/powkiddy/x55/MAINTAINERS b/board/powkiddy/x55/MAINTAINERS +new file mode 100644 +index 0000000000..9ed48f408e +--- /dev/null ++++ b/board/powkiddy/x55/MAINTAINERS +@@ -0,0 +1,9 @@ ++X55 ++M: Chris Morgan ++S: Maintained ++F: board/powkiddy/x55 ++F: include/configs/powkiddy-x55-rk3566.h ++F: configs/powkiddy-x55-rk3566_defconfig ++F: arch/arm/dts/rk3566-powkiddy-x55.dts ++F: arch/arm/dts/rk3566-powkiddy-x55-u-boot.dtsi ++F: doc/board/powkiddy/x55.rst +diff --git a/board/powkiddy/x55/Makefile b/board/powkiddy/x55/Makefile +new file mode 100644 +index 0000000000..55c8c16aa1 +--- /dev/null ++++ b/board/powkiddy/x55/Makefile +@@ -0,0 +1,6 @@ ++# SPDX-License-Identifier: GPL-2.0+ ++# ++# Copyright (c) 2023 Chris Morgan ++# ++ ++obj-y += x55.o +diff --git a/board/powkiddy/x55/x55.c b/board/powkiddy/x55/x55.c +new file mode 100644 +index 0000000000..8d98baa24f +--- /dev/null ++++ b/board/powkiddy/x55/x55.c +@@ -0,0 +1,42 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++/* ++ * Copyright (c) 2023 Chris Morgan ++ */ ++ ++#include ++#include ++ ++#define GPIO4_BASE 0xfe770000 ++#define GPIO_SWPORT_DR_L 0x0000 ++#define GPIO_SWPORT_DDR_L 0x0008 ++#define GPIO_B4 BIT(12) ++#define GPIO_B5 BIT(13) ++#define GPIO_B6 BIT(14) ++ ++#define GPIO_WRITEMASK(bits) ((bits) << 16) ++ ++/* ++ * Start LED very early so user knows device is on. Set color ++ * to red. ++ */ ++void spl_board_init(void) ++{ ++ setup_boot_mode(); ++ ++ /* Set GPIO4_B4, GPIO4_B5, and GPIO4_B6 to output. */ ++ writel(GPIO_WRITEMASK(GPIO_B6 | GPIO_B5 | GPIO_B4) | \ ++ (GPIO_B6 | GPIO_B5 | GPIO_B4), ++ (GPIO4_BASE + GPIO_SWPORT_DDR_L)); ++ /* Set GPIO4_B5 and GPIO4_B6 to 0 and GPIO4_B4 to 1. */ ++ writel(GPIO_WRITEMASK(GPIO_B6 | GPIO_B5 | GPIO_B4) | GPIO_B4, ++ (GPIO4_BASE + GPIO_SWPORT_DR_L)); ++} ++ ++int rk_board_late_init(void) ++{ ++ /* Turn off red LED and turn on orange LED. */ ++ writel(GPIO_WRITEMASK(GPIO_B6 | GPIO_B5 | GPIO_B4) | GPIO_B6, ++ (GPIO4_BASE + GPIO_SWPORT_DR_L)); ++ ++ return 0; ++} +diff --git a/configs/powkiddy-x55-rk3566_defconfig b/configs/powkiddy-x55-rk3566_defconfig +new file mode 100644 +index 0000000000..f9a513f97c +--- /dev/null ++++ b/configs/powkiddy-x55-rk3566_defconfig +@@ -0,0 +1,92 @@ ++CONFIG_ARM=y ++CONFIG_SKIP_LOWLEVEL_INIT=y ++CONFIG_COUNTER_FREQUENCY=24000000 ++CONFIG_ARCH_ROCKCHIP=y ++CONFIG_TEXT_BASE=0x00a00000 ++CONFIG_SPL_GPIO=y ++CONFIG_SPL_LIBCOMMON_SUPPORT=y ++CONFIG_SPL_LIBGENERIC_SUPPORT=y ++CONFIG_NR_DRAM_BANKS=2 ++CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y ++CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0xc00000 ++CONFIG_DEFAULT_DEVICE_TREE="rk3566-powkiddy-x55" ++CONFIG_ROCKCHIP_RK3568=y ++CONFIG_SPL_ROCKCHIP_BACK_TO_BROM=y ++CONFIG_SPL_ROCKCHIP_COMMON_BOARD=y ++CONFIG_ROCKCHIP_RK8XX_DISABLE_BOOT_ON_POWERON=y ++CONFIG_SPL_MMC=y ++CONFIG_SPL_SERIAL=y ++CONFIG_SPL_STACK_R_ADDR=0x600000 ++CONFIG_TARGET_POWKIDDY_X55_RK3566=y ++CONFIG_SPL_STACK=0x400000 ++CONFIG_DEBUG_UART_BASE=0xFE660000 ++CONFIG_DEBUG_UART_CLOCK=24000000 ++CONFIG_SYS_LOAD_ADDR=0xc00800 ++CONFIG_DEBUG_UART=y ++CONFIG_FIT=y ++CONFIG_FIT_VERBOSE=y ++CONFIG_SPL_FIT_SIGNATURE=y ++CONFIG_SPL_LOAD_FIT=y ++CONFIG_LEGACY_IMAGE_FORMAT=y ++CONFIG_OF_STDOUT_VIA_ALIAS=y ++CONFIG_DEFAULT_FDT_FILE="rockchip/rk3566-powkiddy-x55.dtb" ++# CONFIG_DISPLAY_CPUINFO is not set ++CONFIG_DISPLAY_BOARDINFO_LATE=y ++CONFIG_SPL_MAX_SIZE=0x40000 ++CONFIG_SPL_PAD_TO=0x7f8000 ++CONFIG_SPL_HAS_BSS_LINKER_SECTION=y ++CONFIG_SPL_BSS_START_ADDR=0x4000000 ++CONFIG_SPL_BSS_MAX_SIZE=0x4000 ++CONFIG_SPL_BOARD_INIT=y ++# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set ++# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set ++CONFIG_SPL_STACK_R=y ++CONFIG_SPL_ADC=y ++CONFIG_SPL_POWER=y ++CONFIG_SPL_ATF=y ++CONFIG_CMD_PWM=y ++CONFIG_CMD_GPT=y ++CONFIG_CMD_MMC=y ++# CONFIG_CMD_SETEXPR is not set ++# CONFIG_SPL_DOS_PARTITION is not set ++CONFIG_SPL_OF_CONTROL=y ++CONFIG_OF_LIVE=y ++CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" ++CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y ++# CONFIG_NET is not set ++CONFIG_SPL_DM_SEQ_ALIAS=y ++CONFIG_SPL_REGMAP=y ++CONFIG_SPL_SYSCON=y ++CONFIG_SPL_CLK=y ++CONFIG_ARM_SMCCC_FEATURES=y ++CONFIG_SCMI_FIRMWARE=y ++CONFIG_ROCKCHIP_GPIO=y ++CONFIG_SYS_I2C_ROCKCHIP=y ++CONFIG_MISC=y ++CONFIG_SUPPORT_EMMC_RPMB=y ++CONFIG_MMC_DW=y ++CONFIG_MMC_DW_ROCKCHIP=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_SDMA=y ++CONFIG_MMC_SDHCI_ROCKCHIP=y ++CONFIG_SPL_PINCTRL=y ++CONFIG_DM_PMIC=y ++CONFIG_DM_PMIC_FAN53555=y ++CONFIG_PMIC_RK8XX=y ++CONFIG_SPL_DM_REGULATOR=y ++CONFIG_SPL_DM_REGULATOR_FIXED=y ++CONFIG_REGULATOR_RK8XX=y ++CONFIG_PWM_ROCKCHIP=y ++CONFIG_SPL_RAM=y ++# CONFIG_RAM_ROCKCHIP_DEBUG is not set ++CONFIG_DM_RNG=y ++CONFIG_RNG_ROCKCHIP=y ++# CONFIG_RNG_SMCCC_TRNG is not set ++CONFIG_BAUDRATE=1500000 ++CONFIG_DEBUG_UART_SHIFT=2 ++CONFIG_SYS_NS16550_MEM32=y ++CONFIG_SYSRESET=y ++CONFIG_REGEX=y ++# CONFIG_RSA is not set ++CONFIG_ERRNO_STR=y ++# CONFIG_EFI_LOADER is not set +diff --git a/doc/board/index.rst b/doc/board/index.rst +index 531e547e7e..dd4bce9981 100644 +--- a/doc/board/index.rst ++++ b/doc/board/index.rst +@@ -36,6 +36,7 @@ Board-specific doc + nxp/index + openpiton/index + phytec/index ++ powkiddy/index + purism/index + qualcomm/index + renesas/index +diff --git a/doc/board/powkiddy/index.rst b/doc/board/powkiddy/index.rst +new file mode 100644 +index 0000000000..b0115a73d4 +--- /dev/null ++++ b/doc/board/powkiddy/index.rst +@@ -0,0 +1,9 @@ ++.. SPDX-License-Identifier: GPL-2.0+ ++ ++Powkiddy ++======== ++ ++.. toctree:: ++ :maxdepth: 2 ++ ++ x55.rst +diff --git a/doc/board/powkiddy/x55.rst b/doc/board/powkiddy/x55.rst +new file mode 100644 +index 0000000000..cd7456883b +--- /dev/null ++++ b/doc/board/powkiddy/x55.rst +@@ -0,0 +1,25 @@ ++.. SPDX-License-Identifier: GPL-2.0+ ++ ++U-Boot for Powkiddy X55 Handheld Gaming Console ++=============================================== ++ ++This allows U-Boot to boot the Powkiddy X55 handheld gaming console. ++The X55 is very similar to the other existing Powkiddy RK3566 based ++devices, except that ADC channels 0-3 are used for the ADC joysticks. ++As a result the same auto detection functionality cannot be used on ++this device as the others. ++ ++The indicator LED will change color based on the boot stage. Red means ++the device is powered on but has yet to start U-Boot, amber means the ++device has started U-Boot and is waiting to boot Linux, and when Linux ++has taken over the LED should change to green (or however it has been ++configured by the user). ++ ++In the event the device needs to enter Rockchip download mode, a user ++can, starting with the power off, hold the left joystick all the way ++to the left and then power on the device. At this point the USB-C port ++marked DC/OTG should be set to peripheral mode and allow a user to ++manipulate the device with the rkdeveloptool tool. ++ ++See :doc:`../rockchip/devicetree/rockchip` for building and flashing ++instructions. +diff --git a/doc/board/rockchip/rockchip.rst b/doc/board/rockchip/rockchip.rst +index 18d0b6f089..4e290cecdc 100644 +--- a/doc/board/rockchip/rockchip.rst ++++ b/doc/board/rockchip/rockchip.rst +@@ -98,6 +98,7 @@ List of mainline supported Rockchip boards: + - Pine64 SOQuartz on Blade (soquartz-blade-rk3566) + - Pine64 SOQuartz on CM4-IO (soquartz-cm4-rk3566) + - Pine64 SOQuartz on Model A (soquartz-model-a-rk3566) ++ - Powkiddy X55 (powkiddy-x55-rk3566) + - Radxa CM3 IO Board (radxa-cm3-io-rk3566) + + * rk3568 +diff --git a/include/configs/powkiddy-x55-rk3566.h b/include/configs/powkiddy-x55-rk3566.h +new file mode 100644 +index 0000000000..a25b6de455 +--- /dev/null ++++ b/include/configs/powkiddy-x55-rk3566.h +@@ -0,0 +1,14 @@ ++/* SPDX-License-Identifier: GPL-2.0+ */ ++ ++#ifndef __POWKIDDY_X55_RK3566_H ++#define __POWKIDDY_X55_RK3566_H ++ ++#include ++ ++#define ROCKCHIP_DEVICE_SETTINGS \ ++ "stdout=serial,vidconsole\0" \ ++ "stderr=serial,vidconsole\0" ++ ++#define RK_DNL_ADC_CHAN 0 ++ ++#endif +-- +2.34.1 diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/003-move-dtb-directory.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/003-move-dtb-directory.patch new file mode 100644 index 0000000000..4d053b5593 --- /dev/null +++ b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/003-move-dtb-directory.patch @@ -0,0 +1,26 @@ +diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +index 3f1a42d18..b8e094032 100644 +--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c ++++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +@@ -33,7 +33,7 @@ + + #define GPIO_WRITEMASK(bits) ((bits) << 16) + +-#define DTB_DIR "rockchip/" ++#define DTB_DIR "" + + struct rg3xx_model { + const u16 adc_value; +diff --git a/configs/anbernic-rgxx3-rk3566_defconfig b/configs/anbernic-rgxx3-rk3566_defconfig +index ed6643d9d..83e8358a0 100644 +--- a/configs/anbernic-rgxx3-rk3566_defconfig ++++ b/configs/anbernic-rgxx3-rk3566_defconfig +@@ -27,7 +27,7 @@ CONFIG_FIT_VERBOSE=y + CONFIG_SPL_LOAD_FIT=y + CONFIG_OF_BOARD_SETUP=y + CONFIG_OF_STDOUT_VIA_ALIAS=y +-CONFIG_DEFAULT_FDT_FILE="rockchip/rk3566-anbernic-rgxx3.dtb" ++CONFIG_DEFAULT_FDT_FILE="rk3566-anbernic-rgxx3.dtb" + # CONFIG_CONSOLE_MUX is not set + # CONFIG_DISPLAY_CPUINFO is not set + CONFIG_DISPLAY_BOARDINFO_LATE=y diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/100_V3_0_7_Add_additional_boards_and_features_to_rgxx3.dont_patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/100_V3_0_7_Add_additional_boards_and_features_to_rgxx3.dont_patch deleted file mode 100644 index 540cfc3679..0000000000 --- a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/100_V3_0_7_Add_additional_boards_and_features_to_rgxx3.dont_patch +++ /dev/null @@ -1,60 +0,0 @@ -From: Chris Morgan -To: u-boot@lists.denx.de -Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, - philipp.tomsich@vrull.eu, sjg@chromium.org, - Chris Morgan -Subject: [PATCH V3 0/7] Add Additional Boards and Features to RGxx3 -Date: Mon, 11 Dec 2023 17:21:18 -0600 [thread overview] -Message-ID: <20231211232125.171438-1-macroalpha82@gmail.com> (raw) - -From: Chris Morgan - -The RGxx3 is a pseudo-device for U-Boot that works for every Anbernic -RGxx3 series device on the market. Add support for another series of -very similar devices from Powkiddy. - -Changes since V2: - - Modify the mach-rockchip level rockchip_dnl_key_pressed() so that - we can also call it in SPL mode and eliminate the board specific - function. This requires adding ADC support to SPL. Additionally, - I had to change the regulator for the saradc to a fixed regulator - and add GPIO and regulator support to SPL. - - Move the board specific board_rng_seed to the mach-rockchip level - board file so that other rockchip boards with a hardware RNG can - benefit. This should only be called if both the Rockchip - hardware RNG as well as the rng seed functions are enabled. - - Add two new boards (the RG-ARC-D and RG-ARC-S). I removed the - previous code review due to the extensive changes made. - -Changes since V1: - - Update verbiage around function button to say "recovery" mode - instead of calling it "maskrom" mode, which has a specific - meaning. Also note that recovery function was done in a board - specific manner to ensure it can run early. - - Update board level documentation for the RGxx3. - -Chris Morgan (7): - board: rockchip: Refactor panel auto-detect code - spl: Add Kconfig options for ADC - rockchip: boot_mode: Allow rockchip_dnl_key_pressed() in SPL - board: rockchip: Add Recovery Button for Anbernic RGxx3 - rockchip: board: Add board_rng_seed() for all Rockchip devices - board: rockchip: Add support for new boards to RGxx3 - doc: board: anbernic: Update rgxx3 to add new boards - - .../arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi | 11 + - arch/arm/mach-rockchip/Makefile | 4 +- - arch/arm/mach-rockchip/board.c | 32 +++ - arch/arm/mach-rockchip/boot_mode.c | 11 +- - board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 194 +++++++++++------- - common/spl/Kconfig | 7 + - configs/anbernic-rgxx3-rk3566_defconfig | 16 +- - doc/board/anbernic/rgxx3.rst | 20 +- - drivers/Makefile | 1 + - drivers/adc/Makefile | 2 +- - include/configs/anbernic-rgxx3-rk3566.h | 2 + - 11 files changed, 210 insertions(+), 90 deletions(-) - --- -2.34.1 - diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/101_V3_1_7_Add_additional_boards_and_features_to_rgxx3.dont_patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/101_V3_1_7_Add_additional_boards_and_features_to_rgxx3.dont_patch deleted file mode 100644 index 97b341f193..0000000000 --- a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/101_V3_1_7_Add_additional_boards_and_features_to_rgxx3.dont_patch +++ /dev/null @@ -1,230 +0,0 @@ -From: Chris Morgan -To: u-boot@lists.denx.de -Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, - philipp.tomsich@vrull.eu, sjg@chromium.org, - Chris Morgan -Subject: [PATCH V3 1/7] board: rockchip: Refactor panel auto-detect code -Date: Mon, 11 Dec 2023 17:21:19 -0600 [thread overview] -Message-ID: <20231211232125.171438-2-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Make the inability to detect a panel using the auto detection code not -fail the entire boot process. This means that if the panel ID cannot -be read we don't set an environment variable for the panel, and if an -environment variable for the panel is not set we don't attempt to -update the compatible string. Changes to the code also ensure that -when there are multiple compatible strings required for the panel -we use them both, which solves some issues that will pop up soon -for the Linux driver. - -Signed-off-by: Chris Morgan ---- - board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 115 +++++++++++++-------- - 1 file changed, 74 insertions(+), 41 deletions(-) - -diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -index 3f1a42d184..3d0c614623 100644 ---- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -+++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -@@ -40,6 +40,7 @@ struct rg3xx_model { - const char *board; - const char *board_name; - const char *fdtfile; -+ const bool detect_panel; - }; - - enum rgxx3_device_id { -@@ -54,52 +55,67 @@ enum rgxx3_device_id { - - static const struct rg3xx_model rg3xx_model_details[] = { - [RG353M] = { -- 517, /* Observed average from device */ -- "rk3566-anbernic-rg353m", -- "RG353M", -- DTB_DIR "rk3566-anbernic-rg353p.dtb", /* Identical devices */ -+ .adc_value = 517, /* Observed average from device */ -+ .board = "rk3566-anbernic-rg353m", -+ .board_name = "RG353M", -+ /* Device is identical to RG353P. */ -+ .fdtfile = DTB_DIR "rk3566-anbernic-rg353p.dtb", -+ .detect_panel = 1, - }, - [RG353P] = { -- 860, /* Documented value of 860 */ -- "rk3566-anbernic-rg353p", -- "RG353P", -- DTB_DIR "rk3566-anbernic-rg353p.dtb", -+ .adc_value = 860, /* Documented value of 860 */ -+ .board = "rk3566-anbernic-rg353p", -+ .board_name = "RG353P", -+ .fdtfile = DTB_DIR "rk3566-anbernic-rg353p.dtb", -+ .detect_panel = 1, - }, - [RG353V] = { -- 695, /* Observed average from device */ -- "rk3566-anbernic-rg353v", -- "RG353V", -- DTB_DIR "rk3566-anbernic-rg353v.dtb", -+ .adc_value = 695, /* Observed average from device */ -+ .board = "rk3566-anbernic-rg353v", -+ .board_name = "RG353V", -+ .fdtfile = DTB_DIR "rk3566-anbernic-rg353v.dtb", -+ .detect_panel = 1, - }, - [RG503] = { -- 1023, /* Observed average from device */ -- "rk3566-anbernic-rg503", -- "RG503", -- DTB_DIR "rk3566-anbernic-rg503.dtb", -+ .adc_value = 1023, /* Observed average from device */ -+ .board = "rk3566-anbernic-rg503", -+ .board_name = "RG503", -+ .fdtfile = DTB_DIR "rk3566-anbernic-rg503.dtb", -+ .detect_panel = 0, - }, - /* Devices with duplicate ADC value */ - [RG353PS] = { -- 860, /* Observed average from device */ -- "rk3566-anbernic-rg353ps", -- "RG353PS", -- DTB_DIR "rk3566-anbernic-rg353ps.dtb", -+ .adc_value = 860, /* Observed average from device */ -+ .board = "rk3566-anbernic-rg353ps", -+ .board_name = "RG353PS", -+ .fdtfile = DTB_DIR "rk3566-anbernic-rg353ps.dtb", -+ .detect_panel = 1, - }, - [RG353VS] = { -- 695, /* Gathered from second hand information */ -- "rk3566-anbernic-rg353vs", -- "RG353VS", -- DTB_DIR "rk3566-anbernic-rg353vs.dtb", -+ .adc_value = 695, /* Gathered from second hand information */ -+ .board = "rk3566-anbernic-rg353vs", -+ .board_name = "RG353VS", -+ .fdtfile = DTB_DIR "rk3566-anbernic-rg353vs.dtb", -+ .detect_panel = 1, - }, - }; - - struct rg353_panel { - const u16 id; -- const char *panel_compat; -+ const char *panel_compat[2]; - }; - - static const struct rg353_panel rg353_panel_details[] = { -- { .id = 0x3052, .panel_compat = "newvision,nv3051d"}, -- { .id = 0x3821, .panel_compat = "anbernic,rg353v-panel-v2"}, -+ { -+ .id = 0x3052, -+ .panel_compat[0] = "anbernic,rg353p-panel", -+ .panel_compat[1] = "newvision,nv3051d", -+ }, -+ { -+ .id = 0x3821, -+ .panel_compat[0] = "anbernic,rg353v-panel-v2", -+ .panel_compat[1] = NULL, -+ }, - }; - - /* -@@ -298,11 +314,10 @@ int rgxx3_detect_display(void) - if (!panel) { - printf("Unable to identify panel_id %x\n", - (panel_id[0] << 8) | panel_id[1]); -- env_set("panel", "unknown"); - return -EINVAL; - } - -- env_set("panel", panel->panel_compat); -+ env_set("panel", panel->panel_compat[0]); - - return 0; - } -@@ -367,13 +382,14 @@ int rgxx3_detect_device(void) - rg3xx_model_details[board_id].board_name); - env_set("fdtfile", rg3xx_model_details[board_id].fdtfile); - -- /* Detect the panel type for any device that isn't a 503. */ -- if (board_id == RG503) -+ /* Skip panel detection for when it is not needed. */ -+ if (!rg3xx_model_details[board_id].detect_panel) - return 0; - -+ /* Warn but don't fail for errors in auto-detection of the panel. */ - ret = rgxx3_detect_display(); - if (ret) -- return ret; -+ printf("Failed to detect panel type\n"); - - return 0; - } -@@ -400,7 +416,8 @@ int rk_board_late_init(void) - - int ft_board_setup(void *blob, struct bd_info *bd) - { -- int node, ret; -+ const struct rg353_panel *panel = NULL; -+ int node, ret, i; - char *env; - - /* No fixups necessary for the RG503 */ -@@ -414,6 +431,12 @@ int ft_board_setup(void *blob, struct bd_info *bd) - rg3xx_model_details[RG353M].board_name, - sizeof(rg3xx_model_details[RG353M].board_name)); - -+ env = env_get("panel"); -+ if (!env) { -+ printf("Can't get panel env\n"); -+ return 0; -+ } -+ - /* - * Check if the environment variable doesn't equal the panel. - * If it doesn't, update the devicetree to the correct panel. -@@ -424,12 +447,6 @@ int ft_board_setup(void *blob, struct bd_info *bd) - return -ENODEV; - } - -- env = env_get("panel"); -- if (!env) { -- printf("Can't get panel env\n"); -- return -ENODEV; -- } -- - ret = fdt_node_check_compatible(blob, node, env); - if (ret < 0) - return -ENODEV; -@@ -438,8 +455,24 @@ int ft_board_setup(void *blob, struct bd_info *bd) - if (!ret) - return 0; - -- do_fixup_by_path_string(blob, "/dsi@fe060000/panel@0", -- "compatible", env); -+ /* Panels don't match, search by first compatible value. */ -+ for (i = 0; i < ARRAY_SIZE(rg353_panel_details); i++) { -+ if (!strcmp(env, rg353_panel_details[i].panel_compat[0])) { -+ panel = &rg353_panel_details[i]; -+ break; -+ } -+ } -+ -+ if (!panel) { -+ printf("Unable to identify panel by compat string\n"); -+ return -ENODEV; -+ } -+ -+ /* Set the compatible with the auto-detected values */ -+ fdt_setprop_string(blob, node, "compatible", panel->panel_compat[0]); -+ if (panel->panel_compat[1]) -+ fdt_appendprop_string(blob, node, "compatible", -+ panel->panel_compat[1]); - - return 0; - } --- -2.34.1 - diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/102_V3_2_7_Add_additional_boards_and_features_to_rgxx3.dont_patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/102_V3_2_7_Add_additional_boards_and_features_to_rgxx3.dont_patch deleted file mode 100644 index 131708eff8..0000000000 --- a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/102_V3_2_7_Add_additional_boards_and_features_to_rgxx3.dont_patch +++ /dev/null @@ -1,66 +0,0 @@ -From: Chris Morgan -To: u-boot@lists.denx.de -Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, - philipp.tomsich@vrull.eu, sjg@chromium.org, - Chris Morgan -Subject: [PATCH V3 2/7] spl: Add Kconfig options for ADC -Date: Mon, 11 Dec 2023 17:21:20 -0600 [thread overview] -Message-ID: <20231211232125.171438-3-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Add kconfig options to enable ADC in SPL - -Signed-off-by: Chris Morgan ---- - common/spl/Kconfig | 7 +++++++ - drivers/Makefile | 1 + - drivers/adc/Makefile | 2 +- - 3 files changed, 9 insertions(+), 1 deletion(-) - -diff --git a/common/spl/Kconfig b/common/spl/Kconfig -index c521b02f4a..ada9dcea5c 100644 ---- a/common/spl/Kconfig -+++ b/common/spl/Kconfig -@@ -579,6 +579,13 @@ config SPL_FIT_IMAGE_TINY - ensure this information is available to the next image - invoked). - -+config SPL_ADC -+ bool "Support ADC drivers" -+ help -+ Enable ADC drivers in SPL. These drivers can allow the reading of -+ analog values from one or more channels. Enable this option to -+ build the drivers in drivers/adc as part of an SPL build. -+ - config SPL_CACHE - bool "Support CACHE drivers" - help -diff --git a/drivers/Makefile b/drivers/Makefile -index bf73b7718c..81ba2c534e 100644 ---- a/drivers/Makefile -+++ b/drivers/Makefile -@@ -1,5 +1,6 @@ - # SPDX-License-Identifier: GPL-2.0+ - -+obj-$(CONFIG_$(SPL_)ADC) += adc/ - obj-$(CONFIG_$(SPL_TPL_)BIOSEMU) += bios_emulator/ - obj-$(CONFIG_$(SPL_TPL_)BLK) += block/ - obj-$(CONFIG_$(SPL_TPL_)BOOTCOUNT_LIMIT) += bootcount/ -diff --git a/drivers/adc/Makefile b/drivers/adc/Makefile -index 5336c82097..9eb07769b0 100644 ---- a/drivers/adc/Makefile -+++ b/drivers/adc/Makefile -@@ -4,7 +4,7 @@ - # Przemyslaw Marczak - # - --obj-$(CONFIG_ADC) += adc-uclass.o -+obj-$(CONFIG_$(SPL_)ADC) += adc-uclass.o - obj-$(CONFIG_ADC_EXYNOS) += exynos-adc.o - obj-$(CONFIG_ADC_SANDBOX) += sandbox.o - obj-$(CONFIG_SARADC_ROCKCHIP) += rockchip-saradc.o --- -2.34.1 - diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/103_V3_3_7_Add_additional_boards_and_features_to_rgxx3.dont_patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/103_V3_3_7_Add_additional_boards_and_features_to_rgxx3.dont_patch deleted file mode 100644 index de91069cd4..0000000000 --- a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/103_V3_3_7_Add_additional_boards_and_features_to_rgxx3.dont_patch +++ /dev/null @@ -1,100 +0,0 @@ -From: Chris Morgan -To: u-boot@lists.denx.de -Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, - philipp.tomsich@vrull.eu, sjg@chromium.org, - Chris Morgan -Subject: [PATCH V3 3/7] rockchip: boot_mode: Allow rockchip_dnl_key_pressed() in SPL -Date: Mon, 11 Dec 2023 17:21:21 -0600 [thread overview] -Message-ID: <20231211232125.171438-4-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Update the rockchip_dnl_key_pressed() so that it can run in -SPL. Also change the ADC channel to a define that can be -overridden by a board specific option. - -Signed-off-by: Chris Morgan ---- - arch/arm/mach-rockchip/Makefile | 4 ++-- - arch/arm/mach-rockchip/boot_mode.c | 11 ++++++++++- - 2 files changed, 12 insertions(+), 3 deletions(-) - -diff --git a/arch/arm/mach-rockchip/Makefile b/arch/arm/mach-rockchip/Makefile -index 1dc92066bb..ff089ae949 100644 ---- a/arch/arm/mach-rockchip/Makefile -+++ b/arch/arm/mach-rockchip/Makefile -@@ -15,13 +15,13 @@ obj-tpl-$(CONFIG_ROCKCHIP_PX30) += px30-board-tpl.o - - obj-spl-$(CONFIG_ROCKCHIP_RK3036) += rk3036-board-spl.o - --ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),) -- - # Always include boot_mode.o, as we bypass it (i.e. turn it off) - # inside of boot_mode.c when CONFIG_ROCKCHIP_BOOT_MODE_REG is 0. This way, - # we can have the preprocessor correctly recognise both 0x0 and 0 - # meaning "turn it off". - obj-y += boot_mode.o -+ -+ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),) - obj-$(CONFIG_ROCKCHIP_COMMON_BOARD) += board.o - obj-$(CONFIG_MISC_INIT_R) += misc.o - endif -diff --git a/arch/arm/mach-rockchip/boot_mode.c b/arch/arm/mach-rockchip/boot_mode.c -index eb8f65ae4e..d2308768be 100644 ---- a/arch/arm/mach-rockchip/boot_mode.c -+++ b/arch/arm/mach-rockchip/boot_mode.c -@@ -38,6 +38,10 @@ void set_back_to_bootrom_dnl_flag(void) - #define KEY_DOWN_MIN_VAL 0 - #define KEY_DOWN_MAX_VAL 30 - -+#ifndef RK_DNL_ADC_CHAN -+#define RK_DNL_ADC_CHAN 1 -+#endif -+ - __weak int rockchip_dnl_key_pressed(void) - { - unsigned int val; -@@ -52,7 +56,8 @@ __weak int rockchip_dnl_key_pressed(void) - ret = -ENODEV; - uclass_foreach_dev(dev, uc) { - if (!strncmp(dev->name, "saradc", 6)) { -- ret = adc_channel_single_shot(dev->name, 1, &val); -+ ret = adc_channel_single_shot(dev->name, -+ RK_DNL_ADC_CHAN, &val); - break; - } - } -@@ -73,11 +78,13 @@ __weak int rockchip_dnl_key_pressed(void) - - void rockchip_dnl_mode_check(void) - { -+#if CONFIG_IS_ENABLED(ADC) - if (rockchip_dnl_key_pressed()) { - printf("download key pressed, entering download mode..."); - set_back_to_bootrom_dnl_flag(); - do_reset(NULL, 0, 0, NULL); - } -+#endif - } - - int setup_boot_mode(void) -@@ -90,6 +97,7 @@ int setup_boot_mode(void) - boot_mode = readl(reg); - debug("%s: boot mode 0x%08x\n", __func__, boot_mode); - -+#if !defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) - /* Clear boot mode */ - writel(BOOT_NORMAL, reg); - -@@ -103,6 +111,7 @@ int setup_boot_mode(void) - env_set("preboot", "setenv preboot; ums mmc 0"); - break; - } -+#endif - - return 0; - } --- -2.34.1 - diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/104_V3_4_7_Add_additional_boards_and_features_to_rgxx3.dont_patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/104_V3_4_7_Add_additional_boards_and_features_to_rgxx3.dont_patch deleted file mode 100644 index d38822c3f5..0000000000 --- a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/104_V3_4_7_Add_additional_boards_and_features_to_rgxx3.dont_patch +++ /dev/null @@ -1,172 +0,0 @@ -From: Chris Morgan -To: u-boot@lists.denx.de -Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, - philipp.tomsich@vrull.eu, sjg@chromium.org, - Chris Morgan -Subject: [PATCH V3 4/7] board: rockchip: Add Recovery Button for Anbernic RGxx3 -Date: Mon, 11 Dec 2023 17:21:22 -0600 [thread overview] -Message-ID: <20231211232125.171438-5-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Add support for users to enter recovery mode by holding the function -button when they power up the device. - -Since the device has soldered eMMC and sometimes does not expose a clk -pin on the mainboard there is a small chance that a user who flashes a -bad bootloader may not be able to recover if the headers themselves -are valid. As a result this check is done during spl_early_init() to -ensure that it runs as early as possible, and it does so by directly -manipulating the ADC hardware in lieu of loading the ADC driver. - -Signed-off-by: Chris Morgan ---- - arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi | 11 +++++++++++ - board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 6 +++++- - configs/anbernic-rgxx3-rk3566_defconfig | 16 ++++++++++++---- - include/configs/anbernic-rgxx3-rk3566.h | 2 ++ - 4 files changed, 30 insertions(+), 5 deletions(-) - -diff --git a/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi b/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi -index f986e1941e..e3ab196d22 100644 ---- a/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi -+++ b/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi -@@ -76,6 +76,12 @@ - /delete-property/ clock-names; - }; - -+&saradc { -+ bootph-all; -+ vref-supply = <&vcc_sys>; -+ status = "okay"; -+}; -+ - &sdhci { - pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>, - <&emmc_datastrobe>, <&emmc_rstnout>; -@@ -94,3 +100,8 @@ - bootph-all; - status = "okay"; - }; -+ -+&vcc_sys { -+ bootph-all; -+ status = "okay"; -+}; -diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -index 3d0c614623..45854709f5 100644 ---- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -+++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -@@ -5,6 +5,7 @@ - - #include - #include -+#include - #include - #include - #include -@@ -119,11 +120,14 @@ static const struct rg353_panel rg353_panel_details[] = { - }; - - /* -- * Start LED very early so user knows device is on. Set color -+ * Check if rockchip_dnl button is pressed and reboot into rockusb if -+ * true. Start LED very early so user knows device is on. Set color - * to red. - */ - void spl_board_init(void) - { -+ setup_boot_mode(); -+ - /* Set GPIO0_C5, GPIO0_C6, and GPIO0_C7 to output. */ - writel(GPIO_WRITEMASK(GPIO_C7 | GPIO_C6 | GPIO_C5) | \ - (GPIO_C7 | GPIO_C6 | GPIO_C5), -diff --git a/configs/anbernic-rgxx3-rk3566_defconfig b/configs/anbernic-rgxx3-rk3566_defconfig -index ed6643d9d4..4e72f75815 100644 ---- a/configs/anbernic-rgxx3-rk3566_defconfig -+++ b/configs/anbernic-rgxx3-rk3566_defconfig -@@ -3,6 +3,7 @@ CONFIG_SKIP_LOWLEVEL_INIT=y - CONFIG_COUNTER_FREQUENCY=24000000 - CONFIG_ARCH_ROCKCHIP=y - CONFIG_TEXT_BASE=0x00a00000 -+CONFIG_SPL_GPIO=y - CONFIG_SPL_LIBCOMMON_SUPPORT=y - CONFIG_SPL_LIBGENERIC_SUPPORT=y - CONFIG_NR_DRAM_BANKS=2 -@@ -24,7 +25,9 @@ CONFIG_SYS_LOAD_ADDR=0xc00800 - CONFIG_DEBUG_UART=y - CONFIG_FIT=y - CONFIG_FIT_VERBOSE=y -+CONFIG_SPL_FIT_SIGNATURE=y - CONFIG_SPL_LOAD_FIT=y -+CONFIG_LEGACY_IMAGE_FORMAT=y - CONFIG_OF_BOARD_SETUP=y - CONFIG_OF_STDOUT_VIA_ALIAS=y - CONFIG_DEFAULT_FDT_FILE="rockchip/rk3566-anbernic-rgxx3.dtb" -@@ -32,7 +35,7 @@ CONFIG_DEFAULT_FDT_FILE="rockchip/rk3566-anbernic-rgxx3.dtb" - # CONFIG_DISPLAY_CPUINFO is not set - CONFIG_DISPLAY_BOARDINFO_LATE=y - CONFIG_BOARD_RNG_SEED=y --CONFIG_SPL_MAX_SIZE=0x20000 -+CONFIG_SPL_MAX_SIZE=0x40000 - CONFIG_SPL_PAD_TO=0x7f8000 - CONFIG_SPL_HAS_BSS_LINKER_SECTION=y - CONFIG_SPL_BSS_START_ADDR=0x4000000 -@@ -41,6 +44,8 @@ CONFIG_SPL_BOARD_INIT=y - # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set - # CONFIG_SPL_SHARES_INIT_SP_ADDR is not set - CONFIG_SPL_STACK_R=y -+CONFIG_SPL_ADC=y -+CONFIG_SPL_POWER=y - CONFIG_SPL_ATF=y - CONFIG_CMD_PWM=y - CONFIG_CMD_GPT=y -@@ -50,8 +55,10 @@ CONFIG_CMD_MMC=y - # CONFIG_SPL_DOS_PARTITION is not set - CONFIG_SPL_OF_CONTROL=y - CONFIG_OF_LIVE=y -+CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y - # CONFIG_NET is not set -+CONFIG_SPL_DM_SEQ_ALIAS=y - CONFIG_SPL_REGMAP=y - CONFIG_SPL_SYSCON=y - CONFIG_SPL_CLK=y -@@ -67,13 +74,13 @@ CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_ROCKCHIP=y - CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y -+CONFIG_SPL_PINCTRL=y - CONFIG_DM_PMIC=y - CONFIG_DM_PMIC_FAN53555=y - CONFIG_PMIC_RK8XX=y --CONFIG_REGULATOR_PWM=y --CONFIG_DM_REGULATOR_GPIO=y -+CONFIG_SPL_DM_REGULATOR=y -+CONFIG_SPL_DM_REGULATOR_FIXED=y - CONFIG_REGULATOR_RK8XX=y --CONFIG_DM_REGULATOR_SCMI=y - CONFIG_PWM_ROCKCHIP=y - CONFIG_SPL_RAM=y - # CONFIG_RAM_ROCKCHIP_DEBUG is not set -@@ -89,5 +96,6 @@ CONFIG_VIDEO_ROCKCHIP=y - CONFIG_DISPLAY_ROCKCHIP_DW_MIPI=y - CONFIG_VIDEO_BRIDGE=y - CONFIG_REGEX=y -+# CONFIG_RSA is not set - CONFIG_ERRNO_STR=y - # CONFIG_EFI_LOADER is not set -diff --git a/include/configs/anbernic-rgxx3-rk3566.h b/include/configs/anbernic-rgxx3-rk3566.h -index 3c4ea4e7d8..2aaac55c06 100644 ---- a/include/configs/anbernic-rgxx3-rk3566.h -+++ b/include/configs/anbernic-rgxx3-rk3566.h -@@ -9,4 +9,6 @@ - "stdout=serial,vidconsole\0" \ - "stderr=serial,vidconsole\0" - -+#define RK_DNL_ADC_CHAN 0 -+ - #endif --- -2.34.1 diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/105_V3_5_7_Add_additional_boards_and_features_to_rgxx3.dont_patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/105_V3_5_7_Add_additional_boards_and_features_to_rgxx3.dont_patch deleted file mode 100644 index cc15381e91..0000000000 --- a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/105_V3_5_7_Add_additional_boards_and_features_to_rgxx3.dont_patch +++ /dev/null @@ -1,110 +0,0 @@ -From: Chris Morgan -To: u-boot@lists.denx.de -Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, - philipp.tomsich@vrull.eu, sjg@chromium.org, - Chris Morgan -Subject: [PATCH V3 5/7] rockchip: board: Add board_rng_seed() for all Rockchip devices -Date: Mon, 11 Dec 2023 17:21:23 -0600 [thread overview] -Message-ID: <20231211232125.171438-6-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Allow all rockchip devices to use the hardware RNG to seed Linux -RNG. - -Signed-off-by: Chris Morgan ---- - arch/arm/mach-rockchip/board.c | 32 ++++++++++++++++++++++ - board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 29 -------------------- - 2 files changed, 32 insertions(+), 29 deletions(-) - -diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c -index 57f08e0be0..77145524ea 100644 ---- a/arch/arm/mach-rockchip/board.c -+++ b/arch/arm/mach-rockchip/board.c -@@ -348,3 +348,35 @@ __weak int misc_init_r(void) - return ret; - } - #endif -+ -+#if IS_ENABLED(CONFIG_BOARD_RNG_SEED) && IS_ENABLED(CONFIG_RNG_ROCKCHIP) -+#include -+ -+/* Use hardware rng to seed Linux random. */ -+__weak int board_rng_seed(struct abuf *buf) -+{ -+ struct udevice *dev; -+ size_t len = 0x8; -+ u64 *data; -+ -+ data = malloc(len); -+ if (!data) { -+ printf("Out of memory\n"); -+ return -ENOMEM; -+ } -+ -+ if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) { -+ printf("No RNG device\n"); -+ return -ENODEV; -+ } -+ -+ if (dm_rng_read(dev, data, len)) { -+ printf("Reading RNG failed\n"); -+ return -EIO; -+ } -+ -+ abuf_init_set(buf, data, len); -+ -+ return 0; -+} -+#endif -diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -index 45854709f5..7bef5a53f0 100644 ---- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -+++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -@@ -17,7 +17,6 @@ - #include - #include - #include --#include - #include - #include - -@@ -137,34 +136,6 @@ void spl_board_init(void) - (GPIO0_BASE + GPIO_SWPORT_DR_H)); - } - --/* Use hardware rng to seed Linux random. */ --int board_rng_seed(struct abuf *buf) --{ -- struct udevice *dev; -- size_t len = 0x8; -- u64 *data; -- -- data = malloc(len); -- if (!data) { -- printf("Out of memory\n"); -- return -ENOMEM; -- } -- -- if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) { -- printf("No RNG device\n"); -- return -ENODEV; -- } -- -- if (dm_rng_read(dev, data, len)) { -- printf("Reading RNG failed\n"); -- return -EIO; -- } -- -- abuf_init_set(buf, data, len); -- -- return 0; --} -- - /* - * Buzz the buzzer so the user knows something is going on. Make it - * optional in case PWM is disabled. --- -2.34.1 diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/106_V3_6_7_Add_additional_boards_and_features_to_rgxx3.dont_patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/106_V3_6_7_Add_additional_boards_and_features_to_rgxx3.dont_patch deleted file mode 100644 index c0cdd5ac67..0000000000 --- a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/106_V3_6_7_Add_additional_boards_and_features_to_rgxx3.dont_patch +++ /dev/null @@ -1,112 +0,0 @@ -From: Chris Morgan -To: u-boot@lists.denx.de -Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, - philipp.tomsich@vrull.eu, sjg@chromium.org, - Chris Morgan -Subject: [PATCH V3 6/7] board: rockchip: Add support for new boards to RGxx3 -Date: Mon, 11 Dec 2023 17:21:24 -0600 [thread overview] -Message-ID: <20231211232125.171438-7-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Add support for the Anbernic RG-ARC-D, Anbernic RG-ARC-S, Powkiddy -RK2023, and Powkiddy RGB30 to the Anbernic RGxx3. While the Powkiddy -devices are manufactured by Powkiddy instead of Anbernic, -the hardware is so similar they can all use the same bootloader. - -Signed-off-by: Chris Morgan ---- - board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 44 +++++++++++++++++++--- - 1 file changed, 39 insertions(+), 5 deletions(-) - -diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -index 7bef5a53f0..2445663d43 100644 ---- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -+++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -@@ -48,9 +48,13 @@ enum rgxx3_device_id { - RG353P, - RG353V, - RG503, -+ RGB30, -+ RK2023, -+ RGARCD, - /* Devices with duplicate ADC value */ - RG353PS, - RG353VS, -+ RGARCS, - }; - - static const struct rg3xx_model rg3xx_model_details[] = { -@@ -83,6 +87,27 @@ static const struct rg3xx_model rg3xx_model_details[] = { - .fdtfile = DTB_DIR "rk3566-anbernic-rg503.dtb", - .detect_panel = 0, - }, -+ [RGB30] = { -+ .adc_value = 383, /* Gathered from second hand information */ -+ .board = "rk3566-powkiddy-rgb30", -+ .board_name = "RGB30", -+ .fdtfile = DTB_DIR "rk3566-powkiddy-rgb30.dtb", -+ .detect_panel = 0, -+ }, -+ [RK2023] = { -+ .adc_value = 635, /* Observed average from device */ -+ .board = "rk3566-powkiddy-rk2023", -+ .board_name = "RK2023", -+ .fdtfile = DTB_DIR "rk3566-powkiddy-rk2023.dtb", -+ .detect_panel = 0, -+ }, -+ [RGARCD] = { -+ .adc_value = 183, /* Observed average from device */ -+ .board = "rk3566-anbernic-rg-arc-d", -+ .board_name = "Anbernic RG ARC-D", -+ .fdtfile = DTB_DIR "rk3566-anbernic-rg-arc-d.dtb", -+ .detect_panel = 0, -+ }, - /* Devices with duplicate ADC value */ - [RG353PS] = { - .adc_value = 860, /* Observed average from device */ -@@ -98,6 +123,13 @@ static const struct rg3xx_model rg3xx_model_details[] = { - .fdtfile = DTB_DIR "rk3566-anbernic-rg353vs.dtb", - .detect_panel = 1, - }, -+ [RGARCS] = { -+ .adc_value = 183, /* Observed average from device */ -+ .board = "rk3566-anbernic-rg-arc-s", -+ .board_name = "Anbernic RG ARC-S", -+ .fdtfile = DTB_DIR "rk3566-anbernic-rg-arc-s.dtb", -+ .detect_panel = 0, -+ }, - }; - - struct rg353_panel { -@@ -332,19 +364,21 @@ int rgxx3_detect_device(void) - } - - /* -- * Try to access the eMMC on an RG353V or RG353P. If it's -- * missing, it's an RG353VS or RG353PS. Note we could also -- * check for a touchscreen at 0x1a on i2c2. -+ * Try to access the eMMC on an RG353V, RG353P, or RG Arc D. -+ * If it's missing, it's an RG353VS, RG353PS, or RG Arc S. -+ * Note we could also check for a touchscreen at 0x1a on i2c2. - */ -- if (board_id == RG353V || board_id == RG353P) { -+ if (board_id == RG353V || board_id == RG353P || board_id == RGARCD) { - mmc = find_mmc_device(0); - if (mmc) { - ret = mmc_init(mmc); - if (ret) { - if (board_id == RG353V) - board_id = RG353VS; -- else -+ if (board_id == RG353P) - board_id = RG353PS; -+ else -+ board_id = RGARCS; - } - } - } --- -2.34.1 - diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/107_V3_7_7_Add_additional_boards_and_features_to_rgxx3.dont_patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/107_V3_7_7_Add_additional_boards_and_features_to_rgxx3.dont_patch deleted file mode 100644 index f13ee08f79..0000000000 --- a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/107_V3_7_7_Add_additional_boards_and_features_to_rgxx3.dont_patch +++ /dev/null @@ -1,68 +0,0 @@ -From: Chris Morgan -To: u-boot@lists.denx.de -Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, - philipp.tomsich@vrull.eu, sjg@chromium.org, - Chris Morgan -Subject: [PATCH V3 7/7] doc: board: anbernic: Update rgxx3 to add new boards -Date: Mon, 11 Dec 2023 17:21:25 -0600 [thread overview] -Message-ID: <20231211232125.171438-8-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Update the RGxx3 documentation to note that it now supports the -RG-ARC-D, RG-ARC-S, Powkiddy RK2023, and Powkiddy RGB30. Also update -verbiage around panel detection to note that it is no longer hard coded -to the RG503. - -Signed-off-by: Chris Morgan ---- - doc/board/anbernic/rgxx3.rst | 20 ++++++++++++++------ - 1 file changed, 14 insertions(+), 6 deletions(-) - -diff --git a/doc/board/anbernic/rgxx3.rst b/doc/board/anbernic/rgxx3.rst -index 7d1beb423c..d159ed2f76 100644 ---- a/doc/board/anbernic/rgxx3.rst -+++ b/doc/board/anbernic/rgxx3.rst -@@ -5,6 +5,8 @@ U-Boot for Anbernic RGxx3 Devices - - This allows U-Boot to boot the following Anbernic devices: - -+ - Anbernic RG-ARC-D -+ - Anbernic RG-ARC-S - - Anbernic RG353M - - Anbernic RG353P - - Anbernic RG353PS -@@ -12,18 +14,24 @@ This allows U-Boot to boot the following Anbernic devices: - - Anbernic RG353VS - - Anbernic RG503 - -+Additionally, the following very similar non-Anbernic devices are also -+supported: -+ -+ - Powkiddy RGB30 -+ - Powkiddy RK2023 -+ - The correct device is detected automatically by comparing ADC values - from ADC channel 1. In the event of an RG353V or RG353P, an attempt - is then made to probe for an eMMC and if it fails the device is assumed - to be an RG353VS or RG353PS. Based on the detected device, the - environment variables "board", "board_name", and "fdtfile" are set to - the correct values corresponding to the board which can be read by a --boot script to boot with the correct device tree. If the board detected --is not of type RG503 (which currently has only 1 panel revision) a --panel detect is then performed by probing a "dummy" display on the DSI --bus and then querying the display ID. The display ID is then compared --to a table to get the known compatible string for use in Linux, and --this string is saved as an environment variable of "panel". -+boot script to boot with the correct device tree. If a board is defined -+as requiring panel detection, a panel detect is then performed by -+probing a "dummy" display on the DSI bus and then querying the display -+ID. The display ID is then compared to a table to get the known -+compatible string for use in Linux, and this string is saved as an -+environment variable of "panel". - - FDT fixups are performed in the event of an RG353M to change the device - name, or in the event the panel detected does not match the devicetree. --- -2.34.1 diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/201_Omnibus_2_patch.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/201_Omnibus_2_patch.patch deleted file mode 100644 index c7f3a4fc6a..0000000000 --- a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/201_Omnibus_2_patch.patch +++ /dev/null @@ -1,653 +0,0 @@ -diff --git a/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi b/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi -index f986e1941..e3ab196d2 100644 ---- a/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi -+++ b/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi -@@ -76,6 +76,12 @@ - /delete-property/ clock-names; - }; - -+&saradc { -+ bootph-all; -+ vref-supply = <&vcc_sys>; -+ status = "okay"; -+}; -+ - &sdhci { - pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>, - <&emmc_datastrobe>, <&emmc_rstnout>; -@@ -94,3 +100,8 @@ - bootph-all; - status = "okay"; - }; -+ -+&vcc_sys { -+ bootph-all; -+ status = "okay"; -+}; -diff --git a/arch/arm/mach-rockchip/Makefile b/arch/arm/mach-rockchip/Makefile -index 1dc92066b..ff089ae94 100644 ---- a/arch/arm/mach-rockchip/Makefile -+++ b/arch/arm/mach-rockchip/Makefile -@@ -15,13 +15,13 @@ obj-tpl-$(CONFIG_ROCKCHIP_PX30) += px30-board-tpl.o - - obj-spl-$(CONFIG_ROCKCHIP_RK3036) += rk3036-board-spl.o - --ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),) -- - # Always include boot_mode.o, as we bypass it (i.e. turn it off) - # inside of boot_mode.c when CONFIG_ROCKCHIP_BOOT_MODE_REG is 0. This way, - # we can have the preprocessor correctly recognise both 0x0 and 0 - # meaning "turn it off". - obj-y += boot_mode.o -+ -+ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),) - obj-$(CONFIG_ROCKCHIP_COMMON_BOARD) += board.o - obj-$(CONFIG_MISC_INIT_R) += misc.o - endif -diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c -index 57f08e0be..77145524e 100644 ---- a/arch/arm/mach-rockchip/board.c -+++ b/arch/arm/mach-rockchip/board.c -@@ -348,3 +348,35 @@ __weak int misc_init_r(void) - return ret; - } - #endif -+ -+#if IS_ENABLED(CONFIG_BOARD_RNG_SEED) && IS_ENABLED(CONFIG_RNG_ROCKCHIP) -+#include -+ -+/* Use hardware rng to seed Linux random. */ -+__weak int board_rng_seed(struct abuf *buf) -+{ -+ struct udevice *dev; -+ size_t len = 0x8; -+ u64 *data; -+ -+ data = malloc(len); -+ if (!data) { -+ printf("Out of memory\n"); -+ return -ENOMEM; -+ } -+ -+ if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) { -+ printf("No RNG device\n"); -+ return -ENODEV; -+ } -+ -+ if (dm_rng_read(dev, data, len)) { -+ printf("Reading RNG failed\n"); -+ return -EIO; -+ } -+ -+ abuf_init_set(buf, data, len); -+ -+ return 0; -+} -+#endif -diff --git a/arch/arm/mach-rockchip/boot_mode.c b/arch/arm/mach-rockchip/boot_mode.c -index eb8f65ae4..d2308768b 100644 ---- a/arch/arm/mach-rockchip/boot_mode.c -+++ b/arch/arm/mach-rockchip/boot_mode.c -@@ -38,6 +38,10 @@ void set_back_to_bootrom_dnl_flag(void) - #define KEY_DOWN_MIN_VAL 0 - #define KEY_DOWN_MAX_VAL 30 - -+#ifndef RK_DNL_ADC_CHAN -+#define RK_DNL_ADC_CHAN 1 -+#endif -+ - __weak int rockchip_dnl_key_pressed(void) - { - unsigned int val; -@@ -52,7 +56,8 @@ __weak int rockchip_dnl_key_pressed(void) - ret = -ENODEV; - uclass_foreach_dev(dev, uc) { - if (!strncmp(dev->name, "saradc", 6)) { -- ret = adc_channel_single_shot(dev->name, 1, &val); -+ ret = adc_channel_single_shot(dev->name, -+ RK_DNL_ADC_CHAN, &val); - break; - } - } -@@ -73,11 +78,13 @@ __weak int rockchip_dnl_key_pressed(void) - - void rockchip_dnl_mode_check(void) - { -+#if CONFIG_IS_ENABLED(ADC) - if (rockchip_dnl_key_pressed()) { - printf("download key pressed, entering download mode..."); - set_back_to_bootrom_dnl_flag(); - do_reset(NULL, 0, 0, NULL); - } -+#endif - } - - int setup_boot_mode(void) -@@ -90,6 +97,7 @@ int setup_boot_mode(void) - boot_mode = readl(reg); - debug("%s: boot mode 0x%08x\n", __func__, boot_mode); - -+#if !defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) - /* Clear boot mode */ - writel(BOOT_NORMAL, reg); - -@@ -103,6 +111,7 @@ int setup_boot_mode(void) - env_set("preboot", "setenv preboot; ums mmc 0"); - break; - } -+#endif - - return 0; - } -diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -index 3f1a42d18..978ed2662 100644 ---- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -+++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -@@ -5,6 +5,7 @@ - - #include - #include -+#include - #include - #include - #include -@@ -16,7 +17,6 @@ - #include - #include - #include --#include - #include - #include - -@@ -33,13 +33,15 @@ - - #define GPIO_WRITEMASK(bits) ((bits) << 16) - --#define DTB_DIR "rockchip/" -+// #define DTB_DIR "rockchip/" -+#define DTB_DIR "" - - struct rg3xx_model { - const u16 adc_value; - const char *board; - const char *board_name; - const char *fdtfile; -+ const bool detect_panel; - }; - - enum rgxx3_device_id { -@@ -47,67 +49,117 @@ enum rgxx3_device_id { - RG353P, - RG353V, - RG503, -+ RGB30, -+ RK2023, -+ RGARCD, - /* Devices with duplicate ADC value */ - RG353PS, - RG353VS, -+ RGARCS, - }; - - static const struct rg3xx_model rg3xx_model_details[] = { - [RG353M] = { -- 517, /* Observed average from device */ -- "rk3566-anbernic-rg353m", -- "RG353M", -- DTB_DIR "rk3566-anbernic-rg353p.dtb", /* Identical devices */ -+ .adc_value = 517, /* Observed average from device */ -+ .board = "rk3566-anbernic-rg353m", -+ .board_name = "RG353M", -+ /* Device is identical to RG353P. */ -+ .fdtfile = DTB_DIR "rk3566-anbernic-rg353p.dtb", -+ .detect_panel = 1, - }, - [RG353P] = { -- 860, /* Documented value of 860 */ -- "rk3566-anbernic-rg353p", -- "RG353P", -- DTB_DIR "rk3566-anbernic-rg353p.dtb", -+ .adc_value = 860, /* Documented value of 860 */ -+ .board = "rk3566-anbernic-rg353p", -+ .board_name = "RG353P", -+ .fdtfile = DTB_DIR "rk3566-anbernic-rg353p.dtb", -+ .detect_panel = 1, - }, - [RG353V] = { -- 695, /* Observed average from device */ -- "rk3566-anbernic-rg353v", -- "RG353V", -- DTB_DIR "rk3566-anbernic-rg353v.dtb", -+ .adc_value = 695, /* Observed average from device */ -+ .board = "rk3566-anbernic-rg353v", -+ .board_name = "RG353V", -+ .fdtfile = DTB_DIR "rk3566-anbernic-rg353v.dtb", -+ .detect_panel = 1, - }, - [RG503] = { -- 1023, /* Observed average from device */ -- "rk3566-anbernic-rg503", -- "RG503", -- DTB_DIR "rk3566-anbernic-rg503.dtb", -+ .adc_value = 1023, /* Observed average from device */ -+ .board = "rk3566-anbernic-rg503", -+ .board_name = "RG503", -+ .fdtfile = DTB_DIR "rk3566-anbernic-rg503.dtb", -+ .detect_panel = 0, -+ }, -+ [RGB30] = { -+ .adc_value = 383, /* Gathered from second hand information */ -+ .board = "rk3566-powkiddy-rgb30", -+ .board_name = "RGB30", -+ .fdtfile = DTB_DIR "rk3566-powkiddy-rgb30.dtb", -+ .detect_panel = 0, -+ }, -+ [RK2023] = { -+ .adc_value = 635, /* Observed average from device */ -+ .board = "rk3566-powkiddy-rk2023", -+ .board_name = "RK2023", -+ .fdtfile = DTB_DIR "rk3566-powkiddy-rk2023.dtb", -+ .detect_panel = 0, -+ }, -+ [RGARCD] = { -+ .adc_value = 183, /* Observed average from device */ -+ .board = "rk3566-anbernic-rg-arc-d", -+ .board_name = "Anbernic RG ARC-D", -+ .fdtfile = DTB_DIR "rk3566-anbernic-rg-arc-d.dtb", -+ .detect_panel = 0, - }, - /* Devices with duplicate ADC value */ - [RG353PS] = { -- 860, /* Observed average from device */ -- "rk3566-anbernic-rg353ps", -- "RG353PS", -- DTB_DIR "rk3566-anbernic-rg353ps.dtb", -+ .adc_value = 860, /* Observed average from device */ -+ .board = "rk3566-anbernic-rg353ps", -+ .board_name = "RG353PS", -+ .fdtfile = DTB_DIR "rk3566-anbernic-rg353ps.dtb", -+ .detect_panel = 1, - }, - [RG353VS] = { -- 695, /* Gathered from second hand information */ -- "rk3566-anbernic-rg353vs", -- "RG353VS", -- DTB_DIR "rk3566-anbernic-rg353vs.dtb", -+ .adc_value = 695, /* Gathered from second hand information */ -+ .board = "rk3566-anbernic-rg353vs", -+ .board_name = "RG353VS", -+ .fdtfile = DTB_DIR "rk3566-anbernic-rg353vs.dtb", -+ .detect_panel = 1, -+ }, -+ [RGARCS] = { -+ .adc_value = 183, /* Observed average from device */ -+ .board = "rk3566-anbernic-rg-arc-s", -+ .board_name = "Anbernic RG ARC-S", -+ .fdtfile = DTB_DIR "rk3566-anbernic-rg-arc-s.dtb", -+ .detect_panel = 0, - }, - }; - - struct rg353_panel { - const u16 id; -- const char *panel_compat; -+ const char *panel_compat[2]; - }; - - static const struct rg353_panel rg353_panel_details[] = { -- { .id = 0x3052, .panel_compat = "newvision,nv3051d"}, -- { .id = 0x3821, .panel_compat = "anbernic,rg353v-panel-v2"}, -+ { -+ .id = 0x3052, -+ .panel_compat[0] = "anbernic,rg353p-panel", -+ .panel_compat[1] = "newvision,nv3051d", -+ }, -+ { -+ .id = 0x3821, -+ .panel_compat[0] = "anbernic,rg353v-panel-v2", -+ .panel_compat[1] = NULL, -+ }, - }; - - /* -- * Start LED very early so user knows device is on. Set color -+ * Check if rockchip_dnl button is pressed and reboot into rockusb if -+ * true. Start LED very early so user knows device is on. Set color - * to red. - */ - void spl_board_init(void) - { -+ setup_boot_mode(); -+ - /* Set GPIO0_C5, GPIO0_C6, and GPIO0_C7 to output. */ - writel(GPIO_WRITEMASK(GPIO_C7 | GPIO_C6 | GPIO_C5) | \ - (GPIO_C7 | GPIO_C6 | GPIO_C5), -@@ -117,34 +169,6 @@ void spl_board_init(void) - (GPIO0_BASE + GPIO_SWPORT_DR_H)); - } - --/* Use hardware rng to seed Linux random. */ --int board_rng_seed(struct abuf *buf) --{ -- struct udevice *dev; -- size_t len = 0x8; -- u64 *data; -- -- data = malloc(len); -- if (!data) { -- printf("Out of memory\n"); -- return -ENOMEM; -- } -- -- if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) { -- printf("No RNG device\n"); -- return -ENODEV; -- } -- -- if (dm_rng_read(dev, data, len)) { -- printf("Reading RNG failed\n"); -- return -EIO; -- } -- -- abuf_init_set(buf, data, len); -- -- return 0; --} -- - /* - * Buzz the buzzer so the user knows something is going on. Make it - * optional in case PWM is disabled. -@@ -298,11 +322,10 @@ int rgxx3_detect_display(void) - if (!panel) { - printf("Unable to identify panel_id %x\n", - (panel_id[0] << 8) | panel_id[1]); -- env_set("panel", "unknown"); - return -EINVAL; - } - -- env_set("panel", panel->panel_compat); -+ env_set("panel", panel->panel_compat[0]); - - return 0; - } -@@ -342,19 +365,21 @@ int rgxx3_detect_device(void) - } - - /* -- * Try to access the eMMC on an RG353V or RG353P. If it's -- * missing, it's an RG353VS or RG353PS. Note we could also -- * check for a touchscreen at 0x1a on i2c2. -+ * Try to access the eMMC on an RG353V, RG353P, or RG Arc D. -+ * If it's missing, it's an RG353VS, RG353PS, or RG Arc S. -+ * Note we could also check for a touchscreen at 0x1a on i2c2. - */ -- if (board_id == RG353V || board_id == RG353P) { -+ if (board_id == RG353V || board_id == RG353P || board_id == RGARCD) { - mmc = find_mmc_device(0); - if (mmc) { - ret = mmc_init(mmc); - if (ret) { - if (board_id == RG353V) - board_id = RG353VS; -- else -+ if (board_id == RG353P) - board_id = RG353PS; -+ else -+ board_id = RGARCS; - } - } - } -@@ -367,13 +392,14 @@ int rgxx3_detect_device(void) - rg3xx_model_details[board_id].board_name); - env_set("fdtfile", rg3xx_model_details[board_id].fdtfile); - -- /* Detect the panel type for any device that isn't a 503. */ -- if (board_id == RG503) -+ /* Skip panel detection for when it is not needed. */ -+ if (!rg3xx_model_details[board_id].detect_panel) - return 0; - -+ /* Warn but don't fail for errors in auto-detection of the panel. */ - ret = rgxx3_detect_display(); - if (ret) -- return ret; -+ printf("Failed to detect panel type\n"); - - return 0; - } -@@ -400,7 +426,8 @@ int rk_board_late_init(void) - - int ft_board_setup(void *blob, struct bd_info *bd) - { -- int node, ret; -+ const struct rg353_panel *panel = NULL; -+ int node, ret, i; - char *env; - - /* No fixups necessary for the RG503 */ -@@ -414,6 +441,12 @@ int ft_board_setup(void *blob, struct bd_info *bd) - rg3xx_model_details[RG353M].board_name, - sizeof(rg3xx_model_details[RG353M].board_name)); - -+ env = env_get("panel"); -+ if (!env) { -+ printf("Can't get panel env\n"); -+ return 0; -+ } -+ - /* - * Check if the environment variable doesn't equal the panel. - * If it doesn't, update the devicetree to the correct panel. -@@ -424,12 +457,6 @@ int ft_board_setup(void *blob, struct bd_info *bd) - return -ENODEV; - } - -- env = env_get("panel"); -- if (!env) { -- printf("Can't get panel env\n"); -- return -ENODEV; -- } -- - ret = fdt_node_check_compatible(blob, node, env); - if (ret < 0) - return -ENODEV; -@@ -438,8 +465,24 @@ int ft_board_setup(void *blob, struct bd_info *bd) - if (!ret) - return 0; - -- do_fixup_by_path_string(blob, "/dsi@fe060000/panel@0", -- "compatible", env); -+ /* Panels don't match, search by first compatible value. */ -+ for (i = 0; i < ARRAY_SIZE(rg353_panel_details); i++) { -+ if (!strcmp(env, rg353_panel_details[i].panel_compat[0])) { -+ panel = &rg353_panel_details[i]; -+ break; -+ } -+ } -+ -+ if (!panel) { -+ printf("Unable to identify panel by compat string\n"); -+ return -ENODEV; -+ } -+ -+ /* Set the compatible with the auto-detected values */ -+ fdt_setprop_string(blob, node, "compatible", panel->panel_compat[0]); -+ if (panel->panel_compat[1]) -+ fdt_appendprop_string(blob, node, "compatible", -+ panel->panel_compat[1]); - - return 0; - } -diff --git a/common/spl/Kconfig b/common/spl/Kconfig -index c521b02f4..ada9dcea5 100644 ---- a/common/spl/Kconfig -+++ b/common/spl/Kconfig -@@ -579,6 +579,13 @@ config SPL_FIT_IMAGE_TINY - ensure this information is available to the next image - invoked). - -+config SPL_ADC -+ bool "Support ADC drivers" -+ help -+ Enable ADC drivers in SPL. These drivers can allow the reading of -+ analog values from one or more channels. Enable this option to -+ build the drivers in drivers/adc as part of an SPL build. -+ - config SPL_CACHE - bool "Support CACHE drivers" - help -diff --git a/configs/anbernic-rgxx3-rk3566_defconfig b/configs/anbernic-rgxx3-rk3566_defconfig -index ed6643d9d..27911cc9f 100644 ---- a/configs/anbernic-rgxx3-rk3566_defconfig -+++ b/configs/anbernic-rgxx3-rk3566_defconfig -@@ -3,6 +3,7 @@ CONFIG_SKIP_LOWLEVEL_INIT=y - CONFIG_COUNTER_FREQUENCY=24000000 - CONFIG_ARCH_ROCKCHIP=y - CONFIG_TEXT_BASE=0x00a00000 -+CONFIG_SPL_GPIO=y - CONFIG_SPL_LIBCOMMON_SUPPORT=y - CONFIG_SPL_LIBGENERIC_SUPPORT=y - CONFIG_NR_DRAM_BANKS=2 -@@ -24,15 +25,17 @@ CONFIG_SYS_LOAD_ADDR=0xc00800 - CONFIG_DEBUG_UART=y - CONFIG_FIT=y - CONFIG_FIT_VERBOSE=y -+CONFIG_SPL_FIT_SIGNATURE=y - CONFIG_SPL_LOAD_FIT=y -+CONFIG_LEGACY_IMAGE_FORMAT=y - CONFIG_OF_BOARD_SETUP=y - CONFIG_OF_STDOUT_VIA_ALIAS=y --CONFIG_DEFAULT_FDT_FILE="rockchip/rk3566-anbernic-rgxx3.dtb" -+CONFIG_DEFAULT_FDT_FILE="rk3566-anbernic-rgxx3.dtb" - # CONFIG_CONSOLE_MUX is not set - # CONFIG_DISPLAY_CPUINFO is not set - CONFIG_DISPLAY_BOARDINFO_LATE=y - CONFIG_BOARD_RNG_SEED=y --CONFIG_SPL_MAX_SIZE=0x20000 -+CONFIG_SPL_MAX_SIZE=0x40000 - CONFIG_SPL_PAD_TO=0x7f8000 - CONFIG_SPL_HAS_BSS_LINKER_SECTION=y - CONFIG_SPL_BSS_START_ADDR=0x4000000 -@@ -41,6 +44,8 @@ CONFIG_SPL_BOARD_INIT=y - # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set - # CONFIG_SPL_SHARES_INIT_SP_ADDR is not set - CONFIG_SPL_STACK_R=y -+CONFIG_SPL_ADC=y -+CONFIG_SPL_POWER=y - CONFIG_SPL_ATF=y - CONFIG_CMD_PWM=y - CONFIG_CMD_GPT=y -@@ -50,8 +55,10 @@ CONFIG_CMD_MMC=y - # CONFIG_SPL_DOS_PARTITION is not set - CONFIG_SPL_OF_CONTROL=y - CONFIG_OF_LIVE=y -+CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y - # CONFIG_NET is not set -+CONFIG_SPL_DM_SEQ_ALIAS=y - CONFIG_SPL_REGMAP=y - CONFIG_SPL_SYSCON=y - CONFIG_SPL_CLK=y -@@ -67,13 +74,13 @@ CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_ROCKCHIP=y - CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y -+CONFIG_SPL_PINCTRL=y - CONFIG_DM_PMIC=y - CONFIG_DM_PMIC_FAN53555=y - CONFIG_PMIC_RK8XX=y --CONFIG_REGULATOR_PWM=y --CONFIG_DM_REGULATOR_GPIO=y -+CONFIG_SPL_DM_REGULATOR=y -+CONFIG_SPL_DM_REGULATOR_FIXED=y - CONFIG_REGULATOR_RK8XX=y --CONFIG_DM_REGULATOR_SCMI=y - CONFIG_PWM_ROCKCHIP=y - CONFIG_SPL_RAM=y - # CONFIG_RAM_ROCKCHIP_DEBUG is not set -@@ -89,5 +96,6 @@ CONFIG_VIDEO_ROCKCHIP=y - CONFIG_DISPLAY_ROCKCHIP_DW_MIPI=y - CONFIG_VIDEO_BRIDGE=y - CONFIG_REGEX=y -+# CONFIG_RSA is not set - CONFIG_ERRNO_STR=y - # CONFIG_EFI_LOADER is not set -diff --git a/doc/board/anbernic/rgxx3.rst b/doc/board/anbernic/rgxx3.rst -index 7d1beb423..d159ed2f7 100644 ---- a/doc/board/anbernic/rgxx3.rst -+++ b/doc/board/anbernic/rgxx3.rst -@@ -5,6 +5,8 @@ U-Boot for Anbernic RGxx3 Devices - - This allows U-Boot to boot the following Anbernic devices: - -+ - Anbernic RG-ARC-D -+ - Anbernic RG-ARC-S - - Anbernic RG353M - - Anbernic RG353P - - Anbernic RG353PS -@@ -12,18 +14,24 @@ This allows U-Boot to boot the following Anbernic devices: - - Anbernic RG353VS - - Anbernic RG503 - -+Additionally, the following very similar non-Anbernic devices are also -+supported: -+ -+ - Powkiddy RGB30 -+ - Powkiddy RK2023 -+ - The correct device is detected automatically by comparing ADC values - from ADC channel 1. In the event of an RG353V or RG353P, an attempt - is then made to probe for an eMMC and if it fails the device is assumed - to be an RG353VS or RG353PS. Based on the detected device, the - environment variables "board", "board_name", and "fdtfile" are set to - the correct values corresponding to the board which can be read by a --boot script to boot with the correct device tree. If the board detected --is not of type RG503 (which currently has only 1 panel revision) a --panel detect is then performed by probing a "dummy" display on the DSI --bus and then querying the display ID. The display ID is then compared --to a table to get the known compatible string for use in Linux, and --this string is saved as an environment variable of "panel". -+boot script to boot with the correct device tree. If a board is defined -+as requiring panel detection, a panel detect is then performed by -+probing a "dummy" display on the DSI bus and then querying the display -+ID. The display ID is then compared to a table to get the known -+compatible string for use in Linux, and this string is saved as an -+environment variable of "panel". - - FDT fixups are performed in the event of an RG353M to change the device - name, or in the event the panel detected does not match the devicetree. -diff --git a/drivers/Makefile b/drivers/Makefile -index bf73b7718..81ba2c534 100644 ---- a/drivers/Makefile -+++ b/drivers/Makefile -@@ -1,5 +1,6 @@ - # SPDX-License-Identifier: GPL-2.0+ - -+obj-$(CONFIG_$(SPL_)ADC) += adc/ - obj-$(CONFIG_$(SPL_TPL_)BIOSEMU) += bios_emulator/ - obj-$(CONFIG_$(SPL_TPL_)BLK) += block/ - obj-$(CONFIG_$(SPL_TPL_)BOOTCOUNT_LIMIT) += bootcount/ -diff --git a/drivers/adc/Makefile b/drivers/adc/Makefile -index 5336c8209..9eb07769b 100644 ---- a/drivers/adc/Makefile -+++ b/drivers/adc/Makefile -@@ -4,7 +4,7 @@ - # Przemyslaw Marczak - # - --obj-$(CONFIG_ADC) += adc-uclass.o -+obj-$(CONFIG_$(SPL_)ADC) += adc-uclass.o - obj-$(CONFIG_ADC_EXYNOS) += exynos-adc.o - obj-$(CONFIG_ADC_SANDBOX) += sandbox.o - obj-$(CONFIG_SARADC_ROCKCHIP) += rockchip-saradc.o -diff --git a/include/configs/anbernic-rgxx3-rk3566.h b/include/configs/anbernic-rgxx3-rk3566.h -index 3c4ea4e7d..2aaac55c0 100644 ---- a/include/configs/anbernic-rgxx3-rk3566.h -+++ b/include/configs/anbernic-rgxx3-rk3566.h -@@ -9,4 +9,6 @@ - "stdout=serial,vidconsole\0" \ - "stderr=serial,vidconsole\0" - -+#define RK_DNL_ADC_CHAN 0 -+ - #endif From 64444e1928f64e0dca6b282282c0c9036493305c Mon Sep 17 00:00:00 2001 From: Sparticuz Date: Tue, 19 Dec 2023 14:58:32 -0500 Subject: [PATCH 068/167] remove old wifi patches --- .../RK3566-ML/008-add-rtw88-to-anydat.patch.no | 10 ---------- .../patches/RK3566-ML/009-delay-wifi-powerup.patch.no | 11 ----------- 2 files changed, 21 deletions(-) delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566-ML/008-add-rtw88-to-anydat.patch.no delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566-ML/009-delay-wifi-powerup.patch.no diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/008-add-rtw88-to-anydat.patch.no b/projects/Rockchip/packages/linux/patches/RK3566-ML/008-add-rtw88-to-anydat.patch.no deleted file mode 100644 index 3f877a4bd9..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566-ML/008-add-rtw88-to-anydat.patch.no +++ /dev/null @@ -1,10 +0,0 @@ -diff --git a/packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat b/packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat -index 22ab7452..8ad5768a 100644 ---- a/packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat -+++ b/packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat -@@ -20,4 +20,4 @@ ath9k_htc/* - brcm/* - rtl_bt/* - rtlwifi/* --rtw89/* -+rtw*/* diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/009-delay-wifi-powerup.patch.no b/projects/Rockchip/packages/linux/patches/RK3566-ML/009-delay-wifi-powerup.patch.no deleted file mode 100644 index f8be999d1f..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566-ML/009-delay-wifi-powerup.patch.no +++ /dev/null @@ -1,11 +0,0 @@ -diff -rupN a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi ---- a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi 2023-12-11 11:39:10.610833310 -0500 -+++ b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi 2023-12-11 11:39:20.677499539 -0500 -@@ -224,7 +224,7 @@ - clock-names = "ext_clock"; - pinctrl-0 = <&wifi_enable_h>; - pinctrl-names = "default"; -- post-power-on-delay-ms = <200>; -+ post-power-on-delay-ms = <800>; - reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_LOW>; - }; From 0b7439c7cd517cedae1e9f3af08697fe24f2c0c9 Mon Sep 17 00:00:00 2001 From: Sparticuz Date: Tue, 19 Dec 2023 16:50:05 -0500 Subject: [PATCH 069/167] fix dtb patch, add in 353VS fix --- ...rectory.patch => 003-fix-dtb-and-vs.patch} | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) rename projects/Rockchip/packages/u-boot/patches/RK3566-ML/{003-move-dtb-directory.patch => 003-fix-dtb-and-vs.patch} (57%) diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/003-move-dtb-directory.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/003-fix-dtb-and-vs.patch similarity index 57% rename from projects/Rockchip/packages/u-boot/patches/RK3566-ML/003-move-dtb-directory.patch rename to projects/Rockchip/packages/u-boot/patches/RK3566-ML/003-fix-dtb-and-vs.patch index 4d053b5593..08d3f2b040 100644 --- a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/003-move-dtb-directory.patch +++ b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/003-fix-dtb-and-vs.patch @@ -1,22 +1,31 @@ diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c -index 3f1a42d18..b8e094032 100644 +index 2445663d4..194605ff0 100644 --- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c @@ -33,7 +33,7 @@ - - #define GPIO_WRITEMASK(bits) ((bits) << 16) - --#define DTB_DIR "rockchip/" -+#define DTB_DIR "" - + + #define GPIO_WRITEMASK(bits) ((bits) << 16) + +-#define DTB_DIR "rockchip/" ++#define DTB_DIR "" + struct rg3xx_model { - const u16 adc_value; + const u16 adc_value; +@@ -375,7 +375,7 @@ int rgxx3_detect_device(void) + if (ret) { + if (board_id == RG353V) + board_id = RG353VS; +- if (board_id == RG353P) ++ else if (board_id == RG353P) + board_id = RG353PS; + else + board_id = RGARCS; diff --git a/configs/anbernic-rgxx3-rk3566_defconfig b/configs/anbernic-rgxx3-rk3566_defconfig -index ed6643d9d..83e8358a0 100644 +index 4e72f7581..27911cc9f 100644 --- a/configs/anbernic-rgxx3-rk3566_defconfig +++ b/configs/anbernic-rgxx3-rk3566_defconfig -@@ -27,7 +27,7 @@ CONFIG_FIT_VERBOSE=y - CONFIG_SPL_LOAD_FIT=y +@@ -30,7 +30,7 @@ CONFIG_SPL_LOAD_FIT=y + CONFIG_LEGACY_IMAGE_FORMAT=y CONFIG_OF_BOARD_SETUP=y CONFIG_OF_STDOUT_VIA_ALIAS=y -CONFIG_DEFAULT_FDT_FILE="rockchip/rk3566-anbernic-rgxx3.dtb" From 4e53fd9c81f8c89188e31b26528460db88ccbb14 Mon Sep 17 00:00:00 2001 From: David Williams Date: Fri, 22 Dec 2023 09:45:54 -0800 Subject: [PATCH 070/167] Preliminary RK3566-X55-ML support --- Makefile | 5 +- .../RK3566-ML/linux/linux.aarch64.conf | 4 +- .../RK3566-X55-ML/linux/linux.aarch64.conf | 1113 +++++++++++ .../Rockchip/devices/RK3566-X55-ML/options | 161 ++ projects/Rockchip/packages/linux/package.mk | 8 +- .../RK3566-X55-ML/001-fix-model-names.patch | 60 + .../002-rk817-power-driver-names.patch | 21 + .../RK3566-X55-ML/003-v4-add-rk2023.patch | 1495 +++++++++++++++ .../RK3566-X55-ML/004-add-rg351v.patch | 715 +++++++ .../RK3566-X55-ML/005-set-mac-address.patch | 15 + .../006-v2-add-powkiddy-x55.patch | 1657 +++++++++++++++++ projects/Rockchip/packages/u-boot/package.mk | 2 +- .../RK3566-ML/002-v2-add-powkiddy-x55.patch | 2 +- ...itional_boards_and_features_to_rgxx3.patch | 919 +++++++++ .../002-v2-add-powkiddy-x55.patch | 1383 ++++++++++++++ .../RK3566-X55-ML/003-fix-dtb-and-vs.patch | 35 + 16 files changed, 7586 insertions(+), 9 deletions(-) create mode 100644 projects/Rockchip/devices/RK3566-X55-ML/linux/linux.aarch64.conf create mode 100644 projects/Rockchip/devices/RK3566-X55-ML/options create mode 100644 projects/Rockchip/packages/linux/patches/RK3566-X55-ML/001-fix-model-names.patch create mode 100644 projects/Rockchip/packages/linux/patches/RK3566-X55-ML/002-rk817-power-driver-names.patch create mode 100644 projects/Rockchip/packages/linux/patches/RK3566-X55-ML/003-v4-add-rk2023.patch create mode 100644 projects/Rockchip/packages/linux/patches/RK3566-X55-ML/004-add-rg351v.patch create mode 100644 projects/Rockchip/packages/linux/patches/RK3566-X55-ML/005-set-mac-address.patch create mode 100644 projects/Rockchip/packages/linux/patches/RK3566-X55-ML/006-v2-add-powkiddy-x55.patch create mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-X55-ML/001-v3-add_additional_boards_and_features_to_rgxx3.patch create mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-X55-ML/002-v2-add-powkiddy-x55.patch create mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-X55-ML/003-fix-dtb-and-vs.patch diff --git a/Makefile b/Makefile index df395510f8..29701435ae 100644 --- a/Makefile +++ b/Makefile @@ -62,6 +62,10 @@ RK3566-ML: PROJECT=Rockchip DEVICE=RK3566-ML ARCH=arm ./scripts/build_distro PROJECT=Rockchip DEVICE=RK3566-ML ARCH=aarch64 ./scripts/build_distro +RK3566-X55-ML: + DEVICE_ROOT=RK3566-ML PROJECT=Rockchip DEVICE=RK3566-X55-ML ARCH=arm ./scripts/build_distro + DEVICE_ROOT=RK3566-ML PROJECT=Rockchip DEVICE=RK3566-X55-ML ARCH=aarch64 ./scripts/build_distro + RK3326: unset DEVICE_ROOT PROJECT=Rockchip DEVICE=RK3326 ARCH=arm ./scripts/build_distro @@ -72,7 +76,6 @@ RK3399: PROJECT=Rockchip DEVICE=RK3399 ARCH=arm ./scripts/build_distro PROJECT=Rockchip DEVICE=RK3399 ARCH=aarch64 ./scripts/build_distro - update: PROJECT=PC DEVICE=AMD64 ARCH=x86_64 ./scripts/update_packages diff --git a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf index bb29c1bef5..721676b7f8 100644 --- a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf @@ -1,5 +1,5 @@ # CONFIG_LOCALVERSION_AUTO is not set -CONFIG_DEFAULT_HOSTNAME="" +CONFIG_DEFAULT_HOSTNAME="@DEVICENAME@" CONFIG_SYSVIPC=y CONFIG_POSIX_MQUEUE=y CONFIG_WATCH_QUEUE=y @@ -32,7 +32,7 @@ CONFIG_CGROUP_BPF=y CONFIG_NAMESPACES=y CONFIG_SCHED_AUTOGROUP=y CONFIG_RELAY=y -CONFIG_INITRAMFS_SOURCE="${BR_BINARIES_DIR}/rootfs.cpio" +CONFIG_INITRAMFS_SOURCE="@INITRAMFS_SOURCE@" CONFIG_INITRAMFS_COMPRESSION_LZO=y CONFIG_BOOT_CONFIG=y CONFIG_CC_OPTIMIZE_FOR_SIZE=y diff --git a/projects/Rockchip/devices/RK3566-X55-ML/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3566-X55-ML/linux/linux.aarch64.conf new file mode 100644 index 0000000000..721676b7f8 --- /dev/null +++ b/projects/Rockchip/devices/RK3566-X55-ML/linux/linux.aarch64.conf @@ -0,0 +1,1113 @@ +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_DEFAULT_HOSTNAME="@DEVICENAME@" +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_WATCH_QUEUE=y +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_USELIB=y +CONFIG_NO_HZ_IDLE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_BPF_SYSCALL=y +CONFIG_BPF_JIT=y +CONFIG_BPF_JIT_ALWAYS_ON=y +# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set +CONFIG_PREEMPT=y +CONFIG_IRQ_TIME_ACCOUNTING=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_MEMCG=y +CONFIG_BLK_CGROUP=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_RT_GROUP_SCHED=y +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_RDMA=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CPUSETS=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_BPF=y +CONFIG_NAMESPACES=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_RELAY=y +CONFIG_INITRAMFS_SOURCE="@INITRAMFS_SOURCE@" +CONFIG_INITRAMFS_COMPRESSION_LZO=y +CONFIG_BOOT_CONFIG=y +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_EXPERT=y +CONFIG_SGETMASK_SYSCALL=y +CONFIG_KALLSYMS_ALL=y +CONFIG_PROFILING=y +CONFIG_ARCH_ROCKCHIP=y +# CONFIG_CAVIUM_ERRATUM_22375 is not set +# CONFIG_CAVIUM_ERRATUM_23154 is not set +# CONFIG_CAVIUM_ERRATUM_27456 is not set +# CONFIG_CAVIUM_ERRATUM_30115 is not set +# CONFIG_CAVIUM_TX2_ERRATUM_219 is not set +# CONFIG_FUJITSU_ERRATUM_010001 is not set +# CONFIG_HISILICON_ERRATUM_161600802 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_1003 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_1009 is not set +# CONFIG_QCOM_QDF2400_ERRATUM_0065 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_E1041 is not set +# CONFIG_NVIDIA_CARMEL_CNP_ERRATUM is not set +# CONFIG_SOCIONEXT_SYNQUACER_PREITS is not set +CONFIG_SCHED_MC=y +CONFIG_SCHED_SMT=y +CONFIG_NR_CPUS=4 +CONFIG_ARM64_SW_TTBR0_PAN=y +CONFIG_COMPAT=y +CONFIG_ARMV8_DEPRECATED=y +CONFIG_ARM64_PMEM=y +# CONFIG_ARM64_BTI is not set +CONFIG_RANDOMIZE_BASE=y +# CONFIG_EFI is not set +CONFIG_SUSPEND_SKIP_SYNC=y +CONFIG_PM_AUTOSLEEP=y +CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y +CONFIG_ENERGY_MODEL=y +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_ARM_PSCI_CPUIDLE=y +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPUFREQ_DT=y +CONFIG_ARM_SCMI_CPUFREQ=y +CONFIG_ARCH_MMAP_RND_BITS=18 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 +# CONFIG_GCC_PLUGINS is not set +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_MAC_PARTITION=y +# CONFIG_MQ_IOSCHED_KYBER is not set +# CONFIG_IOSCHED_BFQ is not set +CONFIG_BINFMT_MISC=y +# CONFIG_SLAB_MERGE_DEFAULT is not set +# CONFIG_SLUB_CPU_PARTIAL is not set +# CONFIG_COMPAT_BRK is not set +# CONFIG_COMPACTION is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +# CONFIG_VM_EVENT_COUNTERS is not set +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_UNIX_DIAG=m +CONFIG_XFRM_USER=y +CONFIG_NET_KEY=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IPGRE=m +CONFIG_IP_MROUTE=y +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_INET_AH=y +CONFIG_INET_ESP=y +CONFIG_INET_IPCOMP=y +# CONFIG_INET_DIAG is not set +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_CUBIC=m +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_CONG_DCTCP=m +CONFIG_TCP_CONG_CDG=m +CONFIG_TCP_MD5SIG=y +# CONFIG_IPV6 is not set +CONFIG_NETFILTER=y +CONFIG_BRIDGE_NETFILTER=y +CONFIG_NETFILTER_NETLINK_QUEUE=y +CONFIG_NETFILTER_NETLINK_LOG=y +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_PROCFS=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_TIMEOUT=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NF_CT_NETLINK_TIMEOUT=m +CONFIG_NF_TABLES=m +CONFIG_NFT_CT=m +CONFIG_NFT_LOG=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_QUEUE=m +CONFIG_NFT_REJECT=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_HASH=m +CONFIG_NETFILTER_XTABLES_COMPAT=y +CONFIG_NETFILTER_XT_SET=m +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NETFILTER_XT_MATCH_CGROUP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_IPCOMP=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_L2TP=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_IP_SET=y +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPMARK=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_MAC=m +CONFIG_IP_SET_HASH_NETPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETNET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_LIST_SET=m +CONFIG_IP_VS=m +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_FO=m +CONFIG_IP_VS_OVF=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_NFCT=y +CONFIG_NF_LOG_ARP=m +CONFIG_NF_LOG_IPV4=m +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SYNPROXY=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=y +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_NF_TABLES_BRIDGE=m +CONFIG_NFT_BRIDGE_META=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_BRIDGE=y +CONFIG_VLAN_8021Q=y +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_HTB=y +CONFIG_NET_SCH_CODEL=y +CONFIG_NET_SCH_FQ_CODEL=y +CONFIG_NET_CLS_U32=y +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_CGROUP=y +CONFIG_DNS_RESOLVER=y +CONFIG_OPENVSWITCH=m +CONFIG_CGROUP_NET_PRIO=y +CONFIG_CAN=y +CONFIG_BT=m +CONFIG_BT_RFCOMM=y +CONFIG_BT_HIDP=y +CONFIG_BT_HS=y +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_ATH3K=y +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_CFG80211=m +# CONFIG_CFG80211_DEFAULT_PS is not set +# CONFIG_CFG80211_CRDA_SUPPORT is not set +CONFIG_MAC80211=m +CONFIG_MAC80211_MESH=y +CONFIG_RFKILL=m +CONFIG_RFKILL_INPUT=y +CONFIG_RFKILL_GPIO=m +# CONFIG_ETHTOOL_NETLINK is not set +CONFIG_PCI=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCIEAER=y +CONFIG_PCIE_ROCKCHIP_HOST=y +CONFIG_PCIE_ROCKCHIP_DW_HOST=y +CONFIG_UEVENT_HELPER=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_DEVTMPFS_SAFE=y +CONFIG_FW_LOADER_USER_HELPER=y +CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y +# CONFIG_ALLOW_DEV_COREDUMP is not set +CONFIG_DEBUG_DEVRES=y +CONFIG_CONNECTOR=y +CONFIG_ARM_SCMI_PROTOCOL=y +CONFIG_ARM_SCMI_POWER_CONTROL=y +CONFIG_ARM_SCPI_PROTOCOL=y +CONFIG_ARM_FFA_TRANSPORT=y +CONFIG_MTD=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_SPI_NOR=y +CONFIG_OF_OVERLAY=y +CONFIG_ZRAM=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_DRBD=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=1 +CONFIG_ATA_OVER_ETH=m +CONFIG_BLK_DEV_RBD=m +CONFIG_BLK_DEV_NVME=m +CONFIG_SRAM=y +CONFIG_EEPROM_93CX6=y +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_SPI_ATTRS=y +CONFIG_MEGARAID_SAS=m +CONFIG_SCSI_MPT2SAS=m +CONFIG_ATA=y +CONFIG_SATA_AHCI=y +CONFIG_SATA_AHCI_PLATFORM=y +CONFIG_SATA_MV=m +CONFIG_SATA_NV=m +CONFIG_SATA_PROMISE=m +CONFIG_SATA_SIL=m +CONFIG_MD=y +CONFIG_MD_LINEAR=m +CONFIG_BCACHE=m +CONFIG_BLK_DEV_DM=y +CONFIG_DM_CRYPT=m +CONFIG_DM_RAID=y +CONFIG_NETDEVICES=y +CONFIG_WIREGUARD=y +CONFIG_MACVLAN=y +CONFIG_IPVLAN=y +CONFIG_VXLAN=m +CONFIG_TUN=m +CONFIG_VETH=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_AGERE is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_CAVIUM is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +# CONFIG_NET_VENDOR_DEC is not set +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_EZCHIP is not set +# CONFIG_NET_VENDOR_HISILICON is not set +CONFIG_E100=y +CONFIG_E1000=y +CONFIG_E1000E=y +CONFIG_IGB=y +CONFIG_IXGBE=y +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_QUALCOMM is not set +# CONFIG_NET_VENDOR_RDC is not set +# CONFIG_NET_VENDOR_REALTEK is not set +# CONFIG_NET_VENDOR_RENESAS is not set +# CONFIG_NET_VENDOR_ROCKER is not set +# CONFIG_NET_VENDOR_SAMSUNG is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SMSC is not set +CONFIG_STMMAC_ETH=y +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_SYNOPSYS is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +CONFIG_ROCKCHIP_PHY=y +CONFIG_CAN_SJA1000=y +CONFIG_CAN_PLX_PCI=y +CONFIG_PPP=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPPOE=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_USB_RTL8150=y +CONFIG_USB_RTL8152=y +CONFIG_USB_USBNET=y +CONFIG_USB_NET_CDC_MBIM=y +# CONFIG_USB_NET_NET1080 is not set +CONFIG_USB_NET_RNDIS_HOST=y +# CONFIG_USB_NET_CDC_SUBSET is not set +# CONFIG_USB_NET_ZAURUS is not set +CONFIG_USB_NET_QMI_WWAN=y +CONFIG_ATH5K=m +CONFIG_ATH9K=m +CONFIG_ATH6KL=m +CONFIG_ATH6KL_USB=m +CONFIG_AR5523=m +CONFIG_ATH10K=m +CONFIG_WCN36XX=m +CONFIG_AT76C50X_USB=m +CONFIG_B43=m +CONFIG_BRCMFMAC=m +# CONFIG_BRCMFMAC_SDIO is not set +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMFMAC_PCIE=y +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBERTAS_THINFIRM=m +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m +CONFIG_MWIFIEX_USB=m +CONFIG_MT7601U=m +CONFIG_RT2X00=m +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +CONFIG_RT2800USB_UNKNOWN=y +CONFIG_RTL8180=m +CONFIG_RTL8187=m +CONFIG_RTL8192CE=m +CONFIG_RTL8192SE=m +CONFIG_RTL8192DE=m +CONFIG_RTL8723AE=m +CONFIG_RTL8723BE=m +CONFIG_RTL8188EE=m +CONFIG_RTL8192EE=m +CONFIG_RTL8821AE=m +CONFIG_RTL8XXXU=m +CONFIG_RTL8XXXU_UNTESTED=y +CONFIG_RTW88=m +CONFIG_RTW88_8822BE=m +CONFIG_RTW88_8822BU=m +CONFIG_RTW88_8822CE=m +CONFIG_RTW88_8822CU=m +CONFIG_RTW88_8723DE=m +CONFIG_RTW88_8723DS=m +CONFIG_RTW88_8723DU=m +CONFIG_RTW88_8821CE=m +CONFIG_RTW88_8821CS=m +CONFIG_RTW89=m +CONFIG_RTW89_8852AE=m +CONFIG_RTW89_8852CE=m +CONFIG_ZD1211RW=m +CONFIG_ISDN=y +CONFIG_INPUT_MATRIXKMAP=y +CONFIG_INPUT_JOYDEV=y +CONFIG_INPUT_EVDEV=y +CONFIG_KEYBOARD_ADC=y +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_GPIO_POLLED=y +# CONFIG_MOUSE_PS2 is not set +CONFIG_INPUT_JOYSTICK=y +CONFIG_JOYSTICK_ADC=y +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_INPUT_TABLET=y +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ATMEL_MXT=y +CONFIG_TOUCHSCREEN_GOODIX=y +CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=y +CONFIG_TOUCHSCREEN_USB_COMPOSITE=y +CONFIG_INPUT_MISC=y +CONFIG_INPUT_UINPUT=y +CONFIG_INPUT_PWM_VIBRA=y +CONFIG_INPUT_RK805_PWRKEY=y +CONFIG_SERIO_SERPORT=m +CONFIG_GAMEPORT=y +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_PCI is not set +CONFIG_SERIAL_8250_NR_UARTS=5 +CONFIG_SERIAL_8250_RUNTIME_UARTS=5 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DW=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_SERIAL_DEV_BUS=y +CONFIG_HW_RANDOM=y +CONFIG_TCG_TPM=y +# CONFIG_I2C_COMPAT is not set +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_DESIGNWARE_PLATFORM=y +CONFIG_I2C_RK3X=y +CONFIG_SPI=y +CONFIG_SPI_GPIO=y +CONFIG_SPI_ROCKCHIP=y +CONFIG_SPI_ROCKCHIP_SFC=y +CONFIG_SPI_MUX=y +CONFIG_SPI_SPIDEV=y +CONFIG_PINCTRL_RK805=y +CONFIG_PINCTRL_SINGLE=y +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_DWAPB=y +CONFIG_GPIO_GENERIC_PLATFORM=y +CONFIG_POWER_RESET_GPIO=y +CONFIG_POWER_RESET_GPIO_RESTART=y +CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y +CONFIG_SYSCON_REBOOT_MODE=y +CONFIG_BATTERY_CW2015=y +CONFIG_BATTERY_SBS=y +CONFIG_CHARGER_GPIO=y +CONFIG_CHARGER_BQ24735=y +CONFIG_CHARGER_RK817=y +CONFIG_SENSORS_PWM_FAN=y +CONFIG_THERMAL=y +CONFIG_THERMAL_WRITABLE_TRIPS=y +CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR=y +CONFIG_THERMAL_GOV_FAIR_SHARE=y +CONFIG_THERMAL_GOV_STEP_WISE=y +CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y +CONFIG_CPU_THERMAL=y +CONFIG_DEVFREQ_THERMAL=y +CONFIG_ROCKCHIP_THERMAL=y +CONFIG_GENERIC_ADC_THERMAL=y +CONFIG_WATCHDOG=y +CONFIG_DW_WATCHDOG=y +CONFIG_SSB=y +CONFIG_BCMA=y +CONFIG_MFD_RK8XX_I2C=y +CONFIG_MFD_TPS6586X=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_DEBUG=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_VIRTUAL_CONSUMER=y +CONFIG_REGULATOR_USERSPACE_CONSUMER=y +CONFIG_REGULATOR_ACT8865=y +CONFIG_REGULATOR_ARM_SCMI=y +CONFIG_REGULATOR_FAN53555=y +CONFIG_REGULATOR_GPIO=y +CONFIG_REGULATOR_PWM=y +CONFIG_REGULATOR_RK808=y +CONFIG_REGULATOR_TPS6586X=y +CONFIG_REGULATOR_VCTRL=y +CONFIG_RC_CORE=y +CONFIG_LIRC=y +CONFIG_RC_DECODERS=y +CONFIG_IR_JVC_DECODER=y +CONFIG_IR_MCE_KBD_DECODER=y +CONFIG_IR_NEC_DECODER=y +CONFIG_IR_RC5_DECODER=y +CONFIG_IR_RC6_DECODER=y +CONFIG_IR_SANYO_DECODER=y +CONFIG_IR_SHARP_DECODER=y +CONFIG_IR_SONY_DECODER=y +CONFIG_IR_XMP_DECODER=y +CONFIG_RC_DEVICES=y +CONFIG_IR_GPIO_CIR=y +CONFIG_MEDIA_CEC_RC=y +CONFIG_MEDIA_CEC_SUPPORT=y +CONFIG_USB_PULSE8_CEC=m +CONFIG_USB_RAINSHADOW_CEC=m +CONFIG_MEDIA_SUPPORT=y +CONFIG_MEDIA_SUPPORT_FILTER=y +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +CONFIG_MEDIA_PLATFORM_SUPPORT=y +CONFIG_MEDIA_TEST_SUPPORT=y +CONFIG_DVB_MAX_ADAPTERS=8 +# CONFIG_DVB_DYNAMIC_MINORS is not set +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_VIDEO_USBTV=m +CONFIG_USB_VIDEO_CLASS=y +# CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV is not set +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m +CONFIG_DVB_AS102=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +CONFIG_DVB_USB_V2=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_AF9035=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_AZ6007=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_DVBSKY=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_USB=y +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_DIBUSB_MB=m +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_USB_AIRSPY=m +CONFIG_USB_HACKRF=m +CONFIG_USB_MSI2500=m +CONFIG_MEDIA_PCI_SUPPORT=y +CONFIG_VIDEO_CX23885=m +CONFIG_VIDEO_CX25821=m +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_DVB_PLATFORM_DRIVERS=y +CONFIG_V4L_MEM2MEM_DRIVERS=y +CONFIG_VIDEO_ROCKCHIP_RGA=y +CONFIG_VIDEO_HANTRO=y +# CONFIG_VIDEO_IR_I2C is not set +CONFIG_VIDEO_IMX219=y +CONFIG_VIDEO_OV5645=y +CONFIG_CXD2880_SPI_DRV=m +CONFIG_DVB_ASCOT2E=m +CONFIG_DVB_HELENE=m +CONFIG_DVB_HORUS3A=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_LGS8GL5=m +CONFIG_DVB_LNBH25=m +CONFIG_DVB_LNBH29=m +CONFIG_DVB_TDA665x=m +CONFIG_DVB_CXD2099=m +CONFIG_DRM=y +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_MALI_DISPLAY=y +CONFIG_DRM_ROCKCHIP=y +CONFIG_ROCKCHIP_VOP2=y +CONFIG_ROCKCHIP_DW_HDMI=y +CONFIG_ROCKCHIP_DW_MIPI_DSI=y +CONFIG_DRM_PANEL_ELIDA_KD35T133=y +CONFIG_DRM_PANEL_HIMAX_HX8394=y +CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=y +CONFIG_DRM_PANEL_NEWVISION_NV3051D=y +CONFIG_DRM_PANEL_SITRONIX_ST7701=y +CONFIG_DRM_PANEL_SITRONIX_ST7703=y +CONFIG_DRM_DISPLAY_CONNECTOR=y +CONFIG_DRM_DW_HDMI_CEC=y +CONFIG_DRM_PANEL_MIPI_DBI=y +CONFIG_DRM_PANFROST=y +CONFIG_FB=y +CONFIG_FIRMWARE_EDID=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_BACKLIGHT_PWM=y +CONFIG_BACKLIGHT_LED=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_HRTIMER=y +CONFIG_SND_DYNAMIC_MINORS=y +# CONFIG_SND_SUPPORT_OLD_API is not set +# CONFIG_SND_VERBOSE_PROCFS is not set +CONFIG_SND_VERBOSE_PRINTK=y +CONFIG_SND_SEQUENCER=y +CONFIG_SND_SEQ_DUMMY=y +# CONFIG_SND_DRIVERS is not set +# CONFIG_SND_PCI is not set +# CONFIG_SND_SPI is not set +CONFIG_SND_USB_AUDIO=y +CONFIG_SND_SOC=y +CONFIG_SND_SOC_FSL_SAI=y +CONFIG_SND_SOC_ROCKCHIP=y +CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=y +CONFIG_SND_SOC_ROCKCHIP_PDM=y +CONFIG_SND_SOC_ROCKCHIP_SPDIF=y +CONFIG_SND_SOC_RK3288_HDMI_ANALOG=y +CONFIG_SND_SOC_ES8316=y +CONFIG_SND_SOC_MAX98090=y +CONFIG_SND_SOC_RK817=y +CONFIG_SND_SOC_SIMPLE_AMPLIFIER=y +CONFIG_SND_SOC_SPDIF=y +CONFIG_SND_SOC_TS3A227E=y +CONFIG_SND_SIMPLE_CARD=y +CONFIG_SND_AUDIO_GRAPH_CARD=y +CONFIG_SND_AUDIO_GRAPH_CARD2=y +CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE=y +CONFIG_SND_TEST_COMPONENT=y +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HIDRAW=y +CONFIG_UHID=y +CONFIG_HID_A4TECH=y +CONFIG_HID_ACRUX=y +CONFIG_HID_APPLE=y +CONFIG_HID_APPLEIR=y +CONFIG_HID_AUREAL=y +CONFIG_HID_BELKIN=y +CONFIG_HID_BETOP_FF=y +CONFIG_HID_CHERRY=y +CONFIG_HID_CHICONY=y +CONFIG_HID_CORSAIR=y +CONFIG_HID_PRODIKEYS=y +CONFIG_HID_CP2112=y +CONFIG_HID_CYPRESS=y +CONFIG_HID_DRAGONRISE=y +CONFIG_DRAGONRISE_FF=y +CONFIG_HID_EMS_FF=y +CONFIG_HID_ELECOM=y +CONFIG_HID_ELO=y +CONFIG_HID_EZKEY=y +CONFIG_HID_GEMBIRD=y +CONFIG_HID_GFRM=y +CONFIG_HID_HOLTEK=y +CONFIG_HOLTEK_FF=y +CONFIG_HID_GT683R=y +CONFIG_HID_KEYTOUCH=y +CONFIG_HID_KYE=y +CONFIG_HID_UCLOGIC=y +CONFIG_HID_WALTOP=y +CONFIG_HID_GYRATION=y +CONFIG_HID_ICADE=y +CONFIG_HID_TWINHAN=y +CONFIG_HID_KENSINGTON=y +CONFIG_HID_LCPOWER=y +CONFIG_HID_LENOVO=y +CONFIG_HID_LOGITECH=y +CONFIG_HID_LOGITECH_DJ=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGIG940_FF=y +CONFIG_HID_MAGICMOUSE=y +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y +CONFIG_HID_MULTITOUCH=y +CONFIG_HID_NTRIG=y +CONFIG_HID_ORTEK=y +CONFIG_HID_PANTHERLORD=y +CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PENMOUNT=y +CONFIG_HID_PETALYNX=y +CONFIG_HID_PLANTRONICS=y +CONFIG_HID_PRIMAX=y +CONFIG_HID_ROCCAT=y +CONFIG_HID_SAITEK=y +CONFIG_HID_SAMSUNG=y +CONFIG_HID_SONY=y +CONFIG_HID_SPEEDLINK=y +CONFIG_HID_STEELSERIES=y +CONFIG_HID_SUNPLUS=y +CONFIG_HID_RMI=y +CONFIG_HID_GREENASIA=y +CONFIG_GREENASIA_FF=y +CONFIG_HID_SMARTJOYPLUS=y +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_HID_TIVO=y +CONFIG_HID_TOPSEED=y +CONFIG_HID_THINGM=y +CONFIG_HID_THRUSTMASTER=y +CONFIG_THRUSTMASTER_FF=y +CONFIG_HID_WACOM=y +CONFIG_HID_WIIMOTE=y +CONFIG_HID_XINMO=y +CONFIG_HID_ZEROPLUS=y +CONFIG_ZEROPLUS_FF=y +CONFIG_HID_ZYDACRON=y +CONFIG_HID_SENSOR_HUB=y +CONFIG_HID_SENSOR_CUSTOM_SENSOR=y +CONFIG_HID_ALPS=y +CONFIG_USB_HIDDEV=y +CONFIG_I2C_HID_OF_GOODIX=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +# CONFIG_USB_DEFAULT_PERSIST is not set +CONFIG_USB_OTG=y +CONFIG_USB_OTG_PRODUCTLIST=y +CONFIG_USB_OTG_FSM=y +CONFIG_USB_LEDS_TRIGGER_USBPORT=y +CONFIG_USB_MON=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_HCD=y +# CONFIG_USB_OHCI_HCD_PCI is not set +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_ACM=y +CONFIG_USB_STORAGE=y +CONFIG_USB_STORAGE_REALTEK=y +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=y +CONFIG_USB_UAS=y +CONFIG_USB_DWC3=y +CONFIG_USB_DWC2=y +CONFIG_USB_SERIAL=y +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_CH341=y +CONFIG_USB_SERIAL_CP210X=y +CONFIG_USB_SERIAL_FTDI_SIO=y +CONFIG_USB_SERIAL_KEYSPAN=y +CONFIG_USB_SERIAL_PL2303=y +CONFIG_USB_SERIAL_OTI6858=y +CONFIG_USB_SERIAL_QUALCOMM=y +CONFIG_USB_SERIAL_SIERRAWIRELESS=y +CONFIG_USB_SERIAL_OPTION=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_DEBUG_FILES=y +CONFIG_USB_GADGET_VBUS_DRAW=500 +CONFIG_U_SERIAL_CONSOLE=y +CONFIG_USB_CONFIGFS=y +CONFIG_USB_CONFIGFS_ACM=y +CONFIG_USB_CONFIGFS_MASS_STORAGE=y +CONFIG_USB_CONFIGFS_F_FS=y +CONFIG_USB_CONFIGFS_F_UVC=y +CONFIG_USB_GADGETFS=m +CONFIG_USB_FUNCTIONFS=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_G_SERIAL=m +CONFIG_TYPEC=y +CONFIG_TYPEC_TCPM=y +CONFIG_TYPEC_FUSB302=y +CONFIG_TYPEC_DP_ALTMODE=y +CONFIG_MMC=y +CONFIG_MMC_BLOCK_MINORS=32 +CONFIG_MMC_TEST=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_OF_DWCMSHC=y +CONFIG_MMC_DW=y +CONFIG_MMC_DW_ROCKCHIP=y +CONFIG_MMC_HSQ=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_PWM=y +CONFIG_LEDS_IS31FL32XX=y +CONFIG_LEDS_SYSCON=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_ONESHOT=y +CONFIG_LEDS_TRIGGER_DISK=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y +CONFIG_RTC_CLASS=y +# CONFIG_RTC_SYSTOHC is not set +# CONFIG_RTC_INTF_PROC is not set +# CONFIG_RTC_INTF_DEV is not set +CONFIG_RTC_DRV_HYM8563=y +CONFIG_RTC_DRV_RK808=y +CONFIG_DMADEVICES=y +CONFIG_PL330_DMA=y +CONFIG_UDMABUF=y +CONFIG_DMABUF_HEAPS=y +CONFIG_DMABUF_HEAPS_SYSTEM=y +# CONFIG_VIRTIO_MENU is not set +# CONFIG_VHOST_MENU is not set +CONFIG_STAGING=y +CONFIG_RTL8723BS=m +CONFIG_R8712U=m +CONFIG_STAGING_MEDIA=y +CONFIG_VIDEO_ROCKCHIP_VDEC=y +CONFIG_CHROME_PLATFORMS=y +# CONFIG_SURFACE_PLATFORMS is not set +CONFIG_COMMON_CLK_RK808=y +CONFIG_COMMON_CLK_SCMI=y +CONFIG_COMMON_CLK_SCPI=y +CONFIG_COMMON_CLK_XGENE=y +CONFIG_COMMON_CLK_PWM=y +CONFIG_COMMON_CLK_FIXED_MMIO=y +# CONFIG_CLK_RK3308 is not set +# CONFIG_CLK_RK3328 is not set +# CONFIG_CLK_RK3368 is not set +# CONFIG_CLK_RK3399 is not set +# CONFIG_FSL_ERRATUM_A008585 is not set +# CONFIG_HISILICON_ERRATUM_161010101 is not set +# CONFIG_ARM64_ERRATUM_858921 is not set +CONFIG_MAILBOX=y +CONFIG_ARM_MHU=y +CONFIG_PLATFORM_MHU=y +CONFIG_ROCKCHIP_MBOX=y +CONFIG_ROCKCHIP_IOMMU=y +CONFIG_ARM_SMMU=y +CONFIG_ARM_SMMU_V3=y +CONFIG_ROCKCHIP_IODOMAIN=y +CONFIG_ROCKCHIP_PM_DOMAINS=y +CONFIG_DEVFREQ_GOV_PERFORMANCE=y +CONFIG_DEVFREQ_GOV_POWERSAVE=y +CONFIG_ARM_RK3399_DMC_DEVFREQ=y +CONFIG_MEMORY=y +CONFIG_IIO=y +CONFIG_IIO_BUFFER_HW_CONSUMER=y +CONFIG_IIO_SW_DEVICE=y +CONFIG_IIO_SW_TRIGGER=y +CONFIG_IIO_TRIGGERED_EVENT=y +CONFIG_ROCKCHIP_SARADC=y +CONFIG_SENSORS_ISL29018=y +CONFIG_SENSORS_TSL2563=y +CONFIG_TSL2583=y +CONFIG_IIO_MUX=y +CONFIG_IIO_HRTIMER_TRIGGER=y +CONFIG_IIO_SYSFS_TRIGGER=y +CONFIG_PWM=y +CONFIG_PWM_ROCKCHIP=y +CONFIG_PHY_ROCKCHIP_DP=y +CONFIG_PHY_ROCKCHIP_DPHY_RX0=y +CONFIG_PHY_ROCKCHIP_EMMC=y +CONFIG_PHY_ROCKCHIP_INNO_HDMI=y +CONFIG_PHY_ROCKCHIP_INNO_USB2=y +CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY=y +CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y +CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=y +CONFIG_PHY_ROCKCHIP_PCIE=y +CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y +CONFIG_PHY_ROCKCHIP_TYPEC=y +CONFIG_PHY_ROCKCHIP_USB=y +CONFIG_ARM_SMMU_V3_PMU=y +CONFIG_MUX_GPIO=y +CONFIG_MUX_MMIO=y +CONFIG_EXT4_FS=y +# CONFIG_EXT4_USE_FOR_EXT2 is not set +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_XFS_FS=y +# CONFIG_DNOTIFY is not set +CONFIG_AUTOFS_FS=y +CONFIG_FUSE_FS=y +CONFIG_OVERLAY_FS=y +CONFIG_FSCACHE=y +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_IOCHARSET="ascii" +CONFIG_EXFAT_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SQUASHFS_ZSTD=y +CONFIG_PSTORE=y +CONFIG_NLS_DEFAULT="utf-8" +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_UTF8=y +CONFIG_SECURITY=y +CONFIG_SECURITY_NETWORK=y +CONFIG_HARDENED_USERCOPY=y +CONFIG_STATIC_USERMODEHELPER=y +CONFIG_LSM="selinux,integrity" +CONFIG_INIT_STACK_NONE=y +CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y +CONFIG_INIT_ON_FREE_DEFAULT_ON=y +CONFIG_CRYPTO_USER=y +CONFIG_CRYPTO_PCRYPT=y +CONFIG_CRYPTO_CRYPTD=y +CONFIG_CRYPTO_ECDH=y +CONFIG_CRYPTO_TWOFISH=y +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_CTS=y +CONFIG_CRYPTO_XTS=y +CONFIG_CRYPTO_CHACHA20POLY1305=y +CONFIG_CRYPTO_CCM=y +CONFIG_CRYPTO_ESSIV=y +CONFIG_CRYPTO_CMAC=y +CONFIG_CRYPTO_XCBC=y +CONFIG_CRYPTO_CRC32=y +CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_LZ4=y +CONFIG_CRYPTO_LZ4HC=y +CONFIG_CRYPTO_ZSTD=y +CONFIG_CRYPTO_ANSI_CPRNG=y +CONFIG_CRYPTO_USER_API_HASH=y +CONFIG_CRYPTO_USER_API_SKCIPHER=y +CONFIG_CRYPTO_USER_API_RNG=y +CONFIG_CRYPTO_USER_API_AEAD=y +CONFIG_CRYPTO_STATS=y +CONFIG_CRYPTO_NHPOLY1305_NEON=y +CONFIG_CRYPTO_GHASH_ARM64_CE=y +CONFIG_CRYPTO_SHA1_ARM64_CE=y +CONFIG_CRYPTO_SHA2_ARM64_CE=y +CONFIG_CRYPTO_SHA512_ARM64_CE=y +CONFIG_CRYPTO_AES_ARM64=y +CONFIG_CRYPTO_AES_ARM64_CE_BLK=y +CONFIG_CRYPTO_AES_ARM64_BS=y +CONFIG_CRYPTO_AES_ARM64_CE_CCM=y +CONFIG_CRYPTO_DEV_ROCKCHIP=y +CONFIG_CORDIC=y +CONFIG_CRC_CCITT=y +CONFIG_CRC_T10DIF=y +CONFIG_CRC_ITU_T=y +CONFIG_CRC7=y +# CONFIG_XZ_DEC_X86 is not set +# CONFIG_XZ_DEC_POWERPC is not set +# CONFIG_XZ_DEC_SPARC is not set +CONFIG_PRINTK_TIME=y +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7 +CONFIG_DYNAMIC_DEBUG=y +# CONFIG_SYMBOLIC_ERRNAME is not set +# CONFIG_DEBUG_MISC is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0 +CONFIG_DEBUG_FS=y +# CONFIG_SLUB_DEBUG is not set +CONFIG_PANIC_TIMEOUT=1 +CONFIG_DETECT_HUNG_TASK=y +CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y +# CONFIG_SCHED_DEBUG is not set +CONFIG_SCHEDSTATS=y +CONFIG_DEBUG_SPINLOCK=y +CONFIG_STACKTRACE=y +CONFIG_DEBUG_CREDENTIALS=y +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=20 +# CONFIG_RCU_TRACE is not set +# CONFIG_FTRACE is not set +# CONFIG_STRICT_DEVMEM is not set +# CONFIG_RUNTIME_TESTING_MENU is not set diff --git a/projects/Rockchip/devices/RK3566-X55-ML/options b/projects/Rockchip/devices/RK3566-X55-ML/options new file mode 100644 index 0000000000..f8690886db --- /dev/null +++ b/projects/Rockchip/devices/RK3566-X55-ML/options @@ -0,0 +1,161 @@ +################################################################################ +# setup device defaults +################################################################################ + + # The TARGET_CPU variable controls which processor should be targeted for + # generated code. + case ${TARGET_ARCH} in + aarch64) + TARGET_KERNEL_ARCH="arm64" + TARGET_PATCH_ARCH="aarch64" + TARGET_CPU="cortex-a55" + TARGET_CPU_FLAGS="+crc+crypto+fp+simd" + TARGET_FPU="fp-armv8" + TARGET_FLOAT="hard" + TARGET_FEATURES="64bit" + ;; + arm) + TARGET_KERNEL_ARCH="arm64" + TARGET_PATCH_ARCH="aarch64" + TARGET_CPU="cortex-a55" + TARGET_CPU_FLAGS="+crc" + TARGET_FPU="neon-fp-armv8" + TARGET_FLOAT="hard" + TARGET_FEATURES="32bit" + ;; + esac + + # Kernel target + DEVICE_NAME="RK3566" + KERNEL_TARGET="Image" + BOOTLOADER="u-boot" + PARTITION_TABLE="gpt" + UBOOT_LABEL="uboot" + TRUST_LABEL="trust" + DEVICE_DTB=("rk3566-powkiddy-x55") + UBOOT_DTB="rk3566" + UBOOT_CONFIG="powkiddy-x55-rk3566_defconfig" + PKG_SOC="rk3568" + PKG_DATAFILE="${PKG_RKBIN}/bin/rk35/rk3568_ddr_1056MHz_v1.16.bin" + PKG_LOADER="${PKG_RKBIN}/bin/rk35/rk356x_spl_v1.12.bin" + PKG_BL31="${PKG_RKBIN}/bin/rk35/rk3568_bl31_v1.42.elf" + PKG_LOAD_ADDR="0x0a100000" + BOOT_INI=false + EXT_LINUX_CONF=true + + # Additional kernel make parameters (for example to specify the u-boot loadaddress) + KERNEL_MAKE_EXTRACMD=" $(for DTB in "${DEVICE_DTB[@]}"; do echo -n "rockchip/${DTB}.dtb "; done)" + KERNEL_EXTRA_DEPENDS_TARGET="zstd libcap libtraceevent" + + # Define the CPU + HW_CPU="Rockchip RK3566" + + # Mali GPU family + MALI_FAMILY="bifrost-g52" + # MALI_VERSION="g2p0" + # OPENGLES="libmali" + VULKAN_SUPPORT="" + + # OpenGL(X) implementation to use (mesa / no) + OPENGL="mesa" + + # OpenGL-ES implementation to use (mesa / no) + OPENGLES="mesa" + + GRAPHIC_DRIVERS="panfrost" + + # Displayserver to use (weston / x11 / no) + DISPLAYSERVER="wl" + + # Windowmanager to use (fluxbox / weston / no) + WINDOWMANAGER="weston" + + # debug tty path + DEBUG_TTY="/dev/ttyS2" + + # kernel serial console + #EXTRA_CMDLINE="quiet rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20 initcall_blacklist=uvc_init log_buf_len=1M" + EXTRA_CMDLINE="rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty1 ssh consoleblank=0 systemd.show_status=0 loglevel=8 panic=20 nopkmute" + + # additional packages to install + # ADDITIONAL_PACKAGES="" + + # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) + # Space separated list is supported, + # e.g. FIRMWARE="dvb-firmware misc-firmware wlan-firmware" + FIRMWARE="misc-firmware" + + # additional drivers to install: + # for a list of additional drivers see packages/linux-drivers + # Space separated list is supported, + # e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" + ADDITIONAL_DRIVERS="jelos-gamepad" + + # build and install driver addons (yes / no) + DRIVER_ADDONS_SUPPORT="no" + + # driver addons to install: + # for a list of additinoal drivers see packages/linux-driver-addons + # Space separated list is supported, + DRIVER_ADDONS="" #dvb-latest + + # build and install bluetooth support (yes / no) + BLUETOOTH_SUPPORT="yes" + + # build and install Avahi (Zeroconf) daemon (yes / no) + AVAHI_DAEMON="no" + + # build with NFS support (mounting nfs shares via the OS) (yes / no) + NFS_SUPPORT="no" + + # build with Samba Client support (mounting samba shares via the OS) (yes / no) + SAMBA_SUPPORT="no" + + # build and install Samba Server (yes / no) + SAMBA_SERVER="yes" + + # build and install SFTP Server (yes / no) + SFTP_SERVER="yes" + + # build and install OpenVPN support (yes / no) + OPENVPN_SUPPORT="no" + WIREGUARD_SUPPORT="no" + + # build and install ZeroTier support (yes / no) + ZEROTIER_SUPPORT="yes" + + # build and install diskmounter support (udevil) + # this service provide auto mounting support for external drives in the + # mediacenter also automount internally drives at boottime via udev (yes / no) + UDEVIL="yes" + + # build and install exFAT fuse support (yes / no) + EXFAT="yes" + + # build and install NTFS-3G fuse support (yes / no) + NTFS3G="no" + + # build and install hfs filesystem utilities (yes / no) + HFSTOOLS="no" + + # Support for partitioning and formating disks in initramfs (yes / no) + # This adds support for parted and mkfs.ext3/4 to initramfs for OEM usage + INITRAMFS_PARTED_SUPPORT="no" + + # build with swap support (yes / no) + SWAP_SUPPORT="yes" + + # swap support enabled per default (yes / no) + SWAP_ENABLED_DEFAULT="yes" + + # swapfile size if SWAP_SUPPORT=yes in MB + SWAPFILESIZE="384" + + # cron support (yes / no) + CRON_SUPPORT="no" + + # Settings package name - blank if not required + DISTRO_PKG_SETTINGS="" + + # htop tool (yes / no) + HTOP_TOOL="yes" diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index ce3c5fbc6d..fbba2438a8 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -23,16 +23,16 @@ case ${DEVICE} in GET_HANDLER_SUPPORT="git" PKG_GIT_CLONE_BRANCH="main" ;; + *ML) + PKG_VERSION="6.7-rc6" + PKG_URL="https://git.kernel.org/torvalds/t/${PKG_NAME}-${PKG_VERSION}.tar.gz" + ;; RK3566) PKG_URL="${PKG_SITE}/rk356x-kernel.git" PKG_VERSION="d346337a7b3e3e7e0d12dbdcc4fc62efc86cbda3" GET_HANDLER_SUPPORT="git" PKG_GIT_CLONE_BRANCH="main" ;; - *ML) - PKG_VERSION="6.7-rc6" - PKG_URL="https://git.kernel.org/torvalds/t/${PKG_NAME}-${PKG_VERSION}.tar.gz" - ;; *X55) PKG_URL="${PKG_SITE}/rk3566-x55-kernel.git" PKG_VERSION="9b92751b8fe21f9326d1a54dd5f675965a12d6e1" diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/001-fix-model-names.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/001-fix-model-names.patch new file mode 100644 index 0000000000..aac0fbffaa --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/001-fix-model-names.patch @@ -0,0 +1,60 @@ +diff -rupN linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353p.dts linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353p.dts +--- linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353p.dts 2023-10-03 23:48:15.144113656 +0000 ++++ linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353p.dts 2023-10-03 23:48:55.102040451 +0000 +@@ -8,7 +8,7 @@ + #include "rk3566-anbernic-rg353x.dtsi" + + / { +- model = "RG353P"; ++ model = "Anbernic RG353P"; + compatible = "anbernic,rg353p", "rockchip,rk3566"; + + aliases { +diff -rupN linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353ps.dts linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353ps.dts +--- linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353ps.dts 2023-10-03 23:48:15.144113656 +0000 ++++ linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353ps.dts 2023-10-03 23:49:18.163158275 +0000 +@@ -8,7 +8,7 @@ + #include "rk3566-anbernic-rg353x.dtsi" + + / { +- model = "RG353PS"; ++ model = "Anbernic RG353PS"; + compatible = "anbernic,rg353ps", "rockchip,rk3566"; + + aliases { +diff -rupN linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353v.dts linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353v.dts +--- linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353v.dts 2023-10-03 23:48:15.144113656 +0000 ++++ linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353v.dts 2023-10-03 23:49:09.254725978 +0000 +@@ -8,7 +8,7 @@ + #include "rk3566-anbernic-rg353x.dtsi" + + / { +- model = "RG353V"; ++ model = "Anbernic RG353V"; + compatible = "anbernic,rg353v", "rockchip,rk3566"; + + aliases { +diff -rupN linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353vs.dts linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353vs.dts +--- linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353vs.dts 2023-10-03 23:48:15.144113656 +0000 ++++ linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353vs.dts 2023-10-03 23:49:30.947779716 +0000 +@@ -8,7 +8,7 @@ + #include "rk3566-anbernic-rg353x.dtsi" + + / { +- model = "RG353VS"; ++ model = "Anbernic RG353VS"; + compatible = "anbernic,rg353vs", "rockchip,rk3566"; + + aliases { +diff -rupN linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg503.dts linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg503.dts +--- linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg503.dts 2023-10-03 23:48:15.144113656 +0000 ++++ linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg503.dts 2023-10-03 23:49:41.912313646 +0000 +@@ -8,7 +8,7 @@ + #include "rk3566-anbernic-rgxx3.dtsi" + + / { +- model = "RG503"; ++ model = "Anbernic RG503"; + compatible = "anbernic,rg503", "rockchip,rk3566"; + + aliases { diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/002-rk817-power-driver-names.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/002-rk817-power-driver-names.patch new file mode 100644 index 0000000000..265df75ad8 --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/002-rk817-power-driver-names.patch @@ -0,0 +1,21 @@ +diff -rupN linux-6.6-orig/drivers/power/supply/rk817_charger.c linux-6.6/drivers/power/supply/rk817_charger.c +--- linux-6.6-orig/drivers/power/supply/rk817_charger.c 2023-10-30 02:31:08.000000000 +0000 ++++ linux-6.6/drivers/power/supply/rk817_charger.c 2023-11-22 19:43:15.957223087 +0000 +@@ -679,7 +679,7 @@ static enum power_supply_usb_type rk817_ + }; + + static const struct power_supply_desc rk817_bat_desc = { +- .name = "rk817-battery", ++ .name = "battery", + .type = POWER_SUPPLY_TYPE_BATTERY, + .properties = rk817_bat_props, + .num_properties = ARRAY_SIZE(rk817_bat_props), +@@ -687,7 +687,7 @@ static const struct power_supply_desc rk + }; + + static const struct power_supply_desc rk817_chg_desc = { +- .name = "rk817-charger", ++ .name = "charger", + .type = POWER_SUPPLY_TYPE_USB, + .usb_types = rk817_usb_type, + .num_usb_types = ARRAY_SIZE(rk817_usb_type), diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/003-v4-add-rk2023.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/003-v4-add-rk2023.patch new file mode 100644 index 0000000000..707113aa95 --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/003-v4-add-rk2023.patch @@ -0,0 +1,1495 @@ +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, + sebastian.reichel@collabora.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, + heiko@sntech.de, conor+dt@kernel.org, + krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, + Chris Morgan +Subject: [PATCH V4 0/6] rockchip: Add Powkiddy RK2023 +Date: Fri, 17 Nov 2023 14:25:30 -0600 [thread overview] +Message-ID: <20231117202536.1387815-1-macroalpha82@gmail.com> (raw) + +From: Chris Morgan + +Add support for the Powkiddy RK2023, which is extremely similar to +existing Powkiddy RGB30 device. + +Changes since V3: + - Corrected commit subject lines. + +Changes since V2: + - Split "hold panel in reset" to a separate patch for the NV3051D. + - Changed replaced common include to a new Powkiddy specific include + to better reflect the similarity of these two devices (and so as + to not have to delete so many nodes). + +Changes since V1: + - Necessary clock changes have been accepted to mainline, so removed + from this series. + https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git/commit/?id=f1db0865b4628d5e2e85347350c077a71f0629d2 + - Combined Powkiddy RK3566 devices in devicetree documentation. + Dropped ack from binding as this change is vastly different than + the previous update. + - Updated panel driver to hold panel in reset status after unprepare. + +Chris Morgan (6): + dt-bindings: display: panel: Update NewVision NV3051D compatibles + drm/panel: nv3051d: Hold panel in reset for unprepare + nv3051d: Add Powkiddy RK2023 Panel Support + dt-bindings: arm: rockchip: Add Powkiddy RK2023 + arm64: dts: rockchip: Update powkiddy,rgb30 include to rk2023 DTSI + arm: dts: rockchip: Add Powkiddy RK2023 + + .../devicetree/bindings/arm/rockchip.yaml | 6 +- + .../display/panel/newvision,nv3051d.yaml | 2 +- + arch/arm64/boot/dts/rockchip/Makefile | 1 + + .../dts/rockchip/rk3566-powkiddy-rgb30.dts | 154 +-- + .../dts/rockchip/rk3566-powkiddy-rk2023.dts | 38 + + .../dts/rockchip/rk3566-powkiddy-rk2023.dtsi | 875 ++++++++++++++++++ + .../gpu/drm/panel/panel-newvision-nv3051d.c | 57 +- + 7 files changed, 981 insertions(+), 152 deletions(-) + create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts + create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi + +-- +2.34.1 +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, + sebastian.reichel@collabora.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, + heiko@sntech.de, conor+dt@kernel.org, + krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, + Chris Morgan , + Krzysztof Kozlowski +Subject: [PATCH V4 1/6] dt-bindings: display: nv3051d: Update NewVision NV3051D compatibles +Date: Fri, 17 Nov 2023 14:25:31 -0600 [thread overview] +Message-ID: <20231117202536.1387815-2-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Update the NewVision NV3051D compatible strings by adding a new panel, +the powkiddy,rk2023-panel, and removing another entry, the +anbernic,rg353v-panel. + +The rk2023-panel is similar to the rg353p-panel but has slightly +different timings so it needs a new string. + +The rg353v-panel is duplicate to the rg353p-panel, so remove it. No +current devices use it and changes to the driver mean it is no longer +valid as a compatible string. + +Signed-off-by: Chris Morgan +Acked-by: Krzysztof Kozlowski +--- + .../devicetree/bindings/display/panel/newvision,nv3051d.yaml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Documentation/devicetree/bindings/display/panel/newvision,nv3051d.yaml b/Documentation/devicetree/bindings/display/panel/newvision,nv3051d.yaml +index cce775a87f87..7a634fbc465e 100644 +--- a/Documentation/devicetree/bindings/display/panel/newvision,nv3051d.yaml ++++ b/Documentation/devicetree/bindings/display/panel/newvision,nv3051d.yaml +@@ -21,7 +21,7 @@ properties: + - enum: + - anbernic,rg351v-panel + - anbernic,rg353p-panel +- - anbernic,rg353v-panel ++ - powkiddy,rk2023-panel + - const: newvision,nv3051d + + reg: true +-- +2.34.1 + +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, + sebastian.reichel@collabora.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, + heiko@sntech.de, conor+dt@kernel.org, + krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, + Chris Morgan , + Jessica Zhang +Subject: [PATCH V4 2/6] drm/panel: nv3051d: Hold panel in reset for unprepare +Date: Fri, 17 Nov 2023 14:25:32 -0600 [thread overview] +Message-ID: <20231117202536.1387815-3-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Improve the panel's ability to restore from suspend by holding the +panel in suspend after unprepare. + +Fixes: b1d39f0f4264 ("drm/panel: Add NewVision NV3051D MIPI-DSI LCD panel") +Signed-off-by: Chris Morgan +Reviewed-by: Jessica Zhang +--- + drivers/gpu/drm/panel/panel-newvision-nv3051d.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c +index 79de6c886292..c44c6945662f 100644 +--- a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c ++++ b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c +@@ -261,6 +261,8 @@ static int panel_nv3051d_unprepare(struct drm_panel *panel) + + usleep_range(10000, 15000); + ++ gpiod_set_value_cansleep(ctx->reset_gpio, 1); ++ + regulator_disable(ctx->vdd); + + return 0; +-- +2.34.1 + +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, + sebastian.reichel@collabora.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, + heiko@sntech.de, conor+dt@kernel.org, + krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, + Chris Morgan , + Jessica Zhang +Subject: [PATCH V4 3/6] drm/panel: nv3051d: Add Powkiddy RK2023 Panel Support +Date: Fri, 17 Nov 2023 14:25:33 -0600 [thread overview] +Message-ID: <20231117202536.1387815-4-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Refactor the driver to add support for the powkiddy,rk2023-panel +panel. This panel is extremely similar to the rg353p-panel but +requires a smaller vertical back porch and isn't as tolerant of +higher speeds. Note that while all of these panels are identical in +size (70x57) it is possible future panels may not be. + +Tested on my RG351V, RG353P, RG353V, and RK2023. + +Signed-off-by: Chris Morgan +Reviewed-by: Jessica Zhang +--- + .../gpu/drm/panel/panel-newvision-nv3051d.c | 55 +++++++++++++++---- + 1 file changed, 44 insertions(+), 11 deletions(-) + +diff --git a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c +index c44c6945662f..94d89ffd596b 100644 +--- a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c ++++ b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c +@@ -28,6 +28,7 @@ struct nv3051d_panel_info { + unsigned int num_modes; + u16 width_mm, height_mm; + u32 bus_flags; ++ u32 mode_flags; + }; + + struct panel_nv3051d { +@@ -387,15 +388,7 @@ static int panel_nv3051d_probe(struct mipi_dsi_device *dsi) + + dsi->lanes = 4; + dsi->format = MIPI_DSI_FMT_RGB888; +- dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | +- MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET; +- +- /* +- * The panel in the RG351V is identical to the 353P, except it +- * requires MIPI_DSI_CLOCK_NON_CONTINUOUS to operate correctly. +- */ +- if (of_device_is_compatible(dev->of_node, "anbernic,rg351v-panel")) +- dsi->mode_flags |= MIPI_DSI_CLOCK_NON_CONTINUOUS; ++ dsi->mode_flags = ctx->panel_info->mode_flags; + + drm_panel_init(&ctx->panel, &dsi->dev, &panel_nv3051d_funcs, + DRM_MODE_CONNECTOR_DSI); +@@ -483,16 +476,56 @@ static const struct drm_display_mode nv3051d_rgxx3_modes[] = { + }, + }; + +-static const struct nv3051d_panel_info nv3051d_rgxx3_info = { ++static const struct drm_display_mode nv3051d_rk2023_modes[] = { ++ { ++ .hdisplay = 640, ++ .hsync_start = 640 + 40, ++ .hsync_end = 640 + 40 + 2, ++ .htotal = 640 + 40 + 2 + 80, ++ .vdisplay = 480, ++ .vsync_start = 480 + 18, ++ .vsync_end = 480 + 18 + 2, ++ .vtotal = 480 + 18 + 2 + 4, ++ .clock = 24150, ++ .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, ++ }, ++}; ++ ++static const struct nv3051d_panel_info nv3051d_rg351v_info = { + .display_modes = nv3051d_rgxx3_modes, + .num_modes = ARRAY_SIZE(nv3051d_rgxx3_modes), + .width_mm = 70, + .height_mm = 57, + .bus_flags = DRM_BUS_FLAG_DE_LOW | DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE, ++ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | ++ MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET | ++ MIPI_DSI_CLOCK_NON_CONTINUOUS, ++}; ++ ++static const struct nv3051d_panel_info nv3051d_rg353p_info = { ++ .display_modes = nv3051d_rgxx3_modes, ++ .num_modes = ARRAY_SIZE(nv3051d_rgxx3_modes), ++ .width_mm = 70, ++ .height_mm = 57, ++ .bus_flags = DRM_BUS_FLAG_DE_LOW | DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE, ++ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | ++ MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET, ++}; ++ ++static const struct nv3051d_panel_info nv3051d_rk2023_info = { ++ .display_modes = nv3051d_rk2023_modes, ++ .num_modes = ARRAY_SIZE(nv3051d_rk2023_modes), ++ .width_mm = 70, ++ .height_mm = 57, ++ .bus_flags = DRM_BUS_FLAG_DE_LOW | DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE, ++ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | ++ MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET, + }; + + static const struct of_device_id newvision_nv3051d_of_match[] = { +- { .compatible = "newvision,nv3051d", .data = &nv3051d_rgxx3_info }, ++ { .compatible = "anbernic,rg351v-panel", .data = &nv3051d_rg351v_info }, ++ { .compatible = "anbernic,rg353p-panel", .data = &nv3051d_rg353p_info }, ++ { .compatible = "powkiddy,rk2023-panel", .data = &nv3051d_rk2023_info }, + { /* sentinel */ } + }; + MODULE_DEVICE_TABLE(of, newvision_nv3051d_of_match); +-- +2.34.1 + +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, + sebastian.reichel@collabora.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, + heiko@sntech.de, conor+dt@kernel.org, + krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, + Chris Morgan , + Krzysztof Kozlowski +Subject: [PATCH V4 4/6] dt-bindings: arm: rockchip: Add Powkiddy RK2023 +Date: Fri, 17 Nov 2023 14:25:34 -0600 [thread overview] +Message-ID: <20231117202536.1387815-5-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> + +From: Chris Morgan + +The Powkiddy RK2023 is a handheld gaming device made by Powkiddy and +powered by the Rockchip RK3566 SoC. Group the Powkiddy RK3566 based +devices together as they are both extremely similar. + +Signed-off-by: Chris Morgan +Acked-by: Krzysztof Kozlowski +--- + Documentation/devicetree/bindings/arm/rockchip.yaml | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/Documentation/devicetree/bindings/arm/rockchip.yaml b/Documentation/devicetree/bindings/arm/rockchip.yaml +index 5f7c6c4aad8f..5b015c4ed775 100644 +--- a/Documentation/devicetree/bindings/arm/rockchip.yaml ++++ b/Documentation/devicetree/bindings/arm/rockchip.yaml +@@ -674,9 +674,11 @@ properties: + - const: pine64,soquartz + - const: rockchip,rk3566 + +- - description: Powkiddy RGB30 ++ - description: Powkiddy RK3566 Handheld Gaming Console + items: +- - const: powkiddy,rgb30 ++ - enum: ++ - powkiddy,rgb30 ++ - powkiddy,rk2023 + - const: rockchip,rk3566 + + - description: Radxa Compute Module 3(CM3) +-- +2.34.1 + +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, + sebastian.reichel@collabora.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, + heiko@sntech.de, conor+dt@kernel.org, + krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, + Chris Morgan +Subject: [PATCH V4 5/6] arm64: dts: rockchip: Update powkiddy,rgb30 include to rk2023 DTSI +Date: Fri, 17 Nov 2023 14:25:35 -0600 [thread overview] +Message-ID: <20231117202536.1387815-6-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> + +From: Chris Morgan + +The Powkiddy RGB30 device is similar to the Anbernic RGxx3 series, +however there are several differences which require deleting nodes in +order to properly define the hardware. This was deemed unacceptable +for the RK2023, so instead create a common include file for the +Powkiddy RGB30 and the Powkiddy RK2023. The only notable difference +between these Powkiddy devices are the panel in use, the device +name, and the PLL_VPLL frequency necessary to support the different +panels. + +Since the RK2023 was released on the market first, name the common +include file after it. + +Signed-off-by: Chris Morgan +--- + .../dts/rockchip/rk3566-powkiddy-rgb30.dts | 154 +-- + .../dts/rockchip/rk3566-powkiddy-rk2023.dtsi | 875 ++++++++++++++++++ + 2 files changed, 891 insertions(+), 138 deletions(-) + create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi + +diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts +index 1ead3c5c24b3..0ac64f043b80 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts ++++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts +@@ -5,67 +5,11 @@ + #include + #include + #include +-#include "rk3566-anbernic-rg353x.dtsi" ++#include "rk3566-powkiddy-rk2023.dtsi" + + / { + model = "RGB30"; + compatible = "powkiddy,rgb30", "rockchip,rk3566"; +- +- aliases { +- mmc1 = &sdmmc0; +- mmc2 = &sdmmc1; +- mmc3 = &sdmmc2; +- }; +- +- battery: battery { +- compatible = "simple-battery"; +- charge-full-design-microamp-hours = <3151000>; +- charge-term-current-microamp = <300000>; +- constant-charge-current-max-microamp = <2000000>; +- constant-charge-voltage-max-microvolt = <4250000>; +- factory-internal-resistance-micro-ohms = <117000>; +- voltage-max-design-microvolt = <4172000>; +- voltage-min-design-microvolt = <3400000>; +- +- ocv-capacity-celsius = <20>; +- ocv-capacity-table-0 = <4172000 100>, <4092000 95>, <4035000 90>, <3990000 85>, +- <3939000 80>, <3895000 75>, <3852000 70>, <3807000 65>, +- <3762000 60>, <3713000 55>, <3672000 50>, <3647000 45>, +- <3629000 40>, <3613000 35>, <3598000 30>, <3578000 25>, +- <3550000 20>, <3519000 15>, <3479000 10>, <3438000 5>, +- <3400000 0>; +- }; +- +- /* +- * Channels reversed for speakers. Headphones automatically switch via hardware when +- * detected with no ability to control output in software. Headphones appear to be mono +- * (each output channel receives all audio). No microphone support on 3.5mm jack. +- */ +- sound { +- compatible = "simple-audio-card"; +- simple-audio-card,name = "rk817_ext"; +- simple-audio-card,format = "i2s"; +- simple-audio-card,mclk-fs = <256>; +- simple-audio-card,widgets = +- "Headphone", "Headphones"; +- simple-audio-card,routing = +- "Headphones", "HPOL", +- "Headphones", "HPOR"; +- +- simple-audio-card,codec { +- sound-dai = <&rk817>; +- }; +- +- simple-audio-card,cpu { +- sound-dai = <&i2s1_8ch>; +- }; +- }; +-}; +- +-/delete-node/ &adc_keys; +- +-&chosen { +- /delete-property/ stdout-path; + }; + + &cru { +@@ -75,87 +19,21 @@ &cru { + <200000000>, <292500000>; + }; + +-&gpio_keys_control { +- button-r1 { +- gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>; +- label = "TR"; +- linux,code = ; +- }; +- +- button-r2 { +- gpios = <&gpio3 RK_PB4 GPIO_ACTIVE_LOW>; +- label = "TR2"; +- linux,code = ; +- }; +-}; +- +-/delete-node/ &{/i2c@fdd40000/regulator@40}; +- +-&i2c0 { +- vdd_cpu: regulator@1c { +- compatible = "tcs,tcs4525"; +- reg = <0x1c>; +- fcs,suspend-voltage-selector = <1>; +- regulator-always-on; +- regulator-boot-on; +- regulator-min-microvolt = <712500>; +- regulator-max-microvolt = <1390000>; +- regulator-name = "vdd_cpu"; +- regulator-ramp-delay = <2300>; +- vin-supply = <&vcc_sys>; +- regulator-state-mem { +- regulator-off-in-suspend; ++&dsi0 { ++ panel: panel@0 { ++ compatible = "powkiddy,rgb30-panel"; ++ reg = <0>; ++ backlight = <&backlight>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&lcd_rst>; ++ reset-gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_LOW>; ++ vcc-supply = <&vcc3v3_lcd0_n>; ++ iovcc-supply = <&vcc3v3_lcd0_n>; ++ ++ port { ++ mipi_in_panel: endpoint { ++ remote-endpoint = <&mipi_out_panel>; ++ }; + }; + }; + }; +- +-/* +- * Device has 2 red LEDs instead of an amber and a red. Relabel LEDs as +- * red_led0 and red_led1. +- */ +-/delete-node/ &{/pwm-leds/led-1}; +-/delete-node/ &{/pwm-leds/led-2}; +- +-&leds { +- red_led0: led-1 { +- color = ; +- function = LED_FUNCTION_CHARGING; +- max-brightness = <255>; +- pwms = <&pwm7 0 25000 0>; +- }; +- +- red_led1: led-2 { +- color = ; +- default-state = "off"; +- function = LED_FUNCTION_STATUS; +- max-brightness = <255>; +- pwms = <&pwm0 0 25000 0>; +- }; +-}; +- +-&panel { +- compatible = "powkiddy,rgb30-panel"; +- vcc-supply = <&vcc3v3_lcd0_n>; +- iovcc-supply = <&vcc3v3_lcd0_n>; +- /delete-property/ vdd-supply; +-}; +- +-&pwm5 { +- status = "disabled"; +-}; +- +-&rk817 { +- rk817_charger: charger { +- monitored-battery = <&battery>; +- rockchip,resistor-sense-micro-ohms = <10000>; +- rockchip,sleep-enter-current-microamp = <300000>; +- rockchip,sleep-filter-current-microamp = <100000>; +- }; +-}; +- +-/* There is no UART header visible on the board for this device. */ +-&uart2 { +- status = "disabled"; +-}; +- +-/delete-node/ &vibrator; +diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi +new file mode 100644 +index 000000000000..0fa8f06f94cd +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi +@@ -0,0 +1,875 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include ++#include ++#include ++#include ++#include ++#include "rk3566.dtsi" ++ ++/ { ++ aliases { ++ mmc1 = &sdmmc0; ++ mmc2 = &sdmmc1; ++ mmc3 = &sdmmc2; ++ }; ++ ++ adc-joystick { ++ compatible = "adc-joystick"; ++ io-channels = <&adc_mux 0>, ++ <&adc_mux 1>, ++ <&adc_mux 2>, ++ <&adc_mux 3>; ++ pinctrl-0 = <&joy_mux_en>; ++ pinctrl-names = "default"; ++ poll-interval = <60>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ axis@0 { ++ reg = <0>; ++ abs-flat = <32>; ++ abs-fuzz = <32>; ++ abs-range = <1023 15>; ++ linux,code = ; ++ }; ++ ++ axis@1 { ++ reg = <1>; ++ abs-flat = <32>; ++ abs-fuzz = <32>; ++ abs-range = <15 1023>; ++ linux,code = ; ++ }; ++ ++ axis@2 { ++ reg = <2>; ++ abs-flat = <32>; ++ abs-fuzz = <32>; ++ abs-range = <15 1023>; ++ linux,code = ; ++ }; ++ ++ axis@3 { ++ reg = <3>; ++ abs-flat = <32>; ++ abs-fuzz = <32>; ++ abs-range = <1023 15>; ++ linux,code = ; ++ }; ++ }; ++ ++ adc_mux: adc-mux { ++ compatible = "io-channel-mux"; ++ channels = "left_x", "right_x", "left_y", "right_y"; ++ #io-channel-cells = <1>; ++ io-channels = <&saradc 3>; ++ io-channel-names = "parent"; ++ mux-controls = <&gpio_mux>; ++ settle-time-us = <100>; ++ }; ++ ++ backlight: backlight { ++ compatible = "pwm-backlight"; ++ power-supply = <&vcc_sys>; ++ pwms = <&pwm4 0 25000 0>; ++ }; ++ ++ battery: battery { ++ compatible = "simple-battery"; ++ charge-full-design-microamp-hours = <3151000>; ++ charge-term-current-microamp = <300000>; ++ constant-charge-current-max-microamp = <2000000>; ++ constant-charge-voltage-max-microvolt = <4250000>; ++ factory-internal-resistance-micro-ohms = <117000>; ++ voltage-max-design-microvolt = <4172000>; ++ voltage-min-design-microvolt = <3400000>; ++ ++ ocv-capacity-celsius = <20>; ++ ocv-capacity-table-0 = <4172000 100>, <4092000 95>, <4035000 90>, <3990000 85>, ++ <3939000 80>, <3895000 75>, <3852000 70>, <3807000 65>, ++ <3762000 60>, <3713000 55>, <3672000 50>, <3647000 45>, ++ <3629000 40>, <3613000 35>, <3598000 30>, <3578000 25>, ++ <3550000 20>, <3519000 15>, <3479000 10>, <3438000 5>, ++ <3400000 0>; ++ }; ++ ++ gpio_keys_control: gpio-keys-control { ++ compatible = "gpio-keys"; ++ pinctrl-0 = <&btn_pins_ctrl>; ++ pinctrl-names = "default"; ++ ++ button-a { ++ gpios = <&gpio3 RK_PC2 GPIO_ACTIVE_LOW>; ++ label = "EAST"; ++ linux,code = ; ++ }; ++ ++ button-b { ++ gpios = <&gpio3 RK_PC3 GPIO_ACTIVE_LOW>; ++ label = "SOUTH"; ++ linux,code = ; ++ }; ++ ++ button-down { ++ gpios = <&gpio3 RK_PA4 GPIO_ACTIVE_LOW>; ++ label = "DPAD-DOWN"; ++ linux,code = ; ++ }; ++ ++ button-l1 { ++ gpios = <&gpio3 RK_PB1 GPIO_ACTIVE_LOW>; ++ label = "TL"; ++ linux,code = ; ++ }; ++ ++ button-l2 { ++ gpios = <&gpio3 RK_PB2 GPIO_ACTIVE_LOW>; ++ label = "TL2"; ++ linux,code = ; ++ }; ++ ++ button-left { ++ gpios = <&gpio3 RK_PA6 GPIO_ACTIVE_LOW>; ++ label = "DPAD-LEFT"; ++ linux,code = ; ++ }; ++ ++ button-r1 { ++ gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>; ++ label = "TR"; ++ linux,code = ; ++ }; ++ ++ button-r2 { ++ gpios = <&gpio3 RK_PB4 GPIO_ACTIVE_LOW>; ++ label = "TR2"; ++ linux,code = ; ++ }; ++ ++ button-right { ++ gpios = <&gpio3 RK_PA5 GPIO_ACTIVE_LOW>; ++ label = "DPAD-RIGHT"; ++ linux,code = ; ++ }; ++ ++ button-select { ++ gpios = <&gpio3 RK_PB6 GPIO_ACTIVE_LOW>; ++ label = "SELECT"; ++ linux,code = ; ++ }; ++ ++ button-start { ++ gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_LOW>; ++ label = "START"; ++ linux,code = ; ++ }; ++ ++ button-thumbl { ++ gpios = <&gpio3 RK_PA1 GPIO_ACTIVE_LOW>; ++ label = "THUMBL"; ++ linux,code = ; ++ }; ++ ++ button-thumbr { ++ gpios = <&gpio3 RK_PA2 GPIO_ACTIVE_LOW>; ++ label = "THUMBR"; ++ linux,code = ; ++ }; ++ ++ button-up { ++ gpios = <&gpio3 RK_PA3 GPIO_ACTIVE_LOW>; ++ label = "DPAD-UP"; ++ linux,code = ; ++ }; ++ ++ button-x { ++ gpios = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>; ++ label = "NORTH"; ++ linux,code = ; ++ }; ++ ++ button-y { ++ gpios = <&gpio3 RK_PC1 GPIO_ACTIVE_LOW>; ++ label = "WEST"; ++ linux,code = ; ++ }; ++ }; ++ ++ gpio_keys_vol: gpio-keys-vol { ++ compatible = "gpio-keys"; ++ autorepeat; ++ pinctrl-0 = <&btn_pins_vol>; ++ pinctrl-names = "default"; ++ ++ button-vol-down { ++ gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>; ++ label = "VOLUMEDOWN"; ++ linux,code = ; ++ }; ++ ++ button-vol-up { ++ gpios = <&gpio3 RK_PA7 GPIO_ACTIVE_LOW>; ++ label = "VOLUMEUP"; ++ linux,code = ; ++ }; ++ }; ++ ++ gpio_mux: mux-controller { ++ compatible = "gpio-mux"; ++ mux-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>, ++ <&gpio0 RK_PB7 GPIO_ACTIVE_LOW>; ++ #mux-control-cells = <0>; ++ }; ++ ++ hdmi-con { ++ compatible = "hdmi-connector"; ++ ddc-i2c-bus = <&i2c5>; ++ type = "c"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; ++ ++ /* ++ * Device also includes an always on LED that is wired to the 5V input ++ * voltage and is on when the device is plugged in. ++ */ ++ leds: pwm-leds { ++ compatible = "pwm-leds"; ++ ++ green_led: led-0 { ++ color = ; ++ function = LED_FUNCTION_STATUS; ++ max-brightness = <255>; ++ pwms = <&pwm6 0 25000 0>; ++ }; ++ ++ red_led: led-1 { ++ color = ; ++ function = LED_FUNCTION_CHARGING; ++ max-brightness = <255>; ++ pwms = <&pwm7 0 25000 0>; ++ }; ++ }; ++ ++ sdio_pwrseq: sdio-pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ clocks = <&rk817 1>; ++ clock-names = "ext_clock"; ++ pinctrl-0 = <&wifi_enable_h>; ++ pinctrl-names = "default"; ++ post-power-on-delay-ms = <200>; ++ reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_LOW>; ++ }; ++ ++ /* ++ * Channels reversed for speakers. Headphones automatically switch via hardware when ++ * detected with no ability to control output in software. Headphones appear to be mono ++ * (each output channel receives all audio). No microphone support on 3.5mm jack. ++ */ ++ sound { ++ compatible = "simple-audio-card"; ++ simple-audio-card,name = "rk817_ext"; ++ simple-audio-card,format = "i2s"; ++ simple-audio-card,mclk-fs = <256>; ++ simple-audio-card,widgets = ++ "Headphone", "Headphones"; ++ simple-audio-card,routing = ++ "Headphones", "HPOL", ++ "Headphones", "HPOR"; ++ ++ simple-audio-card,codec { ++ sound-dai = <&rk817>; ++ }; ++ ++ simple-audio-card,cpu { ++ sound-dai = <&i2s1_8ch>; ++ }; ++ }; ++ ++ vcc3v3_lcd0_n: regulator-vcc3v3-lcd0 { ++ compatible = "regulator-fixed"; ++ gpio = <&gpio0 RK_PC2 GPIO_ACTIVE_HIGH>; ++ enable-active-high; ++ pinctrl-0 = <&vcc_lcd_h>; ++ pinctrl-names = "default"; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc3v3_lcd0_n"; ++ vin-supply = <&vcc_3v3>; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_sys: regulator-vcc-sys { ++ compatible = "regulator-fixed"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3800000>; ++ regulator-max-microvolt = <3800000>; ++ regulator-name = "vcc_sys"; ++ }; ++ ++ vcc_wifi: regulator-vcc-wifi { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>; ++ pinctrl-0 = <&vcc_wifi_h>; ++ pinctrl-names = "default"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc_wifi"; ++ }; ++}; ++ ++&combphy1 { ++ status = "okay"; ++}; ++ ++&cpu0 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu1 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu2 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu3 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&dsi0 { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ ports { ++ dsi0_in: port@0 { ++ reg = <0>; ++ dsi0_in_vp1: endpoint { ++ remote-endpoint = <&vp1_out_dsi0>; ++ }; ++ }; ++ ++ dsi0_out: port@1 { ++ reg = <1>; ++ mipi_out_panel: endpoint { ++ remote-endpoint = <&mipi_in_panel>; ++ }; ++ }; ++ }; ++}; ++ ++&dsi_dphy0 { ++ status = "okay"; ++}; ++ ++&gpu { ++ mali-supply = <&vdd_gpu>; ++ status = "okay"; ++}; ++ ++&hdmi { ++ ddc-i2c-bus = <&i2c5>; ++ pinctrl-0 = <&hdmitxm0_cec>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; ++ ++&hdmi_in { ++ hdmi_in_vp0: endpoint { ++ remote-endpoint = <&vp0_out_hdmi>; ++ }; ++}; ++ ++&hdmi_out { ++ hdmi_out_con: endpoint { ++ remote-endpoint = <&hdmi_con_in>; ++ }; ++}; ++ ++&hdmi_sound { ++ status = "okay"; ++}; ++ ++&i2c0 { ++ status = "okay"; ++ ++ rk817: pmic@20 { ++ compatible = "rockchip,rk817"; ++ reg = <0x20>; ++ interrupt-parent = <&gpio0>; ++ interrupts = ; ++ clock-output-names = "rk808-clkout1", "rk808-clkout2"; ++ clock-names = "mclk"; ++ clocks = <&cru I2S1_MCLKOUT_TX>; ++ assigned-clocks = <&cru I2S1_MCLKOUT_TX>; ++ assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>; ++ #clock-cells = <1>; ++ #sound-dai-cells = <0>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2s1m0_mclk>, <&pmic_int_l>; ++ wakeup-source; ++ ++ vcc1-supply = <&vcc_sys>; ++ vcc2-supply = <&vcc_sys>; ++ vcc3-supply = <&vcc_sys>; ++ vcc4-supply = <&vcc_sys>; ++ vcc5-supply = <&vcc_sys>; ++ vcc6-supply = <&vcc_sys>; ++ vcc7-supply = <&vcc_sys>; ++ vcc8-supply = <&vcc_sys>; ++ vcc9-supply = <&dcdc_boost>; ++ ++ regulators { ++ vdd_logic: DCDC_REG1 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vdd_logic"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ regulator-suspend-microvolt = <900000>; ++ }; ++ }; ++ ++ vdd_gpu: DCDC_REG2 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vdd_gpu"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_ddr: DCDC_REG3 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vcc_ddr"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ vcc_3v3: DCDC_REG4 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vcc_3v3"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcca1v8_pmu: LDO_REG1 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcca1v8_pmu"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <1800000>; ++ }; ++ }; ++ ++ vdda_0v9: LDO_REG2 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <900000>; ++ regulator-max-microvolt = <900000>; ++ regulator-name = "vdda_0v9"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vdda0v9_pmu: LDO_REG3 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <900000>; ++ regulator-max-microvolt = <900000>; ++ regulator-name = "vdda0v9_pmu"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <900000>; ++ }; ++ }; ++ ++ vccio_acodec: LDO_REG4 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vccio_acodec"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vccio_sd: LDO_REG5 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vccio_sd"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc3v3_pmu: LDO_REG6 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc3v3_pmu"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcc_1v8: LDO_REG7 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc_1v8"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc1v8_dvp: LDO_REG8 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc1v8_dvp"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc2v8_dvp: LDO_REG9 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <2800000>; ++ regulator-max-microvolt = <2800000>; ++ regulator-name = "vcc2v8_dvp"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ dcdc_boost: BOOST { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <4700000>; ++ regulator-max-microvolt = <5400000>; ++ regulator-name = "boost"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ otg_switch: OTG_SWITCH { ++ regulator-name = "otg_switch"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ }; ++ ++ rk817_charger: charger { ++ monitored-battery = <&battery>; ++ rockchip,resistor-sense-micro-ohms = <10000>; ++ rockchip,sleep-enter-current-microamp = <300000>; ++ rockchip,sleep-filter-current-microamp = <100000>; ++ }; ++ }; ++ ++ vdd_cpu: regulator@1c { ++ compatible = "tcs,tcs4525"; ++ reg = <0x1c>; ++ fcs,suspend-voltage-selector = <1>; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <712500>; ++ regulator-max-microvolt = <1390000>; ++ regulator-name = "vdd_cpu"; ++ regulator-ramp-delay = <2300>; ++ vin-supply = <&vcc_sys>; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++}; ++ ++&i2c5 { ++ pinctrl-0 = <&i2c5m1_xfer>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; ++ ++&i2s0_8ch { ++ status = "okay"; ++}; ++ ++&i2s1_8ch { ++ pinctrl-0 = <&i2s1m0_sclktx ++ &i2s1m0_lrcktx ++ &i2s1m0_sdi0 ++ &i2s1m0_sdo0>; ++ pinctrl-names = "default"; ++ rockchip,trcm-sync-tx-only; ++ status = "okay"; ++}; ++ ++&pinctrl { ++ gpio-btns { ++ btn_pins_ctrl: btn-pins-ctrl { ++ rockchip,pins = ++ <3 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PC1 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PC3 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ ++ btn_pins_vol: btn-pins-vol { ++ rockchip,pins = ++ <3 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ joy-mux { ++ joy_mux_en: joy-mux-en { ++ rockchip,pins = ++ <0 RK_PB5 RK_FUNC_GPIO &pcfg_output_low>; ++ }; ++ }; ++ ++ gpio-lcd { ++ lcd_rst: lcd-rst { ++ rockchip,pins = ++ <4 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ pmic { ++ pmic_int_l: pmic-int-l { ++ rockchip,pins = ++ <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ sdio-pwrseq { ++ wifi_enable_h: wifi-enable-h { ++ rockchip,pins = ++ <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ vcc3v3-lcd { ++ vcc_lcd_h: vcc-lcd-h { ++ rockchip,pins = ++ <0 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ vcc-wifi { ++ vcc_wifi_h: vcc-wifi-h { ++ rockchip,pins = ++ <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++}; ++ ++&pmu_io_domains { ++ status = "okay"; ++ pmuio1-supply = <&vcc3v3_pmu>; ++ pmuio2-supply = <&vcc3v3_pmu>; ++ vccio1-supply = <&vccio_acodec>; ++ vccio3-supply = <&vccio_sd>; ++ vccio4-supply = <&vcc_1v8>; ++ vccio5-supply = <&vcc_3v3>; ++ vccio6-supply = <&vcc1v8_dvp>; ++ vccio7-supply = <&vcc_3v3>; ++}; ++ ++&pwm4 { ++ status = "okay"; ++}; ++ ++&pwm6 { ++ status = "okay"; ++}; ++ ++&pwm7 { ++ status = "okay"; ++}; ++ ++&saradc { ++ vref-supply = <&vcc_1v8>; ++ status = "okay"; ++}; ++ ++&sdmmc0 { ++ bus-width = <4>; ++ cap-sd-highspeed; ++ cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>; ++ disable-wp; ++ pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>; ++ pinctrl-names = "default"; ++ sd-uhs-sdr104; ++ vmmc-supply = <&vcc_3v3>; ++ vqmmc-supply = <&vccio_sd>; ++ status = "okay"; ++}; ++ ++&sdmmc1 { ++ bus-width = <4>; ++ cap-sd-highspeed; ++ cd-gpios = <&gpio2 RK_PB2 GPIO_ACTIVE_LOW>; ++ disable-wp; ++ pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_cmd &sdmmc1_clk &sdmmc1_det>; ++ pinctrl-names = "default"; ++ sd-uhs-sdr104; ++ vmmc-supply = <&vcc_3v3>; ++ vqmmc-supply = <&vcc1v8_dvp>; ++ status = "okay"; ++}; ++ ++&sdmmc2 { ++ bus-width = <4>; ++ cap-sd-highspeed; ++ cap-sdio-irq; ++ keep-power-in-suspend; ++ mmc-pwrseq = <&sdio_pwrseq>; ++ non-removable; ++ pinctrl-0 = <&sdmmc2m0_bus4 &sdmmc2m0_cmd &sdmmc2m0_clk>; ++ pinctrl-names = "default"; ++ vmmc-supply = <&vcc_wifi>; ++ vqmmc-supply = <&vcca1v8_pmu>; ++ status = "okay"; ++}; ++ ++&tsadc { ++ rockchip,hw-tshut-mode = <1>; ++ rockchip,hw-tshut-polarity = <0>; ++ status = "okay"; ++}; ++ ++&uart1 { ++ pinctrl-0 = <&uart1m1_xfer &uart1m1_ctsn &uart1m1_rtsn>; ++ pinctrl-names = "default"; ++ uart-has-rtscts; ++ status = "okay"; ++ ++ bluetooth { ++ compatible = "realtek,rtl8821cs-bt", "realtek,rtl8723bs-bt"; ++ device-wake-gpios = <&gpio4 4 GPIO_ACTIVE_HIGH>; ++ enable-gpios = <&gpio4 3 GPIO_ACTIVE_HIGH>; ++ host-wake-gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>; ++ }; ++}; ++ ++&usb_host0_xhci { ++ dr_mode = "peripheral"; ++ phys = <&usb2phy0_otg>; ++ phy-names = "usb2-phy"; ++ status = "okay"; ++}; ++ ++&usb_host1_ehci { ++ status = "okay"; ++}; ++ ++&usb_host1_ohci { ++ status = "okay"; ++}; ++ ++&usb_host1_xhci { ++ phy-names = "usb2-phy", "usb3-phy"; ++ phys = <&usb2phy1_host>, <&combphy1 PHY_TYPE_USB3>; ++ status = "okay"; ++}; ++ ++&usb2phy0 { ++ status = "okay"; ++}; ++ ++&usb2phy0_otg { ++ status = "okay"; ++}; ++ ++&usb2phy1 { ++ status = "okay"; ++}; ++ ++&usb2phy1_host { ++ status = "okay"; ++}; ++ ++&vop { ++ assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; ++ assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; ++ status = "okay"; ++}; ++ ++&vop_mmu { ++ status = "okay"; ++}; ++ ++&vp0 { ++ vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { ++ reg = ; ++ remote-endpoint = <&hdmi_in_vp0>; ++ }; ++}; ++ ++&vp1 { ++ vp1_out_dsi0: endpoint@ROCKCHIP_VOP2_EP_MIPI0 { ++ reg = ; ++ remote-endpoint = <&dsi0_in_vp1>; ++ }; ++}; +-- +2.34.1 + +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, + sebastian.reichel@collabora.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, + heiko@sntech.de, conor+dt@kernel.org, + krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, + Chris Morgan +Subject: [PATCH V4 6/6] arm64: dts: rockchip: Add Powkiddy RK2023 +Date: Fri, 17 Nov 2023 14:25:36 -0600 [thread overview] +Message-ID: <20231117202536.1387815-7-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add support for the Powkiddy RK2023. The Powkiddy RK2023 is a handheld +gaming device with a 3.5 inch screen powered by the Rockchip RK3566 +SoC. The device looks physically different from the Powkiddy RGB30, +but is functionally identical except for the panel. + +Signed-off-by: Chris Morgan +--- + arch/arm64/boot/dts/rockchip/Makefile | 1 + + .../dts/rockchip/rk3566-powkiddy-rk2023.dts | 38 +++++++++++++++++++ + 2 files changed, 39 insertions(+) + create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts + +diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile +index a18f33bf0c0e..f969618da352 100644 +--- a/arch/arm64/boot/dts/rockchip/Makefile ++++ b/arch/arm64/boot/dts/rockchip/Makefile +@@ -78,6 +78,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-anbernic-rg503.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.1.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.2.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-rgb30.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-rk2023.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-a.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-b.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-radxa-cm3-io.dtb +diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts +new file mode 100644 +index 000000000000..ba32d0793dca +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts +@@ -0,0 +1,38 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include ++#include ++#include ++#include "rk3566-powkiddy-rk2023.dtsi" ++ ++/ { ++ model = "RK2023"; ++ compatible = "powkiddy,rk2023", "rockchip,rk3566"; ++}; ++ ++&cru { ++ assigned-clocks = <&pmucru CLK_RTC_32K>, <&cru PLL_GPLL>, ++ <&pmucru PLL_PPLL>, <&cru PLL_VPLL>; ++ assigned-clock-rates = <32768>, <1200000000>, ++ <200000000>, <115200000>; ++}; ++ ++&dsi0 { ++ panel: panel@0 { ++ compatible = "powkiddy,rk2023-panel", "newvision,nv3051d"; ++ reg = <0>; ++ backlight = <&backlight>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&lcd_rst>; ++ reset-gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_LOW>; ++ vdd-supply = <&vcc3v3_lcd0_n>; ++ ++ port { ++ mipi_in_panel: endpoint { ++ remote-endpoint = <&mipi_out_panel>; ++ }; ++ }; ++ }; ++}; +-- +2.34.1 + diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/004-add-rg351v.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/004-add-rg351v.patch new file mode 100644 index 0000000000..052ee0fea2 --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/004-add-rg351v.patch @@ -0,0 +1,715 @@ +From: Chris Morgan +To: devicetree@vger.kernel.org +Cc: linux-rockchip@lists.infradead.org, maccraft123mc@gmail.com, + sebastian.reichel@collabora.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH 0/3] Add Support for Anbernic RG351V +Date: Mon, 20 Nov 2023 17:01:28 -0600 [thread overview] +Message-ID: <20231120230131.57705-1-macroalpha82@gmail.com> (raw) + +From: Chris Morgan + +Add support for the Anbernic RG351V handheld gaming console. + +Chris Morgan (3): + dt-bindings: arm: rockchip: Add Anbernic RG351V + arm64: dts: rockchip: Split RG351M from Odroid Go Advance + arm64: dts: rockchip: Add Anbernic RG351V + + .../devicetree/bindings/arm/rockchip.yaml | 6 +- + arch/arm64/boot/dts/rockchip/Makefile | 1 + + .../dts/rockchip/rk3326-anbernic-rg351m.dts | 18 +- + .../dts/rockchip/rk3326-anbernic-rg351m.dtsi | 478 ++++++++++++++++++ + .../dts/rockchip/rk3326-anbernic-rg351v.dts | 44 ++ + 5 files changed, 529 insertions(+), 18 deletions(-) + create mode 100644 arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dtsi + create mode 100644 arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts + +-- +2.34.1 +From: Chris Morgan +To: devicetree@vger.kernel.org +Cc: linux-rockchip@lists.infradead.org, maccraft123mc@gmail.com, + sebastian.reichel@collabora.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH 1/3] dt-bindings: arm: rockchip: Add Anbernic RG351V +Date: Mon, 20 Nov 2023 17:01:29 -0600 [thread overview] +Message-ID: <20231120230131.57705-2-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231120230131.57705-1-macroalpha82@gmail.com> + +From: Chris Morgan + +The Anbernic RG351V is a portable gaming console from Anbernic with the +RK3326 SoC. + +Signed-off-by: Chris Morgan +--- + Documentation/devicetree/bindings/arm/rockchip.yaml | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/Documentation/devicetree/bindings/arm/rockchip.yaml b/Documentation/devicetree/bindings/arm/rockchip.yaml +index 5f7c6c4aad8f..3786f901a1a7 100644 +--- a/Documentation/devicetree/bindings/arm/rockchip.yaml ++++ b/Documentation/devicetree/bindings/arm/rockchip.yaml +@@ -30,9 +30,11 @@ properties: + - const: amarula,vyasa-rk3288 + - const: rockchip,rk3288 + +- - description: Anbernic RG351M ++ - description: Anbernic RK3326 Handheld Gaming Console + items: +- - const: anbernic,rg351m ++ - enum: ++ - anbernic,rg351m ++ - anbernic,rg351v + - const: rockchip,rk3326 + + - description: Anbernic RG353P +-- +2.34.1 +From: Chris Morgan +To: devicetree@vger.kernel.org +Cc: linux-rockchip@lists.infradead.org, maccraft123mc@gmail.com, + sebastian.reichel@collabora.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH 2/3] arm64: dts: rockchip: Split RG351M from Odroid Go Advance +Date: Mon, 20 Nov 2023 17:01:30 -0600 [thread overview] +Message-ID: <20231120230131.57705-3-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231120230131.57705-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Split the RG351M into its own DTSI file. The RG351M, unlike the Odroid +Go Advance, has no ADC joysticks, no GPIO buttons (except for volume +on the RG351V), a PWM vibrator that interferes with an Odroid +regulator, and different LEDs. Split the RG351M into a DTSI file +that can then be imported into the DTS files for the RG351M and a +new RG351V. + +Signed-off-by: Chris Morgan +--- + .../dts/rockchip/rk3326-anbernic-rg351m.dts | 18 +- + .../dts/rockchip/rk3326-anbernic-rg351m.dtsi | 478 ++++++++++++++++++ + 2 files changed, 480 insertions(+), 16 deletions(-) + create mode 100644 arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dtsi + +diff --git a/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts +index ce318e05f0a6..f4d20f29c1b4 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts ++++ b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts +@@ -6,30 +6,16 @@ + */ + + /dts-v1/; +-#include "rk3326-odroid-go.dtsi" ++#include "rk3326-anbernic-rg351m.dtsi" + + / { + model = "Anbernic RG351M"; + compatible = "anbernic,rg351m", "rockchip,rk3326"; +- +- vibrator { +- compatible = "pwm-vibrator"; +- pwms = <&pwm0 0 1000000 0>; +- pwm-names = "enable"; +- }; + }; + +-/delete-node/ &builtin_gamepad; +-/delete-node/ &vcc_host; /* conflicts with pwm vibration motor */ +- + &internal_display { + compatible = "elida,kd35t133"; + iovcc-supply = <&vcc_lcd>; ++ rotation = <270>; + vdd-supply = <&vcc_lcd>; + }; +- +-&pwm0 { +- status = "okay"; +-}; +- +-/delete-node/ &rk817_charger; +diff --git a/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dtsi b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dtsi +new file mode 100644 +index 000000000000..89e64647b4fa +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dtsi +@@ -0,0 +1,478 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * Copyright (c) 2019 Hardkernel Co., Ltd ++ * Copyright (c) 2020 Theobroma Systems Design und Consulting GmbH ++ * Copyright (c) 2022 Maya Matuszczyk ++ */ ++ ++/dts-v1/; ++#include ++#include ++#include ++#include ++#include "rk3326.dtsi" ++ ++/ { ++ aliases { ++ mmc0 = &sdmmc; ++ }; ++ ++ chosen { ++ stdout-path = "serial2:115200n8"; ++ }; ++ ++ backlight: backlight { ++ compatible = "pwm-backlight"; ++ power-supply = <&vcc_bl>; ++ pwms = <&pwm1 0 25000 0>; ++ }; ++ ++ /* ++ * LED is a tri-state. Driven high it is red, driven low it is ++ * green, and not driven at all (pin set to input) it is amber. ++ * Additionally, there is a 2nd LED that is not controllable ++ * that is on (red) when plugged in to power. ++ */ ++ gpio_led: gpio-leds { ++ compatible = "gpio-leds"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&led_pin>; ++ ++ red_green_led: led-0 { ++ color = ; ++ gpios = <&gpio2 RK_PB5 GPIO_ACTIVE_HIGH>; ++ function = LED_FUNCTION_CHARGING; ++ }; ++ }; ++ ++ rk817-sound { ++ compatible = "simple-audio-card"; ++ simple-audio-card,name = "rk817_int"; ++ simple-audio-card,format = "i2s"; ++ simple-audio-card,hp-det-gpio = <&gpio2 RK_PC6 GPIO_ACTIVE_HIGH>; ++ simple-audio-card,mclk-fs = <256>; ++ simple-audio-card,widgets = ++ "Microphone", "Mic Jack", ++ "Headphone", "Headphones", ++ "Speaker", "Speaker"; ++ simple-audio-card,routing = ++ "MICL", "Mic Jack", ++ "Headphones", "HPOL", ++ "Headphones", "HPOR", ++ "Speaker", "SPKO"; ++ ++ simple-audio-card,codec { ++ sound-dai = <&rk817>; ++ }; ++ ++ simple-audio-card,cpu { ++ sound-dai = <&i2s1_2ch>; ++ }; ++ }; ++ ++ vccsys: vccsys { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc3v8_sys"; ++ regulator-always-on; ++ regulator-min-microvolt = <3800000>; ++ regulator-max-microvolt = <3800000>; ++ }; ++ ++ vibrator { ++ compatible = "pwm-vibrator"; ++ pwms = <&pwm0 0 1000000 0>; ++ pwm-names = "enable"; ++ }; ++}; ++ ++&cpu0 { ++ cpu-supply = <&vdd_arm>; ++}; ++ ++&cpu1 { ++ cpu-supply = <&vdd_arm>; ++}; ++ ++&cpu2 { ++ cpu-supply = <&vdd_arm>; ++}; ++ ++&cpu3 { ++ cpu-supply = <&vdd_arm>; ++}; ++ ++&cru { ++ assigned-clocks = <&cru PLL_NPLL>, ++ <&cru ACLK_BUS_PRE>, <&cru ACLK_PERI_PRE>, ++ <&cru HCLK_BUS_PRE>, <&cru HCLK_PERI_PRE>, ++ <&cru PCLK_BUS_PRE>, <&cru SCLK_GPU>; ++ ++ assigned-clock-rates = <1188000000>, ++ <200000000>, <200000000>, ++ <150000000>, <150000000>, ++ <100000000>, <200000000>; ++}; ++ ++&display_subsystem { ++ status = "okay"; ++}; ++ ++&dsi { ++ status = "okay"; ++ ++ ports { ++ mipi_out: port@1 { ++ reg = <1>; ++ ++ mipi_out_panel: endpoint { ++ remote-endpoint = <&mipi_in_panel>; ++ }; ++ }; ++ }; ++ ++ internal_display: panel@0 { ++ reg = <0>; ++ backlight = <&backlight>; ++ reset-gpios = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>; ++ ++ port { ++ mipi_in_panel: endpoint { ++ remote-endpoint = <&mipi_out_panel>; ++ }; ++ }; ++ }; ++}; ++ ++&dsi_dphy { ++ status = "okay"; ++}; ++ ++&gpu { ++ mali-supply = <&vdd_logic>; ++ status = "okay"; ++}; ++ ++&i2c0 { ++ clock-frequency = <400000>; ++ i2c-scl-falling-time-ns = <16>; ++ i2c-scl-rising-time-ns = <280>; ++ status = "okay"; ++ ++ rk817: pmic@20 { ++ compatible = "rockchip,rk817"; ++ reg = <0x20>; ++ #clock-cells = <1>; ++ clock-names = "mclk"; ++ clock-output-names = "rk808-clkout1", "xin32k"; ++ clocks = <&cru SCLK_I2S1_OUT>; ++ interrupt-parent = <&gpio0>; ++ interrupts = ; ++ pinctrl-0 = <&pmic_int>, <&i2s1_2ch_mclk>; ++ pinctrl-names = "default"; ++ #sound-dai-cells = <0>; ++ wakeup-source; ++ ++ vcc1-supply = <&vccsys>; ++ vcc2-supply = <&vccsys>; ++ vcc3-supply = <&vccsys>; ++ vcc4-supply = <&vccsys>; ++ vcc5-supply = <&vccsys>; ++ vcc6-supply = <&vccsys>; ++ vcc7-supply = <&vccsys>; ++ vcc8-supply = <&vccsys>; ++ ++ regulators { ++ vdd_logic: DCDC_REG1 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-max-microvolt = <1150000>; ++ regulator-min-microvolt = <950000>; ++ regulator-name = "vdd_logic"; ++ regulator-ramp-delay = <6001>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <950000>; ++ }; ++ }; ++ ++ vdd_arm: DCDC_REG2 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-max-microvolt = <1350000>; ++ regulator-min-microvolt = <950000>; ++ regulator-name = "vdd_arm"; ++ regulator-ramp-delay = <6001>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ regulator-suspend-microvolt = <950000>; ++ }; ++ }; ++ ++ vcc_ddr: DCDC_REG3 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-name = "vcc_ddr"; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ vcc_3v3: DCDC_REG4 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-max-microvolt = <3300000>; ++ regulator-min-microvolt = <3300000>; ++ regulator-name = "vcc_3v3"; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcc_1v8: LDO_REG2 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-max-microvolt = <1800000>; ++ regulator-min-microvolt = <1800000>; ++ regulator-name = "vcc_1v8"; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <1800000>; ++ }; ++ }; ++ ++ vdd_1v0: LDO_REG3 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-max-microvolt = <1000000>; ++ regulator-min-microvolt = <1000000>; ++ regulator-name = "vdd_1v0"; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <1000000>; ++ }; ++ }; ++ ++ vcc3v3_pmu: LDO_REG4 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-max-microvolt = <3300000>; ++ regulator-min-microvolt = <3300000>; ++ regulator-name = "vcc3v3_pmu"; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vccio_sd: LDO_REG5 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-max-microvolt = <3300000>; ++ regulator-min-microvolt = <1800000>; ++ regulator-name = "vccio_sd"; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcc_sd: LDO_REG6 { ++ regulator-boot-on; ++ regulator-max-microvolt = <3300000>; ++ regulator-min-microvolt = <3300000>; ++ regulator-name = "vcc_sd"; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcc_bl: LDO_REG7 { ++ regulator-max-microvolt = <3300000>; ++ regulator-min-microvolt = <3300000>; ++ regulator-name = "vcc_bl"; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcc_lcd: LDO_REG8 { ++ regulator-max-microvolt = <2800000>; ++ regulator-min-microvolt = <2800000>; ++ regulator-name = "vcc_lcd"; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ regulator-suspend-microvolt = <2800000>; ++ }; ++ }; ++ ++ vcc_wifi: LDO_REG9 { ++ regulator-max-microvolt = <3300000>; ++ regulator-min-microvolt = <3300000>; ++ regulator-name = "vcc_wifi"; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ usb_midu: BOOST { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-max-microvolt = <5400000>; ++ regulator-min-microvolt = <5000000>; ++ regulator-name = "usb_midu"; ++ }; ++ }; ++ ++ rk817_codec: codec { ++ rockchip,mic-in-differential; ++ }; ++ }; ++}; ++ ++&i2s1_2ch { ++ status = "okay"; ++}; ++ ++&io_domains { ++ vccio1-supply = <&vcc_3v3>; ++ vccio2-supply = <&vccio_sd>; ++ vccio3-supply = <&vcc_3v3>; ++ vccio4-supply = <&vcc_3v3>; ++ vccio5-supply = <&vcc_3v3>; ++ vccio6-supply = <&vcc_3v3>; ++ status = "okay"; ++}; ++ ++&pmu_io_domains { ++ pmuio1-supply = <&vcc3v3_pmu>; ++ pmuio2-supply = <&vcc3v3_pmu>; ++ status = "okay"; ++}; ++ ++&pwm0 { ++ status = "okay"; ++}; ++ ++&pwm1 { ++ status = "okay"; ++}; ++ ++&saradc { ++ vref-supply = <&vcc_1v8>; ++ status = "okay"; ++}; ++ ++&sdmmc { ++ cap-sd-highspeed; ++ card-detect-delay = <200>; ++ cd-gpios = <&gpio0 RK_PA3 GPIO_ACTIVE_LOW>; ++ sd-uhs-sdr12; ++ sd-uhs-sdr25; ++ sd-uhs-sdr50; ++ sd-uhs-sdr104; ++ vmmc-supply = <&vcc_sd>; ++ vqmmc-supply = <&vccio_sd>; ++ status = "okay"; ++}; ++ ++&sfc { ++ #address-cells = <1>; ++ pinctrl-0 = <&sfc_clk &sfc_cs0 &sfc_bus2>; ++ pinctrl-names = "default"; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ flash@0 { ++ compatible = "jedec,spi-nor"; ++ reg = <0>; ++ spi-max-frequency = <108000000>; ++ spi-rx-bus-width = <2>; ++ spi-tx-bus-width = <1>; ++ }; ++}; ++ ++&tsadc { ++ status = "okay"; ++}; ++ ++&u2phy { ++ status = "okay"; ++ ++ u2phy_host: host-port { ++ status = "okay"; ++ }; ++ ++ u2phy_otg: otg-port { ++ status = "disabled"; ++ }; ++}; ++ ++&usb20_otg { ++ status = "okay"; ++}; ++ ++&uart2 { ++ pinctrl-0 = <&uart2m1_xfer>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; ++ ++&vopb { ++ status = "okay"; ++}; ++ ++&vopb_mmu { ++ status = "okay"; ++}; ++ ++&pinctrl { ++ headphone { ++ hp_det: hp-det { ++ rockchip,pins = <2 RK_PC6 RK_FUNC_GPIO &pcfg_pull_down>; ++ }; ++ }; ++ ++ leds { ++ led_pin: led-pin { ++ rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ pmic { ++ dc_det: dc-det { ++ rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ pmic_int: pmic-int { ++ rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ ++ soc_slppin_gpio: soc_slppin_gpio { ++ rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_output_low>; ++ }; ++ ++ soc_slppin_rst: soc_slppin_rst { ++ rockchip,pins = <0 RK_PA4 2 &pcfg_pull_none>; ++ }; ++ ++ soc_slppin_slp: soc_slppin_slp { ++ rockchip,pins = <0 RK_PA4 1 &pcfg_pull_none>; ++ }; ++ }; ++}; +-- +2.34.1 + +From: Chris Morgan +To: devicetree@vger.kernel.org +Cc: linux-rockchip@lists.infradead.org, maccraft123mc@gmail.com, + sebastian.reichel@collabora.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH 3/3] arm64: dts: rockchip: Add Anbernic RG351V +Date: Mon, 20 Nov 2023 17:01:31 -0600 [thread overview] +Message-ID: <20231120230131.57705-4-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231120230131.57705-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add support for the Anbernic RG351V, which is a handheld gaming console +from Anbernic with an RK3326 SoC, a 640x480 LCD display, a single +analog joystick with several face buttons, two USB C ports, and +internal WiFi over USB. All hardware has been tested as working +except for the battery, which will require further modification to the +mainline rk817 battery driver before it can be used (the device was +built without a shunt resistor, and as such the battery cannot +measure current; only voltage). + +Signed-off-by: Chris Morgan +--- + arch/arm64/boot/dts/rockchip/Makefile | 1 + + .../dts/rockchip/rk3326-anbernic-rg351v.dts | 44 +++++++++++++++++++ + 2 files changed, 45 insertions(+) + create mode 100644 arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts + +diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile +index a18f33bf0c0e..0ac27cf782d7 100644 +--- a/arch/arm64/boot/dts/rockchip/Makefile ++++ b/arch/arm64/boot/dts/rockchip/Makefile +@@ -9,6 +9,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-roc-cc.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-rock-pi-s.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3318-a95x-z2.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-anbernic-rg351m.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-anbernic-rg351v.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2-v11.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go3.dtb +diff --git a/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts +new file mode 100644 +index 000000000000..c2f9b56ca5f9 +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts +@@ -0,0 +1,44 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++#include "rk3326-anbernic-rg351m.dtsi" ++ ++/ { ++ model = "Anbernic RG351V"; ++ compatible = "anbernic,rg351v", "rockchip,rk3326"; ++ ++ gpio_keys_vol: gpio-keys-vol { ++ compatible = "gpio-keys"; ++ autorepeat; ++ ++ button-vol-down { ++ label = "VOLUMEDOWN"; ++ linux,code = ; ++ gpios = <&gpio2 RK_PA1 GPIO_ACTIVE_LOW>; ++ }; ++ ++ button-vol-up { ++ label = "VOLUMEUP"; ++ linux,code = ; ++ gpios = <&gpio2 RK_PA0 GPIO_ACTIVE_LOW>; ++ }; ++ }; ++}; ++ ++&internal_display { ++ compatible = "anbernic,rg351v-panel", "newvision,nv3051d"; ++ vdd-supply = <&vcc_lcd>; ++}; ++ ++&io_domains { ++ vccio1-supply = <&vccio_sd>; ++}; ++ ++&vcc_sd { ++ regulator-max-microvolt = <3000000>; ++ regulator-min-microvolt = <1800000>; ++}; ++ ++&vccio_sd { ++ regulator-max-microvolt = <1800000>; ++}; +-- +2.34.1 diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/005-set-mac-address.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/005-set-mac-address.patch new file mode 100644 index 0000000000..c4878de131 --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/005-set-mac-address.patch @@ -0,0 +1,15 @@ +diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c +index 4a33d2e47f33..6d22628129d0 100644 +--- a/drivers/net/wireless/realtek/rtw88/main.c ++++ b/drivers/net/wireless/realtek/rtw88/main.c +@@ -2008,6 +2008,11 @@ static int rtw_chip_efuse_info_setup(struct rtw_dev *rtwdev) + efuse->ext_pa_5g = efuse->pa_type_5g & BIT(0) ? 1 : 0; + efuse->ext_lna_2g = efuse->lna_type_5g & BIT(3) ? 1 : 0; + ++ if (!is_valid_ether_addr(efuse->addr)) { ++ eth_random_addr(efuse->addr); ++ dev_warn(rtwdev->dev, "efuse MAC invalid, using random\n"); ++ } ++ + out_disable: + rtw_chip_efuse_disable(rtwdev); diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/006-v2-add-powkiddy-x55.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/006-v2-add-powkiddy-x55.patch new file mode 100644 index 0000000000..18ce833db2 --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/006-v2-add-powkiddy-x55.patch @@ -0,0 +1,1657 @@ +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH V2 00/10] rockchip: Add Powkiddy X55 +Date: Mon, 4 Dec 2023 12:57:09 -0600 [thread overview] +Message-ID: <20231204185719.569021-1-macroalpha82@gmail.com> (raw) + +From: Chris Morgan + +Add support for the Rockchip RK3566 based Powkiddy X55 handheld gaming +console. + +Changes since V1: + - Corrected a bug with the DRM mode flags for the video driver. + - Adjusted panel front and back porch and pixel clock to fix + issues with display that occurred after correcting DRM mode + flag bug. + - Add a new clk frequency for PLL_VPLL to get panel to run at ~60hz. + +Chris Morgan (10): + drm/panel: himax-hx8394: Drop prepare/unprepare tracking + drm/panel: himax-hx8394: Drop shutdown logic + dt-bindings: display: Document Himax HX8394 panel rotation + drm/panel: himax-hx8394: Add Panel Rotation Support + dt-bindings: display: himax-hx8394: Add Powkiddy X55 panel + drm/panel: himax-hx8394: Add Support for Powkiddy X55 panel + clk: rockchip: Mark pclk_usb as critical on rk3568 + clk: rockchip: rk3568: Add PLL rate for 126.4MHz + dt-bindings: arm: rockchip: Add Powkiddy X55 + arm64: dts: rockchip: Add Powkiddy X55 + + .../devicetree/bindings/arm/rockchip.yaml | 1 + + .../bindings/display/panel/himax,hx8394.yaml | 3 + + arch/arm64/boot/dts/rockchip/Makefile | 1 + + .../boot/dts/rockchip/rk3566-powkiddy-x55.dts | 926 ++++++++++++++++++ + drivers/clk/rockchip/clk-rk3568.c | 2 + + drivers/gpu/drm/panel/panel-himax-hx8394.c | 180 +++- + 6 files changed, 1085 insertions(+), 28 deletions(-) + create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x55.dts + +-- +2.34.1 +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH V2 01/10] drm/panel: himax-hx8394: Drop prepare/unprepare tracking +Date: Mon, 4 Dec 2023 12:57:10 -0600 [thread overview] +Message-ID: <20231204185719.569021-2-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Drop the panel specific prepare/unprepare logic. This is now tracked +by the DRM stack [1]. + +[1] commit d2aacaf07395 ("drm/panel: Check for already prepared/enabled in +drm_panel") + +Signed-off-by: Chris Morgan +--- + drivers/gpu/drm/panel/panel-himax-hx8394.c | 11 ----------- + 1 file changed, 11 deletions(-) + +diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c +index c73243d85de7..3823ff388b96 100644 +--- a/drivers/gpu/drm/panel/panel-himax-hx8394.c ++++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c +@@ -68,7 +68,6 @@ struct hx8394 { + struct gpio_desc *reset_gpio; + struct regulator *vcc; + struct regulator *iovcc; +- bool prepared; + + const struct hx8394_panel_desc *desc; + }; +@@ -262,16 +261,11 @@ static int hx8394_unprepare(struct drm_panel *panel) + { + struct hx8394 *ctx = panel_to_hx8394(panel); + +- if (!ctx->prepared) +- return 0; +- + gpiod_set_value_cansleep(ctx->reset_gpio, 1); + + regulator_disable(ctx->iovcc); + regulator_disable(ctx->vcc); + +- ctx->prepared = false; +- + return 0; + } + +@@ -280,9 +274,6 @@ static int hx8394_prepare(struct drm_panel *panel) + struct hx8394 *ctx = panel_to_hx8394(panel); + int ret; + +- if (ctx->prepared) +- return 0; +- + gpiod_set_value_cansleep(ctx->reset_gpio, 1); + + ret = regulator_enable(ctx->vcc); +@@ -301,8 +292,6 @@ static int hx8394_prepare(struct drm_panel *panel) + + msleep(180); + +- ctx->prepared = true; +- + return 0; + + disable_vcc: +-- +2.34.1 + +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH V2 02/10] drm/panel: himax-hx8394: Drop shutdown logic +Date: Mon, 4 Dec 2023 12:57:11 -0600 [thread overview] +Message-ID: <20231204185719.569021-3-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> + +From: Chris Morgan + +The driver shutdown is duplicate as it calls drm_unprepare and +drm_disable which are called anyway when associated drivers are +shutdown/removed. + +Signed-off-by: Chris Morgan +--- + drivers/gpu/drm/panel/panel-himax-hx8394.c | 17 ----------------- + 1 file changed, 17 deletions(-) + +diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c +index 3823ff388b96..d8e590d5e1da 100644 +--- a/drivers/gpu/drm/panel/panel-himax-hx8394.c ++++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c +@@ -390,27 +390,11 @@ static int hx8394_probe(struct mipi_dsi_device *dsi) + return 0; + } + +-static void hx8394_shutdown(struct mipi_dsi_device *dsi) +-{ +- struct hx8394 *ctx = mipi_dsi_get_drvdata(dsi); +- int ret; +- +- ret = drm_panel_disable(&ctx->panel); +- if (ret < 0) +- dev_err(&dsi->dev, "Failed to disable panel: %d\n", ret); +- +- ret = drm_panel_unprepare(&ctx->panel); +- if (ret < 0) +- dev_err(&dsi->dev, "Failed to unprepare panel: %d\n", ret); +-} +- + static void hx8394_remove(struct mipi_dsi_device *dsi) + { + struct hx8394 *ctx = mipi_dsi_get_drvdata(dsi); + int ret; + +- hx8394_shutdown(dsi); +- + ret = mipi_dsi_detach(dsi); + if (ret < 0) + dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret); +@@ -427,7 +411,6 @@ MODULE_DEVICE_TABLE(of, hx8394_of_match); + static struct mipi_dsi_driver hx8394_driver = { + .probe = hx8394_probe, + .remove = hx8394_remove, +- .shutdown = hx8394_shutdown, + .driver = { + .name = DRV_NAME, + .of_match_table = hx8394_of_match, +-- +2.34.1 +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan , + Krzysztof Kozlowski +Subject: [PATCH V2 03/10] dt-bindings: display: Document Himax HX8394 panel rotation +Date: Mon, 4 Dec 2023 12:57:12 -0600 [thread overview] +Message-ID: <20231204185719.569021-4-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Document panel rotation for Himax HX8394 display panel. + +Signed-off-by: Chris Morgan +Acked-by: Krzysztof Kozlowski +--- + .../devicetree/bindings/display/panel/himax,hx8394.yaml | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml +index ffb35288ffbb..3096debca55c 100644 +--- a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml ++++ b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml +@@ -31,6 +31,8 @@ properties: + + backlight: true + ++ rotation: true ++ + port: true + + vcc-supply: +-- +2.34.1 +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH V2 04/10] drm/panel: himax-hx8394: Add Panel Rotation Support +Date: Mon, 4 Dec 2023 12:57:13 -0600 [thread overview] +Message-ID: <20231204185719.569021-5-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add support for setting the rotation property for the Himax HX8394 +panel. + +Signed-off-by: Chris Morgan +--- + drivers/gpu/drm/panel/panel-himax-hx8394.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c +index d8e590d5e1da..b68ea09f4725 100644 +--- a/drivers/gpu/drm/panel/panel-himax-hx8394.c ++++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c +@@ -68,6 +68,7 @@ struct hx8394 { + struct gpio_desc *reset_gpio; + struct regulator *vcc; + struct regulator *iovcc; ++ enum drm_panel_orientation orientation; + + const struct hx8394_panel_desc *desc; + }; +@@ -324,12 +325,20 @@ static int hx8394_get_modes(struct drm_panel *panel, + return 1; + } + ++static enum drm_panel_orientation hx8394_get_orientation(struct drm_panel *panel) ++{ ++ struct hx8394 *ctx = panel_to_hx8394(panel); ++ ++ return ctx->orientation; ++} ++ + static const struct drm_panel_funcs hx8394_drm_funcs = { + .disable = hx8394_disable, + .unprepare = hx8394_unprepare, + .prepare = hx8394_prepare, + .enable = hx8394_enable, + .get_modes = hx8394_get_modes, ++ .get_orientation = hx8394_get_orientation, + }; + + static int hx8394_probe(struct mipi_dsi_device *dsi) +@@ -347,6 +356,12 @@ static int hx8394_probe(struct mipi_dsi_device *dsi) + return dev_err_probe(dev, PTR_ERR(ctx->reset_gpio), + "Failed to get reset gpio\n"); + ++ ret = of_drm_get_panel_orientation(dev->of_node, &ctx->orientation); ++ if (ret < 0) { ++ dev_err(dev, "%pOF: failed to get orientation %d\n", dev->of_node, ret); ++ return ret; ++ } ++ + mipi_dsi_set_drvdata(dsi, ctx); + + ctx->dev = dev; +-- +2.34.1 +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan , + Krzysztof Kozlowski +Subject: [PATCH V2 05/10] dt-bindings: display: himax-hx8394: Add Powkiddy X55 panel +Date: Mon, 4 Dec 2023 12:57:14 -0600 [thread overview] +Message-ID: <20231204185719.569021-6-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add compatible string for the Powkiddy X55 panel. + +Signed-off-by: Chris Morgan +Acked-by: Krzysztof Kozlowski +--- + .../devicetree/bindings/display/panel/himax,hx8394.yaml | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml +index 3096debca55c..916bb7f94206 100644 +--- a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml ++++ b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml +@@ -23,6 +23,7 @@ properties: + items: + - enum: + - hannstar,hsd060bhw4 ++ - powkiddy,x55-panel + - const: himax,hx8394 + + reg: true +-- +2.34.1 +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH V2 06/10] drm/panel: himax-hx8394: Add Support for Powkiddy X55 panel +Date: Mon, 4 Dec 2023 12:57:15 -0600 [thread overview] +Message-ID: <20231204185719.569021-7-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add support for the Powkiddy X55 panel as used on the Powkiddy X55 +handheld gaming console. This panel uses a Himax HX8394 display +controller and requires a vendor provided init sequence. The display +resolution is 720x1280 and is 67mm by 121mm as measured with calipers. + +Signed-off-by: Chris Morgan +--- + drivers/gpu/drm/panel/panel-himax-hx8394.c | 137 +++++++++++++++++++++ + 1 file changed, 137 insertions(+) + +diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c +index b68ea09f4725..ff0dc08b9829 100644 +--- a/drivers/gpu/drm/panel/panel-himax-hx8394.c ++++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c +@@ -38,6 +38,7 @@ + #define HX8394_CMD_SETMIPI 0xba + #define HX8394_CMD_SETOTP 0xbb + #define HX8394_CMD_SETREGBANK 0xbd ++#define HX8394_CMD_UNKNOWN5 0xbf + #define HX8394_CMD_UNKNOWN1 0xc0 + #define HX8394_CMD_SETDGCLUT 0xc1 + #define HX8394_CMD_SETID 0xc3 +@@ -52,6 +53,7 @@ + #define HX8394_CMD_SETGIP1 0xd5 + #define HX8394_CMD_SETGIP2 0xd6 + #define HX8394_CMD_SETGPO 0xd6 ++#define HX8394_CMD_UNKNOWN4 0xd8 + #define HX8394_CMD_SETSCALING 0xdd + #define HX8394_CMD_SETIDLE 0xdf + #define HX8394_CMD_SETGAMMA 0xe0 +@@ -203,6 +205,140 @@ static const struct hx8394_panel_desc hsd060bhw4_desc = { + .init_sequence = hsd060bhw4_init_sequence, + }; + ++static int powkiddy_x55_init_sequence(struct hx8394 *ctx) ++{ ++ struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); ++ ++ /* 5.19.8 SETEXTC: Set extension command (B9h) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETEXTC, ++ 0xff, 0x83, 0x94); ++ ++ /* 5.19.9 SETMIPI: Set MIPI control (BAh) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETMIPI, ++ 0x63, 0x03, 0x68, 0x6b, 0xb2, 0xc0); ++ ++ /* 5.19.2 SETPOWER: Set power (B1h) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETPOWER, ++ 0x48, 0x12, 0x72, 0x09, 0x32, 0x54, 0x71, 0x71, 0x57, 0x47); ++ ++ /* 5.19.3 SETDISP: Set display related register (B2h) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETDISP, ++ 0x00, 0x80, 0x64, 0x2c, 0x16, 0x2f); ++ ++ /* 5.19.4 SETCYC: Set display waveform cycles (B4h) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETCYC, ++ 0x73, 0x74, 0x73, 0x74, 0x73, 0x74, 0x01, 0x0c, 0x86, 0x75, ++ 0x00, 0x3f, 0x73, 0x74, 0x73, 0x74, 0x73, 0x74, 0x01, 0x0c, ++ 0x86); ++ ++ /* 5.19.5 SETVCOM: Set VCOM voltage (B6h) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETVCOM, ++ 0x6e, 0x6e); ++ ++ /* 5.19.19 SETGIP0: Set GIP Option0 (D3h) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETGIP0, ++ 0x00, 0x00, 0x07, 0x07, 0x40, 0x07, 0x0c, 0x00, 0x08, 0x10, ++ 0x08, 0x00, 0x08, 0x54, 0x15, 0x0a, 0x05, 0x0a, 0x02, 0x15, ++ 0x06, 0x05, 0x06, 0x47, 0x44, 0x0a, 0x0a, 0x4b, 0x10, 0x07, ++ 0x07, 0x0c, 0x40); ++ ++ /* 5.19.20 Set GIP Option1 (D5h) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETGIP1, ++ 0x1c, 0x1c, 0x1d, 0x1d, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, ++ 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x24, 0x25, 0x18, 0x18, ++ 0x26, 0x27, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, ++ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x20, 0x21, ++ 0x18, 0x18, 0x18, 0x18); ++ ++ /* 5.19.21 Set GIP Option2 (D6h) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETGIP2, ++ 0x1c, 0x1c, 0x1d, 0x1d, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, ++ 0x01, 0x00, 0x0b, 0x0a, 0x09, 0x08, 0x21, 0x20, 0x18, 0x18, ++ 0x27, 0x26, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, ++ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x25, 0x24, ++ 0x18, 0x18, 0x18, 0x18); ++ ++ /* 5.19.25 SETGAMMA: Set gamma curve related setting (E0h) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETGAMMA, ++ 0x00, 0x0a, 0x15, 0x1b, 0x1e, 0x21, 0x24, 0x22, 0x47, 0x56, ++ 0x65, 0x66, 0x6e, 0x82, 0x88, 0x8b, 0x9a, 0x9d, 0x98, 0xa8, ++ 0xb9, 0x5d, 0x5c, 0x61, 0x66, 0x6a, 0x6f, 0x7f, 0x7f, 0x00, ++ 0x0a, 0x15, 0x1b, 0x1e, 0x21, 0x24, 0x22, 0x47, 0x56, 0x65, ++ 0x65, 0x6e, 0x81, 0x87, 0x8b, 0x98, 0x9d, 0x99, 0xa8, 0xba, ++ 0x5d, 0x5d, 0x62, 0x67, 0x6b, 0x72, 0x7f, 0x7f); ++ ++ /* Unknown command, not listed in the HX8394-F datasheet */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_UNKNOWN1, ++ 0x1f, 0x31); ++ ++ /* 5.19.17 SETPANEL (CCh) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETPANEL, ++ 0x0b); ++ ++ /* Unknown command, not listed in the HX8394-F datasheet */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_UNKNOWN3, ++ 0x02); ++ ++ /* 5.19.11 Set register bank (BDh) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETREGBANK, ++ 0x02); ++ ++ /* Unknown command, not listed in the HX8394-F datasheet */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_UNKNOWN4, ++ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff); ++ ++ /* 5.19.11 Set register bank (BDh) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETREGBANK, ++ 0x00); ++ ++ /* 5.19.11 Set register bank (BDh) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETREGBANK, ++ 0x01); ++ ++ /* 5.19.2 SETPOWER: Set power (B1h) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETPOWER, ++ 0x00); ++ ++ /* 5.19.11 Set register bank (BDh) */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETREGBANK, ++ 0x00); ++ ++ /* Unknown command, not listed in the HX8394-F datasheet */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_UNKNOWN5, ++ 0x40, 0x81, 0x50, 0x00, 0x1a, 0xfc, 0x01); ++ ++ /* Unknown command, not listed in the HX8394-F datasheet */ ++ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_UNKNOWN2, ++ 0xed); ++ ++ return 0; ++} ++ ++static const struct drm_display_mode powkiddy_x55_mode = { ++ .hdisplay = 720, ++ .hsync_start = 720 + 44, ++ .hsync_end = 720 + 44 + 20, ++ .htotal = 720 + 44 + 20 + 20, ++ .vdisplay = 1280, ++ .vsync_start = 1280 + 12, ++ .vsync_end = 1280 + 12 + 10, ++ .vtotal = 1280 + 12 + 10 + 10, ++ .clock = 63290, ++ .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, ++ .width_mm = 67, ++ .height_mm = 121, ++}; ++ ++static const struct hx8394_panel_desc powkiddy_x55_desc = { ++ .mode = &powkiddy_x55_mode, ++ .lanes = 4, ++ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | ++ MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET, ++ .format = MIPI_DSI_FMT_RGB888, ++ .init_sequence = powkiddy_x55_init_sequence, ++}; ++ + static int hx8394_enable(struct drm_panel *panel) + { + struct hx8394 *ctx = panel_to_hx8394(panel); +@@ -419,6 +555,7 @@ static void hx8394_remove(struct mipi_dsi_device *dsi) + + static const struct of_device_id hx8394_of_match[] = { + { .compatible = "hannstar,hsd060bhw4", .data = &hsd060bhw4_desc }, ++ { .compatible = "powkiddy,x55-panel", .data = &powkiddy_x55_desc }, + { /* sentinel */ } + }; + MODULE_DEVICE_TABLE(of, hx8394_of_match); +-- +2.34.1 +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH V2 07/10] clk: rockchip: Mark pclk_usb as critical on rk3568 +Date: Mon, 4 Dec 2023 12:57:16 -0600 [thread overview] +Message-ID: <20231204185719.569021-8-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> + +From: Chris Morgan + +In the reference manual under "2.8.6 NIU Clock gating reliance" +it is stated that pclk_usb_niu has a dependency on hclk_usb_niu. + +While the manual does not state that this is a bi-directional +relationship it was noted that the sdmmc2 failed to operate for me in +mmc mode if the pclk_usb was not marked as critical. The parent clock +of the hclk_sdmmc2 is hclk_usb. + +Signed-off-by: Chris Morgan +--- + drivers/clk/rockchip/clk-rk3568.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/clk/rockchip/clk-rk3568.c b/drivers/clk/rockchip/clk-rk3568.c +index bfbcbb744327..c4fa2375dbfb 100644 +--- a/drivers/clk/rockchip/clk-rk3568.c ++++ b/drivers/clk/rockchip/clk-rk3568.c +@@ -1595,6 +1595,7 @@ static const char *const rk3568_cru_critical_clocks[] __initconst = { + "pclk_php", + "hclk_usb", + "hclk_vo", ++ "pclk_usb", + }; + + static const char *const rk3568_pmucru_critical_clocks[] __initconst = { +-- +2.34.1 +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH V2 08/10] clk: rockchip: rk3568: Add PLL rate for 126.4MHz +Date: Mon, 4 Dec 2023 12:57:17 -0600 [thread overview] +Message-ID: <20231204185719.569021-9-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add support for a PLL rate of 126.4MHz so that the Powkiddy X55 panel +can run at a requested 60hz. + +I have confirmed this rate fits with all the constraints +listed in the TRM for the VPLL (as an integer PLL) in Part 1 "Chapter +2 Clock & Reset Unit (CRU)." + +Signed-off-by: Chris Morgan +--- + drivers/clk/rockchip/clk-rk3568.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/clk/rockchip/clk-rk3568.c b/drivers/clk/rockchip/clk-rk3568.c +index c4fa2375dbfb..fa408fedf625 100644 +--- a/drivers/clk/rockchip/clk-rk3568.c ++++ b/drivers/clk/rockchip/clk-rk3568.c +@@ -78,6 +78,7 @@ static struct rockchip_pll_rate_table rk3568_pll_rates[] = { + RK3036_PLL_RATE(200000000, 1, 100, 3, 4, 1, 0), + RK3036_PLL_RATE(148500000, 1, 99, 4, 4, 1, 0), + RK3036_PLL_RATE(135000000, 2, 45, 4, 1, 1, 0), ++ RK3036_PLL_RATE(126400000, 1, 79, 5, 3, 1, 0), + RK3036_PLL_RATE(119000000, 3, 119, 4, 2, 1, 0), + RK3036_PLL_RATE(115200000, 1, 24, 5, 1, 1, 0), + RK3036_PLL_RATE(108000000, 2, 45, 5, 1, 1, 0), +-- +2.34.1 +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan , + Krzysztof Kozlowski +Subject: [PATCH V2 09/10] dt-bindings: arm: rockchip: Add Powkiddy X55 +Date: Mon, 4 Dec 2023 12:57:18 -0600 [thread overview] +Message-ID: <20231204185719.569021-10-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> + +From: Chris Morgan + +The Powkiddy RK2023 is a handheld gaming device made by Powkiddy and +powered by the Rockchip RK3566 SoC. This device is somewhat similar +to the existing Powkiddy RK3566 devices, which have been grouped +together with a previous commit[1]. + +[1] https://lore.kernel.org/linux-rockchip/20231117202536.1387815-1-macroalpha82@gmail.com/T/#m4764997cfafaca22fe677200de96caa5fb8f0005 + +Signed-off-by: Chris Morgan +Acked-by: Krzysztof Kozlowski +--- + Documentation/devicetree/bindings/arm/rockchip.yaml | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Documentation/devicetree/bindings/arm/rockchip.yaml b/Documentation/devicetree/bindings/arm/rockchip.yaml +index 021a0e95ba62..5e22f247ee6e 100644 +--- a/Documentation/devicetree/bindings/arm/rockchip.yaml ++++ b/Documentation/devicetree/bindings/arm/rockchip.yaml +@@ -681,6 +681,7 @@ properties: + - enum: + - powkiddy,rgb30 + - powkiddy,rk2023 ++ - powkiddy,x55 + - const: rockchip,rk3566 + + - description: Radxa Compute Module 3(CM3) +-- +2.34.1 +From: Chris Morgan +To: linux-rockchip@lists.infradead.org +Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, + devicetree@vger.kernel.org, sboyd@kernel.org, + mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, + maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, + airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, + neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, + conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, + robh+dt@kernel.org, Chris Morgan +Subject: [PATCH V2 10/10] arm64: dts: rockchip: Add Powkiddy X55 +Date: Mon, 4 Dec 2023 12:57:19 -0600 [thread overview] +Message-ID: <20231204185719.569021-11-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add support for the Powkiddy X55. The Powkiddy RK2023 is a handheld +gaming device with a 720p 5.5 inch screen powered by the Rockchip +RK3566 SoC. It includes a Realtek 8821cs WiFi/BT module, 2 ADC +joysticks powered by 4 dedicated ADC channels, and several GPIO +face buttons. There are 2 SDMMC slots (sdmmc1 and sdmmc3), and an +8GB internal eMMC. + +Signed-off-by: Chris Morgan +--- + arch/arm64/boot/dts/rockchip/Makefile | 1 + + .../boot/dts/rockchip/rk3566-powkiddy-x55.dts | 926 ++++++++++++++++++ + 2 files changed, 927 insertions(+) + create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x55.dts + +diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile +index 9dcb65f76342..a1a06e33a299 100644 +--- a/arch/arm64/boot/dts/rockchip/Makefile ++++ b/arch/arm64/boot/dts/rockchip/Makefile +@@ -82,6 +82,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.1.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.2.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-rgb30.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-rk2023.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-x55.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-a.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-b.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-radxa-cm3-io.dtb +diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x55.dts b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x55.dts +new file mode 100644 +index 000000000000..4786b19fd017 +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x55.dts +@@ -0,0 +1,926 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include ++#include ++#include ++#include ++#include ++#include "rk3566.dtsi" ++ ++/ { ++ model = "Powkiddy x55"; ++ compatible = "powkiddy,x55", "rockchip,rk3566"; ++ ++ aliases { ++ mmc0 = &sdhci; ++ mmc1 = &sdmmc0; ++ mmc2 = &sdmmc2; ++ mmc3 = &sdmmc1; ++ }; ++ ++ chosen: chosen { ++ stdout-path = "serial2:1500000n8"; ++ }; ++ ++ adc_joystick: adc-joystick { ++ compatible = "adc-joystick"; ++ io-channels = <&saradc 0>, <&saradc 1>, ++ <&saradc 2>, <&saradc 3>; ++ poll-interval = <60>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ axis@0 { ++ reg = <0>; ++ abs-flat = <30>; ++ abs-fuzz = <20>; ++ abs-range = <15 1023>; ++ linux,code = ; ++ }; ++ ++ axis@1 { ++ reg = <1>; ++ abs-flat = <30>; ++ abs-fuzz = <20>; ++ abs-range = <1023 15>; ++ linux,code = ; ++ }; ++ ++ axis@2 { ++ reg = <2>; ++ abs-flat = <30>; ++ abs-fuzz = <20>; ++ abs-range = <15 1023>; ++ linux,code = ; ++ }; ++ ++ axis@3 { ++ reg = <3>; ++ abs-flat = <30>; ++ abs-fuzz = <20>; ++ abs-range = <1023 15>; ++ linux,code = ; ++ }; ++ }; ++ ++ backlight: backlight { ++ compatible = "pwm-backlight"; ++ power-supply = <&vcc_sys>; ++ pwms = <&pwm4 0 25000 0>; ++ }; ++ ++ battery: battery { ++ compatible = "simple-battery"; ++ charge-full-design-microamp-hours = <4000000>; ++ charge-term-current-microamp = <300000>; ++ constant-charge-current-max-microamp = <2000000>; ++ constant-charge-voltage-max-microvolt = <4300000>; ++ factory-internal-resistance-micro-ohms = <91000>; ++ voltage-max-design-microvolt = <4138000>; ++ voltage-min-design-microvolt = <3400000>; ++ ++ ocv-capacity-celsius = <20>; ++ ocv-capacity-table-0 = <4138000 100>, <4083000 95>, <4059000 90>, <4044000 85>, ++ <4030000 80>, <4020000 75>, <4006000 70>, <3972000 65>, ++ <3934000 60>, <3904000 55>, <3878000 50>, <3857000 45>, ++ <3843000 40>, <3826000 35>, <3801000 30>, <3768000 25>, ++ <3735000 20>, <3688000 15>, <3621000 10>, <3553000 5>, ++ <3400000 0>; ++ }; ++ ++ gpio_keys_control: gpio-keys-control { ++ compatible = "gpio-keys"; ++ pinctrl-0 = <&btn_pins_ctrl>; ++ pinctrl-names = "default"; ++ ++ button-a { ++ gpios = <&gpio3 RK_PD3 GPIO_ACTIVE_LOW>; ++ label = "EAST"; ++ linux,code = ; ++ }; ++ ++ button-b { ++ gpios = <&gpio3 RK_PD2 GPIO_ACTIVE_LOW>; ++ label = "SOUTH"; ++ linux,code = ; ++ }; ++ ++ button-down { ++ gpios = <&gpio4 RK_PA1 GPIO_ACTIVE_LOW>; ++ label = "DPAD-DOWN"; ++ linux,code = ; ++ }; ++ ++ button-l1 { ++ gpios = <&gpio3 RK_PD0 GPIO_ACTIVE_LOW>; ++ label = "TL"; ++ linux,code = ; ++ }; ++ ++ button-l2 { ++ gpios = <&gpio3 RK_PD1 GPIO_ACTIVE_LOW>; ++ label = "TL2"; ++ linux,code = ; ++ }; ++ ++ button-left { ++ gpios = <&gpio3 RK_PD6 GPIO_ACTIVE_LOW>; ++ label = "DPAD-LEFT"; ++ linux,code = ; ++ }; ++ ++ button-right { ++ gpios = <&gpio3 RK_PD7 GPIO_ACTIVE_LOW>; ++ label = "DPAD-RIGHT"; ++ linux,code = ; ++ }; ++ ++ button-select { ++ gpios = <&gpio4 RK_PA4 GPIO_ACTIVE_LOW>; ++ label = "SELECT"; ++ linux,code = ; ++ }; ++ ++ button-start { ++ gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_LOW>; ++ label = "START"; ++ linux,code = ; ++ }; ++ ++ button-thumbl { ++ gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_LOW>; ++ label = "THUMBL"; ++ linux,code = ; ++ }; ++ ++ button-thumbr { ++ gpios = <&gpio4 RK_PB0 GPIO_ACTIVE_LOW>; ++ label = "THUMBR"; ++ linux,code = ; ++ }; ++ ++ button-r1 { ++ gpios = <&gpio3 RK_PC6 GPIO_ACTIVE_LOW>; ++ label = "TR"; ++ linux,code = ; ++ }; ++ ++ button-r2 { ++ gpios = <&gpio3 RK_PC7 GPIO_ACTIVE_LOW>; ++ label = "TR2"; ++ linux,code = ; ++ }; ++ ++ button-up { ++ gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_LOW>; ++ label = "DPAD-UP"; ++ linux,code = ; ++ }; ++ ++ button-x { ++ gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>; ++ label = "NORTH"; ++ linux,code = ; ++ }; ++ ++ button-y { ++ gpios = <&gpio3 RK_PD4 GPIO_ACTIVE_LOW>; ++ label = "WEST"; ++ linux,code = ; ++ }; ++ }; ++ ++ gpio_keys_vol: gpio-keys-vol { ++ compatible = "gpio-keys"; ++ autorepeat; ++ pinctrl-0 = <&btn_pins_vol>; ++ pinctrl-names = "default"; ++ ++ button-voldown { ++ gpios = <&gpio4 RK_PA3 GPIO_ACTIVE_LOW>; ++ label = "VOLUMEDOWN"; ++ linux,code = ; ++ }; ++ ++ button-volup { ++ gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_LOW>; ++ label = "VOLUMEUP"; ++ linux,code = ; ++ }; ++ }; ++ ++ gpio_leds: gpio-leds { ++ compatible = "gpio-leds"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&led_pins>; ++ ++ red_led: led-0 { ++ color = ; ++ default-state = "off"; ++ gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>; ++ function = LED_FUNCTION_STATUS; ++ }; ++ ++ green_led: led-1 { ++ color = ; ++ default-state = "on"; ++ gpios = <&gpio4 RK_PB5 GPIO_ACTIVE_HIGH>; ++ function = LED_FUNCTION_POWER; ++ }; ++ ++ amber_led: led-2 { ++ color = ; ++ gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>; ++ function = LED_FUNCTION_CHARGING; ++ }; ++ ++ }; ++ ++ hdmi-con { ++ compatible = "hdmi-connector"; ++ ddc-i2c-bus = <&i2c5>; ++ type = "c"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; ++ ++ sdio_pwrseq: sdio-pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ clocks = <&rk817 1>; ++ clock-names = "ext_clock"; ++ pinctrl-0 = <&wifi_enable_h>; ++ pinctrl-names = "default"; ++ post-power-on-delay-ms = <200>; ++ reset-gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_LOW>; ++ }; ++ ++ /* Channels reversed for both headphones and speakers. */ ++ sound { ++ compatible = "simple-audio-card"; ++ pinctrl-0 = <&hp_det>; ++ pinctrl-names = "default"; ++ simple-audio-card,name = "rk817_ext"; ++ simple-audio-card,aux-devs = <&spk_amp>; ++ simple-audio-card,format = "i2s"; ++ simple-audio-card,hp-det-gpio = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>; ++ simple-audio-card,mclk-fs = <256>; ++ simple-audio-card,widgets = ++ "Microphone", "Mic Jack", ++ "Headphone", "Headphones", ++ "Speaker", "Internal Speakers"; ++ simple-audio-card,routing = ++ "MICL", "Mic Jack", ++ "Headphones", "HPOL", ++ "Headphones", "HPOR", ++ "Internal Speakers", "Speaker Amp OUTL", ++ "Internal Speakers", "Speaker Amp OUTR", ++ "Speaker Amp INL", "HPOL", ++ "Speaker Amp INR", "HPOR"; ++ simple-audio-card,pin-switches = "Internal Speakers"; ++ ++ simple-audio-card,codec { ++ sound-dai = <&rk817>; ++ }; ++ ++ simple-audio-card,cpu { ++ sound-dai = <&i2s1_8ch>; ++ }; ++ }; ++ ++ spk_amp: audio-amplifier { ++ compatible = "simple-audio-amplifier"; ++ enable-gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>; ++ pinctrl-0 = <&spk_amp_enable_h>; ++ pinctrl-names = "default"; ++ sound-name-prefix = "Speaker Amp"; ++ }; ++ ++ vcc5v0_host: regulator-vcc5v0-host { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ gpio = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>; ++ pinctrl-0 = <&vcc5v0_host_en>; ++ pinctrl-names = "default"; ++ regulator-name = "vcc5v0_host"; ++ vin-supply = <&dcdc_boost>; ++ }; ++ ++ vcc_lcd: regulator-vcc-lcd { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ gpio = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>; ++ pinctrl-0 = <&vcc_lcd_en>; ++ pinctrl-names = "default"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc_lcd"; ++ }; ++ ++ vcc_sys: regulator-vcc-sys { ++ compatible = "regulator-fixed"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3800000>; ++ regulator-max-microvolt = <3800000>; ++ regulator-name = "vcc_sys"; ++ }; ++ ++ vcc_wifi: regulator-vcc-wifi { ++ compatible = "regulator-fixed"; ++ gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>; ++ pinctrl-0 = <&vcc_wifi_h>; ++ pinctrl-names = "default"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc_wifi"; ++ }; ++}; ++ ++&combphy1 { ++ status = "okay"; ++}; ++ ++&cru { ++ assigned-clocks = <&pmucru CLK_RTC_32K>, <&cru PLL_GPLL>, ++ <&pmucru PLL_PPLL>, <&cru PLL_VPLL>; ++ assigned-clock-rates = <32768>, <1200000000>, ++ <200000000>, <126400000>; ++}; ++ ++&cpu0 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu1 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu2 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu3 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&dsi_dphy0 { ++ status = "okay"; ++}; ++ ++&dsi0 { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ ports { ++ dsi0_in: port@0 { ++ reg = <0>; ++ dsi0_in_vp1: endpoint { ++ remote-endpoint = <&vp1_out_dsi0>; ++ }; ++ }; ++ ++ dsi0_out: port@1 { ++ reg = <1>; ++ mipi_out_panel: endpoint { ++ remote-endpoint = <&mipi_in_panel>; ++ }; ++ }; ++ }; ++ ++ panel: panel@0 { ++ compatible = "powkiddy,x55-panel", "himax,hx8394"; ++ reg = <0>; ++ backlight = <&backlight>; ++ iovcc-supply = <&vcc_lcd>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&lcd_rst>; ++ reset-gpios = <&gpio0 RK_PD5 GPIO_ACTIVE_LOW>; ++ rotation = <270>; ++ vcc-supply = <&vcc_lcd>; ++ ++ port { ++ mipi_in_panel: endpoint { ++ remote-endpoint = <&mipi_out_panel>; ++ }; ++ }; ++ }; ++}; ++ ++&gpu { ++ mali-supply = <&vdd_gpu>; ++ status = "okay"; ++}; ++ ++&hdmi { ++ ddc-i2c-bus = <&i2c5>; ++ pinctrl-0 = <&hdmitxm0_cec>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; ++ ++&hdmi_in { ++ hdmi_in_vp0: endpoint { ++ remote-endpoint = <&vp0_out_hdmi>; ++ }; ++}; ++ ++&hdmi_out { ++ hdmi_out_con: endpoint { ++ remote-endpoint = <&hdmi_con_in>; ++ }; ++}; ++ ++&hdmi_sound { ++ status = "okay"; ++}; ++ ++&i2c0 { ++ status = "okay"; ++ ++ rk817: pmic@20 { ++ compatible = "rockchip,rk817"; ++ reg = <0x20>; ++ assigned-clocks = <&cru I2S1_MCLKOUT_TX>; ++ assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>; ++ clock-names = "mclk"; ++ clock-output-names = "rk808-clkout1", "rk808-clkout2"; ++ clocks = <&cru I2S1_MCLKOUT_TX>; ++ interrupt-parent = <&gpio0>; ++ interrupts = ; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2s1m0_mclk>, <&pmic_int_l>; ++ wakeup-source; ++ #clock-cells = <1>; ++ #sound-dai-cells = <0>; ++ ++ vcc1-supply = <&vcc_sys>; ++ vcc2-supply = <&vcc_sys>; ++ vcc3-supply = <&vcc_sys>; ++ vcc4-supply = <&vcc_sys>; ++ vcc5-supply = <&vcc_sys>; ++ vcc6-supply = <&vcc_sys>; ++ vcc7-supply = <&vcc_sys>; ++ vcc8-supply = <&vcc_sys>; ++ vcc9-supply = <&dcdc_boost>; ++ ++ regulators { ++ vdd_logic: DCDC_REG1 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vdd_logic"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ regulator-suspend-microvolt = <900000>; ++ }; ++ }; ++ ++ vdd_gpu: DCDC_REG2 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vdd_gpu"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_ddr: DCDC_REG3 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vcc_ddr"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ vcc_3v3: DCDC_REG4 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vcc_3v3"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcca1v8_pmu: LDO_REG1 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcca1v8_pmu"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <1800000>; ++ }; ++ }; ++ ++ vdda_0v9: LDO_REG2 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <900000>; ++ regulator-max-microvolt = <900000>; ++ regulator-name = "vdda_0v9"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vdda0v9_pmu: LDO_REG3 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <900000>; ++ regulator-max-microvolt = <900000>; ++ regulator-name = "vdda0v9_pmu"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <900000>; ++ }; ++ }; ++ ++ vccio_acodec: LDO_REG4 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vccio_acodec"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vccio_sd: LDO_REG5 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vccio_sd"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc3v3_pmu: LDO_REG6 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc3v3_pmu"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcc_1v8: LDO_REG7 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc_1v8"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc1v8_dvp: LDO_REG8 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc1v8_dvp"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ vcc2v8_dvp: LDO_REG9 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc2v8_dvp"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ dcdc_boost: BOOST { ++ regulator-min-microvolt = <4700000>; ++ regulator-max-microvolt = <5400000>; ++ regulator-name = "boost"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ otg_switch: OTG_SWITCH { ++ regulator-name = "otg_switch"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ }; ++ ++ rk817_charger: charger { ++ monitored-battery = <&battery>; ++ rockchip,resistor-sense-micro-ohms = <10000>; ++ rockchip,sleep-enter-current-microamp = <150000>; ++ rockchip,sleep-filter-current-microamp = <100000>; ++ }; ++ ++ }; ++ ++ vdd_cpu: regulator@1c { ++ compatible = "tcs,tcs4525"; ++ reg = <0x1c>; ++ fcs,suspend-voltage-selector = <1>; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <712500>; ++ regulator-max-microvolt = <1390000>; ++ regulator-name = "vdd_cpu"; ++ regulator-ramp-delay = <2300>; ++ vin-supply = <&vcc_sys>; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++}; ++ ++&i2c5 { ++ pinctrl-0 = <&i2c5m1_xfer>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; ++ ++&i2s0_8ch { ++ status = "okay"; ++}; ++ ++&i2s1_8ch { ++ pinctrl-0 = <&i2s1m0_sclktx>, <&i2s1m0_lrcktx>, <&i2s1m0_sdi0>, ++ <&i2s1m0_sdo0>; ++ pinctrl-names = "default"; ++ rockchip,trcm-sync-tx-only; ++ status = "okay"; ++}; ++ ++&pinctrl { ++ audio-amplifier { ++ spk_amp_enable_h: spk-amp-enable-h { ++ rockchip,pins = ++ <4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ gpio-control { ++ btn_pins_ctrl: btn-pins-ctrl { ++ rockchip,pins = ++ <3 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD1 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ ++ btn_pins_vol: btn-pins-vol { ++ rockchip,pins = ++ <4 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ gpio-lcd { ++ lcd_rst: lcd-rst { ++ rockchip,pins = ++ <0 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ gpio-leds { ++ led_pins: led-pins { ++ rockchip,pins = ++ <4 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>, ++ <4 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>, ++ <4 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ hp-detect { ++ hp_det: hp-det { ++ rockchip,pins = ++ <4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ pmic { ++ pmic_int_l: pmic-int-l { ++ rockchip,pins = ++ <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ sdio-pwrseq { ++ wifi_enable_h: wifi-enable-h { ++ rockchip,pins = ++ <0 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ usb { ++ vcc5v0_host_en: vcc5v0-host-en { ++ rockchip,pins = ++ <4 RK_PC4 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ ++ vcc5v0_otg_en: vcc5v0-otg-en { ++ rockchip,pins = ++ <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ vcc-lcd { ++ vcc_lcd_en: vcc-lcd-en { ++ rockchip,pins = ++ <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ vcc-wifi { ++ vcc_wifi_h: vcc-wifi-h { ++ rockchip,pins = ++ <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++}; ++ ++&pmu_io_domains { ++ status = "okay"; ++ pmuio1-supply = <&vcc3v3_pmu>; ++ pmuio2-supply = <&vcca1v8_pmu>; ++ vccio1-supply = <&vccio_acodec>; ++ vccio3-supply = <&vccio_sd>; ++ vccio4-supply = <&vcca1v8_pmu>; ++ vccio5-supply = <&vcc2v8_dvp>; ++ vccio6-supply = <&vcc1v8_dvp>; ++ vccio7-supply = <&vcc_3v3>; ++}; ++ ++&pwm4 { ++ status = "okay"; ++}; ++ ++&saradc { ++ vref-supply = <&vcc_1v8>; ++ status = "okay"; ++}; ++ ++&sdhci { ++ bus-width = <8>; ++ mmc-hs200-1_8v; ++ non-removable; ++ pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>, ++ <&emmc_datastrobe>, <&emmc_rstnout>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; ++ ++&sdmmc0 { ++ bus-width = <4>; ++ cap-mmc-highspeed; ++ cap-sd-highspeed; ++ disable-wp; ++ pinctrl-0 = <&sdmmc0_bus4>, <&sdmmc0_clk>, <&sdmmc0_cmd>, ++ <&sdmmc0_det>; ++ pinctrl-names = "default"; ++ sd-uhs-sdr104; ++ vqmmc-supply = <&vccio_sd>; ++ status = "okay"; ++}; ++ ++&sdmmc1 { ++ bus-width = <4>; ++ cap-sd-highspeed; ++ cap-sdio-irq; ++ keep-power-in-suspend; ++ mmc-pwrseq = <&sdio_pwrseq>; ++ non-removable; ++ pinctrl-0 = <&sdmmc1_bus4>, <&sdmmc1_cmd>, <&sdmmc1_clk>; ++ pinctrl-names = "default"; ++ vmmc-supply = <&vcc_wifi>; ++ status = "okay"; ++}; ++ ++&sdmmc2 { ++ bus-width = <4>; ++ cap-mmc-highspeed; ++ cap-sd-highspeed; ++ disable-wp; ++ pinctrl-0 = <&sdmmc2m1_bus4>, <&sdmmc2m1_cmd>, <&sdmmc2m1_clk>, ++ <&sdmmc2m1_det>; ++ pinctrl-names = "default"; ++ sd-uhs-sdr104; ++ vqmmc-supply = <&vcc2v8_dvp>; ++ status = "okay"; ++}; ++ ++&tsadc { ++ rockchip,hw-tshut-mode = <1>; ++ rockchip,hw-tshut-polarity = <0>; ++ status = "okay"; ++}; ++ ++&uart1 { ++ pinctrl-0 = <&uart1m0_xfer>, <&uart1m0_ctsn>, <&uart1m0_rtsn>; ++ pinctrl-names = "default"; ++ uart-has-rtscts; ++ status = "okay"; ++ ++ bluetooth { ++ compatible = "realtek,rtl8821cs-bt", "realtek,rtl8723bs-bt"; ++ device-wake-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>; ++ enable-gpios = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>; ++ host-wake-gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>; ++ }; ++}; ++ ++&uart2 { ++ status = "okay"; ++}; ++ ++&usb_host0_xhci { ++ phys = <&usb2phy0_otg>; ++ phy-names = "usb2-phy"; ++ status = "okay"; ++}; ++ ++&usb_host1_xhci { ++ status = "okay"; ++}; ++ ++&usb2phy0 { ++ status = "okay"; ++}; ++ ++&usb2phy0_otg { ++ status = "okay"; ++}; ++ ++&usb2phy0_host { ++ phy-supply = <&vcc5v0_host>; ++ status = "okay"; ++}; ++ ++&vop { ++ assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; ++ assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; ++ status = "okay"; ++}; ++ ++&vop_mmu { ++ status = "okay"; ++}; ++ ++&vp0 { ++ vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { ++ reg = ; ++ remote-endpoint = <&hdmi_in_vp0>; ++ }; ++}; ++ ++&vp1 { ++ vp1_out_dsi0: endpoint@ROCKCHIP_VOP2_EP_MIPI0 { ++ reg = ; ++ remote-endpoint = <&dsi0_in_vp1>; ++ }; ++}; +-- +2.34.1 diff --git a/projects/Rockchip/packages/u-boot/package.mk b/projects/Rockchip/packages/u-boot/package.mk index a3a8a2325d..040b998993 100644 --- a/projects/Rockchip/packages/u-boot/package.mk +++ b/projects/Rockchip/packages/u-boot/package.mk @@ -13,7 +13,7 @@ GET_HANDLER_SUPPORT="git" PKG_PATCH_DIRS+="${DEVICE}" case ${DEVICE} in - RK358*) + RK358*) PKG_URL="${PKG_SITE}/rk35xx-uboot.git" PKG_VERSION="d34ff0716" PKG_GIT_CLONE_BRANCH="v2017.09-rk3588" diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/002-v2-add-powkiddy-x55.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/002-v2-add-powkiddy-x55.patch index bfc17db1ea..91f6bfaa1e 100644 --- a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/002-v2-add-powkiddy-x55.patch +++ b/projects/Rockchip/packages/u-boot/patches/RK3566-ML/002-v2-add-powkiddy-x55.patch @@ -1228,7 +1228,7 @@ index 0000000000..f9a513f97c +CONFIG_SPL_LOAD_FIT=y +CONFIG_LEGACY_IMAGE_FORMAT=y +CONFIG_OF_STDOUT_VIA_ALIAS=y -+CONFIG_DEFAULT_FDT_FILE="rockchip/rk3566-powkiddy-x55.dtb" ++CONFIG_DEFAULT_FDT_FILE="rk3566-powkiddy-x55.dtb" +# CONFIG_DISPLAY_CPUINFO is not set +CONFIG_DISPLAY_BOARDINFO_LATE=y +CONFIG_SPL_MAX_SIZE=0x40000 diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-X55-ML/001-v3-add_additional_boards_and_features_to_rgxx3.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-X55-ML/001-v3-add_additional_boards_and_features_to_rgxx3.patch new file mode 100644 index 0000000000..602bbcfa8e --- /dev/null +++ b/projects/Rockchip/packages/u-boot/patches/RK3566-X55-ML/001-v3-add_additional_boards_and_features_to_rgxx3.patch @@ -0,0 +1,919 @@ +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 0/7] Add Additional Boards and Features to RGxx3 +Date: Mon, 11 Dec 2023 17:21:18 -0600 [thread overview] +Message-ID: <20231211232125.171438-1-macroalpha82@gmail.com> (raw) + +From: Chris Morgan + +The RGxx3 is a pseudo-device for U-Boot that works for every Anbernic +RGxx3 series device on the market. Add support for another series of +very similar devices from Powkiddy. + +Changes since V2: + - Modify the mach-rockchip level rockchip_dnl_key_pressed() so that + we can also call it in SPL mode and eliminate the board specific + function. This requires adding ADC support to SPL. Additionally, + I had to change the regulator for the saradc to a fixed regulator + and add GPIO and regulator support to SPL. + - Move the board specific board_rng_seed to the mach-rockchip level + board file so that other rockchip boards with a hardware RNG can + benefit. This should only be called if both the Rockchip + hardware RNG as well as the rng seed functions are enabled. + - Add two new boards (the RG-ARC-D and RG-ARC-S). I removed the + previous code review due to the extensive changes made. + +Changes since V1: + - Update verbiage around function button to say "recovery" mode + instead of calling it "maskrom" mode, which has a specific + meaning. Also note that recovery function was done in a board + specific manner to ensure it can run early. + - Update board level documentation for the RGxx3. + +Chris Morgan (7): + board: rockchip: Refactor panel auto-detect code + spl: Add Kconfig options for ADC + rockchip: boot_mode: Allow rockchip_dnl_key_pressed() in SPL + board: rockchip: Add Recovery Button for Anbernic RGxx3 + rockchip: board: Add board_rng_seed() for all Rockchip devices + board: rockchip: Add support for new boards to RGxx3 + doc: board: anbernic: Update rgxx3 to add new boards + + .../arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi | 11 + + arch/arm/mach-rockchip/Makefile | 4 +- + arch/arm/mach-rockchip/board.c | 32 +++ + arch/arm/mach-rockchip/boot_mode.c | 11 +- + board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 194 +++++++++++------- + common/spl/Kconfig | 7 + + configs/anbernic-rgxx3-rk3566_defconfig | 16 +- + doc/board/anbernic/rgxx3.rst | 20 +- + drivers/Makefile | 1 + + drivers/adc/Makefile | 2 +- + include/configs/anbernic-rgxx3-rk3566.h | 2 + + 11 files changed, 210 insertions(+), 90 deletions(-) + +-- +2.34.1 + +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 1/7] board: rockchip: Refactor panel auto-detect code +Date: Mon, 11 Dec 2023 17:21:19 -0600 [thread overview] +Message-ID: <20231211232125.171438-2-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Make the inability to detect a panel using the auto detection code not +fail the entire boot process. This means that if the panel ID cannot +be read we don't set an environment variable for the panel, and if an +environment variable for the panel is not set we don't attempt to +update the compatible string. Changes to the code also ensure that +when there are multiple compatible strings required for the panel +we use them both, which solves some issues that will pop up soon +for the Linux driver. + +Signed-off-by: Chris Morgan +--- + board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 115 +++++++++++++-------- + 1 file changed, 74 insertions(+), 41 deletions(-) + +diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +index 3f1a42d184..3d0c614623 100644 +--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c ++++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +@@ -40,6 +40,7 @@ struct rg3xx_model { + const char *board; + const char *board_name; + const char *fdtfile; ++ const bool detect_panel; + }; + + enum rgxx3_device_id { +@@ -54,52 +55,67 @@ enum rgxx3_device_id { + + static const struct rg3xx_model rg3xx_model_details[] = { + [RG353M] = { +- 517, /* Observed average from device */ +- "rk3566-anbernic-rg353m", +- "RG353M", +- DTB_DIR "rk3566-anbernic-rg353p.dtb", /* Identical devices */ ++ .adc_value = 517, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg353m", ++ .board_name = "RG353M", ++ /* Device is identical to RG353P. */ ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg353p.dtb", ++ .detect_panel = 1, + }, + [RG353P] = { +- 860, /* Documented value of 860 */ +- "rk3566-anbernic-rg353p", +- "RG353P", +- DTB_DIR "rk3566-anbernic-rg353p.dtb", ++ .adc_value = 860, /* Documented value of 860 */ ++ .board = "rk3566-anbernic-rg353p", ++ .board_name = "RG353P", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg353p.dtb", ++ .detect_panel = 1, + }, + [RG353V] = { +- 695, /* Observed average from device */ +- "rk3566-anbernic-rg353v", +- "RG353V", +- DTB_DIR "rk3566-anbernic-rg353v.dtb", ++ .adc_value = 695, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg353v", ++ .board_name = "RG353V", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg353v.dtb", ++ .detect_panel = 1, + }, + [RG503] = { +- 1023, /* Observed average from device */ +- "rk3566-anbernic-rg503", +- "RG503", +- DTB_DIR "rk3566-anbernic-rg503.dtb", ++ .adc_value = 1023, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg503", ++ .board_name = "RG503", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg503.dtb", ++ .detect_panel = 0, + }, + /* Devices with duplicate ADC value */ + [RG353PS] = { +- 860, /* Observed average from device */ +- "rk3566-anbernic-rg353ps", +- "RG353PS", +- DTB_DIR "rk3566-anbernic-rg353ps.dtb", ++ .adc_value = 860, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg353ps", ++ .board_name = "RG353PS", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg353ps.dtb", ++ .detect_panel = 1, + }, + [RG353VS] = { +- 695, /* Gathered from second hand information */ +- "rk3566-anbernic-rg353vs", +- "RG353VS", +- DTB_DIR "rk3566-anbernic-rg353vs.dtb", ++ .adc_value = 695, /* Gathered from second hand information */ ++ .board = "rk3566-anbernic-rg353vs", ++ .board_name = "RG353VS", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg353vs.dtb", ++ .detect_panel = 1, + }, + }; + + struct rg353_panel { + const u16 id; +- const char *panel_compat; ++ const char *panel_compat[2]; + }; + + static const struct rg353_panel rg353_panel_details[] = { +- { .id = 0x3052, .panel_compat = "newvision,nv3051d"}, +- { .id = 0x3821, .panel_compat = "anbernic,rg353v-panel-v2"}, ++ { ++ .id = 0x3052, ++ .panel_compat[0] = "anbernic,rg353p-panel", ++ .panel_compat[1] = "newvision,nv3051d", ++ }, ++ { ++ .id = 0x3821, ++ .panel_compat[0] = "anbernic,rg353v-panel-v2", ++ .panel_compat[1] = NULL, ++ }, + }; + + /* +@@ -298,11 +314,10 @@ int rgxx3_detect_display(void) + if (!panel) { + printf("Unable to identify panel_id %x\n", + (panel_id[0] << 8) | panel_id[1]); +- env_set("panel", "unknown"); + return -EINVAL; + } + +- env_set("panel", panel->panel_compat); ++ env_set("panel", panel->panel_compat[0]); + + return 0; + } +@@ -367,13 +382,14 @@ int rgxx3_detect_device(void) + rg3xx_model_details[board_id].board_name); + env_set("fdtfile", rg3xx_model_details[board_id].fdtfile); + +- /* Detect the panel type for any device that isn't a 503. */ +- if (board_id == RG503) ++ /* Skip panel detection for when it is not needed. */ ++ if (!rg3xx_model_details[board_id].detect_panel) + return 0; + ++ /* Warn but don't fail for errors in auto-detection of the panel. */ + ret = rgxx3_detect_display(); + if (ret) +- return ret; ++ printf("Failed to detect panel type\n"); + + return 0; + } +@@ -400,7 +416,8 @@ int rk_board_late_init(void) + + int ft_board_setup(void *blob, struct bd_info *bd) + { +- int node, ret; ++ const struct rg353_panel *panel = NULL; ++ int node, ret, i; + char *env; + + /* No fixups necessary for the RG503 */ +@@ -414,6 +431,12 @@ int ft_board_setup(void *blob, struct bd_info *bd) + rg3xx_model_details[RG353M].board_name, + sizeof(rg3xx_model_details[RG353M].board_name)); + ++ env = env_get("panel"); ++ if (!env) { ++ printf("Can't get panel env\n"); ++ return 0; ++ } ++ + /* + * Check if the environment variable doesn't equal the panel. + * If it doesn't, update the devicetree to the correct panel. +@@ -424,12 +447,6 @@ int ft_board_setup(void *blob, struct bd_info *bd) + return -ENODEV; + } + +- env = env_get("panel"); +- if (!env) { +- printf("Can't get panel env\n"); +- return -ENODEV; +- } +- + ret = fdt_node_check_compatible(blob, node, env); + if (ret < 0) + return -ENODEV; +@@ -438,8 +455,24 @@ int ft_board_setup(void *blob, struct bd_info *bd) + if (!ret) + return 0; + +- do_fixup_by_path_string(blob, "/dsi@fe060000/panel@0", +- "compatible", env); ++ /* Panels don't match, search by first compatible value. */ ++ for (i = 0; i < ARRAY_SIZE(rg353_panel_details); i++) { ++ if (!strcmp(env, rg353_panel_details[i].panel_compat[0])) { ++ panel = &rg353_panel_details[i]; ++ break; ++ } ++ } ++ ++ if (!panel) { ++ printf("Unable to identify panel by compat string\n"); ++ return -ENODEV; ++ } ++ ++ /* Set the compatible with the auto-detected values */ ++ fdt_setprop_string(blob, node, "compatible", panel->panel_compat[0]); ++ if (panel->panel_compat[1]) ++ fdt_appendprop_string(blob, node, "compatible", ++ panel->panel_compat[1]); + + return 0; + } +-- +2.34.1 + +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 2/7] spl: Add Kconfig options for ADC +Date: Mon, 11 Dec 2023 17:21:20 -0600 [thread overview] +Message-ID: <20231211232125.171438-3-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add kconfig options to enable ADC in SPL + +Signed-off-by: Chris Morgan +--- + common/spl/Kconfig | 7 +++++++ + drivers/Makefile | 1 + + drivers/adc/Makefile | 2 +- + 3 files changed, 9 insertions(+), 1 deletion(-) + +diff --git a/common/spl/Kconfig b/common/spl/Kconfig +index c521b02f4a..ada9dcea5c 100644 +--- a/common/spl/Kconfig ++++ b/common/spl/Kconfig +@@ -579,6 +579,13 @@ config SPL_FIT_IMAGE_TINY + ensure this information is available to the next image + invoked). + ++config SPL_ADC ++ bool "Support ADC drivers" ++ help ++ Enable ADC drivers in SPL. These drivers can allow the reading of ++ analog values from one or more channels. Enable this option to ++ build the drivers in drivers/adc as part of an SPL build. ++ + config SPL_CACHE + bool "Support CACHE drivers" + help +diff --git a/drivers/Makefile b/drivers/Makefile +index bf73b7718c..81ba2c534e 100644 +--- a/drivers/Makefile ++++ b/drivers/Makefile +@@ -1,5 +1,6 @@ + # SPDX-License-Identifier: GPL-2.0+ + ++obj-$(CONFIG_$(SPL_)ADC) += adc/ + obj-$(CONFIG_$(SPL_TPL_)BIOSEMU) += bios_emulator/ + obj-$(CONFIG_$(SPL_TPL_)BLK) += block/ + obj-$(CONFIG_$(SPL_TPL_)BOOTCOUNT_LIMIT) += bootcount/ +diff --git a/drivers/adc/Makefile b/drivers/adc/Makefile +index 5336c82097..9eb07769b0 100644 +--- a/drivers/adc/Makefile ++++ b/drivers/adc/Makefile +@@ -4,7 +4,7 @@ + # Przemyslaw Marczak + # + +-obj-$(CONFIG_ADC) += adc-uclass.o ++obj-$(CONFIG_$(SPL_)ADC) += adc-uclass.o + obj-$(CONFIG_ADC_EXYNOS) += exynos-adc.o + obj-$(CONFIG_ADC_SANDBOX) += sandbox.o + obj-$(CONFIG_SARADC_ROCKCHIP) += rockchip-saradc.o +-- +2.34.1 + +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 3/7] rockchip: boot_mode: Allow rockchip_dnl_key_pressed() in SPL +Date: Mon, 11 Dec 2023 17:21:21 -0600 [thread overview] +Message-ID: <20231211232125.171438-4-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Update the rockchip_dnl_key_pressed() so that it can run in +SPL. Also change the ADC channel to a define that can be +overridden by a board specific option. + +Signed-off-by: Chris Morgan +--- + arch/arm/mach-rockchip/Makefile | 4 ++-- + arch/arm/mach-rockchip/boot_mode.c | 11 ++++++++++- + 2 files changed, 12 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/mach-rockchip/Makefile b/arch/arm/mach-rockchip/Makefile +index 1dc92066bb..ff089ae949 100644 +--- a/arch/arm/mach-rockchip/Makefile ++++ b/arch/arm/mach-rockchip/Makefile +@@ -15,13 +15,13 @@ obj-tpl-$(CONFIG_ROCKCHIP_PX30) += px30-board-tpl.o + + obj-spl-$(CONFIG_ROCKCHIP_RK3036) += rk3036-board-spl.o + +-ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),) +- + # Always include boot_mode.o, as we bypass it (i.e. turn it off) + # inside of boot_mode.c when CONFIG_ROCKCHIP_BOOT_MODE_REG is 0. This way, + # we can have the preprocessor correctly recognise both 0x0 and 0 + # meaning "turn it off". + obj-y += boot_mode.o ++ ++ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),) + obj-$(CONFIG_ROCKCHIP_COMMON_BOARD) += board.o + obj-$(CONFIG_MISC_INIT_R) += misc.o + endif +diff --git a/arch/arm/mach-rockchip/boot_mode.c b/arch/arm/mach-rockchip/boot_mode.c +index eb8f65ae4e..d2308768be 100644 +--- a/arch/arm/mach-rockchip/boot_mode.c ++++ b/arch/arm/mach-rockchip/boot_mode.c +@@ -38,6 +38,10 @@ void set_back_to_bootrom_dnl_flag(void) + #define KEY_DOWN_MIN_VAL 0 + #define KEY_DOWN_MAX_VAL 30 + ++#ifndef RK_DNL_ADC_CHAN ++#define RK_DNL_ADC_CHAN 1 ++#endif ++ + __weak int rockchip_dnl_key_pressed(void) + { + unsigned int val; +@@ -52,7 +56,8 @@ __weak int rockchip_dnl_key_pressed(void) + ret = -ENODEV; + uclass_foreach_dev(dev, uc) { + if (!strncmp(dev->name, "saradc", 6)) { +- ret = adc_channel_single_shot(dev->name, 1, &val); ++ ret = adc_channel_single_shot(dev->name, ++ RK_DNL_ADC_CHAN, &val); + break; + } + } +@@ -73,11 +78,13 @@ __weak int rockchip_dnl_key_pressed(void) + + void rockchip_dnl_mode_check(void) + { ++#if CONFIG_IS_ENABLED(ADC) + if (rockchip_dnl_key_pressed()) { + printf("download key pressed, entering download mode..."); + set_back_to_bootrom_dnl_flag(); + do_reset(NULL, 0, 0, NULL); + } ++#endif + } + + int setup_boot_mode(void) +@@ -90,6 +97,7 @@ int setup_boot_mode(void) + boot_mode = readl(reg); + debug("%s: boot mode 0x%08x\n", __func__, boot_mode); + ++#if !defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + /* Clear boot mode */ + writel(BOOT_NORMAL, reg); + +@@ -103,6 +111,7 @@ int setup_boot_mode(void) + env_set("preboot", "setenv preboot; ums mmc 0"); + break; + } ++#endif + + return 0; + } +-- +2.34.1 + +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 4/7] board: rockchip: Add Recovery Button for Anbernic RGxx3 +Date: Mon, 11 Dec 2023 17:21:22 -0600 [thread overview] +Message-ID: <20231211232125.171438-5-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add support for users to enter recovery mode by holding the function +button when they power up the device. + +Since the device has soldered eMMC and sometimes does not expose a clk +pin on the mainboard there is a small chance that a user who flashes a +bad bootloader may not be able to recover if the headers themselves +are valid. As a result this check is done during spl_early_init() to +ensure that it runs as early as possible, and it does so by directly +manipulating the ADC hardware in lieu of loading the ADC driver. + +Signed-off-by: Chris Morgan +--- + arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi | 11 +++++++++++ + board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 6 +++++- + configs/anbernic-rgxx3-rk3566_defconfig | 16 ++++++++++++---- + include/configs/anbernic-rgxx3-rk3566.h | 2 ++ + 4 files changed, 30 insertions(+), 5 deletions(-) + +diff --git a/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi b/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi +index f986e1941e..e3ab196d22 100644 +--- a/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi ++++ b/arch/arm/dts/rk3566-anbernic-rgxx3-u-boot.dtsi +@@ -76,6 +76,12 @@ + /delete-property/ clock-names; + }; + ++&saradc { ++ bootph-all; ++ vref-supply = <&vcc_sys>; ++ status = "okay"; ++}; ++ + &sdhci { + pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>, + <&emmc_datastrobe>, <&emmc_rstnout>; +@@ -94,3 +100,8 @@ + bootph-all; + status = "okay"; + }; ++ ++&vcc_sys { ++ bootph-all; ++ status = "okay"; ++}; +diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +index 3d0c614623..45854709f5 100644 +--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c ++++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +@@ -5,6 +5,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -119,11 +120,14 @@ static const struct rg353_panel rg353_panel_details[] = { + }; + + /* +- * Start LED very early so user knows device is on. Set color ++ * Check if rockchip_dnl button is pressed and reboot into rockusb if ++ * true. Start LED very early so user knows device is on. Set color + * to red. + */ + void spl_board_init(void) + { ++ setup_boot_mode(); ++ + /* Set GPIO0_C5, GPIO0_C6, and GPIO0_C7 to output. */ + writel(GPIO_WRITEMASK(GPIO_C7 | GPIO_C6 | GPIO_C5) | \ + (GPIO_C7 | GPIO_C6 | GPIO_C5), +diff --git a/configs/anbernic-rgxx3-rk3566_defconfig b/configs/anbernic-rgxx3-rk3566_defconfig +index ed6643d9d4..4e72f75815 100644 +--- a/configs/anbernic-rgxx3-rk3566_defconfig ++++ b/configs/anbernic-rgxx3-rk3566_defconfig +@@ -3,6 +3,7 @@ CONFIG_SKIP_LOWLEVEL_INIT=y + CONFIG_COUNTER_FREQUENCY=24000000 + CONFIG_ARCH_ROCKCHIP=y + CONFIG_TEXT_BASE=0x00a00000 ++CONFIG_SPL_GPIO=y + CONFIG_SPL_LIBCOMMON_SUPPORT=y + CONFIG_SPL_LIBGENERIC_SUPPORT=y + CONFIG_NR_DRAM_BANKS=2 +@@ -24,7 +25,9 @@ CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y ++CONFIG_SPL_FIT_SIGNATURE=y + CONFIG_SPL_LOAD_FIT=y ++CONFIG_LEGACY_IMAGE_FORMAT=y + CONFIG_OF_BOARD_SETUP=y + CONFIG_OF_STDOUT_VIA_ALIAS=y + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3566-anbernic-rgxx3.dtb" +@@ -32,7 +35,7 @@ CONFIG_DEFAULT_FDT_FILE="rockchip/rk3566-anbernic-rgxx3.dtb" + # CONFIG_DISPLAY_CPUINFO is not set + CONFIG_DISPLAY_BOARDINFO_LATE=y + CONFIG_BOARD_RNG_SEED=y +-CONFIG_SPL_MAX_SIZE=0x20000 ++CONFIG_SPL_MAX_SIZE=0x40000 + CONFIG_SPL_PAD_TO=0x7f8000 + CONFIG_SPL_HAS_BSS_LINKER_SECTION=y + CONFIG_SPL_BSS_START_ADDR=0x4000000 +@@ -41,6 +44,8 @@ CONFIG_SPL_BOARD_INIT=y + # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set + # CONFIG_SPL_SHARES_INIT_SP_ADDR is not set + CONFIG_SPL_STACK_R=y ++CONFIG_SPL_ADC=y ++CONFIG_SPL_POWER=y + CONFIG_SPL_ATF=y + CONFIG_CMD_PWM=y + CONFIG_CMD_GPT=y +@@ -50,8 +55,10 @@ CONFIG_CMD_MMC=y + # CONFIG_SPL_DOS_PARTITION is not set + CONFIG_SPL_OF_CONTROL=y + CONFIG_OF_LIVE=y ++CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y + # CONFIG_NET is not set ++CONFIG_SPL_DM_SEQ_ALIAS=y + CONFIG_SPL_REGMAP=y + CONFIG_SPL_SYSCON=y + CONFIG_SPL_CLK=y +@@ -67,13 +74,13 @@ CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_ROCKCHIP=y + CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y ++CONFIG_SPL_PINCTRL=y + CONFIG_DM_PMIC=y + CONFIG_DM_PMIC_FAN53555=y + CONFIG_PMIC_RK8XX=y +-CONFIG_REGULATOR_PWM=y +-CONFIG_DM_REGULATOR_GPIO=y ++CONFIG_SPL_DM_REGULATOR=y ++CONFIG_SPL_DM_REGULATOR_FIXED=y + CONFIG_REGULATOR_RK8XX=y +-CONFIG_DM_REGULATOR_SCMI=y + CONFIG_PWM_ROCKCHIP=y + CONFIG_SPL_RAM=y + # CONFIG_RAM_ROCKCHIP_DEBUG is not set +@@ -89,5 +96,6 @@ CONFIG_VIDEO_ROCKCHIP=y + CONFIG_DISPLAY_ROCKCHIP_DW_MIPI=y + CONFIG_VIDEO_BRIDGE=y + CONFIG_REGEX=y ++# CONFIG_RSA is not set + CONFIG_ERRNO_STR=y + # CONFIG_EFI_LOADER is not set +diff --git a/include/configs/anbernic-rgxx3-rk3566.h b/include/configs/anbernic-rgxx3-rk3566.h +index 3c4ea4e7d8..2aaac55c06 100644 +--- a/include/configs/anbernic-rgxx3-rk3566.h ++++ b/include/configs/anbernic-rgxx3-rk3566.h +@@ -9,4 +9,6 @@ + "stdout=serial,vidconsole\0" \ + "stderr=serial,vidconsole\0" + ++#define RK_DNL_ADC_CHAN 0 ++ + #endif +-- +2.34.1 + +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 5/7] rockchip: board: Add board_rng_seed() for all Rockchip devices +Date: Mon, 11 Dec 2023 17:21:23 -0600 [thread overview] +Message-ID: <20231211232125.171438-6-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Allow all rockchip devices to use the hardware RNG to seed Linux +RNG. + +Signed-off-by: Chris Morgan +--- + arch/arm/mach-rockchip/board.c | 32 ++++++++++++++++++++++ + board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 29 -------------------- + 2 files changed, 32 insertions(+), 29 deletions(-) + +diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c +index 57f08e0be0..77145524ea 100644 +--- a/arch/arm/mach-rockchip/board.c ++++ b/arch/arm/mach-rockchip/board.c +@@ -348,3 +348,35 @@ __weak int misc_init_r(void) + return ret; + } + #endif ++ ++#if IS_ENABLED(CONFIG_BOARD_RNG_SEED) && IS_ENABLED(CONFIG_RNG_ROCKCHIP) ++#include ++ ++/* Use hardware rng to seed Linux random. */ ++__weak int board_rng_seed(struct abuf *buf) ++{ ++ struct udevice *dev; ++ size_t len = 0x8; ++ u64 *data; ++ ++ data = malloc(len); ++ if (!data) { ++ printf("Out of memory\n"); ++ return -ENOMEM; ++ } ++ ++ if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) { ++ printf("No RNG device\n"); ++ return -ENODEV; ++ } ++ ++ if (dm_rng_read(dev, data, len)) { ++ printf("Reading RNG failed\n"); ++ return -EIO; ++ } ++ ++ abuf_init_set(buf, data, len); ++ ++ return 0; ++} ++#endif +diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +index 45854709f5..7bef5a53f0 100644 +--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c ++++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +@@ -17,7 +17,6 @@ + #include + #include + #include +-#include + #include + #include + +@@ -137,34 +136,6 @@ void spl_board_init(void) + (GPIO0_BASE + GPIO_SWPORT_DR_H)); + } + +-/* Use hardware rng to seed Linux random. */ +-int board_rng_seed(struct abuf *buf) +-{ +- struct udevice *dev; +- size_t len = 0x8; +- u64 *data; +- +- data = malloc(len); +- if (!data) { +- printf("Out of memory\n"); +- return -ENOMEM; +- } +- +- if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) { +- printf("No RNG device\n"); +- return -ENODEV; +- } +- +- if (dm_rng_read(dev, data, len)) { +- printf("Reading RNG failed\n"); +- return -EIO; +- } +- +- abuf_init_set(buf, data, len); +- +- return 0; +-} +- + /* + * Buzz the buzzer so the user knows something is going on. Make it + * optional in case PWM is disabled. +-- +2.34.1 +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 6/7] board: rockchip: Add support for new boards to RGxx3 +Date: Mon, 11 Dec 2023 17:21:24 -0600 [thread overview] +Message-ID: <20231211232125.171438-7-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add support for the Anbernic RG-ARC-D, Anbernic RG-ARC-S, Powkiddy +RK2023, and Powkiddy RGB30 to the Anbernic RGxx3. While the Powkiddy +devices are manufactured by Powkiddy instead of Anbernic, +the hardware is so similar they can all use the same bootloader. + +Signed-off-by: Chris Morgan +--- + board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 44 +++++++++++++++++++--- + 1 file changed, 39 insertions(+), 5 deletions(-) + +diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +index 7bef5a53f0..2445663d43 100644 +--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c ++++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +@@ -48,9 +48,13 @@ enum rgxx3_device_id { + RG353P, + RG353V, + RG503, ++ RGB30, ++ RK2023, ++ RGARCD, + /* Devices with duplicate ADC value */ + RG353PS, + RG353VS, ++ RGARCS, + }; + + static const struct rg3xx_model rg3xx_model_details[] = { +@@ -83,6 +87,27 @@ static const struct rg3xx_model rg3xx_model_details[] = { + .fdtfile = DTB_DIR "rk3566-anbernic-rg503.dtb", + .detect_panel = 0, + }, ++ [RGB30] = { ++ .adc_value = 383, /* Gathered from second hand information */ ++ .board = "rk3566-powkiddy-rgb30", ++ .board_name = "RGB30", ++ .fdtfile = DTB_DIR "rk3566-powkiddy-rgb30.dtb", ++ .detect_panel = 0, ++ }, ++ [RK2023] = { ++ .adc_value = 635, /* Observed average from device */ ++ .board = "rk3566-powkiddy-rk2023", ++ .board_name = "RK2023", ++ .fdtfile = DTB_DIR "rk3566-powkiddy-rk2023.dtb", ++ .detect_panel = 0, ++ }, ++ [RGARCD] = { ++ .adc_value = 183, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg-arc-d", ++ .board_name = "Anbernic RG ARC-D", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg-arc-d.dtb", ++ .detect_panel = 0, ++ }, + /* Devices with duplicate ADC value */ + [RG353PS] = { + .adc_value = 860, /* Observed average from device */ +@@ -98,6 +123,13 @@ static const struct rg3xx_model rg3xx_model_details[] = { + .fdtfile = DTB_DIR "rk3566-anbernic-rg353vs.dtb", + .detect_panel = 1, + }, ++ [RGARCS] = { ++ .adc_value = 183, /* Observed average from device */ ++ .board = "rk3566-anbernic-rg-arc-s", ++ .board_name = "Anbernic RG ARC-S", ++ .fdtfile = DTB_DIR "rk3566-anbernic-rg-arc-s.dtb", ++ .detect_panel = 0, ++ }, + }; + + struct rg353_panel { +@@ -332,19 +364,21 @@ int rgxx3_detect_device(void) + } + + /* +- * Try to access the eMMC on an RG353V or RG353P. If it's +- * missing, it's an RG353VS or RG353PS. Note we could also +- * check for a touchscreen at 0x1a on i2c2. ++ * Try to access the eMMC on an RG353V, RG353P, or RG Arc D. ++ * If it's missing, it's an RG353VS, RG353PS, or RG Arc S. ++ * Note we could also check for a touchscreen at 0x1a on i2c2. + */ +- if (board_id == RG353V || board_id == RG353P) { ++ if (board_id == RG353V || board_id == RG353P || board_id == RGARCD) { + mmc = find_mmc_device(0); + if (mmc) { + ret = mmc_init(mmc); + if (ret) { + if (board_id == RG353V) + board_id = RG353VS; +- else ++ if (board_id == RG353P) + board_id = RG353PS; ++ else ++ board_id = RGARCS; + } + } + } +-- +2.34.1 + +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: andre.przywara@arm.com, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V3 7/7] doc: board: anbernic: Update rgxx3 to add new boards +Date: Mon, 11 Dec 2023 17:21:25 -0600 [thread overview] +Message-ID: <20231211232125.171438-8-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231211232125.171438-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Update the RGxx3 documentation to note that it now supports the +RG-ARC-D, RG-ARC-S, Powkiddy RK2023, and Powkiddy RGB30. Also update +verbiage around panel detection to note that it is no longer hard coded +to the RG503. + +Signed-off-by: Chris Morgan +--- + doc/board/anbernic/rgxx3.rst | 20 ++++++++++++++------ + 1 file changed, 14 insertions(+), 6 deletions(-) + +diff --git a/doc/board/anbernic/rgxx3.rst b/doc/board/anbernic/rgxx3.rst +index 7d1beb423c..d159ed2f76 100644 +--- a/doc/board/anbernic/rgxx3.rst ++++ b/doc/board/anbernic/rgxx3.rst +@@ -5,6 +5,8 @@ U-Boot for Anbernic RGxx3 Devices + + This allows U-Boot to boot the following Anbernic devices: + ++ - Anbernic RG-ARC-D ++ - Anbernic RG-ARC-S + - Anbernic RG353M + - Anbernic RG353P + - Anbernic RG353PS +@@ -12,18 +14,24 @@ This allows U-Boot to boot the following Anbernic devices: + - Anbernic RG353VS + - Anbernic RG503 + ++Additionally, the following very similar non-Anbernic devices are also ++supported: ++ ++ - Powkiddy RGB30 ++ - Powkiddy RK2023 ++ + The correct device is detected automatically by comparing ADC values + from ADC channel 1. In the event of an RG353V or RG353P, an attempt + is then made to probe for an eMMC and if it fails the device is assumed + to be an RG353VS or RG353PS. Based on the detected device, the + environment variables "board", "board_name", and "fdtfile" are set to + the correct values corresponding to the board which can be read by a +-boot script to boot with the correct device tree. If the board detected +-is not of type RG503 (which currently has only 1 panel revision) a +-panel detect is then performed by probing a "dummy" display on the DSI +-bus and then querying the display ID. The display ID is then compared +-to a table to get the known compatible string for use in Linux, and +-this string is saved as an environment variable of "panel". ++boot script to boot with the correct device tree. If a board is defined ++as requiring panel detection, a panel detect is then performed by ++probing a "dummy" display on the DSI bus and then querying the display ++ID. The display ID is then compared to a table to get the known ++compatible string for use in Linux, and this string is saved as an ++environment variable of "panel". + + FDT fixups are performed in the event of an RG353M to change the device + name, or in the event the panel detected does not match the devicetree. +-- +2.34.1 diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-X55-ML/002-v2-add-powkiddy-x55.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-X55-ML/002-v2-add-powkiddy-x55.patch new file mode 100644 index 0000000000..91f6bfaa1e --- /dev/null +++ b/projects/Rockchip/packages/u-boot/patches/RK3566-X55-ML/002-v2-add-powkiddy-x55.patch @@ -0,0 +1,1383 @@ +From: Chris Morgan +To: u-boot@lists.denx.de +Cc: jbx6244@gmail.com, jonas@kwiboo.se, kever.yang@rock-chips.com, + philipp.tomsich@vrull.eu, sjg@chromium.org, + Chris Morgan +Subject: [PATCH V2] board: rockchip: add Powkiddy X55 +Date: Thu, 14 Dec 2023 12:24:33 -0600 [thread overview] +Message-ID: <20231214182433.37454-1-macroalpha82@gmail.com> (raw) + +From: Chris Morgan + +The Powkiddy X55 is a Rockchip RK3566 based handheld gaming device. +UART, ADC, eMMC, and SDMMC are tested to work in U-Boot and this +successfully boots mainline Linux. + +Changes since V1: + - Built on top of this patch series [1] which makes the ADC detect + function more generic and also moves the board_rng_seed to a more + generic location. + - Updated U-Boot specific devicetree to drop redundant values and + add nodes required for ADC detection in SPL. + - Updated defconfig to add additional options for SPL ADC detection + logic as well as drop some drivers that are not needed. Note that + CONFIG_DM_PMIC_FAN53555 is used by the tcs,tcs4525 regulator on + i2c0 at 0x1c. Additionally the code fails to compile without + selecting CONFIG_SPL_ROCKCHIP_BACK_TO_BROM. + +[1] https://lore.kernel.org/u-boot/20231211232125.171438-1-macroalpha82@gmail.com/ + +Signed-off-by: Chris Morgan +--- + arch/arm/dts/Makefile | 1 + + arch/arm/dts/rk3566-powkiddy-x55-u-boot.dtsi | 67 ++ + arch/arm/dts/rk3566-powkiddy-x55.dts | 926 +++++++++++++++++++ + arch/arm/mach-rockchip/rk3568/Kconfig | 6 + + board/powkiddy/x55/Kconfig | 15 + + board/powkiddy/x55/MAINTAINERS | 9 + + board/powkiddy/x55/Makefile | 6 + + board/powkiddy/x55/x55.c | 42 + + configs/powkiddy-x55-rk3566_defconfig | 92 ++ + doc/board/index.rst | 1 + + doc/board/powkiddy/index.rst | 9 + + doc/board/powkiddy/x55.rst | 25 + + doc/board/rockchip/rockchip.rst | 1 + + include/configs/powkiddy-x55-rk3566.h | 14 + + 14 files changed, 1214 insertions(+) + create mode 100644 arch/arm/dts/rk3566-powkiddy-x55-u-boot.dtsi + create mode 100644 arch/arm/dts/rk3566-powkiddy-x55.dts + create mode 100644 board/powkiddy/x55/Kconfig + create mode 100644 board/powkiddy/x55/MAINTAINERS + create mode 100644 board/powkiddy/x55/Makefile + create mode 100644 board/powkiddy/x55/x55.c + create mode 100644 configs/powkiddy-x55-rk3566_defconfig + create mode 100644 doc/board/powkiddy/index.rst + create mode 100644 doc/board/powkiddy/x55.rst + create mode 100644 include/configs/powkiddy-x55-rk3566.h + +diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile +index 5fc888680b..6e5cb7c3e9 100644 +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -172,6 +172,7 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \ + + dtb-$(CONFIG_ROCKCHIP_RK3568) += \ + rk3566-anbernic-rgxx3.dtb \ ++ rk3566-powkiddy-x55.dtb \ + rk3566-quartz64-a.dtb \ + rk3566-quartz64-b.dtb \ + rk3566-radxa-cm3-io.dtb \ +diff --git a/arch/arm/dts/rk3566-powkiddy-x55-u-boot.dtsi b/arch/arm/dts/rk3566-powkiddy-x55-u-boot.dtsi +new file mode 100644 +index 0000000000..1a3089b598 +--- /dev/null ++++ b/arch/arm/dts/rk3566-powkiddy-x55-u-boot.dtsi +@@ -0,0 +1,67 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++#include "rk356x-u-boot.dtsi" ++ ++/ { ++ chosen { ++ stdout-path = &uart2; ++ }; ++ ++ rng: rng@fe388000 { ++ compatible = "rockchip,cryptov2-rng"; ++ reg = <0x0 0xfe388000 0x0 0x2000>; ++ status = "okay"; ++ }; ++}; ++ ++&cru { ++ assigned-clocks = ++ <&pmucru CLK_RTC_32K>, <&pmucru PLL_PPLL>, ++ <&pmucru PCLK_PMU>, <&cru PLL_CPLL>, ++ <&cru PLL_GPLL>, <&cru PLL_VPLL>, ++ <&cru ACLK_BUS>, <&cru PCLK_BUS>, ++ <&cru ACLK_TOP_HIGH>, <&cru ACLK_TOP_LOW>, ++ <&cru HCLK_TOP>, <&cru PCLK_TOP>, ++ <&cru ACLK_PERIMID>, <&cru HCLK_PERIMID>, ++ <&cru CPLL_500M>, <&cru CPLL_333M>, ++ <&cru CPLL_250M>, <&cru CPLL_125M>, ++ <&cru CPLL_100M>, <&cru CPLL_62P5M>, ++ <&cru CPLL_50M>, <&cru CPLL_25M>; ++ assigned-clock-rates = ++ <32768>, <200000000>, ++ <100000000>, <1000000000>, ++ <1200000000>, <126400000>, ++ <150000000>, <100000000>, ++ <500000000>, <400000000>, ++ <150000000>, <100000000>, ++ <300000000>, <150000000>, ++ <500000000>, <333333333>, ++ <250000000>, <125000000>, ++ <100000000>, <62500000>, ++ <50000000>, <25000000>; ++ assigned-clock-parents = ++ <&pmucru CLK_RTC32K_FRAC>; ++}; ++ ++&pmucru { ++ assigned-clocks = <&pmucru SCLK_32K_IOE>; ++ assigned-clock-parents = <&pmucru CLK_RTC_32K>; ++}; ++ ++/* Move the saradc to a fixed regulator so that it works in SPL. */ ++&saradc { ++ bootph-all; ++ vref-supply = <&vcc_sys>; ++ status = "okay"; ++}; ++ ++&uart2 { ++ clock-frequency = <24000000>; ++ bootph-all; ++ status = "okay"; ++}; ++ ++&vcc_sys { ++ bootph-all; ++ status = "okay"; ++}; +diff --git a/arch/arm/dts/rk3566-powkiddy-x55.dts b/arch/arm/dts/rk3566-powkiddy-x55.dts +new file mode 100644 +index 0000000000..4786b19fd0 +--- /dev/null ++++ b/arch/arm/dts/rk3566-powkiddy-x55.dts +@@ -0,0 +1,926 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include ++#include ++#include ++#include ++#include ++#include "rk3566.dtsi" ++ ++/ { ++ model = "Powkiddy x55"; ++ compatible = "powkiddy,x55", "rockchip,rk3566"; ++ ++ aliases { ++ mmc0 = &sdhci; ++ mmc1 = &sdmmc0; ++ mmc2 = &sdmmc2; ++ mmc3 = &sdmmc1; ++ }; ++ ++ chosen: chosen { ++ stdout-path = "serial2:1500000n8"; ++ }; ++ ++ adc_joystick: adc-joystick { ++ compatible = "adc-joystick"; ++ io-channels = <&saradc 0>, <&saradc 1>, ++ <&saradc 2>, <&saradc 3>; ++ poll-interval = <60>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ axis@0 { ++ reg = <0>; ++ abs-flat = <30>; ++ abs-fuzz = <20>; ++ abs-range = <15 1023>; ++ linux,code = ; ++ }; ++ ++ axis@1 { ++ reg = <1>; ++ abs-flat = <30>; ++ abs-fuzz = <20>; ++ abs-range = <1023 15>; ++ linux,code = ; ++ }; ++ ++ axis@2 { ++ reg = <2>; ++ abs-flat = <30>; ++ abs-fuzz = <20>; ++ abs-range = <15 1023>; ++ linux,code = ; ++ }; ++ ++ axis@3 { ++ reg = <3>; ++ abs-flat = <30>; ++ abs-fuzz = <20>; ++ abs-range = <1023 15>; ++ linux,code = ; ++ }; ++ }; ++ ++ backlight: backlight { ++ compatible = "pwm-backlight"; ++ power-supply = <&vcc_sys>; ++ pwms = <&pwm4 0 25000 0>; ++ }; ++ ++ battery: battery { ++ compatible = "simple-battery"; ++ charge-full-design-microamp-hours = <4000000>; ++ charge-term-current-microamp = <300000>; ++ constant-charge-current-max-microamp = <2000000>; ++ constant-charge-voltage-max-microvolt = <4300000>; ++ factory-internal-resistance-micro-ohms = <91000>; ++ voltage-max-design-microvolt = <4138000>; ++ voltage-min-design-microvolt = <3400000>; ++ ++ ocv-capacity-celsius = <20>; ++ ocv-capacity-table-0 = <4138000 100>, <4083000 95>, <4059000 90>, <4044000 85>, ++ <4030000 80>, <4020000 75>, <4006000 70>, <3972000 65>, ++ <3934000 60>, <3904000 55>, <3878000 50>, <3857000 45>, ++ <3843000 40>, <3826000 35>, <3801000 30>, <3768000 25>, ++ <3735000 20>, <3688000 15>, <3621000 10>, <3553000 5>, ++ <3400000 0>; ++ }; ++ ++ gpio_keys_control: gpio-keys-control { ++ compatible = "gpio-keys"; ++ pinctrl-0 = <&btn_pins_ctrl>; ++ pinctrl-names = "default"; ++ ++ button-a { ++ gpios = <&gpio3 RK_PD3 GPIO_ACTIVE_LOW>; ++ label = "EAST"; ++ linux,code = ; ++ }; ++ ++ button-b { ++ gpios = <&gpio3 RK_PD2 GPIO_ACTIVE_LOW>; ++ label = "SOUTH"; ++ linux,code = ; ++ }; ++ ++ button-down { ++ gpios = <&gpio4 RK_PA1 GPIO_ACTIVE_LOW>; ++ label = "DPAD-DOWN"; ++ linux,code = ; ++ }; ++ ++ button-l1 { ++ gpios = <&gpio3 RK_PD0 GPIO_ACTIVE_LOW>; ++ label = "TL"; ++ linux,code = ; ++ }; ++ ++ button-l2 { ++ gpios = <&gpio3 RK_PD1 GPIO_ACTIVE_LOW>; ++ label = "TL2"; ++ linux,code = ; ++ }; ++ ++ button-left { ++ gpios = <&gpio3 RK_PD6 GPIO_ACTIVE_LOW>; ++ label = "DPAD-LEFT"; ++ linux,code = ; ++ }; ++ ++ button-right { ++ gpios = <&gpio3 RK_PD7 GPIO_ACTIVE_LOW>; ++ label = "DPAD-RIGHT"; ++ linux,code = ; ++ }; ++ ++ button-select { ++ gpios = <&gpio4 RK_PA4 GPIO_ACTIVE_LOW>; ++ label = "SELECT"; ++ linux,code = ; ++ }; ++ ++ button-start { ++ gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_LOW>; ++ label = "START"; ++ linux,code = ; ++ }; ++ ++ button-thumbl { ++ gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_LOW>; ++ label = "THUMBL"; ++ linux,code = ; ++ }; ++ ++ button-thumbr { ++ gpios = <&gpio4 RK_PB0 GPIO_ACTIVE_LOW>; ++ label = "THUMBR"; ++ linux,code = ; ++ }; ++ ++ button-r1 { ++ gpios = <&gpio3 RK_PC6 GPIO_ACTIVE_LOW>; ++ label = "TR"; ++ linux,code = ; ++ }; ++ ++ button-r2 { ++ gpios = <&gpio3 RK_PC7 GPIO_ACTIVE_LOW>; ++ label = "TR2"; ++ linux,code = ; ++ }; ++ ++ button-up { ++ gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_LOW>; ++ label = "DPAD-UP"; ++ linux,code = ; ++ }; ++ ++ button-x { ++ gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>; ++ label = "NORTH"; ++ linux,code = ; ++ }; ++ ++ button-y { ++ gpios = <&gpio3 RK_PD4 GPIO_ACTIVE_LOW>; ++ label = "WEST"; ++ linux,code = ; ++ }; ++ }; ++ ++ gpio_keys_vol: gpio-keys-vol { ++ compatible = "gpio-keys"; ++ autorepeat; ++ pinctrl-0 = <&btn_pins_vol>; ++ pinctrl-names = "default"; ++ ++ button-voldown { ++ gpios = <&gpio4 RK_PA3 GPIO_ACTIVE_LOW>; ++ label = "VOLUMEDOWN"; ++ linux,code = ; ++ }; ++ ++ button-volup { ++ gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_LOW>; ++ label = "VOLUMEUP"; ++ linux,code = ; ++ }; ++ }; ++ ++ gpio_leds: gpio-leds { ++ compatible = "gpio-leds"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&led_pins>; ++ ++ red_led: led-0 { ++ color = ; ++ default-state = "off"; ++ gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>; ++ function = LED_FUNCTION_STATUS; ++ }; ++ ++ green_led: led-1 { ++ color = ; ++ default-state = "on"; ++ gpios = <&gpio4 RK_PB5 GPIO_ACTIVE_HIGH>; ++ function = LED_FUNCTION_POWER; ++ }; ++ ++ amber_led: led-2 { ++ color = ; ++ gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>; ++ function = LED_FUNCTION_CHARGING; ++ }; ++ ++ }; ++ ++ hdmi-con { ++ compatible = "hdmi-connector"; ++ ddc-i2c-bus = <&i2c5>; ++ type = "c"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; ++ ++ sdio_pwrseq: sdio-pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ clocks = <&rk817 1>; ++ clock-names = "ext_clock"; ++ pinctrl-0 = <&wifi_enable_h>; ++ pinctrl-names = "default"; ++ post-power-on-delay-ms = <200>; ++ reset-gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_LOW>; ++ }; ++ ++ /* Channels reversed for both headphones and speakers. */ ++ sound { ++ compatible = "simple-audio-card"; ++ pinctrl-0 = <&hp_det>; ++ pinctrl-names = "default"; ++ simple-audio-card,name = "rk817_ext"; ++ simple-audio-card,aux-devs = <&spk_amp>; ++ simple-audio-card,format = "i2s"; ++ simple-audio-card,hp-det-gpio = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>; ++ simple-audio-card,mclk-fs = <256>; ++ simple-audio-card,widgets = ++ "Microphone", "Mic Jack", ++ "Headphone", "Headphones", ++ "Speaker", "Internal Speakers"; ++ simple-audio-card,routing = ++ "MICL", "Mic Jack", ++ "Headphones", "HPOL", ++ "Headphones", "HPOR", ++ "Internal Speakers", "Speaker Amp OUTL", ++ "Internal Speakers", "Speaker Amp OUTR", ++ "Speaker Amp INL", "HPOL", ++ "Speaker Amp INR", "HPOR"; ++ simple-audio-card,pin-switches = "Internal Speakers"; ++ ++ simple-audio-card,codec { ++ sound-dai = <&rk817>; ++ }; ++ ++ simple-audio-card,cpu { ++ sound-dai = <&i2s1_8ch>; ++ }; ++ }; ++ ++ spk_amp: audio-amplifier { ++ compatible = "simple-audio-amplifier"; ++ enable-gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>; ++ pinctrl-0 = <&spk_amp_enable_h>; ++ pinctrl-names = "default"; ++ sound-name-prefix = "Speaker Amp"; ++ }; ++ ++ vcc5v0_host: regulator-vcc5v0-host { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ gpio = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>; ++ pinctrl-0 = <&vcc5v0_host_en>; ++ pinctrl-names = "default"; ++ regulator-name = "vcc5v0_host"; ++ vin-supply = <&dcdc_boost>; ++ }; ++ ++ vcc_lcd: regulator-vcc-lcd { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ gpio = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>; ++ pinctrl-0 = <&vcc_lcd_en>; ++ pinctrl-names = "default"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc_lcd"; ++ }; ++ ++ vcc_sys: regulator-vcc-sys { ++ compatible = "regulator-fixed"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3800000>; ++ regulator-max-microvolt = <3800000>; ++ regulator-name = "vcc_sys"; ++ }; ++ ++ vcc_wifi: regulator-vcc-wifi { ++ compatible = "regulator-fixed"; ++ gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>; ++ pinctrl-0 = <&vcc_wifi_h>; ++ pinctrl-names = "default"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc_wifi"; ++ }; ++}; ++ ++&combphy1 { ++ status = "okay"; ++}; ++ ++&cru { ++ assigned-clocks = <&pmucru CLK_RTC_32K>, <&cru PLL_GPLL>, ++ <&pmucru PLL_PPLL>, <&cru PLL_VPLL>; ++ assigned-clock-rates = <32768>, <1200000000>, ++ <200000000>, <126400000>; ++}; ++ ++&cpu0 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu1 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu2 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu3 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&dsi_dphy0 { ++ status = "okay"; ++}; ++ ++&dsi0 { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ ports { ++ dsi0_in: port@0 { ++ reg = <0>; ++ dsi0_in_vp1: endpoint { ++ remote-endpoint = <&vp1_out_dsi0>; ++ }; ++ }; ++ ++ dsi0_out: port@1 { ++ reg = <1>; ++ mipi_out_panel: endpoint { ++ remote-endpoint = <&mipi_in_panel>; ++ }; ++ }; ++ }; ++ ++ panel: panel@0 { ++ compatible = "powkiddy,x55-panel", "himax,hx8394"; ++ reg = <0>; ++ backlight = <&backlight>; ++ iovcc-supply = <&vcc_lcd>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&lcd_rst>; ++ reset-gpios = <&gpio0 RK_PD5 GPIO_ACTIVE_LOW>; ++ rotation = <270>; ++ vcc-supply = <&vcc_lcd>; ++ ++ port { ++ mipi_in_panel: endpoint { ++ remote-endpoint = <&mipi_out_panel>; ++ }; ++ }; ++ }; ++}; ++ ++&gpu { ++ mali-supply = <&vdd_gpu>; ++ status = "okay"; ++}; ++ ++&hdmi { ++ ddc-i2c-bus = <&i2c5>; ++ pinctrl-0 = <&hdmitxm0_cec>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; ++ ++&hdmi_in { ++ hdmi_in_vp0: endpoint { ++ remote-endpoint = <&vp0_out_hdmi>; ++ }; ++}; ++ ++&hdmi_out { ++ hdmi_out_con: endpoint { ++ remote-endpoint = <&hdmi_con_in>; ++ }; ++}; ++ ++&hdmi_sound { ++ status = "okay"; ++}; ++ ++&i2c0 { ++ status = "okay"; ++ ++ rk817: pmic@20 { ++ compatible = "rockchip,rk817"; ++ reg = <0x20>; ++ assigned-clocks = <&cru I2S1_MCLKOUT_TX>; ++ assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>; ++ clock-names = "mclk"; ++ clock-output-names = "rk808-clkout1", "rk808-clkout2"; ++ clocks = <&cru I2S1_MCLKOUT_TX>; ++ interrupt-parent = <&gpio0>; ++ interrupts = ; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2s1m0_mclk>, <&pmic_int_l>; ++ wakeup-source; ++ #clock-cells = <1>; ++ #sound-dai-cells = <0>; ++ ++ vcc1-supply = <&vcc_sys>; ++ vcc2-supply = <&vcc_sys>; ++ vcc3-supply = <&vcc_sys>; ++ vcc4-supply = <&vcc_sys>; ++ vcc5-supply = <&vcc_sys>; ++ vcc6-supply = <&vcc_sys>; ++ vcc7-supply = <&vcc_sys>; ++ vcc8-supply = <&vcc_sys>; ++ vcc9-supply = <&dcdc_boost>; ++ ++ regulators { ++ vdd_logic: DCDC_REG1 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vdd_logic"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ regulator-suspend-microvolt = <900000>; ++ }; ++ }; ++ ++ vdd_gpu: DCDC_REG2 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vdd_gpu"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_ddr: DCDC_REG3 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vcc_ddr"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ vcc_3v3: DCDC_REG4 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-initial-mode = <0x2>; ++ regulator-name = "vcc_3v3"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcca1v8_pmu: LDO_REG1 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcca1v8_pmu"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <1800000>; ++ }; ++ }; ++ ++ vdda_0v9: LDO_REG2 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <900000>; ++ regulator-max-microvolt = <900000>; ++ regulator-name = "vdda_0v9"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vdda0v9_pmu: LDO_REG3 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <900000>; ++ regulator-max-microvolt = <900000>; ++ regulator-name = "vdda0v9_pmu"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <900000>; ++ }; ++ }; ++ ++ vccio_acodec: LDO_REG4 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vccio_acodec"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vccio_sd: LDO_REG5 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vccio_sd"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc3v3_pmu: LDO_REG6 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc3v3_pmu"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcc_1v8: LDO_REG7 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc_1v8"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc1v8_dvp: LDO_REG8 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc1v8_dvp"; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ vcc2v8_dvp: LDO_REG9 { ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc2v8_dvp"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ dcdc_boost: BOOST { ++ regulator-min-microvolt = <4700000>; ++ regulator-max-microvolt = <5400000>; ++ regulator-name = "boost"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ otg_switch: OTG_SWITCH { ++ regulator-name = "otg_switch"; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ }; ++ ++ rk817_charger: charger { ++ monitored-battery = <&battery>; ++ rockchip,resistor-sense-micro-ohms = <10000>; ++ rockchip,sleep-enter-current-microamp = <150000>; ++ rockchip,sleep-filter-current-microamp = <100000>; ++ }; ++ ++ }; ++ ++ vdd_cpu: regulator@1c { ++ compatible = "tcs,tcs4525"; ++ reg = <0x1c>; ++ fcs,suspend-voltage-selector = <1>; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <712500>; ++ regulator-max-microvolt = <1390000>; ++ regulator-name = "vdd_cpu"; ++ regulator-ramp-delay = <2300>; ++ vin-supply = <&vcc_sys>; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++}; ++ ++&i2c5 { ++ pinctrl-0 = <&i2c5m1_xfer>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; ++ ++&i2s0_8ch { ++ status = "okay"; ++}; ++ ++&i2s1_8ch { ++ pinctrl-0 = <&i2s1m0_sclktx>, <&i2s1m0_lrcktx>, <&i2s1m0_sdi0>, ++ <&i2s1m0_sdo0>; ++ pinctrl-names = "default"; ++ rockchip,trcm-sync-tx-only; ++ status = "okay"; ++}; ++ ++&pinctrl { ++ audio-amplifier { ++ spk_amp_enable_h: spk-amp-enable-h { ++ rockchip,pins = ++ <4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ gpio-control { ++ btn_pins_ctrl: btn-pins-ctrl { ++ rockchip,pins = ++ <3 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD1 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PD7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ ++ btn_pins_vol: btn-pins-vol { ++ rockchip,pins = ++ <4 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>, ++ <4 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ gpio-lcd { ++ lcd_rst: lcd-rst { ++ rockchip,pins = ++ <0 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ gpio-leds { ++ led_pins: led-pins { ++ rockchip,pins = ++ <4 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>, ++ <4 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>, ++ <4 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ hp-detect { ++ hp_det: hp-det { ++ rockchip,pins = ++ <4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ pmic { ++ pmic_int_l: pmic-int-l { ++ rockchip,pins = ++ <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ sdio-pwrseq { ++ wifi_enable_h: wifi-enable-h { ++ rockchip,pins = ++ <0 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ usb { ++ vcc5v0_host_en: vcc5v0-host-en { ++ rockchip,pins = ++ <4 RK_PC4 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ ++ vcc5v0_otg_en: vcc5v0-otg-en { ++ rockchip,pins = ++ <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ vcc-lcd { ++ vcc_lcd_en: vcc-lcd-en { ++ rockchip,pins = ++ <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ vcc-wifi { ++ vcc_wifi_h: vcc-wifi-h { ++ rockchip,pins = ++ <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++}; ++ ++&pmu_io_domains { ++ status = "okay"; ++ pmuio1-supply = <&vcc3v3_pmu>; ++ pmuio2-supply = <&vcca1v8_pmu>; ++ vccio1-supply = <&vccio_acodec>; ++ vccio3-supply = <&vccio_sd>; ++ vccio4-supply = <&vcca1v8_pmu>; ++ vccio5-supply = <&vcc2v8_dvp>; ++ vccio6-supply = <&vcc1v8_dvp>; ++ vccio7-supply = <&vcc_3v3>; ++}; ++ ++&pwm4 { ++ status = "okay"; ++}; ++ ++&saradc { ++ vref-supply = <&vcc_1v8>; ++ status = "okay"; ++}; ++ ++&sdhci { ++ bus-width = <8>; ++ mmc-hs200-1_8v; ++ non-removable; ++ pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>, ++ <&emmc_datastrobe>, <&emmc_rstnout>; ++ pinctrl-names = "default"; ++ status = "okay"; ++}; ++ ++&sdmmc0 { ++ bus-width = <4>; ++ cap-mmc-highspeed; ++ cap-sd-highspeed; ++ disable-wp; ++ pinctrl-0 = <&sdmmc0_bus4>, <&sdmmc0_clk>, <&sdmmc0_cmd>, ++ <&sdmmc0_det>; ++ pinctrl-names = "default"; ++ sd-uhs-sdr104; ++ vqmmc-supply = <&vccio_sd>; ++ status = "okay"; ++}; ++ ++&sdmmc1 { ++ bus-width = <4>; ++ cap-sd-highspeed; ++ cap-sdio-irq; ++ keep-power-in-suspend; ++ mmc-pwrseq = <&sdio_pwrseq>; ++ non-removable; ++ pinctrl-0 = <&sdmmc1_bus4>, <&sdmmc1_cmd>, <&sdmmc1_clk>; ++ pinctrl-names = "default"; ++ vmmc-supply = <&vcc_wifi>; ++ status = "okay"; ++}; ++ ++&sdmmc2 { ++ bus-width = <4>; ++ cap-mmc-highspeed; ++ cap-sd-highspeed; ++ disable-wp; ++ pinctrl-0 = <&sdmmc2m1_bus4>, <&sdmmc2m1_cmd>, <&sdmmc2m1_clk>, ++ <&sdmmc2m1_det>; ++ pinctrl-names = "default"; ++ sd-uhs-sdr104; ++ vqmmc-supply = <&vcc2v8_dvp>; ++ status = "okay"; ++}; ++ ++&tsadc { ++ rockchip,hw-tshut-mode = <1>; ++ rockchip,hw-tshut-polarity = <0>; ++ status = "okay"; ++}; ++ ++&uart1 { ++ pinctrl-0 = <&uart1m0_xfer>, <&uart1m0_ctsn>, <&uart1m0_rtsn>; ++ pinctrl-names = "default"; ++ uart-has-rtscts; ++ status = "okay"; ++ ++ bluetooth { ++ compatible = "realtek,rtl8821cs-bt", "realtek,rtl8723bs-bt"; ++ device-wake-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>; ++ enable-gpios = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>; ++ host-wake-gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>; ++ }; ++}; ++ ++&uart2 { ++ status = "okay"; ++}; ++ ++&usb_host0_xhci { ++ phys = <&usb2phy0_otg>; ++ phy-names = "usb2-phy"; ++ status = "okay"; ++}; ++ ++&usb_host1_xhci { ++ status = "okay"; ++}; ++ ++&usb2phy0 { ++ status = "okay"; ++}; ++ ++&usb2phy0_otg { ++ status = "okay"; ++}; ++ ++&usb2phy0_host { ++ phy-supply = <&vcc5v0_host>; ++ status = "okay"; ++}; ++ ++&vop { ++ assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; ++ assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; ++ status = "okay"; ++}; ++ ++&vop_mmu { ++ status = "okay"; ++}; ++ ++&vp0 { ++ vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { ++ reg = ; ++ remote-endpoint = <&hdmi_in_vp0>; ++ }; ++}; ++ ++&vp1 { ++ vp1_out_dsi0: endpoint@ROCKCHIP_VOP2_EP_MIPI0 { ++ reg = ; ++ remote-endpoint = <&dsi0_in_vp1>; ++ }; ++}; +diff --git a/arch/arm/mach-rockchip/rk3568/Kconfig b/arch/arm/mach-rockchip/rk3568/Kconfig +index baa51349f4..a97da8ae55 100644 +--- a/arch/arm/mach-rockchip/rk3568/Kconfig ++++ b/arch/arm/mach-rockchip/rk3568/Kconfig +@@ -22,6 +22,11 @@ config TARGET_ODROID_M1_RK3568 + help + Hardkernel ODROID-M1 single board computer with a RK3568B2 SoC. + ++config TARGET_POWKIDDY_X55_RK3566 ++ bool "Powkiddy X55" ++ help ++ Powkiddy X55 handheld gaming console with an RK3566 SoC. ++ + config TARGET_QUARTZ64_RK3566 + bool "Pine64 Quartz64" + help +@@ -45,5 +50,6 @@ source "board/rockchip/evb_rk3568/Kconfig" + source "board/anbernic/rgxx3_rk3566/Kconfig" + source "board/hardkernel/odroid_m1/Kconfig" + source "board/pine64/quartz64_rk3566/Kconfig" ++source "board/powkiddy/x55/Kconfig" + + endif +diff --git a/board/powkiddy/x55/Kconfig b/board/powkiddy/x55/Kconfig +new file mode 100644 +index 0000000000..a7b3ed4d0d +--- /dev/null ++++ b/board/powkiddy/x55/Kconfig +@@ -0,0 +1,15 @@ ++if TARGET_POWKIDDY_X55_RK3566 ++ ++config SYS_BOARD ++ default "x55" ++ ++config SYS_VENDOR ++ default "powkiddy" ++ ++config SYS_CONFIG_NAME ++ default "powkiddy-x55-rk3566" ++ ++config BOARD_SPECIFIC_OPTIONS ++ def_bool y ++ ++endif +diff --git a/board/powkiddy/x55/MAINTAINERS b/board/powkiddy/x55/MAINTAINERS +new file mode 100644 +index 0000000000..9ed48f408e +--- /dev/null ++++ b/board/powkiddy/x55/MAINTAINERS +@@ -0,0 +1,9 @@ ++X55 ++M: Chris Morgan ++S: Maintained ++F: board/powkiddy/x55 ++F: include/configs/powkiddy-x55-rk3566.h ++F: configs/powkiddy-x55-rk3566_defconfig ++F: arch/arm/dts/rk3566-powkiddy-x55.dts ++F: arch/arm/dts/rk3566-powkiddy-x55-u-boot.dtsi ++F: doc/board/powkiddy/x55.rst +diff --git a/board/powkiddy/x55/Makefile b/board/powkiddy/x55/Makefile +new file mode 100644 +index 0000000000..55c8c16aa1 +--- /dev/null ++++ b/board/powkiddy/x55/Makefile +@@ -0,0 +1,6 @@ ++# SPDX-License-Identifier: GPL-2.0+ ++# ++# Copyright (c) 2023 Chris Morgan ++# ++ ++obj-y += x55.o +diff --git a/board/powkiddy/x55/x55.c b/board/powkiddy/x55/x55.c +new file mode 100644 +index 0000000000..8d98baa24f +--- /dev/null ++++ b/board/powkiddy/x55/x55.c +@@ -0,0 +1,42 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++/* ++ * Copyright (c) 2023 Chris Morgan ++ */ ++ ++#include ++#include ++ ++#define GPIO4_BASE 0xfe770000 ++#define GPIO_SWPORT_DR_L 0x0000 ++#define GPIO_SWPORT_DDR_L 0x0008 ++#define GPIO_B4 BIT(12) ++#define GPIO_B5 BIT(13) ++#define GPIO_B6 BIT(14) ++ ++#define GPIO_WRITEMASK(bits) ((bits) << 16) ++ ++/* ++ * Start LED very early so user knows device is on. Set color ++ * to red. ++ */ ++void spl_board_init(void) ++{ ++ setup_boot_mode(); ++ ++ /* Set GPIO4_B4, GPIO4_B5, and GPIO4_B6 to output. */ ++ writel(GPIO_WRITEMASK(GPIO_B6 | GPIO_B5 | GPIO_B4) | \ ++ (GPIO_B6 | GPIO_B5 | GPIO_B4), ++ (GPIO4_BASE + GPIO_SWPORT_DDR_L)); ++ /* Set GPIO4_B5 and GPIO4_B6 to 0 and GPIO4_B4 to 1. */ ++ writel(GPIO_WRITEMASK(GPIO_B6 | GPIO_B5 | GPIO_B4) | GPIO_B4, ++ (GPIO4_BASE + GPIO_SWPORT_DR_L)); ++} ++ ++int rk_board_late_init(void) ++{ ++ /* Turn off red LED and turn on orange LED. */ ++ writel(GPIO_WRITEMASK(GPIO_B6 | GPIO_B5 | GPIO_B4) | GPIO_B6, ++ (GPIO4_BASE + GPIO_SWPORT_DR_L)); ++ ++ return 0; ++} +diff --git a/configs/powkiddy-x55-rk3566_defconfig b/configs/powkiddy-x55-rk3566_defconfig +new file mode 100644 +index 0000000000..f9a513f97c +--- /dev/null ++++ b/configs/powkiddy-x55-rk3566_defconfig +@@ -0,0 +1,92 @@ ++CONFIG_ARM=y ++CONFIG_SKIP_LOWLEVEL_INIT=y ++CONFIG_COUNTER_FREQUENCY=24000000 ++CONFIG_ARCH_ROCKCHIP=y ++CONFIG_TEXT_BASE=0x00a00000 ++CONFIG_SPL_GPIO=y ++CONFIG_SPL_LIBCOMMON_SUPPORT=y ++CONFIG_SPL_LIBGENERIC_SUPPORT=y ++CONFIG_NR_DRAM_BANKS=2 ++CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y ++CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0xc00000 ++CONFIG_DEFAULT_DEVICE_TREE="rk3566-powkiddy-x55" ++CONFIG_ROCKCHIP_RK3568=y ++CONFIG_SPL_ROCKCHIP_BACK_TO_BROM=y ++CONFIG_SPL_ROCKCHIP_COMMON_BOARD=y ++CONFIG_ROCKCHIP_RK8XX_DISABLE_BOOT_ON_POWERON=y ++CONFIG_SPL_MMC=y ++CONFIG_SPL_SERIAL=y ++CONFIG_SPL_STACK_R_ADDR=0x600000 ++CONFIG_TARGET_POWKIDDY_X55_RK3566=y ++CONFIG_SPL_STACK=0x400000 ++CONFIG_DEBUG_UART_BASE=0xFE660000 ++CONFIG_DEBUG_UART_CLOCK=24000000 ++CONFIG_SYS_LOAD_ADDR=0xc00800 ++CONFIG_DEBUG_UART=y ++CONFIG_FIT=y ++CONFIG_FIT_VERBOSE=y ++CONFIG_SPL_FIT_SIGNATURE=y ++CONFIG_SPL_LOAD_FIT=y ++CONFIG_LEGACY_IMAGE_FORMAT=y ++CONFIG_OF_STDOUT_VIA_ALIAS=y ++CONFIG_DEFAULT_FDT_FILE="rk3566-powkiddy-x55.dtb" ++# CONFIG_DISPLAY_CPUINFO is not set ++CONFIG_DISPLAY_BOARDINFO_LATE=y ++CONFIG_SPL_MAX_SIZE=0x40000 ++CONFIG_SPL_PAD_TO=0x7f8000 ++CONFIG_SPL_HAS_BSS_LINKER_SECTION=y ++CONFIG_SPL_BSS_START_ADDR=0x4000000 ++CONFIG_SPL_BSS_MAX_SIZE=0x4000 ++CONFIG_SPL_BOARD_INIT=y ++# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set ++# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set ++CONFIG_SPL_STACK_R=y ++CONFIG_SPL_ADC=y ++CONFIG_SPL_POWER=y ++CONFIG_SPL_ATF=y ++CONFIG_CMD_PWM=y ++CONFIG_CMD_GPT=y ++CONFIG_CMD_MMC=y ++# CONFIG_CMD_SETEXPR is not set ++# CONFIG_SPL_DOS_PARTITION is not set ++CONFIG_SPL_OF_CONTROL=y ++CONFIG_OF_LIVE=y ++CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" ++CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y ++# CONFIG_NET is not set ++CONFIG_SPL_DM_SEQ_ALIAS=y ++CONFIG_SPL_REGMAP=y ++CONFIG_SPL_SYSCON=y ++CONFIG_SPL_CLK=y ++CONFIG_ARM_SMCCC_FEATURES=y ++CONFIG_SCMI_FIRMWARE=y ++CONFIG_ROCKCHIP_GPIO=y ++CONFIG_SYS_I2C_ROCKCHIP=y ++CONFIG_MISC=y ++CONFIG_SUPPORT_EMMC_RPMB=y ++CONFIG_MMC_DW=y ++CONFIG_MMC_DW_ROCKCHIP=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_SDMA=y ++CONFIG_MMC_SDHCI_ROCKCHIP=y ++CONFIG_SPL_PINCTRL=y ++CONFIG_DM_PMIC=y ++CONFIG_DM_PMIC_FAN53555=y ++CONFIG_PMIC_RK8XX=y ++CONFIG_SPL_DM_REGULATOR=y ++CONFIG_SPL_DM_REGULATOR_FIXED=y ++CONFIG_REGULATOR_RK8XX=y ++CONFIG_PWM_ROCKCHIP=y ++CONFIG_SPL_RAM=y ++# CONFIG_RAM_ROCKCHIP_DEBUG is not set ++CONFIG_DM_RNG=y ++CONFIG_RNG_ROCKCHIP=y ++# CONFIG_RNG_SMCCC_TRNG is not set ++CONFIG_BAUDRATE=1500000 ++CONFIG_DEBUG_UART_SHIFT=2 ++CONFIG_SYS_NS16550_MEM32=y ++CONFIG_SYSRESET=y ++CONFIG_REGEX=y ++# CONFIG_RSA is not set ++CONFIG_ERRNO_STR=y ++# CONFIG_EFI_LOADER is not set +diff --git a/doc/board/index.rst b/doc/board/index.rst +index 531e547e7e..dd4bce9981 100644 +--- a/doc/board/index.rst ++++ b/doc/board/index.rst +@@ -36,6 +36,7 @@ Board-specific doc + nxp/index + openpiton/index + phytec/index ++ powkiddy/index + purism/index + qualcomm/index + renesas/index +diff --git a/doc/board/powkiddy/index.rst b/doc/board/powkiddy/index.rst +new file mode 100644 +index 0000000000..b0115a73d4 +--- /dev/null ++++ b/doc/board/powkiddy/index.rst +@@ -0,0 +1,9 @@ ++.. SPDX-License-Identifier: GPL-2.0+ ++ ++Powkiddy ++======== ++ ++.. toctree:: ++ :maxdepth: 2 ++ ++ x55.rst +diff --git a/doc/board/powkiddy/x55.rst b/doc/board/powkiddy/x55.rst +new file mode 100644 +index 0000000000..cd7456883b +--- /dev/null ++++ b/doc/board/powkiddy/x55.rst +@@ -0,0 +1,25 @@ ++.. SPDX-License-Identifier: GPL-2.0+ ++ ++U-Boot for Powkiddy X55 Handheld Gaming Console ++=============================================== ++ ++This allows U-Boot to boot the Powkiddy X55 handheld gaming console. ++The X55 is very similar to the other existing Powkiddy RK3566 based ++devices, except that ADC channels 0-3 are used for the ADC joysticks. ++As a result the same auto detection functionality cannot be used on ++this device as the others. ++ ++The indicator LED will change color based on the boot stage. Red means ++the device is powered on but has yet to start U-Boot, amber means the ++device has started U-Boot and is waiting to boot Linux, and when Linux ++has taken over the LED should change to green (or however it has been ++configured by the user). ++ ++In the event the device needs to enter Rockchip download mode, a user ++can, starting with the power off, hold the left joystick all the way ++to the left and then power on the device. At this point the USB-C port ++marked DC/OTG should be set to peripheral mode and allow a user to ++manipulate the device with the rkdeveloptool tool. ++ ++See :doc:`../rockchip/devicetree/rockchip` for building and flashing ++instructions. +diff --git a/doc/board/rockchip/rockchip.rst b/doc/board/rockchip/rockchip.rst +index 18d0b6f089..4e290cecdc 100644 +--- a/doc/board/rockchip/rockchip.rst ++++ b/doc/board/rockchip/rockchip.rst +@@ -98,6 +98,7 @@ List of mainline supported Rockchip boards: + - Pine64 SOQuartz on Blade (soquartz-blade-rk3566) + - Pine64 SOQuartz on CM4-IO (soquartz-cm4-rk3566) + - Pine64 SOQuartz on Model A (soquartz-model-a-rk3566) ++ - Powkiddy X55 (powkiddy-x55-rk3566) + - Radxa CM3 IO Board (radxa-cm3-io-rk3566) + + * rk3568 +diff --git a/include/configs/powkiddy-x55-rk3566.h b/include/configs/powkiddy-x55-rk3566.h +new file mode 100644 +index 0000000000..a25b6de455 +--- /dev/null ++++ b/include/configs/powkiddy-x55-rk3566.h +@@ -0,0 +1,14 @@ ++/* SPDX-License-Identifier: GPL-2.0+ */ ++ ++#ifndef __POWKIDDY_X55_RK3566_H ++#define __POWKIDDY_X55_RK3566_H ++ ++#include ++ ++#define ROCKCHIP_DEVICE_SETTINGS \ ++ "stdout=serial,vidconsole\0" \ ++ "stderr=serial,vidconsole\0" ++ ++#define RK_DNL_ADC_CHAN 0 ++ ++#endif +-- +2.34.1 diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-X55-ML/003-fix-dtb-and-vs.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-X55-ML/003-fix-dtb-and-vs.patch new file mode 100644 index 0000000000..08d3f2b040 --- /dev/null +++ b/projects/Rockchip/packages/u-boot/patches/RK3566-X55-ML/003-fix-dtb-and-vs.patch @@ -0,0 +1,35 @@ +diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +index 2445663d4..194605ff0 100644 +--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c ++++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +@@ -33,7 +33,7 @@ + + #define GPIO_WRITEMASK(bits) ((bits) << 16) + +-#define DTB_DIR "rockchip/" ++#define DTB_DIR "" + + struct rg3xx_model { + const u16 adc_value; +@@ -375,7 +375,7 @@ int rgxx3_detect_device(void) + if (ret) { + if (board_id == RG353V) + board_id = RG353VS; +- if (board_id == RG353P) ++ else if (board_id == RG353P) + board_id = RG353PS; + else + board_id = RGARCS; +diff --git a/configs/anbernic-rgxx3-rk3566_defconfig b/configs/anbernic-rgxx3-rk3566_defconfig +index 4e72f7581..27911cc9f 100644 +--- a/configs/anbernic-rgxx3-rk3566_defconfig ++++ b/configs/anbernic-rgxx3-rk3566_defconfig +@@ -30,7 +30,7 @@ CONFIG_SPL_LOAD_FIT=y + CONFIG_LEGACY_IMAGE_FORMAT=y + CONFIG_OF_BOARD_SETUP=y + CONFIG_OF_STDOUT_VIA_ALIAS=y +-CONFIG_DEFAULT_FDT_FILE="rockchip/rk3566-anbernic-rgxx3.dtb" ++CONFIG_DEFAULT_FDT_FILE="rk3566-anbernic-rgxx3.dtb" + # CONFIG_CONSOLE_MUX is not set + # CONFIG_DISPLAY_CPUINFO is not set + CONFIG_DISPLAY_BOARDINFO_LATE=y From b248f82861e7951e91f20077985a50ed502da7ec Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 27 Dec 2023 13:36:51 +0000 Subject: [PATCH 071/167] Fix post-update cleanup oops. --- packages/jelos/sources/post-update | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/jelos/sources/post-update b/packages/jelos/sources/post-update index 247d311374..20f4f0f5bd 100644 --- a/packages/jelos/sources/post-update +++ b/packages/jelos/sources/post-update @@ -119,7 +119,7 @@ cp -f /usr/config/smb.conf /storage/.config ### 20231202 - Remove stale profile bits if they exist. for FILE in 001-deviceconfig 99-mixer do - rm -rf ${FILE} 2>/dev/null + rm -f /storage/.config/profile.d/${FILE} 2>/dev/null done ### 20231203 - Disable merged storage by default. From 0d0ec8f3228b19fd63ca096c47016c8e8f449ffa Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 27 Dec 2023 14:09:14 +0000 Subject: [PATCH 072/167] pull over emulators virtual package from dev. --- packages/virtual/emulators/package.mk | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/virtual/emulators/package.mk b/packages/virtual/emulators/package.mk index 30cf079c1d..66075b88eb 100644 --- a/packages/virtual/emulators/package.mk +++ b/packages/virtual/emulators/package.mk @@ -16,8 +16,8 @@ PKG_RETROARCH="core-info libretro-database retroarch retroarch-assets retroarch- LIBRETRO_CORES="81-lr a5200-lr arduous-lr atari800-lr beetle-gba-lr beetle-lynx-lr beetle-ngp-lr beetle-pce-lr beetle-pce-fast-lr \ beetle-pcfx-lr bsnes-lr bsnes-mercury-performance-lr beetle-supafaust-lr beetle-supergrafx-lr \ - beetle-vb-lr beetle-wswan-lr beetle-saturn-lr bluemsx-lr cannonball-lr cap32-lr crocods-lr daphne-lr \ - dinothawr-lr dosbox-pure-lr duckstation-lr easyrpg-lr fake08-lr fbalpha2012-lr \ + beetle-vb-lr beetle-wswan-lr beetle-saturn-lr bluemsx-lr cap32-lr crocods-lr daphne-lr \ + dosbox-svn-lr dosbox-pure-lr duckstation-lr easyrpg-lr fake08-lr fbalpha2012-lr \ fbalpha2019-lr fbneo-lr fceumm-lr flycast2021-lr fmsx-lr freechaf-lr freeintv-lr freej2me-lr fuse-lr \ gambatte-lr gearboy-lr gearcoleco-lr gearsystem-lr genesis-plus-gx-lr genesis-plus-gx-wide-lr \ gw-lr handy-lr hatari-lr idtech-lr mame2003-plus-lr mame2010-lr mame2015-lr melonds-lr \ @@ -28,8 +28,6 @@ LIBRETRO_CORES="81-lr a5200-lr arduous-lr atari800-lr beetle-gba-lr beetle-lynx- stella-lr swanstation-lr tic80-lr tgbdual-lr uzem-lr vba-next-lr minivmac-lr \ vbam-lr vecx-lr vice-lr yabasanshiro-lr virtualjaguar-lr xmil-lr" -### Disabled 3566-ML: dosbox-svn-lr - ### Emulators or cores for specific devices case "${DEVICE}" in AMD64) From f35722d3685b33c377645f8d4331df7f200bf081 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 27 Dec 2023 15:36:36 +0000 Subject: [PATCH 073/167] Fix SDL_net url. --- packages/graphics/SDL/SDL_net/package.mk | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/graphics/SDL/SDL_net/package.mk b/packages/graphics/SDL/SDL_net/package.mk index a0a426f3e8..35172e95df 100644 --- a/packages/graphics/SDL/SDL_net/package.mk +++ b/packages/graphics/SDL/SDL_net/package.mk @@ -18,11 +18,10 @@ PKG_NAME="SDL_net" PKG_VERSION="1.2.8" -PKG_SHA256="5f4a7a8bb884f793c278ac3f3713be41980c5eedccecff0260411347714facb4" PKG_ARCH="any" PKG_LICENSE="GPL" PKG_SITE="https://www.libsdl.org/" -PKG_URL="https://github.com/libsdl-org/SDL_net/releases/download/release-${PKG_VERSION}/${PKG_NAME}-${PKG_VERSION}.tar.gz" +PKG_URL="https://github.com/libsdl-org/${PKG_NAME}/archive/refs/tags/release-${PKG_VERSION}.tar.gz" PKG_DEPENDS_TARGET="toolchain yasm:host alsa-lib systemd dbus SDL SDL_net:host" PKG_DEPENDS_HOST="SDL:host" PKG_SECTION="multimedia" From c2f2e37596de6d33a957a7ae946b54ad4f78a592 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 27 Dec 2023 18:20:38 +0000 Subject: [PATCH 074/167] Deprecate -ML label, fix X55. --- Makefile | 9 - .../patches/RK3566-ML/000-platform.patch | 43 - .../standalone/dolphin-sa/config/RK3566-ML | 1 - .../standalone/drastic-sa/config/RK3566-ML | 1 - .../duckstation-sa/config/RK3566-ML | 1 - .../standalone/flycast-sa/config/RK3566-ML | 1 - .../mupen64plus-sa-core/config/RK3566-ML | 1 - .../mupen64plus-sa-input-sdl/config/RK3566-ML | 1 - .../standalone/ppsspp-sa/sources/RK3566-ML | 1 - .../emulators/standalone/retroarch/package.mk | 11 +- .../patches/RK3566-X55/0011-librga.patch | 12 - .../RK3566-X55/002-display-tweaks.patch | 35 - .../retroarch/sources/RK3566-ML/RK3566 | 1 - .../sources/RK3566-ML/TATE-MAME 2003-Plus.rmp | 27 - .../RK3566-ML/retroarch-core-options.cfg | 153 - .../retroarch/sources/RK3566-ML/retroarch.cfg | 822 --- .../RK3566-ML/retroarch32bit-append.cfg | 2 - .../RK3566-ML/retroarch64bit-append.cfg | 2 - packages/graphics/SDL2/patches/RK3566-ML | 1 - .../platforms/RK3566-ML/001-device_config | 10 - .../quirks/platforms/RK3566-ML/050-audio_path | 9 - .../quirks/platforms/RK3566-ML/050-modifiers | 10 - .../platforms/RK3566-ML/060-game_settings | 16 - .../quirks/platforms/RK3566-ML/090-ui_service | 8 - .../quirks/platforms/RK3566/001-device_config | 4 +- .../quirks/platforms/RK3566/050-audio_path | 4 +- .../quirks/platforms/RK3566/050-modifiers | 4 +- .../quirks/platforms/RK3566/060-game_settings | 7 +- .../quirks/platforms/RK3566/090-ui_service | 6 +- .../platforms/RK3566/sleep.d/post/002-freq | 23 - .../platforms/RK3566/sleep.d/pre/002-freq | 19 - .../wireguard-linux-compat/patches/RK3566-ML | 1 - .../system-utils/sources/devices/RK3566-ML | 1 - .../RK3566-ML/linux/linux.aarch64.conf | 1113 --- projects/Rockchip/devices/RK3566-ML/options | 161 - .../RK3566-X55-ML/linux/linux.aarch64.conf | 1113 --- .../Rockchip/devices/RK3566-X55-ML/options | 161 - .../RK3566-X55/linux/linux.aarch64.conf | 6380 ++-------------- projects/Rockchip/devices/RK3566-X55/options | 46 +- .../Rockchip/devices/RK3566/boot/boot.ini | 6 - .../devices/RK3566/linux/linux.aarch64.conf | 6391 ++--------------- .../linux/linux.aarch64.old.conf | 0 .../linux/linux.jelos.compact.config | 0 projects/Rockchip/devices/RK3566/options | 46 +- projects/Rockchip/packages/linux/package.mk | 16 +- ...l-Add-helper-for-reading-DT-rotation.patch | 103 - ...lit-out-orientation-quirk-detection-.patch | 171 - ...-panel-simple-Read-panel-orientation.patch | 55 - ...rientation-of-the-Powkiddy-X55-panel.patch | 25 - ...05-disable-enum-int-mismatch-warning.patch | 12 - .../001-fix-model-names.patch | 0 .../002-rk817-power-driver-names.patch | 0 .../003-v4-add-rk2023.patch | 0 .../004-add-rg351v.patch | 0 .../005-set-mac-address.patch | 0 .../006-v2-add-powkiddy-x55.patch | 0 .../001-fix-model-names.patch | 0 .../002-rk817-power-driver-names.patch | 0 .../003-v4-add-rk2023.patch | 0 .../004-add-rg351v.patch | 0 .../005-set-mac-address.patch | 0 .../006-v2-add-powkiddy-x55.patch | 0 ...05-disable-enum-int-mismatch-warning.patch | 0 projects/Rockchip/packages/u-boot/package.mk | 6 +- ...05-disable-enum-int-mismatch-warning.patch | 13 - .../patches/RK3566-X55/001-charge-led.patch | 219 - ...itional_boards_and_features_to_rgxx3.patch | 0 .../002-v2-add-powkiddy-x55.patch | 0 .../003-fix-dtb-and-vs.patch | 0 ...05-disable-enum-int-mismatch-warning.patch | 13 - ...itional_boards_and_features_to_rgxx3.patch | 0 .../002-v2-add-powkiddy-x55.patch | 0 .../003-fix-dtb-and-vs.patch | 0 73 files changed, 1432 insertions(+), 15865 deletions(-) delete mode 100644 packages/emulators/libretro/flycast2021-lr/patches/RK3566-ML/000-platform.patch delete mode 120000 packages/emulators/standalone/dolphin-sa/config/RK3566-ML delete mode 120000 packages/emulators/standalone/drastic-sa/config/RK3566-ML delete mode 120000 packages/emulators/standalone/duckstation-sa/config/RK3566-ML delete mode 120000 packages/emulators/standalone/flycast-sa/config/RK3566-ML delete mode 120000 packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-core/config/RK3566-ML delete mode 120000 packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-input-sdl/config/RK3566-ML delete mode 120000 packages/emulators/standalone/ppsspp-sa/sources/RK3566-ML delete mode 100644 packages/emulators/standalone/retroarch/patches/RK3566-X55/0011-librga.patch delete mode 100644 packages/emulators/standalone/retroarch/patches/RK3566-X55/002-display-tweaks.patch delete mode 120000 packages/emulators/standalone/retroarch/sources/RK3566-ML/RK3566 delete mode 100644 packages/emulators/standalone/retroarch/sources/RK3566-ML/TATE-MAME 2003-Plus.rmp delete mode 100644 packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch-core-options.cfg delete mode 100644 packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch.cfg delete mode 100644 packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch32bit-append.cfg delete mode 100644 packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch64bit-append.cfg delete mode 120000 packages/graphics/SDL2/patches/RK3566-ML delete mode 100755 packages/hardware/quirks/platforms/RK3566-ML/001-device_config delete mode 100755 packages/hardware/quirks/platforms/RK3566-ML/050-audio_path delete mode 100755 packages/hardware/quirks/platforms/RK3566-ML/050-modifiers delete mode 100755 packages/hardware/quirks/platforms/RK3566-ML/060-game_settings delete mode 100755 packages/hardware/quirks/platforms/RK3566-ML/090-ui_service delete mode 100644 packages/hardware/quirks/platforms/RK3566/sleep.d/post/002-freq delete mode 100644 packages/hardware/quirks/platforms/RK3566/sleep.d/pre/002-freq delete mode 120000 packages/network/wireguard-linux-compat/patches/RK3566-ML delete mode 120000 packages/sysutils/system-utils/sources/devices/RK3566-ML delete mode 100644 projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf delete mode 100644 projects/Rockchip/devices/RK3566-ML/options delete mode 100644 projects/Rockchip/devices/RK3566-X55-ML/linux/linux.aarch64.conf delete mode 100644 projects/Rockchip/devices/RK3566-X55-ML/options delete mode 100644 projects/Rockchip/devices/RK3566/boot/boot.ini rename projects/Rockchip/devices/{RK3566-ML => RK3566}/linux/linux.aarch64.old.conf (100%) rename projects/Rockchip/devices/{RK3566-ML => RK3566}/linux/linux.jelos.compact.config (100%) delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566-X55/0001-drm-panel-Add-helper-for-reading-DT-rotation.patch delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566-X55/0002-drm-connector-Split-out-orientation-quirk-detection-.patch delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566-X55/0003-drm-panel-simple-Read-panel-orientation.patch delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566-X55/0004-dts-Define-the-orientation-of-the-Powkiddy-X55-panel.patch delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566-X55/0005-disable-enum-int-mismatch-warning.patch rename projects/Rockchip/packages/linux/patches/{RK3566-ML => RK3566-X55}/001-fix-model-names.patch (100%) rename projects/Rockchip/packages/linux/patches/{RK3566-ML => RK3566-X55}/002-rk817-power-driver-names.patch (100%) rename projects/Rockchip/packages/linux/patches/{RK3566-ML => RK3566-X55}/003-v4-add-rk2023.patch (100%) rename projects/Rockchip/packages/linux/patches/{RK3566-ML => RK3566-X55}/004-add-rg351v.patch (100%) rename projects/Rockchip/packages/linux/patches/{RK3566-ML => RK3566-X55}/005-set-mac-address.patch (100%) rename projects/Rockchip/packages/linux/patches/{RK3566-ML => RK3566-X55}/006-v2-add-powkiddy-x55.patch (100%) rename projects/Rockchip/packages/linux/patches/{RK3566-X55-ML => RK3566}/001-fix-model-names.patch (100%) rename projects/Rockchip/packages/linux/patches/{RK3566-X55-ML => RK3566}/002-rk817-power-driver-names.patch (100%) rename projects/Rockchip/packages/linux/patches/{RK3566-X55-ML => RK3566}/003-v4-add-rk2023.patch (100%) rename projects/Rockchip/packages/linux/patches/{RK3566-X55-ML => RK3566}/004-add-rg351v.patch (100%) rename projects/Rockchip/packages/linux/patches/{RK3566-X55-ML => RK3566}/005-set-mac-address.patch (100%) rename projects/Rockchip/packages/linux/patches/{RK3566-X55-ML => RK3566}/006-v2-add-powkiddy-x55.patch (100%) rename projects/Rockchip/packages/linux/patches/{RK3566 => RK3588}/0005-disable-enum-int-mismatch-warning.patch (100%) delete mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-X55/0005-disable-enum-int-mismatch-warning.patch delete mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566-X55/001-charge-led.patch rename projects/Rockchip/packages/u-boot/patches/{RK3566-ML => RK3566-X55}/001-v3-add_additional_boards_and_features_to_rgxx3.patch (100%) rename projects/Rockchip/packages/u-boot/patches/{RK3566-ML => RK3566-X55}/002-v2-add-powkiddy-x55.patch (100%) rename projects/Rockchip/packages/u-boot/patches/{RK3566-ML => RK3566-X55}/003-fix-dtb-and-vs.patch (100%) delete mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566/0005-disable-enum-int-mismatch-warning.patch rename projects/Rockchip/packages/u-boot/patches/{RK3566-X55-ML => RK3566}/001-v3-add_additional_boards_and_features_to_rgxx3.patch (100%) rename projects/Rockchip/packages/u-boot/patches/{RK3566-X55-ML => RK3566}/002-v2-add-powkiddy-x55.patch (100%) rename projects/Rockchip/packages/u-boot/patches/{RK3566-X55-ML => RK3566}/003-fix-dtb-and-vs.patch (100%) diff --git a/Makefile b/Makefile index 29701435ae..a15066f0a1 100644 --- a/Makefile +++ b/Makefile @@ -57,15 +57,6 @@ RK3566-X55: DEVICE_ROOT=RK3566 PROJECT=Rockchip DEVICE=RK3566-X55 ARCH=arm ./scripts/build_distro DEVICE_ROOT=RK3566 PROJECT=Rockchip DEVICE=RK3566-X55 ARCH=aarch64 ./scripts/build_distro -RK3566-ML: - unset DEVICE_ROOT - PROJECT=Rockchip DEVICE=RK3566-ML ARCH=arm ./scripts/build_distro - PROJECT=Rockchip DEVICE=RK3566-ML ARCH=aarch64 ./scripts/build_distro - -RK3566-X55-ML: - DEVICE_ROOT=RK3566-ML PROJECT=Rockchip DEVICE=RK3566-X55-ML ARCH=arm ./scripts/build_distro - DEVICE_ROOT=RK3566-ML PROJECT=Rockchip DEVICE=RK3566-X55-ML ARCH=aarch64 ./scripts/build_distro - RK3326: unset DEVICE_ROOT PROJECT=Rockchip DEVICE=RK3326 ARCH=arm ./scripts/build_distro diff --git a/packages/emulators/libretro/flycast2021-lr/patches/RK3566-ML/000-platform.patch b/packages/emulators/libretro/flycast2021-lr/patches/RK3566-ML/000-platform.patch deleted file mode 100644 index 0c11e23f03..0000000000 --- a/packages/emulators/libretro/flycast2021-lr/patches/RK3566-ML/000-platform.patch +++ /dev/null @@ -1,43 +0,0 @@ -diff -rupN flycast.orig/Makefile flycast/Makefile ---- flycast.orig/Makefile 2022-06-18 13:29:52.675787687 -0400 -+++ flycast/Makefile 2022-06-18 13:53:23.564624927 -0400 -@@ -403,26 +403,30 @@ else ifeq ($(platform), arm64_cortex_a53 - - ####################################### - --# ARM64 SM1 Odroid C4 --else ifeq ($(platform), odroidc4) -+# ARM64 RK3566 -+else ifeq ($(platform), RK3566-ML) - EXT ?= so - TARGET := $(TARGET_NAME)_libretro.$(EXT) - SHARED += -shared -Wl,--version-script=link.T -- LDFLAGS += -Wl,--no-undefined - fpic = -fPIC - LIBS += -lrt - ARM_FLOAT_ABI_HARD = 0 - FORCE_GLES = 1 - SINGLE_PREC_FLAGS = 1 -- CPUFLAGS += -DHOST_CPU=0x20000006 -DTARGET_LINUX_ARMv8 -frename-registers -- CFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 $(CPUFLAGS) -- CXXFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 $(CPUFLAGS) -- ASFLAGS += $(CFLAGS) -c -frename-registers -fno-strict-aliasing -ffast-math -ftree-vectorize -+ HAVE_LTCG = 0 -+ HAVE_OPENMP = 0 -+ CFLAGS += -Ofast \ -+ -fuse-linker-plugin \ -+ -fno-stack-protector -fno-ident -fomit-frame-pointer \ -+ -fmerge-all-constants -ffast-math -funroll-all-loops \ -+ -mcpu=cortex-a55 -mtune=cortex-a55 -+ CXXFLAGS += $(CFLAGS) -+ LDFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 -Ofast -flto -fuse-linker-plugin - PLATFORM_EXT := unix -+ CORE_DEFINES += -DLOW_END -DLOW_RES - WITH_DYNAREC=arm64 -+ PLATFORM_EXT := unix - HAVE_GENERIC_JIT = 0 -- HAVE_VULKAN = 0 -- HAVE_LTCG = 0 - - ####################################### - diff --git a/packages/emulators/standalone/dolphin-sa/config/RK3566-ML b/packages/emulators/standalone/dolphin-sa/config/RK3566-ML deleted file mode 120000 index 9207b5754b..0000000000 --- a/packages/emulators/standalone/dolphin-sa/config/RK3566-ML +++ /dev/null @@ -1 +0,0 @@ -RK3566 \ No newline at end of file diff --git a/packages/emulators/standalone/drastic-sa/config/RK3566-ML b/packages/emulators/standalone/drastic-sa/config/RK3566-ML deleted file mode 120000 index 9207b5754b..0000000000 --- a/packages/emulators/standalone/drastic-sa/config/RK3566-ML +++ /dev/null @@ -1 +0,0 @@ -RK3566 \ No newline at end of file diff --git a/packages/emulators/standalone/duckstation-sa/config/RK3566-ML b/packages/emulators/standalone/duckstation-sa/config/RK3566-ML deleted file mode 120000 index 9207b5754b..0000000000 --- a/packages/emulators/standalone/duckstation-sa/config/RK3566-ML +++ /dev/null @@ -1 +0,0 @@ -RK3566 \ No newline at end of file diff --git a/packages/emulators/standalone/flycast-sa/config/RK3566-ML b/packages/emulators/standalone/flycast-sa/config/RK3566-ML deleted file mode 120000 index 9207b5754b..0000000000 --- a/packages/emulators/standalone/flycast-sa/config/RK3566-ML +++ /dev/null @@ -1 +0,0 @@ -RK3566 \ No newline at end of file diff --git a/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-core/config/RK3566-ML b/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-core/config/RK3566-ML deleted file mode 120000 index 9207b5754b..0000000000 --- a/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-core/config/RK3566-ML +++ /dev/null @@ -1 +0,0 @@ -RK3566 \ No newline at end of file diff --git a/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-input-sdl/config/RK3566-ML b/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-input-sdl/config/RK3566-ML deleted file mode 120000 index 9207b5754b..0000000000 --- a/packages/emulators/standalone/mupen64plus-sa/mupen64plus-sa-input-sdl/config/RK3566-ML +++ /dev/null @@ -1 +0,0 @@ -RK3566 \ No newline at end of file diff --git a/packages/emulators/standalone/ppsspp-sa/sources/RK3566-ML b/packages/emulators/standalone/ppsspp-sa/sources/RK3566-ML deleted file mode 120000 index 9207b5754b..0000000000 --- a/packages/emulators/standalone/ppsspp-sa/sources/RK3566-ML +++ /dev/null @@ -1 +0,0 @@ -RK3566 \ No newline at end of file diff --git a/packages/emulators/standalone/retroarch/package.mk b/packages/emulators/standalone/retroarch/package.mk index cba7e61352..1390ef3557 100644 --- a/packages/emulators/standalone/retroarch/package.mk +++ b/packages/emulators/standalone/retroarch/package.mk @@ -33,6 +33,7 @@ PKG_CONFIGURE_OPTS_TARGET=" --disable-qt \ --disable-vg \ --disable-sdl \ --enable-sdl2 \ + --disable-odroidgo2 \ --enable-ffmpeg" case ${PROJECT} in @@ -41,16 +42,6 @@ case ${PROJECT} in ;; esac -case ${DEVICE} in - RK3566-X55) - PKG_DEPENDS_TARGET+=" libgo2" - PKG_CONFIGURE_OPTS_TARGET+=" --enable-odroidgo2" - ;; - *) - PKG_CONFIGURE_OPTS_TARGET+=" --disable-odroidgo2" - ;; -esac - case ${ARCH} in arm) PKG_CONFIGURE_OPTS_TARGET+=" --enable-neon" diff --git a/packages/emulators/standalone/retroarch/patches/RK3566-X55/0011-librga.patch b/packages/emulators/standalone/retroarch/patches/RK3566-X55/0011-librga.patch deleted file mode 100644 index 7f875aea19..0000000000 --- a/packages/emulators/standalone/retroarch/patches/RK3566-X55/0011-librga.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -rupN retroarch.orig/gfx/drivers/oga_gfx.c retroarch/gfx/drivers/oga_gfx.c ---- retroarch.orig/gfx/drivers/oga_gfx.c 2022-02-28 19:40:46.222185295 -0500 -+++ retroarch/gfx/drivers/oga_gfx.c 2022-02-28 19:44:14.187909576 -0500 -@@ -22,7 +22,7 @@ - #include "../../verbosity.h" - #include - #include --#include -+#include - #include - #include - #include diff --git a/packages/emulators/standalone/retroarch/patches/RK3566-X55/002-display-tweaks.patch b/packages/emulators/standalone/retroarch/patches/RK3566-X55/002-display-tweaks.patch deleted file mode 100644 index bc388cce96..0000000000 --- a/packages/emulators/standalone/retroarch/patches/RK3566-X55/002-display-tweaks.patch +++ /dev/null @@ -1,35 +0,0 @@ -Correct DRM format on Powkiddy x55, extracted from PowKiddy x55 sources. -diff --git a/deps/libgo2/src/display.c b/deps/libgo2/src/display.c -index b91cf0624b..936b677fc4 100644 ---- a/deps/libgo2/src/display.c -+++ b/deps/libgo2/src/display.c -@@ -550,7 +550,7 @@ static uint32_t go2_rkformat_get(uint32_t drm_fourcc) - - case DRM_FORMAT_ARGB8888: - case DRM_FORMAT_XRGB8888: -- return RK_FORMAT_BGRA_8888; -+ return RK_FORMAT_RGBA_8888; - - case DRM_FORMAT_RGB565: - return RK_FORMAT_RGB_565; -@@ -586,6 +586,7 @@ void go2_surface_blit(go2_surface_t* srcSurface, int srcX, int srcY, int srcWidt - dst.rect.hstride = dstSurface->height; - dst.rect.format = go2_rkformat_get(dstSurface->format); - -+ - rga_info_t src = { 0 }; - src.fd = go2_surface_prime_fd(srcSurface); - src.mmuFlag = 1; -diff --git a/gfx/drivers_context/drm_go2_ctx.c b/gfx/drivers_context/drm_go2_ctx.c -index b758137703..dbcb992279 100644 ---- a/gfx/drivers_context/drm_go2_ctx.c -+++ b/gfx/drivers_context/drm_go2_ctx.c -@@ -133,7 +133,7 @@ static void *gfx_ctx_go2_drm_init(void *video_driver) - } - - drm->presenter = go2_presenter_create(drm->display, -- DRM_FORMAT_RGB565, 0xff000000, true); -+ DRM_FORMAT_XRGB8888, 0xff000000, true); - - return drm; - } diff --git a/packages/emulators/standalone/retroarch/sources/RK3566-ML/RK3566 b/packages/emulators/standalone/retroarch/sources/RK3566-ML/RK3566 deleted file mode 120000 index 9207b5754b..0000000000 --- a/packages/emulators/standalone/retroarch/sources/RK3566-ML/RK3566 +++ /dev/null @@ -1 +0,0 @@ -RK3566 \ No newline at end of file diff --git a/packages/emulators/standalone/retroarch/sources/RK3566-ML/TATE-MAME 2003-Plus.rmp b/packages/emulators/standalone/retroarch/sources/RK3566-ML/TATE-MAME 2003-Plus.rmp deleted file mode 100644 index 366e47afad..0000000000 --- a/packages/emulators/standalone/retroarch/sources/RK3566-ML/TATE-MAME 2003-Plus.rmp +++ /dev/null @@ -1,27 +0,0 @@ -input_libretro_device_p1 = "1" -input_libretro_device_p2 = "1" -input_libretro_device_p3 = "1" -input_libretro_device_p4 = "1" -input_libretro_device_p5 = "1" -input_player1_analog_dpad_mode = "1" -input_player1_btn_down = "6" -input_player1_btn_left = "4" -input_player1_btn_right = "5" -input_player1_btn_up = "7" -input_player1_stk_l_x+ = "5" -input_player1_stk_l_x- = "4" -input_player1_stk_l_y+ = "6" -input_player1_stk_l_y- = "7" -input_player1_stk_r_x+ = "5" -input_player1_stk_r_x- = "4" -input_player1_stk_r_y+ = "6" -input_player1_stk_r_y- = "7" -input_player2_analog_dpad_mode = "0" -input_player3_analog_dpad_mode = "0" -input_player4_analog_dpad_mode = "0" -input_player5_analog_dpad_mode = "0" -input_remap_port_p1 = "0" -input_remap_port_p2 = "1" -input_remap_port_p3 = "2" -input_remap_port_p4 = "3" -input_remap_port_p5 = "4" diff --git a/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch-core-options.cfg b/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch-core-options.cfg deleted file mode 100644 index 38e4ab0646..0000000000 --- a/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch-core-options.cfg +++ /dev/null @@ -1,153 +0,0 @@ -mupen64plus-alt-map = "False" -mupen64plus-aspect = "4:3" -mupen64plus-astick-deadzone = "15" -mupen64plus-astick-sensitivity = "100" -mupen64plus-BackgroundMode = "Stripped" -mupen64plus-BilinearMode = "standard" -mupen64plus-CorrectTexrectCoords = "Auto" -mupen64plus-CountPerOp = "0" -mupen64plus-CountPerOpDenomPot = "0" -mupen64plus-cpucore = "dynamic_recompiler" -mupen64plus-d-cbutton = "C3" -mupen64plus-DitheringPattern = "True" -mupen64plus-DitheringQuantization = "True" -mupen64plus-EnableCopyAuxToRDRAM = "True" -mupen64plus-EnableCopyColorToRDRAM = "Async" -mupen64plus-EnableCopyDepthToRDRAM = "Software" -mupen64plus-EnableEnhancedHighResStorage = "False" -mupen64plus-EnableEnhancedTextureStorage = "False" -mupen64plus-EnableFBEmulation = "True" -mupen64plus-EnableFragmentDepthWrite = "True" -mupen64plus-EnableHiResAltCRC = "False" -mupen64plus-EnableHWLighting = "False" -mupen64plus-EnableInaccurateTextureCoordinates = "False" -mupen64plus-EnableLegacyBlending = "False" -mupen64plus-EnableLODEmulation = "True" -mupen64plus-EnableNativeResFactor = "1" -mupen64plus-EnableNativeResTexrects = "Optimized" -mupen64plus-EnableOverscan = "Enabled" -mupen64plus-EnableTexCoordBounds = "False" -mupen64plus-EnableTextureCache = "True" -mupen64plus-ForceDisableExtraMem = "False" -mupen64plus-FrameDuping = "True" -mupen64plus-Framerate = "Original" -mupen64plus-FXAA = "0" -mupen64plus-GLideN64IniBehaviour = "late" -mupen64plus-HybridFilter = "True" -mupen64plus-IgnoreTLBExceptions = "False" -mupen64plus-l-cbutton = "C2" -mupen64plus-MaxHiResTxVramLimit = "0" -mupen64plus-MaxTxCacheSize = "8000" -mupen64plus-MultiSampling = "0" -mupen64plus-OverscanBottom = "0" -mupen64plus-OverscanLeft = "0" -mupen64plus-OverscanRight = "0" -mupen64plus-OverscanTop = "0" -mupen64plus-pak1 = "memory" -mupen64plus-pak2 = "none" -mupen64plus-pak3 = "none" -mupen64plus-pak4 = "none" -mupen64plus-r-cbutton = "C1" -mupen64plus-rdp-plugin = "gliden64" -mupen64plus-RDRAMImageDitheringMode = "BlueNoise" -mupen64plus-rsp-plugin = "hle" -mupen64plus-ThreadedRenderer = "True" -mupen64plus-txCacheCompression = "True" -mupen64plus-txEnhancementMode = "None" -mupen64plus-txFilterIgnoreBG = "True" -mupen64plus-txFilterMode = "None" -mupen64plus-txHiresEnable = "False" -mupen64plus-txHiresFullAlphaChannel = "False" -mupen64plus-u-cbutton = "C4" -mupen64plus-virefresh = "Auto" -pcsx_rearmed_analog_axis_modifier = "circle" -pcsx_rearmed_async_cd = "sync" -pcsx_rearmed_bios = "auto" -pcsx_rearmed_display_internal_fps = "disabled" -pcsx_rearmed_dithering = "enabled" -pcsx_rearmed_drc = "enabled" -pcsx_rearmed_duping_enable = "enabled" -pcsx_rearmed_frameskip_type = "disabled" -pcsx_rearmed_gteregsunneeded = "disabled" -pcsx_rearmed_gunconadjustratiox = "1" -pcsx_rearmed_gunconadjustratioy = "1" -pcsx_rearmed_gunconadjustx = "0" -pcsx_rearmed_gunconadjusty = "0" -pcsx_rearmed_idiablofix = "disabled" -pcsx_rearmed_input_sensitivity = "1.00" -pcsx_rearmed_inuyasha_fix = "disabled" -pcsx_rearmed_memcard2 = "disabled" -pcsx_rearmed_multitap1 = "auto" -pcsx_rearmed_multitap2 = "auto" -pcsx_rearmed_negcon_deadzone = "0" -pcsx_rearmed_negcon_response = "linear" -pcsx_rearmed_neon_enhancement_enable = "disabled" -pcsx_rearmed_neon_enhancement_no_main = "disabled" -pcsx_rearmed_neon_interlace_enable = "disabled" -pcsx_rearmed_nocdaudio = "enabled" -pcsx_rearmed_nogteflags = "disabled" -pcsx_rearmed_nosmccheck = "disabled" -pcsx_rearmed_noxadecoding = "enabled" -pcsx_rearmed_pad1type = "standard" -pcsx_rearmed_pad2type = "standard" -pcsx_rearmed_pad3type = "none" -pcsx_rearmed_pad4type = "none" -pcsx_rearmed_pad5type = "none" -pcsx_rearmed_pad6type = "none" -pcsx_rearmed_pad7type = "none" -pcsx_rearmed_pad8type = "none" -pcsx_rearmed_pe2_fix = "disabled" -pcsx_rearmed_psxclock = "57" -pcsx_rearmed_region = "auto" -pcsx_rearmed_show_bios_bootlogo = "disabled" -pcsx_rearmed_show_other_input_settings = "disabled" -pcsx_rearmed_spu_interpolation = "simple" -pcsx_rearmed_spu_reverb = "enabled" -pcsx_rearmed_spuirq = "disabled" -pcsx_rearmed_vibration = "enabled" -gambatte_gb_colorization = "disabled" -gambatte_gb_internal_palette = "" -mame2003-plus_analog = "digital" -mame2003-plus_art_resolution = "1" -mame2003-plus_brightness = "1.0" -mame2003-plus_cheat_input_ports = "disabled" -mame2003-plus_core_save_subfolder = "enabled" -mame2003-plus_core_sys_subfolder = "enabled" -mame2003-plus_dcs_speedhack = "enabled" -mame2003-plus_deadzone = "20" -mame2003-plus_digital_joy_centering = "enabled" -mame2003-plus_display_artwork = "enabled" -mame2003-plus_display_setup = "disabled" -mame2003-plus_four_way_emulation = "disabled" -mame2003-plus_frameskip = "0" -mame2003-plus_gamma = "1.0" -mame2003-plus_input_interface = "retropad" -mame2003-plus_machine_timing = "enabled" -mame2003-plus_mame_remapping = "enabled" -mame2003-plus_mouse_device = "mouse" -mame2003-plus_sample_rate = "48000" -mame2003-plus_skip_disclaimer = "disabled" -mame2003-plus_skip_warnings = "disabled" -flycast_internal_resolution = "640x480" -flycast_alpha_sorting = "per-strip (fast, least accurate)" -flycast_enable_dsp = "disabled" -flycast_threaded_rendering = "enabled" -flycast_anisotropic_filtering = "off" -flycast_synchronous_rendering = "enabled" -flycast_enable_rtt = "disabled" -flycast_enable_rttb = "disabled" -flycast_delay_frame_swapping = "disabled" -flycast_div_matching = "auto" -flycast_texupscale = "off" -flycast_auto_skip_frame = "normal" -opera_swi_hle = "enabled" -opera_dsp_threaded = "enabled" -opera_madam_matrix_engine = "software" -puae_deadzone = "25" -melonds_screen_layout = "Left/Right" -melonds_swapscreen_mode = "Toggle" -melonds_threaded_renderer = "enabled" -melonds_touch_mode = "Joystick" -duckstation_GPU.Renderer = "Software" -virtualjaguar_bios = "enabled" -virtualjaguar_usefastblitter = "enabled" diff --git a/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch.cfg b/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch.cfg deleted file mode 100644 index b04b9b3269..0000000000 --- a/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch.cfg +++ /dev/null @@ -1,822 +0,0 @@ -accessibility_enable = "false" -accessibility_narrator_speech_speed = "5" -ai_service_enable = "true" -ai_service_mode = "1" -ai_service_pause = "false" -ai_service_source_lang = "0" -ai_service_target_lang = "0" -ai_service_url = "http://localhost:4404/" -all_users_control_menu = "true" -apply_cheats_after_load = "false" -apply_cheats_after_toggle = "false" -aspect_ratio_index = "22" -assets_directory = "/tmp/assets" -audio_block_frames = "0" -audio_device = "" -audio_driver = "pulse" -audio_dsp_plugin = "" -audio_enable_menu_bgm = "false" -audio_enable_menu_cancel = "false" -audio_enable_menu = "false" -audio_enable_menu_notice = "false" -audio_enable_menu_ok = "false" -audio_enable = "true" -audio_fastforward_mute = "false" -audio_filter_dir = "~/.config/retroarch/filters/audio" -audio_latency = "32" -audio_max_timing_skew = "0.049999" -audio_mixer_mute_enable = "false" -audio_mixer_volume = "0.000000" -audio_mute_enable = "false" -audio_out_rate = "48000" -audio_rate_control_delta = "0.004999" -audio_rate_control = "true" -audio_resampler_quality = "2" -audio_resampler = "sinc" -audio_sync = "true" -audio_volume = "0.000000" -auto_overrides_enable = "true" -auto_remaps_enable = "true" -autosave_interval = "10" -auto_screenshot_filename = "true" -auto_shaders_enable = "true" -block_sram_overwrite = "false" -bluetooth_driver = "null" -builtin_imageviewer_enable = "true" -builtin_mediaplayer_enable = "true" -bundle_assets_dst_path = "" -bundle_assets_dst_path_subdir = "" -bundle_assets_extract_enable = "false" -bundle_assets_extract_last_version = "0" -bundle_assets_extract_version_current = "0" -bundle_assets_src_path = "" -cache_directory = "/tmp/cache" -camera_allow = "false" -camera_device = "" -camera_driver = "null" -cheat_database_path = "/tmp/database/cht" -check_firmware_before_loading = "false" -cheevos_auto_screenshot = "false" -cheevos_badges_enable = "false" -cheevos_challenge_indicators = "true" -cheevos_enable = "false" -cheevos_hardcore_mode_enable = "false" -cheevos_leaderboards_enable = "" -cheevos_password = "" -cheevos_richpresence_enable = "true" -cheevos_start_active = "false" -cheevos_test_unofficial = "false" -cheevos_token = "" -cheevos_unlock_sound_enable = "false" -cheevos_username = "" -cheevos_verbose_enable = "false" -config_save_on_exit = "true" -content_database_path = "/tmp/database/rdb" -content_favorites_directory = "default" -content_favorites_path = "~/.config/retroarch/content_favorites.lpl" -content_favorites_size = "200" -content_history_dir = "" -content_history_directory = "default" -content_history_path = "~/.config/retroarch/content_history.lpl" -content_history_size = "200" -content_image_history_directory = "default" -content_image_history_path = "~/.config/retroarch/content_image_history.lpl" -content_music_history_directory = "default" -content_music_history_path = "~/.config/retroarch/content_music_history.lpl" -content_runtime_log_aggregate = "false" -content_runtime_log = "true" -content_show_add_entry = "2" -content_show_add = "true" -content_show_explore = "true" -content_show_favorites = "true" -content_show_history = "true" -content_show_images = "false" -content_show_music = "false" -content_show_netplay = "true" -content_show_playlists = "true" -content_show_settings_password = "" -content_show_settings = "true" -content_show_video = "false" -content_video_directory = "default" -content_video_history_path = "~/.config/retroarch/content_video_history.lpl" -core_assets_directory = "~/roms/downloads" -core_info_cache_enable = "true" -core_option_category_enable = "true" -core_options_path = "" -core_set_supports_no_game_enable = "true" -core_updater_auto_backup = "false" -core_updater_auto_backup_history_size = "1" -core_updater_auto_extract_archive = "true" -core_updater_buildbot_assets_url = "http://buildbot.libretro.com/assets/" -core_updater_buildbot_cores_url = "" -core_updater_buildbot_url = "http://buildbot.libretro.com/nightly/linux/armhf/latest/" -core_updater_show_experimental_cores = "false" -cpu_main_gov = "performance" -cpu_max_freq = "-1" -cpu_menu_gov = "interactive" -cpu_min_freq = "1" -cpu_scaling_mode = "0" -crt_switch_center_adjust = "0" -crt_switch_hires_menu = "false" -crt_switch_porch_adjust = "0" -crt_switch_resolution = "0" -crt_switch_resolution_super = "2560" -crt_switch_resolution_use_custom_refresh_rate = "false" -crt_switch_timings = "" -crt_video_refresh_rate = "60.000000" -current_resolution_id = "0" -cursor_directory = "~/.config/retroarch/database/cursors" -desktop_menu_enable = "true" -discord_allow = "false" -discord_app_id = "475456035851599874" -driver_switch_enable = "true" -dynamic_wallpapers_directory = "default" -emuelec_exit_to_kodi = "false" -enable_device_vibration = "true" -facebook_stream_key = "" -fastforward_ratio = "0.000000" -filter_by_current_core = "false" -flicker_filter_enable = "false" -flicker_filter_index = "0" -fps_show = "false" -fps_update_interval = "256" -framecount_show = "false" -frame_time_counter_reset_after_fastforwarding = "false" -frame_time_counter_reset_after_load_state = "false" -frame_time_counter_reset_after_save_state = "false" -frontend_log_level = "1" -game_specific_options = "true" -gamma_correction = "0" -global_core_options = "false" -history_list_enable = "true" -input_ai_service_axis = "nul" -input_ai_service_btn = "nul" -input_ai_service_mbtn = "nul" -input_ai_service = "nul" -input_analog_deadzone = "0.000000" -input_analog_sensitivity = "1.500000" -input_audio_mute_axis = "nul" -input_audio_mute_btn = "nul" -input_audio_mute = "f9" -input_audio_mute_mbtn = "nul" -input_autodetect_enable = "true" -input_auto_game_focus = "0" -input_auto_mouse_grab = "false" -input_axis_threshold = "0.500000" -input_bind_hold = "2" -input_bind_timeout = "5" -input_cheat_index_minus_axis = "nul" -input_cheat_index_minus_btn = "nul" -input_cheat_index_minus_mbtn = "nul" -input_cheat_index_minus = "t" -input_cheat_index_plus_axis = "nul" -input_cheat_index_plus_btn = "nul" -input_cheat_index_plus_mbtn = "nul" -input_cheat_index_plus = "y" -input_cheat_toggle_axis = "nul" -input_cheat_toggle_btn = "nul" -input_cheat_toggle_mbtn = "nul" -input_cheat_toggle = "u" -input_close_content_axis = "nul" -input_close_content_btn = "nul" -input_close_content_mbtn = "nul" -input_close_content = "nul" -input_descriptor_hide_unbound = "false" -input_descriptor_label_show = "true" -input_desktop_menu_toggle_axis = "nul" -input_desktop_menu_toggle_btn = "nul" -input_desktop_menu_toggle = "f5" -input_desktop_menu_toggle_mbtn = "nul" -input_device_p1 = "0" -input_device_p10 = "0" -input_device_p11 = "0" -input_device_p12 = "0" -input_device_p13 = "0" -input_device_p14 = "0" -input_device_p15 = "0" -input_device_p16 = "0" -input_device_p2 = "0" -input_device_p3 = "0" -input_device_p4 = "0" -input_device_p5 = "0" -input_device_p6 = "0" -input_device_p7 = "0" -input_device_p8 = "0" -input_device_p9 = "0" -input_disk_eject_toggle_axis = "nul" -input_disk_eject_toggle_btn = "nul" -input_disk_eject_toggle_mbtn = "nul" -input_disk_eject_toggle = "nul" -input_disk_next_axis = "nul" -input_disk_next_btn = "nul" -input_disk_next_mbtn = "nul" -input_disk_next = "nul" -input_disk_prev_axis = "nul" -input_disk_prev_btn = "nul" -input_disk_prev_mbtn = "nul" -input_disk_prev = "nul" -input_driver = "udev" -input_duty_cycle = "3" -input_enable_hotkey_axis = "nul" -input_enable_hotkey_btn = "8" -input_enable_hotkey_mbtn = "nul" -input_enable_hotkey = "nul" -input_exit_emulator_axis = "nul" -input_exit_emulator_btn = "9" -input_exit_emulator = "escape" -input_exit_emulator_mbtn = "nul" -input_fps_toggle_axis = "nul" -input_fps_toggle_btn = "3" -input_fps_toggle = "f3" -input_fps_toggle_mbtn = "nul" -input_frame_advance_axis = "nul" -input_frame_advance_btn = "nul" -input_frame_advance = "k" -input_frame_advance_mbtn = "nul" -input_game_focus_toggle_axis = "nul" -input_game_focus_toggle_btn = "nul" -input_game_focus_toggle_mbtn = "nul" -input_game_focus_toggle = "scroll_lock" -input_grab_mouse_toggle_axis = "nul" -input_grab_mouse_toggle_btn = "nul" -input_grab_mouse_toggle = "f11" -input_grab_mouse_toggle_mbtn = "nul" -input_hold_fast_forward_axis = "nul" -input_hold_fast_forward_btn = "nul" -input_hold_fast_forward = "l" -input_hold_fast_forward_mbtn = "nul" -input_hold_slowmotion_axis = "nul" -input_hold_slowmotion_btn = "nul" -input_hold_slowmotion = "e" -input_hold_slowmotion_mbtn = "nul" -input_hotkey_block_delay = "5" -input_joypad_driver = "udev" -input_keyboard_layout = "" -input_libretro_device_p10 = "1" -input_libretro_device_p1 = "1" -input_libretro_device_p11 = "1" -input_libretro_device_p12 = "1" -input_libretro_device_p13 = "1" -input_libretro_device_p14 = "1" -input_libretro_device_p15 = "1" -input_libretro_device_p16 = "1" -input_libretro_device_p2 = "1" -input_libretro_device_p3 = "1" -input_libretro_device_p4 = "1" -input_libretro_device_p5 = "1" -input_libretro_device_p6 = "1" -input_libretro_device_p7 = "1" -input_libretro_device_p8 = "1" -input_libretro_device_p9 = "1" -input_load_state_axis = "nul" -input_load_state_btn = "4" -input_load_state = "f4" -input_load_state_mbtn = "nul" -input_max_users = "5" -input_menu_toggle_axis = "nul" -input_menu_toggle_btn = "2" -input_menu_toggle = "f1" -input_menu_toggle_gamepad_combo = "2" -input_menu_toggle_mbtn = "nul" -input_movie_record_toggle_axis = "nul" -input_movie_record_toggle_btn = "nul" -input_movie_record_toggle_mbtn = "nul" -input_movie_record_toggle = "o" -input_netplay_game_watch_axis = "nul" -input_netplay_game_watch_btn = "nul" -input_netplay_game_watch = "i" -input_netplay_game_watch_mbtn = "nul" -input_netplay_host_toggle_axis = "nul" -input_netplay_host_toggle_btn = "nul" -input_netplay_host_toggle_mbtn = "nul" -input_netplay_host_toggle = "nul" -input_nowinkey_enable = "false" -input_osk_toggle_axis = "nul" -input_osk_toggle_btn = "nul" -input_osk_toggle = "f12" -input_osk_toggle_mbtn = "nul" -input_overlay = "" -input_overlay_aspect_adjust_landscape = "0.000000" -input_overlay_aspect_adjust_portrait = "0.000000" -input_overlay_auto_rotate = "false" -input_overlay_auto_scale = "false" -input_overlay_enable_autopreferred = "true" -input_overlay_enable = "false" -input_overlay_hide_in_menu = "true" -input_overlay_hide_when_gamepad_connected = "false" -input_overlay_next_axis = "nul" -input_overlay_next_btn = "nul" -input_overlay_next_mbtn = "nul" -input_overlay_next = "nul" -input_overlay_opacity = "0.700000" -input_overlay_scale_landscape = "1.000000" -input_overlay_scale_portrait = "1.000000" -input_overlay_show_inputs = "2" -input_overlay_show_inputs_port = "0" -input_overlay_show_mouse_cursor = "true" -input_overlay_x_offset_landscape = "0.000000" -input_overlay_x_offset_portrait = "0.000000" -input_overlay_x_separation_landscape = "0.000000" -input_overlay_x_separation_portrait = "0.000000" -input_overlay_y_offset_landscape = "0.000000" -input_overlay_y_offset_portrait = "0.000000" -input_overlay_y_separation_landscape = "0.000000" -input_overlay_y_separation_portrait = "0.000000" -input_pause_toggle_axis = "nul" -input_pause_toggle_btn = "nul" -input_pause_toggle_mbtn = "nul" -input_pause_toggle = "p" -input_poll_type_behavior = "2" -input_quit_gamepad_combo = "0" -input_recording_toggle_axis = "nul" -input_recording_toggle_btn = "nul" -input_recording_toggle_mbtn = "nul" -input_recording_toggle = "nul" -input_remap_binds_enable = "true" -input_remapping_directory = "~/remappings" -input_reset_axis = "nul" -input_reset_btn = "nul" -input_reset = "h" -input_reset_mbtn = "nul" -input_rewind_axis = "nul" -input_rewind_btn = "6" -input_rewind_mbtn = "nul" -input_rewind = "r" -input_rumble_gain = "100" -input_runahead_toggle_axis = "nul" -input_runahead_toggle_btn = "nul" -input_runahead_toggle_mbtn = "nul" -input_runahead_toggle = "nul" -input_save_state_axis = "nul" -input_save_state_btn = "5" -input_save_state = "f2" -input_save_state_mbtn = "nul" -input_screenshot_axis = "nul" -input_screenshot_btn = "nul" -input_screenshot = "f8" -input_screenshot_mbtn = "nul" -input_send_debug_info_axis = "nul" -input_send_debug_info_btn = "nul" -input_send_debug_info = "f10" -input_send_debug_info_mbtn = "nul" -input_sensors_enable = "true" -input_shader_next_axis = "nul" -input_shader_next_btn = "nul" -input_shader_next = "m" -input_shader_next_mbtn = "nul" -input_shader_prev_axis = "nul" -input_shader_prev_btn = "nul" -input_shader_prev_mbtn = "nul" -input_shader_prev = "n" -input_state_slot_decrease_axis = "nul" -input_state_slot_decrease_btn = "nul" -input_state_slot_decrease = "f6" -input_state_slot_decrease_mbtn = "nul" -input_state_slot_increase_axis = "nul" -input_state_slot_increase_btn = "nul" -input_state_slot_increase = "f7" -input_state_slot_increase_mbtn = "nul" -input_streaming_toggle_axis = "nul" -input_streaming_toggle_btn = "nul" -input_streaming_toggle_mbtn = "nul" -input_streaming_toggle = "nul" -input_toggle_fast_forward_axis = "nul" -input_toggle_fast_forward_btn = "7" -input_toggle_fast_forward_mbtn = "nul" -input_toggle_fast_forward = "space" -input_toggle_fullscreen_axis = "nul" -input_toggle_fullscreen_btn = "nul" -input_toggle_fullscreen = "f" -input_toggle_fullscreen_mbtn = "nul" -input_toggle_slowmotion_axis = "nul" -input_toggle_slowmotion_btn = "nul" -input_toggle_slowmotion_mbtn = "nul" -input_toggle_slowmotion = "nul" -input_touch_scale = "1" -input_turbo_default_button = "0" -input_turbo_mode = "0" -input_turbo_period = "6" -input_volume_down_axis = "nul" -input_volume_down_btn = "nul" -input_volume_down_mbtn = "nul" -input_volume_down = "subtract" -input_volume_up = "add" -input_volume_up_axis = "nul" -input_volume_up_btn = "nul" -input_volume_up_mbtn = "nul" -joypad_autoconfig_dir = "/tmp/joypads" -keyboard_gamepad_enable = "true" -keyboard_gamepad_mapping_type = "1" -kiosk_mode_enable = "false" -kiosk_mode_password = "" -led_driver = "null" -libretro_directory = "/tmp/cores" -libretro_info_path = "/tmp/cores" -libretro_log_level = "1" -load_dummy_on_core_shutdown = "true" -location_allow = "false" -location_driver = "null" -log_dir = "~/.config/retroarch/logs" -log_to_file = "false" -log_to_file_timestamp = "false" -log_verbosity = "true" -materialui_auto_rotate_nav_bar = "true" -materialui_dual_thumbnail_list_view_enable = "true" -materialui_icons_enable = "true" -materialui_landscape_layout_optimization = "1" -materialui_menu_color_theme = "9" -materialui_menu_transition_animation = "0" -materialui_playlist_icons_enable = "true" -materialui_show_nav_bar = "true" -materialui_thumbnail_background_enable = "true" -materialui_thumbnail_view_landscape = "2" -materialui_thumbnail_view_portrait = "1" -memory_show = "false" -memory_update_interval = "256" -menu_battery_level_enable = "true" -menu_core_enable = "true" -menu_driver = "xmb" -menu_dynamic_wallpaper_enable = "false" -menu_enable_widgets = "true" -menu_font_color_blue = "255" -menu_font_color_green = "255" -menu_font_color_red = "255" -menu_footer_opacity = "1.000000" -menu_framebuffer_opacity = "0.899999" -menu_header_opacity = "1.000000" -menu_horizontal_animation = "true" -menu_insert_disk_resume = "true" -menu_left_thumbnails = "0" -menu_linear_filter = "false" -menu_mouse_enable = "true" -menu_navigation_browser_filter_supported_extensions_enable = "true" -menu_navigation_wraparound_enable = "true" -menu_pause_libretro = "true" -menu_pointer_enable = "true" -menu_rgui_full_width_layout = "true" -menu_rgui_shadows = "false" -menu_rgui_transparency = "true" -menu_savestate_resume = "true" -menu_scale_factor = "0.800000" -menu_screensaver_animation = "0" -menu_screensaver_animation_speed = "1.000000" -menu_screensaver_timeout = "0" -menu_scroll_delay = "256" -menu_scroll_fast = "false" -menu_shader_pipeline = "2" -menu_show_advanced_settings = "true" -menu_show_configurations = "true" -menu_show_core_updater = "false" -menu_show_dump_disc = "true" -menu_show_help = "true" -menu_show_information = "true" -menu_show_latency = "true" -menu_show_legacy_thumbnail_updater = "false" -menu_show_load_content_animation = "false" -menu_show_load_content = "true" -menu_show_load_core = "true" -menu_show_load_disc = "true" -menu_show_online_updater = "true" -menu_show_overlays = "true" -menu_show_quit_retroarch = "true" -menu_show_reboot = "false" -menu_show_restart_retroarch = "true" -menu_show_rewind = "true" -menu_show_shutdown = "false" -menu_show_sublabels = "true" -menu_show_video_layout = "true" -menu_swap_ok_cancel_buttons = "false" -menu_throttle_framerate = "true" -menu_thumbnails = "3" -menu_thumbnail_upscale_threshold = "0" -menu_ticker_smooth = "true" -menu_ticker_speed = "2.000000" -menu_ticker_type = "1" -menu_timedate_date_separator = "0" -menu_timedate_enable = "true" -menu_timedate_style = "11" -menu_unified_controls = "false" -menu_use_preferred_system_color_theme = "false" -menu_wallpaper = "" -menu_wallpaper_opacity = "1.000000" -menu_widget_scale_auto = "false" -menu_widget_scale_factor = "1.000000" -menu_widget_scale_factor_windowed = "1.000000" -menu_xmb_animation_horizontal_highlight = "0" -menu_xmb_animation_move_up_down = "0" -menu_xmb_animation_opening_main_menu = "0" -menu_xmb_thumbnail_scale_factor = "100" -midi_driver = "alsa" -midi_input = "Off" -midi_output = "Off" -midi_volume = "100" -netplay_allow_slaves = "true" -netplay_check_frames = "600" -netplay_input_latency_frames_min = "0" -netplay_input_latency_frames_range = "0" -netplay_ip_address = "" -netplay_ip_port = "55435" -netplay_max_connections = "3" -netplay_mitm_server = "nyc" -netplay_nat_traversal = "true" -netplay_nickname = "" -netplay_password = "" -netplay_public_announce = "true" -netplay_request_device_p10 = "false" -netplay_request_device_p11 = "false" -netplay_request_device_p12 = "false" -netplay_request_device_p13 = "false" -netplay_request_device_p14 = "false" -netplay_request_device_p15 = "false" -netplay_request_device_p16 = "false" -netplay_request_device_p1 = "false" -netplay_request_device_p2 = "false" -netplay_request_device_p3 = "false" -netplay_request_device_p4 = "false" -netplay_request_device_p5 = "false" -netplay_request_device_p6 = "false" -netplay_request_device_p7 = "false" -netplay_request_device_p8 = "false" -netplay_request_device_p9 = "false" -netplay_require_slaves = "false" -netplay_share_analog = "1" -netplay_share_digital = "1" -netplay_spectate_password = "" -netplay_start_as_spectator = "false" -netplay_stateless_mode = "false" -netplay_use_mitm_server = "false" -network_cmd_enable = "false" -network_cmd_port = "55355" -network_on_demand_thumbnails = "false" -network_remote_base_port = "55400" -network_remote_enable = "false" -network_remote_enable_user_p10 = "false" -network_remote_enable_user_p11 = "false" -network_remote_enable_user_p12 = "false" -network_remote_enable_user_p13 = "false" -network_remote_enable_user_p14 = "false" -network_remote_enable_user_p15 = "false" -network_remote_enable_user_p16 = "false" -network_remote_enable_user_p1 = "false" -network_remote_enable_user_p2 = "false" -network_remote_enable_user_p3 = "false" -network_remote_enable_user_p4 = "false" -network_remote_enable_user_p5 = "false" -network_remote_enable_user_p6 = "false" -network_remote_enable_user_p7 = "false" -network_remote_enable_user_p8 = "false" -network_remote_enable_user_p9 = "false" -notification_show_autoconfig = "false" -notification_show_cheats_applied = "true" -notification_show_config_override_load = "false" -notification_show_fast_forward = "true" -notification_show_netplay_extra = "false" -notification_show_patch_applied = "true" -notification_show_refresh_rate = "true" -notification_show_remap_load = "false" -notification_show_screenshot_duration = "2" -notification_show_screenshot = "false" -notification_show_screenshot_flash = "1" -notification_show_set_initial_disk = "true" -overlay_directory = "/tmp/overlays" -ozone_collapse_sidebar = "false" -ozone_menu_color_theme = "1" -ozone_scroll_content_metadata = "false" -ozone_sort_after_truncate_playlist_name = "true" -ozone_truncate_playlist_name = "true" -pause_nonactive = "true" -perfcnt_enable = "false" -playlist_compression = "false" -playlist_cores = "" -playlist_directory = "~/playlists" -playlist_entry_remove_enable = "1" -playlist_entry_remove = "false" -playlist_entry_rename = "false" -playlist_fuzzy_archive_match = "false" -playlist_names = "" -playlist_portable_paths = "false" -playlist_show_entry_idx = "true" -playlist_show_inline_core_name = "0" -playlist_show_sublabels = "true" -playlist_sort_alphabetical = "true" -playlist_sublabel_last_played_style = "0" -playlist_sublabel_runtime_type = "0" -playlist_use_old_format = "false" -quick_menu_show_add_to_favorites = "true" -quick_menu_show_cheats = "true" -quick_menu_show_close_content = "true" -quick_menu_show_controls = "true" -quick_menu_show_core_options_flush = "false" -quick_menu_show_download_thumbnails = "true" -quick_menu_show_information = "true" -quick_menu_show_options = "true" -quick_menu_show_recording = "true" -quick_menu_show_reset_core_association = "true" -quick_menu_show_restart_content = "true" -quick_menu_show_resume_content = "true" -quick_menu_show_save_content_dir_overrides = "true" -quick_menu_show_save_core_overrides = "false" -quick_menu_show_save_game_overrides = "false" -quick_menu_show_save_load_state = "true" -quick_menu_show_set_core_association = "true" -quick_menu_show_shaders = "true" -quick_menu_show_start_recording = "true" -quick_menu_show_start_streaming = "true" -quick_menu_show_streaming = "true" -quick_menu_show_take_screenshot = "true" -quick_menu_show_undo_save_load_state = "false" -quit_on_close_content = "0" -quit_press_twice = "true" -record_driver = "null" -recording_config_directory = "" -recording_output_directory = "~/roms/screenshots" -resampler_directory = "" -rewind_buffer_size = "20971520" -rewind_buffer_size_step = "10" -rewind_enable = "false" -rewind_granularity = "1" -rgui_aspect_ratio = "0" -rgui_aspect_ratio_lock = "0" -rgui_background_filler_thickness_enable = "true" -rgui_border_filler_enable = "true" -rgui_border_filler_thickness_enable = "true" -rgui_browser_directory = "~/roms" -rgui_config_directory = "~/.config/retroarch/config" -rgui_extended_ascii = "false" -rgui_inline_thumbnails = "false" -rgui_internal_upscale_level = "0" -rgui_menu_color_theme = "4" -rgui_menu_theme_preset = "" -rgui_particle_effect = "0" -rgui_particle_effect_screensaver = "true" -rgui_particle_effect_speed = "1.000000" -rgui_show_start_screen = "false" -rgui_swap_thumbnails = "false" -rgui_switch_icons = "true" -rgui_thumbnail_delay = "0" -rgui_thumbnail_downscaler = "0" -run_ahead_enabled = "false" -run_ahead_frames = "1" -run_ahead_hide_warnings = "false" -run_ahead_secondary_instance = "true" -runtime_log_directory = "default" -save_file_compression = "false" -savefile_directory = "~/.config/retroarch/saves" -savefiles_in_content_dir = "true" -savestate_auto_index = "false" -savestate_auto_load = "false" -savestate_auto_save = "false" -savestate_directory = "~/.config/retroarch/states" -savestate_file_compression = "true" -savestate_max_keep = "0" -savestates_in_content_dir = "false" -savestate_thumbnail_enable = "true" -scan_without_core_match = "false" -screen_brightness = "100" -screen_orientation = "0" -screenshot_directory = "~/roms/screenshots" -screenshots_in_content_dir = "false" -settings_show_accessibility = "true" -settings_show_achievements = "true" -settings_show_ai_service = "true" -settings_show_audio = "true" -settings_show_configuration = "true" -settings_show_core = "true" -settings_show_directory = "true" -settings_show_drivers = "true" -settings_show_file_browser = "true" -settings_show_frame_throttle = "true" -settings_show_input = "true" -settings_show_latency = "true" -settings_show_logging = "true" -settings_show_network = "true" -settings_show_onscreen_display = "true" -settings_show_playlists = "true" -settings_show_power_management = "true" -settings_show_recording = "true" -settings_show_saving = "true" -settings_show_user_interface = "true" -settings_show_user = "true" -settings_show_video = "true" -show_hidden_files = "false" -slowmotion_ratio = "3.000000" -soft_filter_enable = "false" -soft_filter_index = "0" -sort_savefiles_by_content_enable = "false" -sort_savefiles_enable = "false" -sort_savestates_by_content_enable = "false" -sort_savestates_enable = "false" -sort_screenshots_by_content_enable = "false" -state_slot = "0" -statistics_show = "false" -stdin_cmd_enable = "false" -streaming_mode = "0" -suspend_screensaver_enable = "true" -sustained_performance_mode = "false" -system_directory = "~/roms/bios" -systemfiles_in_content_dir = "false" -threaded_data_runloop_enable = "true" -thumbnails_directory = "~/thumbnails" -twitch_stream_key = "" -ui_companion_enable = "false" -ui_companion_start_on_boot = "true" -ui_companion_toggle = "false" -ui_menubar_enable = "true" -use_last_start_directory = "false" -user_language = "0" -vibrate_on_keypress = "true" -video_adaptive_vsync = "false" -video_allow_rotate = "true" -video_aspect_ratio = "-1.000000" -video_aspect_ratio_auto = "true" -video_black_frame_insertion = "0" -video_context_driver = "" -video_crop_overscan = "true" -video_ctx_scaling = "false" -video_disable_composition = "false" -video_driver = "gl" -video_filter = "" -video_filter_dir = "~/.config/retroarch/filters/video" -video_font_enable = "true" -video_font_path = "/usr/share/retroarch-assets/xmb/monochrome/font.ttf" -video_font_size = "32.000000" -video_force_aspect = "true" -video_force_srgb_disable = "false" -video_frame_delay = "0" -video_frame_delay_auto = "false" -video_fullscreen = "true" -video_fullscreen_x = "0" -video_fullscreen_y = "0" -video_gpu_record = "false" -video_gpu_screenshot = "false" -video_hard_sync = "false" -video_hard_sync_frames = "0" -video_hdr_display_contrast = "5.000000" -video_hdr_enable = "false" -video_hdr_expand_gamut = "true" -video_hdr_max_nits = "1000.000000" -video_hdr_paper_white_nits = "200.000000" -video_layout_directory = "~/.config/retroarch/layouts" -video_layout_enable = "true" -video_layout_path = "" -video_layout_selected_view = "0" -video_max_swapchain_images = "3" -video_message_color = "ffff00" -video_message_pos_x = "0.049999" -video_message_pos_y = "0.049999" -video_monitor_index = "0" -video_msg_bgcolor_blue = "0" -video_msg_bgcolor_enable = "false" -video_msg_bgcolor_green = "0" -video_msg_bgcolor_opacity = "1.000000" -video_msg_bgcolor_red = "0" -video_notch_write_over_enable = "false" -video_oga_vertical_enable = "false" -video_post_filter_record = "false" -video_record_config = "" -video_record_quality = "4" -video_record_scale_factor = "1" -video_record_threads = "2" -video_refresh_rate = "60.000000" -video_rotation = "0" -video_scale = "3.000000" -video_scale_integer = "false" -video_scale_integer_overscale = "false" -video_shader_delay = "0" -video_shader_dir = "/tmp/shaders" -video_shader_enable = "false" -video_shader_preset_save_reference_enable = "true" -video_shader_remember_last_dir = "false" -video_shader_watch_files = "false" -video_shared_context = "false" -video_smooth = "false" -video_stream_config = "" -video_stream_port = "56400" -video_stream_quality = "10" -video_stream_scale_factor = "1" -video_stream_url = "" -video_swap_interval = "1" -video_threaded = "true" -video_vsync = "true" -video_window_auto_height_max = "1080" -video_window_auto_width_max = "1920" -video_window_custom_size_enable = "false" -video_windowed_fullscreen = "false" -video_windowed_position_height = "720" -video_windowed_position_width = "1280" -video_windowed_position_x = "0" -video_windowed_position_y = "0" -video_window_opacity = "100" -video_window_save_positions = "false" -video_window_show_decorations = "true" -vrr_runloop_enable = "false" -wifi_driver = "null" -wifi_enabled = "true" -xmb_alpha_factor = "75" -xmb_font = "/usr/share/retroarch-assets/xmb/monochrome/font.ttf" -xmb_layout = "2" -xmb_menu_color_theme = "4" -xmb_shadows_enable = "true" -xmb_theme = "0" -xmb_vertical_thumbnails = "false" -youtube_stream_key = "" diff --git a/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch32bit-append.cfg b/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch32bit-append.cfg deleted file mode 100644 index 9e743a38f1..0000000000 --- a/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch32bit-append.cfg +++ /dev/null @@ -1,2 +0,0 @@ -audio_filter_dir = "/usr/share/retroarch/filters/32bit/audio" -video_filter_dir = "/usr/share/retroarch/filters/32bit/video" diff --git a/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch64bit-append.cfg b/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch64bit-append.cfg deleted file mode 100644 index b6cbf68312..0000000000 --- a/packages/emulators/standalone/retroarch/sources/RK3566-ML/retroarch64bit-append.cfg +++ /dev/null @@ -1,2 +0,0 @@ -audio_filter_dir = "/usr/share/retroarch/filters/64bit/audio" -video_filter_dir = "/usr/share/retroarch/filters/64bit/video" diff --git a/packages/graphics/SDL2/patches/RK3566-ML b/packages/graphics/SDL2/patches/RK3566-ML deleted file mode 120000 index 9207b5754b..0000000000 --- a/packages/graphics/SDL2/patches/RK3566-ML +++ /dev/null @@ -1 +0,0 @@ -RK3566 \ No newline at end of file diff --git a/packages/hardware/quirks/platforms/RK3566-ML/001-device_config b/packages/hardware/quirks/platforms/RK3566-ML/001-device_config deleted file mode 100755 index b146a74af3..0000000000 --- a/packages/hardware/quirks/platforms/RK3566-ML/001-device_config +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: Apache-2.0 -# Copyright (C) 2021-present Fewtarius (https://github.com/fewtarius) - -cat </storage/.config/profile.d/001-device_config -DEVICE_FAKE_JACKSENSE="false" -DEVICE_VOLUMECTL="true" -DEVICE_POWER_LED="false" -DEVICE_BRIGHTNESS="128" -EOF diff --git a/packages/hardware/quirks/platforms/RK3566-ML/050-audio_path b/packages/hardware/quirks/platforms/RK3566-ML/050-audio_path deleted file mode 100755 index 0aafc65654..0000000000 --- a/packages/hardware/quirks/platforms/RK3566-ML/050-audio_path +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: Apache-2.0 -# Copyright (C) 2021-present Fewtarius (https://github.com/fewtarius) - -cat </storage/.config/profile.d/002-audio_path -DEVICE_PLAYBACK_PATH_SPK="SPK" -DEVICE_PLAYBACK_PATH_HP="HP" -DEVICE_PLAYBACK_PATH="Playback Path" -EOF diff --git a/packages/hardware/quirks/platforms/RK3566-ML/050-modifiers b/packages/hardware/quirks/platforms/RK3566-ML/050-modifiers deleted file mode 100755 index 1fefd6e79a..0000000000 --- a/packages/hardware/quirks/platforms/RK3566-ML/050-modifiers +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: Apache-2.0 -# Copyright (C) 2022-present Fewtarius - -cat </storage/.config/profile.d/050-modifiers -DEVICE_KEY_VOLUMEDOWN=114 -DEVICE_KEY_VOLUMEUP=115 -DEVICE_FUNC_KEYA_MODIFIER="BTN_SELECT" -DEVICE_FUNC_KEYB_MODIFIER="BTN_MODE" -EOF diff --git a/packages/hardware/quirks/platforms/RK3566-ML/060-game_settings b/packages/hardware/quirks/platforms/RK3566-ML/060-game_settings deleted file mode 100755 index 0b5a139601..0000000000 --- a/packages/hardware/quirks/platforms/RK3566-ML/060-game_settings +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: Apache-2.0 -# Copyright (C) 2023-present Fewtarius (https://github.com/fewtarius) - -. /etc/profile.d/001-functions - -### Set the default performance scaling mode for a few systems. -for SYSTEM in dreamcast n64 psp saturn -do - SETTING=$(get_setting ${SYSTEM}) - if [ -z ${SETTING} ] - then - set_setting ${SYSTEM}.cpugovernor performance - fi -done - diff --git a/packages/hardware/quirks/platforms/RK3566-ML/090-ui_service b/packages/hardware/quirks/platforms/RK3566-ML/090-ui_service deleted file mode 100755 index eeafb89b2b..0000000000 --- a/packages/hardware/quirks/platforms/RK3566-ML/090-ui_service +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: Apache-2.0 -# Copyright (C) 2022-present Fewtarius - -### Set the default device configuration -cat </storage/.config/profile.d/090-ui_service -UI_SERVICE="weston.service" -EOF diff --git a/packages/hardware/quirks/platforms/RK3566/001-device_config b/packages/hardware/quirks/platforms/RK3566/001-device_config index 1647feaab3..b146a74af3 100755 --- a/packages/hardware/quirks/platforms/RK3566/001-device_config +++ b/packages/hardware/quirks/platforms/RK3566/001-device_config @@ -1,6 +1,6 @@ #!/bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) +# SPDX-License-Identifier: Apache-2.0 +# Copyright (C) 2021-present Fewtarius (https://github.com/fewtarius) cat </storage/.config/profile.d/001-device_config DEVICE_FAKE_JACKSENSE="false" diff --git a/packages/hardware/quirks/platforms/RK3566/050-audio_path b/packages/hardware/quirks/platforms/RK3566/050-audio_path index 5feee6024f..0aafc65654 100755 --- a/packages/hardware/quirks/platforms/RK3566/050-audio_path +++ b/packages/hardware/quirks/platforms/RK3566/050-audio_path @@ -1,6 +1,6 @@ #!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) +# SPDX-License-Identifier: Apache-2.0 +# Copyright (C) 2021-present Fewtarius (https://github.com/fewtarius) cat </storage/.config/profile.d/002-audio_path DEVICE_PLAYBACK_PATH_SPK="SPK" diff --git a/packages/hardware/quirks/platforms/RK3566/050-modifiers b/packages/hardware/quirks/platforms/RK3566/050-modifiers index e135998332..1fefd6e79a 100755 --- a/packages/hardware/quirks/platforms/RK3566/050-modifiers +++ b/packages/hardware/quirks/platforms/RK3566/050-modifiers @@ -1,6 +1,6 @@ #!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) +# SPDX-License-Identifier: Apache-2.0 +# Copyright (C) 2022-present Fewtarius cat </storage/.config/profile.d/050-modifiers DEVICE_KEY_VOLUMEDOWN=114 diff --git a/packages/hardware/quirks/platforms/RK3566/060-game_settings b/packages/hardware/quirks/platforms/RK3566/060-game_settings index 9f333a298c..0b5a139601 100755 --- a/packages/hardware/quirks/platforms/RK3566/060-game_settings +++ b/packages/hardware/quirks/platforms/RK3566/060-game_settings @@ -1,17 +1,16 @@ #!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) +# SPDX-License-Identifier: Apache-2.0 +# Copyright (C) 2023-present Fewtarius (https://github.com/fewtarius) . /etc/profile.d/001-functions ### Set the default performance scaling mode for a few systems. -for SYSTEM in dreamcast n64 ports psp saturn +for SYSTEM in dreamcast n64 psp saturn do SETTING=$(get_setting ${SYSTEM}) if [ -z ${SETTING} ] then set_setting ${SYSTEM}.cpugovernor performance - set_setting ${SYSTEM}.gpuperf profile_peak fi done diff --git a/packages/hardware/quirks/platforms/RK3566/090-ui_service b/packages/hardware/quirks/platforms/RK3566/090-ui_service index accf1e59db..eeafb89b2b 100755 --- a/packages/hardware/quirks/platforms/RK3566/090-ui_service +++ b/packages/hardware/quirks/platforms/RK3566/090-ui_service @@ -1,8 +1,8 @@ #!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) +# SPDX-License-Identifier: Apache-2.0 +# Copyright (C) 2022-present Fewtarius ### Set the default device configuration cat </storage/.config/profile.d/090-ui_service -UI_SERVICE="emustation.service" +UI_SERVICE="weston.service" EOF diff --git a/packages/hardware/quirks/platforms/RK3566/sleep.d/post/002-freq b/packages/hardware/quirks/platforms/RK3566/sleep.d/post/002-freq deleted file mode 100644 index d5c06cc41f..0000000000 --- a/packages/hardware/quirks/platforms/RK3566/sleep.d/post/002-freq +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -### Restore previous governors before going to sleep - -. /etc/profile - -### Grab the old governors. -OLD_CPU_FREQ=$(get_setting "sleep.cpugovernor") -if [ ! -n "${OLD_CPU_FREQ}" ]; then - OLD_CPU_FREQ="schedutil" -fi - -OLD_GPU_FREQ=$(get_setting "sleep.gpugovernor") -if [ ! -n "${OLD_GPU_FREQ}" ]; then - OLD_GPU_FREQ="simple_ondemand" -fi - -# Restore old governors. -set_cpu_gov "${OLD_CPU_FREQ}" -set_dmc_gov "${OLD_CPU_FREQ}" -set_gpu_gov "${OLD_GPU_FREQ}" diff --git a/packages/hardware/quirks/platforms/RK3566/sleep.d/pre/002-freq b/packages/hardware/quirks/platforms/RK3566/sleep.d/pre/002-freq deleted file mode 100644 index 4fbe8c64f0..0000000000 --- a/packages/hardware/quirks/platforms/RK3566/sleep.d/pre/002-freq +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -# Store current freq governors and set governors to powersave. - -. /etc/profile - -### Get the current cpu and gpu governor, save for when the device wakes from sleep. -CUR_CPU_FREQ="$(cat ${CPU_FREQ}/scaling_governor)" -CUR_GPU_FREQ="$(cat ${GPU_FREQ}/governor)" - -set_setting sleep.cpugovernor "${CUR_CPU_FREQ}" -set_setting sleep.gpugovernor "${CUR_GPU_FREQ}" - -### Set all governors to powersave -set_cpu_gov powersave -set_dmc_gov powersave -set_gpu_gov powersave diff --git a/packages/network/wireguard-linux-compat/patches/RK3566-ML b/packages/network/wireguard-linux-compat/patches/RK3566-ML deleted file mode 120000 index 9207b5754b..0000000000 --- a/packages/network/wireguard-linux-compat/patches/RK3566-ML +++ /dev/null @@ -1 +0,0 @@ -RK3566 \ No newline at end of file diff --git a/packages/sysutils/system-utils/sources/devices/RK3566-ML b/packages/sysutils/system-utils/sources/devices/RK3566-ML deleted file mode 120000 index 9207b5754b..0000000000 --- a/packages/sysutils/system-utils/sources/devices/RK3566-ML +++ /dev/null @@ -1 +0,0 @@ -RK3566 \ No newline at end of file diff --git a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf deleted file mode 100644 index 721676b7f8..0000000000 --- a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.conf +++ /dev/null @@ -1,1113 +0,0 @@ -# CONFIG_LOCALVERSION_AUTO is not set -CONFIG_DEFAULT_HOSTNAME="@DEVICENAME@" -CONFIG_SYSVIPC=y -CONFIG_POSIX_MQUEUE=y -CONFIG_WATCH_QUEUE=y -# CONFIG_CROSS_MEMORY_ATTACH is not set -CONFIG_USELIB=y -CONFIG_NO_HZ_IDLE=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_BPF_SYSCALL=y -CONFIG_BPF_JIT=y -CONFIG_BPF_JIT_ALWAYS_ON=y -# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set -CONFIG_PREEMPT=y -CONFIG_IRQ_TIME_ACCOUNTING=y -CONFIG_IKCONFIG=y -CONFIG_IKCONFIG_PROC=y -CONFIG_LOG_BUF_SHIFT=18 -CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 -CONFIG_MEMCG=y -CONFIG_BLK_CGROUP=y -CONFIG_CFS_BANDWIDTH=y -CONFIG_RT_GROUP_SCHED=y -CONFIG_CGROUP_PIDS=y -CONFIG_CGROUP_RDMA=y -CONFIG_CGROUP_FREEZER=y -CONFIG_CPUSETS=y -CONFIG_CGROUP_DEVICE=y -CONFIG_CGROUP_CPUACCT=y -CONFIG_CGROUP_PERF=y -CONFIG_CGROUP_BPF=y -CONFIG_NAMESPACES=y -CONFIG_SCHED_AUTOGROUP=y -CONFIG_RELAY=y -CONFIG_INITRAMFS_SOURCE="@INITRAMFS_SOURCE@" -CONFIG_INITRAMFS_COMPRESSION_LZO=y -CONFIG_BOOT_CONFIG=y -CONFIG_CC_OPTIMIZE_FOR_SIZE=y -CONFIG_EXPERT=y -CONFIG_SGETMASK_SYSCALL=y -CONFIG_KALLSYMS_ALL=y -CONFIG_PROFILING=y -CONFIG_ARCH_ROCKCHIP=y -# CONFIG_CAVIUM_ERRATUM_22375 is not set -# CONFIG_CAVIUM_ERRATUM_23154 is not set -# CONFIG_CAVIUM_ERRATUM_27456 is not set -# CONFIG_CAVIUM_ERRATUM_30115 is not set -# CONFIG_CAVIUM_TX2_ERRATUM_219 is not set -# CONFIG_FUJITSU_ERRATUM_010001 is not set -# CONFIG_HISILICON_ERRATUM_161600802 is not set -# CONFIG_QCOM_FALKOR_ERRATUM_1003 is not set -# CONFIG_QCOM_FALKOR_ERRATUM_1009 is not set -# CONFIG_QCOM_QDF2400_ERRATUM_0065 is not set -# CONFIG_QCOM_FALKOR_ERRATUM_E1041 is not set -# CONFIG_NVIDIA_CARMEL_CNP_ERRATUM is not set -# CONFIG_SOCIONEXT_SYNQUACER_PREITS is not set -CONFIG_SCHED_MC=y -CONFIG_SCHED_SMT=y -CONFIG_NR_CPUS=4 -CONFIG_ARM64_SW_TTBR0_PAN=y -CONFIG_COMPAT=y -CONFIG_ARMV8_DEPRECATED=y -CONFIG_ARM64_PMEM=y -# CONFIG_ARM64_BTI is not set -CONFIG_RANDOMIZE_BASE=y -# CONFIG_EFI is not set -CONFIG_SUSPEND_SKIP_SYNC=y -CONFIG_PM_AUTOSLEEP=y -CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y -CONFIG_ENERGY_MODEL=y -CONFIG_CPU_IDLE=y -CONFIG_CPU_IDLE_GOV_LADDER=y -CONFIG_ARM_PSCI_CPUIDLE=y -CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_STAT=y -CONFIG_CPU_FREQ_GOV_POWERSAVE=y -CONFIG_CPU_FREQ_GOV_ONDEMAND=y -CONFIG_CPUFREQ_DT=y -CONFIG_ARM_SCMI_CPUFREQ=y -CONFIG_ARCH_MMAP_RND_BITS=18 -CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 -# CONFIG_GCC_PLUGINS is not set -CONFIG_MODULES=y -CONFIG_MODULE_FORCE_LOAD=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODULE_FORCE_UNLOAD=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_MAC_PARTITION=y -# CONFIG_MQ_IOSCHED_KYBER is not set -# CONFIG_IOSCHED_BFQ is not set -CONFIG_BINFMT_MISC=y -# CONFIG_SLAB_MERGE_DEFAULT is not set -# CONFIG_SLUB_CPU_PARTIAL is not set -# CONFIG_COMPAT_BRK is not set -# CONFIG_COMPACTION is not set -CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 -# CONFIG_VM_EVENT_COUNTERS is not set -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_UNIX_DIAG=m -CONFIG_XFRM_USER=y -CONFIG_NET_KEY=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_MULTIPLE_TABLES=y -CONFIG_IP_ROUTE_MULTIPATH=y -CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_NET_IPIP=m -CONFIG_NET_IPGRE_DEMUX=m -CONFIG_NET_IPGRE=m -CONFIG_IP_MROUTE=y -CONFIG_IP_MROUTE_MULTIPLE_TABLES=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=y -CONFIG_INET_AH=y -CONFIG_INET_ESP=y -CONFIG_INET_IPCOMP=y -# CONFIG_INET_DIAG is not set -CONFIG_TCP_CONG_ADVANCED=y -CONFIG_TCP_CONG_CUBIC=m -CONFIG_TCP_CONG_HSTCP=m -CONFIG_TCP_CONG_HYBLA=m -CONFIG_TCP_CONG_SCALABLE=m -CONFIG_TCP_CONG_LP=m -CONFIG_TCP_CONG_VENO=m -CONFIG_TCP_CONG_YEAH=m -CONFIG_TCP_CONG_ILLINOIS=m -CONFIG_TCP_CONG_DCTCP=m -CONFIG_TCP_CONG_CDG=m -CONFIG_TCP_MD5SIG=y -# CONFIG_IPV6 is not set -CONFIG_NETFILTER=y -CONFIG_BRIDGE_NETFILTER=y -CONFIG_NETFILTER_NETLINK_QUEUE=y -CONFIG_NETFILTER_NETLINK_LOG=y -CONFIG_NF_CONNTRACK=m -CONFIG_NF_CONNTRACK_PROCFS=y -CONFIG_NF_CONNTRACK_EVENTS=y -CONFIG_NF_CONNTRACK_TIMEOUT=y -CONFIG_NF_CONNTRACK_TIMESTAMP=y -CONFIG_NF_CONNTRACK_AMANDA=m -CONFIG_NF_CONNTRACK_FTP=m -CONFIG_NF_CONNTRACK_H323=m -CONFIG_NF_CONNTRACK_IRC=m -CONFIG_NF_CONNTRACK_NETBIOS_NS=m -CONFIG_NF_CONNTRACK_SNMP=m -CONFIG_NF_CONNTRACK_PPTP=m -CONFIG_NF_CONNTRACK_SANE=m -CONFIG_NF_CONNTRACK_SIP=m -CONFIG_NF_CONNTRACK_TFTP=m -CONFIG_NF_CT_NETLINK=m -CONFIG_NF_CT_NETLINK_TIMEOUT=m -CONFIG_NF_TABLES=m -CONFIG_NFT_CT=m -CONFIG_NFT_LOG=m -CONFIG_NFT_LIMIT=m -CONFIG_NFT_MASQ=m -CONFIG_NFT_REDIR=m -CONFIG_NFT_QUEUE=m -CONFIG_NFT_REJECT=m -CONFIG_NFT_COMPAT=m -CONFIG_NFT_HASH=m -CONFIG_NETFILTER_XTABLES_COMPAT=y -CONFIG_NETFILTER_XT_SET=m -CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m -CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -CONFIG_NETFILTER_XT_TARGET_DSCP=m -CONFIG_NETFILTER_XT_TARGET_HMARK=m -CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m -CONFIG_NETFILTER_XT_TARGET_LED=m -CONFIG_NETFILTER_XT_TARGET_LOG=m -CONFIG_NETFILTER_XT_TARGET_MARK=m -CONFIG_NETFILTER_XT_TARGET_NFLOG=m -CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m -CONFIG_NETFILTER_XT_TARGET_NOTRACK=m -CONFIG_NETFILTER_XT_TARGET_TEE=m -CONFIG_NETFILTER_XT_TARGET_TPROXY=m -CONFIG_NETFILTER_XT_TARGET_TRACE=m -CONFIG_NETFILTER_XT_TARGET_TCPMSS=m -CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m -CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m -CONFIG_NETFILTER_XT_MATCH_BPF=m -CONFIG_NETFILTER_XT_MATCH_CGROUP=m -CONFIG_NETFILTER_XT_MATCH_CLUSTER=m -CONFIG_NETFILTER_XT_MATCH_COMMENT=m -CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m -CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m -CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m -CONFIG_NETFILTER_XT_MATCH_CONNMARK=m -CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m -CONFIG_NETFILTER_XT_MATCH_CPU=m -CONFIG_NETFILTER_XT_MATCH_DCCP=m -CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m -CONFIG_NETFILTER_XT_MATCH_DSCP=m -CONFIG_NETFILTER_XT_MATCH_ESP=m -CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m -CONFIG_NETFILTER_XT_MATCH_HELPER=m -CONFIG_NETFILTER_XT_MATCH_IPCOMP=m -CONFIG_NETFILTER_XT_MATCH_IPRANGE=m -CONFIG_NETFILTER_XT_MATCH_IPVS=m -CONFIG_NETFILTER_XT_MATCH_L2TP=m -CONFIG_NETFILTER_XT_MATCH_LENGTH=m -CONFIG_NETFILTER_XT_MATCH_LIMIT=m -CONFIG_NETFILTER_XT_MATCH_MAC=m -CONFIG_NETFILTER_XT_MATCH_MARK=m -CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m -CONFIG_NETFILTER_XT_MATCH_NFACCT=m -CONFIG_NETFILTER_XT_MATCH_OSF=m -CONFIG_NETFILTER_XT_MATCH_OWNER=m -CONFIG_NETFILTER_XT_MATCH_POLICY=m -CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m -CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m -CONFIG_NETFILTER_XT_MATCH_QUOTA=m -CONFIG_NETFILTER_XT_MATCH_RATEEST=m -CONFIG_NETFILTER_XT_MATCH_REALM=m -CONFIG_NETFILTER_XT_MATCH_RECENT=m -CONFIG_NETFILTER_XT_MATCH_SCTP=m -CONFIG_NETFILTER_XT_MATCH_SOCKET=m -CONFIG_NETFILTER_XT_MATCH_STATE=m -CONFIG_NETFILTER_XT_MATCH_STATISTIC=m -CONFIG_NETFILTER_XT_MATCH_STRING=m -CONFIG_NETFILTER_XT_MATCH_TCPMSS=m -CONFIG_NETFILTER_XT_MATCH_TIME=m -CONFIG_NETFILTER_XT_MATCH_U32=m -CONFIG_IP_SET=y -CONFIG_IP_SET_BITMAP_IP=m -CONFIG_IP_SET_BITMAP_IPMAC=m -CONFIG_IP_SET_BITMAP_PORT=m -CONFIG_IP_SET_HASH_IP=m -CONFIG_IP_SET_HASH_IPMARK=m -CONFIG_IP_SET_HASH_IPPORT=m -CONFIG_IP_SET_HASH_IPPORTIP=m -CONFIG_IP_SET_HASH_IPPORTNET=m -CONFIG_IP_SET_HASH_MAC=m -CONFIG_IP_SET_HASH_NETPORTNET=m -CONFIG_IP_SET_HASH_NET=m -CONFIG_IP_SET_HASH_NETNET=m -CONFIG_IP_SET_HASH_NETPORT=m -CONFIG_IP_SET_HASH_NETIFACE=m -CONFIG_IP_SET_LIST_SET=m -CONFIG_IP_VS=m -CONFIG_IP_VS_PROTO_TCP=y -CONFIG_IP_VS_PROTO_UDP=y -CONFIG_IP_VS_PROTO_ESP=y -CONFIG_IP_VS_PROTO_AH=y -CONFIG_IP_VS_PROTO_SCTP=y -CONFIG_IP_VS_RR=m -CONFIG_IP_VS_WRR=m -CONFIG_IP_VS_LC=m -CONFIG_IP_VS_WLC=m -CONFIG_IP_VS_FO=m -CONFIG_IP_VS_OVF=m -CONFIG_IP_VS_LBLC=m -CONFIG_IP_VS_LBLCR=m -CONFIG_IP_VS_DH=m -CONFIG_IP_VS_SH=m -CONFIG_IP_VS_SED=m -CONFIG_IP_VS_NQ=m -CONFIG_IP_VS_NFCT=y -CONFIG_NF_LOG_ARP=m -CONFIG_NF_LOG_IPV4=m -CONFIG_IP_NF_IPTABLES=y -CONFIG_IP_NF_MATCH_AH=m -CONFIG_IP_NF_MATCH_ECN=m -CONFIG_IP_NF_MATCH_RPFILTER=m -CONFIG_IP_NF_MATCH_TTL=m -CONFIG_IP_NF_FILTER=y -CONFIG_IP_NF_TARGET_REJECT=m -CONFIG_IP_NF_TARGET_SYNPROXY=m -CONFIG_IP_NF_NAT=m -CONFIG_IP_NF_TARGET_MASQUERADE=m -CONFIG_IP_NF_TARGET_NETMAP=m -CONFIG_IP_NF_TARGET_REDIRECT=m -CONFIG_IP_NF_MANGLE=m -CONFIG_IP_NF_TARGET_ECN=m -CONFIG_IP_NF_TARGET_TTL=m -CONFIG_IP_NF_RAW=m -CONFIG_IP_NF_SECURITY=y -CONFIG_IP_NF_ARPTABLES=m -CONFIG_IP_NF_ARPFILTER=m -CONFIG_IP_NF_ARP_MANGLE=m -CONFIG_NF_TABLES_BRIDGE=m -CONFIG_NFT_BRIDGE_META=m -CONFIG_BRIDGE_NF_EBTABLES=m -CONFIG_BRIDGE_EBT_BROUTE=m -CONFIG_BRIDGE_EBT_T_FILTER=m -CONFIG_BRIDGE_EBT_T_NAT=m -CONFIG_BRIDGE_EBT_802_3=m -CONFIG_BRIDGE_EBT_AMONG=m -CONFIG_BRIDGE_EBT_ARP=m -CONFIG_BRIDGE_EBT_IP=m -CONFIG_BRIDGE_EBT_LIMIT=m -CONFIG_BRIDGE_EBT_MARK=m -CONFIG_BRIDGE_EBT_PKTTYPE=m -CONFIG_BRIDGE_EBT_STP=m -CONFIG_BRIDGE_EBT_VLAN=m -CONFIG_BRIDGE_EBT_ARPREPLY=m -CONFIG_BRIDGE_EBT_DNAT=m -CONFIG_BRIDGE_EBT_MARK_T=m -CONFIG_BRIDGE_EBT_REDIRECT=m -CONFIG_BRIDGE_EBT_SNAT=m -CONFIG_BRIDGE_EBT_LOG=m -CONFIG_BRIDGE_EBT_NFLOG=m -CONFIG_BRIDGE=y -CONFIG_VLAN_8021Q=y -CONFIG_NET_SCHED=y -CONFIG_NET_SCH_HTB=y -CONFIG_NET_SCH_CODEL=y -CONFIG_NET_SCH_FQ_CODEL=y -CONFIG_NET_CLS_U32=y -CONFIG_CLS_U32_MARK=y -CONFIG_NET_CLS_CGROUP=y -CONFIG_DNS_RESOLVER=y -CONFIG_OPENVSWITCH=m -CONFIG_CGROUP_NET_PRIO=y -CONFIG_CAN=y -CONFIG_BT=m -CONFIG_BT_RFCOMM=y -CONFIG_BT_HIDP=y -CONFIG_BT_HS=y -CONFIG_BT_HCIBTUSB=m -CONFIG_BT_HCIUART=m -CONFIG_BT_HCIUART_ATH3K=y -CONFIG_BT_HCIBFUSB=m -CONFIG_BT_HCIVHCI=m -CONFIG_BT_MRVL=m -CONFIG_BT_MRVL_SDIO=m -CONFIG_CFG80211=m -# CONFIG_CFG80211_DEFAULT_PS is not set -# CONFIG_CFG80211_CRDA_SUPPORT is not set -CONFIG_MAC80211=m -CONFIG_MAC80211_MESH=y -CONFIG_RFKILL=m -CONFIG_RFKILL_INPUT=y -CONFIG_RFKILL_GPIO=m -# CONFIG_ETHTOOL_NETLINK is not set -CONFIG_PCI=y -CONFIG_PCIEPORTBUS=y -CONFIG_PCIEAER=y -CONFIG_PCIE_ROCKCHIP_HOST=y -CONFIG_PCIE_ROCKCHIP_DW_HOST=y -CONFIG_UEVENT_HELPER=y -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -CONFIG_DEVTMPFS_SAFE=y -CONFIG_FW_LOADER_USER_HELPER=y -CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y -# CONFIG_ALLOW_DEV_COREDUMP is not set -CONFIG_DEBUG_DEVRES=y -CONFIG_CONNECTOR=y -CONFIG_ARM_SCMI_PROTOCOL=y -CONFIG_ARM_SCMI_POWER_CONTROL=y -CONFIG_ARM_SCPI_PROTOCOL=y -CONFIG_ARM_FFA_TRANSPORT=y -CONFIG_MTD=y -CONFIG_MTD_BLOCK=y -CONFIG_MTD_SPI_NOR=y -CONFIG_OF_OVERLAY=y -CONFIG_ZRAM=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_DRBD=m -CONFIG_BLK_DEV_NBD=m -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_COUNT=1 -CONFIG_ATA_OVER_ETH=m -CONFIG_BLK_DEV_RBD=m -CONFIG_BLK_DEV_NVME=m -CONFIG_SRAM=y -CONFIG_EEPROM_93CX6=y -CONFIG_BLK_DEV_SD=y -CONFIG_BLK_DEV_SR=y -CONFIG_SCSI_SCAN_ASYNC=y -CONFIG_SCSI_SPI_ATTRS=y -CONFIG_MEGARAID_SAS=m -CONFIG_SCSI_MPT2SAS=m -CONFIG_ATA=y -CONFIG_SATA_AHCI=y -CONFIG_SATA_AHCI_PLATFORM=y -CONFIG_SATA_MV=m -CONFIG_SATA_NV=m -CONFIG_SATA_PROMISE=m -CONFIG_SATA_SIL=m -CONFIG_MD=y -CONFIG_MD_LINEAR=m -CONFIG_BCACHE=m -CONFIG_BLK_DEV_DM=y -CONFIG_DM_CRYPT=m -CONFIG_DM_RAID=y -CONFIG_NETDEVICES=y -CONFIG_WIREGUARD=y -CONFIG_MACVLAN=y -CONFIG_IPVLAN=y -CONFIG_VXLAN=m -CONFIG_TUN=m -CONFIG_VETH=y -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_NET_VENDOR_ADAPTEC is not set -# CONFIG_NET_VENDOR_AGERE is not set -# CONFIG_NET_VENDOR_ALTEON is not set -# CONFIG_NET_VENDOR_AMD is not set -# CONFIG_NET_VENDOR_ARC is not set -# CONFIG_NET_VENDOR_ATHEROS is not set -# CONFIG_NET_VENDOR_BROADCOM is not set -# CONFIG_NET_VENDOR_CAVIUM is not set -# CONFIG_NET_VENDOR_CHELSIO is not set -# CONFIG_NET_VENDOR_CISCO is not set -# CONFIG_NET_VENDOR_DEC is not set -# CONFIG_NET_VENDOR_DLINK is not set -# CONFIG_NET_VENDOR_EMULEX is not set -# CONFIG_NET_VENDOR_EZCHIP is not set -# CONFIG_NET_VENDOR_HISILICON is not set -CONFIG_E100=y -CONFIG_E1000=y -CONFIG_E1000E=y -CONFIG_IGB=y -CONFIG_IXGBE=y -# CONFIG_NET_VENDOR_MARVELL is not set -# CONFIG_NET_VENDOR_MELLANOX is not set -# CONFIG_NET_VENDOR_MICREL is not set -# CONFIG_NET_VENDOR_MICROCHIP is not set -# CONFIG_NET_VENDOR_MYRI is not set -# CONFIG_NET_VENDOR_NATSEMI is not set -# CONFIG_NET_VENDOR_NVIDIA is not set -# CONFIG_NET_VENDOR_OKI is not set -# CONFIG_NET_VENDOR_QLOGIC is not set -# CONFIG_NET_VENDOR_BROCADE is not set -# CONFIG_NET_VENDOR_QUALCOMM is not set -# CONFIG_NET_VENDOR_RDC is not set -# CONFIG_NET_VENDOR_REALTEK is not set -# CONFIG_NET_VENDOR_RENESAS is not set -# CONFIG_NET_VENDOR_ROCKER is not set -# CONFIG_NET_VENDOR_SAMSUNG is not set -# CONFIG_NET_VENDOR_SEEQ is not set -# CONFIG_NET_VENDOR_SILAN is not set -# CONFIG_NET_VENDOR_SIS is not set -# CONFIG_NET_VENDOR_SMSC is not set -CONFIG_STMMAC_ETH=y -# CONFIG_NET_VENDOR_SUN is not set -# CONFIG_NET_VENDOR_SYNOPSYS is not set -# CONFIG_NET_VENDOR_TEHUTI is not set -# CONFIG_NET_VENDOR_TI is not set -# CONFIG_NET_VENDOR_VIA is not set -# CONFIG_NET_VENDOR_WIZNET is not set -CONFIG_ROCKCHIP_PHY=y -CONFIG_CAN_SJA1000=y -CONFIG_CAN_PLX_PCI=y -CONFIG_PPP=m -CONFIG_PPP_BSDCOMP=m -CONFIG_PPP_DEFLATE=m -CONFIG_PPPOE=m -CONFIG_PPP_ASYNC=m -CONFIG_PPP_SYNC_TTY=m -CONFIG_USB_RTL8150=y -CONFIG_USB_RTL8152=y -CONFIG_USB_USBNET=y -CONFIG_USB_NET_CDC_MBIM=y -# CONFIG_USB_NET_NET1080 is not set -CONFIG_USB_NET_RNDIS_HOST=y -# CONFIG_USB_NET_CDC_SUBSET is not set -# CONFIG_USB_NET_ZAURUS is not set -CONFIG_USB_NET_QMI_WWAN=y -CONFIG_ATH5K=m -CONFIG_ATH9K=m -CONFIG_ATH6KL=m -CONFIG_ATH6KL_USB=m -CONFIG_AR5523=m -CONFIG_ATH10K=m -CONFIG_WCN36XX=m -CONFIG_AT76C50X_USB=m -CONFIG_B43=m -CONFIG_BRCMFMAC=m -# CONFIG_BRCMFMAC_SDIO is not set -CONFIG_BRCMFMAC_USB=y -CONFIG_BRCMFMAC_PCIE=y -CONFIG_LIBERTAS=m -CONFIG_LIBERTAS_USB=m -CONFIG_LIBERTAS_THINFIRM=m -CONFIG_MWIFIEX=m -CONFIG_MWIFIEX_SDIO=m -CONFIG_MWIFIEX_USB=m -CONFIG_MT7601U=m -CONFIG_RT2X00=m -CONFIG_RT2500USB=m -CONFIG_RT73USB=m -CONFIG_RT2800USB=m -CONFIG_RT2800USB_RT3573=y -CONFIG_RT2800USB_RT53XX=y -CONFIG_RT2800USB_RT55XX=y -CONFIG_RT2800USB_UNKNOWN=y -CONFIG_RTL8180=m -CONFIG_RTL8187=m -CONFIG_RTL8192CE=m -CONFIG_RTL8192SE=m -CONFIG_RTL8192DE=m -CONFIG_RTL8723AE=m -CONFIG_RTL8723BE=m -CONFIG_RTL8188EE=m -CONFIG_RTL8192EE=m -CONFIG_RTL8821AE=m -CONFIG_RTL8XXXU=m -CONFIG_RTL8XXXU_UNTESTED=y -CONFIG_RTW88=m -CONFIG_RTW88_8822BE=m -CONFIG_RTW88_8822BU=m -CONFIG_RTW88_8822CE=m -CONFIG_RTW88_8822CU=m -CONFIG_RTW88_8723DE=m -CONFIG_RTW88_8723DS=m -CONFIG_RTW88_8723DU=m -CONFIG_RTW88_8821CE=m -CONFIG_RTW88_8821CS=m -CONFIG_RTW89=m -CONFIG_RTW89_8852AE=m -CONFIG_RTW89_8852CE=m -CONFIG_ZD1211RW=m -CONFIG_ISDN=y -CONFIG_INPUT_MATRIXKMAP=y -CONFIG_INPUT_JOYDEV=y -CONFIG_INPUT_EVDEV=y -CONFIG_KEYBOARD_ADC=y -CONFIG_KEYBOARD_GPIO=y -CONFIG_KEYBOARD_GPIO_POLLED=y -# CONFIG_MOUSE_PS2 is not set -CONFIG_INPUT_JOYSTICK=y -CONFIG_JOYSTICK_ADC=y -CONFIG_JOYSTICK_XPAD=m -CONFIG_JOYSTICK_XPAD_FF=y -CONFIG_INPUT_TABLET=y -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_ATMEL_MXT=y -CONFIG_TOUCHSCREEN_GOODIX=y -CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=y -CONFIG_TOUCHSCREEN_USB_COMPOSITE=y -CONFIG_INPUT_MISC=y -CONFIG_INPUT_UINPUT=y -CONFIG_INPUT_PWM_VIBRA=y -CONFIG_INPUT_RK805_PWRKEY=y -CONFIG_SERIO_SERPORT=m -CONFIG_GAMEPORT=y -# CONFIG_LEGACY_PTYS is not set -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -# CONFIG_SERIAL_8250_PCI is not set -CONFIG_SERIAL_8250_NR_UARTS=5 -CONFIG_SERIAL_8250_RUNTIME_UARTS=5 -CONFIG_SERIAL_8250_EXTENDED=y -CONFIG_SERIAL_8250_SHARE_IRQ=y -CONFIG_SERIAL_8250_DW=y -CONFIG_SERIAL_OF_PLATFORM=y -CONFIG_SERIAL_AMBA_PL011=y -CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -CONFIG_SERIAL_DEV_BUS=y -CONFIG_HW_RANDOM=y -CONFIG_TCG_TPM=y -# CONFIG_I2C_COMPAT is not set -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_DESIGNWARE_PLATFORM=y -CONFIG_I2C_RK3X=y -CONFIG_SPI=y -CONFIG_SPI_GPIO=y -CONFIG_SPI_ROCKCHIP=y -CONFIG_SPI_ROCKCHIP_SFC=y -CONFIG_SPI_MUX=y -CONFIG_SPI_SPIDEV=y -CONFIG_PINCTRL_RK805=y -CONFIG_PINCTRL_SINGLE=y -CONFIG_GPIO_SYSFS=y -CONFIG_GPIO_DWAPB=y -CONFIG_GPIO_GENERIC_PLATFORM=y -CONFIG_POWER_RESET_GPIO=y -CONFIG_POWER_RESET_GPIO_RESTART=y -CONFIG_POWER_RESET_SYSCON=y -CONFIG_POWER_RESET_SYSCON_POWEROFF=y -CONFIG_SYSCON_REBOOT_MODE=y -CONFIG_BATTERY_CW2015=y -CONFIG_BATTERY_SBS=y -CONFIG_CHARGER_GPIO=y -CONFIG_CHARGER_BQ24735=y -CONFIG_CHARGER_RK817=y -CONFIG_SENSORS_PWM_FAN=y -CONFIG_THERMAL=y -CONFIG_THERMAL_WRITABLE_TRIPS=y -CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR=y -CONFIG_THERMAL_GOV_FAIR_SHARE=y -CONFIG_THERMAL_GOV_STEP_WISE=y -CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y -CONFIG_CPU_THERMAL=y -CONFIG_DEVFREQ_THERMAL=y -CONFIG_ROCKCHIP_THERMAL=y -CONFIG_GENERIC_ADC_THERMAL=y -CONFIG_WATCHDOG=y -CONFIG_DW_WATCHDOG=y -CONFIG_SSB=y -CONFIG_BCMA=y -CONFIG_MFD_RK8XX_I2C=y -CONFIG_MFD_TPS6586X=y -CONFIG_REGULATOR=y -CONFIG_REGULATOR_DEBUG=y -CONFIG_REGULATOR_FIXED_VOLTAGE=y -CONFIG_REGULATOR_VIRTUAL_CONSUMER=y -CONFIG_REGULATOR_USERSPACE_CONSUMER=y -CONFIG_REGULATOR_ACT8865=y -CONFIG_REGULATOR_ARM_SCMI=y -CONFIG_REGULATOR_FAN53555=y -CONFIG_REGULATOR_GPIO=y -CONFIG_REGULATOR_PWM=y -CONFIG_REGULATOR_RK808=y -CONFIG_REGULATOR_TPS6586X=y -CONFIG_REGULATOR_VCTRL=y -CONFIG_RC_CORE=y -CONFIG_LIRC=y -CONFIG_RC_DECODERS=y -CONFIG_IR_JVC_DECODER=y -CONFIG_IR_MCE_KBD_DECODER=y -CONFIG_IR_NEC_DECODER=y -CONFIG_IR_RC5_DECODER=y -CONFIG_IR_RC6_DECODER=y -CONFIG_IR_SANYO_DECODER=y -CONFIG_IR_SHARP_DECODER=y -CONFIG_IR_SONY_DECODER=y -CONFIG_IR_XMP_DECODER=y -CONFIG_RC_DEVICES=y -CONFIG_IR_GPIO_CIR=y -CONFIG_MEDIA_CEC_RC=y -CONFIG_MEDIA_CEC_SUPPORT=y -CONFIG_USB_PULSE8_CEC=m -CONFIG_USB_RAINSHADOW_CEC=m -CONFIG_MEDIA_SUPPORT=y -CONFIG_MEDIA_SUPPORT_FILTER=y -CONFIG_MEDIA_CAMERA_SUPPORT=y -CONFIG_MEDIA_ANALOG_TV_SUPPORT=y -CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y -CONFIG_MEDIA_RADIO_SUPPORT=y -CONFIG_MEDIA_SDR_SUPPORT=y -CONFIG_MEDIA_PLATFORM_SUPPORT=y -CONFIG_MEDIA_TEST_SUPPORT=y -CONFIG_DVB_MAX_ADAPTERS=8 -# CONFIG_DVB_DYNAMIC_MINORS is not set -CONFIG_MEDIA_USB_SUPPORT=y -CONFIG_VIDEO_USBTV=m -CONFIG_USB_VIDEO_CLASS=y -# CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV is not set -CONFIG_VIDEO_AU0828=m -CONFIG_VIDEO_CX231XX=m -CONFIG_VIDEO_CX231XX_ALSA=m -CONFIG_VIDEO_CX231XX_DVB=m -CONFIG_DVB_AS102=m -CONFIG_DVB_B2C2_FLEXCOP_USB=m -CONFIG_DVB_USB_V2=m -CONFIG_DVB_USB_AF9015=m -CONFIG_DVB_USB_AF9035=m -CONFIG_DVB_USB_ANYSEE=m -CONFIG_DVB_USB_AU6610=m -CONFIG_DVB_USB_AZ6007=m -CONFIG_DVB_USB_CE6230=m -CONFIG_DVB_USB_DVBSKY=m -CONFIG_DVB_USB_EC168=m -CONFIG_DVB_USB_GL861=m -CONFIG_DVB_USB_LME2510=m -CONFIG_DVB_USB_MXL111SF=m -CONFIG_DVB_USB_RTL28XXU=m -CONFIG_DVB_USB=y -CONFIG_DVB_USB_A800=m -CONFIG_DVB_USB_AF9005=m -CONFIG_DVB_USB_AF9005_REMOTE=m -CONFIG_DVB_USB_AZ6027=m -CONFIG_DVB_USB_CINERGY_T2=m -CONFIG_DVB_USB_CXUSB=m -CONFIG_DVB_USB_DIB0700=m -CONFIG_DVB_USB_DIBUSB_MB=m -CONFIG_DVB_USB_DIBUSB_MC=m -CONFIG_DVB_USB_DIGITV=m -CONFIG_DVB_USB_DTT200U=m -CONFIG_DVB_USB_DTV5100=m -CONFIG_DVB_USB_DW2102=m -CONFIG_DVB_USB_GP8PSK=m -CONFIG_DVB_USB_M920X=m -CONFIG_DVB_USB_NOVA_T_USB2=m -CONFIG_DVB_USB_OPERA1=m -CONFIG_DVB_USB_PCTV452E=m -CONFIG_DVB_USB_TECHNISAT_USB2=m -CONFIG_DVB_USB_TTUSB2=m -CONFIG_DVB_USB_UMT_010=m -CONFIG_DVB_USB_VP702X=m -CONFIG_DVB_USB_VP7045=m -CONFIG_DVB_TTUSB_BUDGET=m -CONFIG_DVB_TTUSB_DEC=m -CONFIG_VIDEO_EM28XX=m -CONFIG_VIDEO_EM28XX_V4L2=m -CONFIG_VIDEO_EM28XX_ALSA=m -CONFIG_VIDEO_EM28XX_DVB=m -CONFIG_USB_AIRSPY=m -CONFIG_USB_HACKRF=m -CONFIG_USB_MSI2500=m -CONFIG_MEDIA_PCI_SUPPORT=y -CONFIG_VIDEO_CX23885=m -CONFIG_VIDEO_CX25821=m -CONFIG_V4L_PLATFORM_DRIVERS=y -CONFIG_DVB_PLATFORM_DRIVERS=y -CONFIG_V4L_MEM2MEM_DRIVERS=y -CONFIG_VIDEO_ROCKCHIP_RGA=y -CONFIG_VIDEO_HANTRO=y -# CONFIG_VIDEO_IR_I2C is not set -CONFIG_VIDEO_IMX219=y -CONFIG_VIDEO_OV5645=y -CONFIG_CXD2880_SPI_DRV=m -CONFIG_DVB_ASCOT2E=m -CONFIG_DVB_HELENE=m -CONFIG_DVB_HORUS3A=m -CONFIG_DVB_ISL6405=m -CONFIG_DVB_LGS8GL5=m -CONFIG_DVB_LNBH25=m -CONFIG_DVB_LNBH29=m -CONFIG_DVB_TDA665x=m -CONFIG_DVB_CXD2099=m -CONFIG_DRM=y -CONFIG_DRM_LOAD_EDID_FIRMWARE=y -CONFIG_DRM_MALI_DISPLAY=y -CONFIG_DRM_ROCKCHIP=y -CONFIG_ROCKCHIP_VOP2=y -CONFIG_ROCKCHIP_DW_HDMI=y -CONFIG_ROCKCHIP_DW_MIPI_DSI=y -CONFIG_DRM_PANEL_ELIDA_KD35T133=y -CONFIG_DRM_PANEL_HIMAX_HX8394=y -CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=y -CONFIG_DRM_PANEL_NEWVISION_NV3051D=y -CONFIG_DRM_PANEL_SITRONIX_ST7701=y -CONFIG_DRM_PANEL_SITRONIX_ST7703=y -CONFIG_DRM_DISPLAY_CONNECTOR=y -CONFIG_DRM_DW_HDMI_CEC=y -CONFIG_DRM_PANEL_MIPI_DBI=y -CONFIG_DRM_PANFROST=y -CONFIG_FB=y -CONFIG_FIRMWARE_EDID=y -CONFIG_FB_MODE_HELPERS=y -CONFIG_BACKLIGHT_PWM=y -CONFIG_BACKLIGHT_LED=y -CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y -CONFIG_SOUND=y -CONFIG_SND=y -CONFIG_SND_HRTIMER=y -CONFIG_SND_DYNAMIC_MINORS=y -# CONFIG_SND_SUPPORT_OLD_API is not set -# CONFIG_SND_VERBOSE_PROCFS is not set -CONFIG_SND_VERBOSE_PRINTK=y -CONFIG_SND_SEQUENCER=y -CONFIG_SND_SEQ_DUMMY=y -# CONFIG_SND_DRIVERS is not set -# CONFIG_SND_PCI is not set -# CONFIG_SND_SPI is not set -CONFIG_SND_USB_AUDIO=y -CONFIG_SND_SOC=y -CONFIG_SND_SOC_FSL_SAI=y -CONFIG_SND_SOC_ROCKCHIP=y -CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=y -CONFIG_SND_SOC_ROCKCHIP_PDM=y -CONFIG_SND_SOC_ROCKCHIP_SPDIF=y -CONFIG_SND_SOC_RK3288_HDMI_ANALOG=y -CONFIG_SND_SOC_ES8316=y -CONFIG_SND_SOC_MAX98090=y -CONFIG_SND_SOC_RK817=y -CONFIG_SND_SOC_SIMPLE_AMPLIFIER=y -CONFIG_SND_SOC_SPDIF=y -CONFIG_SND_SOC_TS3A227E=y -CONFIG_SND_SIMPLE_CARD=y -CONFIG_SND_AUDIO_GRAPH_CARD=y -CONFIG_SND_AUDIO_GRAPH_CARD2=y -CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE=y -CONFIG_SND_TEST_COMPONENT=y -CONFIG_HID_BATTERY_STRENGTH=y -CONFIG_HIDRAW=y -CONFIG_UHID=y -CONFIG_HID_A4TECH=y -CONFIG_HID_ACRUX=y -CONFIG_HID_APPLE=y -CONFIG_HID_APPLEIR=y -CONFIG_HID_AUREAL=y -CONFIG_HID_BELKIN=y -CONFIG_HID_BETOP_FF=y -CONFIG_HID_CHERRY=y -CONFIG_HID_CHICONY=y -CONFIG_HID_CORSAIR=y -CONFIG_HID_PRODIKEYS=y -CONFIG_HID_CP2112=y -CONFIG_HID_CYPRESS=y -CONFIG_HID_DRAGONRISE=y -CONFIG_DRAGONRISE_FF=y -CONFIG_HID_EMS_FF=y -CONFIG_HID_ELECOM=y -CONFIG_HID_ELO=y -CONFIG_HID_EZKEY=y -CONFIG_HID_GEMBIRD=y -CONFIG_HID_GFRM=y -CONFIG_HID_HOLTEK=y -CONFIG_HOLTEK_FF=y -CONFIG_HID_GT683R=y -CONFIG_HID_KEYTOUCH=y -CONFIG_HID_KYE=y -CONFIG_HID_UCLOGIC=y -CONFIG_HID_WALTOP=y -CONFIG_HID_GYRATION=y -CONFIG_HID_ICADE=y -CONFIG_HID_TWINHAN=y -CONFIG_HID_KENSINGTON=y -CONFIG_HID_LCPOWER=y -CONFIG_HID_LENOVO=y -CONFIG_HID_LOGITECH=y -CONFIG_HID_LOGITECH_DJ=y -CONFIG_LOGITECH_FF=y -CONFIG_LOGIRUMBLEPAD2_FF=y -CONFIG_LOGIG940_FF=y -CONFIG_HID_MAGICMOUSE=y -CONFIG_HID_MICROSOFT=y -CONFIG_HID_MONTEREY=y -CONFIG_HID_MULTITOUCH=y -CONFIG_HID_NTRIG=y -CONFIG_HID_ORTEK=y -CONFIG_HID_PANTHERLORD=y -CONFIG_PANTHERLORD_FF=y -CONFIG_HID_PENMOUNT=y -CONFIG_HID_PETALYNX=y -CONFIG_HID_PLANTRONICS=y -CONFIG_HID_PRIMAX=y -CONFIG_HID_ROCCAT=y -CONFIG_HID_SAITEK=y -CONFIG_HID_SAMSUNG=y -CONFIG_HID_SONY=y -CONFIG_HID_SPEEDLINK=y -CONFIG_HID_STEELSERIES=y -CONFIG_HID_SUNPLUS=y -CONFIG_HID_RMI=y -CONFIG_HID_GREENASIA=y -CONFIG_GREENASIA_FF=y -CONFIG_HID_SMARTJOYPLUS=y -CONFIG_SMARTJOYPLUS_FF=y -CONFIG_HID_TIVO=y -CONFIG_HID_TOPSEED=y -CONFIG_HID_THINGM=y -CONFIG_HID_THRUSTMASTER=y -CONFIG_THRUSTMASTER_FF=y -CONFIG_HID_WACOM=y -CONFIG_HID_WIIMOTE=y -CONFIG_HID_XINMO=y -CONFIG_HID_ZEROPLUS=y -CONFIG_ZEROPLUS_FF=y -CONFIG_HID_ZYDACRON=y -CONFIG_HID_SENSOR_HUB=y -CONFIG_HID_SENSOR_CUSTOM_SENSOR=y -CONFIG_HID_ALPS=y -CONFIG_USB_HIDDEV=y -CONFIG_I2C_HID_OF_GOODIX=y -CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -# CONFIG_USB_DEFAULT_PERSIST is not set -CONFIG_USB_OTG=y -CONFIG_USB_OTG_PRODUCTLIST=y -CONFIG_USB_OTG_FSM=y -CONFIG_USB_LEDS_TRIGGER_USBPORT=y -CONFIG_USB_MON=y -CONFIG_USB_XHCI_HCD=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_ROOT_HUB_TT=y -CONFIG_USB_EHCI_HCD_PLATFORM=y -CONFIG_USB_OHCI_HCD=y -# CONFIG_USB_OHCI_HCD_PCI is not set -CONFIG_USB_OHCI_HCD_PLATFORM=y -CONFIG_USB_ACM=y -CONFIG_USB_STORAGE=y -CONFIG_USB_STORAGE_REALTEK=y -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=y -CONFIG_USB_UAS=y -CONFIG_USB_DWC3=y -CONFIG_USB_DWC2=y -CONFIG_USB_SERIAL=y -CONFIG_USB_SERIAL_GENERIC=y -CONFIG_USB_SERIAL_CH341=y -CONFIG_USB_SERIAL_CP210X=y -CONFIG_USB_SERIAL_FTDI_SIO=y -CONFIG_USB_SERIAL_KEYSPAN=y -CONFIG_USB_SERIAL_PL2303=y -CONFIG_USB_SERIAL_OTI6858=y -CONFIG_USB_SERIAL_QUALCOMM=y -CONFIG_USB_SERIAL_SIERRAWIRELESS=y -CONFIG_USB_SERIAL_OPTION=y -CONFIG_NOP_USB_XCEIV=y -CONFIG_USB_GADGET=y -CONFIG_USB_GADGET_DEBUG_FILES=y -CONFIG_USB_GADGET_VBUS_DRAW=500 -CONFIG_U_SERIAL_CONSOLE=y -CONFIG_USB_CONFIGFS=y -CONFIG_USB_CONFIGFS_ACM=y -CONFIG_USB_CONFIGFS_MASS_STORAGE=y -CONFIG_USB_CONFIGFS_F_FS=y -CONFIG_USB_CONFIGFS_F_UVC=y -CONFIG_USB_GADGETFS=m -CONFIG_USB_FUNCTIONFS=m -CONFIG_USB_MASS_STORAGE=m -CONFIG_USB_G_SERIAL=m -CONFIG_TYPEC=y -CONFIG_TYPEC_TCPM=y -CONFIG_TYPEC_FUSB302=y -CONFIG_TYPEC_DP_ALTMODE=y -CONFIG_MMC=y -CONFIG_MMC_BLOCK_MINORS=32 -CONFIG_MMC_TEST=y -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_PLTFM=y -CONFIG_MMC_SDHCI_OF_DWCMSHC=y -CONFIG_MMC_DW=y -CONFIG_MMC_DW_ROCKCHIP=y -CONFIG_MMC_HSQ=y -CONFIG_LEDS_GPIO=y -CONFIG_LEDS_PWM=y -CONFIG_LEDS_IS31FL32XX=y -CONFIG_LEDS_SYSCON=y -CONFIG_LEDS_TRIGGER_TIMER=y -CONFIG_LEDS_TRIGGER_ONESHOT=y -CONFIG_LEDS_TRIGGER_DISK=y -CONFIG_LEDS_TRIGGER_HEARTBEAT=y -CONFIG_LEDS_TRIGGER_BACKLIGHT=y -CONFIG_LEDS_TRIGGER_CPU=y -CONFIG_LEDS_TRIGGER_DEFAULT_ON=y -CONFIG_RTC_CLASS=y -# CONFIG_RTC_SYSTOHC is not set -# CONFIG_RTC_INTF_PROC is not set -# CONFIG_RTC_INTF_DEV is not set -CONFIG_RTC_DRV_HYM8563=y -CONFIG_RTC_DRV_RK808=y -CONFIG_DMADEVICES=y -CONFIG_PL330_DMA=y -CONFIG_UDMABUF=y -CONFIG_DMABUF_HEAPS=y -CONFIG_DMABUF_HEAPS_SYSTEM=y -# CONFIG_VIRTIO_MENU is not set -# CONFIG_VHOST_MENU is not set -CONFIG_STAGING=y -CONFIG_RTL8723BS=m -CONFIG_R8712U=m -CONFIG_STAGING_MEDIA=y -CONFIG_VIDEO_ROCKCHIP_VDEC=y -CONFIG_CHROME_PLATFORMS=y -# CONFIG_SURFACE_PLATFORMS is not set -CONFIG_COMMON_CLK_RK808=y -CONFIG_COMMON_CLK_SCMI=y -CONFIG_COMMON_CLK_SCPI=y -CONFIG_COMMON_CLK_XGENE=y -CONFIG_COMMON_CLK_PWM=y -CONFIG_COMMON_CLK_FIXED_MMIO=y -# CONFIG_CLK_RK3308 is not set -# CONFIG_CLK_RK3328 is not set -# CONFIG_CLK_RK3368 is not set -# CONFIG_CLK_RK3399 is not set -# CONFIG_FSL_ERRATUM_A008585 is not set -# CONFIG_HISILICON_ERRATUM_161010101 is not set -# CONFIG_ARM64_ERRATUM_858921 is not set -CONFIG_MAILBOX=y -CONFIG_ARM_MHU=y -CONFIG_PLATFORM_MHU=y -CONFIG_ROCKCHIP_MBOX=y -CONFIG_ROCKCHIP_IOMMU=y -CONFIG_ARM_SMMU=y -CONFIG_ARM_SMMU_V3=y -CONFIG_ROCKCHIP_IODOMAIN=y -CONFIG_ROCKCHIP_PM_DOMAINS=y -CONFIG_DEVFREQ_GOV_PERFORMANCE=y -CONFIG_DEVFREQ_GOV_POWERSAVE=y -CONFIG_ARM_RK3399_DMC_DEVFREQ=y -CONFIG_MEMORY=y -CONFIG_IIO=y -CONFIG_IIO_BUFFER_HW_CONSUMER=y -CONFIG_IIO_SW_DEVICE=y -CONFIG_IIO_SW_TRIGGER=y -CONFIG_IIO_TRIGGERED_EVENT=y -CONFIG_ROCKCHIP_SARADC=y -CONFIG_SENSORS_ISL29018=y -CONFIG_SENSORS_TSL2563=y -CONFIG_TSL2583=y -CONFIG_IIO_MUX=y -CONFIG_IIO_HRTIMER_TRIGGER=y -CONFIG_IIO_SYSFS_TRIGGER=y -CONFIG_PWM=y -CONFIG_PWM_ROCKCHIP=y -CONFIG_PHY_ROCKCHIP_DP=y -CONFIG_PHY_ROCKCHIP_DPHY_RX0=y -CONFIG_PHY_ROCKCHIP_EMMC=y -CONFIG_PHY_ROCKCHIP_INNO_HDMI=y -CONFIG_PHY_ROCKCHIP_INNO_USB2=y -CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY=y -CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y -CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=y -CONFIG_PHY_ROCKCHIP_PCIE=y -CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y -CONFIG_PHY_ROCKCHIP_TYPEC=y -CONFIG_PHY_ROCKCHIP_USB=y -CONFIG_ARM_SMMU_V3_PMU=y -CONFIG_MUX_GPIO=y -CONFIG_MUX_MMIO=y -CONFIG_EXT4_FS=y -# CONFIG_EXT4_USE_FOR_EXT2 is not set -CONFIG_EXT4_FS_POSIX_ACL=y -CONFIG_EXT4_FS_SECURITY=y -CONFIG_XFS_FS=y -# CONFIG_DNOTIFY is not set -CONFIG_AUTOFS_FS=y -CONFIG_FUSE_FS=y -CONFIG_OVERLAY_FS=y -CONFIG_FSCACHE=y -CONFIG_ISO9660_FS=y -CONFIG_JOLIET=y -CONFIG_ZISOFS=y -CONFIG_MSDOS_FS=y -CONFIG_VFAT_FS=y -CONFIG_FAT_DEFAULT_IOCHARSET="ascii" -CONFIG_EXFAT_FS=y -CONFIG_TMPFS=y -CONFIG_TMPFS_POSIX_ACL=y -CONFIG_SQUASHFS=y -CONFIG_SQUASHFS_LZ4=y -CONFIG_SQUASHFS_LZO=y -CONFIG_SQUASHFS_XZ=y -CONFIG_SQUASHFS_ZSTD=y -CONFIG_PSTORE=y -CONFIG_NLS_DEFAULT="utf-8" -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_ASCII=y -CONFIG_NLS_ISO8859_1=y -CONFIG_NLS_UTF8=y -CONFIG_SECURITY=y -CONFIG_SECURITY_NETWORK=y -CONFIG_HARDENED_USERCOPY=y -CONFIG_STATIC_USERMODEHELPER=y -CONFIG_LSM="selinux,integrity" -CONFIG_INIT_STACK_NONE=y -CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y -CONFIG_INIT_ON_FREE_DEFAULT_ON=y -CONFIG_CRYPTO_USER=y -CONFIG_CRYPTO_PCRYPT=y -CONFIG_CRYPTO_CRYPTD=y -CONFIG_CRYPTO_ECDH=y -CONFIG_CRYPTO_TWOFISH=y -CONFIG_CRYPTO_ARC4=y -CONFIG_CRYPTO_CTS=y -CONFIG_CRYPTO_XTS=y -CONFIG_CRYPTO_CHACHA20POLY1305=y -CONFIG_CRYPTO_CCM=y -CONFIG_CRYPTO_ESSIV=y -CONFIG_CRYPTO_CMAC=y -CONFIG_CRYPTO_XCBC=y -CONFIG_CRYPTO_CRC32=y -CONFIG_CRYPTO_LZO=y -CONFIG_CRYPTO_LZ4=y -CONFIG_CRYPTO_LZ4HC=y -CONFIG_CRYPTO_ZSTD=y -CONFIG_CRYPTO_ANSI_CPRNG=y -CONFIG_CRYPTO_USER_API_HASH=y -CONFIG_CRYPTO_USER_API_SKCIPHER=y -CONFIG_CRYPTO_USER_API_RNG=y -CONFIG_CRYPTO_USER_API_AEAD=y -CONFIG_CRYPTO_STATS=y -CONFIG_CRYPTO_NHPOLY1305_NEON=y -CONFIG_CRYPTO_GHASH_ARM64_CE=y -CONFIG_CRYPTO_SHA1_ARM64_CE=y -CONFIG_CRYPTO_SHA2_ARM64_CE=y -CONFIG_CRYPTO_SHA512_ARM64_CE=y -CONFIG_CRYPTO_AES_ARM64=y -CONFIG_CRYPTO_AES_ARM64_CE_BLK=y -CONFIG_CRYPTO_AES_ARM64_BS=y -CONFIG_CRYPTO_AES_ARM64_CE_CCM=y -CONFIG_CRYPTO_DEV_ROCKCHIP=y -CONFIG_CORDIC=y -CONFIG_CRC_CCITT=y -CONFIG_CRC_T10DIF=y -CONFIG_CRC_ITU_T=y -CONFIG_CRC7=y -# CONFIG_XZ_DEC_X86 is not set -# CONFIG_XZ_DEC_POWERPC is not set -# CONFIG_XZ_DEC_SPARC is not set -CONFIG_PRINTK_TIME=y -CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7 -CONFIG_DYNAMIC_DEBUG=y -# CONFIG_SYMBOLIC_ERRNAME is not set -# CONFIG_DEBUG_MISC is not set -CONFIG_MAGIC_SYSRQ=y -CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0 -CONFIG_DEBUG_FS=y -# CONFIG_SLUB_DEBUG is not set -CONFIG_PANIC_TIMEOUT=1 -CONFIG_DETECT_HUNG_TASK=y -CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y -# CONFIG_SCHED_DEBUG is not set -CONFIG_SCHEDSTATS=y -CONFIG_DEBUG_SPINLOCK=y -CONFIG_STACKTRACE=y -CONFIG_DEBUG_CREDENTIALS=y -CONFIG_RCU_CPU_STALL_TIMEOUT=60 -CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=20 -# CONFIG_RCU_TRACE is not set -# CONFIG_FTRACE is not set -# CONFIG_STRICT_DEVMEM is not set -# CONFIG_RUNTIME_TESTING_MENU is not set diff --git a/projects/Rockchip/devices/RK3566-ML/options b/projects/Rockchip/devices/RK3566-ML/options deleted file mode 100644 index e0b068e669..0000000000 --- a/projects/Rockchip/devices/RK3566-ML/options +++ /dev/null @@ -1,161 +0,0 @@ -################################################################################ -# setup device defaults -################################################################################ - - # The TARGET_CPU variable controls which processor should be targeted for - # generated code. - case ${TARGET_ARCH} in - aarch64) - TARGET_KERNEL_ARCH="arm64" - TARGET_PATCH_ARCH="aarch64" - TARGET_CPU="cortex-a55" - TARGET_CPU_FLAGS="+crc+crypto+fp+simd" - TARGET_FPU="fp-armv8" - TARGET_FLOAT="hard" - TARGET_FEATURES="64bit" - ;; - arm) - TARGET_KERNEL_ARCH="arm64" - TARGET_PATCH_ARCH="aarch64" - TARGET_CPU="cortex-a55" - TARGET_CPU_FLAGS="+crc" - TARGET_FPU="neon-fp-armv8" - TARGET_FLOAT="hard" - TARGET_FEATURES="32bit" - ;; - esac - - # Kernel target - DEVICE_NAME="RK3566" - KERNEL_TARGET="Image" - BOOTLOADER="u-boot" - PARTITION_TABLE="gpt" - UBOOT_LABEL="uboot" - TRUST_LABEL="trust" - DEVICE_DTB=("rk3566-anbernic-rg353ps" "rk3566-anbernic-rg353vs" "rk3566-anbernic-rg503" "rk3566-anbernic-rg353p" "rk3566-anbernic-rg353v" "rk3566-powkiddy-rk2023" "rk3566-powkiddy-rgb30") - UBOOT_DTB="rk3566" - UBOOT_CONFIG="anbernic-rgxx3-rk3566_defconfig" - PKG_SOC="rk3568" - PKG_DATAFILE="${PKG_RKBIN}/bin/rk35/rk3568_ddr_1056MHz_v1.16.bin" - PKG_LOADER="${PKG_RKBIN}/bin/rk35/rk356x_spl_v1.12.bin" - PKG_BL31="${PKG_RKBIN}/bin/rk35/rk3568_bl31_v1.42.elf" - PKG_LOAD_ADDR="0x0a100000" - BOOT_INI=false - EXT_LINUX_CONF=true - - # Additional kernel make parameters (for example to specify the u-boot loadaddress) - KERNEL_MAKE_EXTRACMD=" $(for DTB in "${DEVICE_DTB[@]}"; do echo -n "rockchip/${DTB}.dtb "; done)" - KERNEL_EXTRA_DEPENDS_TARGET="zstd libcap libtraceevent" - - # Define the CPU - HW_CPU="Rockchip RK3566" - - # Mali GPU family - MALI_FAMILY="bifrost-g52" - # MALI_VERSION="g2p0" - # OPENGLES="libmali" - VULKAN_SUPPORT="" - - # OpenGL(X) implementation to use (mesa / no) - OPENGL="mesa" - - # OpenGL-ES implementation to use (mesa / no) - OPENGLES="mesa" - - GRAPHIC_DRIVERS="panfrost" - - # Displayserver to use (weston / x11 / no) - DISPLAYSERVER="wl" - - # Windowmanager to use (fluxbox / weston / no) - WINDOWMANAGER="weston" - - # debug tty path - DEBUG_TTY="/dev/ttyS2" - - # kernel serial console - #EXTRA_CMDLINE="quiet rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20 initcall_blacklist=uvc_init log_buf_len=1M" - EXTRA_CMDLINE="rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty1 ssh consoleblank=0 systemd.show_status=0 loglevel=8 panic=20 nopkmute" - - # additional packages to install - # ADDITIONAL_PACKAGES="" - - # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) - # Space separated list is supported, - # e.g. FIRMWARE="dvb-firmware misc-firmware wlan-firmware" - FIRMWARE="misc-firmware" - - # additional drivers to install: - # for a list of additional drivers see packages/linux-drivers - # Space separated list is supported, - # e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" - ADDITIONAL_DRIVERS="jelos-gamepad" - - # build and install driver addons (yes / no) - DRIVER_ADDONS_SUPPORT="no" - - # driver addons to install: - # for a list of additinoal drivers see packages/linux-driver-addons - # Space separated list is supported, - DRIVER_ADDONS="" #dvb-latest - - # build and install bluetooth support (yes / no) - BLUETOOTH_SUPPORT="yes" - - # build and install Avahi (Zeroconf) daemon (yes / no) - AVAHI_DAEMON="no" - - # build with NFS support (mounting nfs shares via the OS) (yes / no) - NFS_SUPPORT="no" - - # build with Samba Client support (mounting samba shares via the OS) (yes / no) - SAMBA_SUPPORT="no" - - # build and install Samba Server (yes / no) - SAMBA_SERVER="yes" - - # build and install SFTP Server (yes / no) - SFTP_SERVER="yes" - - # build and install OpenVPN support (yes / no) - OPENVPN_SUPPORT="no" - WIREGUARD_SUPPORT="no" - - # build and install ZeroTier support (yes / no) - ZEROTIER_SUPPORT="yes" - - # build and install diskmounter support (udevil) - # this service provide auto mounting support for external drives in the - # mediacenter also automount internally drives at boottime via udev (yes / no) - UDEVIL="yes" - - # build and install exFAT fuse support (yes / no) - EXFAT="yes" - - # build and install NTFS-3G fuse support (yes / no) - NTFS3G="no" - - # build and install hfs filesystem utilities (yes / no) - HFSTOOLS="no" - - # Support for partitioning and formating disks in initramfs (yes / no) - # This adds support for parted and mkfs.ext3/4 to initramfs for OEM usage - INITRAMFS_PARTED_SUPPORT="no" - - # build with swap support (yes / no) - SWAP_SUPPORT="yes" - - # swap support enabled per default (yes / no) - SWAP_ENABLED_DEFAULT="yes" - - # swapfile size if SWAP_SUPPORT=yes in MB - SWAPFILESIZE="384" - - # cron support (yes / no) - CRON_SUPPORT="no" - - # Settings package name - blank if not required - DISTRO_PKG_SETTINGS="" - - # htop tool (yes / no) - HTOP_TOOL="yes" diff --git a/projects/Rockchip/devices/RK3566-X55-ML/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3566-X55-ML/linux/linux.aarch64.conf deleted file mode 100644 index 721676b7f8..0000000000 --- a/projects/Rockchip/devices/RK3566-X55-ML/linux/linux.aarch64.conf +++ /dev/null @@ -1,1113 +0,0 @@ -# CONFIG_LOCALVERSION_AUTO is not set -CONFIG_DEFAULT_HOSTNAME="@DEVICENAME@" -CONFIG_SYSVIPC=y -CONFIG_POSIX_MQUEUE=y -CONFIG_WATCH_QUEUE=y -# CONFIG_CROSS_MEMORY_ATTACH is not set -CONFIG_USELIB=y -CONFIG_NO_HZ_IDLE=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_BPF_SYSCALL=y -CONFIG_BPF_JIT=y -CONFIG_BPF_JIT_ALWAYS_ON=y -# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set -CONFIG_PREEMPT=y -CONFIG_IRQ_TIME_ACCOUNTING=y -CONFIG_IKCONFIG=y -CONFIG_IKCONFIG_PROC=y -CONFIG_LOG_BUF_SHIFT=18 -CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 -CONFIG_MEMCG=y -CONFIG_BLK_CGROUP=y -CONFIG_CFS_BANDWIDTH=y -CONFIG_RT_GROUP_SCHED=y -CONFIG_CGROUP_PIDS=y -CONFIG_CGROUP_RDMA=y -CONFIG_CGROUP_FREEZER=y -CONFIG_CPUSETS=y -CONFIG_CGROUP_DEVICE=y -CONFIG_CGROUP_CPUACCT=y -CONFIG_CGROUP_PERF=y -CONFIG_CGROUP_BPF=y -CONFIG_NAMESPACES=y -CONFIG_SCHED_AUTOGROUP=y -CONFIG_RELAY=y -CONFIG_INITRAMFS_SOURCE="@INITRAMFS_SOURCE@" -CONFIG_INITRAMFS_COMPRESSION_LZO=y -CONFIG_BOOT_CONFIG=y -CONFIG_CC_OPTIMIZE_FOR_SIZE=y -CONFIG_EXPERT=y -CONFIG_SGETMASK_SYSCALL=y -CONFIG_KALLSYMS_ALL=y -CONFIG_PROFILING=y -CONFIG_ARCH_ROCKCHIP=y -# CONFIG_CAVIUM_ERRATUM_22375 is not set -# CONFIG_CAVIUM_ERRATUM_23154 is not set -# CONFIG_CAVIUM_ERRATUM_27456 is not set -# CONFIG_CAVIUM_ERRATUM_30115 is not set -# CONFIG_CAVIUM_TX2_ERRATUM_219 is not set -# CONFIG_FUJITSU_ERRATUM_010001 is not set -# CONFIG_HISILICON_ERRATUM_161600802 is not set -# CONFIG_QCOM_FALKOR_ERRATUM_1003 is not set -# CONFIG_QCOM_FALKOR_ERRATUM_1009 is not set -# CONFIG_QCOM_QDF2400_ERRATUM_0065 is not set -# CONFIG_QCOM_FALKOR_ERRATUM_E1041 is not set -# CONFIG_NVIDIA_CARMEL_CNP_ERRATUM is not set -# CONFIG_SOCIONEXT_SYNQUACER_PREITS is not set -CONFIG_SCHED_MC=y -CONFIG_SCHED_SMT=y -CONFIG_NR_CPUS=4 -CONFIG_ARM64_SW_TTBR0_PAN=y -CONFIG_COMPAT=y -CONFIG_ARMV8_DEPRECATED=y -CONFIG_ARM64_PMEM=y -# CONFIG_ARM64_BTI is not set -CONFIG_RANDOMIZE_BASE=y -# CONFIG_EFI is not set -CONFIG_SUSPEND_SKIP_SYNC=y -CONFIG_PM_AUTOSLEEP=y -CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y -CONFIG_ENERGY_MODEL=y -CONFIG_CPU_IDLE=y -CONFIG_CPU_IDLE_GOV_LADDER=y -CONFIG_ARM_PSCI_CPUIDLE=y -CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_STAT=y -CONFIG_CPU_FREQ_GOV_POWERSAVE=y -CONFIG_CPU_FREQ_GOV_ONDEMAND=y -CONFIG_CPUFREQ_DT=y -CONFIG_ARM_SCMI_CPUFREQ=y -CONFIG_ARCH_MMAP_RND_BITS=18 -CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 -# CONFIG_GCC_PLUGINS is not set -CONFIG_MODULES=y -CONFIG_MODULE_FORCE_LOAD=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODULE_FORCE_UNLOAD=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_MAC_PARTITION=y -# CONFIG_MQ_IOSCHED_KYBER is not set -# CONFIG_IOSCHED_BFQ is not set -CONFIG_BINFMT_MISC=y -# CONFIG_SLAB_MERGE_DEFAULT is not set -# CONFIG_SLUB_CPU_PARTIAL is not set -# CONFIG_COMPAT_BRK is not set -# CONFIG_COMPACTION is not set -CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 -# CONFIG_VM_EVENT_COUNTERS is not set -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_UNIX_DIAG=m -CONFIG_XFRM_USER=y -CONFIG_NET_KEY=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_MULTIPLE_TABLES=y -CONFIG_IP_ROUTE_MULTIPATH=y -CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_NET_IPIP=m -CONFIG_NET_IPGRE_DEMUX=m -CONFIG_NET_IPGRE=m -CONFIG_IP_MROUTE=y -CONFIG_IP_MROUTE_MULTIPLE_TABLES=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=y -CONFIG_INET_AH=y -CONFIG_INET_ESP=y -CONFIG_INET_IPCOMP=y -# CONFIG_INET_DIAG is not set -CONFIG_TCP_CONG_ADVANCED=y -CONFIG_TCP_CONG_CUBIC=m -CONFIG_TCP_CONG_HSTCP=m -CONFIG_TCP_CONG_HYBLA=m -CONFIG_TCP_CONG_SCALABLE=m -CONFIG_TCP_CONG_LP=m -CONFIG_TCP_CONG_VENO=m -CONFIG_TCP_CONG_YEAH=m -CONFIG_TCP_CONG_ILLINOIS=m -CONFIG_TCP_CONG_DCTCP=m -CONFIG_TCP_CONG_CDG=m -CONFIG_TCP_MD5SIG=y -# CONFIG_IPV6 is not set -CONFIG_NETFILTER=y -CONFIG_BRIDGE_NETFILTER=y -CONFIG_NETFILTER_NETLINK_QUEUE=y -CONFIG_NETFILTER_NETLINK_LOG=y -CONFIG_NF_CONNTRACK=m -CONFIG_NF_CONNTRACK_PROCFS=y -CONFIG_NF_CONNTRACK_EVENTS=y -CONFIG_NF_CONNTRACK_TIMEOUT=y -CONFIG_NF_CONNTRACK_TIMESTAMP=y -CONFIG_NF_CONNTRACK_AMANDA=m -CONFIG_NF_CONNTRACK_FTP=m -CONFIG_NF_CONNTRACK_H323=m -CONFIG_NF_CONNTRACK_IRC=m -CONFIG_NF_CONNTRACK_NETBIOS_NS=m -CONFIG_NF_CONNTRACK_SNMP=m -CONFIG_NF_CONNTRACK_PPTP=m -CONFIG_NF_CONNTRACK_SANE=m -CONFIG_NF_CONNTRACK_SIP=m -CONFIG_NF_CONNTRACK_TFTP=m -CONFIG_NF_CT_NETLINK=m -CONFIG_NF_CT_NETLINK_TIMEOUT=m -CONFIG_NF_TABLES=m -CONFIG_NFT_CT=m -CONFIG_NFT_LOG=m -CONFIG_NFT_LIMIT=m -CONFIG_NFT_MASQ=m -CONFIG_NFT_REDIR=m -CONFIG_NFT_QUEUE=m -CONFIG_NFT_REJECT=m -CONFIG_NFT_COMPAT=m -CONFIG_NFT_HASH=m -CONFIG_NETFILTER_XTABLES_COMPAT=y -CONFIG_NETFILTER_XT_SET=m -CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m -CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -CONFIG_NETFILTER_XT_TARGET_DSCP=m -CONFIG_NETFILTER_XT_TARGET_HMARK=m -CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m -CONFIG_NETFILTER_XT_TARGET_LED=m -CONFIG_NETFILTER_XT_TARGET_LOG=m -CONFIG_NETFILTER_XT_TARGET_MARK=m -CONFIG_NETFILTER_XT_TARGET_NFLOG=m -CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m -CONFIG_NETFILTER_XT_TARGET_NOTRACK=m -CONFIG_NETFILTER_XT_TARGET_TEE=m -CONFIG_NETFILTER_XT_TARGET_TPROXY=m -CONFIG_NETFILTER_XT_TARGET_TRACE=m -CONFIG_NETFILTER_XT_TARGET_TCPMSS=m -CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m -CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m -CONFIG_NETFILTER_XT_MATCH_BPF=m -CONFIG_NETFILTER_XT_MATCH_CGROUP=m -CONFIG_NETFILTER_XT_MATCH_CLUSTER=m -CONFIG_NETFILTER_XT_MATCH_COMMENT=m -CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m -CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m -CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m -CONFIG_NETFILTER_XT_MATCH_CONNMARK=m -CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m -CONFIG_NETFILTER_XT_MATCH_CPU=m -CONFIG_NETFILTER_XT_MATCH_DCCP=m -CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m -CONFIG_NETFILTER_XT_MATCH_DSCP=m -CONFIG_NETFILTER_XT_MATCH_ESP=m -CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m -CONFIG_NETFILTER_XT_MATCH_HELPER=m -CONFIG_NETFILTER_XT_MATCH_IPCOMP=m -CONFIG_NETFILTER_XT_MATCH_IPRANGE=m -CONFIG_NETFILTER_XT_MATCH_IPVS=m -CONFIG_NETFILTER_XT_MATCH_L2TP=m -CONFIG_NETFILTER_XT_MATCH_LENGTH=m -CONFIG_NETFILTER_XT_MATCH_LIMIT=m -CONFIG_NETFILTER_XT_MATCH_MAC=m -CONFIG_NETFILTER_XT_MATCH_MARK=m -CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m -CONFIG_NETFILTER_XT_MATCH_NFACCT=m -CONFIG_NETFILTER_XT_MATCH_OSF=m -CONFIG_NETFILTER_XT_MATCH_OWNER=m -CONFIG_NETFILTER_XT_MATCH_POLICY=m -CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m -CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m -CONFIG_NETFILTER_XT_MATCH_QUOTA=m -CONFIG_NETFILTER_XT_MATCH_RATEEST=m -CONFIG_NETFILTER_XT_MATCH_REALM=m -CONFIG_NETFILTER_XT_MATCH_RECENT=m -CONFIG_NETFILTER_XT_MATCH_SCTP=m -CONFIG_NETFILTER_XT_MATCH_SOCKET=m -CONFIG_NETFILTER_XT_MATCH_STATE=m -CONFIG_NETFILTER_XT_MATCH_STATISTIC=m -CONFIG_NETFILTER_XT_MATCH_STRING=m -CONFIG_NETFILTER_XT_MATCH_TCPMSS=m -CONFIG_NETFILTER_XT_MATCH_TIME=m -CONFIG_NETFILTER_XT_MATCH_U32=m -CONFIG_IP_SET=y -CONFIG_IP_SET_BITMAP_IP=m -CONFIG_IP_SET_BITMAP_IPMAC=m -CONFIG_IP_SET_BITMAP_PORT=m -CONFIG_IP_SET_HASH_IP=m -CONFIG_IP_SET_HASH_IPMARK=m -CONFIG_IP_SET_HASH_IPPORT=m -CONFIG_IP_SET_HASH_IPPORTIP=m -CONFIG_IP_SET_HASH_IPPORTNET=m -CONFIG_IP_SET_HASH_MAC=m -CONFIG_IP_SET_HASH_NETPORTNET=m -CONFIG_IP_SET_HASH_NET=m -CONFIG_IP_SET_HASH_NETNET=m -CONFIG_IP_SET_HASH_NETPORT=m -CONFIG_IP_SET_HASH_NETIFACE=m -CONFIG_IP_SET_LIST_SET=m -CONFIG_IP_VS=m -CONFIG_IP_VS_PROTO_TCP=y -CONFIG_IP_VS_PROTO_UDP=y -CONFIG_IP_VS_PROTO_ESP=y -CONFIG_IP_VS_PROTO_AH=y -CONFIG_IP_VS_PROTO_SCTP=y -CONFIG_IP_VS_RR=m -CONFIG_IP_VS_WRR=m -CONFIG_IP_VS_LC=m -CONFIG_IP_VS_WLC=m -CONFIG_IP_VS_FO=m -CONFIG_IP_VS_OVF=m -CONFIG_IP_VS_LBLC=m -CONFIG_IP_VS_LBLCR=m -CONFIG_IP_VS_DH=m -CONFIG_IP_VS_SH=m -CONFIG_IP_VS_SED=m -CONFIG_IP_VS_NQ=m -CONFIG_IP_VS_NFCT=y -CONFIG_NF_LOG_ARP=m -CONFIG_NF_LOG_IPV4=m -CONFIG_IP_NF_IPTABLES=y -CONFIG_IP_NF_MATCH_AH=m -CONFIG_IP_NF_MATCH_ECN=m -CONFIG_IP_NF_MATCH_RPFILTER=m -CONFIG_IP_NF_MATCH_TTL=m -CONFIG_IP_NF_FILTER=y -CONFIG_IP_NF_TARGET_REJECT=m -CONFIG_IP_NF_TARGET_SYNPROXY=m -CONFIG_IP_NF_NAT=m -CONFIG_IP_NF_TARGET_MASQUERADE=m -CONFIG_IP_NF_TARGET_NETMAP=m -CONFIG_IP_NF_TARGET_REDIRECT=m -CONFIG_IP_NF_MANGLE=m -CONFIG_IP_NF_TARGET_ECN=m -CONFIG_IP_NF_TARGET_TTL=m -CONFIG_IP_NF_RAW=m -CONFIG_IP_NF_SECURITY=y -CONFIG_IP_NF_ARPTABLES=m -CONFIG_IP_NF_ARPFILTER=m -CONFIG_IP_NF_ARP_MANGLE=m -CONFIG_NF_TABLES_BRIDGE=m -CONFIG_NFT_BRIDGE_META=m -CONFIG_BRIDGE_NF_EBTABLES=m -CONFIG_BRIDGE_EBT_BROUTE=m -CONFIG_BRIDGE_EBT_T_FILTER=m -CONFIG_BRIDGE_EBT_T_NAT=m -CONFIG_BRIDGE_EBT_802_3=m -CONFIG_BRIDGE_EBT_AMONG=m -CONFIG_BRIDGE_EBT_ARP=m -CONFIG_BRIDGE_EBT_IP=m -CONFIG_BRIDGE_EBT_LIMIT=m -CONFIG_BRIDGE_EBT_MARK=m -CONFIG_BRIDGE_EBT_PKTTYPE=m -CONFIG_BRIDGE_EBT_STP=m -CONFIG_BRIDGE_EBT_VLAN=m -CONFIG_BRIDGE_EBT_ARPREPLY=m -CONFIG_BRIDGE_EBT_DNAT=m -CONFIG_BRIDGE_EBT_MARK_T=m -CONFIG_BRIDGE_EBT_REDIRECT=m -CONFIG_BRIDGE_EBT_SNAT=m -CONFIG_BRIDGE_EBT_LOG=m -CONFIG_BRIDGE_EBT_NFLOG=m -CONFIG_BRIDGE=y -CONFIG_VLAN_8021Q=y -CONFIG_NET_SCHED=y -CONFIG_NET_SCH_HTB=y -CONFIG_NET_SCH_CODEL=y -CONFIG_NET_SCH_FQ_CODEL=y -CONFIG_NET_CLS_U32=y -CONFIG_CLS_U32_MARK=y -CONFIG_NET_CLS_CGROUP=y -CONFIG_DNS_RESOLVER=y -CONFIG_OPENVSWITCH=m -CONFIG_CGROUP_NET_PRIO=y -CONFIG_CAN=y -CONFIG_BT=m -CONFIG_BT_RFCOMM=y -CONFIG_BT_HIDP=y -CONFIG_BT_HS=y -CONFIG_BT_HCIBTUSB=m -CONFIG_BT_HCIUART=m -CONFIG_BT_HCIUART_ATH3K=y -CONFIG_BT_HCIBFUSB=m -CONFIG_BT_HCIVHCI=m -CONFIG_BT_MRVL=m -CONFIG_BT_MRVL_SDIO=m -CONFIG_CFG80211=m -# CONFIG_CFG80211_DEFAULT_PS is not set -# CONFIG_CFG80211_CRDA_SUPPORT is not set -CONFIG_MAC80211=m -CONFIG_MAC80211_MESH=y -CONFIG_RFKILL=m -CONFIG_RFKILL_INPUT=y -CONFIG_RFKILL_GPIO=m -# CONFIG_ETHTOOL_NETLINK is not set -CONFIG_PCI=y -CONFIG_PCIEPORTBUS=y -CONFIG_PCIEAER=y -CONFIG_PCIE_ROCKCHIP_HOST=y -CONFIG_PCIE_ROCKCHIP_DW_HOST=y -CONFIG_UEVENT_HELPER=y -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -CONFIG_DEVTMPFS_SAFE=y -CONFIG_FW_LOADER_USER_HELPER=y -CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y -# CONFIG_ALLOW_DEV_COREDUMP is not set -CONFIG_DEBUG_DEVRES=y -CONFIG_CONNECTOR=y -CONFIG_ARM_SCMI_PROTOCOL=y -CONFIG_ARM_SCMI_POWER_CONTROL=y -CONFIG_ARM_SCPI_PROTOCOL=y -CONFIG_ARM_FFA_TRANSPORT=y -CONFIG_MTD=y -CONFIG_MTD_BLOCK=y -CONFIG_MTD_SPI_NOR=y -CONFIG_OF_OVERLAY=y -CONFIG_ZRAM=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_DRBD=m -CONFIG_BLK_DEV_NBD=m -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_COUNT=1 -CONFIG_ATA_OVER_ETH=m -CONFIG_BLK_DEV_RBD=m -CONFIG_BLK_DEV_NVME=m -CONFIG_SRAM=y -CONFIG_EEPROM_93CX6=y -CONFIG_BLK_DEV_SD=y -CONFIG_BLK_DEV_SR=y -CONFIG_SCSI_SCAN_ASYNC=y -CONFIG_SCSI_SPI_ATTRS=y -CONFIG_MEGARAID_SAS=m -CONFIG_SCSI_MPT2SAS=m -CONFIG_ATA=y -CONFIG_SATA_AHCI=y -CONFIG_SATA_AHCI_PLATFORM=y -CONFIG_SATA_MV=m -CONFIG_SATA_NV=m -CONFIG_SATA_PROMISE=m -CONFIG_SATA_SIL=m -CONFIG_MD=y -CONFIG_MD_LINEAR=m -CONFIG_BCACHE=m -CONFIG_BLK_DEV_DM=y -CONFIG_DM_CRYPT=m -CONFIG_DM_RAID=y -CONFIG_NETDEVICES=y -CONFIG_WIREGUARD=y -CONFIG_MACVLAN=y -CONFIG_IPVLAN=y -CONFIG_VXLAN=m -CONFIG_TUN=m -CONFIG_VETH=y -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_NET_VENDOR_ADAPTEC is not set -# CONFIG_NET_VENDOR_AGERE is not set -# CONFIG_NET_VENDOR_ALTEON is not set -# CONFIG_NET_VENDOR_AMD is not set -# CONFIG_NET_VENDOR_ARC is not set -# CONFIG_NET_VENDOR_ATHEROS is not set -# CONFIG_NET_VENDOR_BROADCOM is not set -# CONFIG_NET_VENDOR_CAVIUM is not set -# CONFIG_NET_VENDOR_CHELSIO is not set -# CONFIG_NET_VENDOR_CISCO is not set -# CONFIG_NET_VENDOR_DEC is not set -# CONFIG_NET_VENDOR_DLINK is not set -# CONFIG_NET_VENDOR_EMULEX is not set -# CONFIG_NET_VENDOR_EZCHIP is not set -# CONFIG_NET_VENDOR_HISILICON is not set -CONFIG_E100=y -CONFIG_E1000=y -CONFIG_E1000E=y -CONFIG_IGB=y -CONFIG_IXGBE=y -# CONFIG_NET_VENDOR_MARVELL is not set -# CONFIG_NET_VENDOR_MELLANOX is not set -# CONFIG_NET_VENDOR_MICREL is not set -# CONFIG_NET_VENDOR_MICROCHIP is not set -# CONFIG_NET_VENDOR_MYRI is not set -# CONFIG_NET_VENDOR_NATSEMI is not set -# CONFIG_NET_VENDOR_NVIDIA is not set -# CONFIG_NET_VENDOR_OKI is not set -# CONFIG_NET_VENDOR_QLOGIC is not set -# CONFIG_NET_VENDOR_BROCADE is not set -# CONFIG_NET_VENDOR_QUALCOMM is not set -# CONFIG_NET_VENDOR_RDC is not set -# CONFIG_NET_VENDOR_REALTEK is not set -# CONFIG_NET_VENDOR_RENESAS is not set -# CONFIG_NET_VENDOR_ROCKER is not set -# CONFIG_NET_VENDOR_SAMSUNG is not set -# CONFIG_NET_VENDOR_SEEQ is not set -# CONFIG_NET_VENDOR_SILAN is not set -# CONFIG_NET_VENDOR_SIS is not set -# CONFIG_NET_VENDOR_SMSC is not set -CONFIG_STMMAC_ETH=y -# CONFIG_NET_VENDOR_SUN is not set -# CONFIG_NET_VENDOR_SYNOPSYS is not set -# CONFIG_NET_VENDOR_TEHUTI is not set -# CONFIG_NET_VENDOR_TI is not set -# CONFIG_NET_VENDOR_VIA is not set -# CONFIG_NET_VENDOR_WIZNET is not set -CONFIG_ROCKCHIP_PHY=y -CONFIG_CAN_SJA1000=y -CONFIG_CAN_PLX_PCI=y -CONFIG_PPP=m -CONFIG_PPP_BSDCOMP=m -CONFIG_PPP_DEFLATE=m -CONFIG_PPPOE=m -CONFIG_PPP_ASYNC=m -CONFIG_PPP_SYNC_TTY=m -CONFIG_USB_RTL8150=y -CONFIG_USB_RTL8152=y -CONFIG_USB_USBNET=y -CONFIG_USB_NET_CDC_MBIM=y -# CONFIG_USB_NET_NET1080 is not set -CONFIG_USB_NET_RNDIS_HOST=y -# CONFIG_USB_NET_CDC_SUBSET is not set -# CONFIG_USB_NET_ZAURUS is not set -CONFIG_USB_NET_QMI_WWAN=y -CONFIG_ATH5K=m -CONFIG_ATH9K=m -CONFIG_ATH6KL=m -CONFIG_ATH6KL_USB=m -CONFIG_AR5523=m -CONFIG_ATH10K=m -CONFIG_WCN36XX=m -CONFIG_AT76C50X_USB=m -CONFIG_B43=m -CONFIG_BRCMFMAC=m -# CONFIG_BRCMFMAC_SDIO is not set -CONFIG_BRCMFMAC_USB=y -CONFIG_BRCMFMAC_PCIE=y -CONFIG_LIBERTAS=m -CONFIG_LIBERTAS_USB=m -CONFIG_LIBERTAS_THINFIRM=m -CONFIG_MWIFIEX=m -CONFIG_MWIFIEX_SDIO=m -CONFIG_MWIFIEX_USB=m -CONFIG_MT7601U=m -CONFIG_RT2X00=m -CONFIG_RT2500USB=m -CONFIG_RT73USB=m -CONFIG_RT2800USB=m -CONFIG_RT2800USB_RT3573=y -CONFIG_RT2800USB_RT53XX=y -CONFIG_RT2800USB_RT55XX=y -CONFIG_RT2800USB_UNKNOWN=y -CONFIG_RTL8180=m -CONFIG_RTL8187=m -CONFIG_RTL8192CE=m -CONFIG_RTL8192SE=m -CONFIG_RTL8192DE=m -CONFIG_RTL8723AE=m -CONFIG_RTL8723BE=m -CONFIG_RTL8188EE=m -CONFIG_RTL8192EE=m -CONFIG_RTL8821AE=m -CONFIG_RTL8XXXU=m -CONFIG_RTL8XXXU_UNTESTED=y -CONFIG_RTW88=m -CONFIG_RTW88_8822BE=m -CONFIG_RTW88_8822BU=m -CONFIG_RTW88_8822CE=m -CONFIG_RTW88_8822CU=m -CONFIG_RTW88_8723DE=m -CONFIG_RTW88_8723DS=m -CONFIG_RTW88_8723DU=m -CONFIG_RTW88_8821CE=m -CONFIG_RTW88_8821CS=m -CONFIG_RTW89=m -CONFIG_RTW89_8852AE=m -CONFIG_RTW89_8852CE=m -CONFIG_ZD1211RW=m -CONFIG_ISDN=y -CONFIG_INPUT_MATRIXKMAP=y -CONFIG_INPUT_JOYDEV=y -CONFIG_INPUT_EVDEV=y -CONFIG_KEYBOARD_ADC=y -CONFIG_KEYBOARD_GPIO=y -CONFIG_KEYBOARD_GPIO_POLLED=y -# CONFIG_MOUSE_PS2 is not set -CONFIG_INPUT_JOYSTICK=y -CONFIG_JOYSTICK_ADC=y -CONFIG_JOYSTICK_XPAD=m -CONFIG_JOYSTICK_XPAD_FF=y -CONFIG_INPUT_TABLET=y -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_ATMEL_MXT=y -CONFIG_TOUCHSCREEN_GOODIX=y -CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=y -CONFIG_TOUCHSCREEN_USB_COMPOSITE=y -CONFIG_INPUT_MISC=y -CONFIG_INPUT_UINPUT=y -CONFIG_INPUT_PWM_VIBRA=y -CONFIG_INPUT_RK805_PWRKEY=y -CONFIG_SERIO_SERPORT=m -CONFIG_GAMEPORT=y -# CONFIG_LEGACY_PTYS is not set -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -# CONFIG_SERIAL_8250_PCI is not set -CONFIG_SERIAL_8250_NR_UARTS=5 -CONFIG_SERIAL_8250_RUNTIME_UARTS=5 -CONFIG_SERIAL_8250_EXTENDED=y -CONFIG_SERIAL_8250_SHARE_IRQ=y -CONFIG_SERIAL_8250_DW=y -CONFIG_SERIAL_OF_PLATFORM=y -CONFIG_SERIAL_AMBA_PL011=y -CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -CONFIG_SERIAL_DEV_BUS=y -CONFIG_HW_RANDOM=y -CONFIG_TCG_TPM=y -# CONFIG_I2C_COMPAT is not set -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_DESIGNWARE_PLATFORM=y -CONFIG_I2C_RK3X=y -CONFIG_SPI=y -CONFIG_SPI_GPIO=y -CONFIG_SPI_ROCKCHIP=y -CONFIG_SPI_ROCKCHIP_SFC=y -CONFIG_SPI_MUX=y -CONFIG_SPI_SPIDEV=y -CONFIG_PINCTRL_RK805=y -CONFIG_PINCTRL_SINGLE=y -CONFIG_GPIO_SYSFS=y -CONFIG_GPIO_DWAPB=y -CONFIG_GPIO_GENERIC_PLATFORM=y -CONFIG_POWER_RESET_GPIO=y -CONFIG_POWER_RESET_GPIO_RESTART=y -CONFIG_POWER_RESET_SYSCON=y -CONFIG_POWER_RESET_SYSCON_POWEROFF=y -CONFIG_SYSCON_REBOOT_MODE=y -CONFIG_BATTERY_CW2015=y -CONFIG_BATTERY_SBS=y -CONFIG_CHARGER_GPIO=y -CONFIG_CHARGER_BQ24735=y -CONFIG_CHARGER_RK817=y -CONFIG_SENSORS_PWM_FAN=y -CONFIG_THERMAL=y -CONFIG_THERMAL_WRITABLE_TRIPS=y -CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR=y -CONFIG_THERMAL_GOV_FAIR_SHARE=y -CONFIG_THERMAL_GOV_STEP_WISE=y -CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y -CONFIG_CPU_THERMAL=y -CONFIG_DEVFREQ_THERMAL=y -CONFIG_ROCKCHIP_THERMAL=y -CONFIG_GENERIC_ADC_THERMAL=y -CONFIG_WATCHDOG=y -CONFIG_DW_WATCHDOG=y -CONFIG_SSB=y -CONFIG_BCMA=y -CONFIG_MFD_RK8XX_I2C=y -CONFIG_MFD_TPS6586X=y -CONFIG_REGULATOR=y -CONFIG_REGULATOR_DEBUG=y -CONFIG_REGULATOR_FIXED_VOLTAGE=y -CONFIG_REGULATOR_VIRTUAL_CONSUMER=y -CONFIG_REGULATOR_USERSPACE_CONSUMER=y -CONFIG_REGULATOR_ACT8865=y -CONFIG_REGULATOR_ARM_SCMI=y -CONFIG_REGULATOR_FAN53555=y -CONFIG_REGULATOR_GPIO=y -CONFIG_REGULATOR_PWM=y -CONFIG_REGULATOR_RK808=y -CONFIG_REGULATOR_TPS6586X=y -CONFIG_REGULATOR_VCTRL=y -CONFIG_RC_CORE=y -CONFIG_LIRC=y -CONFIG_RC_DECODERS=y -CONFIG_IR_JVC_DECODER=y -CONFIG_IR_MCE_KBD_DECODER=y -CONFIG_IR_NEC_DECODER=y -CONFIG_IR_RC5_DECODER=y -CONFIG_IR_RC6_DECODER=y -CONFIG_IR_SANYO_DECODER=y -CONFIG_IR_SHARP_DECODER=y -CONFIG_IR_SONY_DECODER=y -CONFIG_IR_XMP_DECODER=y -CONFIG_RC_DEVICES=y -CONFIG_IR_GPIO_CIR=y -CONFIG_MEDIA_CEC_RC=y -CONFIG_MEDIA_CEC_SUPPORT=y -CONFIG_USB_PULSE8_CEC=m -CONFIG_USB_RAINSHADOW_CEC=m -CONFIG_MEDIA_SUPPORT=y -CONFIG_MEDIA_SUPPORT_FILTER=y -CONFIG_MEDIA_CAMERA_SUPPORT=y -CONFIG_MEDIA_ANALOG_TV_SUPPORT=y -CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y -CONFIG_MEDIA_RADIO_SUPPORT=y -CONFIG_MEDIA_SDR_SUPPORT=y -CONFIG_MEDIA_PLATFORM_SUPPORT=y -CONFIG_MEDIA_TEST_SUPPORT=y -CONFIG_DVB_MAX_ADAPTERS=8 -# CONFIG_DVB_DYNAMIC_MINORS is not set -CONFIG_MEDIA_USB_SUPPORT=y -CONFIG_VIDEO_USBTV=m -CONFIG_USB_VIDEO_CLASS=y -# CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV is not set -CONFIG_VIDEO_AU0828=m -CONFIG_VIDEO_CX231XX=m -CONFIG_VIDEO_CX231XX_ALSA=m -CONFIG_VIDEO_CX231XX_DVB=m -CONFIG_DVB_AS102=m -CONFIG_DVB_B2C2_FLEXCOP_USB=m -CONFIG_DVB_USB_V2=m -CONFIG_DVB_USB_AF9015=m -CONFIG_DVB_USB_AF9035=m -CONFIG_DVB_USB_ANYSEE=m -CONFIG_DVB_USB_AU6610=m -CONFIG_DVB_USB_AZ6007=m -CONFIG_DVB_USB_CE6230=m -CONFIG_DVB_USB_DVBSKY=m -CONFIG_DVB_USB_EC168=m -CONFIG_DVB_USB_GL861=m -CONFIG_DVB_USB_LME2510=m -CONFIG_DVB_USB_MXL111SF=m -CONFIG_DVB_USB_RTL28XXU=m -CONFIG_DVB_USB=y -CONFIG_DVB_USB_A800=m -CONFIG_DVB_USB_AF9005=m -CONFIG_DVB_USB_AF9005_REMOTE=m -CONFIG_DVB_USB_AZ6027=m -CONFIG_DVB_USB_CINERGY_T2=m -CONFIG_DVB_USB_CXUSB=m -CONFIG_DVB_USB_DIB0700=m -CONFIG_DVB_USB_DIBUSB_MB=m -CONFIG_DVB_USB_DIBUSB_MC=m -CONFIG_DVB_USB_DIGITV=m -CONFIG_DVB_USB_DTT200U=m -CONFIG_DVB_USB_DTV5100=m -CONFIG_DVB_USB_DW2102=m -CONFIG_DVB_USB_GP8PSK=m -CONFIG_DVB_USB_M920X=m -CONFIG_DVB_USB_NOVA_T_USB2=m -CONFIG_DVB_USB_OPERA1=m -CONFIG_DVB_USB_PCTV452E=m -CONFIG_DVB_USB_TECHNISAT_USB2=m -CONFIG_DVB_USB_TTUSB2=m -CONFIG_DVB_USB_UMT_010=m -CONFIG_DVB_USB_VP702X=m -CONFIG_DVB_USB_VP7045=m -CONFIG_DVB_TTUSB_BUDGET=m -CONFIG_DVB_TTUSB_DEC=m -CONFIG_VIDEO_EM28XX=m -CONFIG_VIDEO_EM28XX_V4L2=m -CONFIG_VIDEO_EM28XX_ALSA=m -CONFIG_VIDEO_EM28XX_DVB=m -CONFIG_USB_AIRSPY=m -CONFIG_USB_HACKRF=m -CONFIG_USB_MSI2500=m -CONFIG_MEDIA_PCI_SUPPORT=y -CONFIG_VIDEO_CX23885=m -CONFIG_VIDEO_CX25821=m -CONFIG_V4L_PLATFORM_DRIVERS=y -CONFIG_DVB_PLATFORM_DRIVERS=y -CONFIG_V4L_MEM2MEM_DRIVERS=y -CONFIG_VIDEO_ROCKCHIP_RGA=y -CONFIG_VIDEO_HANTRO=y -# CONFIG_VIDEO_IR_I2C is not set -CONFIG_VIDEO_IMX219=y -CONFIG_VIDEO_OV5645=y -CONFIG_CXD2880_SPI_DRV=m -CONFIG_DVB_ASCOT2E=m -CONFIG_DVB_HELENE=m -CONFIG_DVB_HORUS3A=m -CONFIG_DVB_ISL6405=m -CONFIG_DVB_LGS8GL5=m -CONFIG_DVB_LNBH25=m -CONFIG_DVB_LNBH29=m -CONFIG_DVB_TDA665x=m -CONFIG_DVB_CXD2099=m -CONFIG_DRM=y -CONFIG_DRM_LOAD_EDID_FIRMWARE=y -CONFIG_DRM_MALI_DISPLAY=y -CONFIG_DRM_ROCKCHIP=y -CONFIG_ROCKCHIP_VOP2=y -CONFIG_ROCKCHIP_DW_HDMI=y -CONFIG_ROCKCHIP_DW_MIPI_DSI=y -CONFIG_DRM_PANEL_ELIDA_KD35T133=y -CONFIG_DRM_PANEL_HIMAX_HX8394=y -CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=y -CONFIG_DRM_PANEL_NEWVISION_NV3051D=y -CONFIG_DRM_PANEL_SITRONIX_ST7701=y -CONFIG_DRM_PANEL_SITRONIX_ST7703=y -CONFIG_DRM_DISPLAY_CONNECTOR=y -CONFIG_DRM_DW_HDMI_CEC=y -CONFIG_DRM_PANEL_MIPI_DBI=y -CONFIG_DRM_PANFROST=y -CONFIG_FB=y -CONFIG_FIRMWARE_EDID=y -CONFIG_FB_MODE_HELPERS=y -CONFIG_BACKLIGHT_PWM=y -CONFIG_BACKLIGHT_LED=y -CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y -CONFIG_SOUND=y -CONFIG_SND=y -CONFIG_SND_HRTIMER=y -CONFIG_SND_DYNAMIC_MINORS=y -# CONFIG_SND_SUPPORT_OLD_API is not set -# CONFIG_SND_VERBOSE_PROCFS is not set -CONFIG_SND_VERBOSE_PRINTK=y -CONFIG_SND_SEQUENCER=y -CONFIG_SND_SEQ_DUMMY=y -# CONFIG_SND_DRIVERS is not set -# CONFIG_SND_PCI is not set -# CONFIG_SND_SPI is not set -CONFIG_SND_USB_AUDIO=y -CONFIG_SND_SOC=y -CONFIG_SND_SOC_FSL_SAI=y -CONFIG_SND_SOC_ROCKCHIP=y -CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=y -CONFIG_SND_SOC_ROCKCHIP_PDM=y -CONFIG_SND_SOC_ROCKCHIP_SPDIF=y -CONFIG_SND_SOC_RK3288_HDMI_ANALOG=y -CONFIG_SND_SOC_ES8316=y -CONFIG_SND_SOC_MAX98090=y -CONFIG_SND_SOC_RK817=y -CONFIG_SND_SOC_SIMPLE_AMPLIFIER=y -CONFIG_SND_SOC_SPDIF=y -CONFIG_SND_SOC_TS3A227E=y -CONFIG_SND_SIMPLE_CARD=y -CONFIG_SND_AUDIO_GRAPH_CARD=y -CONFIG_SND_AUDIO_GRAPH_CARD2=y -CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE=y -CONFIG_SND_TEST_COMPONENT=y -CONFIG_HID_BATTERY_STRENGTH=y -CONFIG_HIDRAW=y -CONFIG_UHID=y -CONFIG_HID_A4TECH=y -CONFIG_HID_ACRUX=y -CONFIG_HID_APPLE=y -CONFIG_HID_APPLEIR=y -CONFIG_HID_AUREAL=y -CONFIG_HID_BELKIN=y -CONFIG_HID_BETOP_FF=y -CONFIG_HID_CHERRY=y -CONFIG_HID_CHICONY=y -CONFIG_HID_CORSAIR=y -CONFIG_HID_PRODIKEYS=y -CONFIG_HID_CP2112=y -CONFIG_HID_CYPRESS=y -CONFIG_HID_DRAGONRISE=y -CONFIG_DRAGONRISE_FF=y -CONFIG_HID_EMS_FF=y -CONFIG_HID_ELECOM=y -CONFIG_HID_ELO=y -CONFIG_HID_EZKEY=y -CONFIG_HID_GEMBIRD=y -CONFIG_HID_GFRM=y -CONFIG_HID_HOLTEK=y -CONFIG_HOLTEK_FF=y -CONFIG_HID_GT683R=y -CONFIG_HID_KEYTOUCH=y -CONFIG_HID_KYE=y -CONFIG_HID_UCLOGIC=y -CONFIG_HID_WALTOP=y -CONFIG_HID_GYRATION=y -CONFIG_HID_ICADE=y -CONFIG_HID_TWINHAN=y -CONFIG_HID_KENSINGTON=y -CONFIG_HID_LCPOWER=y -CONFIG_HID_LENOVO=y -CONFIG_HID_LOGITECH=y -CONFIG_HID_LOGITECH_DJ=y -CONFIG_LOGITECH_FF=y -CONFIG_LOGIRUMBLEPAD2_FF=y -CONFIG_LOGIG940_FF=y -CONFIG_HID_MAGICMOUSE=y -CONFIG_HID_MICROSOFT=y -CONFIG_HID_MONTEREY=y -CONFIG_HID_MULTITOUCH=y -CONFIG_HID_NTRIG=y -CONFIG_HID_ORTEK=y -CONFIG_HID_PANTHERLORD=y -CONFIG_PANTHERLORD_FF=y -CONFIG_HID_PENMOUNT=y -CONFIG_HID_PETALYNX=y -CONFIG_HID_PLANTRONICS=y -CONFIG_HID_PRIMAX=y -CONFIG_HID_ROCCAT=y -CONFIG_HID_SAITEK=y -CONFIG_HID_SAMSUNG=y -CONFIG_HID_SONY=y -CONFIG_HID_SPEEDLINK=y -CONFIG_HID_STEELSERIES=y -CONFIG_HID_SUNPLUS=y -CONFIG_HID_RMI=y -CONFIG_HID_GREENASIA=y -CONFIG_GREENASIA_FF=y -CONFIG_HID_SMARTJOYPLUS=y -CONFIG_SMARTJOYPLUS_FF=y -CONFIG_HID_TIVO=y -CONFIG_HID_TOPSEED=y -CONFIG_HID_THINGM=y -CONFIG_HID_THRUSTMASTER=y -CONFIG_THRUSTMASTER_FF=y -CONFIG_HID_WACOM=y -CONFIG_HID_WIIMOTE=y -CONFIG_HID_XINMO=y -CONFIG_HID_ZEROPLUS=y -CONFIG_ZEROPLUS_FF=y -CONFIG_HID_ZYDACRON=y -CONFIG_HID_SENSOR_HUB=y -CONFIG_HID_SENSOR_CUSTOM_SENSOR=y -CONFIG_HID_ALPS=y -CONFIG_USB_HIDDEV=y -CONFIG_I2C_HID_OF_GOODIX=y -CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -# CONFIG_USB_DEFAULT_PERSIST is not set -CONFIG_USB_OTG=y -CONFIG_USB_OTG_PRODUCTLIST=y -CONFIG_USB_OTG_FSM=y -CONFIG_USB_LEDS_TRIGGER_USBPORT=y -CONFIG_USB_MON=y -CONFIG_USB_XHCI_HCD=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_ROOT_HUB_TT=y -CONFIG_USB_EHCI_HCD_PLATFORM=y -CONFIG_USB_OHCI_HCD=y -# CONFIG_USB_OHCI_HCD_PCI is not set -CONFIG_USB_OHCI_HCD_PLATFORM=y -CONFIG_USB_ACM=y -CONFIG_USB_STORAGE=y -CONFIG_USB_STORAGE_REALTEK=y -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=y -CONFIG_USB_UAS=y -CONFIG_USB_DWC3=y -CONFIG_USB_DWC2=y -CONFIG_USB_SERIAL=y -CONFIG_USB_SERIAL_GENERIC=y -CONFIG_USB_SERIAL_CH341=y -CONFIG_USB_SERIAL_CP210X=y -CONFIG_USB_SERIAL_FTDI_SIO=y -CONFIG_USB_SERIAL_KEYSPAN=y -CONFIG_USB_SERIAL_PL2303=y -CONFIG_USB_SERIAL_OTI6858=y -CONFIG_USB_SERIAL_QUALCOMM=y -CONFIG_USB_SERIAL_SIERRAWIRELESS=y -CONFIG_USB_SERIAL_OPTION=y -CONFIG_NOP_USB_XCEIV=y -CONFIG_USB_GADGET=y -CONFIG_USB_GADGET_DEBUG_FILES=y -CONFIG_USB_GADGET_VBUS_DRAW=500 -CONFIG_U_SERIAL_CONSOLE=y -CONFIG_USB_CONFIGFS=y -CONFIG_USB_CONFIGFS_ACM=y -CONFIG_USB_CONFIGFS_MASS_STORAGE=y -CONFIG_USB_CONFIGFS_F_FS=y -CONFIG_USB_CONFIGFS_F_UVC=y -CONFIG_USB_GADGETFS=m -CONFIG_USB_FUNCTIONFS=m -CONFIG_USB_MASS_STORAGE=m -CONFIG_USB_G_SERIAL=m -CONFIG_TYPEC=y -CONFIG_TYPEC_TCPM=y -CONFIG_TYPEC_FUSB302=y -CONFIG_TYPEC_DP_ALTMODE=y -CONFIG_MMC=y -CONFIG_MMC_BLOCK_MINORS=32 -CONFIG_MMC_TEST=y -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_PLTFM=y -CONFIG_MMC_SDHCI_OF_DWCMSHC=y -CONFIG_MMC_DW=y -CONFIG_MMC_DW_ROCKCHIP=y -CONFIG_MMC_HSQ=y -CONFIG_LEDS_GPIO=y -CONFIG_LEDS_PWM=y -CONFIG_LEDS_IS31FL32XX=y -CONFIG_LEDS_SYSCON=y -CONFIG_LEDS_TRIGGER_TIMER=y -CONFIG_LEDS_TRIGGER_ONESHOT=y -CONFIG_LEDS_TRIGGER_DISK=y -CONFIG_LEDS_TRIGGER_HEARTBEAT=y -CONFIG_LEDS_TRIGGER_BACKLIGHT=y -CONFIG_LEDS_TRIGGER_CPU=y -CONFIG_LEDS_TRIGGER_DEFAULT_ON=y -CONFIG_RTC_CLASS=y -# CONFIG_RTC_SYSTOHC is not set -# CONFIG_RTC_INTF_PROC is not set -# CONFIG_RTC_INTF_DEV is not set -CONFIG_RTC_DRV_HYM8563=y -CONFIG_RTC_DRV_RK808=y -CONFIG_DMADEVICES=y -CONFIG_PL330_DMA=y -CONFIG_UDMABUF=y -CONFIG_DMABUF_HEAPS=y -CONFIG_DMABUF_HEAPS_SYSTEM=y -# CONFIG_VIRTIO_MENU is not set -# CONFIG_VHOST_MENU is not set -CONFIG_STAGING=y -CONFIG_RTL8723BS=m -CONFIG_R8712U=m -CONFIG_STAGING_MEDIA=y -CONFIG_VIDEO_ROCKCHIP_VDEC=y -CONFIG_CHROME_PLATFORMS=y -# CONFIG_SURFACE_PLATFORMS is not set -CONFIG_COMMON_CLK_RK808=y -CONFIG_COMMON_CLK_SCMI=y -CONFIG_COMMON_CLK_SCPI=y -CONFIG_COMMON_CLK_XGENE=y -CONFIG_COMMON_CLK_PWM=y -CONFIG_COMMON_CLK_FIXED_MMIO=y -# CONFIG_CLK_RK3308 is not set -# CONFIG_CLK_RK3328 is not set -# CONFIG_CLK_RK3368 is not set -# CONFIG_CLK_RK3399 is not set -# CONFIG_FSL_ERRATUM_A008585 is not set -# CONFIG_HISILICON_ERRATUM_161010101 is not set -# CONFIG_ARM64_ERRATUM_858921 is not set -CONFIG_MAILBOX=y -CONFIG_ARM_MHU=y -CONFIG_PLATFORM_MHU=y -CONFIG_ROCKCHIP_MBOX=y -CONFIG_ROCKCHIP_IOMMU=y -CONFIG_ARM_SMMU=y -CONFIG_ARM_SMMU_V3=y -CONFIG_ROCKCHIP_IODOMAIN=y -CONFIG_ROCKCHIP_PM_DOMAINS=y -CONFIG_DEVFREQ_GOV_PERFORMANCE=y -CONFIG_DEVFREQ_GOV_POWERSAVE=y -CONFIG_ARM_RK3399_DMC_DEVFREQ=y -CONFIG_MEMORY=y -CONFIG_IIO=y -CONFIG_IIO_BUFFER_HW_CONSUMER=y -CONFIG_IIO_SW_DEVICE=y -CONFIG_IIO_SW_TRIGGER=y -CONFIG_IIO_TRIGGERED_EVENT=y -CONFIG_ROCKCHIP_SARADC=y -CONFIG_SENSORS_ISL29018=y -CONFIG_SENSORS_TSL2563=y -CONFIG_TSL2583=y -CONFIG_IIO_MUX=y -CONFIG_IIO_HRTIMER_TRIGGER=y -CONFIG_IIO_SYSFS_TRIGGER=y -CONFIG_PWM=y -CONFIG_PWM_ROCKCHIP=y -CONFIG_PHY_ROCKCHIP_DP=y -CONFIG_PHY_ROCKCHIP_DPHY_RX0=y -CONFIG_PHY_ROCKCHIP_EMMC=y -CONFIG_PHY_ROCKCHIP_INNO_HDMI=y -CONFIG_PHY_ROCKCHIP_INNO_USB2=y -CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY=y -CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y -CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=y -CONFIG_PHY_ROCKCHIP_PCIE=y -CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y -CONFIG_PHY_ROCKCHIP_TYPEC=y -CONFIG_PHY_ROCKCHIP_USB=y -CONFIG_ARM_SMMU_V3_PMU=y -CONFIG_MUX_GPIO=y -CONFIG_MUX_MMIO=y -CONFIG_EXT4_FS=y -# CONFIG_EXT4_USE_FOR_EXT2 is not set -CONFIG_EXT4_FS_POSIX_ACL=y -CONFIG_EXT4_FS_SECURITY=y -CONFIG_XFS_FS=y -# CONFIG_DNOTIFY is not set -CONFIG_AUTOFS_FS=y -CONFIG_FUSE_FS=y -CONFIG_OVERLAY_FS=y -CONFIG_FSCACHE=y -CONFIG_ISO9660_FS=y -CONFIG_JOLIET=y -CONFIG_ZISOFS=y -CONFIG_MSDOS_FS=y -CONFIG_VFAT_FS=y -CONFIG_FAT_DEFAULT_IOCHARSET="ascii" -CONFIG_EXFAT_FS=y -CONFIG_TMPFS=y -CONFIG_TMPFS_POSIX_ACL=y -CONFIG_SQUASHFS=y -CONFIG_SQUASHFS_LZ4=y -CONFIG_SQUASHFS_LZO=y -CONFIG_SQUASHFS_XZ=y -CONFIG_SQUASHFS_ZSTD=y -CONFIG_PSTORE=y -CONFIG_NLS_DEFAULT="utf-8" -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_ASCII=y -CONFIG_NLS_ISO8859_1=y -CONFIG_NLS_UTF8=y -CONFIG_SECURITY=y -CONFIG_SECURITY_NETWORK=y -CONFIG_HARDENED_USERCOPY=y -CONFIG_STATIC_USERMODEHELPER=y -CONFIG_LSM="selinux,integrity" -CONFIG_INIT_STACK_NONE=y -CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y -CONFIG_INIT_ON_FREE_DEFAULT_ON=y -CONFIG_CRYPTO_USER=y -CONFIG_CRYPTO_PCRYPT=y -CONFIG_CRYPTO_CRYPTD=y -CONFIG_CRYPTO_ECDH=y -CONFIG_CRYPTO_TWOFISH=y -CONFIG_CRYPTO_ARC4=y -CONFIG_CRYPTO_CTS=y -CONFIG_CRYPTO_XTS=y -CONFIG_CRYPTO_CHACHA20POLY1305=y -CONFIG_CRYPTO_CCM=y -CONFIG_CRYPTO_ESSIV=y -CONFIG_CRYPTO_CMAC=y -CONFIG_CRYPTO_XCBC=y -CONFIG_CRYPTO_CRC32=y -CONFIG_CRYPTO_LZO=y -CONFIG_CRYPTO_LZ4=y -CONFIG_CRYPTO_LZ4HC=y -CONFIG_CRYPTO_ZSTD=y -CONFIG_CRYPTO_ANSI_CPRNG=y -CONFIG_CRYPTO_USER_API_HASH=y -CONFIG_CRYPTO_USER_API_SKCIPHER=y -CONFIG_CRYPTO_USER_API_RNG=y -CONFIG_CRYPTO_USER_API_AEAD=y -CONFIG_CRYPTO_STATS=y -CONFIG_CRYPTO_NHPOLY1305_NEON=y -CONFIG_CRYPTO_GHASH_ARM64_CE=y -CONFIG_CRYPTO_SHA1_ARM64_CE=y -CONFIG_CRYPTO_SHA2_ARM64_CE=y -CONFIG_CRYPTO_SHA512_ARM64_CE=y -CONFIG_CRYPTO_AES_ARM64=y -CONFIG_CRYPTO_AES_ARM64_CE_BLK=y -CONFIG_CRYPTO_AES_ARM64_BS=y -CONFIG_CRYPTO_AES_ARM64_CE_CCM=y -CONFIG_CRYPTO_DEV_ROCKCHIP=y -CONFIG_CORDIC=y -CONFIG_CRC_CCITT=y -CONFIG_CRC_T10DIF=y -CONFIG_CRC_ITU_T=y -CONFIG_CRC7=y -# CONFIG_XZ_DEC_X86 is not set -# CONFIG_XZ_DEC_POWERPC is not set -# CONFIG_XZ_DEC_SPARC is not set -CONFIG_PRINTK_TIME=y -CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7 -CONFIG_DYNAMIC_DEBUG=y -# CONFIG_SYMBOLIC_ERRNAME is not set -# CONFIG_DEBUG_MISC is not set -CONFIG_MAGIC_SYSRQ=y -CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0 -CONFIG_DEBUG_FS=y -# CONFIG_SLUB_DEBUG is not set -CONFIG_PANIC_TIMEOUT=1 -CONFIG_DETECT_HUNG_TASK=y -CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y -# CONFIG_SCHED_DEBUG is not set -CONFIG_SCHEDSTATS=y -CONFIG_DEBUG_SPINLOCK=y -CONFIG_STACKTRACE=y -CONFIG_DEBUG_CREDENTIALS=y -CONFIG_RCU_CPU_STALL_TIMEOUT=60 -CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=20 -# CONFIG_RCU_TRACE is not set -# CONFIG_FTRACE is not set -# CONFIG_STRICT_DEVMEM is not set -# CONFIG_RUNTIME_TESTING_MENU is not set diff --git a/projects/Rockchip/devices/RK3566-X55-ML/options b/projects/Rockchip/devices/RK3566-X55-ML/options deleted file mode 100644 index f8690886db..0000000000 --- a/projects/Rockchip/devices/RK3566-X55-ML/options +++ /dev/null @@ -1,161 +0,0 @@ -################################################################################ -# setup device defaults -################################################################################ - - # The TARGET_CPU variable controls which processor should be targeted for - # generated code. - case ${TARGET_ARCH} in - aarch64) - TARGET_KERNEL_ARCH="arm64" - TARGET_PATCH_ARCH="aarch64" - TARGET_CPU="cortex-a55" - TARGET_CPU_FLAGS="+crc+crypto+fp+simd" - TARGET_FPU="fp-armv8" - TARGET_FLOAT="hard" - TARGET_FEATURES="64bit" - ;; - arm) - TARGET_KERNEL_ARCH="arm64" - TARGET_PATCH_ARCH="aarch64" - TARGET_CPU="cortex-a55" - TARGET_CPU_FLAGS="+crc" - TARGET_FPU="neon-fp-armv8" - TARGET_FLOAT="hard" - TARGET_FEATURES="32bit" - ;; - esac - - # Kernel target - DEVICE_NAME="RK3566" - KERNEL_TARGET="Image" - BOOTLOADER="u-boot" - PARTITION_TABLE="gpt" - UBOOT_LABEL="uboot" - TRUST_LABEL="trust" - DEVICE_DTB=("rk3566-powkiddy-x55") - UBOOT_DTB="rk3566" - UBOOT_CONFIG="powkiddy-x55-rk3566_defconfig" - PKG_SOC="rk3568" - PKG_DATAFILE="${PKG_RKBIN}/bin/rk35/rk3568_ddr_1056MHz_v1.16.bin" - PKG_LOADER="${PKG_RKBIN}/bin/rk35/rk356x_spl_v1.12.bin" - PKG_BL31="${PKG_RKBIN}/bin/rk35/rk3568_bl31_v1.42.elf" - PKG_LOAD_ADDR="0x0a100000" - BOOT_INI=false - EXT_LINUX_CONF=true - - # Additional kernel make parameters (for example to specify the u-boot loadaddress) - KERNEL_MAKE_EXTRACMD=" $(for DTB in "${DEVICE_DTB[@]}"; do echo -n "rockchip/${DTB}.dtb "; done)" - KERNEL_EXTRA_DEPENDS_TARGET="zstd libcap libtraceevent" - - # Define the CPU - HW_CPU="Rockchip RK3566" - - # Mali GPU family - MALI_FAMILY="bifrost-g52" - # MALI_VERSION="g2p0" - # OPENGLES="libmali" - VULKAN_SUPPORT="" - - # OpenGL(X) implementation to use (mesa / no) - OPENGL="mesa" - - # OpenGL-ES implementation to use (mesa / no) - OPENGLES="mesa" - - GRAPHIC_DRIVERS="panfrost" - - # Displayserver to use (weston / x11 / no) - DISPLAYSERVER="wl" - - # Windowmanager to use (fluxbox / weston / no) - WINDOWMANAGER="weston" - - # debug tty path - DEBUG_TTY="/dev/ttyS2" - - # kernel serial console - #EXTRA_CMDLINE="quiet rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20 initcall_blacklist=uvc_init log_buf_len=1M" - EXTRA_CMDLINE="rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty1 ssh consoleblank=0 systemd.show_status=0 loglevel=8 panic=20 nopkmute" - - # additional packages to install - # ADDITIONAL_PACKAGES="" - - # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) - # Space separated list is supported, - # e.g. FIRMWARE="dvb-firmware misc-firmware wlan-firmware" - FIRMWARE="misc-firmware" - - # additional drivers to install: - # for a list of additional drivers see packages/linux-drivers - # Space separated list is supported, - # e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" - ADDITIONAL_DRIVERS="jelos-gamepad" - - # build and install driver addons (yes / no) - DRIVER_ADDONS_SUPPORT="no" - - # driver addons to install: - # for a list of additinoal drivers see packages/linux-driver-addons - # Space separated list is supported, - DRIVER_ADDONS="" #dvb-latest - - # build and install bluetooth support (yes / no) - BLUETOOTH_SUPPORT="yes" - - # build and install Avahi (Zeroconf) daemon (yes / no) - AVAHI_DAEMON="no" - - # build with NFS support (mounting nfs shares via the OS) (yes / no) - NFS_SUPPORT="no" - - # build with Samba Client support (mounting samba shares via the OS) (yes / no) - SAMBA_SUPPORT="no" - - # build and install Samba Server (yes / no) - SAMBA_SERVER="yes" - - # build and install SFTP Server (yes / no) - SFTP_SERVER="yes" - - # build and install OpenVPN support (yes / no) - OPENVPN_SUPPORT="no" - WIREGUARD_SUPPORT="no" - - # build and install ZeroTier support (yes / no) - ZEROTIER_SUPPORT="yes" - - # build and install diskmounter support (udevil) - # this service provide auto mounting support for external drives in the - # mediacenter also automount internally drives at boottime via udev (yes / no) - UDEVIL="yes" - - # build and install exFAT fuse support (yes / no) - EXFAT="yes" - - # build and install NTFS-3G fuse support (yes / no) - NTFS3G="no" - - # build and install hfs filesystem utilities (yes / no) - HFSTOOLS="no" - - # Support for partitioning and formating disks in initramfs (yes / no) - # This adds support for parted and mkfs.ext3/4 to initramfs for OEM usage - INITRAMFS_PARTED_SUPPORT="no" - - # build with swap support (yes / no) - SWAP_SUPPORT="yes" - - # swap support enabled per default (yes / no) - SWAP_ENABLED_DEFAULT="yes" - - # swapfile size if SWAP_SUPPORT=yes in MB - SWAPFILESIZE="384" - - # cron support (yes / no) - CRON_SUPPORT="no" - - # Settings package name - blank if not required - DISTRO_PKG_SETTINGS="" - - # htop tool (yes / no) - HTOP_TOOL="yes" diff --git a/projects/Rockchip/devices/RK3566-X55/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3566-X55/linux/linux.aarch64.conf index b734999e09..721676b7f8 100644 --- a/projects/Rockchip/devices/RK3566-X55/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3566-X55/linux/linux.aarch64.conf @@ -1,1018 +1,273 @@ -# -# Automatically generated file; DO NOT EDIT. -# Linux/arm64 4.19.172 Kernel Configuration -# - -# -# Compiler: aarch64-libreelec-linux-gnueabi-gcc-10.3.0 (GCC) 10.3.0 -# -CONFIG_CC_IS_GCC=y -CONFIG_GCC_VERSION=100300 -CONFIG_CLANG_VERSION=0 -CONFIG_CC_HAS_ASM_GOTO=y -CONFIG_IRQ_WORK=y -CONFIG_BUILDTIME_EXTABLE_SORT=y -CONFIG_THREAD_INFO_IN_TASK=y - -# -# General setup -# -CONFIG_INIT_ENV_ARG_LIMIT=32 -# CONFIG_COMPILE_TEST is not set -CONFIG_LOCALVERSION="" # CONFIG_LOCALVERSION_AUTO is not set -CONFIG_BUILD_SALT="" -CONFIG_HAVE_KERNEL_GZIP=y -CONFIG_HAVE_KERNEL_LZ4=y -CONFIG_KERNEL_GZIP=y -# CONFIG_KERNEL_LZ4 is not set CONFIG_DEFAULT_HOSTNAME="@DEVICENAME@" -CONFIG_SWAP=y CONFIG_SYSVIPC=y -CONFIG_SYSVIPC_SYSCTL=y -# CONFIG_POSIX_MQUEUE is not set -CONFIG_CROSS_MEMORY_ATTACH=y -# CONFIG_USELIB is not set -# CONFIG_AUDIT is not set -CONFIG_HAVE_ARCH_AUDITSYSCALL=y - -# -# IRQ subsystem -# -CONFIG_GENERIC_IRQ_PROBE=y -CONFIG_GENERIC_IRQ_SHOW=y -CONFIG_GENERIC_IRQ_SHOW_LEVEL=y -CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y -CONFIG_GENERIC_IRQ_MIGRATION=y -CONFIG_HARDIRQS_SW_RESEND=y -CONFIG_GENERIC_IRQ_CHIP=y -CONFIG_IRQ_DOMAIN=y -CONFIG_IRQ_DOMAIN_HIERARCHY=y -CONFIG_GENERIC_MSI_IRQ=y -CONFIG_GENERIC_MSI_IRQ_DOMAIN=y -CONFIG_HANDLE_DOMAIN_IRQ=y -CONFIG_IRQ_FORCED_THREADING=y -CONFIG_SPARSE_IRQ=y -# CONFIG_GENERIC_IRQ_DEBUGFS is not set -CONFIG_GENERIC_IRQ_MULTI_HANDLER=y -CONFIG_ARCH_CLOCKSOURCE_DATA=y -CONFIG_GENERIC_TIME_VSYSCALL=y -CONFIG_GENERIC_CLOCKEVENTS=y -CONFIG_ARCH_HAS_TICK_BROADCAST=y -CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y - -# -# Timers subsystem -# -CONFIG_TICK_ONESHOT=y -CONFIG_NO_HZ_COMMON=y -# CONFIG_HZ_PERIODIC is not set +CONFIG_POSIX_MQUEUE=y +CONFIG_WATCH_QUEUE=y +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_USELIB=y CONFIG_NO_HZ_IDLE=y -# CONFIG_NO_HZ_FULL is not set -CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y -# CONFIG_PREEMPT_NONE is not set -CONFIG_PREEMPT_VOLUNTARY=y -# CONFIG_PREEMPT is not set - -# -# CPU/Task time and stats accounting -# -CONFIG_TICK_CPU_ACCOUNTING=y -# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set -# CONFIG_IRQ_TIME_ACCOUNTING is not set -# CONFIG_BSD_PROCESS_ACCT is not set -# CONFIG_TASKSTATS is not set -# CONFIG_PSI is not set -CONFIG_CPU_ISOLATION=y - -# -# RCU Subsystem -# -CONFIG_TREE_RCU=y -# CONFIG_RCU_EXPERT is not set -CONFIG_SRCU=y -CONFIG_TREE_SRCU=y -CONFIG_RCU_STALL_COMMON=y -CONFIG_RCU_NEED_SEGCBLIST=y -CONFIG_BUILD_BIN2C=y +CONFIG_BPF_SYSCALL=y +CONFIG_BPF_JIT=y +CONFIG_BPF_JIT_ALWAYS_ON=y +# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set +CONFIG_PREEMPT=y +CONFIG_IRQ_TIME_ACCOUNTING=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y -# CONFIG_IKHEADERS is not set CONFIG_LOG_BUF_SHIFT=18 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 -CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 -CONFIG_GENERIC_SCHED_CLOCK=y - -# -# Scheduler features -# -CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y -CONFIG_ARCH_SUPPORTS_INT128=y -CONFIG_CGROUPS=y -# CONFIG_MEMCG is not set +CONFIG_MEMCG=y CONFIG_BLK_CGROUP=y -# CONFIG_DEBUG_BLK_CGROUP is not set -CONFIG_CGROUP_SCHED=y -CONFIG_FAIR_GROUP_SCHED=y CONFIG_CFS_BANDWIDTH=y -# CONFIG_RT_GROUP_SCHED is not set -# CONFIG_CGROUP_PIDS is not set -# CONFIG_CGROUP_RDMA is not set +CONFIG_RT_GROUP_SCHED=y +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_RDMA=y CONFIG_CGROUP_FREEZER=y CONFIG_CPUSETS=y -CONFIG_PROC_PID_CPUSET=y CONFIG_CGROUP_DEVICE=y CONFIG_CGROUP_CPUACCT=y -# CONFIG_CGROUP_DEBUG is not set -CONFIG_SOCK_CGROUP_DATA=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_BPF=y CONFIG_NAMESPACES=y -CONFIG_UTS_NS=y -CONFIG_IPC_NS=y -CONFIG_USER_NS=y -CONFIG_PID_NS=y -CONFIG_NET_NS=y -# CONFIG_CHECKPOINT_RESTORE is not set -# CONFIG_SCHED_AUTOGROUP is not set -# CONFIG_SCHED_TUNE is not set -# CONFIG_SYSFS_DEPRECATED is not set +CONFIG_SCHED_AUTOGROUP=y CONFIG_RELAY=y -CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="" -CONFIG_INITRAMFS_ROOT_UID=0 -CONFIG_INITRAMFS_ROOT_GID=0 -CONFIG_RD_GZIP=y -CONFIG_RD_BZIP2=y -CONFIG_RD_LZMA=y -CONFIG_RD_XZ=y -CONFIG_RD_LZO=y -CONFIG_RD_LZ4=y -CONFIG_INITRAMFS_COMPRESSION=".gz" -# CONFIG_INITRD_ASYNC is not set -# CONFIG_ROCKCHIP_ONE_INITRD is not set -CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y -# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set -CONFIG_SYSCTL=y -CONFIG_HAVE_UID16=y -CONFIG_SYSCTL_EXCEPTION_TRACE=y -CONFIG_BPF=y +CONFIG_INITRAMFS_SOURCE="@INITRAMFS_SOURCE@" +CONFIG_INITRAMFS_COMPRESSION_LZO=y +CONFIG_BOOT_CONFIG=y +CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_EXPERT=y -CONFIG_UID16=y -CONFIG_MULTIUSER=y -# CONFIG_SGETMASK_SYSCALL is not set -CONFIG_SYSFS_SYSCALL=y -# CONFIG_SYSCTL_SYSCALL is not set -CONFIG_FHANDLE=y -CONFIG_POSIX_TIMERS=y -CONFIG_PRINTK=y -CONFIG_PRINTK_NMI=y -CONFIG_BUG=y -CONFIG_ELF_CORE=y -CONFIG_BASE_FULL=y -CONFIG_FUTEX=y -CONFIG_FUTEX_PI=y -CONFIG_EPOLL=y -CONFIG_SIGNALFD=y -CONFIG_TIMERFD=y -CONFIG_EVENTFD=y -CONFIG_SHMEM=y -CONFIG_AIO=y -CONFIG_ADVISE_SYSCALLS=y -CONFIG_MEMBARRIER=y -CONFIG_KALLSYMS=y -# CONFIG_KALLSYMS_ALL is not set -CONFIG_KALLSYMS_BASE_RELATIVE=y -# CONFIG_BPF_SYSCALL is not set -# CONFIG_USERFAULTFD is not set -CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y -CONFIG_RSEQ=y -# CONFIG_DEBUG_RSEQ is not set -CONFIG_EMBEDDED=y -CONFIG_HAVE_PERF_EVENTS=y -# CONFIG_PC104 is not set - -# -# Kernel Performance Events And Counters -# -# CONFIG_PERF_EVENTS is not set -CONFIG_VM_EVENT_COUNTERS=y -CONFIG_SLUB_SYSFS=y -CONFIG_SLUB_DEBUG=y -# CONFIG_COMPAT_BRK is not set -# CONFIG_SLAB is not set -CONFIG_SLUB=y -# CONFIG_SLOB is not set -CONFIG_SLAB_MERGE_DEFAULT=y -# CONFIG_SLAB_FREELIST_RANDOM is not set -# CONFIG_SLAB_FREELIST_HARDENED is not set -CONFIG_SLUB_CPU_PARTIAL=y -CONFIG_SYSTEM_DATA_VERIFICATION=y +CONFIG_SGETMASK_SYSCALL=y +CONFIG_KALLSYMS_ALL=y CONFIG_PROFILING=y -CONFIG_TRACEPOINTS=y -CONFIG_ARM64=y -CONFIG_64BIT=y -CONFIG_MMU=y -CONFIG_ARM64_PAGE_SHIFT=12 -CONFIG_ARM64_CONT_SHIFT=4 -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_STACKTRACE_SUPPORT=y -CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 -CONFIG_LOCKDEP_SUPPORT=y -CONFIG_TRACE_IRQFLAGS_SUPPORT=y -CONFIG_RWSEM_XCHGADD_ALGORITHM=y -CONFIG_GENERIC_BUG=y -CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y -CONFIG_GENERIC_HWEIGHT=y -CONFIG_GENERIC_CSUM=y -CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_ZONE_DMA32=y -CONFIG_HAVE_GENERIC_GUP=y -CONFIG_SMP=y -CONFIG_KERNEL_MODE_NEON=y -CONFIG_FIX_EARLYCON_MEM=y -CONFIG_PGTABLE_LEVELS=3 -CONFIG_ARCH_SUPPORTS_UPROBES=y -CONFIG_ARCH_PROC_KCORE_TEXT=y - -# -# Platform selection -# -# CONFIG_ARCH_ACTIONS is not set -# CONFIG_ARCH_SUNXI is not set -# CONFIG_ARCH_ALPINE is not set -# CONFIG_ARCH_BCM2835 is not set -# CONFIG_ARCH_BCM_IPROC is not set -# CONFIG_ARCH_BERLIN is not set -# CONFIG_ARCH_BRCMSTB is not set -# CONFIG_ARCH_EXYNOS is not set -# CONFIG_ARCH_K3 is not set -# CONFIG_ARCH_LAYERSCAPE is not set -# CONFIG_ARCH_LG1K is not set -# CONFIG_ARCH_HISI is not set -# CONFIG_ARCH_MEDIATEK is not set -# CONFIG_ARCH_MESON is not set -# CONFIG_ARCH_MVEBU is not set -# CONFIG_ARCH_QCOM is not set -# CONFIG_ARCH_REALTEK is not set CONFIG_ARCH_ROCKCHIP=y -# CONFIG_ARCH_SEATTLE is not set -# CONFIG_ARCH_SYNQUACER is not set -# CONFIG_ARCH_RENESAS is not set -# CONFIG_ARCH_STRATIX10 is not set -# CONFIG_ARCH_TEGRA is not set -# CONFIG_ARCH_SPRD is not set -# CONFIG_ARCH_THUNDER is not set -# CONFIG_ARCH_THUNDER2 is not set -# CONFIG_ARCH_UNIPHIER is not set -# CONFIG_ARCH_VEXPRESS is not set -# CONFIG_ARCH_XGENE is not set -# CONFIG_ARCH_ZX is not set -# CONFIG_ARCH_ZYNQMP is not set - -# -# Bus support -# -CONFIG_PCI=y -CONFIG_PCI_DOMAINS=y -CONFIG_PCI_DOMAINS_GENERIC=y -CONFIG_PCI_SYSCALL=y -CONFIG_PCIEPORTBUS=y -CONFIG_PCIEAER=y -# CONFIG_PCIEAER_INJECT is not set -# CONFIG_PCIE_ECRC is not set -CONFIG_PCIEASPM=y -# CONFIG_PCIEASPM_DEBUG is not set -CONFIG_PCIEASPM_DEFAULT=y -# CONFIG_PCIEASPM_POWERSAVE is not set -# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set -# CONFIG_PCIEASPM_PERFORMANCE is not set -CONFIG_PCIE_PME=y -# CONFIG_PCIE_DPC is not set -# CONFIG_PCIE_PTM is not set -CONFIG_PCI_MSI=y -CONFIG_PCI_MSI_IRQ_DOMAIN=y -CONFIG_PCI_QUIRKS=y -# CONFIG_PCI_DEBUG is not set -# CONFIG_PCI_STUB is not set -# CONFIG_PCI_IOV is not set -# CONFIG_PCI_PRI is not set -# CONFIG_PCI_PASID is not set -# CONFIG_HOTPLUG_PCI is not set - -# -# PCI controller drivers -# - -# -# Cadence PCIe controllers support -# -# CONFIG_PCIE_CADENCE_HOST is not set -# CONFIG_PCI_FTPCI100 is not set -# CONFIG_PCI_HOST_GENERIC is not set -# CONFIG_PCIE_XILINX is not set -# CONFIG_PCI_XGENE is not set -# CONFIG_PCI_HOST_THUNDER_PEM is not set -# CONFIG_PCI_HOST_THUNDER_ECAM is not set -# CONFIG_PCIE_ROCKCHIP_HOST is not set -# CONFIG_ROCKCHIP_PCIE_DMA_OBJ is not set - -# -# DesignWare PCI Core Support -# -CONFIG_PCIE_DW=y -CONFIG_PCIE_DW_HOST=y -# CONFIG_PCIE_DW_PLAT_HOST is not set -CONFIG_PCIE_DW_ROCKCHIP=y -# CONFIG_PCI_HISI is not set -# CONFIG_PCIE_KIRIN is not set - -# -# PCI Endpoint -# -# CONFIG_PCI_ENDPOINT is not set - -# -# PCI switch controller drivers -# -# CONFIG_PCI_SW_SWITCHTEC is not set - -# -# Kernel Features -# - -# -# ARM errata workarounds via the alternatives framework -# -# CONFIG_ARM64_ERRATUM_826319 is not set -# CONFIG_ARM64_ERRATUM_827319 is not set -# CONFIG_ARM64_ERRATUM_824069 is not set -# CONFIG_ARM64_ERRATUM_819472 is not set -# CONFIG_ARM64_ERRATUM_832075 is not set -CONFIG_ARM64_ERRATUM_845719=y -CONFIG_ARM64_ERRATUM_843419=y -CONFIG_ARM64_ERRATUM_1024718=y -CONFIG_ARM64_ERRATUM_1463225=y -CONFIG_ARM64_ERRATUM_1542419=y # CONFIG_CAVIUM_ERRATUM_22375 is not set # CONFIG_CAVIUM_ERRATUM_23154 is not set -CONFIG_CAVIUM_ERRATUM_27456=y -CONFIG_CAVIUM_ERRATUM_30115=y -CONFIG_QCOM_FALKOR_ERRATUM_1003=y -CONFIG_QCOM_FALKOR_ERRATUM_1009=y -CONFIG_QCOM_QDF2400_ERRATUM_0065=y -CONFIG_SOCIONEXT_SYNQUACER_PREITS=y -CONFIG_HISILICON_ERRATUM_161600802=y -CONFIG_QCOM_FALKOR_ERRATUM_E1041=y -CONFIG_ARM64_4K_PAGES=y -# CONFIG_ARM64_16K_PAGES is not set -# 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_PA_BITS_48=y -CONFIG_ARM64_PA_BITS=48 -# CONFIG_CPU_BIG_ENDIAN is not set +# CONFIG_CAVIUM_ERRATUM_27456 is not set +# CONFIG_CAVIUM_ERRATUM_30115 is not set +# CONFIG_CAVIUM_TX2_ERRATUM_219 is not set +# CONFIG_FUJITSU_ERRATUM_010001 is not set +# CONFIG_HISILICON_ERRATUM_161600802 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_1003 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_1009 is not set +# CONFIG_QCOM_QDF2400_ERRATUM_0065 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_E1041 is not set +# CONFIG_NVIDIA_CARMEL_CNP_ERRATUM is not set +# CONFIG_SOCIONEXT_SYNQUACER_PREITS is not set CONFIG_SCHED_MC=y -# CONFIG_SCHED_SMT is not set -CONFIG_NR_CPUS=8 -CONFIG_HOTPLUG_CPU=y -CONFIG_ARCH_NR_GPIO=256 -# CONFIG_NUMA is not set -CONFIG_HOLES_IN_ZONE=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_SUPPORTS_DEBUG_PAGEALLOC=y -CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y -CONFIG_ARCH_SPARSEMEM_ENABLE=y -CONFIG_ARCH_SPARSEMEM_DEFAULT=y -CONFIG_ARCH_SELECT_MEMORY_MODEL=y -CONFIG_ARCH_FLATMEM_ENABLE=y -CONFIG_HAVE_ARCH_PFN_VALID=y -CONFIG_SYS_SUPPORTS_HUGETLBFS=y -CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y -CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y -# CONFIG_ARM64_DMA_USE_IOMMU is not set -CONFIG_SECCOMP=y -# CONFIG_PARAVIRT is not set -# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set -# CONFIG_KEXEC is not set -# CONFIG_CRASH_DUMP is not set -# CONFIG_XEN is not set -CONFIG_FORCE_MAX_ZONEORDER=11 -CONFIG_UNMAP_KERNEL_AT_EL0=y -CONFIG_HARDEN_BRANCH_PREDICTOR=y -CONFIG_HARDEN_EL2_VECTORS=y -CONFIG_ARM64_SSBD=y -CONFIG_ARM64_TAGGED_ADDR_ABI=y +CONFIG_SCHED_SMT=y +CONFIG_NR_CPUS=4 +CONFIG_ARM64_SW_TTBR0_PAN=y +CONFIG_COMPAT=y CONFIG_ARMV8_DEPRECATED=y -CONFIG_SWP_EMULATION=y -CONFIG_CP15_BARRIER_EMULATION=y -CONFIG_SETEND_EMULATION=y -# CONFIG_ARM64_SW_TTBR0_PAN is not set - -# -# ARMv8.1 architectural features -# -CONFIG_ARM64_HW_AFDBM=y -CONFIG_ARM64_PAN=y -CONFIG_ARM64_LSE_ATOMICS=y -CONFIG_ARM64_VHE=y - -# -# ARMv8.2 architectural features -# -CONFIG_ARM64_UAO=y -# CONFIG_ARM64_PMEM is not set -CONFIG_ARM64_RAS_EXTN=y -CONFIG_ARM64_SVE=y -CONFIG_ARM64_MODULE_PLTS=y -# CONFIG_RANDOMIZE_BASE is not set - -# -# Boot options -# -CONFIG_CMDLINE="" +CONFIG_ARM64_PMEM=y +# CONFIG_ARM64_BTI is not set +CONFIG_RANDOMIZE_BASE=y # CONFIG_EFI is not set -CONFIG_COMPAT=y -CONFIG_KUSER_HELPERS=y -CONFIG_SYSVIPC_COMPAT=y - -# -# Power management options -# -CONFIG_SUSPEND=y -CONFIG_SUSPEND_FREEZER=y -# CONFIG_SUSPEND_SKIP_SYNC is not set -CONFIG_HAS_WAKELOCK=y -CONFIG_WAKELOCK=y -# CONFIG_HIBERNATION is not set -CONFIG_PM_SLEEP=y -CONFIG_PM_SLEEP_SMP=y -# CONFIG_PM_AUTOSLEEP is not set -# CONFIG_PM_WAKELOCKS is not set -CONFIG_PM=y -CONFIG_PM_DEBUG=y -CONFIG_PM_ADVANCED_DEBUG=y -# CONFIG_PM_TEST_SUSPEND is not set -CONFIG_PM_SLEEP_DEBUG=y -# CONFIG_DPM_WATCHDOG is not set -CONFIG_PM_CLK=y -CONFIG_PM_GENERIC_DOMAINS=y +CONFIG_SUSPEND_SKIP_SYNC=y +CONFIG_PM_AUTOSLEEP=y CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y -CONFIG_PM_GENERIC_DOMAINS_SLEEP=y -CONFIG_PM_GENERIC_DOMAINS_OF=y -CONFIG_CPU_PM=y CONFIG_ENERGY_MODEL=y -CONFIG_ARCH_HIBERNATION_POSSIBLE=y -CONFIG_ARCH_SUSPEND_POSSIBLE=y - -# -# CPU Power Management -# - -# -# CPU Idle -# CONFIG_CPU_IDLE=y -CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y -# CONFIG_CPU_IDLE_GOV_LADDER is not set -CONFIG_CPU_IDLE_GOV_MENU=y -CONFIG_DT_IDLE_STATES=y - -# -# ARM CPU Idle Drivers -# -CONFIG_ARM_CPUIDLE=y - -# -# CPU Frequency scaling -# +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_ARM_PSCI_CPUIDLE=y CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_GOV_ATTR_SET=y -CONFIG_CPU_FREQ_GOV_COMMON=y -# CONFIG_CPU_FREQ_STAT is not set -# CONFIG_CPU_FREQ_TIMES is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set -CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y -# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set -CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_STAT=y CONFIG_CPU_FREQ_GOV_POWERSAVE=y -CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y -CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y -CONFIG_CPU_FREQ_GOV_INTERACTIVE=y - -# -# CPU frequency scaling drivers -# CONFIG_CPUFREQ_DT=y -CONFIG_CPUFREQ_DT_PLATDEV=y -# CONFIG_CPUFREQ_DUMMY is not set -# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set -CONFIG_ARM_ROCKCHIP_CPUFREQ=y -# CONFIG_ARM_SCMI_CPUFREQ is not set -# CONFIG_QORIQ_CPUFREQ is not set - -# -# Firmware Drivers -# -CONFIG_ARM_PSCI_FW=y -# CONFIG_ARM_PSCI_CHECKER is not set -CONFIG_ARM_SCMI_PROTOCOL=y -CONFIG_ARM_SCMI_POWER_DOMAIN=y -# CONFIG_ARM_SCPI_PROTOCOL is not set -# CONFIG_ARM_SDE_INTERFACE is not set -# CONFIG_FIRMWARE_MEMMAP is not set -# CONFIG_FW_CFG_SYSFS is not set -CONFIG_ROCKCHIP_SIP=y -CONFIG_HAVE_ARM_SMCCC=y -# CONFIG_GOOGLE_FIRMWARE is not set - -# -# Tegra firmware driver -# -# CONFIG_VIRTUALIZATION is not set -CONFIG_ARM64_CRYPTO=y -CONFIG_CRYPTO_SHA256_ARM64=y -# CONFIG_CRYPTO_SHA512_ARM64 is not set -CONFIG_CRYPTO_SHA1_ARM64_CE=y -CONFIG_CRYPTO_SHA2_ARM64_CE=y -# CONFIG_CRYPTO_SHA512_ARM64_CE is not set -# CONFIG_CRYPTO_SHA3_ARM64 is not set -# CONFIG_CRYPTO_SM3_ARM64_CE is not set -# CONFIG_CRYPTO_SM4_ARM64_CE is not set -CONFIG_CRYPTO_GHASH_ARM64_CE=y -# CONFIG_CRYPTO_CRCT10DIF_ARM64_CE is not set -# CONFIG_CRYPTO_CRC32_ARM64_CE is not set -CONFIG_CRYPTO_AES_ARM64=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 is not set -# CONFIG_CRYPTO_CHACHA20_NEON is not set -# CONFIG_CRYPTO_POLY1305_NEON is not set -# CONFIG_CRYPTO_AES_ARM64_BS is not set - -# -# General architecture-dependent options -# -# CONFIG_KPROBES is not set -# CONFIG_JUMP_LABEL is not set -CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y -CONFIG_HAVE_KPROBES=y -CONFIG_HAVE_KRETPROBES=y -CONFIG_HAVE_NMI=y -CONFIG_HAVE_ARCH_TRACEHOOK=y -CONFIG_HAVE_DMA_CONTIGUOUS=y -CONFIG_GENERIC_SMP_IDLE_THREAD=y -CONFIG_GENERIC_IDLE_POLL_SETUP=y -CONFIG_ARCH_HAS_FORTIFY_SOURCE=y -CONFIG_ARCH_HAS_SET_MEMORY=y -CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y -CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y -CONFIG_HAVE_RSEQ=y -CONFIG_HAVE_CLK=y -CONFIG_HAVE_PERF_REGS=y -CONFIG_HAVE_PERF_USER_STACK_DUMP=y -CONFIG_HAVE_ARCH_JUMP_LABEL=y -CONFIG_HAVE_RCU_TABLE_FREE=y -CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y -CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y -CONFIG_HAVE_CMPXCHG_LOCAL=y -CONFIG_HAVE_CMPXCHG_DOUBLE=y -CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y -CONFIG_HAVE_ARCH_SECCOMP_FILTER=y -CONFIG_SECCOMP_FILTER=y -CONFIG_HAVE_STACKPROTECTOR=y -CONFIG_CC_HAS_STACKPROTECTOR_NONE=y -CONFIG_STACKPROTECTOR=y -CONFIG_STACKPROTECTOR_STRONG=y -CONFIG_ARCH_SUPPORTS_LTO_CLANG=y -CONFIG_ARCH_SUPPORTS_THINLTO=y -CONFIG_LTO_NONE=y -CONFIG_HAVE_CONTEXT_TRACKING=y -CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y -CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y -CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y -CONFIG_HAVE_ARCH_HUGE_VMAP=y -CONFIG_HAVE_MOD_ARCH_SPECIFIC=y -CONFIG_MODULES_USE_ELF_RELA=y -CONFIG_ARCH_HAS_ELF_RANDOMIZE=y -CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_ARM_SCMI_CPUFREQ=y CONFIG_ARCH_MMAP_RND_BITS=18 -CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 -CONFIG_CLONE_BACKWARDS=y -CONFIG_OLD_SIGSUSPEND3=y -CONFIG_COMPAT_OLD_SIGACTION=y -CONFIG_COMPAT_32BIT_TIME=y -CONFIG_HAVE_ARCH_VMAP_STACK=y -CONFIG_VMAP_STACK=y -CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y -CONFIG_STRICT_KERNEL_RWX=y -CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y -CONFIG_STRICT_MODULE_RWX=y -CONFIG_REFCOUNT_FULL=y -CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y - -# -# GCOV-based kernel profiling -# -# CONFIG_GCOV_KERNEL is not set -CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y -CONFIG_PLUGIN_HOSTCC="" -CONFIG_HAVE_GCC_PLUGINS=y -CONFIG_RT_MUTEXES=y -CONFIG_BASE_SMALL=0 +# CONFIG_GCC_PLUGINS is not set CONFIG_MODULES=y CONFIG_MODULE_FORCE_LOAD=y CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y -# CONFIG_MODVERSIONS is not set -# CONFIG_MODULE_SRCVERSION_ALL is not set -# CONFIG_MODULE_SIG is not set -# CONFIG_MODULE_COMPRESS is not set -# CONFIG_TRIM_UNUSED_KSYMS is not set -CONFIG_MODULES_TREE_LOOKUP=y -CONFIG_BLOCK=y -CONFIG_BLK_SCSI_REQUEST=y -CONFIG_BLK_DEV_BSG=y -# CONFIG_BLK_DEV_BSGLIB is not set -# CONFIG_BLK_DEV_INTEGRITY is not set -# CONFIG_BLK_DEV_ZONED is not set -# CONFIG_BLK_DEV_THROTTLING is not set -# CONFIG_BLK_CMDLINE_PARSER is not set -# CONFIG_BLK_WBT is not set -# CONFIG_BLK_CGROUP_IOLATENCY is not set -CONFIG_BLK_DEBUG_FS=y -# CONFIG_BLK_SED_OPAL is not set -# CONFIG_BLK_INLINE_ENCRYPTION is not set - -# -# Partition Types -# CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_AIX_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_MINIX_SUBPARTITION is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_KARMA_PARTITION is not set -CONFIG_EFI_PARTITION=y -# CONFIG_SYSV68_PARTITION is not set -# CONFIG_CMDLINE_PARTITION is not set -CONFIG_BLOCK_COMPAT=y -CONFIG_BLK_MQ_PCI=y - -# -# IO Schedulers -# -CONFIG_IOSCHED_NOOP=y -CONFIG_IOSCHED_DEADLINE=y -CONFIG_IOSCHED_CFQ=y -# CONFIG_CFQ_GROUP_IOSCHED is not set -# CONFIG_DEFAULT_DEADLINE is not set -CONFIG_DEFAULT_CFQ=y -# CONFIG_DEFAULT_NOOP is not set -CONFIG_DEFAULT_IOSCHED="cfq" -CONFIG_MQ_IOSCHED_DEADLINE=y -CONFIG_MQ_IOSCHED_KYBER=y +CONFIG_MAC_PARTITION=y +# CONFIG_MQ_IOSCHED_KYBER is not set # CONFIG_IOSCHED_BFQ is not set -CONFIG_ASN1=y -CONFIG_ARCH_INLINE_SPIN_TRYLOCK=y -CONFIG_ARCH_INLINE_SPIN_TRYLOCK_BH=y -CONFIG_ARCH_INLINE_SPIN_LOCK=y -CONFIG_ARCH_INLINE_SPIN_LOCK_BH=y -CONFIG_ARCH_INLINE_SPIN_LOCK_IRQ=y -CONFIG_ARCH_INLINE_SPIN_LOCK_IRQSAVE=y -CONFIG_ARCH_INLINE_SPIN_UNLOCK=y -CONFIG_ARCH_INLINE_SPIN_UNLOCK_BH=y -CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQ=y -CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE=y -CONFIG_ARCH_INLINE_READ_LOCK=y -CONFIG_ARCH_INLINE_READ_LOCK_BH=y -CONFIG_ARCH_INLINE_READ_LOCK_IRQ=y -CONFIG_ARCH_INLINE_READ_LOCK_IRQSAVE=y -CONFIG_ARCH_INLINE_READ_UNLOCK=y -CONFIG_ARCH_INLINE_READ_UNLOCK_BH=y -CONFIG_ARCH_INLINE_READ_UNLOCK_IRQ=y -CONFIG_ARCH_INLINE_READ_UNLOCK_IRQRESTORE=y -CONFIG_ARCH_INLINE_WRITE_LOCK=y -CONFIG_ARCH_INLINE_WRITE_LOCK_BH=y -CONFIG_ARCH_INLINE_WRITE_LOCK_IRQ=y -CONFIG_ARCH_INLINE_WRITE_LOCK_IRQSAVE=y -CONFIG_ARCH_INLINE_WRITE_UNLOCK=y -CONFIG_ARCH_INLINE_WRITE_UNLOCK_BH=y -CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQ=y -CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE=y -CONFIG_UNINLINE_SPIN_UNLOCK=y -CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y -CONFIG_MUTEX_SPIN_ON_OWNER=y -CONFIG_RWSEM_SPIN_ON_OWNER=y -CONFIG_LOCK_SPIN_ON_OWNER=y -CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y -CONFIG_QUEUED_SPINLOCKS=y -CONFIG_ARCH_USE_QUEUED_RWLOCKS=y -CONFIG_QUEUED_RWLOCKS=y -CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y -# CONFIG_GKI_HIDDEN_DRM_CONFIGS is not set -# CONFIG_GKI_HIDDEN_REGMAP_CONFIGS is not set -# CONFIG_GKI_HIDDEN_CRYPTO_CONFIGS is not set -# CONFIG_GKI_HIDDEN_SND_CONFIGS is not set -# CONFIG_GKI_HIDDEN_SND_SOC_CONFIGS is not set -# CONFIG_GKI_HIDDEN_GPIO_CONFIGS is not set -# CONFIG_GKI_HIDDEN_VIRTUAL_CONFIGS is not set -# CONFIG_GKI_LEGACY_WEXT_ALLCONFIG is not set -# CONFIG_GKI_HIDDEN_SOC_PM_CONFIGS is not set -# CONFIG_GKI_HIDDEN_VIDEOBUF2_CONFIGS is not set -# CONFIG_GKI_HIDDEN_USB_CONFIGS is not set -# CONFIG_GKI_HIDDEN_SOC_BUS_CONFIGS is not set -# CONFIG_GKI_HIDDEN_GPU_CONFIGS is not set -# CONFIG_GKI_HIDDEN_IRQ_CONFIGS is not set -# CONFIG_GKI_HACKS_TO_FIX is not set -CONFIG_FREEZER=y - -# -# Executable file formats -# -CONFIG_BINFMT_ELF=y -CONFIG_COMPAT_BINFMT_ELF=y -CONFIG_ELFCORE=y -CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y -CONFIG_BINFMT_SCRIPT=y CONFIG_BINFMT_MISC=y -CONFIG_COREDUMP=y - -# -# Memory Management options -# -CONFIG_SELECT_MEMORY_MODEL=y -# CONFIG_FLATMEM_MANUAL is not set -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_MEMORY_ISOLATION=y -CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_SLAB_MERGE_DEFAULT is not set +# CONFIG_SLUB_CPU_PARTIAL is not set +# CONFIG_COMPAT_BRK is not set # CONFIG_COMPACTION is not set -CONFIG_MIGRATION=y -CONFIG_PHYS_ADDR_T_64BIT=y -# CONFIG_KSM is not set CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 -CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y -# CONFIG_MEMORY_FAILURE is not set -# CONFIG_TRANSPARENT_HUGEPAGE is not set -# CONFIG_CLEANCACHE is not set -# CONFIG_FRONTSWAP is not set -CONFIG_CMA=y -# CONFIG_CMA_DEBUG is not set -# CONFIG_CMA_DEBUGFS is not set -CONFIG_CMA_AREAS=7 -# 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_MM_EVENT_STAT is not set -CONFIG_GENERIC_EARLY_IOREMAP=y -# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set -# CONFIG_IDLE_PAGE_TRACKING is not set -CONFIG_FRAME_VECTOR=y -# CONFIG_PERCPU_STATS is not set -# CONFIG_GUP_BENCHMARK is not set -CONFIG_ARCH_HAS_PTE_SPECIAL=y +# CONFIG_VM_EVENT_COUNTERS is not set CONFIG_NET=y -CONFIG_COMPAT_NETLINK_MESSAGES=y -CONFIG_NET_INGRESS=y - -# -# Networking options -# CONFIG_PACKET=y -CONFIG_PACKET_DIAG=y CONFIG_UNIX=y -CONFIG_UNIX_DIAG=y -# CONFIG_TLS is not set -CONFIG_XFRM=y -CONFIG_XFRM_ALGO=y +CONFIG_UNIX_DIAG=m CONFIG_XFRM_USER=y -# CONFIG_XFRM_INTERFACE is not set -# CONFIG_XFRM_SUB_POLICY is not set -CONFIG_XFRM_MIGRATE=y -# CONFIG_XFRM_STATISTICS is not set -CONFIG_XFRM_IPCOMP=m -CONFIG_NET_KEY=m -CONFIG_NET_KEY_MIGRATE=y +CONFIG_NET_KEY=y CONFIG_INET=y CONFIG_IP_MULTICAST=y CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_FIB_TRIE_STATS=y CONFIG_IP_MULTIPLE_TABLES=y CONFIG_IP_ROUTE_MULTIPATH=y CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_ROUTE_CLASSID=y -CONFIG_IP_PNP=y -# CONFIG_IP_PNP_DHCP is not set -# CONFIG_IP_PNP_BOOTP is not set -# CONFIG_IP_PNP_RARP is not set CONFIG_NET_IPIP=m CONFIG_NET_IPGRE_DEMUX=m -CONFIG_NET_IP_TUNNEL=m -# CONFIG_NET_IPGRE is not set -CONFIG_IP_MROUTE_COMMON=y +CONFIG_NET_IPGRE=m 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=m -CONFIG_NET_FOU=m -# CONFIG_NET_FOU_IP_TUNNELS is not set -CONFIG_INET_AH=m -CONFIG_INET_ESP=m -# CONFIG_INET_ESP_OFFLOAD is not set -CONFIG_INET_IPCOMP=m -CONFIG_INET_XFRM_TUNNEL=m -CONFIG_INET_TUNNEL=m -CONFIG_INET_XFRM_MODE_TRANSPORT=m -CONFIG_INET_XFRM_MODE_TUNNEL=m -CONFIG_INET_XFRM_MODE_BEET=m -CONFIG_INET_DIAG=m -CONFIG_INET_TCP_DIAG=m -# CONFIG_INET_UDP_DIAG is not set -# CONFIG_INET_RAW_DIAG is not set -# CONFIG_INET_DIAG_DESTROY is not set +CONFIG_INET_AH=y +CONFIG_INET_ESP=y +CONFIG_INET_IPCOMP=y +# CONFIG_INET_DIAG is not set CONFIG_TCP_CONG_ADVANCED=y -CONFIG_TCP_CONG_BIC=m CONFIG_TCP_CONG_CUBIC=m -CONFIG_TCP_CONG_WESTWOOD=m -CONFIG_TCP_CONG_HTCP=m -# CONFIG_TCP_CONG_HSTCP is not set -# CONFIG_TCP_CONG_HYBLA is not set -# CONFIG_TCP_CONG_VEGAS is not set -# CONFIG_TCP_CONG_NV is not set -# CONFIG_TCP_CONG_SCALABLE is not set -# CONFIG_TCP_CONG_LP is not set -# CONFIG_TCP_CONG_VENO is not set -# CONFIG_TCP_CONG_YEAH is not set -# CONFIG_TCP_CONG_ILLINOIS is not set -# CONFIG_TCP_CONG_DCTCP is not set -# CONFIG_TCP_CONG_CDG is not set -# CONFIG_TCP_CONG_BBR is not set -CONFIG_DEFAULT_RENO=y -CONFIG_DEFAULT_TCP_CONG="reno" -# CONFIG_TCP_MD5SIG is not set -CONFIG_IPV6=m -# CONFIG_IPV6_ROUTER_PREF is not set -CONFIG_IPV6_OPTIMISTIC_DAD=y -CONFIG_INET6_AH=m -CONFIG_INET6_ESP=m -# CONFIG_INET6_ESP_OFFLOAD is not set -CONFIG_INET6_IPCOMP=m -CONFIG_IPV6_MIP6=m -CONFIG_IPV6_ILA=m -CONFIG_INET6_XFRM_TUNNEL=m -CONFIG_INET6_TUNNEL=m -CONFIG_INET6_XFRM_MODE_TRANSPORT=m -CONFIG_INET6_XFRM_MODE_TUNNEL=m -CONFIG_INET6_XFRM_MODE_BEET=m -CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m -# CONFIG_IPV6_VTI is not set -CONFIG_IPV6_SIT=m -# CONFIG_IPV6_SIT_6RD is not set -CONFIG_IPV6_NDISC_NODETYPE=y -CONFIG_IPV6_TUNNEL=m -# CONFIG_IPV6_GRE is not set -CONFIG_IPV6_FOU=m -CONFIG_IPV6_MULTIPLE_TABLES=y -# CONFIG_IPV6_SUBTREES is not set -CONFIG_IPV6_MROUTE=y -# CONFIG_IPV6_MROUTE_MULTIPLE_TABLES is not set -# CONFIG_IPV6_PIMSM_V2 is not set -# CONFIG_IPV6_SEG6_LWTUNNEL is not set -# CONFIG_IPV6_SEG6_HMAC is not set -CONFIG_NETWORK_SECMARK=y -CONFIG_NET_PTP_CLASSIFY=y -# CONFIG_NETWORK_PHY_TIMESTAMPING is not set -CONFIG_NETFILTER=n -CONFIG_NETFILTER_ADVANCED=n -CONFIG_BRIDGE_NETFILTER=n - -CONFIG_IP_SET=m -CONFIG_IP_SET_MAX=256 -# CONFIG_IP_SET_BITMAP_IP is not set -# CONFIG_IP_SET_BITMAP_IPMAC is not set -# CONFIG_IP_SET_BITMAP_PORT is not set -# CONFIG_IP_SET_HASH_IP is not set -# CONFIG_IP_SET_HASH_IPMARK is not set -# CONFIG_IP_SET_HASH_IPPORT is not set -# CONFIG_IP_SET_HASH_IPPORTIP is not set -# CONFIG_IP_SET_HASH_IPPORTNET is not set -# CONFIG_IP_SET_HASH_IPMAC is not set -# CONFIG_IP_SET_HASH_MAC is not set -# CONFIG_IP_SET_HASH_NETPORTNET is not set -# CONFIG_IP_SET_HASH_NET is not set -# CONFIG_IP_SET_HASH_NETNET is not set -# CONFIG_IP_SET_HASH_NETPORT is not set -# CONFIG_IP_SET_HASH_NETIFACE is not set -# CONFIG_IP_SET_LIST_SET is not set +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_CONG_DCTCP=m +CONFIG_TCP_CONG_CDG=m +CONFIG_TCP_MD5SIG=y +# CONFIG_IPV6 is not set +CONFIG_NETFILTER=y +CONFIG_BRIDGE_NETFILTER=y +CONFIG_NETFILTER_NETLINK_QUEUE=y +CONFIG_NETFILTER_NETLINK_LOG=y +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_PROCFS=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_TIMEOUT=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NF_CT_NETLINK_TIMEOUT=m +CONFIG_NF_TABLES=m +CONFIG_NFT_CT=m +CONFIG_NFT_LOG=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_QUEUE=m +CONFIG_NFT_REJECT=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_HASH=m +CONFIG_NETFILTER_XTABLES_COMPAT=y +CONFIG_NETFILTER_XT_SET=m +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NETFILTER_XT_MATCH_CGROUP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_IPCOMP=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_L2TP=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_IP_SET=y +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPMARK=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_MAC=m +CONFIG_IP_SET_HASH_NETPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETNET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_LIST_SET=m CONFIG_IP_VS=m -# CONFIG_IP_VS_IPV6 is not set -# CONFIG_IP_VS_DEBUG is not set -CONFIG_IP_VS_TAB_BITS=12 - -# -# IPVS transport protocol load balancing support -# -# CONFIG_IP_VS_PROTO_TCP is not set -# CONFIG_IP_VS_PROTO_UDP is not set -# CONFIG_IP_VS_PROTO_ESP is not set -# CONFIG_IP_VS_PROTO_AH is not set -# CONFIG_IP_VS_PROTO_SCTP is not set - -# -# IPVS scheduler -# -# CONFIG_IP_VS_RR is not set -# CONFIG_IP_VS_WRR is not set -# CONFIG_IP_VS_LC is not set -# CONFIG_IP_VS_WLC is not set -# CONFIG_IP_VS_FO is not set -# CONFIG_IP_VS_OVF is not set -# CONFIG_IP_VS_LBLC is not set -# CONFIG_IP_VS_LBLCR is not set -# CONFIG_IP_VS_DH is not set -# CONFIG_IP_VS_SH is not set -# CONFIG_IP_VS_MH is not set -# CONFIG_IP_VS_SED is not set -# CONFIG_IP_VS_NQ is not set - -# -# IPVS SH scheduler -# -CONFIG_IP_VS_SH_TAB_BITS=8 - -# -# IPVS MH scheduler -# -CONFIG_IP_VS_MH_TAB_INDEX=12 - -# -# IPVS application helper -# -# CONFIG_IP_VS_NFCT is not set - -# -# IP: Netfilter Configuration -# -CONFIG_NF_DEFRAG_IPV4=m -CONFIG_NF_SOCKET_IPV4=m -CONFIG_NF_TPROXY_IPV4=m -# CONFIG_NF_TABLES_IPV4 is not set -# CONFIG_NF_TABLES_ARP is not set -CONFIG_NF_DUP_IPV4=m -# CONFIG_NF_LOG_ARP is not set +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_FO=m +CONFIG_IP_VS_OVF=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_NFCT=y +CONFIG_NF_LOG_ARP=m CONFIG_NF_LOG_IPV4=m -CONFIG_NF_REJECT_IPV4=m -CONFIG_NF_NAT_IPV4=m -CONFIG_NF_NAT_MASQUERADE_IPV4=y -CONFIG_NF_NAT_SNMP_BASIC=m -CONFIG_NF_NAT_PROTO_GRE=m -CONFIG_NF_NAT_PPTP=m -CONFIG_NF_NAT_H323=m -CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_IPTABLES=y CONFIG_IP_NF_MATCH_AH=m CONFIG_IP_NF_MATCH_ECN=m CONFIG_IP_NF_MATCH_RPFILTER=m CONFIG_IP_NF_MATCH_TTL=m -CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_FILTER=y CONFIG_IP_NF_TARGET_REJECT=m CONFIG_IP_NF_TARGET_SYNPROXY=m CONFIG_IP_NF_NAT=m @@ -1020,714 +275,158 @@ CONFIG_IP_NF_TARGET_MASQUERADE=m CONFIG_IP_NF_TARGET_NETMAP=m CONFIG_IP_NF_TARGET_REDIRECT=m CONFIG_IP_NF_MANGLE=m -CONFIG_IP_NF_TARGET_CLUSTERIP=m CONFIG_IP_NF_TARGET_ECN=m CONFIG_IP_NF_TARGET_TTL=m CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=y CONFIG_IP_NF_ARPTABLES=m -# CONFIG_IP_NF_ARPFILTER is not set -# CONFIG_IP_NF_ARP_MANGLE is not set - -# -# IPv6: Netfilter Configuration -# -CONFIG_NF_SOCKET_IPV6=m -CONFIG_NF_TPROXY_IPV6=m -# CONFIG_NF_TABLES_IPV6 is not set -CONFIG_NF_DUP_IPV6=m -CONFIG_NF_REJECT_IPV6=m -CONFIG_NF_LOG_IPV6=m -CONFIG_NF_NAT_IPV6=m -CONFIG_IP6_NF_IPTABLES=m -# 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_RT is not set -# CONFIG_IP6_NF_MATCH_SRH is not set -# CONFIG_IP6_NF_FILTER is not set -# CONFIG_IP6_NF_TARGET_SYNPROXY is not set -# CONFIG_IP6_NF_MANGLE is not set -# CONFIG_IP6_NF_RAW is not set -# CONFIG_IP6_NF_NAT is not set -CONFIG_NF_DEFRAG_IPV6=m -# CONFIG_NF_TABLES_BRIDGE is not set -# CONFIG_BRIDGE_NF_EBTABLES is not set -# CONFIG_BPFILTER 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 is not set -CONFIG_STP=m -CONFIG_BRIDGE=m -CONFIG_BRIDGE_IGMP_SNOOPING=y -CONFIG_HAVE_NET_DSA=y -# CONFIG_NET_DSA is not set -# CONFIG_VLAN_8021Q is not set -# CONFIG_DECNET is not set -CONFIG_LLC=m -# CONFIG_LLC2 is not set -# CONFIG_ATALK is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_PHONET is not set -# CONFIG_6LOWPAN is not set -# CONFIG_IEEE802154 is not set -# CONFIG_NET_SCHED is not set -# CONFIG_DCB is not set -# CONFIG_DNS_RESOLVER 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_MPLS is not set -# CONFIG_NET_NSH is not set -# CONFIG_HSR is not set -# CONFIG_NET_SWITCHDEV is not set -# CONFIG_NET_L3_MASTER_DEV is not set -# CONFIG_NET_NCSI is not set -CONFIG_RPS=y -CONFIG_RFS_ACCEL=y -CONFIG_XPS=y -# CONFIG_CGROUP_NET_PRIO is not set -CONFIG_CGROUP_NET_CLASSID=y -CONFIG_NET_RX_BUSY_POLL=y -CONFIG_BQL=y -# CONFIG_BPF_JIT is not set -CONFIG_NET_FLOW_LIMIT=y - -# -# Network testing -# -# CONFIG_NET_PKTGEN is not set -# CONFIG_NET_DROP_MONITOR is not set -# CONFIG_HAMRADIO is not set +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_NF_TABLES_BRIDGE=m +CONFIG_NFT_BRIDGE_META=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_BRIDGE=y +CONFIG_VLAN_8021Q=y +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_HTB=y +CONFIG_NET_SCH_CODEL=y +CONFIG_NET_SCH_FQ_CODEL=y +CONFIG_NET_CLS_U32=y +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_CGROUP=y +CONFIG_DNS_RESOLVER=y +CONFIG_OPENVSWITCH=m +CONFIG_CGROUP_NET_PRIO=y CONFIG_CAN=y -CONFIG_CAN_RAW=y -CONFIG_CAN_BCM=y -CONFIG_CAN_GW=y - -# -# CAN Device Drivers -# -# CONFIG_CAN_VCAN is not set -# CONFIG_CAN_VXCAN is not set -# CONFIG_CAN_SLCAN is not set -CONFIG_CAN_DEV=y -CONFIG_CAN_CALC_BITTIMING=y -# CONFIG_CAN_GRCAN is not set -# CONFIG_CAN_XILINXCAN is not set -# CONFIG_CAN_C_CAN is not set -# CONFIG_CAN_CC770 is not set -# CONFIG_CAN_IFI_CANFD is not set -# CONFIG_CAN_M_CAN is not set -# CONFIG_CAN_PEAK_PCIEFD is not set -CONFIG_CAN_ROCKCHIP=y -CONFIG_CANFD_ROCKCHIP=y -# CONFIG_CAN_SJA1000 is not set -# CONFIG_CAN_SOFTING is not set - -# -# CAN SPI interfaces -# -# CONFIG_CAN_HI311X is not set -# CONFIG_CAN_MCP251X is not set - -# -# CAN USB interfaces -# -# CONFIG_CAN_8DEV_USB is not set -# CONFIG_CAN_EMS_USB is not set -# CONFIG_CAN_ESD_USB2 is not set -# CONFIG_CAN_GS_USB is not set -# CONFIG_CAN_KVASER_USB is not set -# CONFIG_CAN_MCBA_USB is not set -# CONFIG_CAN_PEAK_USB is not set -# CONFIG_CAN_UCAN is not set -# CONFIG_CAN_DEBUG_DEVICES is not set -CONFIG_BT=y -CONFIG_BT_BREDR=y +CONFIG_BT=m CONFIG_BT_RFCOMM=y -# CONFIG_BT_RFCOMM_TTY is not set -# CONFIG_BT_BNEP is not set CONFIG_BT_HIDP=y CONFIG_BT_HS=y -CONFIG_BT_LE=y -# CONFIG_BT_LEDS is not set -# CONFIG_BT_SELFTEST is not set -CONFIG_BT_DEBUGFS=y - -# -# Bluetooth device drivers -# -CONFIG_BT_INTEL=y -CONFIG_BT_BCM=y -CONFIG_BT_RTL=y -CONFIG_BT_HCIBTUSB=y -# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set -CONFIG_BT_HCIBTUSB_BCM=y -CONFIG_BT_HCIBTUSB_RTL=y -# CONFIG_BT_HCIBTSDIO is not set -CONFIG_BT_HCIUART=y -CONFIG_BT_HCIUART_SERDEV=y -CONFIG_BT_HCIUART_H4=y -# CONFIG_BT_HCIUART_NOKIA is not set -# CONFIG_BT_HCIUART_BCSP is not set +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIUART=m CONFIG_BT_HCIUART_ATH3K=y -# CONFIG_BT_HCIUART_LL is not set -CONFIG_BT_HCIUART_3WIRE=y -# CONFIG_BT_HCIUART_INTEL is not set -CONFIG_BT_HCIUART_BCM=y -# CONFIG_BT_HCIUART_QCA is not set -# CONFIG_BT_HCIUART_AG6XX is not set -# CONFIG_BT_HCIUART_MRVL is not set -# CONFIG_BT_HCIBCM203X is not set -# CONFIG_BT_HCIBPA10X is not set -CONFIG_BT_HCIBFUSB=y -CONFIG_BT_HCIVHCI=y -CONFIG_BT_MRVL=y -CONFIG_BT_MRVL_SDIO=y -# CONFIG_BT_ATH3K is not set -# CONFIG_BT_MTKUART is not set -# CONFIG_AF_RXRPC is not set -# CONFIG_AF_KCM 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 is not set -# CONFIG_CFG80211_CERTIFICATION_ONUS is not set -CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y -CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y -CONFIG_CFG80211_DEFAULT_PS=y -CONFIG_CFG80211_DEBUGFS=y -CONFIG_CFG80211_CRDA_SUPPORT=y -CONFIG_CFG80211_WEXT=y -CONFIG_MAC80211=y -CONFIG_MAC80211_HAS_RC=y -CONFIG_MAC80211_RC_MINSTREL=y -CONFIG_MAC80211_RC_MINSTREL_HT=y -# CONFIG_MAC80211_RC_MINSTREL_VHT is not set -CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y -CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" -# CONFIG_MAC80211_MESH is not set -CONFIG_MAC80211_LEDS=y -CONFIG_MAC80211_DEBUGFS=y -# CONFIG_MAC80211_MESSAGE_TRACING is not set -CONFIG_MAC80211_DEBUG_MENU=y -# CONFIG_MAC80211_NOINLINE is not set -CONFIG_MAC80211_VERBOSE_DEBUG=y -# CONFIG_MAC80211_MLME_DEBUG is not set -# CONFIG_MAC80211_STA_DEBUG is not set -# CONFIG_MAC80211_HT_DEBUG is not set -# CONFIG_MAC80211_OCB_DEBUG is not set -# CONFIG_MAC80211_IBSS_DEBUG is not set -# CONFIG_MAC80211_PS_DEBUG is not set -# CONFIG_MAC80211_TDLS_DEBUG is not set -# CONFIG_MAC80211_DEBUG_COUNTERS is not set -CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 -# CONFIG_WIMAX is not set -CONFIG_RFKILL=y -CONFIG_RFKILL_LEDS=y -# CONFIG_RFKILL_INPUT is not set -# CONFIG_RFKILL_GPIO is not set -CONFIG_RFKILL_RK=y -# CONFIG_NET_9P is not set -# CONFIG_CAIF is not set -# CONFIG_CEPH_LIB is not set -# CONFIG_NFC is not set -# CONFIG_PSAMPLE is not set -# CONFIG_NET_IFE is not set -CONFIG_LWTUNNEL=y -CONFIG_LWTUNNEL_BPF=y -CONFIG_DST_CACHE=y -CONFIG_GRO_CELLS=y -# CONFIG_NET_DEVLINK is not set -CONFIG_MAY_USE_DEVLINK=y -# CONFIG_FAILOVER is not set -CONFIG_HAVE_EBPF_JIT=y - -# -# Device Drivers -# -CONFIG_ARM_AMBA=y - -# -# Generic Driver Options -# +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_CFG80211=m +# CONFIG_CFG80211_DEFAULT_PS is not set +# CONFIG_CFG80211_CRDA_SUPPORT is not set +CONFIG_MAC80211=m +CONFIG_MAC80211_MESH=y +CONFIG_RFKILL=m +CONFIG_RFKILL_INPUT=y +CONFIG_RFKILL_GPIO=m +# CONFIG_ETHTOOL_NETLINK is not set +CONFIG_PCI=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCIEAER=y +CONFIG_PCIE_ROCKCHIP_HOST=y +CONFIG_PCIE_ROCKCHIP_DW_HOST=y CONFIG_UEVENT_HELPER=y -CONFIG_UEVENT_HELPER_PATH="" CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y -CONFIG_STANDALONE=y -CONFIG_PREVENT_FIRMWARE_BUILD=y - -# -# Firmware loader -# -CONFIG_FW_LOADER=y -CONFIG_EXTRA_FIRMWARE="" -# CONFIG_FW_LOADER_USER_HELPER is not set -CONFIG_FW_CACHE=y -CONFIG_WANT_DEV_COREDUMP=y -CONFIG_ALLOW_DEV_COREDUMP=y -CONFIG_DEV_COREDUMP=y -# CONFIG_DEBUG_DRIVER is not set +CONFIG_DEVTMPFS_SAFE=y +CONFIG_FW_LOADER_USER_HELPER=y +CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y +# CONFIG_ALLOW_DEV_COREDUMP is not set CONFIG_DEBUG_DEVRES=y -# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set -# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set -CONFIG_GENERIC_CPU_AUTOPROBE=y -CONFIG_GENERIC_CPU_VULNERABILITIES=y -CONFIG_REGMAP=y -CONFIG_REGMAP_I2C=y -CONFIG_REGMAP_SPI=y -CONFIG_REGMAP_MMIO=y -CONFIG_REGMAP_IRQ=y -# CONFIG_MALI_MEMORY_GROUP_MANAGER is not set -CONFIG_DMA_SHARED_BUFFER=y -# CONFIG_DMA_FENCE_TRACE is not set -CONFIG_DMA_CMA=y - -# -# Default contiguous memory area size: -# -CONFIG_CMA_SIZE_MBYTES=16 -CONFIG_CMA_SIZE_SEL_MBYTES=y -# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set -# CONFIG_CMA_SIZE_SEL_MIN is not set -# CONFIG_CMA_SIZE_SEL_MAX is not set -CONFIG_CMA_ALIGNMENT=8 -CONFIG_GENERIC_ARCH_TOPOLOGY=y - -# -# Bus devices -# -# CONFIG_BRCMSTB_GISB_ARB is not set -# CONFIG_SIMPLE_PM_BUS is not set -# CONFIG_VEXPRESS_CONFIG is not set CONFIG_CONNECTOR=y -CONFIG_PROC_EVENTS=y -# CONFIG_GNSS is not set +CONFIG_ARM_SCMI_PROTOCOL=y +CONFIG_ARM_SCMI_POWER_CONTROL=y +CONFIG_ARM_SCPI_PROTOCOL=y +CONFIG_ARM_FFA_TRANSPORT=y CONFIG_MTD=y -# CONFIG_MTD_TESTS is not set -# CONFIG_MTD_REDBOOT_PARTS is not set -CONFIG_MTD_CMDLINE_PARTS=y -# CONFIG_MTD_AFS_PARTS is not set -CONFIG_MTD_OF_PARTS=y -# CONFIG_MTD_AR7_PARTS is not set - -# -# Partition parsers -# - -# -# User Modules And Translation Layers -# -CONFIG_MTD_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 -# CONFIG_MTD_SWAP is not set -# CONFIG_MTD_PARTITIONED_MASTER 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_CFI_I1=y -CONFIG_MTD_CFI_I2=y -# 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_INTEL_VR_NOR is not set -# CONFIG_MTD_PLATRAM is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_DATAFLASH is not set -# CONFIG_MTD_MCHP23K256 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_ONENAND is not set -# CONFIG_MTD_NAND is not set -# CONFIG_MTD_SPI_NAND is not set - -# -# LPDDR & LPDDR2 PCM memory drivers -# -# CONFIG_MTD_LPDDR is not set -# CONFIG_MTD_SPI_NOR is not set -CONFIG_MTD_UBI=y -CONFIG_MTD_UBI_WL_THRESHOLD=4096 -CONFIG_MTD_UBI_BEB_LIMIT=20 -# CONFIG_MTD_UBI_FASTMAP is not set -# CONFIG_MTD_UBI_GLUEBI is not set -# CONFIG_MTD_UBI_BLOCK is not set -CONFIG_DTC=y -CONFIG_OF=y -CONFIG_DTC_SYMBOLS=y -# CONFIG_DTC_OMIT_DISABLED is not set -# CONFIG_DTC_OMIT_EMPTY is not set -# CONFIG_OF_UNITTEST is not set -CONFIG_OF_FLATTREE=y -CONFIG_OF_EARLY_FLATTREE=y -CONFIG_OF_KOBJ=y -CONFIG_OF_ADDRESS=y -CONFIG_OF_IRQ=y -CONFIG_OF_NET=y -CONFIG_OF_MDIO=y -CONFIG_OF_RESERVED_MEM=y -# CONFIG_OF_OVERLAY is not set -# CONFIG_PARPORT is not set -CONFIG_BLK_DEV=y -# CONFIG_BLK_DEV_NULL_BLK is not set -CONFIG_CDROM=y -# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +CONFIG_MTD_SPI_NOR=y +CONFIG_OF_OVERLAY=y CONFIG_ZRAM=y -# CONFIG_ZRAM_WRITEBACK is not set -# CONFIG_ZRAM_MEMORY_TRACKING is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_UMEM 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_SKD is not set -# CONFIG_BLK_DEV_SX8 is not set +CONFIG_BLK_DEV_DRBD=m +CONFIG_BLK_DEV_NBD=m CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=1 -CONFIG_BLK_DEV_RAM_SIZE=4096 -# CONFIG_CDROM_PKTCDVD is not set -# CONFIG_ATA_OVER_ETH is not set -# CONFIG_BLK_DEV_RBD is not set -# CONFIG_BLK_DEV_RSXX is not set - -# -# NVME Support -# -CONFIG_NVME_CORE=y -CONFIG_BLK_DEV_NVME=y -# CONFIG_NVME_MULTIPATH is not set -# CONFIG_NVME_FC is not set -# CONFIG_NVME_TARGET is not set - -# -# Misc devices -# -# CONFIG_ROCKCHIP_SCR is not set -# CONFIG_AD525X_DPOT is not set -# CONFIG_DUMMY_IRQ is not set -# CONFIG_PHANTOM is not set -# CONFIG_SGI_IOC4 is not set -# CONFIG_TIFM_CORE is not set -# CONFIG_ICS932S401 is not set -# CONFIG_ENCLOSURE_SERVICES is not set -# CONFIG_HP_ILO 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_BH1770 is not set -# CONFIG_SENSORS_APDS990X is not set -# CONFIG_HMC6352 is not set -# CONFIG_DS1682 is not set -# CONFIG_USB_SWITCH_FSA9480 is not set -# CONFIG_LATTICE_ECP3_CONFIG is not set +CONFIG_ATA_OVER_ETH=m +CONFIG_BLK_DEV_RBD=m +CONFIG_BLK_DEV_NVME=m CONFIG_SRAM=y -# CONFIG_PCI_ENDPOINT_TEST is not set -# CONFIG_PIR_ASCHIP is not set -# CONFIG_C2PORT is not set - -# -# EEPROM support -# -# CONFIG_EEPROM_AT24 is not set -# CONFIG_EEPROM_AT25 is not set -# CONFIG_EEPROM_LEGACY is not set -# CONFIG_EEPROM_MAX6875 is not set -# CONFIG_EEPROM_93CX6 is not set -# CONFIG_EEPROM_93XX46 is not set -# CONFIG_EEPROM_IDT_89HPESX is not set -# CONFIG_CB710_CORE is not set - -# -# Texas Instruments shared transport line discipline -# -# CONFIG_TI_ST is not set -# CONFIG_SENSORS_LIS3_SPI is not set -# CONFIG_SENSORS_LIS3_I2C is not set -# CONFIG_ALTERA_STAPL is not set - -# -# Intel MIC & related support -# - -# -# Intel MIC Bus Driver -# - -# -# SCIF Bus Driver -# - -# -# VOP Bus Driver -# - -# -# Intel MIC Host Driver -# - -# -# Intel MIC Card Driver -# - -# -# SCIF Driver -# - -# -# Intel MIC Coprocessor State Management (COSM) Drivers -# - -# -# VOP Driver -# -# CONFIG_GENWQE is not set -# CONFIG_ECHO is not set -# CONFIG_MISC_RTSX_PCI is not set -# CONFIG_MISC_RTSX_USB is not set - -# -# SCSI device support -# -CONFIG_SCSI_MOD=y -# CONFIG_RAID_ATTRS is not set -CONFIG_SCSI=y -CONFIG_SCSI_DMA=y -CONFIG_SCSI_MQ_DEFAULT=y -CONFIG_SCSI_PROC_FS=y - -# -# SCSI support type (disk, tape, CD-ROM) -# +CONFIG_EEPROM_93CX6=y CONFIG_BLK_DEV_SD=y -# CONFIG_CHR_DEV_ST is not set -# CONFIG_CHR_DEV_OSST is not set CONFIG_BLK_DEV_SR=y -# 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=y -# 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=y -# CONFIG_ISCSI_TCP is not set -# CONFIG_ISCSI_BOOT_SYSFS is not set -# CONFIG_SCSI_CXGB3_ISCSI is not set -# CONFIG_SCSI_CXGB4_ISCSI is not set -# CONFIG_SCSI_BNX2_ISCSI is not set -# CONFIG_BE2ISCSI is not set -# CONFIG_BLK_DEV_3W_XXXX_RAID is not set -# CONFIG_SCSI_HPSA is not set -# CONFIG_SCSI_3W_9XXX is not set -# CONFIG_SCSI_3W_SAS is not set -# CONFIG_SCSI_ACARD is not set -# CONFIG_SCSI_AACRAID is not set -# CONFIG_SCSI_AIC7XXX is not set -# CONFIG_SCSI_AIC79XX is not set -# CONFIG_SCSI_AIC94XX is not set -# CONFIG_SCSI_HISI_SAS is not set -# CONFIG_SCSI_MVSAS is not set -# CONFIG_SCSI_MVUMI is not set -# CONFIG_SCSI_ADVANSYS is not set -# CONFIG_SCSI_ARCMSR is not set -# CONFIG_SCSI_ESAS2R is not set -# CONFIG_MEGARAID_NEWGEN is not set -# CONFIG_MEGARAID_LEGACY is not set -# CONFIG_MEGARAID_SAS is not set -# CONFIG_SCSI_MPT3SAS is not set -# CONFIG_SCSI_MPT2SAS is not set -# CONFIG_SCSI_SMARTPQI is not set -# CONFIG_SCSI_UFSHCD is not set -# CONFIG_SCSI_HPTIOP is not set -# CONFIG_SCSI_SNIC is not set -# CONFIG_SCSI_DMX3191D is not set -# CONFIG_SCSI_IPS is not set -# CONFIG_SCSI_INITIO is not set -# CONFIG_SCSI_INIA100 is not set -# CONFIG_SCSI_STEX is not set -# CONFIG_SCSI_SYM53C8XX_2 is not set -# CONFIG_SCSI_IPR is not set -# CONFIG_SCSI_QLOGIC_1280 is not set -# CONFIG_SCSI_QLA_ISCSI is not set -# CONFIG_SCSI_DC395x is not set -# CONFIG_SCSI_AM53C974 is not set -# CONFIG_SCSI_WD719X is not set -# CONFIG_SCSI_DEBUG is not set -# CONFIG_SCSI_PMCRAID is not set -# CONFIG_SCSI_PM8001 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_MEGARAID_SAS=m +CONFIG_SCSI_MPT2SAS=m CONFIG_ATA=y -CONFIG_ATA_VERBOSE_ERROR=y -CONFIG_SATA_PMP=y - -# -# Controllers with non-SFF native interface -# CONFIG_SATA_AHCI=y -CONFIG_SATA_MOBILE_LPM_POLICY=0 CONFIG_SATA_AHCI_PLATFORM=y -# CONFIG_AHCI_CEVA is not set -# CONFIG_AHCI_QORIQ is not set -# CONFIG_SATA_INIC162X is not set -# CONFIG_SATA_ACARD_AHCI is not set -# CONFIG_SATA_SIL24 is not set -# CONFIG_ATA_SFF is not set +CONFIG_SATA_MV=m +CONFIG_SATA_NV=m +CONFIG_SATA_PROMISE=m +CONFIG_SATA_SIL=m CONFIG_MD=y -# CONFIG_BLK_DEV_MD is not set -# CONFIG_BCACHE is not set -# CONFIG_BLK_DEV_DM is not set -# CONFIG_TARGET_CORE is not set -# CONFIG_FUSION is not set - -# -# IEEE 1394 (FireWire) support -# -# CONFIG_FIREWIRE is not set -# CONFIG_FIREWIRE_NOSY is not set +CONFIG_MD_LINEAR=m +CONFIG_BCACHE=m +CONFIG_BLK_DEV_DM=y +CONFIG_DM_CRYPT=m +CONFIG_DM_RAID=y CONFIG_NETDEVICES=y -CONFIG_MII=y -CONFIG_NET_CORE=y -# CONFIG_BONDING is not set -# CONFIG_DUMMY is not set -CONFIG_WIREGUARD=m -# CONFIG_EQUALIZER is not set -# CONFIG_NET_FC is not set -# CONFIG_NET_TEAM is not set -# CONFIG_MACVLAN is not set -# CONFIG_IPVLAN is not set -# CONFIG_VXLAN is not set -# CONFIG_GENEVE is not set -# CONFIG_GTP is not set -# CONFIG_MACSEC is not set -# CONFIG_NETCONSOLE is not set -CONFIG_TUN=y -# CONFIG_TUN_VNET_CROSS_LE is not set -# CONFIG_VETH is not set -# CONFIG_NLMON is not set -# CONFIG_ARCNET is not set - -# -# CAIF transport drivers -# - -# -# Distributed Switch Architecture drivers -# -CONFIG_ETHERNET=y +CONFIG_WIREGUARD=y +CONFIG_MACVLAN=y +CONFIG_IPVLAN=y +CONFIG_VXLAN=m +CONFIG_TUN=m +CONFIG_VETH=y # CONFIG_NET_VENDOR_3COM is not set # CONFIG_NET_VENDOR_ADAPTEC is not set # CONFIG_NET_VENDOR_AGERE is not set -CONFIG_NET_VENDOR_ALACRITECH=y -# CONFIG_SLICOSS is not set # CONFIG_NET_VENDOR_ALTEON is not set -# CONFIG_ALTERA_TSE is not set -CONFIG_NET_VENDOR_AMAZON=y -# CONFIG_ENA_ETHERNET is not set # CONFIG_NET_VENDOR_AMD is not set -CONFIG_NET_VENDOR_AQUANTIA=y # CONFIG_NET_VENDOR_ARC is not set # CONFIG_NET_VENDOR_ATHEROS is not set -CONFIG_NET_VENDOR_AURORA=y -# CONFIG_AURORA_NB8800 is not set # CONFIG_NET_VENDOR_BROADCOM is not set -# CONFIG_NET_VENDOR_BROCADE is not set -CONFIG_NET_VENDOR_CADENCE=y -# CONFIG_MACB is not set # CONFIG_NET_VENDOR_CAVIUM is not set # CONFIG_NET_VENDOR_CHELSIO is not set # CONFIG_NET_VENDOR_CISCO is not set -CONFIG_NET_VENDOR_CORTINA=y -# CONFIG_GEMINI_ETHERNET is not set -# CONFIG_DNET is not set # CONFIG_NET_VENDOR_DEC is not set # CONFIG_NET_VENDOR_DLINK is not set # CONFIG_NET_VENDOR_EMULEX is not set # CONFIG_NET_VENDOR_EZCHIP is not set # CONFIG_NET_VENDOR_HISILICON is not set -# CONFIG_NET_VENDOR_HP is not set -CONFIG_NET_VENDOR_HUAWEI=y -# CONFIG_HINIC is not set -# CONFIG_NET_VENDOR_INTEL is not set -# CONFIG_JME is not set +CONFIG_E100=y +CONFIG_E1000=y +CONFIG_E1000E=y +CONFIG_IGB=y +CONFIG_IXGBE=y # CONFIG_NET_VENDOR_MARVELL is not set # CONFIG_NET_VENDOR_MELLANOX is not set # CONFIG_NET_VENDOR_MICREL is not set # CONFIG_NET_VENDOR_MICROCHIP is not set -CONFIG_NET_VENDOR_MICROSEMI=y # CONFIG_NET_VENDOR_MYRI is not set -# CONFIG_FEALNX is not set # CONFIG_NET_VENDOR_NATSEMI is not set -CONFIG_NET_VENDOR_NETERION=y -# CONFIG_S2IO is not set -# CONFIG_VXGE is not set -CONFIG_NET_VENDOR_NETRONOME=y -# CONFIG_NFP is not set -CONFIG_NET_VENDOR_NI=y # CONFIG_NET_VENDOR_NVIDIA is not set # CONFIG_NET_VENDOR_OKI is not set -# CONFIG_ETHOC is not set -CONFIG_NET_VENDOR_PACKET_ENGINES=y -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set # CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_BROCADE is not set # CONFIG_NET_VENDOR_QUALCOMM is not set # CONFIG_NET_VENDOR_RDC is not set # CONFIG_NET_VENDOR_REALTEK is not set @@ -1735,4319 +434,680 @@ CONFIG_NET_VENDOR_PACKET_ENGINES=y # CONFIG_NET_VENDOR_ROCKER is not set # CONFIG_NET_VENDOR_SAMSUNG is not set # CONFIG_NET_VENDOR_SEEQ is not set -CONFIG_NET_VENDOR_SOLARFLARE=y -# CONFIG_SFC is not set -# CONFIG_SFC_FALCON is not set # CONFIG_NET_VENDOR_SILAN is not set # CONFIG_NET_VENDOR_SIS is not set # CONFIG_NET_VENDOR_SMSC is not set -CONFIG_NET_VENDOR_SOCIONEXT=y -CONFIG_NET_VENDOR_STMICRO=y CONFIG_STMMAC_ETH=y -CONFIG_STMMAC_PLATFORM=y -# CONFIG_DWMAC_DWC_QOS_ETH is not set -CONFIG_DWMAC_GENERIC=y -CONFIG_DWMAC_ROCKCHIP=y -# CONFIG_STMMAC_PCI is not set # CONFIG_NET_VENDOR_SUN is not set # CONFIG_NET_VENDOR_SYNOPSYS is not set # CONFIG_NET_VENDOR_TEHUTI is not set # CONFIG_NET_VENDOR_TI is not set # CONFIG_NET_VENDOR_VIA is not set # CONFIG_NET_VENDOR_WIZNET is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -CONFIG_MDIO_DEVICE=y -CONFIG_MDIO_BUS=y -# CONFIG_MDIO_BCM_UNIMAC is not set -# CONFIG_MDIO_BITBANG is not set -# CONFIG_MDIO_BUS_MUX_GPIO is not set -# CONFIG_MDIO_BUS_MUX_MMIOREG is not set -# CONFIG_MDIO_HISI_FEMAC is not set -# CONFIG_MDIO_MSCC_MIIM is not set -# CONFIG_MDIO_OCTEON is not set -# CONFIG_MDIO_THUNDER is not set -CONFIG_PHYLIB=y -CONFIG_SWPHY=y -# CONFIG_LED_TRIGGER_PHY is not set - -# -# MII PHY device drivers -# -# CONFIG_AMD_PHY is not set -# CONFIG_AQUANTIA_PHY is not set -# CONFIG_AX88796B_PHY is not set -# CONFIG_AT803X_PHY is not set -# CONFIG_BCM7XXX_PHY is not set -# CONFIG_BCM87XX_PHY is not set -# CONFIG_BROADCOM_PHY is not set -# CONFIG_CICADA_PHY is not set -# CONFIG_CORTINA_PHY is not set -# CONFIG_DAVICOM_PHY is not set -# CONFIG_DP83822_PHY is not set -# CONFIG_DP83TC811_PHY is not set -# CONFIG_DP83848_PHY is not set -# CONFIG_DP83867_PHY is not set -CONFIG_FIXED_PHY=y -# CONFIG_ICPLUS_PHY is not set -# CONFIG_INTEL_XWAY_PHY is not set -# CONFIG_LSI_ET1011C_PHY is not set -# CONFIG_LXT_PHY is not set -# CONFIG_MARVELL_PHY is not set -# CONFIG_MARVELL_10G_PHY is not set -# CONFIG_MICREL_PHY is not set -# CONFIG_MICROCHIP_PHY is not set -# CONFIG_MICROCHIP_T1_PHY is not set -# CONFIG_MICROSEMI_PHY is not set -# CONFIG_NATIONAL_PHY is not set -# CONFIG_QSEMI_PHY is not set -# CONFIG_REALTEK_PHY is not set -# CONFIG_RENESAS_PHY is not set CONFIG_ROCKCHIP_PHY=y -# CONFIG_SMSC_PHY is not set -# CONFIG_STE10XP is not set -# CONFIG_TERANETICS_PHY is not set -# CONFIG_VITESSE_PHY is not set -# CONFIG_XILINX_GMII2RGMII is not set -# CONFIG_MICREL_KS8995MA is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set -CONFIG_USB_NET_DRIVERS=y -# CONFIG_USB_CATC is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_PEGASUS is not set +CONFIG_CAN_SJA1000=y +CONFIG_CAN_PLX_PCI=y +CONFIG_PPP=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPPOE=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m CONFIG_USB_RTL8150=y CONFIG_USB_RTL8152=y -# CONFIG_USB_LAN78XX is not set CONFIG_USB_USBNET=y -CONFIG_USB_NET_AX8817X=y -CONFIG_USB_NET_AX88179_178A=y -CONFIG_USB_NET_CDCETHER=y -# CONFIG_USB_NET_CDC_EEM is not set -CONFIG_USB_NET_CDC_NCM=y -# CONFIG_USB_NET_HUAWEI_CDC_NCM is not set CONFIG_USB_NET_CDC_MBIM=y -# CONFIG_USB_NET_DM9601 is not set -# CONFIG_USB_NET_SR9700 is not set -# CONFIG_USB_NET_SR9800 is not set -# CONFIG_USB_NET_SMSC75XX is not set -# CONFIG_USB_NET_SMSC95XX is not set -# CONFIG_USB_NET_GL620A is not set # CONFIG_USB_NET_NET1080 is not set -# CONFIG_USB_NET_PLUSB is not set -# CONFIG_USB_NET_MCS7830 is not set CONFIG_USB_NET_RNDIS_HOST=y # CONFIG_USB_NET_CDC_SUBSET is not set # CONFIG_USB_NET_ZAURUS is not set -# CONFIG_USB_NET_CX82310_ETH is not set -# CONFIG_USB_NET_KALMIA is not set CONFIG_USB_NET_QMI_WWAN=y -# CONFIG_USB_HSO is not set -# CONFIG_USB_NET_INT51X1 is not set -# CONFIG_USB_IPHETH is not set -# CONFIG_USB_SIERRA_NET is not set -# CONFIG_USB_VL600 is not set -# CONFIG_USB_NET_CH9200 is not set -CONFIG_WLAN=y -# CONFIG_WIRELESS_WDS is not set -CONFIG_WLAN_VENDOR_ADMTEK=y -# CONFIG_ADM8211 is not set -CONFIG_WLAN_VENDOR_ATH=y -# CONFIG_ATH_DEBUG is not set -# CONFIG_ATH5K is not set -# CONFIG_ATH5K_PCI is not set -# CONFIG_ATH9K is not set -# CONFIG_ATH9K_HTC is not set -# CONFIG_CARL9170 is not set -# CONFIG_ATH6KL is not set -# CONFIG_AR5523 is not set -# CONFIG_WIL6210 is not set -# CONFIG_ATH10K is not set -# CONFIG_WCN36XX is not set -CONFIG_WLAN_VENDOR_ATMEL=y -# CONFIG_ATMEL is not set -# CONFIG_AT76C50X_USB is not set -CONFIG_WLAN_VENDOR_BROADCOM=y -# CONFIG_B43 is not set -# CONFIG_B43LEGACY is not set -# CONFIG_BRCMSMAC is not set -# CONFIG_BRCMFMAC is not set -CONFIG_WLAN_VENDOR_CISCO=y -CONFIG_WLAN_VENDOR_INTEL=y -# CONFIG_IPW2100 is not set -# CONFIG_IPW2200 is not set -# CONFIG_IWL4965 is not set -# CONFIG_IWL3945 is not set -# CONFIG_IWLWIFI is not set -CONFIG_WLAN_VENDOR_INTERSIL=y -# CONFIG_HOSTAP is not set -# CONFIG_HERMES is not set -# CONFIG_P54_COMMON is not set -# CONFIG_PRISM54 is not set -CONFIG_WLAN_VENDOR_MARVELL=y -# CONFIG_LIBERTAS is not set -CONFIG_LIBERTAS_THINFIRM=y -# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set -# CONFIG_LIBERTAS_THINFIRM_USB is not set +CONFIG_ATH5K=m +CONFIG_ATH9K=m +CONFIG_ATH6KL=m +CONFIG_ATH6KL_USB=m +CONFIG_AR5523=m +CONFIG_ATH10K=m +CONFIG_WCN36XX=m +CONFIG_AT76C50X_USB=m +CONFIG_B43=m +CONFIG_BRCMFMAC=m +# CONFIG_BRCMFMAC_SDIO is not set +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMFMAC_PCIE=y +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBERTAS_THINFIRM=m CONFIG_MWIFIEX=m CONFIG_MWIFIEX_SDIO=m -# CONFIG_MWIFIEX_PCIE is not set -# CONFIG_MWIFIEX_USB is not set -# CONFIG_MWL8K is not set -CONFIG_WLAN_VENDOR_MEDIATEK=y -# CONFIG_MT7601U is not set -# CONFIG_MT76x0U is not set -# CONFIG_MT76x2E is not set -# CONFIG_MT76x2U is not set -CONFIG_WLAN_VENDOR_RALINK=y -# CONFIG_RT2X00 is not set -CONFIG_WLAN_VENDOR_REALTEK=y -# CONFIG_RTL8180 is not set -# CONFIG_RTL8187 is not set -CONFIG_RTL_CARDS=y -# CONFIG_RTL8192CE is not set -# CONFIG_RTL8192SE is not set -# CONFIG_RTL8192DE is not set -# CONFIG_RTL8723AE is not set -# CONFIG_RTL8723BE is not set -# CONFIG_RTL8188EE is not set -# CONFIG_RTL8192EE is not set -# CONFIG_RTL8821AE is not set -# CONFIG_RTL8192CU is not set -# CONFIG_RTL8XXXU is not set -CONFIG_WLAN_VENDOR_RSI=y -# CONFIG_RSI_91X is not set -CONFIG_WLAN_VENDOR_ST=y -# CONFIG_CW1200 is not set -CONFIG_WLAN_VENDOR_TI=y -# CONFIG_WL1251 is not set -# CONFIG_WL12XX is not set -# CONFIG_WL18XX is not set -# CONFIG_WLCORE is not set -CONFIG_WLAN_VENDOR_ZYDAS=y -# CONFIG_USB_ZD1201 is not set -# CONFIG_ZD1211RW is not set -CONFIG_WLAN_VENDOR_QUANTENNA=y -# CONFIG_QTNFMAC_PEARL_PCIE is not set -CONFIG_WL_ROCKCHIP=y -CONFIG_WIFI_BUILD_MODULE=y -CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP=y -# CONFIG_WIFI_GENERATE_RANDOM_MAC_ADDR is not set -CONFIG_BCMDHD=y -CONFIG_AP6XXX=m -CONFIG_AP6XXX_WIFI6=m -# CONFIG_AP6XXX_INDEP_POWER is not set -CONFIG_BCMDHD_FW_PATH="/etc/firmware/fw_bcmdhd.bin" -CONFIG_BCMDHD_NVRAM_PATH="/etc/firmware/nvram.txt" -# CONFIG_BCMDHD_STATIC_IF is not set -CONFIG_RTL_WIRELESS_SOLUTION=y -CONFIG_RTL8188EU=m -CONFIG_RTL8188FU=y -CONFIG_RTL8189FS=m -# CONFIG_RTL8723CS is not set -CONFIG_RTL8723DS=m -CONFIG_RTL8821CS=m -# CONFIG_RTL8822BS is not set -# CONFIG_MVL88W8977 is not set -# CONFIG_CYW_BCMDHD is not set -# CONFIG_MAC80211_HWSIM is not set -CONFIG_USB_NET_RNDIS_WLAN=y -# CONFIG_VIRT_WIFI is not set - -# -# Enable WiMAX (Networking options) to see the WiMAX drivers -# -# CONFIG_WAN is not set -# CONFIG_VMXNET3 is not set -# CONFIG_LTE is not set -# CONFIG_NETDEVSIM is not set -# CONFIG_NET_FAILOVER is not set -# CONFIG_ISDN is not set -# CONFIG_NVM is not set - -# -# Input device support -# -CONFIG_INPUT=y -CONFIG_INPUT_LEDS=y -CONFIG_INPUT_FF_MEMLESS=y -CONFIG_INPUT_POLLDEV=y -# CONFIG_INPUT_SPARSEKMAP is not set +CONFIG_MWIFIEX_USB=m +CONFIG_MT7601U=m +CONFIG_RT2X00=m +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +CONFIG_RT2800USB_UNKNOWN=y +CONFIG_RTL8180=m +CONFIG_RTL8187=m +CONFIG_RTL8192CE=m +CONFIG_RTL8192SE=m +CONFIG_RTL8192DE=m +CONFIG_RTL8723AE=m +CONFIG_RTL8723BE=m +CONFIG_RTL8188EE=m +CONFIG_RTL8192EE=m +CONFIG_RTL8821AE=m +CONFIG_RTL8XXXU=m +CONFIG_RTL8XXXU_UNTESTED=y +CONFIG_RTW88=m +CONFIG_RTW88_8822BE=m +CONFIG_RTW88_8822BU=m +CONFIG_RTW88_8822CE=m +CONFIG_RTW88_8822CU=m +CONFIG_RTW88_8723DE=m +CONFIG_RTW88_8723DS=m +CONFIG_RTW88_8723DU=m +CONFIG_RTW88_8821CE=m +CONFIG_RTW88_8821CS=m +CONFIG_RTW89=m +CONFIG_RTW89_8852AE=m +CONFIG_RTW89_8852CE=m +CONFIG_ZD1211RW=m +CONFIG_ISDN=y CONFIG_INPUT_MATRIXKMAP=y - -# -# Userland interfaces -# -# CONFIG_INPUT_MOUSEDEV is not set CONFIG_INPUT_JOYDEV=y CONFIG_INPUT_EVDEV=y -# CONFIG_INPUT_EVBUG is not set - -# -# Input Device Drivers -# -CONFIG_INPUT_KEYBOARD=y CONFIG_KEYBOARD_ADC=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_DLINK_DIR685 is not set -# CONFIG_KEYBOARD_LKKBD is not set CONFIG_KEYBOARD_GPIO=y CONFIG_KEYBOARD_GPIO_POLLED=y -# 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_TM2_TOUCHKEY is not set -# CONFIG_KEYBOARD_XTKBD is not set -CONFIG_KEYBOARD_CROS_EC=y -# CONFIG_KEYBOARD_CAP11XX is not set -# CONFIG_KEYBOARD_BCM is not set -CONFIG_INPUT_MOUSE=y # CONFIG_MOUSE_PS2 is not set -# CONFIG_MOUSE_SERIAL is not set -# CONFIG_MOUSE_APPLETOUCH is not set -# CONFIG_MOUSE_BCM5974 is not set -CONFIG_MOUSE_CYAPA=y -CONFIG_MOUSE_ELAN_I2C=y -CONFIG_MOUSE_ELAN_I2C_I2C=y -# CONFIG_MOUSE_ELAN_I2C_SMBUS is not set -# CONFIG_MOUSE_VSXXXAA is not set -# CONFIG_MOUSE_GPIO is not set -# CONFIG_MOUSE_SYNAPTICS_I2C is not set -# CONFIG_MOUSE_SYNAPTICS_USB is not set CONFIG_INPUT_JOYSTICK=y -CONFIG_JOYSTICK_ANALOG=m -CONFIG_JOYSTICK_A3D=m -CONFIG_JOYSTICK_ADI=m -CONFIG_JOYSTICK_COBRA=m -CONFIG_JOYSTICK_GF2K=m -CONFIG_JOYSTICK_GRIP=m -CONFIG_JOYSTICK_GRIP_MP=m -CONFIG_JOYSTICK_GUILLEMOT=m -CONFIG_JOYSTICK_INTERACT=m -CONFIG_JOYSTICK_SIDEWINDER=m -CONFIG_JOYSTICK_TMDC=m -CONFIG_JOYSTICK_IFORCE=m -CONFIG_JOYSTICK_IFORCE_USB=y -CONFIG_JOYSTICK_IFORCE_232=y -CONFIG_JOYSTICK_WARRIOR=m -CONFIG_JOYSTICK_MAGELLAN=m -CONFIG_JOYSTICK_SPACEORB=m -CONFIG_JOYSTICK_SPACEBALL=m -CONFIG_JOYSTICK_STINGER=m -CONFIG_JOYSTICK_TWIDJOY=m -CONFIG_JOYSTICK_ZHENHUA=m -CONFIG_JOYSTICK_AS5011=m -CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_ADC=y CONFIG_JOYSTICK_XPAD=m CONFIG_JOYSTICK_XPAD_FF=y -CONFIG_JOYSTICK_XPAD_LEDS=y -CONFIG_JOYSTICK_SINGLEADCJOY=y -# CONFIG_JOYSTICK_PSXPAD_SPI is not set -# CONFIG_JOYSTICK_PXRC is not set -# CONFIG_INPUT_TABLET is not set +CONFIG_INPUT_TABLET=y CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_PROPERTIES=y -# CONFIG_TOUCHSCREEN_ADS7846 is not set -# CONFIG_TOUCHSCREEN_AD7877 is not set -# CONFIG_TOUCHSCREEN_AD7879 is not set -# CONFIG_TOUCHSCREEN_ADC is not set -# CONFIG_TOUCHSCREEN_AR1021_I2C is not set CONFIG_TOUCHSCREEN_ATMEL_MXT=y -# CONFIG_TOUCHSCREEN_ATMEL_MXT_T37 is not set -# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set -# CONFIG_TOUCHSCREEN_BU21013 is not set -# CONFIG_TOUCHSCREEN_BU21029 is not set -# CONFIG_TOUCHSCREEN_CHIPONE_ICN8318 is not set -# CONFIG_TOUCHSCREEN_CY8C40XX is not set -# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set -# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set -# CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set -# CONFIG_TOUCHSCREEN_DYNAPRO is not set -# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set -# CONFIG_TOUCHSCREEN_EETI is not set -# CONFIG_TOUCHSCREEN_EGALAX is not set -# CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set -# CONFIG_TOUCHSCREEN_EXC3000 is not set -# CONFIG_TOUCHSCREEN_FUJITSU is not set -# CONFIG_TOUCHSCREEN_GOODIX is not set -# CONFIG_TOUCHSCREEN_GSLX6801 is not set -# CONFIG_TOUCHSCREEN_GSLX680A is not set -# CONFIG_TOUCHSCREEN_GSLX680_D708 is not set -# CONFIG_TOUCHSCREEN_GSLX680_PAD is not set -# CONFIG_TOUCHSCREEN_GSLX680_VR is not set -CONFIG_TOUCHSCREEN_GSLX680_FIREFLY=y -# CONFIG_TOUCHSCREEN_GSL3673 is not set -# CONFIG_TOUCHSCREEN_GSL3673_800X1280 is not set -# CONFIG_TOUCHSCREEN_GSL3676 is not set -# CONFIG_TOUCHSCREEN_GT9XX is not set -# CONFIG_TOUCHSCREEN_HIDEEP is not set -# CONFIG_TOUCHSCREEN_HYN_CST2XX is not set -# CONFIG_TOUCHSCREEN_ILI210X is not set -# CONFIG_TOUCHSCREEN_S6SY761 is not set -# CONFIG_TOUCHSCREEN_GUNZE is not set -# CONFIG_TOUCHSCREEN_EKTF2127 is not set -CONFIG_TOUCHSCREEN_ELAN=y -# CONFIG_TOUCHSCREEN_ELO is not set -# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set -# CONFIG_TOUCHSCREEN_WACOM_I2C is not set -CONFIG_TOUCHSCREEN_WACOM_W9013=y -# CONFIG_TOUCHSCREEN_MAX11801 is not set -# CONFIG_TOUCHSCREEN_MCS5000 is not set -# CONFIG_TOUCHSCREEN_MMS114 is not set -# CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set -# CONFIG_TOUCHSCREEN_MTOUCH is not set -# CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set -# CONFIG_TOUCHSCREEN_INEXIO is not set -# CONFIG_TOUCHSCREEN_MK712 is not set -# CONFIG_TOUCHSCREEN_PENMOUNT is not set -# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set -# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set -# CONFIG_TOUCHSCREEN_TOUCHWIN is not set -# CONFIG_TOUCHSCREEN_PIXCIR is not set -# CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set +CONFIG_TOUCHSCREEN_GOODIX=y +CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=y CONFIG_TOUCHSCREEN_USB_COMPOSITE=y -CONFIG_TOUCHSCREEN_USB_EGALAX=y -CONFIG_TOUCHSCREEN_USB_PANJIT=y -CONFIG_TOUCHSCREEN_USB_3M=y -CONFIG_TOUCHSCREEN_USB_ITM=y -CONFIG_TOUCHSCREEN_USB_ETURBO=y -CONFIG_TOUCHSCREEN_USB_GUNZE=y -CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y -CONFIG_TOUCHSCREEN_USB_IRTOUCH=y -CONFIG_TOUCHSCREEN_USB_IDEALTEK=y -CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y -CONFIG_TOUCHSCREEN_USB_GOTOP=y -CONFIG_TOUCHSCREEN_USB_JASTEC=y -CONFIG_TOUCHSCREEN_USB_ELO=y -CONFIG_TOUCHSCREEN_USB_E2I=y -CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y -CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y -CONFIG_TOUCHSCREEN_USB_NEXIO=y -CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y -# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set -# CONFIG_TOUCHSCREEN_TSC_SERIO is not set -# CONFIG_TOUCHSCREEN_TSC2004 is not set -# CONFIG_TOUCHSCREEN_TSC2005 is not set -# CONFIG_TOUCHSCREEN_TSC2007 is not set -# CONFIG_TOUCHSCREEN_RM_TS is not set -# CONFIG_TOUCHSCREEN_SILEAD is not set -# CONFIG_TOUCHSCREEN_SIS_I2C is not set -# CONFIG_TOUCHSCREEN_ST1232 is not set -# CONFIG_TOUCHSCREEN_STMFTS is not set -# CONFIG_TOUCHSCREEN_SUR40 is not set -# CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set -# CONFIG_TOUCHSCREEN_SX8654 is not set -# CONFIG_TOUCHSCREEN_TPS6507X is not set -# CONFIG_TOUCHSCREEN_ZET6223 is not set -# CONFIG_TOUCHSCREEN_ZFORCE is not set -# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set -# CONFIG_TOUCHSCREEN_VTL_CT36X is not set -CONFIG_TOUCHSCREEN_GT1X=y -# CONFIG_TOUCHSCREEN_FTS is not set -# CONFIG_TOUCHSCREEN_FT5436 is not set -CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5=y -CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_DEVICETREE_SUPPORT=y -CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_I2C=y -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_SPI is not set -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_MT_A is not set -CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_MT_B=y -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_BUTTON is not set -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_PROXIMITY is not set -CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_DEVICE_ACCESS=y -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_DEVICE_ACCESS_API is not set -CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_LOADER=y -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_PLATFORM_FW_UPGRADE is not set -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_BINARY_FW_UPGRADE is not set -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_PLATFORM_TTCONFIG_UPGRADE is not set -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_MANUAL_TTCONFIG_UPGRADE is not set -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_DEBUG_MDL is not set -CONFIG_ROCKCHIP_REMOTECTL=y -CONFIG_ROCKCHIP_REMOTECTL_PWM=y - -# -# handle all sensors -# -CONFIG_SENSOR_DEVICE=y -# CONFIG_ANGLE_DEVICE is not set -CONFIG_GSENSOR_DEVICE=y -# CONFIG_GS_MMA8452 is not set -# CONFIG_STK8BAXX_ACC is not set -# CONFIG_MPU6880_ACC is not set -# CONFIG_MPU6500_ACC is not set -# CONFIG_GS_KXTIK is not set -# CONFIG_GS_KXTJ9 is not set -# CONFIG_GS_LIS3DH is not set -# CONFIG_GS_MMA7660 is not set -CONFIG_GS_MC3230=y -# CONFIG_GS_SC7660 is not set -# CONFIG_GS_SC7A20 is not set -# CONFIG_GS_SC7A30 is not set -# CONFIG_GS_MXC6225 is not set -# CONFIG_GS_MXC6655XA is not set -# CONFIG_GS_DMT10 is not set -# CONFIG_GS_LSM303D is not set -# CONFIG_GS_BMA023 is not set -# CONFIG_LSM330_ACC is not set -# CONFIG_BMA2XX_ACC is not set -# CONFIG_GS_DA223 is not set -# CONFIG_ICM2060X_ACC is not set -# CONFIG_COMPASS_DEVICE is not set -# CONFIG_GYROSCOPE_DEVICE is not set -# CONFIG_LIGHT_DEVICE is not set -# CONFIG_PROXIMITY_DEVICE is not set -# CONFIG_TEMPERATURE_DEVICE is not set -# CONFIG_PRESSURE_DEVICE is not set -# CONFIG_HALL_DEVICE is not set CONFIG_INPUT_MISC=y -# CONFIG_INPUT_AD714X is not set -# CONFIG_INPUT_ATMEL_CAPTOUCH is not set -# CONFIG_INPUT_BMA150 is not set -# CONFIG_INPUT_E3X0_BUTTON is not set -# CONFIG_INPUT_MMA8450 is not set -# CONFIG_INPUT_GP2A is not set -# CONFIG_INPUT_GPIO_BEEPER is not set -# CONFIG_INPUT_GPIO_DECODER is not set -# CONFIG_INPUT_ATI_REMOTE2 is not set -# CONFIG_INPUT_KEYSPAN_REMOTE is not set -# CONFIG_INPUT_KXTJ9 is not set -# CONFIG_INPUT_POWERMATE is not set -# CONFIG_INPUT_YEALINK is not set -# CONFIG_INPUT_CM109 is not set -# CONFIG_INPUT_REGULATOR_HAPTIC is not set CONFIG_INPUT_UINPUT=y -# CONFIG_INPUT_PCF8574 is not set -# CONFIG_INPUT_PWM_BEEPER is not set -# CONFIG_INPUT_PWM_VIBRA is not set +CONFIG_INPUT_PWM_VIBRA=y CONFIG_INPUT_RK805_PWRKEY=y -# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set -# CONFIG_INPUT_ADXL34X is not set -# CONFIG_INPUT_IMS_PCU is not set -# CONFIG_INPUT_CMA3000 is not set -# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set -# CONFIG_INPUT_DRV260X_HAPTICS is not set -# CONFIG_INPUT_DRV2665_HAPTICS is not set -# CONFIG_INPUT_DRV2667_HAPTICS is not set -# CONFIG_RMI4_CORE is not set - -# -# Hardware I/O ports -# -CONFIG_SERIO=m CONFIG_SERIO_SERPORT=m -# CONFIG_SERIO_AMBAKMI is not set -# CONFIG_SERIO_PCIPS2 is not set -# CONFIG_SERIO_LIBPS2 is not set -# CONFIG_SERIO_RAW is not set -# CONFIG_SERIO_ALTERA_PS2 is not set -# CONFIG_SERIO_PS2MULT is not set -# CONFIG_SERIO_ARC_PS2 is not set -# CONFIG_SERIO_APBPS2 is not set -# CONFIG_SERIO_GPIO_PS2 is not set -# CONFIG_USERIO is not set -CONFIG_GAMEPORT=m -# CONFIG_GAMEPORT_NS558 is not set -# CONFIG_GAMEPORT_L4 is not set -# CONFIG_GAMEPORT_EMU10K1 is not set -# CONFIG_GAMEPORT_FM801 is not set - -# -# Character devices -# -CONFIG_TTY=y -CONFIG_VT=y -CONFIG_CONSOLE_TRANSLATIONS=y -CONFIG_VT_CONSOLE=y -CONFIG_VT_CONSOLE_SLEEP=y -CONFIG_HW_CONSOLE=y -CONFIG_VT_HW_CONSOLE_BINDING=y -CONFIG_UNIX98_PTYS=y +CONFIG_GAMEPORT=y # CONFIG_LEGACY_PTYS is not set -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_NOZOMI is not set -# CONFIG_N_GSM is not set -# CONFIG_TRACE_SINK is not set -CONFIG_LDISC_AUTOLOAD=y -CONFIG_DEVMEM=y - -# -# Serial drivers -# -CONFIG_SERIAL_EARLYCON=y CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y -# CONFIG_SERIAL_8250_FINTEK is not set CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_DMA=y # CONFIG_SERIAL_8250_PCI is not set -CONFIG_SERIAL_8250_NR_UARTS=10 -CONFIG_SERIAL_8250_RUNTIME_UARTS=10 -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_ASPEED_VUART is not set -CONFIG_SERIAL_8250_FSL=y +CONFIG_SERIAL_8250_NR_UARTS=5 +CONFIG_SERIAL_8250_RUNTIME_UARTS=5 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_SHARE_IRQ=y CONFIG_SERIAL_8250_DW=y -# CONFIG_SERIAL_8250_RT288X is not set -# CONFIG_SERIAL_8250_MOXA is not set CONFIG_SERIAL_OF_PLATFORM=y - -# -# 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_UARTLITE is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -# CONFIG_SERIAL_JSM is not set -# CONFIG_SERIAL_MSM_GENI_HALF_SAMPLING is not set -# CONFIG_SERIAL_MSM_GENI_EARLY_CONSOLE is not set -# 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_RP2 is not set -# CONFIG_SERIAL_FSL_LPUART is not set -# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y CONFIG_SERIAL_DEV_BUS=y -CONFIG_SERIAL_DEV_CTRL_TTYPORT=y -# CONFIG_TTY_PRINTK is not set -# CONFIG_HVC_DCC is not set -# CONFIG_IPMI_HANDLER is not set CONFIG_HW_RANDOM=y -# CONFIG_HW_RANDOM_TIMERIOMEM is not set -CONFIG_HW_RANDOM_CAVIUM=y -CONFIG_HW_RANDOM_ROCKCHIP=y -# CONFIG_APPLICOM is not set - -# -# PCMCIA character devices -# -# CONFIG_RAW_DRIVER is not set CONFIG_TCG_TPM=y -CONFIG_HW_RANDOM_TPM=y -# CONFIG_TCG_TIS is not set -# CONFIG_TCG_TIS_SPI is not set -# CONFIG_TCG_TIS_I2C_ATMEL is not set -CONFIG_TCG_TIS_I2C_INFINEON=y -# CONFIG_TCG_TIS_I2C_NUVOTON is not set -# CONFIG_TCG_ATMEL is not set -# CONFIG_TCG_VTPM_PROXY is not set -# CONFIG_TCG_TIS_ST33ZP24_I2C is not set -# CONFIG_TCG_TIS_ST33ZP24_SPI is not set -CONFIG_DEVPORT=y -# CONFIG_XILLYBUS is not set -# CONFIG_RANDOM_TRUST_BOOTLOADER is not set - -# -# I2C support -# -CONFIG_I2C=y -CONFIG_I2C_BOARDINFO=y -CONFIG_I2C_COMPAT=y +# CONFIG_I2C_COMPAT is not set CONFIG_I2C_CHARDEV=y -CONFIG_I2C_MUX=y - -# -# Multiplexer I2C Chip support -# -# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set -# CONFIG_I2C_MUX_GPIO is not set -# CONFIG_I2C_MUX_GPMUX is not set -# CONFIG_I2C_MUX_LTC4306 is not set -# CONFIG_I2C_MUX_PCA9541 is not set -# CONFIG_I2C_MUX_PCA954x is not set -# CONFIG_I2C_MUX_PINCTRL is not set -# CONFIG_I2C_MUX_REG is not set -# CONFIG_I2C_DEMUX_PINCTRL is not set -# CONFIG_I2C_MUX_MLXCPLD is not set -CONFIG_I2C_HELPER_AUTO=y -CONFIG_I2C_ALGOBIT=y - -# -# I2C Hardware Bus support -# - -# -# PC SMBus host controller drivers -# -# CONFIG_I2C_ALI1535 is not set -# CONFIG_I2C_ALI1563 is not set -# CONFIG_I2C_ALI15X3 is not set -# CONFIG_I2C_AMD756 is not set -# CONFIG_I2C_AMD8111 is not set -# CONFIG_I2C_I801 is not set -# CONFIG_I2C_ISCH is not set -# CONFIG_I2C_PIIX4 is not set -# CONFIG_I2C_NFORCE2 is not set -# CONFIG_I2C_SIS5595 is not set -# CONFIG_I2C_SIS630 is not set -# CONFIG_I2C_SIS96X is not set -# CONFIG_I2C_VIA is not set -# CONFIG_I2C_VIAPRO is not set - -# -# I2C system bus drivers (mostly embedded / system-on-chip) -# -# CONFIG_I2C_CADENCE is not set -# CONFIG_I2C_CBUS_GPIO is not set -# CONFIG_I2C_DESIGNWARE_PLATFORM is not set -# CONFIG_I2C_DESIGNWARE_PCI is not set -# CONFIG_I2C_EMEV2 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_DESIGNWARE_PLATFORM=y CONFIG_I2C_RK3X=y -# CONFIG_I2C_SIMTEC is not set -# CONFIG_I2C_THUNDERX 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_CROS_EC_TUNNEL=y -# CONFIG_I2C_STUB is not set -# CONFIG_I2C_SLAVE is not set -# CONFIG_I2C_DEBUG_CORE is not set -# CONFIG_I2C_DEBUG_ALGO is not set -# CONFIG_I2C_DEBUG_BUS is not set CONFIG_SPI=y -# CONFIG_SPI_DEBUG is not set -CONFIG_SPI_MASTER=y -# CONFIG_SPI_MEM is not set - -# -# SPI Master Controller Drivers -# -# CONFIG_SPI_ALTERA is not set -# CONFIG_SPI_AXI_SPI_ENGINE is not set -CONFIG_SPI_BITBANG=y -# CONFIG_SPI_CADENCE is not set -# CONFIG_SPI_DESIGNWARE is not set -# CONFIG_SPI_GPIO is not set -# CONFIG_SPI_FSL_SPI is not set -# CONFIG_SPI_OC_TINY is not set -# CONFIG_SPI_PL022 is not set -# CONFIG_SPI_PXA2XX is not set +CONFIG_SPI_GPIO=y CONFIG_SPI_ROCKCHIP=y -# CONFIG_SPI_SC18IS602 is not set -# CONFIG_SPI_THUNDERX is not set -# CONFIG_SPI_XCOMM is not set -# CONFIG_SPI_XILINX is not set -# CONFIG_SPI_ZYNQMP_GQSPI is not set - -# -# SPI Protocol Masters -# +CONFIG_SPI_ROCKCHIP_SFC=y +CONFIG_SPI_MUX=y CONFIG_SPI_SPIDEV=y -# CONFIG_SPI_LOOPBACK_TEST is not set -# CONFIG_SPI_TLE62X0 is not set -# CONFIG_SPI_SLAVE is not set -# CONFIG_SPMI is not set -# CONFIG_HSI is not set -CONFIG_PPS=y -# CONFIG_PPS_DEBUG is not set - -# -# PPS clients support -# -# CONFIG_PPS_CLIENT_KTIMER is not set -# CONFIG_PPS_CLIENT_LDISC is not set -# CONFIG_PPS_CLIENT_GPIO is not set - -# -# PPS generators support -# - -# -# PTP clock support -# -CONFIG_PTP_1588_CLOCK=y - -# -# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. -# -CONFIG_PINCTRL=y -CONFIG_PINMUX=y -CONFIG_PINCONF=y -CONFIG_GENERIC_PINCONF=y -# CONFIG_DEBUG_PINCTRL is not set -# CONFIG_PINCTRL_AMD is not set -# CONFIG_PINCTRL_MCP23S08 is not set -CONFIG_PINCTRL_ROCKCHIP=y -# CONFIG_PINCTRL_SINGLE is not set -# CONFIG_PINCTRL_SX150X is not set -CONFIG_PINCTRL_RK628=y CONFIG_PINCTRL_RK805=y -CONFIG_GPIOLIB=y -CONFIG_GPIOLIB_FASTPATH_LIMIT=512 -CONFIG_OF_GPIO=y -CONFIG_GPIOLIB_IRQCHIP=y -# CONFIG_DEBUG_GPIO is not set +CONFIG_PINCTRL_SINGLE=y CONFIG_GPIO_SYSFS=y -CONFIG_GPIO_GENERIC=y - -# -# Memory mapped GPIO drivers -# -# CONFIG_GPIO_74XX_MMIO is not set -# CONFIG_GPIO_ALTERA is not set -# CONFIG_GPIO_DWAPB is not set -# CONFIG_GPIO_FTGPIO010 is not set +CONFIG_GPIO_DWAPB=y CONFIG_GPIO_GENERIC_PLATFORM=y -# CONFIG_GPIO_GRGPIO is not set -# CONFIG_GPIO_HLWD is not set -# CONFIG_GPIO_MB86S7X is not set -# CONFIG_GPIO_MOCKUP is not set -# CONFIG_GPIO_PL061 is not set -CONFIG_GPIO_ROCKCHIP=y -# CONFIG_GPIO_SYSCON is not set -# CONFIG_GPIO_XGENE is not set -# CONFIG_GPIO_XILINX is not set - -# -# I2C GPIO expanders -# -# CONFIG_GPIO_ADP5588 is not set -# CONFIG_GPIO_ADNP is not set -# CONFIG_GPIO_MAX7300 is not set -# CONFIG_GPIO_MAX732X is not set -CONFIG_GPIO_PCA953X=y -# CONFIG_GPIO_PCA953X_IRQ is not set -# CONFIG_GPIO_PCF857X is not set -# CONFIG_GPIO_TPIC2810 is not set - -# -# MFD GPIO expanders -# -# CONFIG_GPIO_TPS6586X is not set - -# -# PCI GPIO expanders -# -# CONFIG_GPIO_BT8XX is not set -# CONFIG_GPIO_PCI_IDIO_16 is not set -# CONFIG_GPIO_PCIE_IDIO_24 is not set -# CONFIG_GPIO_RDC321X is not set - -# -# SPI GPIO expanders -# -# CONFIG_GPIO_74X164 is not set -# CONFIG_GPIO_MAX3191X is not set -# CONFIG_GPIO_MAX7301 is not set -# CONFIG_GPIO_MC33880 is not set -# CONFIG_GPIO_PISOSR is not set -# CONFIG_GPIO_XRA1403 is not set - -# -# USB GPIO expanders -# -# CONFIG_W1 is not set -CONFIG_POWER_AVS=y -CONFIG_ROCKCHIP_IODOMAIN=y -CONFIG_POWER_RESET=y -# CONFIG_POWER_RESET_BRCMSTB is not set CONFIG_POWER_RESET_GPIO=y CONFIG_POWER_RESET_GPIO_RESTART=y -# CONFIG_POWER_RESET_LTC2952 is not set -# CONFIG_POWER_RESET_RESTART is not set -# CONFIG_POWER_RESET_XGENE is not set -# CONFIG_POWER_RESET_SYSCON is not set -# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set -CONFIG_REBOOT_MODE=y +CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y CONFIG_SYSCON_REBOOT_MODE=y -CONFIG_POWER_SUPPLY=y -# CONFIG_POWER_SUPPLY_DEBUG is not set -# CONFIG_PDA_POWER is not set -# CONFIG_GENERIC_ADC_BATTERY is not set -# CONFIG_TEST_POWER is not set -# CONFIG_CHARGER_ADP5061 is not set -# CONFIG_BATTERY_DS2780 is not set -# CONFIG_BATTERY_DS2781 is not set -# CONFIG_BATTERY_DS2782 is not set -# CONFIG_BATTERY_LEGO_EV3 is not set +CONFIG_BATTERY_CW2015=y CONFIG_BATTERY_SBS=y -# CONFIG_CHARGER_SBS is not set -# CONFIG_MANAGER_SBS is not set -# CONFIG_BATTERY_BQ27XXX is not set -# CONFIG_BATTERY_MAX17040 is not set -# CONFIG_BATTERY_MAX17042 is not set -# CONFIG_CHARGER_ISP1704 is not set -# CONFIG_CHARGER_MAX8903 is not set -# CONFIG_CHARGER_LP8727 is not set CONFIG_CHARGER_GPIO=y -# CONFIG_CHARGER_MANAGER is not set -# CONFIG_CHARGER_LTC3651 is not set -# CONFIG_CHARGER_DETECTOR_MAX14656 is not set -# CONFIG_CHARGER_BQ2415X is not set -# CONFIG_CHARGER_BQ24190 is not set -# CONFIG_CHARGER_BQ24257 is not set CONFIG_CHARGER_BQ24735=y -# CONFIG_CHARGER_BQ25700 is not set -# CONFIG_CHARGER_BQ25890 is not set -# CONFIG_CHARGER_SMB347 is not set -# CONFIG_BATTERY_GAUGE_LTC2941 is not set -# CONFIG_CHARGER_RT9455 is not set -# CONFIG_CHARGER_CROS_USBPD is not set -CONFIG_BATTERY_CW2015=y -# CONFIG_BATTERY_RK816 is not set -CONFIG_BATTERY_RK817=y CONFIG_CHARGER_RK817=y -# CONFIG_BATTERY_RK818 is not set -# CONFIG_CHARGER_RK818 is not set -CONFIG_HWMON=y -# CONFIG_HWMON_DEBUG_CHIP is not set - -# -# Native drivers -# -# CONFIG_SENSORS_AD7314 is not set -# CONFIG_SENSORS_AD7414 is not set -# CONFIG_SENSORS_AD7418 is not set -# CONFIG_SENSORS_ADM1021 is not set -# CONFIG_SENSORS_ADM1025 is not set -# CONFIG_SENSORS_ADM1026 is not set -# CONFIG_SENSORS_ADM1029 is not set -# CONFIG_SENSORS_ADM1031 is not set -# CONFIG_SENSORS_ADM9240 is not set -# CONFIG_SENSORS_ADT7310 is not set -# CONFIG_SENSORS_ADT7410 is not set -# CONFIG_SENSORS_ADT7411 is not set -# CONFIG_SENSORS_ADT7462 is not set -# CONFIG_SENSORS_ADT7470 is not set -# CONFIG_SENSORS_ADT7475 is not set -# CONFIG_SENSORS_ASC7621 is not set -# CONFIG_SENSORS_ARM_SCMI is not set -# CONFIG_SENSORS_ASPEED is not set -# CONFIG_SENSORS_ATXP1 is not set -# CONFIG_SENSORS_DS620 is not set -# CONFIG_SENSORS_DS1621 is not set -# CONFIG_SENSORS_I5K_AMB is not set -# CONFIG_SENSORS_F71805F is not set -# CONFIG_SENSORS_F71882FG is not set -# CONFIG_SENSORS_F75375S is not set -# CONFIG_SENSORS_FTSTEUTATES is not set -# CONFIG_SENSORS_GL518SM is not set -# CONFIG_SENSORS_GL520SM is not set -# CONFIG_SENSORS_G760A is not set -# CONFIG_SENSORS_G762 is not set -# CONFIG_SENSORS_GPIO_FAN is not set -# CONFIG_SENSORS_HIH6130 is not set -# CONFIG_SENSORS_IIO_HWMON is not set -# CONFIG_SENSORS_IT87 is not set -# CONFIG_SENSORS_JC42 is not set -# CONFIG_SENSORS_POWR1220 is not set -# CONFIG_SENSORS_LINEAGE is not set -# CONFIG_SENSORS_LTC2945 is not set -# CONFIG_SENSORS_LTC2990 is not set -# CONFIG_SENSORS_LTC4151 is not set -# CONFIG_SENSORS_LTC4215 is not set -# CONFIG_SENSORS_LTC4222 is not set -# CONFIG_SENSORS_LTC4245 is not set -# CONFIG_SENSORS_LTC4260 is not set -# CONFIG_SENSORS_LTC4261 is not set -# CONFIG_SENSORS_MAX1111 is not set -# CONFIG_SENSORS_MAX16065 is not set -# CONFIG_SENSORS_MAX1619 is not set -# CONFIG_SENSORS_MAX1668 is not set -# CONFIG_SENSORS_MAX197 is not set -# CONFIG_SENSORS_MAX31722 is not set -# CONFIG_SENSORS_MAX6621 is not set -# CONFIG_SENSORS_MAX6639 is not set -# CONFIG_SENSORS_MAX6642 is not set -# CONFIG_SENSORS_MAX6650 is not set -# CONFIG_SENSORS_MAX6697 is not set -# CONFIG_SENSORS_MAX31790 is not set -# CONFIG_SENSORS_MCP3021 is not set -# CONFIG_SENSORS_TC654 is not set -# CONFIG_SENSORS_ADCXX is not set -# CONFIG_SENSORS_LM63 is not set -# CONFIG_SENSORS_LM70 is not set -# CONFIG_SENSORS_LM73 is not set -# CONFIG_SENSORS_LM75 is not set -# CONFIG_SENSORS_LM77 is not set -# CONFIG_SENSORS_LM78 is not set -# CONFIG_SENSORS_LM80 is not set -# CONFIG_SENSORS_LM83 is not set -# CONFIG_SENSORS_LM85 is not set -# CONFIG_SENSORS_LM87 is not set -# CONFIG_SENSORS_LM90 is not set -# CONFIG_SENSORS_LM92 is not set -# CONFIG_SENSORS_LM93 is not set -# CONFIG_SENSORS_LM95234 is not set -# CONFIG_SENSORS_LM95241 is not set -# CONFIG_SENSORS_LM95245 is not set -# CONFIG_SENSORS_PC87360 is not set -# CONFIG_SENSORS_PC87427 is not set -# CONFIG_SENSORS_NTC_THERMISTOR is not set -# CONFIG_SENSORS_NCT6683 is not set -# CONFIG_SENSORS_NCT6775 is not set -# CONFIG_SENSORS_NCT7802 is not set -# CONFIG_SENSORS_NCT7904 is not set -# CONFIG_SENSORS_NPCM7XX is not set -# CONFIG_SENSORS_PCF8591 is not set -# CONFIG_PMBUS is not set -# CONFIG_SENSORS_PWM_FAN is not set -# CONFIG_SENSORS_SHT15 is not set -# CONFIG_SENSORS_SHT21 is not set -# CONFIG_SENSORS_SHT3x is not set -# CONFIG_SENSORS_SHTC1 is not set -# CONFIG_SENSORS_SIS5595 is not set -# CONFIG_SENSORS_DME1737 is not set -# CONFIG_SENSORS_EMC1403 is not set -# CONFIG_SENSORS_EMC2103 is not set -# CONFIG_SENSORS_EMC6W201 is not set -# CONFIG_SENSORS_SMSC47M1 is not set -# CONFIG_SENSORS_SMSC47M192 is not set -# CONFIG_SENSORS_SMSC47B397 is not set -# CONFIG_SENSORS_SCH5627 is not set -# CONFIG_SENSORS_SCH5636 is not set -# CONFIG_SENSORS_STTS751 is not set -# CONFIG_SENSORS_SMM665 is not set -# CONFIG_SENSORS_ADC128D818 is not set -# CONFIG_SENSORS_ADS1015 is not set -# CONFIG_SENSORS_ADS7828 is not set -# CONFIG_SENSORS_ADS7871 is not set -# CONFIG_SENSORS_AMC6821 is not set -# CONFIG_SENSORS_INA209 is not set -# CONFIG_SENSORS_INA2XX is not set -# CONFIG_SENSORS_INA3221 is not set -# CONFIG_SENSORS_TC74 is not set -# CONFIG_SENSORS_THMC50 is not set -# CONFIG_SENSORS_TMP102 is not set -# CONFIG_SENSORS_TMP103 is not set -# CONFIG_SENSORS_TMP108 is not set -# CONFIG_SENSORS_TMP401 is not set -# CONFIG_SENSORS_TMP421 is not set -# CONFIG_SENSORS_VIA686A is not set -# CONFIG_SENSORS_VT1211 is not set -# CONFIG_SENSORS_VT8231 is not set -# CONFIG_SENSORS_W83773G is not set -# CONFIG_SENSORS_W83781D is not set -# CONFIG_SENSORS_W83791D is not set -# CONFIG_SENSORS_W83792D is not set -# CONFIG_SENSORS_W83793 is not set -# CONFIG_SENSORS_W83795 is not set -# CONFIG_SENSORS_W83L785TS is not set -# CONFIG_SENSORS_W83L786NG is not set -# CONFIG_SENSORS_W83627HF is not set -# CONFIG_SENSORS_W83627EHF is not set +CONFIG_SENSORS_PWM_FAN=y CONFIG_THERMAL=y -# CONFIG_THERMAL_STATISTICS is not set -CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 -CONFIG_THERMAL_HWMON=y -CONFIG_THERMAL_OF=y CONFIG_THERMAL_WRITABLE_TRIPS=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_DEFAULT_GOV_POWER_ALLOCATOR=y CONFIG_THERMAL_GOV_FAIR_SHARE=y CONFIG_THERMAL_GOV_STEP_WISE=y -# CONFIG_THERMAL_GOV_BANG_BANG is not set -# CONFIG_THERMAL_GOV_USER_SPACE is not set CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y CONFIG_CPU_THERMAL=y -# CONFIG_CLOCK_THERMAL is not set CONFIG_DEVFREQ_THERMAL=y -# CONFIG_THERMAL_EMULATION is not set -# CONFIG_QORIQ_THERMAL is not set CONFIG_ROCKCHIP_THERMAL=y -# CONFIG_RK_VIRTUAL_THERMAL is not set -# CONFIG_RK3368_THERMAL is not set - -# -# ACPI INT340X thermal drivers -# -# CONFIG_GENERIC_ADC_THERMAL is not set +CONFIG_GENERIC_ADC_THERMAL=y CONFIG_WATCHDOG=y -CONFIG_WATCHDOG_CORE=y -# CONFIG_WATCHDOG_NOWAYOUT is not set -CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y -# CONFIG_WATCHDOG_SYSFS is not set - -# -# Watchdog Device Drivers -# -# CONFIG_SOFT_WATCHDOG is not set -# CONFIG_GPIO_WATCHDOG is not set -# CONFIG_XILINX_WATCHDOG is not set -# CONFIG_ZIIRAVE_WATCHDOG is not set -# CONFIG_ARM_SP805_WATCHDOG is not set -# CONFIG_ARM_SBSA_WATCHDOG is not set -# CONFIG_CADENCE_WATCHDOG is not set CONFIG_DW_WATCHDOG=y -# CONFIG_MAX63XX_WATCHDOG is not set -# CONFIG_ALIM7101_WDT is not set -# CONFIG_I6300ESB_WDT is not set -# CONFIG_MEN_A21_WDT is not set - -# -# PCI-based Watchdog Cards -# -# CONFIG_PCIPCWATCHDOG is not set -# CONFIG_WDTPCI is not set - -# -# USB-based Watchdog Cards -# -# CONFIG_USBPCWATCHDOG is not set - -# -# Watchdog Pretimeout Governors -# -# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set -CONFIG_SSB_POSSIBLE=y -# CONFIG_SSB is not set -CONFIG_BCMA_POSSIBLE=y -# CONFIG_BCMA is not set - -# -# Multifunction device drivers -# -CONFIG_MFD_CORE=y -# CONFIG_MFD_ACT8945A is not set -# CONFIG_MFD_AS3711 is not set -# CONFIG_MFD_AS3722 is not set -# CONFIG_PMIC_ADP5520 is not set -# CONFIG_MFD_AAT2870_CORE is not set -# CONFIG_MFD_ATMEL_FLEXCOM is not set -# CONFIG_MFD_ATMEL_HLCDC is not set -# CONFIG_MFD_BCM590XX is not set -# CONFIG_MFD_BD9571MWV is not set -# CONFIG_MFD_AXP20X_I2C is not set -CONFIG_MFD_CROS_EC=y -# CONFIG_MFD_CROS_EC_CHARDEV is not set -# CONFIG_MFD_MADERA is not set -# CONFIG_PMIC_DA903X is not set -# CONFIG_MFD_DA9052_SPI is not set -# CONFIG_MFD_DA9052_I2C is not set -# CONFIG_MFD_DA9055 is not set -# CONFIG_MFD_DA9062 is not set -# CONFIG_MFD_DA9063 is not set -# CONFIG_MFD_DA9150 is not set -# CONFIG_MFD_DLN2 is not set -# CONFIG_MFD_MC13XXX_SPI is not set -# CONFIG_MFD_MC13XXX_I2C is not set -# CONFIG_MFD_HI6421_PMIC is not set -# CONFIG_HTC_PASIC3 is not set -# CONFIG_HTC_I2CPLD is not set -# CONFIG_LPC_ICH is not set -# CONFIG_LPC_SCH is not set -# CONFIG_MFD_JANZ_CMODIO is not set -# CONFIG_MFD_KEMPLD is not set -# CONFIG_MFD_88PM800 is not set -# CONFIG_MFD_88PM805 is not set -# CONFIG_MFD_88PM860X is not set -# CONFIG_MFD_MAX14577 is not set -# CONFIG_MFD_MAX77620 is not set -# CONFIG_MFD_MAX77686 is not set -# CONFIG_MFD_MAX77693 is not set -# CONFIG_MFD_MAX77843 is not set -# CONFIG_MFD_MAX8907 is not set -# CONFIG_MFD_MAX8925 is not set -# CONFIG_MFD_MAX8997 is not set -# CONFIG_MFD_MAX8998 is not set -# CONFIG_MFD_MT6397 is not set -# CONFIG_MFD_MENF21BMC is not set -# CONFIG_EZX_PCAP is not set -# CONFIG_MFD_CPCAP is not set -# CONFIG_MFD_VIPERBOARD is not set -# CONFIG_MFD_RETU is not set -# CONFIG_MFD_PCF50633 is not set -# CONFIG_MFD_RDC321X is not set -# CONFIG_MFD_RT5033 is not set -# CONFIG_MFD_RC5T583 is not set -CONFIG_MFD_RK618=y -CONFIG_MFD_RK628=y -# CONFIG_MFD_RK630 is not set -# CONFIG_MFD_RK630_I2C is not set -# CONFIG_MFD_RK630_SPI is not set -CONFIG_MFD_RK808=y -# CONFIG_MFD_RK1000 is not set -# CONFIG_MFD_RN5T618 is not set -# CONFIG_MFD_SEC_CORE is not set -# CONFIG_MFD_SI476X_CORE is not set -# CONFIG_MFD_SM501 is not set -# CONFIG_MFD_SKY81452 is not set -# CONFIG_MFD_SMSC is not set -# CONFIG_ABX500_CORE is not set -# CONFIG_MFD_STMPE 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_TI_LMU is not set -# CONFIG_MFD_PALMAS is not set -# CONFIG_TPS6105X is not set -# CONFIG_TPS65010 is not set -# CONFIG_TPS6507X is not set -# CONFIG_MFD_TPS65086 is not set -# CONFIG_MFD_TPS65090 is not set -# CONFIG_MFD_TPS65217 is not set -# CONFIG_MFD_TI_LP873X is not set -# CONFIG_MFD_TI_LP87565 is not set -# CONFIG_MFD_TPS65218 is not set +CONFIG_SSB=y +CONFIG_BCMA=y +CONFIG_MFD_RK8XX_I2C=y CONFIG_MFD_TPS6586X=y -# CONFIG_MFD_TPS65910 is not set -# CONFIG_MFD_TPS65912_I2C is not set -# CONFIG_MFD_TPS65912_SPI is not set -# CONFIG_MFD_TPS80031 is not set -# CONFIG_TWL4030_CORE is not set -# CONFIG_TWL6040_CORE is not set -# CONFIG_MFD_WL1273_CORE is not set -# CONFIG_MFD_LM3533 is not set -# CONFIG_MFD_TC3589X is not set -# CONFIG_MFD_VX855 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_MFD_ROHM_BD718XX is not set -# CONFIG_RAVE_SP_CORE is not set -CONFIG_FUSB_30X=y CONFIG_REGULATOR=y CONFIG_REGULATOR_DEBUG=y CONFIG_REGULATOR_FIXED_VOLTAGE=y -# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set -# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set -# CONFIG_REGULATOR_PROXY_CONSUMER is not set -# CONFIG_REGULATOR_88PG86X is not set +CONFIG_REGULATOR_VIRTUAL_CONSUMER=y +CONFIG_REGULATOR_USERSPACE_CONSUMER=y CONFIG_REGULATOR_ACT8865=y -# 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_ARM_SCMI=y CONFIG_REGULATOR_FAN53555=y CONFIG_REGULATOR_GPIO=y -# 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_LP8752=y -# CONFIG_REGULATOR_LP8755 is not set -# CONFIG_REGULATOR_LTC3589 is not set -# CONFIG_REGULATOR_LTC3676 is not set -# CONFIG_REGULATOR_MAX1586 is not set -# CONFIG_REGULATOR_MAX8649 is not set -# CONFIG_REGULATOR_MAX8660 is not set -# CONFIG_REGULATOR_MAX8952 is not set -# CONFIG_REGULATOR_MAX8973 is not set -CONFIG_REGULATOR_MP8865=y -# CONFIG_REGULATOR_MT6311 is not set -# CONFIG_REGULATOR_PFUZE100 is not set -# CONFIG_REGULATOR_PV88060 is not set -# CONFIG_REGULATOR_PV88080 is not set -# CONFIG_REGULATOR_PV88090 is not set CONFIG_REGULATOR_PWM=y CONFIG_REGULATOR_RK808=y -# CONFIG_REGULATOR_SY8106A is not set -# CONFIG_REGULATOR_TPS51632 is not set -# CONFIG_REGULATOR_TPS549B22 is not set -# CONFIG_REGULATOR_TPS62360 is not set -# CONFIG_REGULATOR_TPS65023 is not set -# CONFIG_REGULATOR_TPS6507X is not set -CONFIG_REGULATOR_TPS65132=y -# CONFIG_REGULATOR_TPS6524X is not set CONFIG_REGULATOR_TPS6586X=y -# CONFIG_REGULATOR_VCTRL is not set -CONFIG_REGULATOR_XZ3216=y -# CONFIG_REGULATOR_DIO5632 is not set -CONFIG_CEC_CORE=y -CONFIG_CEC_NOTIFIER=y -# CONFIG_RC_CORE is not set +CONFIG_REGULATOR_VCTRL=y +CONFIG_RC_CORE=y +CONFIG_LIRC=y +CONFIG_RC_DECODERS=y +CONFIG_IR_JVC_DECODER=y +CONFIG_IR_MCE_KBD_DECODER=y +CONFIG_IR_NEC_DECODER=y +CONFIG_IR_RC5_DECODER=y +CONFIG_IR_RC6_DECODER=y +CONFIG_IR_SANYO_DECODER=y +CONFIG_IR_SHARP_DECODER=y +CONFIG_IR_SONY_DECODER=y +CONFIG_IR_XMP_DECODER=y +CONFIG_RC_DEVICES=y +CONFIG_IR_GPIO_CIR=y +CONFIG_MEDIA_CEC_RC=y +CONFIG_MEDIA_CEC_SUPPORT=y +CONFIG_USB_PULSE8_CEC=m +CONFIG_USB_RAINSHADOW_CEC=m CONFIG_MEDIA_SUPPORT=y - -# -# Multimedia core support -# +CONFIG_MEDIA_SUPPORT_FILTER=y CONFIG_MEDIA_CAMERA_SUPPORT=y -# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set -# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set -# CONFIG_MEDIA_RADIO_SUPPORT is not set -# CONFIG_MEDIA_SDR_SUPPORT is not set -CONFIG_MEDIA_CEC_SUPPORT=y -CONFIG_MEDIA_CONTROLLER=y -CONFIG_VIDEO_DEV=y -CONFIG_VIDEO_V4L2_SUBDEV_API=y -CONFIG_VIDEO_V4L2=y -# CONFIG_VIDEO_ADV_DEBUG is not set -# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set -# CONFIG_VIDEO_PCI_SKELETON is not set -CONFIG_V4L2_MEM2MEM_DEV=y -# CONFIG_V4L2_FLASH_LED_CLASS is not set -CONFIG_V4L2_FWNODE=y - -# -# Media drivers -# +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +CONFIG_MEDIA_PLATFORM_SUPPORT=y +CONFIG_MEDIA_TEST_SUPPORT=y +CONFIG_DVB_MAX_ADAPTERS=8 +# CONFIG_DVB_DYNAMIC_MINORS is not set CONFIG_MEDIA_USB_SUPPORT=y - -# -# Webcam devices -# +CONFIG_VIDEO_USBTV=m CONFIG_USB_VIDEO_CLASS=y # CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV is not set -# CONFIG_USB_GSPCA is not set -# CONFIG_USB_PWC is not set -# CONFIG_VIDEO_CPIA2 is not set -# CONFIG_USB_ZR364XX is not set -# CONFIG_USB_STKWEBCAM is not set -# CONFIG_USB_S2255 is not set -# CONFIG_VIDEO_USBTV is not set - -# -# Webcam, TV (analog/digital) USB devices -# -# CONFIG_VIDEO_EM28XX is not set - -# -# USB HDMI CEC adapters -# -# CONFIG_USB_PULSE8_CEC is not set -# CONFIG_USB_RAINSHADOW_CEC is not set -# CONFIG_MEDIA_PCI_SUPPORT is not set +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m +CONFIG_DVB_AS102=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +CONFIG_DVB_USB_V2=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_AF9035=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_AZ6007=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_DVBSKY=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_USB=y +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_DIBUSB_MB=m +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_USB_AIRSPY=m +CONFIG_USB_HACKRF=m +CONFIG_USB_MSI2500=m +CONFIG_MEDIA_PCI_SUPPORT=y +CONFIG_VIDEO_CX23885=m +CONFIG_VIDEO_CX25821=m CONFIG_V4L_PLATFORM_DRIVERS=y -# CONFIG_VIDEO_CAFE_CCIC is not set -# CONFIG_VIDEO_CADENCE is not set -# CONFIG_VIDEO_MUX is not set -CONFIG_SOC_CAMERA=y -# CONFIG_SOC_CAMERA_PLATFORM is not set -# CONFIG_VIDEO_XILINX is not set -CONFIG_VIDEO_ROCKCHIP_CIF=y -CONFIG_ROCKCHIP_CIF_WORKMODE_PINGPONG=y -# CONFIG_ROCKCHIP_CIF_WORKMODE_ONEFRAME is not set -CONFIG_VIDEO_ROCKCHIP_ISP1=y -CONFIG_VIDEO_ROCKCHIP_ISP=y -# CONFIG_VIDEO_ROCKCHIP_ISPP is not set +CONFIG_DVB_PLATFORM_DRIVERS=y CONFIG_V4L_MEM2MEM_DRIVERS=y -# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set -# CONFIG_VIDEO_SH_VEU is not set CONFIG_VIDEO_ROCKCHIP_RGA=y -# CONFIG_V4L_TEST_DRIVERS is not set -# CONFIG_CEC_PLATFORM_DRIVERS is not set - -# -# Supported MMC/SDIO adapters -# -# CONFIG_CYPRESS_FIRMWARE is not set -CONFIG_VIDEOBUF2_CORE=y -CONFIG_VIDEOBUF2_V4L2=y -CONFIG_VIDEOBUF2_MEMOPS=y -CONFIG_VIDEOBUF2_DMA_CONTIG=y -CONFIG_VIDEOBUF2_VMALLOC=y -CONFIG_VIDEOBUF2_DMA_SG=y - -# -# Media ancillary drivers (tuners, sensors, i2c, spi, frontends) -# -# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set - -# -# I2C Encoders, decoders, sensors and other helper chips -# - -# -# Audio decoders, processors and mixers -# -# CONFIG_VIDEO_TVAUDIO is not set -# CONFIG_VIDEO_TDA7432 is not set -# CONFIG_VIDEO_TDA9840 is not set -# CONFIG_VIDEO_TDA1997X is not set -# CONFIG_VIDEO_TEA6415C is not set -# CONFIG_VIDEO_TEA6420 is not set -# CONFIG_VIDEO_MSP3400 is not set -# CONFIG_VIDEO_CS3308 is not set -# CONFIG_VIDEO_CS5345 is not set -# CONFIG_VIDEO_CS53L32A is not set -# CONFIG_VIDEO_TLV320AIC23B is not set -# CONFIG_VIDEO_UDA1342 is not set -# CONFIG_VIDEO_WM8775 is not set -# CONFIG_VIDEO_WM8739 is not set -# CONFIG_VIDEO_VP27SMPX is not set -# CONFIG_VIDEO_SONY_BTF_MPX is not set - -# -# RDS decoders -# -# CONFIG_VIDEO_SAA6588 is not set - -# -# Video decoders -# -# CONFIG_VIDEO_ADV7180 is not set -# CONFIG_VIDEO_ADV7183 is not set -# CONFIG_VIDEO_ADV748X is not set -# CONFIG_VIDEO_ADV7604 is not set -# CONFIG_VIDEO_ADV7842 is not set -# CONFIG_VIDEO_BT819 is not set -# CONFIG_VIDEO_BT856 is not set -# CONFIG_VIDEO_BT866 is not set -# CONFIG_VIDEO_KS0127 is not set -# CONFIG_VIDEO_ML86V7667 is not set -# CONFIG_VIDEO_AD5820 is not set -# CONFIG_VIDEO_AK7375 is not set -# CONFIG_VIDEO_DW9714 is not set -# CONFIG_VIDEO_DW9807_VCM is not set -# CONFIG_VIDEO_FP5510 is not set -# CONFIG_VIDEO_GT9760S is not set -# CONFIG_VIDEO_VM149C is not set -# CONFIG_VIDEO_SAA7110 is not set -# CONFIG_VIDEO_SAA711X is not set -# CONFIG_VIDEO_TC358743 is not set -# CONFIG_VIDEO_TC35874X is not set -CONFIG_VIDEO_RK628_CSI=y -# CONFIG_VIDEO_TECHPOINT is not set -# CONFIG_VIDEO_TVP514X is not set -# CONFIG_VIDEO_TVP5150 is not set -# CONFIG_VIDEO_TVP7002 is not set -# CONFIG_VIDEO_TW2804 is not set -# CONFIG_VIDEO_TW9903 is not set -# CONFIG_VIDEO_TW9906 is not set -# CONFIG_VIDEO_TW9910 is not set -# CONFIG_VIDEO_VPX3220 is not set - -# -# Video and audio decoders -# -# CONFIG_VIDEO_SAA717X is not set -# CONFIG_VIDEO_CX25840 is not set - -# -# Video encoders -# -# CONFIG_VIDEO_SAA7127 is not set -# CONFIG_VIDEO_SAA7185 is not set -# CONFIG_VIDEO_ADV7170 is not set -# CONFIG_VIDEO_ADV7175 is not set -# CONFIG_VIDEO_ADV7343 is not set -# CONFIG_VIDEO_ADV7393 is not set -# CONFIG_VIDEO_ADV7511 is not set -# CONFIG_VIDEO_AD9389B is not set -# CONFIG_VIDEO_AK881X is not set -# CONFIG_VIDEO_THS8200 is not set - -# -# Camera sensor devices -# -# CONFIG_VIDEO_IMX178 is not set -# CONFIG_VIDEO_IMX219 is not set -# CONFIG_VIDEO_IMX258 is not set -# CONFIG_VIDEO_IMX274 is not set -# CONFIG_VIDEO_IMX307 is not set -# CONFIG_VIDEO_IMX317 is not set -# CONFIG_VIDEO_IMX323 is not set -# CONFIG_VIDEO_IMX327 is not set -# CONFIG_VIDEO_IMX334 is not set -# CONFIG_VIDEO_IMX335 is not set -# CONFIG_VIDEO_IMX347 is not set -# CONFIG_VIDEO_IMX378 is not set -# CONFIG_VIDEO_IMX415 is not set -# CONFIG_VIDEO_IMX464 is not set -# CONFIG_VIDEO_OS02G10 is not set -CONFIG_VIDEO_OS04A10=y -# CONFIG_VIDEO_OS04C10 is not set -# CONFIG_VIDEO_OS05A20 is not set -# CONFIG_VIDEO_OS08A10 is not set -# CONFIG_VIDEO_OV02B10 is not set -# CONFIG_VIDEO_OV02K10 is not set -# CONFIG_VIDEO_OV2640 is not set -# CONFIG_VIDEO_OV2659 is not set -# CONFIG_VIDEO_OV2680 is not set -# CONFIG_VIDEO_OV2685 is not set -# CONFIG_VIDEO_OV2718 is not set -# CONFIG_VIDEO_OV2735 is not set -# CONFIG_VIDEO_OV2775 is not set -# CONFIG_VIDEO_OV4686 is not set -# CONFIG_VIDEO_OV4688 is not set -CONFIG_VIDEO_OV4689=y -# CONFIG_VIDEO_OV5640 is not set -# CONFIG_VIDEO_OV5645 is not set -# CONFIG_VIDEO_OV5647 is not set -# CONFIG_VIDEO_OV5648 is not set -# CONFIG_VIDEO_OV5670 is not set -CONFIG_VIDEO_OV5695=y -# CONFIG_VIDEO_OV6650 is not set -CONFIG_VIDEO_OV7251=y -# CONFIG_VIDEO_OV772X is not set -# CONFIG_VIDEO_OV7640 is not set -# CONFIG_VIDEO_OV7670 is not set -# CONFIG_VIDEO_OV7740 is not set -# CONFIG_VIDEO_OV7750 is not set -# CONFIG_VIDEO_OV8858 is not set -# CONFIG_VIDEO_OV9281 is not set -# CONFIG_VIDEO_OV9650 is not set -# CONFIG_VIDEO_OV9750 is not set -# CONFIG_VIDEO_OV12D2Q is not set -CONFIG_VIDEO_OV13850=y -# CONFIG_VIDEO_OV13858 is not set -# CONFIG_VIDEO_PREISP_DUMMY_SENSOR is not set -# CONFIG_VIDEO_VS6624 is not set -# CONFIG_VIDEO_MT9M032 is not set -# CONFIG_VIDEO_MT9M111 is not set -# CONFIG_VIDEO_MT9P031 is not set -# CONFIG_VIDEO_MT9T001 is not set -# CONFIG_VIDEO_MT9T112 is not set -# CONFIG_VIDEO_MT9V011 is not set -# CONFIG_VIDEO_MT9V032 is not set -# CONFIG_VIDEO_MT9V111 is not set -# CONFIG_VIDEO_AR0230 is not set -# CONFIG_VIDEO_SR030PC30 is not set -# CONFIG_VIDEO_NOON010PC30 is not set -# CONFIG_VIDEO_M5MOLS is not set -# CONFIG_VIDEO_RJ54N1 is not set -# CONFIG_VIDEO_S5K6AA is not set -# CONFIG_VIDEO_S5K6A3 is not set -# CONFIG_VIDEO_S5KGM1SP is not set -# CONFIG_VIDEO_S5K4H7YX is not set -# CONFIG_VIDEO_S5K4ECGX is not set -# CONFIG_VIDEO_S5K5BAF is not set -# CONFIG_VIDEO_SMIAPP is not set -# CONFIG_VIDEO_ET8EK8 is not set -# CONFIG_VIDEO_S5C73M3 is not set -# CONFIG_VIDEO_GC02M2 is not set -# CONFIG_VIDEO_GC0312 is not set -# CONFIG_VIDEO_GC0329 is not set -# CONFIG_VIDEO_GC032A is not set -# CONFIG_VIDEO_GC0403 is not set -# CONFIG_VIDEO_GC2035 is not set -CONFIG_VIDEO_GC2053=y -CONFIG_VIDEO_GC2093=y -# CONFIG_VIDEO_GC2145 is not set -# CONFIG_VIDEO_GC2155 is not set -# CONFIG_VIDEO_GC2355 is not set -# CONFIG_VIDEO_GC2375H is not set -# CONFIG_VIDEO_GC2385 is not set -# CONFIG_VIDEO_GC4663 is not set -# CONFIG_VIDEO_GC4C33 is not set -# CONFIG_VIDEO_GC5024 is not set -# CONFIG_VIDEO_GC5025 is not set -# CONFIG_VIDEO_GC5035 is not set -CONFIG_VIDEO_GC8034=y -# CONFIG_VIDEO_BF3925 is not set -# CONFIG_VIDEO_JX_F37 is not set -# CONFIG_VIDEO_JX_H62 is not set -# CONFIG_VIDEO_JX_H65 is not set -# CONFIG_VIDEO_JX_K04 is not set -# CONFIG_VIDEO_SC031GS is not set -# CONFIG_VIDEO_SC035HGS is not set -# CONFIG_VIDEO_SC132GS is not set -# CONFIG_VIDEO_SC200AI is not set -# CONFIG_VIDEO_SC210IOT is not set -# CONFIG_VIDEO_SC2232 is not set -# CONFIG_VIDEO_SC2239 is not set -# CONFIG_VIDEO_SC2310 is not set -# CONFIG_VIDEO_SC2335 is not set -# CONFIG_VIDEO_SC401AI is not set -# CONFIG_VIDEO_SC4238 is not set -# CONFIG_VIDEO_SC430CS is not set -# CONFIG_VIDEO_SC500AI is not set -# CONFIG_VIDEO_SC8220 is not set -# CONFIG_VIDEO_SP250A is not set -# CONFIG_VIDEO_HYNIX_HI556 is not set -# CONFIG_VIDEO_HYNIX_HI846 is not set - -# -# Flash devices -# -# CONFIG_VIDEO_ADP1653 is not set -# CONFIG_VIDEO_LM3560 is not set -# CONFIG_VIDEO_LM3646 is not set -# CONFIG_VIDEO_SGM3784 is not set - -# -# Video improvement chips -# -# CONFIG_VIDEO_UPD64031A is not set -# CONFIG_VIDEO_UPD64083 is not set - -# -# Audio/Video compression chips -# -# CONFIG_VIDEO_SAA6752HS is not set - -# -# SDR tuner chips -# - -# -# Miscellaneous helper chips -# -# CONFIG_VIDEO_THS7303 is not set -# CONFIG_VIDEO_M52790 is not set -# CONFIG_VIDEO_I2C is not set -# CONFIG_VIDEO_NVP6158 is not set -# CONFIG_VIDEO_NVP6188 is not set -# CONFIG_VIDEO_NVP6324 is not set -# CONFIG_VIDEO_HALL_DC_MOTOR is not set -# CONFIG_VIDEO_RK_IRCUT is not set -# CONFIG_VIDEO_MP6507 is not set - -# -# Sensors used on soc_camera driver -# - -# -# soc_camera sensor drivers -# -# CONFIG_SOC_CAMERA_MT9M001 is not set -# CONFIG_SOC_CAMERA_MT9M111 is not set -# CONFIG_SOC_CAMERA_MT9T112 is not set -# CONFIG_SOC_CAMERA_MT9V022 is not set -# CONFIG_SOC_CAMERA_OV5642 is not set -# CONFIG_SOC_CAMERA_OV772X is not set -# CONFIG_SOC_CAMERA_OV9640 is not set -# CONFIG_SOC_CAMERA_OV9740 is not set -# CONFIG_SOC_CAMERA_RJ54N1 is not set -# CONFIG_SOC_CAMERA_TW9910 is not set - -# -# SPI helper chips -# -# CONFIG_VIDEO_GS1662 is not set -# CONFIG_VIDEO_ROCKCHIP_PREISP is not set - -# -# Media SPI Adapters -# - -# -# Customise DVB Frontends -# - -# -# Tools to develop new frontends -# - -# -# Graphics support -# -# CONFIG_VGA_ARB is not set +CONFIG_VIDEO_HANTRO=y +# CONFIG_VIDEO_IR_I2C is not set +CONFIG_VIDEO_IMX219=y +CONFIG_VIDEO_OV5645=y +CONFIG_CXD2880_SPI_DRV=m +CONFIG_DVB_ASCOT2E=m +CONFIG_DVB_HELENE=m +CONFIG_DVB_HORUS3A=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_LGS8GL5=m +CONFIG_DVB_LNBH25=m +CONFIG_DVB_LNBH29=m +CONFIG_DVB_TDA665x=m +CONFIG_DVB_CXD2099=m CONFIG_DRM=y -CONFIG_DRM_IGNORE_IOTCL_PERMIT=y -CONFIG_DRM_MIPI_DSI=y -# CONFIG_DRM_DP_AUX_CHARDEV is not set -# CONFIG_DRM_DEBUG_MM is not set -# CONFIG_DRM_DEBUG_SELFTEST is not set -CONFIG_DRM_KMS_HELPER=y -CONFIG_DRM_KMS_FB_HELPER=y -CONFIG_DRM_FBDEV_EMULATION=y -CONFIG_DRM_FBDEV_OVERALLOC=200 -# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set CONFIG_DRM_LOAD_EDID_FIRMWARE=y -# CONFIG_DRM_DP_CEC is not set -CONFIG_DRM_TTM=m -CONFIG_DRM_GEM_CMA_HELPER=y - -# -# I2C encoder or helper chips -# -# CONFIG_DRM_I2C_CH7006 is not set -# CONFIG_DRM_I2C_SIL164 is not set -# CONFIG_DRM_I2C_NXP_TDA998X is not set -# CONFIG_DRM_I2C_NXP_TDA9950 is not set -# CONFIG_DRM_HDLCD is not set -# CONFIG_DRM_MALI_DISPLAY is not set -# CONFIG_DRM_RADEON is not set -# CONFIG_DRM_AMDGPU is not set - -# -# ACP (Audio CoProcessor) Configuration -# - -# -# AMD Library routines -# -# CONFIG_DRM_NOUVEAU is not set -# CONFIG_DRM_VGEM is not set -# CONFIG_DRM_VKMS is not set +CONFIG_DRM_MALI_DISPLAY=y CONFIG_DRM_ROCKCHIP=y -# CONFIG_ROCKCHIP_DRM_DEBUG is not set -CONFIG_ROCKCHIP_ANALOGIX_DP=y -CONFIG_ROCKCHIP_CDN_DP=y +CONFIG_ROCKCHIP_VOP2=y CONFIG_ROCKCHIP_DW_HDMI=y CONFIG_ROCKCHIP_DW_MIPI_DSI=y -CONFIG_ROCKCHIP_INNO_HDMI=y -CONFIG_ROCKCHIP_LVDS=y -CONFIG_ROCKCHIP_DRM_TVE=y -CONFIG_ROCKCHIP_RGB=y -# CONFIG_DRM_ROCKCHIP_VVOP is not set -# CONFIG_ROCKCHIP_EBC_DEV is not set -CONFIG_DRM_ROCKCHIP_RK618=y -# CONFIG_DRM_ROCKCHIP_RK628 is not set -# CONFIG_DRM_UDL is not set -# CONFIG_DRM_AST is not set -# CONFIG_DRM_MGAG200 is not set -# CONFIG_DRM_CIRRUS_QEMU is not set -# CONFIG_DRM_RCAR_DW_HDMI is not set -# CONFIG_DRM_RCAR_LVDS is not set -# CONFIG_DRM_QXL is not set -# CONFIG_DRM_BOCHS is not set -CONFIG_DRM_PANEL=y - -# -# Display Panels -# -# CONFIG_DRM_PANEL_ARM_VERSATILE is not set -# CONFIG_DRM_PANEL_LVDS is not set -CONFIG_DRM_PANEL_SIMPLE=y -# CONFIG_DRM_PANEL_SIMPLE_OF_ONLY is not set -# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set -# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set -# CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set -# CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set -# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set -# CONFIG_DRM_PANEL_LG_LG4573 is not set -# CONFIG_DRM_PANEL_ORISETECH_OTM8009A is not set -# CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set -# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set -# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set -# CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set -# CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 is not set -# CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set -# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set -CONFIG_DRM_BRIDGE=y -CONFIG_DRM_PANEL_BRIDGE=y - -# -# Display Interface Bridges -# -# CONFIG_DRM_ANALOGIX_ANX78XX is not set -# CONFIG_DRM_CDNS_DSI is not set -# CONFIG_DRM_DUMB_VGA_DAC is not set -# CONFIG_DRM_LVDS_ENCODER is not set -# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set -# CONFIG_DRM_NXP_PTN3460 is not set -# CONFIG_DRM_PARADE_PS8622 is not set -# CONFIG_DRM_RK1000_TVE is not set -# CONFIG_DRM_SIL_SII8620 is not set -CONFIG_DRM_SII902X=y -# CONFIG_DRM_SII9234 is not set -# CONFIG_DRM_THINE_THC63LVD1024 is not set -# CONFIG_DRM_TOSHIBA_TC358767 is not set -# CONFIG_DRM_TI_TFP410 is not set -CONFIG_DRM_ANALOGIX_DP=y -# CONFIG_DRM_I2C_ADV7511 is not set -CONFIG_DRM_DW_HDMI=y -# CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set -CONFIG_DRM_DW_HDMI_I2S_AUDIO=y +CONFIG_DRM_PANEL_ELIDA_KD35T133=y +CONFIG_DRM_PANEL_HIMAX_HX8394=y +CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=y +CONFIG_DRM_PANEL_NEWVISION_NV3051D=y +CONFIG_DRM_PANEL_SITRONIX_ST7701=y +CONFIG_DRM_PANEL_SITRONIX_ST7703=y +CONFIG_DRM_DISPLAY_CONNECTOR=y CONFIG_DRM_DW_HDMI_CEC=y -# CONFIG_DRM_ARCPGU is not set -# CONFIG_DRM_HISI_HIBMC is not set -# CONFIG_DRM_HISI_KIRIN is not set -# CONFIG_DRM_MXSFB is not set -# CONFIG_DRM_TINYDRM is not set -# CONFIG_DRM_PL111 is not set -# CONFIG_DRM_LEGACY is not set -CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y -CONFIG_MALI400=y -CONFIG_MALI450=y -# CONFIG_MALI470 is not set -# CONFIG_MALI400_DEBUG is not set -# CONFIG_MALI400_PROFILING is not set -# CONFIG_MALI400_UMP is not set -CONFIG_MALI_DMA_BUF_MAP_ON_ATTACH=y -CONFIG_MALI_SHARED_INTERRUPTS=y -# CONFIG_MALI_PMU_PARALLEL_POWER_UP is not set -CONFIG_MALI_DT=y -CONFIG_MALI_DEVFREQ=y -# CONFIG_MALI_QUIET is not set -CONFIG_MALI_MIDGARD_FOR_ANDROID=y -# CONFIG_MALI_MIDGARD_FOR_LINUX is not set -CONFIG_MALI_MIDGARD=y -# CONFIG_MALI_GATOR_SUPPORT is not set -# CONFIG_MALI_MIDGARD_ENABLE_TRACE is not set -# CONFIG_MALI_DMA_FENCE is not set -CONFIG_MALI_EXPERT=y -# CONFIG_MALI_CORESTACK is not set -# CONFIG_MALI_PRFCNT_SET_SECONDARY is not set -# CONFIG_MALI_PLATFORM_FAKE is not set -# CONFIG_MALI_PLATFORM_DEVICETREE is not set -CONFIG_MALI_PLATFORM_THIRDPARTY=y -CONFIG_MALI_PLATFORM_THIRDPARTY_NAME="rk" -CONFIG_MALI_DEBUG=y -CONFIG_MALI_FENCE_DEBUG=y -# CONFIG_MALI_NO_MALI is not set -# CONFIG_MALI_TRACE_TIMELINE is not set -# CONFIG_MALI_SYSTEM_TRACE is not set -# CONFIG_MALI_GPU_MMU_AARCH64 is not set -CONFIG_MALI_PWRSOFT_765=y -# CONFIG_MALI_KUTF is not set -CONFIG_MALI_BIFROST_FOR_ANDROID=y -# CONFIG_MALI_BIFROST_FOR_LINUX is not set -CONFIG_MALI_BIFROST=y -CONFIG_MALI_BIFROST_GATOR_SUPPORT=y -# CONFIG_MALI_BIFROST_ENABLE_TRACE is not set -CONFIG_MALI_BIFROST_DEVFREQ=y -# CONFIG_MALI_BIFROST_DMA_FENCE is not set -CONFIG_MALI_PLATFORM_NAME="rk" -# CONFIG_MALI_ARBITER_SUPPORT is not set -# CONFIG_MALI_BIFROST_EXPERT is not set -CONFIG_MALI_REAL_HW=y -# CONFIG_MALI_DMA_BUF_MAP_ON_DEMAND is not set -# CONFIG_MALI_DMA_BUF_LEGACY_COMPAT is not set -# CONFIG_MALI_GEM5_BUILD is not set - -# -# Frame buffer Devices -# -CONFIG_FB_CMDLINE=y -CONFIG_FB_NOTIFY=y +CONFIG_DRM_PANEL_MIPI_DBI=y +CONFIG_DRM_PANFROST=y CONFIG_FB=y -# CONFIG_FIRMWARE_EDID is not set -CONFIG_FB_CFB_FILLRECT=y -CONFIG_FB_CFB_COPYAREA=y -CONFIG_FB_CFB_IMAGEBLIT=y -CONFIG_FB_SYS_FILLRECT=y -CONFIG_FB_SYS_COPYAREA=y -CONFIG_FB_SYS_IMAGEBLIT=y -# CONFIG_FB_FOREIGN_ENDIAN is not set -CONFIG_FB_SYS_FOPS=y -CONFIG_FB_DEFERRED_IO=y -# CONFIG_FB_MODE_HELPERS is not set -# CONFIG_FB_TILEBLITTING is not set - -# -# Frame buffer hardware drivers -# -# CONFIG_FB_CIRRUS is not set -# CONFIG_FB_PM2 is not set -# CONFIG_FB_ARMCLCD is not set -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_ASILIANT is not set -# CONFIG_FB_IMSTT is not set -# CONFIG_FB_UVESA is not set -# CONFIG_FB_OPENCORES is not set -# CONFIG_FB_S1D13XXX is not set -# CONFIG_FB_NVIDIA is not set -# CONFIG_FB_RIVA is not set -# CONFIG_FB_I740 is not set -# CONFIG_FB_MATROX is not set -# CONFIG_FB_RADEON is not set -# CONFIG_FB_ATY128 is not set -# CONFIG_FB_ATY is not set -# CONFIG_FB_S3 is not set -# CONFIG_FB_SAVAGE is not set -# CONFIG_FB_SIS is not set -# CONFIG_FB_NEOMAGIC is not set -# CONFIG_FB_KYRO is not set -# CONFIG_FB_3DFX is not set -# CONFIG_FB_VOODOO1 is not set -# CONFIG_FB_VT8623 is not set -# CONFIG_FB_TRIDENT is not set -# CONFIG_FB_ARK is not set -# CONFIG_FB_PM3 is not set -# CONFIG_FB_CARMINE is not set -# CONFIG_FB_SMSCUFX is not set -# CONFIG_FB_UDL is not set -# CONFIG_FB_IBM_GXT4500 is not set -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FB_METRONOME is not set -# CONFIG_FB_MB862XX is not set -# CONFIG_FB_BROADSHEET is not set -# CONFIG_FB_SIMPLE is not set -# CONFIG_FB_SSD1307 is not set -# CONFIG_FB_SM712 is not set -CONFIG_BACKLIGHT_LCD_SUPPORT=y -# CONFIG_LCD_CLASS_DEVICE is not set -CONFIG_BACKLIGHT_CLASS_DEVICE=y -CONFIG_BACKLIGHT_GENERIC=y +CONFIG_FIRMWARE_EDID=y +CONFIG_FB_MODE_HELPERS=y CONFIG_BACKLIGHT_PWM=y -# CONFIG_BACKLIGHT_PM8941_WLED is not set -# CONFIG_BACKLIGHT_ADP8860 is not set -# CONFIG_BACKLIGHT_ADP8870 is not set -# CONFIG_BACKLIGHT_LM3630A is not set -# CONFIG_BACKLIGHT_LM3639 is not set -# CONFIG_BACKLIGHT_LP855X is not set -# CONFIG_BACKLIGHT_GPIO is not set -# CONFIG_BACKLIGHT_LV5207LP is not set -# CONFIG_BACKLIGHT_BD6107 is not set -# CONFIG_BACKLIGHT_ARCXCNN is not set - -# -# Rockchip Misc Video driver -# - -# -# RGA -# -# CONFIG_ROCKCHIP_RGA is not set - -# -# RGA2 -# -CONFIG_ROCKCHIP_RGA2=y - -# -# IEP -# -# CONFIG_IEP is not set -# CONFIG_IEP_MMU is not set -CONFIG_ROCKCHIP_MPP_SERVICE=y -CONFIG_ROCKCHIP_MPP_RKVDEC=y -CONFIG_ROCKCHIP_MPP_RKVDEC2=y -CONFIG_ROCKCHIP_MPP_RKVENC=y -CONFIG_ROCKCHIP_MPP_VDPU1=y -CONFIG_ROCKCHIP_MPP_VEPU1=y -CONFIG_ROCKCHIP_MPP_VDPU2=y -CONFIG_ROCKCHIP_MPP_VEPU2=y -CONFIG_ROCKCHIP_MPP_IEP2=y -CONFIG_ROCKCHIP_MPP_JPGDEC=y -CONFIG_VIDEOMODE_HELPERS=y -CONFIG_HDMI=y - -# -# Console display driver support -# -CONFIG_DUMMY_CONSOLE=y -CONFIG_DUMMY_CONSOLE_COLUMNS=80 -CONFIG_DUMMY_CONSOLE_ROWS=25 -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +CONFIG_BACKLIGHT_LED=y CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y -# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set -# CONFIG_LOGO is not set CONFIG_SOUND=y CONFIG_SND=y -CONFIG_SND_TIMER=y -CONFIG_SND_PCM=y -CONFIG_SND_PCM_ELD=y -CONFIG_SND_PCM_IEC958=y -CONFIG_SND_DMAENGINE_PCM=y -CONFIG_SND_HWDEP=y -CONFIG_SND_SEQ_DEVICE=y -CONFIG_SND_RAWMIDI=y -CONFIG_SND_JACK=y -CONFIG_SND_JACK_INPUT_DEV=y -# CONFIG_SND_OSSEMUL is not set -CONFIG_SND_PCM_TIMER=y CONFIG_SND_HRTIMER=y CONFIG_SND_DYNAMIC_MINORS=y -CONFIG_SND_MAX_CARDS=32 # CONFIG_SND_SUPPORT_OLD_API is not set -CONFIG_SND_PROC_FS=y -CONFIG_SND_VERBOSE_PROCFS=y -# CONFIG_SND_VERBOSE_PRINTK is not set -# CONFIG_SND_DEBUG is not set +# CONFIG_SND_VERBOSE_PROCFS is not set +CONFIG_SND_VERBOSE_PRINTK=y CONFIG_SND_SEQUENCER=y CONFIG_SND_SEQ_DUMMY=y -CONFIG_SND_SEQ_HRTIMER_DEFAULT=y -CONFIG_SND_SEQ_MIDI_EVENT=y -CONFIG_SND_SEQ_MIDI=y -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 +# CONFIG_SND_DRIVERS is not set # CONFIG_SND_PCI is not set - -# -# HD-Audio -# -CONFIG_SND_HDA_PREALLOC_SIZE=64 # 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_USB_POD is not set -# CONFIG_SND_USB_PODHD is not set -# CONFIG_SND_USB_TONEPORT is not set -# CONFIG_SND_USB_VARIAX is not set CONFIG_SND_SOC=y -CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y -# CONFIG_SND_SOC_AMD_ACP is not set -# CONFIG_SND_ATMEL_SOC is not set -# CONFIG_SND_DESIGNWARE_I2S is not set - -# -# SoC Audio for Freescale CPUs -# - -# -# Common SoC Audio options for Freescale CPUs: -# -# CONFIG_SND_SOC_FSL_ASRC is not set -# CONFIG_SND_SOC_FSL_SAI is not set -# CONFIG_SND_SOC_FSL_SSI is not set -# CONFIG_SND_SOC_FSL_SPDIF is not set -# CONFIG_SND_SOC_FSL_ESAI is not set -# CONFIG_SND_SOC_IMX_AUDMUX is not set -# CONFIG_SND_I2S_HI6210_I2S is not set -# CONFIG_SND_SOC_IMG is not set +CONFIG_SND_SOC_FSL_SAI=y CONFIG_SND_SOC_ROCKCHIP=y -CONFIG_SND_SOC_ROCKCHIP_PREALLOC_BUFFER_SIZE=512 -# CONFIG_SND_SOC_ROCKCHIP_AUDIO_PWM is not set -CONFIG_SND_SOC_ROCKCHIP_I2S=y CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=y CONFIG_SND_SOC_ROCKCHIP_PDM=y CONFIG_SND_SOC_ROCKCHIP_SPDIF=y -# CONFIG_SND_SOC_ROCKCHIP_VAD is not set -CONFIG_SND_SOC_ROCKCHIP_MAX98090=y -CONFIG_SND_SOC_ROCKCHIP_MULTICODECS=y -CONFIG_SND_SOC_ROCKCHIP_RT5645=y -# CONFIG_SND_SOC_ROCKCHIP_RT5651 is not set -CONFIG_SND_SOC_ROCKCHIP_RT5651_RK628=y -# CONFIG_SND_SOC_RK3288_HDMI_ANALOG is not set -# CONFIG_SND_SOC_RK3399_GRU_SOUND is not set - -# -# STMicroelectronics STM32 SOC audio support -# -# CONFIG_SND_SOC_XTFPGA_I2S is not set -# CONFIG_ZX_TDM is not set -CONFIG_SND_SOC_I2C_AND_SPI=y - -# -# CODEC drivers -# -# CONFIG_SND_SOC_AC97_CODEC is not set -# CONFIG_SND_SOC_ADAU1701 is not set -# CONFIG_SND_SOC_ADAU1761_I2C is not set -# CONFIG_SND_SOC_ADAU1761_SPI is not set -# CONFIG_SND_SOC_ADAU7002 is not set -# CONFIG_SND_SOC_AK4104 is not set -# CONFIG_SND_SOC_AK4458 is not set -# CONFIG_SND_SOC_AK4554 is not set -# CONFIG_SND_SOC_AK4613 is not set -# CONFIG_SND_SOC_AK4642 is not set -# CONFIG_SND_SOC_AK5386 is not set -# CONFIG_SND_SOC_AK5558 is not set -# CONFIG_SND_SOC_ALC5623 is not set -# CONFIG_SND_SOC_BD28623 is not set -# CONFIG_SND_SOC_BT_SCO is not set -# CONFIG_SND_SOC_CS35L32 is not set -# CONFIG_SND_SOC_CS35L33 is not set -# CONFIG_SND_SOC_CS35L34 is not set -# CONFIG_SND_SOC_CS35L35 is not set -# CONFIG_SND_SOC_CS42L42 is not set -# CONFIG_SND_SOC_CS42L51_I2C is not set -# CONFIG_SND_SOC_CS42L52 is not set -# CONFIG_SND_SOC_CS42L56 is not set -# CONFIG_SND_SOC_CS42L73 is not set -# CONFIG_SND_SOC_CS4265 is not set -# CONFIG_SND_SOC_CS4270 is not set -# CONFIG_SND_SOC_CS4271_I2C is not set -# CONFIG_SND_SOC_CS4271_SPI is not set -# CONFIG_SND_SOC_CS42XX8_I2C is not set -# CONFIG_SND_SOC_CS43130 is not set -# CONFIG_SND_SOC_CS4349 is not set -# CONFIG_SND_SOC_CS53L30 is not set -# CONFIG_SND_SOC_CX2072X is not set -CONFIG_SND_SOC_DUMMY_CODEC=y -CONFIG_SND_SOC_HDMI_CODEC=y -# CONFIG_SND_SOC_ES7134 is not set -CONFIG_SND_SOC_ES7202=y -# CONFIG_SND_SOC_ES7210 is not set -# CONFIG_SND_SOC_ES7241 is not set -CONFIG_SND_SOC_ES7243E=y -CONFIG_SND_SOC_ES8311=y +CONFIG_SND_SOC_RK3288_HDMI_ANALOG=y CONFIG_SND_SOC_ES8316=y -# CONFIG_SND_SOC_ES8323 is not set -# CONFIG_SND_SOC_ES8328_I2C is not set -# CONFIG_SND_SOC_ES8328_SPI is not set -# CONFIG_SND_SOC_ES8396 is not set -# CONFIG_SND_SOC_GTM601 is not set -# CONFIG_SND_SOC_INNO_RK3036 is not set CONFIG_SND_SOC_MAX98090=y -# CONFIG_SND_SOC_MAX98504 is not set -# CONFIG_SND_SOC_MAX9867 is not set -# CONFIG_SND_SOC_MAX98927 is not set -# CONFIG_SND_SOC_MAX98373 is not set -# CONFIG_SND_SOC_MAX9860 is not set -# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set -# CONFIG_SND_SOC_PCM1681 is not set -# CONFIG_SND_SOC_PCM1789_I2C is not set -# CONFIG_SND_SOC_PCM179X_I2C is not set -# CONFIG_SND_SOC_PCM179X_SPI is not set -# CONFIG_SND_SOC_PCM186X_I2C is not set -# CONFIG_SND_SOC_PCM186X_SPI is not set -# CONFIG_SND_SOC_PCM3168A_I2C is not set -# CONFIG_SND_SOC_PCM3168A_SPI is not set -# CONFIG_SND_SOC_PCM512x_I2C is not set -# CONFIG_SND_SOC_PCM512x_SPI is not set -# CONFIG_SND_SOC_RK312X is not set -# CONFIG_SND_SOC_RK3228 is not set -CONFIG_SND_SOC_RK3308=y -CONFIG_SND_SOC_RK3328=y CONFIG_SND_SOC_RK817=y -CONFIG_SND_SOC_RK_CODEC_DIGITAL=y -CONFIG_SND_SOC_RL6231=y -CONFIG_SND_SOC_RT5616=y -# CONFIG_SND_SOC_RT5631 is not set -CONFIG_SND_SOC_RT5640=y -CONFIG_SND_SOC_RT5645=y -CONFIG_SND_SOC_RT5651=y -# CONFIG_SND_SOC_SGTL5000 is not set -# CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set -# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set +CONFIG_SND_SOC_SIMPLE_AMPLIFIER=y CONFIG_SND_SOC_SPDIF=y -# CONFIG_SND_SOC_SSM2305 is not set -# CONFIG_SND_SOC_SSM2602_SPI is not set -# CONFIG_SND_SOC_SSM2602_I2C is not set -# CONFIG_SND_SOC_SSM4567 is not set -# CONFIG_SND_SOC_STA32X is not set -# CONFIG_SND_SOC_STA350 is not set -# CONFIG_SND_SOC_STI_SAS is not set -# CONFIG_SND_SOC_TAS2552 is not set -# CONFIG_SND_SOC_TAS5086 is not set -# CONFIG_SND_SOC_TAS571X is not set -# CONFIG_SND_SOC_TAS5720 is not set -# CONFIG_SND_SOC_TAS6424 is not set -# CONFIG_SND_SOC_TDA7419 is not set -# CONFIG_SND_SOC_TFA9879 is not set -# CONFIG_SND_SOC_TLV320AIC23_I2C is not set -# CONFIG_SND_SOC_TLV320AIC23_SPI is not set -# CONFIG_SND_SOC_TLV320AIC31XX is not set -# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set -# CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set -# CONFIG_SND_SOC_TLV320AIC3X is not set CONFIG_SND_SOC_TS3A227E=y -# CONFIG_SND_SOC_TSCS42XX is not set -# CONFIG_SND_SOC_TSCS454 is not set -# CONFIG_SND_SOC_WM8510 is not set -# CONFIG_SND_SOC_WM8523 is not set -# CONFIG_SND_SOC_WM8524 is not set -# CONFIG_SND_SOC_WM8580 is not set -# CONFIG_SND_SOC_WM8711 is not set -# CONFIG_SND_SOC_WM8728 is not set -# CONFIG_SND_SOC_WM8731 is not set -# CONFIG_SND_SOC_WM8737 is not set -# CONFIG_SND_SOC_WM8741 is not set -# CONFIG_SND_SOC_WM8750 is not set -# CONFIG_SND_SOC_WM8753 is not set -# CONFIG_SND_SOC_WM8770 is not set -# CONFIG_SND_SOC_WM8776 is not set -# CONFIG_SND_SOC_WM8782 is not set -# CONFIG_SND_SOC_WM8804_I2C is not set -# CONFIG_SND_SOC_WM8804_SPI is not set -# CONFIG_SND_SOC_WM8903 is not set -# CONFIG_SND_SOC_WM8960 is not set -# CONFIG_SND_SOC_WM8962 is not set -# CONFIG_SND_SOC_WM8974 is not set -# CONFIG_SND_SOC_WM8978 is not set -# CONFIG_SND_SOC_WM8985 is not set -# CONFIG_SND_SOC_ZX_AUD96P22 is not set -# CONFIG_SND_SOC_MAX9759 is not set -# CONFIG_SND_SOC_MT6351 is not set -# CONFIG_SND_SOC_NAU8540 is not set -# CONFIG_SND_SOC_NAU8810 is not set -# CONFIG_SND_SOC_NAU8824 is not set -# CONFIG_SND_SOC_TPA6130A2 is not set -CONFIG_SND_SIMPLE_CARD_UTILS=y CONFIG_SND_SIMPLE_CARD=y -# CONFIG_SND_SIMPLE_SCU_CARD is not set -# CONFIG_SND_AUDIO_GRAPH_CARD is not set -# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set - -# -# HID support -# -CONFIG_HID=y +CONFIG_SND_AUDIO_GRAPH_CARD=y +CONFIG_SND_AUDIO_GRAPH_CARD2=y +CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE=y +CONFIG_SND_TEST_COMPONENT=y CONFIG_HID_BATTERY_STRENGTH=y CONFIG_HIDRAW=y CONFIG_UHID=y -CONFIG_HID_GENERIC=y - -# -# Special HID drivers -# -# CONFIG_HID_A4TECH is not set -# CONFIG_HID_ACCUTOUCH is not set -# CONFIG_HID_ACRUX is not set -# CONFIG_HID_APPLE is not set -# CONFIG_HID_APPLEIR is not set -# CONFIG_HID_ASUS is not set -# CONFIG_HID_AUREAL is not set -# CONFIG_HID_BELKIN is not set -# CONFIG_HID_BETOP_FF is not set -# CONFIG_HID_CHERRY is not set -# CONFIG_HID_CHICONY is not set -# CONFIG_HID_CORSAIR is not set -# CONFIG_HID_COUGAR is not set -# CONFIG_HID_PRODIKEYS is not set -# CONFIG_HID_CMEDIA is not set -# CONFIG_HID_CP2112 is not set -# CONFIG_HID_CYPRESS is not set -# CONFIG_HID_DRAGONRISE is not set -# CONFIG_HID_EMS_FF is not set -# CONFIG_HID_ELAN is not set -# CONFIG_HID_ELECOM is not set -# CONFIG_HID_ELO is not set -# CONFIG_HID_EZKEY is not set -# CONFIG_HID_GEMBIRD is not set -# CONFIG_HID_GFRM is not set -# CONFIG_HID_HOLTEK is not set -# CONFIG_HID_GOOGLE_HAMMER is not set -# CONFIG_HID_GT683R is not set -# CONFIG_HID_KEYTOUCH is not set -# CONFIG_HID_KYE is not set -# CONFIG_HID_UCLOGIC is not set -# CONFIG_HID_WALTOP is not set -# CONFIG_HID_GYRATION is not set -# CONFIG_HID_ICADE is not set -# CONFIG_HID_ITE is not set -# CONFIG_HID_JABRA is not set -# CONFIG_HID_TWINHAN is not set +CONFIG_HID_A4TECH=y +CONFIG_HID_ACRUX=y +CONFIG_HID_APPLE=y +CONFIG_HID_APPLEIR=y +CONFIG_HID_AUREAL=y +CONFIG_HID_BELKIN=y +CONFIG_HID_BETOP_FF=y +CONFIG_HID_CHERRY=y +CONFIG_HID_CHICONY=y +CONFIG_HID_CORSAIR=y +CONFIG_HID_PRODIKEYS=y +CONFIG_HID_CP2112=y +CONFIG_HID_CYPRESS=y +CONFIG_HID_DRAGONRISE=y +CONFIG_DRAGONRISE_FF=y +CONFIG_HID_EMS_FF=y +CONFIG_HID_ELECOM=y +CONFIG_HID_ELO=y +CONFIG_HID_EZKEY=y +CONFIG_HID_GEMBIRD=y +CONFIG_HID_GFRM=y +CONFIG_HID_HOLTEK=y +CONFIG_HOLTEK_FF=y +CONFIG_HID_GT683R=y +CONFIG_HID_KEYTOUCH=y +CONFIG_HID_KYE=y +CONFIG_HID_UCLOGIC=y +CONFIG_HID_WALTOP=y +CONFIG_HID_GYRATION=y +CONFIG_HID_ICADE=y +CONFIG_HID_TWINHAN=y CONFIG_HID_KENSINGTON=y -# CONFIG_HID_LCPOWER is not set -# CONFIG_HID_LED is not set -# CONFIG_HID_LENOVO is not set -# CONFIG_HID_LOGITECH is not set -# CONFIG_HID_MAGICMOUSE is not set -# CONFIG_HID_MAYFLASH is not set -# CONFIG_HID_REDRAGON is not set -# CONFIG_HID_MICROSOFT is not set -# CONFIG_HID_MONTEREY is not set +CONFIG_HID_LCPOWER=y +CONFIG_HID_LENOVO=y +CONFIG_HID_LOGITECH=y +CONFIG_HID_LOGITECH_DJ=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGIG940_FF=y +CONFIG_HID_MAGICMOUSE=y +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y CONFIG_HID_MULTITOUCH=y -# CONFIG_HID_NINTENDO is not set -# CONFIG_HID_NTI is not set -# CONFIG_HID_NTRIG is not set -# CONFIG_HID_ORTEK is not set -# CONFIG_HID_PANTHERLORD is not set -# CONFIG_HID_PENMOUNT is not set -# CONFIG_HID_PETALYNX is not set -# CONFIG_HID_PICOLCD is not set -# CONFIG_HID_PLANTRONICS is not set -# CONFIG_HID_PRIMAX is not set -# CONFIG_HID_RETRODE is not set -# CONFIG_HID_ROCCAT is not set -# CONFIG_HID_SAITEK is not set -# CONFIG_HID_SAMSUNG is not set -# CONFIG_HID_SONY is not set -# CONFIG_HID_SPEEDLINK is not set -# CONFIG_HID_STEAM is not set -# CONFIG_HID_STEELSERIES is not set -# CONFIG_HID_SUNPLUS is not set -# CONFIG_HID_RMI is not set -# CONFIG_HID_GREENASIA is not set -# CONFIG_HID_SMARTJOYPLUS is not set -# CONFIG_HID_TIVO is not set -# CONFIG_HID_TOPSEED is not set -# CONFIG_HID_THINGM is not set -# CONFIG_HID_THRUSTMASTER is not set -# CONFIG_HID_UDRAW_PS3 is not set -# CONFIG_HID_WACOM is not set -# CONFIG_HID_WIIMOTE is not set -# CONFIG_HID_XINMO is not set -# CONFIG_HID_ZEROPLUS is not set -# CONFIG_HID_ZYDACRON is not set -# CONFIG_HID_SENSOR_HUB is not set -# CONFIG_HID_ALPS is not set - -# -# USB HID support -# -CONFIG_USB_HID=y -# CONFIG_HID_PID is not set +CONFIG_HID_NTRIG=y +CONFIG_HID_ORTEK=y +CONFIG_HID_PANTHERLORD=y +CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PENMOUNT=y +CONFIG_HID_PETALYNX=y +CONFIG_HID_PLANTRONICS=y +CONFIG_HID_PRIMAX=y +CONFIG_HID_ROCCAT=y +CONFIG_HID_SAITEK=y +CONFIG_HID_SAMSUNG=y +CONFIG_HID_SONY=y +CONFIG_HID_SPEEDLINK=y +CONFIG_HID_STEELSERIES=y +CONFIG_HID_SUNPLUS=y +CONFIG_HID_RMI=y +CONFIG_HID_GREENASIA=y +CONFIG_GREENASIA_FF=y +CONFIG_HID_SMARTJOYPLUS=y +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_HID_TIVO=y +CONFIG_HID_TOPSEED=y +CONFIG_HID_THINGM=y +CONFIG_HID_THRUSTMASTER=y +CONFIG_THRUSTMASTER_FF=y +CONFIG_HID_WACOM=y +CONFIG_HID_WIIMOTE=y +CONFIG_HID_XINMO=y +CONFIG_HID_ZEROPLUS=y +CONFIG_ZEROPLUS_FF=y +CONFIG_HID_ZYDACRON=y +CONFIG_HID_SENSOR_HUB=y +CONFIG_HID_SENSOR_CUSTOM_SENSOR=y +CONFIG_HID_ALPS=y CONFIG_USB_HIDDEV=y - -# -# I2C HID support -# -CONFIG_I2C_HID=y -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_PCI=y +CONFIG_I2C_HID_OF_GOODIX=y CONFIG_USB_ANNOUNCE_NEW_DEVICES=y - -# -# Miscellaneous USB options -# # CONFIG_USB_DEFAULT_PERSIST is not set -# CONFIG_USB_DYNAMIC_MINORS is not set CONFIG_USB_OTG=y -# CONFIG_USB_OTG_WHITELIST is not set -# CONFIG_USB_OTG_BLACKLIST_HUB is not set -# CONFIG_USB_OTG_FSM is not set -# CONFIG_USB_LEDS_TRIGGER_USBPORT is not set +CONFIG_USB_OTG_PRODUCTLIST=y +CONFIG_USB_OTG_FSM=y +CONFIG_USB_LEDS_TRIGGER_USBPORT=y CONFIG_USB_MON=y -# CONFIG_USB_WUSB_CBAF is not set - -# -# USB Host Controller Drivers -# -# CONFIG_USB_C67X00_HCD is not set CONFIG_USB_XHCI_HCD=y -# CONFIG_USB_XHCI_DBGCAP is not set -CONFIG_USB_XHCI_PCI=y -CONFIG_USB_XHCI_PLATFORM=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y -CONFIG_USB_EHCI_TT_NEWSCHED=y -CONFIG_USB_EHCI_PCI=y CONFIG_USB_EHCI_HCD_PLATFORM=y -# CONFIG_USB_OXU210HP_HCD is not set -# CONFIG_USB_ISP116X_HCD is not set -# CONFIG_USB_FOTG210_HCD is not set -# CONFIG_USB_MAX3421_HCD is not set CONFIG_USB_OHCI_HCD=y # CONFIG_USB_OHCI_HCD_PCI is not set CONFIG_USB_OHCI_HCD_PLATFORM=y -# CONFIG_USB_UHCI_HCD is not set -# CONFIG_USB_SL811_HCD is not set -# CONFIG_USB_R8A66597_HCD is not set -# CONFIG_USB_HCD_TEST_MODE is not set - -# -# USB Device Class drivers -# CONFIG_USB_ACM=y -# CONFIG_USB_PRINTER is not set -CONFIG_USB_WDM=y -# 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 is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_ISD200 is not set -# CONFIG_USB_STORAGE_USBAT is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_SDDR55 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set -# CONFIG_USB_STORAGE_ALAUDA is not set -# CONFIG_USB_STORAGE_ONETOUCH is not set -# CONFIG_USB_STORAGE_KARMA is not set -# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set -# CONFIG_USB_STORAGE_ENE_UB6250 is not set +CONFIG_USB_STORAGE_REALTEK=y +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=y CONFIG_USB_UAS=y - -# -# 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=y -# CONFIG_USB_DWC3_HOST is not set -# CONFIG_USB_DWC3_GADGET is not set -CONFIG_USB_DWC3_DUAL_ROLE=y - -# -# Platform Glue Driver Support -# -CONFIG_USB_DWC3_HAPS=y -CONFIG_USB_DWC3_OF_SIMPLE=y -CONFIG_USB_DWC3_ROCKCHIP_INNO=y CONFIG_USB_DWC2=y -# CONFIG_USB_DWC2_HOST is not set - -# -# Gadget/Dual-role mode requires USB Gadget support to be enabled -# -# CONFIG_USB_DWC2_PERIPHERAL is not set -CONFIG_USB_DWC2_DUAL_ROLE=y -# CONFIG_USB_DWC2_PCI is not set -# CONFIG_USB_DWC2_DEBUG is not set -# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set -# CONFIG_USB_CHIPIDEA is not set -# CONFIG_USB_ISP1760 is not set - -# -# USB port drivers -# CONFIG_USB_SERIAL=y -# CONFIG_USB_SERIAL_CONSOLE is not set CONFIG_USB_SERIAL_GENERIC=y -# CONFIG_USB_SERIAL_SIMPLE is not set -# CONFIG_USB_SERIAL_AIRCABLE is not set -# CONFIG_USB_SERIAL_ARK3116 is not set -# CONFIG_USB_SERIAL_BELKIN is not set -# CONFIG_USB_SERIAL_CH341 is not set -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +CONFIG_USB_SERIAL_CH341=y CONFIG_USB_SERIAL_CP210X=y -# CONFIG_USB_SERIAL_CYPRESS_M8 is not set -# CONFIG_USB_SERIAL_EMPEG is not set CONFIG_USB_SERIAL_FTDI_SIO=y -# CONFIG_USB_SERIAL_VISOR is not set -# CONFIG_USB_SERIAL_IPAQ is not set -# CONFIG_USB_SERIAL_IR is not set -# CONFIG_USB_SERIAL_EDGEPORT is not set -# CONFIG_USB_SERIAL_EDGEPORT_TI is not set -# CONFIG_USB_SERIAL_F81232 is not set -# CONFIG_USB_SERIAL_F8153X is not set -# CONFIG_USB_SERIAL_GARMIN is not set -# CONFIG_USB_SERIAL_IPW is not set -# CONFIG_USB_SERIAL_IUU is not set -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set CONFIG_USB_SERIAL_KEYSPAN=y -# CONFIG_USB_SERIAL_KLSI is not set -# CONFIG_USB_SERIAL_KOBIL_SCT is not set -# CONFIG_USB_SERIAL_MCT_U232 is not set -# CONFIG_USB_SERIAL_METRO is not set -# CONFIG_USB_SERIAL_MOS7720 is not set -# CONFIG_USB_SERIAL_MOS7840 is not set -# CONFIG_USB_SERIAL_MXUPORT is not set -# CONFIG_USB_SERIAL_NAVMAN is not set CONFIG_USB_SERIAL_PL2303=y CONFIG_USB_SERIAL_OTI6858=y -# CONFIG_USB_SERIAL_QCAUX is not set CONFIG_USB_SERIAL_QUALCOMM=y -# CONFIG_USB_SERIAL_SPCP8X5 is not set -# CONFIG_USB_SERIAL_SAFE is not set CONFIG_USB_SERIAL_SIERRAWIRELESS=y -# CONFIG_USB_SERIAL_SYMBOL is not set -# CONFIG_USB_SERIAL_TI is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_XIRCOM is not set -CONFIG_USB_SERIAL_WWAN=y CONFIG_USB_SERIAL_OPTION=y -# CONFIG_USB_SERIAL_OMNINET is not set -# CONFIG_USB_SERIAL_OPTICON is not set -# CONFIG_USB_SERIAL_XSENS_MT is not set -# CONFIG_USB_SERIAL_WISHBONE is not set -# CONFIG_USB_SERIAL_SSU100 is not set -# CONFIG_USB_SERIAL_QT2 is not set -# CONFIG_USB_SERIAL_UPD78F0730 is not set -# CONFIG_USB_SERIAL_DEBUG is not set - -# -# 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_LEGOTOWER is not set -# CONFIG_USB_LCD is not set -# CONFIG_USB_CYPRESS_CY7C63 is not set -# CONFIG_USB_CYTHERM is not set -# CONFIG_USB_IDMOUSE is not set -# CONFIG_USB_FTDI_ELAN is not set -# CONFIG_USB_APPLEDISPLAY is not set -# CONFIG_USB_SISUSBVGA is not set -# CONFIG_USB_LD is not set -# CONFIG_USB_TRANCEVIBRATOR is not set -# CONFIG_USB_IOWARRIOR is not set -# CONFIG_USB_TEST is not set -# CONFIG_USB_EHSET_TEST_FIXTURE is not set -# CONFIG_USB_ISIGHTFW is not set -# CONFIG_USB_YUREX is not set -CONFIG_USB_EZUSB_FX2=y -# CONFIG_USB_HUB_USB251XB is not set -# CONFIG_USB_HSIC_USB3503 is not set -# CONFIG_USB_HSIC_USB4604 is not set -# CONFIG_USB_LINK_LAYER_TEST is not set -# CONFIG_USB_CHAOSKEY is not set - -# -# USB Physical Layer drivers -# -CONFIG_USB_PHY=y -# CONFIG_NOP_USB_XCEIV is not set -# CONFIG_USB_GPIO_VBUS is not set -# CONFIG_USB_ISP1301 is not set -# CONFIG_USB_ULPI is not set +CONFIG_NOP_USB_XCEIV=y CONFIG_USB_GADGET=y -# CONFIG_USB_GADGET_DEBUG is not set CONFIG_USB_GADGET_DEBUG_FILES=y -# CONFIG_USB_GADGET_DEBUG_FS is not set CONFIG_USB_GADGET_VBUS_DRAW=500 -CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 -# CONFIG_U_SERIAL_CONSOLE is not set - -# -# 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_SNP_UDC_PLAT is not set -# CONFIG_USB_M66592 is not set -# CONFIG_USB_BDC_UDC is not set -# CONFIG_USB_AMD5536UDC is not set -# CONFIG_USB_NET2272 is not set -# CONFIG_USB_NET2280 is not set -# CONFIG_USB_GOKU is not set -# CONFIG_USB_EG20T 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_F_FS=y -CONFIG_USB_F_UVC=y +CONFIG_U_SERIAL_CONSOLE=y CONFIG_USB_CONFIGFS=y -CONFIG_USB_CONFIGFS_UEVENT=y -# CONFIG_USB_CONFIGFS_SERIAL is not set CONFIG_USB_CONFIGFS_ACM=y -# CONFIG_USB_CONFIGFS_OBEX is not set -# CONFIG_USB_CONFIGFS_NCM is not set -# CONFIG_USB_CONFIGFS_ECM is not set -# CONFIG_USB_CONFIGFS_ECM_SUBSET is not set -# CONFIG_USB_CONFIGFS_RNDIS is not set -# CONFIG_USB_CONFIGFS_EEM is not set CONFIG_USB_CONFIGFS_MASS_STORAGE=y -# CONFIG_USB_CONFIGFS_F_LB_SS is not set CONFIG_USB_CONFIGFS_F_FS=y -# CONFIG_USB_CONFIGFS_F_ACC is not set -# CONFIG_USB_CONFIGFS_F_AUDIO_SRC is not set -# CONFIG_USB_CONFIGFS_F_UAC1 is not set -# CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set -# CONFIG_USB_CONFIGFS_F_UAC2 is not set -# CONFIG_USB_CONFIGFS_F_MIDI is not set -# CONFIG_USB_CONFIGFS_F_HID is not set CONFIG_USB_CONFIGFS_F_UVC=y -# CONFIG_USB_CONFIGFS_F_PRINTER is not set -# CONFIG_TYPEC is not set -# CONFIG_USB_ROLE_SWITCH is not set -# CONFIG_USB_LED_TRIG is not set -# CONFIG_USB_ULPI_BUS is not set -# CONFIG_UWB is not set -# CONFIG_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=m CONFIG_USB_FUNCTIONFS=m -# CONFIG_USB_FUNCTIONFS_ETH is not set -# CONFIG_USB_FUNCTIONFS_RNDIS is not set -CONFIG_USB_FUNCTIONFS_GENERIC=y CONFIG_USB_MASS_STORAGE=m CONFIG_USB_G_SERIAL=m -# CONFIG_USB_MIDI_GADGET is not set -# CONFIG_USB_G_PRINTER is not set -# CONFIG_USB_CDC_COMPOSITE is not set -# CONFIG_USB_G_ACM_MS is not set -# CONFIG_USB_G_MULTI is not set -# CONFIG_USB_G_HID is not set -# CONFIG_USB_G_DBGP is not set -# CONFIG_USB_G_WEBCAM is not set -# CONFIG_USB_RAW_GADGET is not set - +CONFIG_TYPEC=y +CONFIG_TYPEC_TCPM=y +CONFIG_TYPEC_FUSB302=y +CONFIG_TYPEC_DP_ALTMODE=y CONFIG_MMC=y -CONFIG_PWRSEQ_EMMC=y -# CONFIG_PWRSEQ_SD8787 is not set -CONFIG_PWRSEQ_SIMPLE=y -CONFIG_MMC_BLOCK=y CONFIG_MMC_BLOCK_MINORS=32 -# CONFIG_SDIO_UART is not set CONFIG_MMC_TEST=y -CONFIG_SDIO_KEEPALIVE=y - -# -# MMC/SD/SDIO Host Controller Drivers -# -# CONFIG_MMC_DEBUG is not set -# CONFIG_MMC_ARMMMCI is not set CONFIG_MMC_SDHCI=y -# CONFIG_MMC_SDHCI_PCI is not set CONFIG_MMC_SDHCI_PLTFM=y -CONFIG_MMC_SDHCI_OF_ARASAN=y -# CONFIG_MMC_SDHCI_OF_AT91 is not set CONFIG_MMC_SDHCI_OF_DWCMSHC=y -# CONFIG_MMC_SDHCI_CADENCE is not set -# CONFIG_MMC_SDHCI_F_SDH30 is not set -# CONFIG_MMC_TIFM_SD is not set -# CONFIG_MMC_SPI is not set -# CONFIG_MMC_CB710 is not set -# CONFIG_MMC_VIA_SDMMC is not set CONFIG_MMC_DW=y -CONFIG_MMC_DW_PLTFM=y -# CONFIG_MMC_DW_BLUEFIELD is not set -# CONFIG_MMC_DW_EXYNOS is not set -# CONFIG_MMC_DW_HI3798CV200 is not set -# CONFIG_MMC_DW_K3 is not set -# CONFIG_MMC_DW_PCI is not set CONFIG_MMC_DW_ROCKCHIP=y -# CONFIG_MMC_VUB300 is not set -# CONFIG_MMC_USHC is not set -# CONFIG_MMC_USDHI6ROL0 is not set -CONFIG_MMC_CQHCI=y -# CONFIG_MMC_TOSHIBA_PCI is not set -# CONFIG_MMC_MTK is not set -# CONFIG_MMC_SDHCI_XENON is not set -# CONFIG_MMC_SDHCI_OMAP is not set -# CONFIG_MEMSTICK is not set -CONFIG_NEW_LEDS=y -CONFIG_LEDS_CLASS=y -CONFIG_LEDS_CLASS_FLASH=y -# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set - -# -# LED drivers -# -# CONFIG_LEDS_AAT1290 is not set -# CONFIG_LEDS_AS3645A is not set -# CONFIG_LEDS_BCM6328 is not set -# CONFIG_LEDS_BCM6358 is not set -# CONFIG_LEDS_CR0014114 is not set -# CONFIG_LEDS_LM3530 is not set -# CONFIG_LEDS_LM3642 is not set -# CONFIG_LEDS_LM3692X is not set -# CONFIG_LEDS_LM3601X is not set -# CONFIG_LEDS_PCA9532 is not set +CONFIG_MMC_HSQ=y CONFIG_LEDS_GPIO=y -# CONFIG_LEDS_LP3944 is not set -# CONFIG_LEDS_LP3952 is not set -# CONFIG_LEDS_LP5521 is not set -# CONFIG_LEDS_LP5523 is not set -# CONFIG_LEDS_LP5562 is not set -# CONFIG_LEDS_LP8501 is not set -# CONFIG_LEDS_LP8860 is not set -# CONFIG_LEDS_PCA955X is not set -# CONFIG_LEDS_PCA963X is not set -# CONFIG_LEDS_DAC124S085 is not set -# CONFIG_LEDS_PWM is not set -# CONFIG_LEDS_REGULATOR is not set -# CONFIG_LEDS_BD2802 is not set -# CONFIG_LEDS_LT3593 is not set -# CONFIG_LEDS_TCA6507 is not set -# CONFIG_LEDS_TLC591XX is not set -# CONFIG_LEDS_LM355x is not set -# CONFIG_LEDS_KTD2692 is not set -# CONFIG_LEDS_IS31FL319X is not set +CONFIG_LEDS_PWM=y CONFIG_LEDS_IS31FL32XX=y -CONFIG_LEDS_RGB13H=y - -# -# 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 -# CONFIG_LEDS_MLXREG is not set -# CONFIG_LEDS_USER is not set - -# -# LED Triggers -# -CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_SYSCON=y CONFIG_LEDS_TRIGGER_TIMER=y -# CONFIG_LEDS_TRIGGER_ONESHOT is not set -# CONFIG_LEDS_TRIGGER_DISK is not set -# CONFIG_LEDS_TRIGGER_MTD 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_ACTIVITY 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_LEDS_TRIGGER_PANIC is not set -# CONFIG_LEDS_TRIGGER_NETDEV is not set -# CONFIG_ACCESSIBILITY is not set -# CONFIG_INFINIBAND is not set -CONFIG_EDAC_SUPPORT=y -# CONFIG_EDAC is not set -CONFIG_RTC_LIB=y +CONFIG_LEDS_TRIGGER_ONESHOT=y +CONFIG_LEDS_TRIGGER_DISK=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y CONFIG_RTC_CLASS=y -CONFIG_RTC_HCTOSYS=y -CONFIG_RTC_HCTOSYS_DEVICE="rtc0" -CONFIG_RTC_SYSTOHC=y -CONFIG_RTC_SYSTOHC_DEVICE="rtc0" -# CONFIG_RTC_DEBUG is not set -CONFIG_RTC_NVMEM=y - -# -# RTC interfaces -# -CONFIG_RTC_INTF_SYSFS=y -CONFIG_RTC_INTF_PROC=y -CONFIG_RTC_INTF_DEV=y -# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set -# CONFIG_RTC_DRV_TEST is not set - -# -# I2C RTC drivers -# -# CONFIG_RTC_DRV_ABB5ZES3 is not set -# CONFIG_RTC_DRV_ABX80X is not set -# CONFIG_RTC_DRV_DS1307 is not set -# CONFIG_RTC_DRV_DS1374 is not set -# CONFIG_RTC_DRV_DS1672 is not set -# CONFIG_RTC_DRV_FAKE is not set +# CONFIG_RTC_SYSTOHC is not set +# CONFIG_RTC_INTF_PROC is not set +# CONFIG_RTC_INTF_DEV is not set CONFIG_RTC_DRV_HYM8563=y -# CONFIG_RTC_DRV_MAX6900 is not set CONFIG_RTC_DRV_RK808=y -# CONFIG_RTC_DRV_RK_TIMER 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_ISL12026 is not set -# CONFIG_RTC_DRV_X1205 is not set -# CONFIG_RTC_DRV_PCF8523 is not set -# CONFIG_RTC_DRV_PCF85063 is not set -# CONFIG_RTC_DRV_PCF85363 is not set -# CONFIG_RTC_DRV_PCF8563 is not set -# CONFIG_RTC_DRV_PCF8583 is not set -# CONFIG_RTC_DRV_M41T80 is not set -# CONFIG_RTC_DRV_BQ32K is not set -# CONFIG_RTC_DRV_TPS6586X is not set -# CONFIG_RTC_DRV_S35390A is not set -# CONFIG_RTC_DRV_FM3130 is not set -# CONFIG_RTC_DRV_RX8010 is not set -# CONFIG_RTC_DRV_RX8581 is not set -# CONFIG_RTC_DRV_RX8025 is not set -# CONFIG_RTC_DRV_EM3027 is not set -# CONFIG_RTC_DRV_RV8803 is not set - -# -# SPI RTC drivers -# -# CONFIG_RTC_DRV_M41T93 is not set -# CONFIG_RTC_DRV_M41T94 is not set -# CONFIG_RTC_DRV_DS1302 is not set -# CONFIG_RTC_DRV_DS1305 is not set -# CONFIG_RTC_DRV_DS1343 is not set -# CONFIG_RTC_DRV_DS1347 is not set -# CONFIG_RTC_DRV_DS1390 is not set -# CONFIG_RTC_DRV_MAX6916 is not set -# CONFIG_RTC_DRV_R9701 is not set -# CONFIG_RTC_DRV_RX4581 is not set -# CONFIG_RTC_DRV_RX6110 is not set -# CONFIG_RTC_DRV_RS5C348 is not set -# CONFIG_RTC_DRV_MAX6902 is not set -# CONFIG_RTC_DRV_PCF2123 is not set -# CONFIG_RTC_DRV_MCP795 is not set -CONFIG_RTC_I2C_AND_SPI=y - -# -# SPI and I2C RTC drivers -# -# CONFIG_RTC_DRV_DS3232 is not set -# CONFIG_RTC_DRV_PCF2127 is not set -# CONFIG_RTC_DRV_RV3029C2 is not set - -# -# Platform RTC drivers -# -# CONFIG_RTC_DRV_DS1286 is not set -# CONFIG_RTC_DRV_DS1511 is not set -# CONFIG_RTC_DRV_DS1553 is not set -# CONFIG_RTC_DRV_DS1685_FAMILY is not set -# CONFIG_RTC_DRV_DS1742 is not set -# CONFIG_RTC_DRV_DS2404 is not set -# CONFIG_RTC_DRV_STK17TA8 is not set -# CONFIG_RTC_DRV_M48T86 is not set -# CONFIG_RTC_DRV_M48T35 is not set -# CONFIG_RTC_DRV_M48T59 is not set -# CONFIG_RTC_DRV_MSM6242 is not set -# CONFIG_RTC_DRV_BQ4802 is not set -# CONFIG_RTC_DRV_RP5C01 is not set -# CONFIG_RTC_DRV_V3020 is not set -# CONFIG_RTC_DRV_ZYNQMP is not set -# CONFIG_RTC_DRV_CROS_EC is not set - -# -# on-CPU RTC drivers -# -# CONFIG_RTC_DRV_PL030 is not set -# CONFIG_RTC_DRV_PL031 is not set -# CONFIG_RTC_DRV_FTRTC010 is not set -# CONFIG_RTC_DRV_SNVS is not set -# CONFIG_RTC_DRV_R7301 is not set - -# -# HID Sensor RTC drivers -# -# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set CONFIG_DMADEVICES=y -# CONFIG_DMADEVICES_DEBUG is not set - -# -# DMA Devices -# -CONFIG_DMA_ENGINE=y -CONFIG_DMA_OF=y -# CONFIG_ALTERA_MSGDMA is not set -# CONFIG_AMBA_PL08X is not set -# CONFIG_DW_AXI_DMAC is not set -# CONFIG_FSL_EDMA is not set -# CONFIG_INTEL_IDMA64 is not set -# CONFIG_MV_XOR_V2 is not set CONFIG_PL330_DMA=y -# CONFIG_XILINX_DMA is not set -# CONFIG_XILINX_ZYNQMP_DMA is not set -# CONFIG_QCOM_HIDMA_MGMT is not set -# CONFIG_QCOM_HIDMA is not set -# CONFIG_DW_DMAC is not set -# CONFIG_DW_DMAC_PCI is not set - -# -# DMA Clients -# -# CONFIG_ASYNC_TX_DMA is not set -# CONFIG_DMATEST is not set - -# -# DMABUF options -# -CONFIG_SYNC_FILE=y -# CONFIG_SW_SYNC is not set -# CONFIG_AUXDISPLAY is not set -# CONFIG_UIO is not set -# CONFIG_VFIO is not set -# CONFIG_VIRT_DRIVERS is not set -CONFIG_VIRTIO_MENU=y -# CONFIG_VIRTIO_PCI is not set -# CONFIG_VIRTIO_MMIO is not set - -# -# Microsoft Hyper-V guest support -# +CONFIG_UDMABUF=y +CONFIG_DMABUF_HEAPS=y +CONFIG_DMABUF_HEAPS_SYSTEM=y +# CONFIG_VIRTIO_MENU is not set +# CONFIG_VHOST_MENU is not set CONFIG_STAGING=y -# CONFIG_PRISM2_USB is not set -# CONFIG_COMEDI is not set -# CONFIG_RTL8192U is not set -# CONFIG_RTLLIB is not set -# CONFIG_RTL8723BS is not set -# CONFIG_R8712U is not set -# CONFIG_R8188EU is not set -# CONFIG_R8822BE is not set -# CONFIG_RTS5208 is not set -# CONFIG_VT6655 is not set -# CONFIG_VT6656 is not set - -# -# IIO staging drivers -# - -# -# Accelerometers -# -# CONFIG_ADIS16203 is not set -# CONFIG_ADIS16240 is not set - -# -# Analog to digital converters -# -# CONFIG_AD7606 is not set -# CONFIG_AD7780 is not set -# CONFIG_AD7816 is not set -# CONFIG_AD7192 is not set -# CONFIG_AD7280 is not set - -# -# Analog digital bi-direction converters -# -# CONFIG_ADT7316 is not set - -# -# Capacitance to digital converters -# -# CONFIG_AD7150 is not set -# CONFIG_AD7152 is not set -# CONFIG_AD7746 is not set - -# -# Direct Digital Synthesis -# -# CONFIG_AD9832 is not set -# CONFIG_AD9834 is not set - -# -# Network Analyzer, Impedance Converters -# -# CONFIG_AD5933 is not set - -# -# Active energy metering IC -# -# CONFIG_ADE7854 is not set - -# -# Resolver to digital converters -# -# CONFIG_AD2S90 is not set -# CONFIG_AD2S1210 is not set -# CONFIG_FB_SM750 is not set -# CONFIG_FB_XGI is not set - -# -# Speakup console speech -# -# CONFIG_SPEAKUP is not set -# CONFIG_STAGING_MEDIA is not set - -# -# Android -# -# CONFIG_ASHMEM is not set -# CONFIG_ANDROID_VSOC is not set -# CONFIG_ION is not set -CONFIG_FIQ_DEBUGGER=y -CONFIG_FIQ_DEBUGGER_NO_SLEEP=y -# CONFIG_FIQ_DEBUGGER_WAKEUP_IRQ_ALWAYS_ON is not set -CONFIG_FIQ_DEBUGGER_CONSOLE=y -CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE=y -CONFIG_FIQ_DEBUGGER_TRUST_ZONE=y -# CONFIG_FIQ_DEBUGGER_UART_OVERLAY is not set -CONFIG_RK_CONSOLE_THREAD=y -# CONFIG_STAGING_BOARD is not set -# CONFIG_LTE_GDM724X is not set -# CONFIG_DGNC is not set -# CONFIG_GS_FPGABOOT is not set -# CONFIG_UNISYSSPAR is not set -# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set -# CONFIG_FB_TFT is not set -# CONFIG_WILC1000_SDIO is not set -# CONFIG_WILC1000_SPI is not set -# CONFIG_MOST is not set -# CONFIG_KS7010 is not set -# CONFIG_GREYBUS is not set -# CONFIG_PI433 is not set -# CONFIG_MTK_MMC is not set - -# -# Gasket devices -# -# CONFIG_STAGING_GASKET_FRAMEWORK is not set -# CONFIG_XIL_AXIS_FIFO is not set -# CONFIG_EROFS_FS is not set -# CONFIG_POWERVR_ROGUE_N is not set -# CONFIG_GOLDFISH is not set +CONFIG_RTL8723BS=m +CONFIG_R8712U=m +CONFIG_STAGING_MEDIA=y +CONFIG_VIDEO_ROCKCHIP_VDEC=y CONFIG_CHROME_PLATFORMS=y -# CONFIG_CROS_EC_I2C is not set -# CONFIG_CROS_EC_SPI is not set -CONFIG_CROS_EC_PROTO=y -CONFIG_CLKDEV_LOOKUP=y -CONFIG_HAVE_CLK_PREPARE=y -CONFIG_COMMON_CLK=y - -# -# Common Clock Framework -# -CONFIG_COMMON_CLK_DEBUGFS=y -# CONFIG_COMMON_CLK_PROCFS is not set -# CONFIG_COMMON_CLK_VERSATILE is not set -# CONFIG_CLK_HSDK is not set -# CONFIG_COMMON_CLK_MAX9485 is not set +# CONFIG_SURFACE_PLATFORMS is not set CONFIG_COMMON_CLK_RK808=y CONFIG_COMMON_CLK_SCMI=y -# CONFIG_COMMON_CLK_SI5351 is not set -# CONFIG_COMMON_CLK_SI514 is not set -# CONFIG_COMMON_CLK_SI544 is not set -# CONFIG_COMMON_CLK_SI570 is not set -# CONFIG_COMMON_CLK_CDCE706 is not set -# CONFIG_COMMON_CLK_CDCE925 is not set -# CONFIG_COMMON_CLK_CS2000_CP is not set -# CONFIG_CLK_QORIQ is not set +CONFIG_COMMON_CLK_SCPI=y CONFIG_COMMON_CLK_XGENE=y -# CONFIG_COMMON_CLK_PWM is not set -# CONFIG_COMMON_CLK_VC5 is not set -# CONFIG_ROCKCHIP_CLK_COMPENSATION is not set -CONFIG_COMMON_CLK_ROCKCHIP_REGMAP=y -CONFIG_CLK_RK618=y -CONFIG_CLK_RK628=y -# CONFIG_HWSPINLOCK is not set - -# -# Clock Source drivers -# -CONFIG_TIMER_OF=y -CONFIG_TIMER_PROBE=y -CONFIG_CLKSRC_MMIO=y -CONFIG_ROCKCHIP_TIMER=y -CONFIG_ARM_ARCH_TIMER=y -CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y -CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y -CONFIG_FSL_ERRATUM_A008585=y -CONFIG_HISILICON_ERRATUM_161010101=y -CONFIG_ARM64_ERRATUM_858921=y -# CONFIG_ARM_TIMER_SP804 is not set +CONFIG_COMMON_CLK_PWM=y +CONFIG_COMMON_CLK_FIXED_MMIO=y +# CONFIG_CLK_RK3308 is not set +# CONFIG_CLK_RK3328 is not set +# CONFIG_CLK_RK3368 is not set +# CONFIG_CLK_RK3399 is not set +# CONFIG_FSL_ERRATUM_A008585 is not set +# CONFIG_HISILICON_ERRATUM_161010101 is not set +# CONFIG_ARM64_ERRATUM_858921 is not set CONFIG_MAILBOX=y -# CONFIG_ARM_MHU is not set -# CONFIG_PLATFORM_MHU is not set -# CONFIG_PL320_MBOX is not set -# CONFIG_ROCKCHIP_MBOX is not set -# CONFIG_ALTERA_MBOX is not set -# CONFIG_MAILBOX_TEST is not set -# CONFIG_RK3368_MBOX is not set -CONFIG_IOMMU_API=y -CONFIG_IOMMU_SUPPORT=y - -# -# Generic IOMMU Pagetable Support -# -# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set -# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set -# CONFIG_IOMMU_DEBUGFS is not set -# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set -CONFIG_IOMMU_IOVA=y -CONFIG_OF_IOMMU=y -CONFIG_IOMMU_DMA=y +CONFIG_ARM_MHU=y +CONFIG_PLATFORM_MHU=y +CONFIG_ROCKCHIP_MBOX=y CONFIG_ROCKCHIP_IOMMU=y -# CONFIG_ARM_SMMU is not set -# CONFIG_ARM_SMMU_V3 is not set - -# -# Remoteproc drivers -# -# CONFIG_REMOTEPROC is not set - -# -# Rpmsg drivers -# -# CONFIG_RPMSG_QCOM_GLINK_RPM is not set -# CONFIG_RPMSG_VIRTIO is not set - -# -# SOC (System On Chip) specific Drivers -# - -# -# Amlogic SoC drivers -# - -# -# Broadcom SoC drivers -# -# CONFIG_SOC_BRCMSTB is not set - -# -# NXP/Freescale QorIQ SoC drivers -# - -# -# i.MX SoC drivers -# - -# -# Qualcomm SoC drivers -# - -# -# Rockchip CPU selection -# -CONFIG_CPU_PX30=y -CONFIG_CPU_RK1808=y -# CONFIG_CPU_RK3308 is not set -CONFIG_CPU_RK3328=y -# CONFIG_CPU_RK3368 is not set -CONFIG_CPU_RK3399=y -CONFIG_CPU_RK3568=y -CONFIG_ANDROID_VERSION=0x08010000 -CONFIG_ROCKCHIP_CPUINFO=y -CONFIG_ROCKCHIP_GRF=y -# CONFIG_ROCKCHIP_HW_DECOMPRESS is not set -CONFIG_ROCKCHIP_IPA=y -CONFIG_ROCKCHIP_OPP=y +CONFIG_ARM_SMMU=y +CONFIG_ARM_SMMU_V3=y +CONFIG_ROCKCHIP_IODOMAIN=y CONFIG_ROCKCHIP_PM_DOMAINS=y -CONFIG_ROCKCHIP_PVTM=y -# CONFIG_ROCKCHIP_RAMDISK is not set -CONFIG_ROCKCHIP_SUSPEND_MODE=y -CONFIG_ROCKCHIP_SYSTEM_MONITOR=y -CONFIG_ROCKCHIP_MTD_VENDOR_STORAGE=y -CONFIG_ROCKCHIP_VENDOR_STORAGE_UPDATE_LOADER=y -CONFIG_ROCKCHIP_DEBUG=y -# CONFIG_ROCKCHIP_LOW_PERFORMANCE is not set -# CONFIG_ROCKCHIP_THUNDER_BOOT is not set -CONFIG_ROCKCHIP_SCHED_PERFORMANCE_BIAS=y -# CONFIG_SOC_TI is not set - -# -# Xilinx SoC drivers -# -# CONFIG_XILINX_VCU is not set -CONFIG_PM_DEVFREQ=y - -# -# DEVFREQ Governors -# -CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y CONFIG_DEVFREQ_GOV_PERFORMANCE=y CONFIG_DEVFREQ_GOV_POWERSAVE=y -CONFIG_DEVFREQ_GOV_USERSPACE=y -# CONFIG_DEVFREQ_GOV_PASSIVE is not set - -# -# DEVFREQ Drivers -# -CONFIG_ARM_ROCKCHIP_BUS_DEVFREQ=y -CONFIG_ARM_ROCKCHIP_DMC_DEVFREQ=y -# CONFIG_ARM_ROCKCHIP_DMC_DEBUG is not set -CONFIG_PM_DEVFREQ_EVENT=y -CONFIG_DEVFREQ_EVENT_ROCKCHIP_DFI=y -# CONFIG_DEVFREQ_EVENT_ROCKCHIP_NOCP is not set -CONFIG_EXTCON=y - -# -# Extcon Device Drivers -# -# CONFIG_EXTCON_ADC_JACK is not set -# CONFIG_EXTCON_GPIO is not set -# CONFIG_EXTCON_MAX3355 is not set -# CONFIG_EXTCON_RT8973A is not set -# CONFIG_EXTCON_SM5502 is not set -# CONFIG_EXTCON_USB_GPIO is not set -# CONFIG_EXTCON_USBC_CROS_EC is not set +CONFIG_ARM_RK3399_DMC_DEVFREQ=y CONFIG_MEMORY=y -# CONFIG_ARM_PL172_MPMC is not set CONFIG_IIO=y -CONFIG_IIO_BUFFER=y -# CONFIG_IIO_BUFFER_CB is not set -# CONFIG_IIO_BUFFER_HW_CONSUMER is not set -CONFIG_IIO_KFIFO_BUF=y -# CONFIG_IIO_CONFIGFS is not set -CONFIG_IIO_TRIGGER=y -CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 -# CONFIG_IIO_SW_DEVICE is not set -# CONFIG_IIO_SW_TRIGGER is not set - -# -# Accelerometers -# -# CONFIG_ADIS16201 is not set -# CONFIG_ADIS16209 is not set -# CONFIG_ADXL345_I2C is not set -# CONFIG_ADXL345_SPI is not set -# CONFIG_BMA180 is not set -# CONFIG_BMA220 is not set -# CONFIG_BMC150_ACCEL is not set -# CONFIG_DA280 is not set -# CONFIG_DA311 is not set -# CONFIG_DMARD06 is not set -# CONFIG_DMARD09 is not set -# CONFIG_DMARD10 is not set -# CONFIG_IIO_CROS_EC_ACCEL_LEGACY is not set -# CONFIG_IIO_ST_ACCEL_3AXIS is not set -# CONFIG_KXSD9 is not set -# CONFIG_KXCJK1013 is not set -# CONFIG_MC3230 is not set -# CONFIG_MMA7455_I2C is not set -# CONFIG_MMA7455_SPI is not set -# CONFIG_MMA7660 is not set -# CONFIG_MMA8452 is not set -# CONFIG_MMA9551 is not set -# CONFIG_MMA9553 is not set -# CONFIG_MXC4005 is not set -# CONFIG_MXC6255 is not set -# CONFIG_SCA3000 is not set -# CONFIG_STK8312 is not set -# CONFIG_STK8BA50 is not set - -# -# Analog to digital converters -# -# CONFIG_AD7266 is not set -# CONFIG_AD7291 is not set -# CONFIG_AD7298 is not set -# CONFIG_AD7476 is not set -# CONFIG_AD7766 is not set -# CONFIG_AD7791 is not set -# CONFIG_AD7793 is not set -# CONFIG_AD7887 is not set -# CONFIG_AD7923 is not set -# CONFIG_AD799X is not set -# CONFIG_CC10001_ADC is not set -# CONFIG_ENVELOPE_DETECTOR is not set -# CONFIG_HI8435 is not set -# CONFIG_HX711 is not set -# CONFIG_INA2XX_ADC is not set -# CONFIG_LTC2471 is not set -# CONFIG_LTC2485 is not set -# CONFIG_LTC2497 is not set -# CONFIG_MAX1027 is not set -# CONFIG_MAX11100 is not set -# CONFIG_MAX1118 is not set -# CONFIG_MAX1363 is not set -# CONFIG_MAX9611 is not set -# CONFIG_MCP320X is not set -# CONFIG_MCP3422 is not set -# CONFIG_NAU7802 is not set +CONFIG_IIO_BUFFER_HW_CONSUMER=y +CONFIG_IIO_SW_DEVICE=y +CONFIG_IIO_SW_TRIGGER=y +CONFIG_IIO_TRIGGERED_EVENT=y CONFIG_ROCKCHIP_SARADC=y -# CONFIG_ROCKCHIP_SARADC_TEST_CHN is not set -# CONFIG_SD_ADC_MODULATOR is not set -# CONFIG_TI_ADC081C is not set -# CONFIG_TI_ADC0832 is not set -# CONFIG_TI_ADC084S021 is not set -# CONFIG_TI_ADC12138 is not set -# CONFIG_TI_ADC108S102 is not set -# CONFIG_TI_ADC128S052 is not set -# CONFIG_TI_ADC161S626 is not set -# CONFIG_TI_ADS1015 is not set -# CONFIG_TI_ADS7950 is not set -# CONFIG_TI_ADS8688 is not set -# CONFIG_TI_TLC4541 is not set -# CONFIG_VF610_ADC is not set - -# -# Analog Front Ends -# -# CONFIG_IIO_RESCALE is not set - -# -# Amplifiers -# -# CONFIG_AD8366 is not set - -# -# Chemical Sensors -# -# CONFIG_ATLAS_PH_SENSOR is not set -# CONFIG_BME680 is not set -# CONFIG_CCS811 is not set -# CONFIG_IAQCORE is not set -# CONFIG_VZ89X is not set -# CONFIG_IIO_CROS_EC_SENSORS_CORE is not set - -# -# Hid Sensor IIO Common -# - -# -# SSP Sensor Common -# -# CONFIG_IIO_SSP_SENSORHUB is not set - -# -# Counters -# - -# -# Digital to analog converters -# -# CONFIG_AD5064 is not set -# CONFIG_AD5360 is not set -# CONFIG_AD5380 is not set -# CONFIG_AD5421 is not set -# CONFIG_AD5446 is not set -# CONFIG_AD5449 is not set -# CONFIG_AD5592R is not set -# CONFIG_AD5593R is not set -# CONFIG_AD5504 is not set -# CONFIG_AD5624R_SPI is not set -# CONFIG_LTC2632 is not set -# CONFIG_AD5686_SPI is not set -# CONFIG_AD5696_I2C is not set -# CONFIG_AD5755 is not set -# CONFIG_AD5758 is not set -# CONFIG_AD5761 is not set -# CONFIG_AD5764 is not set -# CONFIG_AD5791 is not set -# CONFIG_AD7303 is not set -# CONFIG_AD8801 is not set -# CONFIG_DPOT_DAC is not set -# CONFIG_DS4424 is not set -# CONFIG_M62332 is not set -# CONFIG_MAX517 is not set -# CONFIG_MAX5821 is not set -# CONFIG_MCP4725 is not set -# CONFIG_MCP4922 is not set -# CONFIG_TI_DAC082S085 is not set -# CONFIG_TI_DAC5571 is not set -# CONFIG_VF610_DAC is not set - -# -# IIO dummy driver -# - -# -# Frequency Synthesizers DDS/PLL -# - -# -# Clock Generator/Distribution -# -# CONFIG_AD9523 is not set - -# -# Phase-Locked Loop (PLL) frequency synthesizers -# -# CONFIG_ADF4350 is not set - -# -# Digital gyroscope sensors -# -# CONFIG_ADIS16080 is not set -# CONFIG_ADIS16130 is not set -# CONFIG_ADIS16136 is not set -# CONFIG_ADIS16260 is not set -# CONFIG_ADXRS450 is not set -# CONFIG_BMG160 is not set -# CONFIG_MPU3050_I2C is not set -# CONFIG_IIO_ST_GYRO_3AXIS is not set -# CONFIG_ITG3200 is not set - -# -# Health Sensors -# - -# -# Heart Rate Monitors -# -# CONFIG_AFE4403 is not set -# CONFIG_AFE4404 is not set -# CONFIG_MAX30100 is not set -# CONFIG_MAX30102 is not set - -# -# Humidity sensors -# -# CONFIG_AM2315 is not set -# CONFIG_DHT11 is not set -# CONFIG_HDC100X is not set -# CONFIG_HTS221 is not set -# CONFIG_HTU21 is not set -# CONFIG_SI7005 is not set -# CONFIG_SI7020 is not set - -# -# Inertial measurement units -# -# CONFIG_ADIS16400 is not set -# CONFIG_ADIS16480 is not set -# CONFIG_BMI160_I2C is not set -# CONFIG_BMI160_SPI is not set -# CONFIG_KMX61 is not set -# CONFIG_INV_MPU6050_I2C is not set -# CONFIG_INV_MPU6050_SPI is not set -# CONFIG_IIO_ST_LSM6DSX is not set - -# -# Light sensors -# -# CONFIG_ADJD_S311 is not set -# CONFIG_AL3320A is not set -# CONFIG_APDS9300 is not set -# CONFIG_APDS9960 is not set -# CONFIG_BH1750 is not set -# CONFIG_BH1780 is not set -# CONFIG_CM32181 is not set -# CONFIG_CM3232 is not set -# CONFIG_CM3323 is not set -# CONFIG_CM3605 is not set -# CONFIG_CM36651 is not set -# CONFIG_GP2AP020A00F is not set CONFIG_SENSORS_ISL29018=y -# CONFIG_SENSORS_ISL29028 is not set -# CONFIG_ISL29125 is not set -# CONFIG_JSA1212 is not set -# CONFIG_RPR0521 is not set -# CONFIG_LTR501 is not set -# CONFIG_LV0104CS is not set -# CONFIG_MAX44000 is not set -# CONFIG_OPT3001 is not set -# CONFIG_PA12203001 is not set -# CONFIG_SI1133 is not set -# CONFIG_SI1145 is not set -# CONFIG_STK3310 is not set -# CONFIG_ST_UVIS25 is not set -# CONFIG_TCS3414 is not set -# CONFIG_TCS3472 is not set CONFIG_SENSORS_TSL2563=y CONFIG_TSL2583=y -# CONFIG_TSL2772 is not set -# CONFIG_TSL4531 is not set -# CONFIG_US5182D is not set -# CONFIG_VCNL4000 is not set -# CONFIG_VEML6070 is not set -# CONFIG_VL6180 is not set -# CONFIG_ZOPT2201 is not set - -# -# Magnetometer sensors -# -# CONFIG_AK8974 is not set -# CONFIG_AK8975 is not set -# CONFIG_AK09911 is not set -# CONFIG_BMC150_MAGN_I2C is not set -# CONFIG_BMC150_MAGN_SPI is not set -# CONFIG_MAG3110 is not set -# CONFIG_MMC35240 is not set -# CONFIG_IIO_ST_MAGN_3AXIS is not set -# CONFIG_SENSORS_HMC5843_I2C is not set -# CONFIG_SENSORS_HMC5843_SPI is not set - -# -# Multiplexers -# -# CONFIG_IIO_MUX is not set - -# -# Inclinometer sensors -# - -# -# Triggers - standalone -# -# CONFIG_IIO_INTERRUPT_TRIGGER is not set +CONFIG_IIO_MUX=y +CONFIG_IIO_HRTIMER_TRIGGER=y CONFIG_IIO_SYSFS_TRIGGER=y - -# -# Digital potentiometers -# -# CONFIG_AD5272 is not set -# CONFIG_DS1803 is not set -# CONFIG_MAX5481 is not set -# CONFIG_MAX5487 is not set -# CONFIG_MCP4018 is not set -# CONFIG_MCP4131 is not set -# CONFIG_MCP4531 is not set -# CONFIG_TPL0102 is not set - -# -# Digital potentiostats -# -# CONFIG_LMP91000 is not set - -# -# Pressure sensors -# -# CONFIG_ABP060MG is not set -# CONFIG_BMP280 is not set -# CONFIG_HP03 is not set -# CONFIG_MPL115_I2C is not set -# CONFIG_MPL115_SPI is not set -# CONFIG_MPL3115 is not set -# CONFIG_MS5611 is not set -# CONFIG_MS5637 is not set -# CONFIG_IIO_ST_PRESS is not set -# CONFIG_T5403 is not set -# CONFIG_HP206C is not set -# CONFIG_ZPA2326 is not set - -# -# Lightning sensors -# -# CONFIG_AS3935 is not set - -# -# Proximity and distance sensors -# -# CONFIG_ISL29501 is not set -# CONFIG_LIDAR_LITE_V2 is not set -# CONFIG_RFD77402 is not set -# CONFIG_SRF04 is not set -# CONFIG_SX9500 is not set -# CONFIG_SRF08 is not set - -# -# Resolver to digital converters -# -# CONFIG_AD2S1200 is not set - -# -# Temperature sensors -# -# CONFIG_MAXIM_THERMOCOUPLE is not set -# CONFIG_MLX90614 is not set -# CONFIG_MLX90632 is not set -# CONFIG_TMP006 is not set -# CONFIG_TMP007 is not set -# CONFIG_TSYS01 is not set -# CONFIG_TSYS02D is not set -# CONFIG_NTB is not set -# CONFIG_VME_BUS is not set CONFIG_PWM=y -CONFIG_PWM_SYSFS=y -# CONFIG_PWM_CROS_EC is not set -# CONFIG_PWM_FSL_FTM is not set -# CONFIG_PWM_PCA9685 is not set CONFIG_PWM_ROCKCHIP=y -# CONFIG_PWM_ROCKCHIP_ONESHOT is not set - -# -# IRQ chip support -# -CONFIG_IRQCHIP=y -CONFIG_ARM_GIC=y -CONFIG_ARM_GIC_MAX_NR=1 -CONFIG_ARM_GIC_V2M=y -CONFIG_ARM_GIC_V3=y -CONFIG_ARM_GIC_V3_ITS=y -CONFIG_ARM_GIC_V3_ITS_PCI=y -CONFIG_PARTITION_PERCPU=y -# CONFIG_IPACK_BUS is not set -CONFIG_ARCH_HAS_RESET_CONTROLLER=y -CONFIG_RESET_CONTROLLER=y -# CONFIG_RESET_TI_SYSCON is not set -# CONFIG_FMC is not set - -# -# PHY Subsystem -# -CONFIG_GENERIC_PHY=y -# CONFIG_PHY_XGENE is not set -# CONFIG_BCM_KONA_USB2_PHY is not set -# CONFIG_PHY_PXA_28NM_HSIC is not set -# CONFIG_PHY_PXA_28NM_USB2 is not set -# CONFIG_PHY_CPCAP_USB is not set -# CONFIG_PHY_MAPPHONE_MDM6600 is not set -CONFIG_PHY_ROCKCHIP_CSI2_DPHY=y CONFIG_PHY_ROCKCHIP_DP=y +CONFIG_PHY_ROCKCHIP_DPHY_RX0=y CONFIG_PHY_ROCKCHIP_EMMC=y -# CONFIG_PHY_ROCKCHIP_INNO_COMBPHY is not set -CONFIG_PHY_ROCKCHIP_INNO_HDMI_PHY=y -CONFIG_PHY_ROCKCHIP_INNO_MIPI_DPHY=y +CONFIG_PHY_ROCKCHIP_INNO_HDMI=y CONFIG_PHY_ROCKCHIP_INNO_USB2=y -CONFIG_PHY_ROCKCHIP_INNO_USB3=y -CONFIG_PHY_ROCKCHIP_INNO_VIDEO_COMBO_PHY=y -# CONFIG_PHY_ROCKCHIP_INNO_VIDEO_PHY is not set -CONFIG_PHY_ROCKCHIP_MIPI_RX=y +CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY=y +CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=y -CONFIG_PHY_ROCKCHIP_NANENG_EDP=y -# CONFIG_PHY_ROCKCHIP_NANENG_USB2 is not set CONFIG_PHY_ROCKCHIP_PCIE=y CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y CONFIG_PHY_ROCKCHIP_TYPEC=y CONFIG_PHY_ROCKCHIP_USB=y -# CONFIG_PHY_SAMSUNG_USB2 is not set -# CONFIG_POWERCAP is not set -# CONFIG_MCB is not set -CONFIG_RAS=y - -# -# Android -# -CONFIG_ANDROID=y -# CONFIG_ANDROID_BINDER_IPC is not set -# CONFIG_LIBNVDIMM is not set -# CONFIG_DAX is not set -CONFIG_NVMEM=y -CONFIG_NVMEM_SYSFS=y -CONFIG_ROCKCHIP_EFUSE=y -CONFIG_ROCKCHIP_OTP=y - -# -# HW tracing support -# -# CONFIG_STM is not set -# CONFIG_INTEL_TH is not set -# CONFIG_FPGA is not set -# CONFIG_FSI is not set -# CONFIG_TEE is not set -CONFIG_PM_OPP=y -# CONFIG_SIOX is not set -# CONFIG_SLIMBUS is not set -# CONFIG_LEGACY_ENERGY_MODEL_DT is not set -CONFIG_RK_FLASH=y - -# -# Rockchip Flash Devices -# -# CONFIG_RK_NANDC_NAND is not set -CONFIG_RK_SFC_NAND=y -CONFIG_RK_SFC_NAND_MTD=y -CONFIG_RK_SFC_NOR=y -CONFIG_RK_SFC_NOR_MTD=y -# CONFIG_RK_NAND is not set - -# -# Headset device support -# -CONFIG_RK_HEADSET=y - -# -# File systems -# -CONFIG_DCACHE_WORD_ACCESS=y -CONFIG_FS_IOMAP=y -# CONFIG_EXT2_FS is not set -# CONFIG_EXT3_FS is not set +CONFIG_ARM_SMMU_V3_PMU=y +CONFIG_MUX_GPIO=y +CONFIG_MUX_MMIO=y CONFIG_EXT4_FS=y -CONFIG_EXT4_USE_FOR_EXT2=y +# CONFIG_EXT4_USE_FOR_EXT2 is not set CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y -# CONFIG_EXT4_ENCRYPTION is not set -# 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=y -# CONFIG_XFS_QUOTA is not set -# CONFIG_XFS_POSIX_ACL is not set -# CONFIG_XFS_RT is not set -# CONFIG_XFS_ONLINE_SCRUB is not set -# CONFIG_XFS_WARN is not set -# CONFIG_XFS_DEBUG is not set -# CONFIG_GFS2_FS is not set -# CONFIG_OCFS2_FS is not set -# CONFIG_BTRFS_FS is not set -# CONFIG_NILFS2_FS is not set -# CONFIG_F2FS_FS is not set -# CONFIG_FS_DAX is not set -CONFIG_FS_POSIX_ACL=y -CONFIG_EXPORTFS=y -# CONFIG_EXPORTFS_BLOCK_OPS is not set -CONFIG_FILE_LOCKING=y -CONFIG_MANDATORY_FILE_LOCKING=y -# CONFIG_FS_ENCRYPTION is not set -# CONFIG_FS_VERITY is not set -CONFIG_FSNOTIFY=y # CONFIG_DNOTIFY is not set -CONFIG_INOTIFY_USER=y -# CONFIG_FANOTIFY is not set -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_AUTOFS_FS is not set +CONFIG_AUTOFS_FS=y CONFIG_FUSE_FS=y -# CONFIG_CUSE is not set CONFIG_OVERLAY_FS=y -CONFIG_OVERLAY_FS_REDIRECT_DIR=y -CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y -# CONFIG_OVERLAY_FS_INDEX is not set -# CONFIG_OVERLAY_FS_XINO_AUTO is not set -# CONFIG_OVERLAY_FS_METACOPY is not set -# CONFIG_INCREMENTAL_FS is not set - -# -# Caches -# -# CONFIG_FSCACHE is not set - -# -# CD-ROM/DVD Filesystems -# +CONFIG_FSCACHE=y 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 is not set +CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y -CONFIG_FAT_DEFAULT_CODEPAGE=936 -CONFIG_FAT_DEFAULT_IOCHARSET="utf8" -CONFIG_FAT_DEFAULT_UTF8=y +CONFIG_FAT_DEFAULT_IOCHARSET="ascii" CONFIG_EXFAT_FS=y -CONFIG_EXFAT_DEFAULT_CODEPAGE=437 -CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8" -CONFIG_EXFAT_VIRTUAL_XATTR=y -CONFIG_EXFAT_VIRTUAL_XATTR_SELINUX_LABEL="u:object_r:exfat:s0" -# CONFIG_EXFAT_DEBUG is not set -# CONFIG_EXFAT_UEVENT is not set -# 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_PROC_CHILDREN is not set -# CONFIG_PROC_UID is not set -CONFIG_KERNFS=y -CONFIG_SYSFS=y CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y -CONFIG_TMPFS_XATTR=y -# CONFIG_HUGETLBFS is not set -CONFIG_MEMFD_CREATE=y -CONFIG_ARCH_HAS_GIGANTIC_PAGE=y -CONFIG_CONFIGFS_FS=y -CONFIG_MISC_FILESYSTEMS=y -# CONFIG_ORANGEFS_FS is not set -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_ECRYPT_FS is not set -# CONFIG_SDCARD_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_HFSPLUS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -CONFIG_JFFS2_FS_WRITEBUFFER=y -# CONFIG_JFFS2_FS_WBUF_VERIFY is not set -# CONFIG_JFFS2_SUMMARY is not set -# CONFIG_JFFS2_FS_XATTR is not set -# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set -CONFIG_JFFS2_ZLIB=y -CONFIG_JFFS2_RTIME=y -CONFIG_UBIFS_FS=y -CONFIG_UBIFS_FS_ADVANCED_COMPR=y -CONFIG_UBIFS_FS_LZO=y -CONFIG_UBIFS_FS_ZLIB=y -# CONFIG_UBIFS_ATIME_SUPPORT is not set -CONFIG_UBIFS_FS_XATTR=y -CONFIG_UBIFS_FS_SECURITY=y -# CONFIG_CRAMFS is not set CONFIG_SQUASHFS=y -CONFIG_SQUASHFS_FILE_CACHE=y -# CONFIG_SQUASHFS_FILE_DIRECT is not set -CONFIG_SQUASHFS_DECOMP_SINGLE=y -# CONFIG_SQUASHFS_DECOMP_MULTI is not set -# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set -# CONFIG_SQUASHFS_XATTR is not set -CONFIG_SQUASHFS_ZLIB=y CONFIG_SQUASHFS_LZ4=y CONFIG_SQUASHFS_LZO=y CONFIG_SQUASHFS_XZ=y -# CONFIG_SQUASHFS_ZSTD is not set -# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set -# CONFIG_SQUASHFS_EMBEDDED is not set -CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 -# 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_SQUASHFS_ZSTD=y CONFIG_PSTORE=y -CONFIG_PSTORE_DEFLATE_COMPRESS=y -# CONFIG_PSTORE_LZO_COMPRESS is not set -# CONFIG_PSTORE_LZ4_COMPRESS is not set -# CONFIG_PSTORE_LZ4HC_COMPRESS is not set -# CONFIG_PSTORE_842_COMPRESS is not set -# CONFIG_PSTORE_ZSTD_COMPRESS is not set -CONFIG_PSTORE_COMPRESS=y -CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y -CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" -CONFIG_PSTORE_CONSOLE=y -# CONFIG_PSTORE_CONSOLE_FORCE is not set -# CONFIG_PSTORE_PMSG is not set -# CONFIG_PSTORE_FTRACE is not set -CONFIG_PSTORE_RAM=y -# CONFIG_PSTORE_MCU_LOG is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UFS_FS is not set -CONFIG_NETWORK_FILESYSTEMS=y -# CONFIG_NFS_FS is not set -# CONFIG_NFSD is not set -# CONFIG_CEPH_FS is not set -# CONFIG_CIFS is not set -# CONFIG_CODA_FS is not set -# CONFIG_AFS_FS is not set -CONFIG_NLS=y -CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_DEFAULT="utf-8" 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=y -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1250 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set CONFIG_NLS_ASCII=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_UNICODE=y -# CONFIG_UNICODE_NORMALIZATION_SELFTEST 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_TRUSTED_KEYS is not set -# CONFIG_ENCRYPTED_KEYS is not set -# CONFIG_KEY_DH_OPERATIONS is not set -# CONFIG_SECURITY_DMESG_RESTRICT is not set -# CONFIG_SECURITY is not set -CONFIG_SECURITYFS=y -CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y -# CONFIG_HARDENED_USERCOPY is not set -# CONFIG_FORTIFY_SOURCE is not set -# CONFIG_STATIC_USERMODEHELPER is not set -# CONFIG_TEE_SUPPORT is not set -CONFIG_DEFAULT_SECURITY_DAC=y -CONFIG_DEFAULT_SECURITY="" - -# -# Kernel hardening options -# - -# -# Memory initialization -# +CONFIG_SECURITY=y +CONFIG_SECURITY_NETWORK=y +CONFIG_HARDENED_USERCOPY=y +CONFIG_STATIC_USERMODEHELPER=y +CONFIG_LSM="selinux,integrity" CONFIG_INIT_STACK_NONE=y -# CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set -# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set -CONFIG_CRYPTO=y - -# -# Crypto core or helper -# -CONFIG_CRYPTO_ALGAPI=y -CONFIG_CRYPTO_ALGAPI2=y -CONFIG_CRYPTO_AEAD=y -CONFIG_CRYPTO_AEAD2=y -CONFIG_CRYPTO_BLKCIPHER=y -CONFIG_CRYPTO_BLKCIPHER2=y -CONFIG_CRYPTO_HASH=y -CONFIG_CRYPTO_HASH2=y -CONFIG_CRYPTO_RNG=y -CONFIG_CRYPTO_RNG2=y -CONFIG_CRYPTO_RNG_DEFAULT=y -CONFIG_CRYPTO_AKCIPHER2=y -CONFIG_CRYPTO_AKCIPHER=y -CONFIG_CRYPTO_KPP2=y -CONFIG_CRYPTO_KPP=y -CONFIG_CRYPTO_ACOMP2=y -CONFIG_CRYPTO_RSA=y -# CONFIG_CRYPTO_DH is not set -CONFIG_CRYPTO_ECDH=y -CONFIG_CRYPTO_MANAGER=y -CONFIG_CRYPTO_MANAGER2=y -# CONFIG_CRYPTO_USER is not set -CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y -CONFIG_CRYPTO_GF128MUL=y -CONFIG_CRYPTO_NULL=y -CONFIG_CRYPTO_NULL2=y -# CONFIG_CRYPTO_PCRYPT is not set -CONFIG_CRYPTO_WORKQUEUE=y +CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y +CONFIG_INIT_ON_FREE_DEFAULT_ON=y +CONFIG_CRYPTO_USER=y +CONFIG_CRYPTO_PCRYPT=y CONFIG_CRYPTO_CRYPTD=y -# CONFIG_CRYPTO_MCRYPTD is not set -CONFIG_CRYPTO_AUTHENC=m -# CONFIG_CRYPTO_TEST is not set -CONFIG_CRYPTO_SIMD=y -# CONFIG_CRYPTO_CURVE25519 is not set - -# -# Authenticated Encryption with Associated Data -# -CONFIG_CRYPTO_CCM=y -CONFIG_CRYPTO_GCM=y -# CONFIG_CRYPTO_CHACHA20POLY1305 is not set -# CONFIG_CRYPTO_AEGIS128 is not set -# CONFIG_CRYPTO_AEGIS128L is not set -# CONFIG_CRYPTO_AEGIS256 is not set -# CONFIG_CRYPTO_MORUS640 is not set -# CONFIG_CRYPTO_MORUS1280 is not set -CONFIG_CRYPTO_SEQIV=y -CONFIG_CRYPTO_ECHAINIV=m - -# -# Block modes -# -CONFIG_CRYPTO_CBC=y -CONFIG_CRYPTO_CFB=y -CONFIG_CRYPTO_CTR=y -# CONFIG_CRYPTO_CTS is not set -CONFIG_CRYPTO_ECB=y -# CONFIG_CRYPTO_LRW is not set -# CONFIG_CRYPTO_PCBC is not set +CONFIG_CRYPTO_ECDH=y +CONFIG_CRYPTO_TWOFISH=y +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_CTS=y CONFIG_CRYPTO_XTS=y -# CONFIG_CRYPTO_KEYWRAP is not set -# CONFIG_CRYPTO_ADIANTUM is not set - -# -# Hash modes -# +CONFIG_CRYPTO_CHACHA20POLY1305=y +CONFIG_CRYPTO_CCM=y +CONFIG_CRYPTO_ESSIV=y CONFIG_CRYPTO_CMAC=y -CONFIG_CRYPTO_HMAC=y -# CONFIG_CRYPTO_XCBC is not set -# CONFIG_CRYPTO_VMAC is not set - -# -# Digest -# -CONFIG_CRYPTO_CRC32C=y -# CONFIG_CRYPTO_CRC32 is not set -# CONFIG_CRYPTO_BLAKE2S is not set -CONFIG_CRYPTO_CRCT10DIF=y -CONFIG_CRYPTO_GHASH=y -# CONFIG_CRYPTO_POLY1305 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=y -# CONFIG_CRYPTO_SHA3 is not set -CONFIG_CRYPTO_SM3=y -# CONFIG_CRYPTO_TGR192 is not set -# CONFIG_CRYPTO_WP512 is not set - -# -# Ciphers -# -CONFIG_CRYPTO_AES=y -# CONFIG_CRYPTO_AES_TI is not set -# CONFIG_CRYPTO_ANUBIS is not set -CONFIG_CRYPTO_ARC4=y -# CONFIG_CRYPTO_BLOWFISH is not set -# CONFIG_CRYPTO_CAMELLIA is not set -# CONFIG_CRYPTO_CAST5 is not set -# CONFIG_CRYPTO_CAST6 is not set -CONFIG_CRYPTO_DES=y -# CONFIG_CRYPTO_FCRYPT is not set -# CONFIG_CRYPTO_KHAZAD is not set -# CONFIG_CRYPTO_SALSA20 is not set -# CONFIG_CRYPTO_CHACHA20 is not set -# CONFIG_CRYPTO_SEED is not set -# CONFIG_CRYPTO_SERPENT is not set -# CONFIG_CRYPTO_SM4 is not set -# CONFIG_CRYPTO_TEA is not set -CONFIG_CRYPTO_TWOFISH=y -CONFIG_CRYPTO_TWOFISH_COMMON=y - -# -# Compression -# -CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_XCBC=y +CONFIG_CRYPTO_CRC32=y CONFIG_CRYPTO_LZO=y -# CONFIG_CRYPTO_842 is not set -# CONFIG_CRYPTO_LZ4 is not set -# CONFIG_CRYPTO_LZ4HC is not set -# CONFIG_CRYPTO_ZSTD is not set - -# -# Random Number Generation -# +CONFIG_CRYPTO_LZ4=y +CONFIG_CRYPTO_LZ4HC=y +CONFIG_CRYPTO_ZSTD=y CONFIG_CRYPTO_ANSI_CPRNG=y -CONFIG_CRYPTO_DRBG_MENU=y -CONFIG_CRYPTO_DRBG_HMAC=y -# CONFIG_CRYPTO_DRBG_HASH is not set -# CONFIG_CRYPTO_DRBG_CTR is not set -CONFIG_CRYPTO_DRBG=y -CONFIG_CRYPTO_JITTERENTROPY=y -CONFIG_CRYPTO_USER_API=y CONFIG_CRYPTO_USER_API_HASH=y CONFIG_CRYPTO_USER_API_SKCIPHER=y -# CONFIG_CRYPTO_USER_API_RNG is not set -# CONFIG_CRYPTO_USER_API_AEAD is not set -CONFIG_CRYPTO_HASH_INFO=y - -# -# Crypto library routines -# -# CONFIG_CRYPTO_LIB_BLAKE2S is not set -# CONFIG_CRYPTO_LIB_CHACHA is not set -CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 -# CONFIG_CRYPTO_LIB_POLY1305 is not set -# CONFIG_CRYPTO_LIB_CURVE25519 is not set -# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set -CONFIG_CRYPTO_HW=y -# CONFIG_CRYPTO_DEV_CCP is not set -# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set -# CONFIG_CRYPTO_DEV_CAVIUM_ZIP is not set +CONFIG_CRYPTO_USER_API_RNG=y +CONFIG_CRYPTO_USER_API_AEAD=y +CONFIG_CRYPTO_STATS=y +CONFIG_CRYPTO_NHPOLY1305_NEON=y +CONFIG_CRYPTO_GHASH_ARM64_CE=y +CONFIG_CRYPTO_SHA1_ARM64_CE=y +CONFIG_CRYPTO_SHA2_ARM64_CE=y +CONFIG_CRYPTO_SHA512_ARM64_CE=y +CONFIG_CRYPTO_AES_ARM64=y +CONFIG_CRYPTO_AES_ARM64_CE_BLK=y +CONFIG_CRYPTO_AES_ARM64_BS=y +CONFIG_CRYPTO_AES_ARM64_CE_CCM=y CONFIG_CRYPTO_DEV_ROCKCHIP=y -# CONFIG_CRYPTO_DEV_CCREE is not set -# CONFIG_CRYPTO_DEV_HISI_SEC is not set -CONFIG_ASYMMETRIC_KEY_TYPE=y -CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y -CONFIG_X509_CERTIFICATE_PARSER=y -CONFIG_PKCS7_MESSAGE_PARSER=y -# CONFIG_PKCS7_TEST_KEY is not set -# CONFIG_SIGNED_PE_FILE_VERIFICATION is not set - -# -# Certificates for signature checking -# -CONFIG_SYSTEM_TRUSTED_KEYRING=y -CONFIG_SYSTEM_TRUSTED_KEYS="" -# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set -# CONFIG_SECONDARY_TRUSTED_KEYRING is not set -# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set -CONFIG_BINARY_PRINTF=y - -# -# Library routines -# -CONFIG_BITREVERSE=y -CONFIG_HAVE_ARCH_BITREVERSE=y -CONFIG_RATIONAL=y -CONFIG_GENERIC_STRNCPY_FROM_USER=y -CONFIG_GENERIC_STRNLEN_USER=y -CONFIG_GENERIC_NET_UTILS=y -CONFIG_GENERIC_PCI_IOMAP=y -CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y -CONFIG_ARCH_HAS_FAST_MULTIPLIER=y -# CONFIG_INDIRECT_PIO is not set +CONFIG_CORDIC=y CONFIG_CRC_CCITT=y -CONFIG_CRC16=y CONFIG_CRC_T10DIF=y CONFIG_CRC_ITU_T=y -CONFIG_CRC32=y -# CONFIG_CRC32_SELFTEST is not set -CONFIG_CRC32_SLICEBY8=y -# CONFIG_CRC32_SLICEBY4 is not set -# CONFIG_CRC32_SARWATE is not set -# CONFIG_CRC32_BIT is not set -# CONFIG_CRC64 is not set -# CONFIG_CRC4 is not set CONFIG_CRC7=y -CONFIG_LIBCRC32C=y -# CONFIG_CRC8 is not set -CONFIG_AUDIT_ARCH_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_LZ4_DECOMPRESS=y -CONFIG_XZ_DEC=y # CONFIG_XZ_DEC_X86 is not set # CONFIG_XZ_DEC_POWERPC is not set -# CONFIG_XZ_DEC_IA64 is not set -CONFIG_XZ_DEC_ARM=y -CONFIG_XZ_DEC_ARMTHUMB=y # CONFIG_XZ_DEC_SPARC is not set -CONFIG_XZ_DEC_BCJ=y -# CONFIG_XZ_DEC_TEST is not set -CONFIG_DECOMPRESS_GZIP=y -CONFIG_DECOMPRESS_BZIP2=y -CONFIG_DECOMPRESS_LZMA=y -CONFIG_DECOMPRESS_XZ=y -CONFIG_DECOMPRESS_LZO=y -CONFIG_DECOMPRESS_LZ4=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=m -CONFIG_TEXTSEARCH_BM=m -CONFIG_TEXTSEARCH_FSM=m -CONFIG_ASSOCIATIVE_ARRAY=y -CONFIG_HAS_IOMEM=y -CONFIG_HAS_IOPORT_MAP=y -CONFIG_HAS_DMA=y -CONFIG_NEED_SG_DMA_LENGTH=y -CONFIG_NEED_DMA_MAP_STATE=y -CONFIG_ARCH_DMA_ADDR_T_64BIT=y -CONFIG_HAVE_GENERIC_DMA_COHERENT=y -CONFIG_DMA_DIRECT_OPS=y -CONFIG_SWIOTLB=y -CONFIG_SGL_ALLOC=y -CONFIG_CPU_RMAP=y -CONFIG_DQL=y -CONFIG_GLOB=y -# CONFIG_GLOB_SELFTEST is not set -CONFIG_NLATTR=y -CONFIG_CLZ_TAB=y -# CONFIG_CORDIC is not set -# CONFIG_DDR is not set -# CONFIG_IRQ_POLL is not set -CONFIG_MPILIB=y -CONFIG_LIBFDT=y -CONFIG_OID_REGISTRY=y -CONFIG_HAVE_GENERIC_VDSO=y -CONFIG_GENERIC_GETTIMEOFDAY=y -CONFIG_FONT_SUPPORT=y -# CONFIG_FONTS is not set -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y -CONFIG_SG_POOL=y -CONFIG_ARCH_HAS_SG_CHAIN=y -CONFIG_SBITMAP=y -# CONFIG_STRING_SELFTEST is not set - -# -# Kernel hacking -# - -# -# printk and dmesg options -# CONFIG_PRINTK_TIME=y -# CONFIG_PRINTK_TIME_FROM_ARM_ARCH_TIMER is not set -# CONFIG_PRINTK_PROCESS is not set -CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 -CONFIG_CONSOLE_LOGLEVEL_QUIET=4 -CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 -# CONFIG_BOOT_PRINTK_DELAY is not set +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7 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_GDB_SCRIPTS is not set -CONFIG_ENABLE_MUST_CHECK=y -CONFIG_FRAME_WARN=2048 -# CONFIG_STRIP_ASM_SYMS is not set -# CONFIG_READABLE_ASM is not set -# CONFIG_UNUSED_SYMBOLS is not set -# CONFIG_PAGE_OWNER is not set -CONFIG_DEBUG_FS=y -# CONFIG_HEADERS_CHECK is not set -# CONFIG_DEBUG_SECTION_MISMATCH is not set -CONFIG_SECTION_MISMATCH_WARN_ONLY=y -CONFIG_ARCH_WANT_FRAME_POINTERS=y -CONFIG_FRAME_POINTER=y -# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# CONFIG_SYMBOLIC_ERRNAME is not set +# CONFIG_DEBUG_MISC is not set CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0 -CONFIG_MAGIC_SYSRQ_SERIAL=y -CONFIG_DEBUG_KERNEL=y - -# -# Memory Debugging -# -# CONFIG_PAGE_EXTENSION is not set -# CONFIG_DEBUG_PAGEALLOC is not set -# CONFIG_PAGE_POISONING is not set -# CONFIG_DEBUG_PAGE_REF is not set -# CONFIG_DEBUG_RODATA_TEST is not set -# CONFIG_DEBUG_OBJECTS is not set -# CONFIG_SLUB_DEBUG_ON 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_ARCH_HAS_DEBUG_VIRTUAL=y -# CONFIG_DEBUG_VIRTUAL is not set -# CONFIG_DEBUG_MEMORY_INIT is not set -# CONFIG_DEBUG_PER_CPU_MAPS is not set -CONFIG_HAVE_ARCH_KASAN=y -CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y -CONFIG_CC_HAS_KASAN_GENERIC=y -# CONFIG_KASAN is not set -CONFIG_KASAN_STACK=1 -CONFIG_ARCH_HAS_KCOV=y -CONFIG_CC_HAS_SANCOV_TRACE_PC=y -# CONFIG_KCOV is not set -# CONFIG_DEBUG_SHIRQ is not set - -# -# Debug Lockups and Hangs -# -# CONFIG_SOFTLOCKUP_DETECTOR is not set -# CONFIG_DETECT_HUNG_TASK is not set -# CONFIG_WQ_WATCHDOG is not set -# CONFIG_PANIC_ON_OOPS is not set -CONFIG_PANIC_ON_OOPS_VALUE=0 -CONFIG_PANIC_TIMEOUT=0 -CONFIG_SCHED_DEBUG=y -CONFIG_SCHED_INFO=y +CONFIG_DEBUG_FS=y +# CONFIG_SLUB_DEBUG is not set +CONFIG_PANIC_TIMEOUT=1 +CONFIG_DETECT_HUNG_TASK=y +CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y +# CONFIG_SCHED_DEBUG is not set CONFIG_SCHEDSTATS=y -# CONFIG_SCHED_STACK_END_CHECK is not set -# CONFIG_DEBUG_TIMEKEEPING is not set - -# -# Lock Debugging (spinlocks, mutexes, etc...) -# -CONFIG_LOCK_DEBUGGING_SUPPORT=y -# CONFIG_PROVE_LOCKING is not set -# CONFIG_LOCK_STAT is not set -# CONFIG_DEBUG_RT_MUTEXES is not set CONFIG_DEBUG_SPINLOCK=y -# CONFIG_DEBUG_MUTEXES is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set -# CONFIG_DEBUG_RWSEMS is not set -# CONFIG_DEBUG_LOCK_ALLOC is not set -# CONFIG_DEBUG_ATOMIC_SLEEP is not set -# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set -# CONFIG_LOCK_TORTURE_TEST is not set -# CONFIG_WW_MUTEX_SELFTEST is not set CONFIG_STACKTRACE=y -# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set -# CONFIG_DEBUG_KOBJECT is not set -CONFIG_HAVE_DEBUG_BUGVERBOSE=y -CONFIG_DEBUG_BUGVERBOSE=y -# CONFIG_DEBUG_LIST is not set -# CONFIG_DEBUG_PI_LIST is not set -# CONFIG_DEBUG_SG is not set -# CONFIG_DEBUG_NOTIFIERS is not set CONFIG_DEBUG_CREDENTIALS=y - -# -# RCU Debugging -# -# CONFIG_RCU_PERF_TEST is not set -# CONFIG_RCU_TORTURE_TEST is not set CONFIG_RCU_CPU_STALL_TIMEOUT=60 -CONFIG_RCU_TRACE=y -# CONFIG_RCU_EQS_DEBUG is not set -# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set -# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set -# CONFIG_NOTIFIER_ERROR_INJECTION is not set -# CONFIG_FAULT_INJECTION is not set -# CONFIG_LATENCYTOP is not set -CONFIG_NOP_TRACER=y -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_TRACE_CLOCK=y -CONFIG_RING_BUFFER=y -CONFIG_EVENT_TRACING=y -CONFIG_CONTEXT_SWITCH_TRACER=y -CONFIG_TRACING=y -CONFIG_GENERIC_TRACER=y -CONFIG_TRACING_SUPPORT=y -CONFIG_FTRACE=y -CONFIG_FUNCTION_TRACER=y -CONFIG_FUNCTION_GRAPH_TRACER=y -# CONFIG_PREEMPTIRQ_EVENTS is not set -# CONFIG_IRQSOFF_TRACER is not set -# CONFIG_SCHED_TRACER is not set -# CONFIG_HWLAT_TRACER is not set -# CONFIG_FTRACE_SYSCALLS is not set -# CONFIG_TRACER_SNAPSHOT is not set -CONFIG_BRANCH_PROFILE_NONE=y -# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set -# CONFIG_PROFILE_ALL_BRANCHES is not set -# CONFIG_STACK_TRACER is not set -CONFIG_BLK_DEV_IO_TRACE=y -CONFIG_DYNAMIC_FTRACE=y -# CONFIG_FUNCTION_PROFILER is not set -CONFIG_FTRACE_MCOUNT_RECORD=y -# CONFIG_FTRACE_STARTUP_TEST is not set -# CONFIG_HIST_TRIGGERS is not set -# CONFIG_TRACEPOINT_BENCHMARK is not set -# CONFIG_RING_BUFFER_BENCHMARK is not set -# CONFIG_RING_BUFFER_STARTUP_TEST is not set -# CONFIG_PREEMPTIRQ_DELAY_TEST is not set -# CONFIG_TRACE_EVAL_MAP_FILE is not set -CONFIG_TRACING_EVENTS_GPIO=y -# CONFIG_DMA_API_DEBUG is not set -CONFIG_RUNTIME_TESTING_MENU=y -CONFIG_LKDTM=y -# CONFIG_TEST_LIST_SORT is not set -# CONFIG_TEST_SORT is not set -# CONFIG_BACKTRACE_SELF_TEST is not set -# CONFIG_RBTREE_TEST is not set -# CONFIG_INTERVAL_TREE_TEST is not set -# CONFIG_PERCPU_TEST is not set -# CONFIG_ATOMIC64_SELFTEST is not set -# CONFIG_TEST_HEXDUMP is not set -# CONFIG_TEST_STRING_HELPERS is not set -# CONFIG_TEST_KSTRTOX is not set -# CONFIG_TEST_PRINTF is not set -# CONFIG_TEST_BITMAP is not set -# CONFIG_TEST_BITFIELD is not set -# CONFIG_TEST_UUID is not set -# CONFIG_TEST_OVERFLOW is not set -# CONFIG_TEST_RHASHTABLE is not set -# CONFIG_TEST_HASH is not set -# CONFIG_TEST_IDA is not set -# CONFIG_TEST_LKM is not set -# CONFIG_TEST_USER_COPY is not set -# CONFIG_TEST_BPF is not set -# CONFIG_FIND_BIT_BENCHMARK is not set -# CONFIG_TEST_FIRMWARE is not set -# CONFIG_TEST_SYSCTL is not set -# CONFIG_TEST_UDELAY is not set -# CONFIG_TEST_STATIC_KEYS is not set -# CONFIG_TEST_KMOD is not set -# CONFIG_TEST_MEMINIT is not set -# CONFIG_TEST_STACKINIT is not set -# CONFIG_MEMTEST is not set -# CONFIG_BUG_ON_DATA_CORRUPTION is not set -# CONFIG_SAMPLES is not set -CONFIG_HAVE_ARCH_KGDB=y -# CONFIG_KGDB is not set -CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y -# CONFIG_UBSAN is not set -CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y -CONFIG_STRICT_DEVMEM=y -# CONFIG_IO_STRICT_DEVMEM is not set -# CONFIG_ARM64_PTDUMP_DEBUGFS is not set -# CONFIG_PID_IN_CONTEXTIDR is not set -# CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set -# CONFIG_DEBUG_WX is not set -# CONFIG_DEBUG_ALIGN_RODATA is not set -# CONFIG_ARM64_RELOC_TEST is not set -# CONFIG_CORESIGHT is not set - -CONFIG_ZED_GPIO_CONTROL=y -CONFIG_JOYSTICK_ZED=y +CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=20 +# CONFIG_RCU_TRACE is not set +# CONFIG_FTRACE is not set +# CONFIG_STRICT_DEVMEM is not set +# CONFIG_RUNTIME_TESTING_MENU is not set diff --git a/projects/Rockchip/devices/RK3566-X55/options b/projects/Rockchip/devices/RK3566-X55/options index 6fa8d72614..f8690886db 100644 --- a/projects/Rockchip/devices/RK3566-X55/options +++ b/projects/Rockchip/devices/RK3566-X55/options @@ -31,12 +31,12 @@ BOOTLOADER="u-boot" PARTITION_TABLE="gpt" UBOOT_LABEL="uboot" - TRUST_LABEL="resource" - DEVICE_DTB=("rk3566-evb2-lp4x-v10-linux") + TRUST_LABEL="trust" + DEVICE_DTB=("rk3566-powkiddy-x55") UBOOT_DTB="rk3566" - UBOOT_CONFIG="rk3568_defconfig" - PKG_SOC="rk356x" - PKG_DATAFILE="${PKG_RKBIN}/bin/rk35/rk3566_ddr_1056MHz_v1.16.bin" + UBOOT_CONFIG="powkiddy-x55-rk3566_defconfig" + PKG_SOC="rk3568" + PKG_DATAFILE="${PKG_RKBIN}/bin/rk35/rk3568_ddr_1056MHz_v1.16.bin" PKG_LOADER="${PKG_RKBIN}/bin/rk35/rk356x_spl_v1.12.bin" PKG_BL31="${PKG_RKBIN}/bin/rk35/rk3568_bl31_v1.42.elf" PKG_LOAD_ADDR="0x0a100000" @@ -45,26 +45,37 @@ # Additional kernel make parameters (for example to specify the u-boot loadaddress) KERNEL_MAKE_EXTRACMD=" $(for DTB in "${DEVICE_DTB[@]}"; do echo -n "rockchip/${DTB}.dtb "; done)" + KERNEL_EXTRA_DEPENDS_TARGET="zstd libcap libtraceevent" # Define the CPU HW_CPU="Rockchip RK3566" # Mali GPU family MALI_FAMILY="bifrost-g52" - MALI_VERSION="g2p0" - OPENGLES="libmali" - VULKAN_SUPPORT="no" + # MALI_VERSION="g2p0" + # OPENGLES="libmali" + VULKAN_SUPPORT="" - GRAPHIC_DRIVERS="" + # OpenGL(X) implementation to use (mesa / no) + OPENGL="mesa" + + # OpenGL-ES implementation to use (mesa / no) + OPENGLES="mesa" + + GRAPHIC_DRIVERS="panfrost" # Displayserver to use (weston / x11 / no) - DISPLAYSERVER="no" + DISPLAYSERVER="wl" # Windowmanager to use (fluxbox / weston / no) - WINDOWMANAGER="no" + WINDOWMANAGER="weston" + + # debug tty path + DEBUG_TTY="/dev/ttyS2" # kernel serial console - EXTRA_CMDLINE="quiet rootwait console=ttyUSB0,1500000 fbcon=rotate:3 console=tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20" + #EXTRA_CMDLINE="quiet rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20 initcall_blacklist=uvc_init log_buf_len=1M" + EXTRA_CMDLINE="rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty1 ssh consoleblank=0 systemd.show_status=0 loglevel=8 panic=20 nopkmute" # additional packages to install # ADDITIONAL_PACKAGES="" @@ -72,13 +83,13 @@ # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) # Space separated list is supported, # e.g. FIRMWARE="dvb-firmware misc-firmware wlan-firmware" - FIRMWARE="misc-firmware wlan-firmware RTL8821CS-firmware" + FIRMWARE="misc-firmware" # additional drivers to install: # for a list of additional drivers see packages/linux-drivers # Space separated list is supported, # e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" - # ADDITIONAL_DRIVERS="RTL8821AU RTL8821CU RTL88x2BU" + ADDITIONAL_DRIVERS="jelos-gamepad" # build and install driver addons (yes / no) DRIVER_ADDONS_SUPPORT="no" @@ -88,9 +99,6 @@ # Space separated list is supported, DRIVER_ADDONS="" #dvb-latest - # debug tty path - DEBUG_TTY="/dev/ttyUSB0" - # build and install bluetooth support (yes / no) BLUETOOTH_SUPPORT="yes" @@ -109,11 +117,9 @@ # build and install SFTP Server (yes / no) SFTP_SERVER="yes" - # build and install Simple HTTP Server (yes / no) - SIMPLE_HTTP_SERVER="yes" - # build and install OpenVPN support (yes / no) OPENVPN_SUPPORT="no" + WIREGUARD_SUPPORT="no" # build and install ZeroTier support (yes / no) ZEROTIER_SUPPORT="yes" diff --git a/projects/Rockchip/devices/RK3566/boot/boot.ini b/projects/Rockchip/devices/RK3566/boot/boot.ini deleted file mode 100644 index e0c0760f1c..0000000000 --- a/projects/Rockchip/devices/RK3566/boot/boot.ini +++ /dev/null @@ -1,6 +0,0 @@ -setenv bootargs "boot=UUID=@UUID_SYSTEM@ disk=UUID=@UUID_STORAGE@ @EXTRA_CMDLINE@" -setenv kernel_comp_addr_r 0x03000000 -setenv kernel_comp_size 0x04000000 -load mmc 1 ${fdt_addr_r} ${fdtfile} -load mmc 1 ${kernel_addr_r} KERNEL -booti ${kernel_addr_r} - ${fdt_addr_r} diff --git a/projects/Rockchip/devices/RK3566/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3566/linux/linux.aarch64.conf index f64fb821c0..721676b7f8 100644 --- a/projects/Rockchip/devices/RK3566/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3566/linux/linux.aarch64.conf @@ -1,962 +1,149 @@ -# -# Automatically generated file; DO NOT EDIT. -# Linux/arm64 4.19.172 Kernel Configuration -# - -# -# Compiler: aarch64-libreelec-linux-gnueabi-gcc-10.3.0 (GCC) 10.3.0 -# -CONFIG_CC_IS_GCC=y -CONFIG_GCC_VERSION=100300 -CONFIG_CLANG_VERSION=0 -CONFIG_CC_HAS_ASM_GOTO=y -CONFIG_IRQ_WORK=y -CONFIG_BUILDTIME_EXTABLE_SORT=y -CONFIG_THREAD_INFO_IN_TASK=y - -# -# General setup -# -CONFIG_INIT_ENV_ARG_LIMIT=32 -# CONFIG_COMPILE_TEST is not set -CONFIG_LOCALVERSION="" # CONFIG_LOCALVERSION_AUTO is not set -CONFIG_BUILD_SALT="" -CONFIG_HAVE_KERNEL_GZIP=y -CONFIG_HAVE_KERNEL_LZ4=y -CONFIG_KERNEL_GZIP=y -# CONFIG_KERNEL_LZ4 is not set CONFIG_DEFAULT_HOSTNAME="@DEVICENAME@" -CONFIG_SWAP=y CONFIG_SYSVIPC=y -CONFIG_SYSVIPC_SYSCTL=y -# CONFIG_POSIX_MQUEUE is not set -CONFIG_CROSS_MEMORY_ATTACH=y -# CONFIG_USELIB is not set -# CONFIG_AUDIT is not set -CONFIG_HAVE_ARCH_AUDITSYSCALL=y - -# -# IRQ subsystem -# -CONFIG_GENERIC_IRQ_PROBE=y -CONFIG_GENERIC_IRQ_SHOW=y -CONFIG_GENERIC_IRQ_SHOW_LEVEL=y -CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y -CONFIG_GENERIC_IRQ_MIGRATION=y -CONFIG_HARDIRQS_SW_RESEND=y -CONFIG_GENERIC_IRQ_CHIP=y -CONFIG_IRQ_DOMAIN=y -CONFIG_IRQ_DOMAIN_HIERARCHY=y -CONFIG_GENERIC_MSI_IRQ=y -CONFIG_GENERIC_MSI_IRQ_DOMAIN=y -CONFIG_HANDLE_DOMAIN_IRQ=y -CONFIG_IRQ_FORCED_THREADING=y -CONFIG_SPARSE_IRQ=y -# CONFIG_GENERIC_IRQ_DEBUGFS is not set -CONFIG_GENERIC_IRQ_MULTI_HANDLER=y -CONFIG_ARCH_CLOCKSOURCE_DATA=y -CONFIG_GENERIC_TIME_VSYSCALL=y -CONFIG_GENERIC_CLOCKEVENTS=y -CONFIG_ARCH_HAS_TICK_BROADCAST=y -CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y - -# -# Timers subsystem -# -CONFIG_TICK_ONESHOT=y -CONFIG_NO_HZ_COMMON=y -# CONFIG_HZ_PERIODIC is not set +CONFIG_POSIX_MQUEUE=y +CONFIG_WATCH_QUEUE=y +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_USELIB=y CONFIG_NO_HZ_IDLE=y -# CONFIG_NO_HZ_FULL is not set -CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y -# CONFIG_PREEMPT_NONE is not set -CONFIG_PREEMPT_VOLUNTARY=y -# CONFIG_PREEMPT is not set - -# -# CPU/Task time and stats accounting -# -CONFIG_TICK_CPU_ACCOUNTING=y -# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set -# CONFIG_IRQ_TIME_ACCOUNTING is not set -# CONFIG_BSD_PROCESS_ACCT is not set -# CONFIG_TASKSTATS is not set -# CONFIG_PSI is not set -CONFIG_CPU_ISOLATION=y - -# -# RCU Subsystem -# -CONFIG_TREE_RCU=y -# CONFIG_RCU_EXPERT is not set -CONFIG_SRCU=y -CONFIG_TREE_SRCU=y -CONFIG_RCU_STALL_COMMON=y -CONFIG_RCU_NEED_SEGCBLIST=y -CONFIG_BUILD_BIN2C=y +CONFIG_BPF_SYSCALL=y +CONFIG_BPF_JIT=y +CONFIG_BPF_JIT_ALWAYS_ON=y +# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set +CONFIG_PREEMPT=y +CONFIG_IRQ_TIME_ACCOUNTING=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y -# CONFIG_IKHEADERS is not set CONFIG_LOG_BUF_SHIFT=18 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 -CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 -CONFIG_GENERIC_SCHED_CLOCK=y - -# -# Scheduler features -# -CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y -CONFIG_ARCH_SUPPORTS_INT128=y -CONFIG_CGROUPS=y -# CONFIG_MEMCG is not set +CONFIG_MEMCG=y CONFIG_BLK_CGROUP=y -# CONFIG_DEBUG_BLK_CGROUP is not set -CONFIG_CGROUP_SCHED=y -CONFIG_FAIR_GROUP_SCHED=y CONFIG_CFS_BANDWIDTH=y -# CONFIG_RT_GROUP_SCHED is not set -# CONFIG_CGROUP_PIDS is not set -# CONFIG_CGROUP_RDMA is not set +CONFIG_RT_GROUP_SCHED=y +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_RDMA=y CONFIG_CGROUP_FREEZER=y CONFIG_CPUSETS=y -CONFIG_PROC_PID_CPUSET=y CONFIG_CGROUP_DEVICE=y CONFIG_CGROUP_CPUACCT=y -# CONFIG_CGROUP_DEBUG is not set -CONFIG_SOCK_CGROUP_DATA=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_BPF=y CONFIG_NAMESPACES=y -CONFIG_UTS_NS=y -CONFIG_IPC_NS=y -CONFIG_USER_NS=y -CONFIG_PID_NS=y -CONFIG_NET_NS=y -# CONFIG_CHECKPOINT_RESTORE is not set -# CONFIG_SCHED_AUTOGROUP is not set -# CONFIG_SCHED_TUNE is not set -# CONFIG_SYSFS_DEPRECATED is not set +CONFIG_SCHED_AUTOGROUP=y CONFIG_RELAY=y -CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="" -CONFIG_INITRAMFS_ROOT_UID=0 -CONFIG_INITRAMFS_ROOT_GID=0 -CONFIG_RD_GZIP=y -CONFIG_RD_BZIP2=y -CONFIG_RD_LZMA=y -CONFIG_RD_XZ=y -CONFIG_RD_LZO=y -CONFIG_RD_LZ4=y -CONFIG_INITRAMFS_COMPRESSION=".gz" -# CONFIG_INITRD_ASYNC is not set -# CONFIG_ROCKCHIP_ONE_INITRD is not set -CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y -# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set -CONFIG_SYSCTL=y -CONFIG_HAVE_UID16=y -CONFIG_SYSCTL_EXCEPTION_TRACE=y -CONFIG_BPF=y +CONFIG_INITRAMFS_SOURCE="@INITRAMFS_SOURCE@" +CONFIG_INITRAMFS_COMPRESSION_LZO=y +CONFIG_BOOT_CONFIG=y +CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_EXPERT=y -CONFIG_UID16=y -CONFIG_MULTIUSER=y -# CONFIG_SGETMASK_SYSCALL is not set -CONFIG_SYSFS_SYSCALL=y -# CONFIG_SYSCTL_SYSCALL is not set -CONFIG_FHANDLE=y -CONFIG_POSIX_TIMERS=y -CONFIG_PRINTK=y -CONFIG_PRINTK_NMI=y -CONFIG_BUG=y -CONFIG_ELF_CORE=y -CONFIG_BASE_FULL=y -CONFIG_FUTEX=y -CONFIG_FUTEX_PI=y -CONFIG_EPOLL=y -CONFIG_SIGNALFD=y -CONFIG_TIMERFD=y -CONFIG_EVENTFD=y -CONFIG_SHMEM=y -CONFIG_AIO=y -CONFIG_ADVISE_SYSCALLS=y -CONFIG_MEMBARRIER=y -CONFIG_KALLSYMS=y -# CONFIG_KALLSYMS_ALL is not set -CONFIG_KALLSYMS_BASE_RELATIVE=y -# CONFIG_BPF_SYSCALL is not set -# CONFIG_USERFAULTFD is not set -CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y -CONFIG_RSEQ=y -# CONFIG_DEBUG_RSEQ is not set -CONFIG_EMBEDDED=y -CONFIG_HAVE_PERF_EVENTS=y -# CONFIG_PC104 is not set - -# -# Kernel Performance Events And Counters -# -# CONFIG_PERF_EVENTS is not set -CONFIG_VM_EVENT_COUNTERS=y -CONFIG_SLUB_SYSFS=y -CONFIG_SLUB_DEBUG=y -# CONFIG_COMPAT_BRK is not set -# CONFIG_SLAB is not set -CONFIG_SLUB=y -# CONFIG_SLOB is not set -CONFIG_SLAB_MERGE_DEFAULT=y -# CONFIG_SLAB_FREELIST_RANDOM is not set -# CONFIG_SLAB_FREELIST_HARDENED is not set -CONFIG_SLUB_CPU_PARTIAL=y -CONFIG_SYSTEM_DATA_VERIFICATION=y +CONFIG_SGETMASK_SYSCALL=y +CONFIG_KALLSYMS_ALL=y CONFIG_PROFILING=y -CONFIG_TRACEPOINTS=y -CONFIG_ARM64=y -CONFIG_64BIT=y -CONFIG_MMU=y -CONFIG_ARM64_PAGE_SHIFT=12 -CONFIG_ARM64_CONT_SHIFT=4 -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_STACKTRACE_SUPPORT=y -CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 -CONFIG_LOCKDEP_SUPPORT=y -CONFIG_TRACE_IRQFLAGS_SUPPORT=y -CONFIG_RWSEM_XCHGADD_ALGORITHM=y -CONFIG_GENERIC_BUG=y -CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y -CONFIG_GENERIC_HWEIGHT=y -CONFIG_GENERIC_CSUM=y -CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_ZONE_DMA32=y -CONFIG_HAVE_GENERIC_GUP=y -CONFIG_SMP=y -CONFIG_KERNEL_MODE_NEON=y -CONFIG_FIX_EARLYCON_MEM=y -CONFIG_PGTABLE_LEVELS=3 -CONFIG_ARCH_SUPPORTS_UPROBES=y -CONFIG_ARCH_PROC_KCORE_TEXT=y - -# -# Platform selection -# -# CONFIG_ARCH_ACTIONS is not set -# CONFIG_ARCH_SUNXI is not set -# CONFIG_ARCH_ALPINE is not set -# CONFIG_ARCH_BCM2835 is not set -# CONFIG_ARCH_BCM_IPROC is not set -# CONFIG_ARCH_BERLIN is not set -# CONFIG_ARCH_BRCMSTB is not set -# CONFIG_ARCH_EXYNOS is not set -# CONFIG_ARCH_K3 is not set -# CONFIG_ARCH_LAYERSCAPE is not set -# CONFIG_ARCH_LG1K is not set -# CONFIG_ARCH_HISI is not set -# CONFIG_ARCH_MEDIATEK is not set -# CONFIG_ARCH_MESON is not set -# CONFIG_ARCH_MVEBU is not set -# CONFIG_ARCH_QCOM is not set -# CONFIG_ARCH_REALTEK is not set CONFIG_ARCH_ROCKCHIP=y -# CONFIG_ARCH_SEATTLE is not set -# CONFIG_ARCH_SYNQUACER is not set -# CONFIG_ARCH_RENESAS is not set -# CONFIG_ARCH_STRATIX10 is not set -# CONFIG_ARCH_TEGRA is not set -# CONFIG_ARCH_SPRD is not set -# CONFIG_ARCH_THUNDER is not set -# CONFIG_ARCH_THUNDER2 is not set -# CONFIG_ARCH_UNIPHIER is not set -# CONFIG_ARCH_VEXPRESS is not set -# CONFIG_ARCH_XGENE is not set -# CONFIG_ARCH_ZX is not set -# CONFIG_ARCH_ZYNQMP is not set - -# -# Bus support -# -CONFIG_PCI=y -CONFIG_PCI_DOMAINS=y -CONFIG_PCI_DOMAINS_GENERIC=y -CONFIG_PCI_SYSCALL=y -CONFIG_PCIEPORTBUS=y -CONFIG_PCIEAER=y -# CONFIG_PCIEAER_INJECT is not set -# CONFIG_PCIE_ECRC is not set -CONFIG_PCIEASPM=y -# CONFIG_PCIEASPM_DEBUG is not set -CONFIG_PCIEASPM_DEFAULT=y -# CONFIG_PCIEASPM_POWERSAVE is not set -# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set -# CONFIG_PCIEASPM_PERFORMANCE is not set -CONFIG_PCIE_PME=y -# CONFIG_PCIE_DPC is not set -# CONFIG_PCIE_PTM is not set -CONFIG_PCI_MSI=y -CONFIG_PCI_MSI_IRQ_DOMAIN=y -CONFIG_PCI_QUIRKS=y -# CONFIG_PCI_DEBUG is not set -# CONFIG_PCI_STUB is not set -# CONFIG_PCI_IOV is not set -# CONFIG_PCI_PRI is not set -# CONFIG_PCI_PASID is not set -# CONFIG_HOTPLUG_PCI is not set - -# -# PCI controller drivers -# - -# -# Cadence PCIe controllers support -# -# CONFIG_PCIE_CADENCE_HOST is not set -# CONFIG_PCI_FTPCI100 is not set -# CONFIG_PCI_HOST_GENERIC is not set -# CONFIG_PCIE_XILINX is not set -# CONFIG_PCI_XGENE is not set -# CONFIG_PCI_HOST_THUNDER_PEM is not set -# CONFIG_PCI_HOST_THUNDER_ECAM is not set -# CONFIG_PCIE_ROCKCHIP_HOST is not set -# CONFIG_ROCKCHIP_PCIE_DMA_OBJ is not set - -# -# DesignWare PCI Core Support -# -CONFIG_PCIE_DW=y -CONFIG_PCIE_DW_HOST=y -# CONFIG_PCIE_DW_PLAT_HOST is not set -CONFIG_PCIE_DW_ROCKCHIP=y -# CONFIG_PCI_HISI is not set -# CONFIG_PCIE_KIRIN is not set - -# -# PCI Endpoint -# -# CONFIG_PCI_ENDPOINT is not set - -# -# PCI switch controller drivers -# -# CONFIG_PCI_SW_SWITCHTEC is not set - -# -# Kernel Features -# - -# -# ARM errata workarounds via the alternatives framework -# -# CONFIG_ARM64_ERRATUM_826319 is not set -# CONFIG_ARM64_ERRATUM_827319 is not set -# CONFIG_ARM64_ERRATUM_824069 is not set -# CONFIG_ARM64_ERRATUM_819472 is not set -# CONFIG_ARM64_ERRATUM_832075 is not set -CONFIG_ARM64_ERRATUM_845719=y -CONFIG_ARM64_ERRATUM_843419=y -CONFIG_ARM64_ERRATUM_1024718=y -CONFIG_ARM64_ERRATUM_1463225=y -CONFIG_ARM64_ERRATUM_1542419=y # CONFIG_CAVIUM_ERRATUM_22375 is not set # CONFIG_CAVIUM_ERRATUM_23154 is not set -CONFIG_CAVIUM_ERRATUM_27456=y -CONFIG_CAVIUM_ERRATUM_30115=y -CONFIG_QCOM_FALKOR_ERRATUM_1003=y -CONFIG_QCOM_FALKOR_ERRATUM_1009=y -CONFIG_QCOM_QDF2400_ERRATUM_0065=y -CONFIG_SOCIONEXT_SYNQUACER_PREITS=y -CONFIG_HISILICON_ERRATUM_161600802=y -CONFIG_QCOM_FALKOR_ERRATUM_E1041=y -CONFIG_ARM64_4K_PAGES=y -# CONFIG_ARM64_16K_PAGES is not set -# 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_PA_BITS_48=y -CONFIG_ARM64_PA_BITS=48 -# CONFIG_CPU_BIG_ENDIAN is not set +# CONFIG_CAVIUM_ERRATUM_27456 is not set +# CONFIG_CAVIUM_ERRATUM_30115 is not set +# CONFIG_CAVIUM_TX2_ERRATUM_219 is not set +# CONFIG_FUJITSU_ERRATUM_010001 is not set +# CONFIG_HISILICON_ERRATUM_161600802 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_1003 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_1009 is not set +# CONFIG_QCOM_QDF2400_ERRATUM_0065 is not set +# CONFIG_QCOM_FALKOR_ERRATUM_E1041 is not set +# CONFIG_NVIDIA_CARMEL_CNP_ERRATUM is not set +# CONFIG_SOCIONEXT_SYNQUACER_PREITS is not set CONFIG_SCHED_MC=y -# CONFIG_SCHED_SMT is not set -CONFIG_NR_CPUS=8 -CONFIG_HOTPLUG_CPU=y -CONFIG_ARCH_NR_GPIO=256 -# CONFIG_NUMA is not set -CONFIG_HOLES_IN_ZONE=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_SUPPORTS_DEBUG_PAGEALLOC=y -CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y -CONFIG_ARCH_SPARSEMEM_ENABLE=y -CONFIG_ARCH_SPARSEMEM_DEFAULT=y -CONFIG_ARCH_SELECT_MEMORY_MODEL=y -CONFIG_ARCH_FLATMEM_ENABLE=y -CONFIG_HAVE_ARCH_PFN_VALID=y -CONFIG_SYS_SUPPORTS_HUGETLBFS=y -CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y -CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y -# CONFIG_ARM64_DMA_USE_IOMMU is not set -CONFIG_SECCOMP=y -# CONFIG_PARAVIRT is not set -# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set -# CONFIG_KEXEC is not set -# CONFIG_CRASH_DUMP is not set -# CONFIG_XEN is not set -CONFIG_FORCE_MAX_ZONEORDER=11 -CONFIG_UNMAP_KERNEL_AT_EL0=y -CONFIG_HARDEN_BRANCH_PREDICTOR=y -CONFIG_HARDEN_EL2_VECTORS=y -CONFIG_ARM64_SSBD=y -CONFIG_ARM64_TAGGED_ADDR_ABI=y +CONFIG_SCHED_SMT=y +CONFIG_NR_CPUS=4 +CONFIG_ARM64_SW_TTBR0_PAN=y +CONFIG_COMPAT=y CONFIG_ARMV8_DEPRECATED=y -CONFIG_SWP_EMULATION=y -CONFIG_CP15_BARRIER_EMULATION=y -CONFIG_SETEND_EMULATION=y -# CONFIG_ARM64_SW_TTBR0_PAN is not set - -# -# ARMv8.1 architectural features -# -CONFIG_ARM64_HW_AFDBM=y -CONFIG_ARM64_PAN=y -CONFIG_ARM64_LSE_ATOMICS=y -CONFIG_ARM64_VHE=y - -# -# ARMv8.2 architectural features -# -CONFIG_ARM64_UAO=y -# CONFIG_ARM64_PMEM is not set -CONFIG_ARM64_RAS_EXTN=y -CONFIG_ARM64_SVE=y -CONFIG_ARM64_MODULE_PLTS=y -# CONFIG_RANDOMIZE_BASE is not set - -# -# Boot options -# -CONFIG_CMDLINE="" +CONFIG_ARM64_PMEM=y +# CONFIG_ARM64_BTI is not set +CONFIG_RANDOMIZE_BASE=y # CONFIG_EFI is not set -CONFIG_COMPAT=y -CONFIG_KUSER_HELPERS=y -CONFIG_SYSVIPC_COMPAT=y - -# -# Power management options -# -CONFIG_SUSPEND=y -CONFIG_SUSPEND_FREEZER=y -# CONFIG_SUSPEND_SKIP_SYNC is not set -CONFIG_HAS_WAKELOCK=y -CONFIG_WAKELOCK=y -# CONFIG_HIBERNATION is not set -CONFIG_PM_SLEEP=y -CONFIG_PM_SLEEP_SMP=y -# CONFIG_PM_AUTOSLEEP is not set -# CONFIG_PM_WAKELOCKS is not set -CONFIG_PM=y -CONFIG_PM_DEBUG=y -CONFIG_PM_ADVANCED_DEBUG=y -# CONFIG_PM_TEST_SUSPEND is not set -CONFIG_PM_SLEEP_DEBUG=y -# CONFIG_DPM_WATCHDOG is not set -CONFIG_PM_CLK=y -CONFIG_PM_GENERIC_DOMAINS=y +CONFIG_SUSPEND_SKIP_SYNC=y +CONFIG_PM_AUTOSLEEP=y CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y -CONFIG_PM_GENERIC_DOMAINS_SLEEP=y -CONFIG_PM_GENERIC_DOMAINS_OF=y -CONFIG_CPU_PM=y CONFIG_ENERGY_MODEL=y -CONFIG_ARCH_HIBERNATION_POSSIBLE=y -CONFIG_ARCH_SUSPEND_POSSIBLE=y - -# -# CPU Power Management -# - -# -# CPU Idle -# CONFIG_CPU_IDLE=y -CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y -# CONFIG_CPU_IDLE_GOV_LADDER is not set -CONFIG_CPU_IDLE_GOV_MENU=y -CONFIG_DT_IDLE_STATES=y - -# -# ARM CPU Idle Drivers -# -CONFIG_ARM_CPUIDLE=y - -# -# CPU Frequency scaling -# +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_ARM_PSCI_CPUIDLE=y CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_GOV_ATTR_SET=y -CONFIG_CPU_FREQ_GOV_COMMON=y -# CONFIG_CPU_FREQ_STAT is not set -# CONFIG_CPU_FREQ_TIMES is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set -CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y -# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set -CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_STAT=y CONFIG_CPU_FREQ_GOV_POWERSAVE=y -CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y -CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y -CONFIG_CPU_FREQ_GOV_INTERACTIVE=y - -# -# CPU frequency scaling drivers -# CONFIG_CPUFREQ_DT=y -CONFIG_CPUFREQ_DT_PLATDEV=y -# CONFIG_CPUFREQ_DUMMY is not set -# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set -CONFIG_ARM_ROCKCHIP_CPUFREQ=y -# CONFIG_ARM_SCMI_CPUFREQ is not set -# CONFIG_QORIQ_CPUFREQ is not set - -# -# Firmware Drivers -# -CONFIG_ARM_PSCI_FW=y -# CONFIG_ARM_PSCI_CHECKER is not set -CONFIG_ARM_SCMI_PROTOCOL=y -CONFIG_ARM_SCMI_POWER_DOMAIN=y -# CONFIG_ARM_SCPI_PROTOCOL is not set -# CONFIG_ARM_SDE_INTERFACE is not set -# CONFIG_FIRMWARE_MEMMAP is not set -# CONFIG_FW_CFG_SYSFS is not set -CONFIG_ROCKCHIP_SIP=y -CONFIG_HAVE_ARM_SMCCC=y -# CONFIG_GOOGLE_FIRMWARE is not set - -# -# Tegra firmware driver -# -# CONFIG_VIRTUALIZATION is not set -CONFIG_ARM64_CRYPTO=y -CONFIG_CRYPTO_SHA256_ARM64=y -# CONFIG_CRYPTO_SHA512_ARM64 is not set -CONFIG_CRYPTO_SHA1_ARM64_CE=y -CONFIG_CRYPTO_SHA2_ARM64_CE=y -# CONFIG_CRYPTO_SHA512_ARM64_CE is not set -# CONFIG_CRYPTO_SHA3_ARM64 is not set -# CONFIG_CRYPTO_SM3_ARM64_CE is not set -# CONFIG_CRYPTO_SM4_ARM64_CE is not set -CONFIG_CRYPTO_GHASH_ARM64_CE=y -# CONFIG_CRYPTO_CRCT10DIF_ARM64_CE is not set -# CONFIG_CRYPTO_CRC32_ARM64_CE is not set -CONFIG_CRYPTO_AES_ARM64=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 is not set -# CONFIG_CRYPTO_CHACHA20_NEON is not set -# CONFIG_CRYPTO_POLY1305_NEON is not set -# CONFIG_CRYPTO_AES_ARM64_BS is not set - -# -# General architecture-dependent options -# -# CONFIG_KPROBES is not set -# CONFIG_JUMP_LABEL is not set -CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y -CONFIG_HAVE_KPROBES=y -CONFIG_HAVE_KRETPROBES=y -CONFIG_HAVE_NMI=y -CONFIG_HAVE_ARCH_TRACEHOOK=y -CONFIG_HAVE_DMA_CONTIGUOUS=y -CONFIG_GENERIC_SMP_IDLE_THREAD=y -CONFIG_GENERIC_IDLE_POLL_SETUP=y -CONFIG_ARCH_HAS_FORTIFY_SOURCE=y -CONFIG_ARCH_HAS_SET_MEMORY=y -CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y -CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y -CONFIG_HAVE_RSEQ=y -CONFIG_HAVE_CLK=y -CONFIG_HAVE_PERF_REGS=y -CONFIG_HAVE_PERF_USER_STACK_DUMP=y -CONFIG_HAVE_ARCH_JUMP_LABEL=y -CONFIG_HAVE_RCU_TABLE_FREE=y -CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y -CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y -CONFIG_HAVE_CMPXCHG_LOCAL=y -CONFIG_HAVE_CMPXCHG_DOUBLE=y -CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y -CONFIG_HAVE_ARCH_SECCOMP_FILTER=y -CONFIG_SECCOMP_FILTER=y -CONFIG_HAVE_STACKPROTECTOR=y -CONFIG_CC_HAS_STACKPROTECTOR_NONE=y -CONFIG_STACKPROTECTOR=y -CONFIG_STACKPROTECTOR_STRONG=y -CONFIG_ARCH_SUPPORTS_LTO_CLANG=y -CONFIG_ARCH_SUPPORTS_THINLTO=y -CONFIG_LTO_NONE=y -CONFIG_HAVE_CONTEXT_TRACKING=y -CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y -CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y -CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y -CONFIG_HAVE_ARCH_HUGE_VMAP=y -CONFIG_HAVE_MOD_ARCH_SPECIFIC=y -CONFIG_MODULES_USE_ELF_RELA=y -CONFIG_ARCH_HAS_ELF_RANDOMIZE=y -CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_ARM_SCMI_CPUFREQ=y CONFIG_ARCH_MMAP_RND_BITS=18 -CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 -CONFIG_CLONE_BACKWARDS=y -CONFIG_OLD_SIGSUSPEND3=y -CONFIG_COMPAT_OLD_SIGACTION=y -CONFIG_COMPAT_32BIT_TIME=y -CONFIG_HAVE_ARCH_VMAP_STACK=y -CONFIG_VMAP_STACK=y -CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y -CONFIG_STRICT_KERNEL_RWX=y -CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y -CONFIG_STRICT_MODULE_RWX=y -CONFIG_REFCOUNT_FULL=y -CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y - -# -# GCOV-based kernel profiling -# -# CONFIG_GCOV_KERNEL is not set -CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y -CONFIG_PLUGIN_HOSTCC="" -CONFIG_HAVE_GCC_PLUGINS=y -CONFIG_RT_MUTEXES=y -CONFIG_BASE_SMALL=0 +# CONFIG_GCC_PLUGINS is not set CONFIG_MODULES=y CONFIG_MODULE_FORCE_LOAD=y CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y -# CONFIG_MODVERSIONS is not set -# CONFIG_MODULE_SRCVERSION_ALL is not set -# CONFIG_MODULE_SIG is not set -# CONFIG_MODULE_COMPRESS is not set -# CONFIG_TRIM_UNUSED_KSYMS is not set -CONFIG_MODULES_TREE_LOOKUP=y -CONFIG_BLOCK=y -CONFIG_BLK_SCSI_REQUEST=y -CONFIG_BLK_DEV_BSG=y -# CONFIG_BLK_DEV_BSGLIB is not set -# CONFIG_BLK_DEV_INTEGRITY is not set -# CONFIG_BLK_DEV_ZONED is not set -# CONFIG_BLK_DEV_THROTTLING is not set -# CONFIG_BLK_CMDLINE_PARSER is not set -# CONFIG_BLK_WBT is not set -# CONFIG_BLK_CGROUP_IOLATENCY is not set -CONFIG_BLK_DEBUG_FS=y -# CONFIG_BLK_SED_OPAL is not set -# CONFIG_BLK_INLINE_ENCRYPTION is not set - -# -# Partition Types -# CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_AIX_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_MINIX_SUBPARTITION is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_KARMA_PARTITION is not set -CONFIG_EFI_PARTITION=y -# CONFIG_SYSV68_PARTITION is not set -# CONFIG_CMDLINE_PARTITION is not set -CONFIG_BLOCK_COMPAT=y -CONFIG_BLK_MQ_PCI=y - -# -# IO Schedulers -# -CONFIG_IOSCHED_NOOP=y -CONFIG_IOSCHED_DEADLINE=y -CONFIG_IOSCHED_CFQ=y -# CONFIG_CFQ_GROUP_IOSCHED is not set -# CONFIG_DEFAULT_DEADLINE is not set -CONFIG_DEFAULT_CFQ=y -# CONFIG_DEFAULT_NOOP is not set -CONFIG_DEFAULT_IOSCHED="cfq" -CONFIG_MQ_IOSCHED_DEADLINE=y -CONFIG_MQ_IOSCHED_KYBER=y +CONFIG_MAC_PARTITION=y +# CONFIG_MQ_IOSCHED_KYBER is not set # CONFIG_IOSCHED_BFQ is not set -CONFIG_ASN1=y -CONFIG_ARCH_INLINE_SPIN_TRYLOCK=y -CONFIG_ARCH_INLINE_SPIN_TRYLOCK_BH=y -CONFIG_ARCH_INLINE_SPIN_LOCK=y -CONFIG_ARCH_INLINE_SPIN_LOCK_BH=y -CONFIG_ARCH_INLINE_SPIN_LOCK_IRQ=y -CONFIG_ARCH_INLINE_SPIN_LOCK_IRQSAVE=y -CONFIG_ARCH_INLINE_SPIN_UNLOCK=y -CONFIG_ARCH_INLINE_SPIN_UNLOCK_BH=y -CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQ=y -CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE=y -CONFIG_ARCH_INLINE_READ_LOCK=y -CONFIG_ARCH_INLINE_READ_LOCK_BH=y -CONFIG_ARCH_INLINE_READ_LOCK_IRQ=y -CONFIG_ARCH_INLINE_READ_LOCK_IRQSAVE=y -CONFIG_ARCH_INLINE_READ_UNLOCK=y -CONFIG_ARCH_INLINE_READ_UNLOCK_BH=y -CONFIG_ARCH_INLINE_READ_UNLOCK_IRQ=y -CONFIG_ARCH_INLINE_READ_UNLOCK_IRQRESTORE=y -CONFIG_ARCH_INLINE_WRITE_LOCK=y -CONFIG_ARCH_INLINE_WRITE_LOCK_BH=y -CONFIG_ARCH_INLINE_WRITE_LOCK_IRQ=y -CONFIG_ARCH_INLINE_WRITE_LOCK_IRQSAVE=y -CONFIG_ARCH_INLINE_WRITE_UNLOCK=y -CONFIG_ARCH_INLINE_WRITE_UNLOCK_BH=y -CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQ=y -CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE=y -CONFIG_UNINLINE_SPIN_UNLOCK=y -CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y -CONFIG_MUTEX_SPIN_ON_OWNER=y -CONFIG_RWSEM_SPIN_ON_OWNER=y -CONFIG_LOCK_SPIN_ON_OWNER=y -CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y -CONFIG_QUEUED_SPINLOCKS=y -CONFIG_ARCH_USE_QUEUED_RWLOCKS=y -CONFIG_QUEUED_RWLOCKS=y -CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y -# CONFIG_GKI_HIDDEN_DRM_CONFIGS is not set -# CONFIG_GKI_HIDDEN_REGMAP_CONFIGS is not set -# CONFIG_GKI_HIDDEN_CRYPTO_CONFIGS is not set -# CONFIG_GKI_HIDDEN_SND_CONFIGS is not set -# CONFIG_GKI_HIDDEN_SND_SOC_CONFIGS is not set -# CONFIG_GKI_HIDDEN_GPIO_CONFIGS is not set -# CONFIG_GKI_HIDDEN_VIRTUAL_CONFIGS is not set -# CONFIG_GKI_LEGACY_WEXT_ALLCONFIG is not set -# CONFIG_GKI_HIDDEN_SOC_PM_CONFIGS is not set -# CONFIG_GKI_HIDDEN_VIDEOBUF2_CONFIGS is not set -# CONFIG_GKI_HIDDEN_USB_CONFIGS is not set -# CONFIG_GKI_HIDDEN_SOC_BUS_CONFIGS is not set -# CONFIG_GKI_HIDDEN_GPU_CONFIGS is not set -# CONFIG_GKI_HIDDEN_IRQ_CONFIGS is not set -# CONFIG_GKI_HACKS_TO_FIX is not set -CONFIG_FREEZER=y - -# -# Executable file formats -# -CONFIG_BINFMT_ELF=y -CONFIG_COMPAT_BINFMT_ELF=y -CONFIG_ELFCORE=y -CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y -CONFIG_BINFMT_SCRIPT=y CONFIG_BINFMT_MISC=y -CONFIG_COREDUMP=y - -# -# Memory Management options -# -CONFIG_SELECT_MEMORY_MODEL=y -# CONFIG_FLATMEM_MANUAL is not set -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_MEMORY_ISOLATION=y -CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_SLAB_MERGE_DEFAULT is not set +# CONFIG_SLUB_CPU_PARTIAL is not set +# CONFIG_COMPAT_BRK is not set # CONFIG_COMPACTION is not set -CONFIG_MIGRATION=y -CONFIG_PHYS_ADDR_T_64BIT=y -# CONFIG_KSM is not set CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 -CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y -# CONFIG_MEMORY_FAILURE is not set -# CONFIG_TRANSPARENT_HUGEPAGE is not set -# CONFIG_CLEANCACHE is not set -# CONFIG_FRONTSWAP is not set -CONFIG_CMA=y -# CONFIG_CMA_DEBUG is not set -# CONFIG_CMA_DEBUGFS is not set -CONFIG_CMA_AREAS=7 -# 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_MM_EVENT_STAT is not set -CONFIG_GENERIC_EARLY_IOREMAP=y -# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set -# CONFIG_IDLE_PAGE_TRACKING is not set -CONFIG_FRAME_VECTOR=y -# CONFIG_PERCPU_STATS is not set -# CONFIG_GUP_BENCHMARK is not set -CONFIG_ARCH_HAS_PTE_SPECIAL=y +# CONFIG_VM_EVENT_COUNTERS is not set CONFIG_NET=y -CONFIG_COMPAT_NETLINK_MESSAGES=y -CONFIG_NET_INGRESS=y - -# -# Networking options -# CONFIG_PACKET=y -CONFIG_PACKET_DIAG=y CONFIG_UNIX=y -CONFIG_UNIX_DIAG=y -# CONFIG_TLS is not set -CONFIG_XFRM=y -CONFIG_XFRM_ALGO=y +CONFIG_UNIX_DIAG=m CONFIG_XFRM_USER=y -# CONFIG_XFRM_INTERFACE is not set -# CONFIG_XFRM_SUB_POLICY is not set -CONFIG_XFRM_MIGRATE=y -# CONFIG_XFRM_STATISTICS is not set -CONFIG_XFRM_IPCOMP=m -CONFIG_NET_KEY=m -CONFIG_NET_KEY_MIGRATE=y +CONFIG_NET_KEY=y CONFIG_INET=y CONFIG_IP_MULTICAST=y CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_FIB_TRIE_STATS=y CONFIG_IP_MULTIPLE_TABLES=y CONFIG_IP_ROUTE_MULTIPATH=y CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_ROUTE_CLASSID=y -CONFIG_IP_PNP=y -# CONFIG_IP_PNP_DHCP is not set -# CONFIG_IP_PNP_BOOTP is not set -# CONFIG_IP_PNP_RARP is not set CONFIG_NET_IPIP=m CONFIG_NET_IPGRE_DEMUX=m -CONFIG_NET_IP_TUNNEL=m -# CONFIG_NET_IPGRE is not set -CONFIG_IP_MROUTE_COMMON=y +CONFIG_NET_IPGRE=m 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=m -CONFIG_NET_FOU=m -# CONFIG_NET_FOU_IP_TUNNELS is not set -CONFIG_INET_AH=m -CONFIG_INET_ESP=m -# CONFIG_INET_ESP_OFFLOAD is not set -CONFIG_INET_IPCOMP=m -CONFIG_INET_XFRM_TUNNEL=m -CONFIG_INET_TUNNEL=m -CONFIG_INET_XFRM_MODE_TRANSPORT=m -CONFIG_INET_XFRM_MODE_TUNNEL=m -CONFIG_INET_XFRM_MODE_BEET=m -CONFIG_INET_DIAG=m -CONFIG_INET_TCP_DIAG=m -# CONFIG_INET_UDP_DIAG is not set -# CONFIG_INET_RAW_DIAG is not set -# CONFIG_INET_DIAG_DESTROY is not set +CONFIG_INET_AH=y +CONFIG_INET_ESP=y +CONFIG_INET_IPCOMP=y +# CONFIG_INET_DIAG is not set CONFIG_TCP_CONG_ADVANCED=y -CONFIG_TCP_CONG_BIC=m CONFIG_TCP_CONG_CUBIC=m -CONFIG_TCP_CONG_WESTWOOD=m -CONFIG_TCP_CONG_HTCP=m -# CONFIG_TCP_CONG_HSTCP is not set -# CONFIG_TCP_CONG_HYBLA is not set -# CONFIG_TCP_CONG_VEGAS is not set -# CONFIG_TCP_CONG_NV is not set -# CONFIG_TCP_CONG_SCALABLE is not set -# CONFIG_TCP_CONG_LP is not set -# CONFIG_TCP_CONG_VENO is not set -# CONFIG_TCP_CONG_YEAH is not set -# CONFIG_TCP_CONG_ILLINOIS is not set -# CONFIG_TCP_CONG_DCTCP is not set -# CONFIG_TCP_CONG_CDG is not set -# CONFIG_TCP_CONG_BBR is not set -CONFIG_DEFAULT_RENO=y -CONFIG_DEFAULT_TCP_CONG="reno" -# CONFIG_TCP_MD5SIG is not set -CONFIG_IPV6=m -# CONFIG_IPV6_ROUTER_PREF is not set -CONFIG_IPV6_OPTIMISTIC_DAD=y -CONFIG_INET6_AH=m -CONFIG_INET6_ESP=m -# CONFIG_INET6_ESP_OFFLOAD is not set -CONFIG_INET6_IPCOMP=m -CONFIG_IPV6_MIP6=m -CONFIG_IPV6_ILA=m -CONFIG_INET6_XFRM_TUNNEL=m -CONFIG_INET6_TUNNEL=m -CONFIG_INET6_XFRM_MODE_TRANSPORT=m -CONFIG_INET6_XFRM_MODE_TUNNEL=m -CONFIG_INET6_XFRM_MODE_BEET=m -CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m -# CONFIG_IPV6_VTI is not set -CONFIG_IPV6_SIT=m -# CONFIG_IPV6_SIT_6RD is not set -CONFIG_IPV6_NDISC_NODETYPE=y -CONFIG_IPV6_TUNNEL=m -# CONFIG_IPV6_GRE is not set -CONFIG_IPV6_FOU=m -CONFIG_IPV6_MULTIPLE_TABLES=y -# CONFIG_IPV6_SUBTREES is not set -CONFIG_IPV6_MROUTE=y -# CONFIG_IPV6_MROUTE_MULTIPLE_TABLES is not set -# CONFIG_IPV6_PIMSM_V2 is not set -# CONFIG_IPV6_SEG6_LWTUNNEL is not set -# CONFIG_IPV6_SEG6_HMAC is not set -CONFIG_NETWORK_SECMARK=y -CONFIG_NET_PTP_CLASSIFY=y -# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_CONG_DCTCP=m +CONFIG_TCP_CONG_CDG=m +CONFIG_TCP_MD5SIG=y +# CONFIG_IPV6 is not set CONFIG_NETFILTER=y -CONFIG_NETFILTER_ADVANCED=y -CONFIG_BRIDGE_NETFILTER=m - -# -# Core Netfilter Configuration -# -CONFIG_NETFILTER_INGRESS=y -CONFIG_NETFILTER_NETLINK=m -CONFIG_NETFILTER_FAMILY_BRIDGE=y -CONFIG_NETFILTER_FAMILY_ARP=y -CONFIG_NETFILTER_NETLINK_ACCT=m -CONFIG_NETFILTER_NETLINK_QUEUE=m -CONFIG_NETFILTER_NETLINK_LOG=m -CONFIG_NETFILTER_NETLINK_OSF=m +CONFIG_BRIDGE_NETFILTER=y +CONFIG_NETFILTER_NETLINK_QUEUE=y +CONFIG_NETFILTER_NETLINK_LOG=y CONFIG_NF_CONNTRACK=m -CONFIG_NF_LOG_COMMON=m -# CONFIG_NF_LOG_NETDEV is not set -CONFIG_NETFILTER_CONNCOUNT=m -CONFIG_NF_CONNTRACK_MARK=y -# CONFIG_NF_CONNTRACK_SECMARK is not set -# CONFIG_NF_CONNTRACK_ZONES is not set CONFIG_NF_CONNTRACK_PROCFS=y CONFIG_NF_CONNTRACK_EVENTS=y CONFIG_NF_CONNTRACK_TIMEOUT=y CONFIG_NF_CONNTRACK_TIMESTAMP=y -CONFIG_NF_CONNTRACK_LABELS=y -CONFIG_NF_CT_PROTO_DCCP=y -CONFIG_NF_CT_PROTO_GRE=m -CONFIG_NF_CT_PROTO_SCTP=y -CONFIG_NF_CT_PROTO_UDPLITE=y CONFIG_NF_CONNTRACK_AMANDA=m CONFIG_NF_CONNTRACK_FTP=m CONFIG_NF_CONNTRACK_H323=m CONFIG_NF_CONNTRACK_IRC=m -CONFIG_NF_CONNTRACK_BROADCAST=m CONFIG_NF_CONNTRACK_NETBIOS_NS=m CONFIG_NF_CONNTRACK_SNMP=m CONFIG_NF_CONNTRACK_PPTP=m @@ -964,84 +151,36 @@ CONFIG_NF_CONNTRACK_SANE=m CONFIG_NF_CONNTRACK_SIP=m CONFIG_NF_CONNTRACK_TFTP=m CONFIG_NF_CT_NETLINK=m -# CONFIG_NF_CT_NETLINK_TIMEOUT is not set -# CONFIG_NETFILTER_NETLINK_GLUE_CT is not set -CONFIG_NF_NAT=m -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=m -CONFIG_NF_NAT_FTP=m -CONFIG_NF_NAT_IRC=m -CONFIG_NF_NAT_SIP=m -CONFIG_NF_NAT_TFTP=m -CONFIG_NF_NAT_REDIRECT=y -CONFIG_NETFILTER_SYNPROXY=m +CONFIG_NF_CT_NETLINK_TIMEOUT=m CONFIG_NF_TABLES=m -# CONFIG_NF_TABLES_SET is not set -# CONFIG_NF_TABLES_INET is not set -# CONFIG_NF_TABLES_NETDEV is not set -# CONFIG_NFT_NUMGEN is not set -# CONFIG_NFT_CT is not set -# CONFIG_NFT_COUNTER is not set -# CONFIG_NFT_CONNLIMIT is not set -# CONFIG_NFT_LOG is not set -# CONFIG_NFT_LIMIT is not set -# CONFIG_NFT_MASQ is not set -# CONFIG_NFT_REDIR is not set -# CONFIG_NFT_NAT is not set -# CONFIG_NFT_TUNNEL is not set -# CONFIG_NFT_OBJREF is not set -# CONFIG_NFT_QUEUE is not set -# CONFIG_NFT_QUOTA is not set -# CONFIG_NFT_REJECT is not set -# CONFIG_NFT_COMPAT is not set -# CONFIG_NFT_HASH is not set -# CONFIG_NFT_SOCKET is not set -# CONFIG_NFT_OSF is not set -# CONFIG_NFT_TPROXY is not set -# CONFIG_NF_FLOW_TABLE is not set -CONFIG_NETFILTER_XTABLES=y - -# -# Xtables combined modules -# -CONFIG_NETFILTER_XT_MARK=y -CONFIG_NETFILTER_XT_CONNMARK=m -# CONFIG_NETFILTER_XT_SET is not set - -# -# Xtables targets -# +CONFIG_NFT_CT=m +CONFIG_NFT_LOG=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_QUEUE=m +CONFIG_NFT_REJECT=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_HASH=m +CONFIG_NETFILTER_XTABLES_COMPAT=y +CONFIG_NETFILTER_XT_SET=m CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -# CONFIG_NETFILTER_XT_TARGET_CT is not set CONFIG_NETFILTER_XT_TARGET_DSCP=m -CONFIG_NETFILTER_XT_TARGET_HL=m CONFIG_NETFILTER_XT_TARGET_HMARK=m CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m CONFIG_NETFILTER_XT_TARGET_LED=m CONFIG_NETFILTER_XT_TARGET_LOG=m CONFIG_NETFILTER_XT_TARGET_MARK=m -CONFIG_NETFILTER_XT_NAT=m -CONFIG_NETFILTER_XT_TARGET_NETMAP=m CONFIG_NETFILTER_XT_TARGET_NFLOG=m CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m -# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set -CONFIG_NETFILTER_XT_TARGET_RATEEST=m -CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m CONFIG_NETFILTER_XT_TARGET_TEE=m CONFIG_NETFILTER_XT_TARGET_TPROXY=m -# CONFIG_NETFILTER_XT_TARGET_TRACE is not set -# CONFIG_NETFILTER_XT_TARGET_SECMARK is not set +CONFIG_NETFILTER_XT_TARGET_TRACE=m CONFIG_NETFILTER_XT_TARGET_TCPMSS=m CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m - -# -# Xtables matches -# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m CONFIG_NETFILTER_XT_MATCH_BPF=m CONFIG_NETFILTER_XT_MATCH_CGROUP=m @@ -1056,14 +195,12 @@ CONFIG_NETFILTER_XT_MATCH_CPU=m CONFIG_NETFILTER_XT_MATCH_DCCP=m CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m CONFIG_NETFILTER_XT_MATCH_DSCP=m -CONFIG_NETFILTER_XT_MATCH_ECN=m CONFIG_NETFILTER_XT_MATCH_ESP=m CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m CONFIG_NETFILTER_XT_MATCH_HELPER=m -CONFIG_NETFILTER_XT_MATCH_HL=m CONFIG_NETFILTER_XT_MATCH_IPCOMP=m CONFIG_NETFILTER_XT_MATCH_IPRANGE=m -# CONFIG_NETFILTER_XT_MATCH_IPVS is not set +CONFIG_NETFILTER_XT_MATCH_IPVS=m CONFIG_NETFILTER_XT_MATCH_L2TP=m CONFIG_NETFILTER_XT_MATCH_LENGTH=m CONFIG_NETFILTER_XT_MATCH_LIMIT=m @@ -1074,11 +211,9 @@ CONFIG_NETFILTER_XT_MATCH_NFACCT=m CONFIG_NETFILTER_XT_MATCH_OSF=m CONFIG_NETFILTER_XT_MATCH_OWNER=m CONFIG_NETFILTER_XT_MATCH_POLICY=m -# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m CONFIG_NETFILTER_XT_MATCH_QUOTA=m -CONFIG_NETFILTER_XT_MATCH_QUOTA2=m -# CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG is not set CONFIG_NETFILTER_XT_MATCH_RATEEST=m CONFIG_NETFILTER_XT_MATCH_REALM=m CONFIG_NETFILTER_XT_MATCH_RECENT=m @@ -1090,94 +225,49 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m CONFIG_NETFILTER_XT_MATCH_TCPMSS=m CONFIG_NETFILTER_XT_MATCH_TIME=m CONFIG_NETFILTER_XT_MATCH_U32=m -CONFIG_IP_SET=m -CONFIG_IP_SET_MAX=256 -# CONFIG_IP_SET_BITMAP_IP is not set -# CONFIG_IP_SET_BITMAP_IPMAC is not set -# CONFIG_IP_SET_BITMAP_PORT is not set -# CONFIG_IP_SET_HASH_IP is not set -# CONFIG_IP_SET_HASH_IPMARK is not set -# CONFIG_IP_SET_HASH_IPPORT is not set -# CONFIG_IP_SET_HASH_IPPORTIP is not set -# CONFIG_IP_SET_HASH_IPPORTNET is not set -# CONFIG_IP_SET_HASH_IPMAC is not set -# CONFIG_IP_SET_HASH_MAC is not set -# CONFIG_IP_SET_HASH_NETPORTNET is not set -# CONFIG_IP_SET_HASH_NET is not set -# CONFIG_IP_SET_HASH_NETNET is not set -# CONFIG_IP_SET_HASH_NETPORT is not set -# CONFIG_IP_SET_HASH_NETIFACE is not set -# CONFIG_IP_SET_LIST_SET is not set +CONFIG_IP_SET=y +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPMARK=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_MAC=m +CONFIG_IP_SET_HASH_NETPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETNET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_LIST_SET=m CONFIG_IP_VS=m -# CONFIG_IP_VS_IPV6 is not set -# CONFIG_IP_VS_DEBUG is not set -CONFIG_IP_VS_TAB_BITS=12 - -# -# IPVS transport protocol load balancing support -# -# CONFIG_IP_VS_PROTO_TCP is not set -# CONFIG_IP_VS_PROTO_UDP is not set -# CONFIG_IP_VS_PROTO_ESP is not set -# CONFIG_IP_VS_PROTO_AH is not set -# CONFIG_IP_VS_PROTO_SCTP is not set - -# -# IPVS scheduler -# -# CONFIG_IP_VS_RR is not set -# CONFIG_IP_VS_WRR is not set -# CONFIG_IP_VS_LC is not set -# CONFIG_IP_VS_WLC is not set -# CONFIG_IP_VS_FO is not set -# CONFIG_IP_VS_OVF is not set -# CONFIG_IP_VS_LBLC is not set -# CONFIG_IP_VS_LBLCR is not set -# CONFIG_IP_VS_DH is not set -# CONFIG_IP_VS_SH is not set -# CONFIG_IP_VS_MH is not set -# CONFIG_IP_VS_SED is not set -# CONFIG_IP_VS_NQ is not set - -# -# IPVS SH scheduler -# -CONFIG_IP_VS_SH_TAB_BITS=8 - -# -# IPVS MH scheduler -# -CONFIG_IP_VS_MH_TAB_INDEX=12 - -# -# IPVS application helper -# -# CONFIG_IP_VS_NFCT is not set - -# -# IP: Netfilter Configuration -# -CONFIG_NF_DEFRAG_IPV4=m -CONFIG_NF_SOCKET_IPV4=m -CONFIG_NF_TPROXY_IPV4=m -# CONFIG_NF_TABLES_IPV4 is not set -# CONFIG_NF_TABLES_ARP is not set -CONFIG_NF_DUP_IPV4=m -# CONFIG_NF_LOG_ARP is not set +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_FO=m +CONFIG_IP_VS_OVF=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_NFCT=y +CONFIG_NF_LOG_ARP=m CONFIG_NF_LOG_IPV4=m -CONFIG_NF_REJECT_IPV4=m -CONFIG_NF_NAT_IPV4=m -CONFIG_NF_NAT_MASQUERADE_IPV4=y -CONFIG_NF_NAT_SNMP_BASIC=m -CONFIG_NF_NAT_PROTO_GRE=m -CONFIG_NF_NAT_PPTP=m -CONFIG_NF_NAT_H323=m -CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_IPTABLES=y CONFIG_IP_NF_MATCH_AH=m CONFIG_IP_NF_MATCH_ECN=m CONFIG_IP_NF_MATCH_RPFILTER=m CONFIG_IP_NF_MATCH_TTL=m -CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_FILTER=y CONFIG_IP_NF_TARGET_REJECT=m CONFIG_IP_NF_TARGET_SYNPROXY=m CONFIG_IP_NF_NAT=m @@ -1185,714 +275,158 @@ CONFIG_IP_NF_TARGET_MASQUERADE=m CONFIG_IP_NF_TARGET_NETMAP=m CONFIG_IP_NF_TARGET_REDIRECT=m CONFIG_IP_NF_MANGLE=m -CONFIG_IP_NF_TARGET_CLUSTERIP=m CONFIG_IP_NF_TARGET_ECN=m CONFIG_IP_NF_TARGET_TTL=m CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=y CONFIG_IP_NF_ARPTABLES=m -# CONFIG_IP_NF_ARPFILTER is not set -# CONFIG_IP_NF_ARP_MANGLE is not set - -# -# IPv6: Netfilter Configuration -# -CONFIG_NF_SOCKET_IPV6=m -CONFIG_NF_TPROXY_IPV6=m -# CONFIG_NF_TABLES_IPV6 is not set -CONFIG_NF_DUP_IPV6=m -CONFIG_NF_REJECT_IPV6=m -CONFIG_NF_LOG_IPV6=m -CONFIG_NF_NAT_IPV6=m -CONFIG_IP6_NF_IPTABLES=m -# 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_RT is not set -# CONFIG_IP6_NF_MATCH_SRH is not set -# CONFIG_IP6_NF_FILTER is not set -# CONFIG_IP6_NF_TARGET_SYNPROXY is not set -# CONFIG_IP6_NF_MANGLE is not set -# CONFIG_IP6_NF_RAW is not set -# CONFIG_IP6_NF_NAT is not set -CONFIG_NF_DEFRAG_IPV6=m -# CONFIG_NF_TABLES_BRIDGE is not set -# CONFIG_BRIDGE_NF_EBTABLES is not set -# CONFIG_BPFILTER 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 is not set -CONFIG_STP=m -CONFIG_BRIDGE=m -CONFIG_BRIDGE_IGMP_SNOOPING=y -CONFIG_HAVE_NET_DSA=y -# CONFIG_NET_DSA is not set -# CONFIG_VLAN_8021Q is not set -# CONFIG_DECNET is not set -CONFIG_LLC=m -# CONFIG_LLC2 is not set -# CONFIG_ATALK is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_PHONET is not set -# CONFIG_6LOWPAN is not set -# CONFIG_IEEE802154 is not set -# CONFIG_NET_SCHED is not set -# CONFIG_DCB is not set -# CONFIG_DNS_RESOLVER 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_MPLS is not set -# CONFIG_NET_NSH is not set -# CONFIG_HSR is not set -# CONFIG_NET_SWITCHDEV is not set -# CONFIG_NET_L3_MASTER_DEV is not set -# CONFIG_NET_NCSI is not set -CONFIG_RPS=y -CONFIG_RFS_ACCEL=y -CONFIG_XPS=y -# CONFIG_CGROUP_NET_PRIO is not set -CONFIG_CGROUP_NET_CLASSID=y -CONFIG_NET_RX_BUSY_POLL=y -CONFIG_BQL=y -# CONFIG_BPF_JIT is not set -CONFIG_NET_FLOW_LIMIT=y - -# -# Network testing -# -# CONFIG_NET_PKTGEN is not set -# CONFIG_NET_DROP_MONITOR is not set -# CONFIG_HAMRADIO is not set +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_NF_TABLES_BRIDGE=m +CONFIG_NFT_BRIDGE_META=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_BRIDGE=y +CONFIG_VLAN_8021Q=y +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_HTB=y +CONFIG_NET_SCH_CODEL=y +CONFIG_NET_SCH_FQ_CODEL=y +CONFIG_NET_CLS_U32=y +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_CGROUP=y +CONFIG_DNS_RESOLVER=y +CONFIG_OPENVSWITCH=m +CONFIG_CGROUP_NET_PRIO=y CONFIG_CAN=y -CONFIG_CAN_RAW=y -CONFIG_CAN_BCM=y -CONFIG_CAN_GW=y - -# -# CAN Device Drivers -# -# CONFIG_CAN_VCAN is not set -# CONFIG_CAN_VXCAN is not set -# CONFIG_CAN_SLCAN is not set -CONFIG_CAN_DEV=y -CONFIG_CAN_CALC_BITTIMING=y -# CONFIG_CAN_GRCAN is not set -# CONFIG_CAN_XILINXCAN is not set -# CONFIG_CAN_C_CAN is not set -# CONFIG_CAN_CC770 is not set -# CONFIG_CAN_IFI_CANFD is not set -# CONFIG_CAN_M_CAN is not set -# CONFIG_CAN_PEAK_PCIEFD is not set -CONFIG_CAN_ROCKCHIP=y -CONFIG_CANFD_ROCKCHIP=y -# CONFIG_CAN_SJA1000 is not set -# CONFIG_CAN_SOFTING is not set - -# -# CAN SPI interfaces -# -# CONFIG_CAN_HI311X is not set -# CONFIG_CAN_MCP251X is not set - -# -# CAN USB interfaces -# -# CONFIG_CAN_8DEV_USB is not set -# CONFIG_CAN_EMS_USB is not set -# CONFIG_CAN_ESD_USB2 is not set -# CONFIG_CAN_GS_USB is not set -# CONFIG_CAN_KVASER_USB is not set -# CONFIG_CAN_MCBA_USB is not set -# CONFIG_CAN_PEAK_USB is not set -# CONFIG_CAN_UCAN is not set -# CONFIG_CAN_DEBUG_DEVICES is not set -CONFIG_BT=y -CONFIG_BT_BREDR=y +CONFIG_BT=m CONFIG_BT_RFCOMM=y -# CONFIG_BT_RFCOMM_TTY is not set -# CONFIG_BT_BNEP is not set CONFIG_BT_HIDP=y CONFIG_BT_HS=y -CONFIG_BT_LE=y -# CONFIG_BT_LEDS is not set -# CONFIG_BT_SELFTEST is not set -CONFIG_BT_DEBUGFS=y - -# -# Bluetooth device drivers -# -CONFIG_BT_INTEL=y -CONFIG_BT_BCM=y -CONFIG_BT_RTL=y -CONFIG_BT_HCIBTUSB=y -# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set -CONFIG_BT_HCIBTUSB_BCM=y -CONFIG_BT_HCIBTUSB_RTL=y -# CONFIG_BT_HCIBTSDIO is not set -CONFIG_BT_HCIUART=y -CONFIG_BT_HCIUART_SERDEV=y -CONFIG_BT_HCIUART_H4=y -# CONFIG_BT_HCIUART_NOKIA is not set -# CONFIG_BT_HCIUART_BCSP is not set +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIUART=m CONFIG_BT_HCIUART_ATH3K=y -# CONFIG_BT_HCIUART_LL is not set -CONFIG_BT_HCIUART_3WIRE=y -# CONFIG_BT_HCIUART_INTEL is not set -CONFIG_BT_HCIUART_BCM=y -# CONFIG_BT_HCIUART_QCA is not set -# CONFIG_BT_HCIUART_AG6XX is not set -# CONFIG_BT_HCIUART_MRVL is not set -# CONFIG_BT_HCIBCM203X is not set -# CONFIG_BT_HCIBPA10X is not set -CONFIG_BT_HCIBFUSB=y -CONFIG_BT_HCIVHCI=y -CONFIG_BT_MRVL=y -CONFIG_BT_MRVL_SDIO=y -# CONFIG_BT_ATH3K is not set -# CONFIG_BT_MTKUART is not set -# CONFIG_AF_RXRPC is not set -# CONFIG_AF_KCM 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 is not set -# CONFIG_CFG80211_CERTIFICATION_ONUS is not set -CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y -CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y -CONFIG_CFG80211_DEFAULT_PS=y -CONFIG_CFG80211_DEBUGFS=y -CONFIG_CFG80211_CRDA_SUPPORT=y -CONFIG_CFG80211_WEXT=y -CONFIG_MAC80211=y -CONFIG_MAC80211_HAS_RC=y -CONFIG_MAC80211_RC_MINSTREL=y -CONFIG_MAC80211_RC_MINSTREL_HT=y -# CONFIG_MAC80211_RC_MINSTREL_VHT is not set -CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y -CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" -# CONFIG_MAC80211_MESH is not set -CONFIG_MAC80211_LEDS=y -CONFIG_MAC80211_DEBUGFS=y -# CONFIG_MAC80211_MESSAGE_TRACING is not set -CONFIG_MAC80211_DEBUG_MENU=y -# CONFIG_MAC80211_NOINLINE is not set -CONFIG_MAC80211_VERBOSE_DEBUG=y -# CONFIG_MAC80211_MLME_DEBUG is not set -# CONFIG_MAC80211_STA_DEBUG is not set -# CONFIG_MAC80211_HT_DEBUG is not set -# CONFIG_MAC80211_OCB_DEBUG is not set -# CONFIG_MAC80211_IBSS_DEBUG is not set -# CONFIG_MAC80211_PS_DEBUG is not set -# CONFIG_MAC80211_TDLS_DEBUG is not set -# CONFIG_MAC80211_DEBUG_COUNTERS is not set -CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 -# CONFIG_WIMAX is not set -CONFIG_RFKILL=y -CONFIG_RFKILL_LEDS=y -# CONFIG_RFKILL_INPUT is not set -# CONFIG_RFKILL_GPIO is not set -CONFIG_RFKILL_RK=y -# CONFIG_NET_9P is not set -# CONFIG_CAIF is not set -# CONFIG_CEPH_LIB is not set -# CONFIG_NFC is not set -# CONFIG_PSAMPLE is not set -# CONFIG_NET_IFE is not set -CONFIG_LWTUNNEL=y -CONFIG_LWTUNNEL_BPF=y -CONFIG_DST_CACHE=y -CONFIG_GRO_CELLS=y -# CONFIG_NET_DEVLINK is not set -CONFIG_MAY_USE_DEVLINK=y -# CONFIG_FAILOVER is not set -CONFIG_HAVE_EBPF_JIT=y - -# -# Device Drivers -# -CONFIG_ARM_AMBA=y - -# -# Generic Driver Options -# +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_CFG80211=m +# CONFIG_CFG80211_DEFAULT_PS is not set +# CONFIG_CFG80211_CRDA_SUPPORT is not set +CONFIG_MAC80211=m +CONFIG_MAC80211_MESH=y +CONFIG_RFKILL=m +CONFIG_RFKILL_INPUT=y +CONFIG_RFKILL_GPIO=m +# CONFIG_ETHTOOL_NETLINK is not set +CONFIG_PCI=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCIEAER=y +CONFIG_PCIE_ROCKCHIP_HOST=y +CONFIG_PCIE_ROCKCHIP_DW_HOST=y CONFIG_UEVENT_HELPER=y -CONFIG_UEVENT_HELPER_PATH="" CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y -CONFIG_STANDALONE=y -CONFIG_PREVENT_FIRMWARE_BUILD=y - -# -# Firmware loader -# -CONFIG_FW_LOADER=y -CONFIG_EXTRA_FIRMWARE="" -# CONFIG_FW_LOADER_USER_HELPER is not set -CONFIG_FW_CACHE=y -CONFIG_WANT_DEV_COREDUMP=y -CONFIG_ALLOW_DEV_COREDUMP=y -CONFIG_DEV_COREDUMP=y -# CONFIG_DEBUG_DRIVER is not set +CONFIG_DEVTMPFS_SAFE=y +CONFIG_FW_LOADER_USER_HELPER=y +CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y +# CONFIG_ALLOW_DEV_COREDUMP is not set CONFIG_DEBUG_DEVRES=y -# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set -# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set -CONFIG_GENERIC_CPU_AUTOPROBE=y -CONFIG_GENERIC_CPU_VULNERABILITIES=y -CONFIG_REGMAP=y -CONFIG_REGMAP_I2C=y -CONFIG_REGMAP_SPI=y -CONFIG_REGMAP_MMIO=y -CONFIG_REGMAP_IRQ=y -# CONFIG_MALI_MEMORY_GROUP_MANAGER is not set -CONFIG_DMA_SHARED_BUFFER=y -# CONFIG_DMA_FENCE_TRACE is not set -CONFIG_DMA_CMA=y - -# -# Default contiguous memory area size: -# -CONFIG_CMA_SIZE_MBYTES=16 -CONFIG_CMA_SIZE_SEL_MBYTES=y -# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set -# CONFIG_CMA_SIZE_SEL_MIN is not set -# CONFIG_CMA_SIZE_SEL_MAX is not set -CONFIG_CMA_ALIGNMENT=8 -CONFIG_GENERIC_ARCH_TOPOLOGY=y - -# -# Bus devices -# -# CONFIG_BRCMSTB_GISB_ARB is not set -# CONFIG_SIMPLE_PM_BUS is not set -# CONFIG_VEXPRESS_CONFIG is not set CONFIG_CONNECTOR=y -CONFIG_PROC_EVENTS=y -# CONFIG_GNSS is not set +CONFIG_ARM_SCMI_PROTOCOL=y +CONFIG_ARM_SCMI_POWER_CONTROL=y +CONFIG_ARM_SCPI_PROTOCOL=y +CONFIG_ARM_FFA_TRANSPORT=y CONFIG_MTD=y -# CONFIG_MTD_TESTS is not set -# CONFIG_MTD_REDBOOT_PARTS is not set -CONFIG_MTD_CMDLINE_PARTS=y -# CONFIG_MTD_AFS_PARTS is not set -CONFIG_MTD_OF_PARTS=y -# CONFIG_MTD_AR7_PARTS is not set - -# -# Partition parsers -# - -# -# User Modules And Translation Layers -# -CONFIG_MTD_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 -# CONFIG_MTD_SWAP is not set -# CONFIG_MTD_PARTITIONED_MASTER 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_CFI_I1=y -CONFIG_MTD_CFI_I2=y -# 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_INTEL_VR_NOR is not set -# CONFIG_MTD_PLATRAM is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_DATAFLASH is not set -# CONFIG_MTD_MCHP23K256 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_ONENAND is not set -# CONFIG_MTD_NAND is not set -# CONFIG_MTD_SPI_NAND is not set - -# -# LPDDR & LPDDR2 PCM memory drivers -# -# CONFIG_MTD_LPDDR is not set -# CONFIG_MTD_SPI_NOR is not set -CONFIG_MTD_UBI=y -CONFIG_MTD_UBI_WL_THRESHOLD=4096 -CONFIG_MTD_UBI_BEB_LIMIT=20 -# CONFIG_MTD_UBI_FASTMAP is not set -# CONFIG_MTD_UBI_GLUEBI is not set -# CONFIG_MTD_UBI_BLOCK is not set -CONFIG_DTC=y -CONFIG_OF=y -CONFIG_DTC_SYMBOLS=y -# CONFIG_DTC_OMIT_DISABLED is not set -# CONFIG_DTC_OMIT_EMPTY is not set -# CONFIG_OF_UNITTEST is not set -CONFIG_OF_FLATTREE=y -CONFIG_OF_EARLY_FLATTREE=y -CONFIG_OF_KOBJ=y -CONFIG_OF_ADDRESS=y -CONFIG_OF_IRQ=y -CONFIG_OF_NET=y -CONFIG_OF_MDIO=y -CONFIG_OF_RESERVED_MEM=y -# CONFIG_OF_OVERLAY is not set -# CONFIG_PARPORT is not set -CONFIG_BLK_DEV=y -# CONFIG_BLK_DEV_NULL_BLK is not set -CONFIG_CDROM=y -# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +CONFIG_MTD_SPI_NOR=y +CONFIG_OF_OVERLAY=y CONFIG_ZRAM=y -# CONFIG_ZRAM_WRITEBACK is not set -# CONFIG_ZRAM_MEMORY_TRACKING is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_UMEM 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_SKD is not set -# CONFIG_BLK_DEV_SX8 is not set +CONFIG_BLK_DEV_DRBD=m +CONFIG_BLK_DEV_NBD=m CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=1 -CONFIG_BLK_DEV_RAM_SIZE=4096 -# CONFIG_CDROM_PKTCDVD is not set -# CONFIG_ATA_OVER_ETH is not set -# CONFIG_BLK_DEV_RBD is not set -# CONFIG_BLK_DEV_RSXX is not set - -# -# NVME Support -# -CONFIG_NVME_CORE=y -CONFIG_BLK_DEV_NVME=y -# CONFIG_NVME_MULTIPATH is not set -# CONFIG_NVME_FC is not set -# CONFIG_NVME_TARGET is not set - -# -# Misc devices -# -# CONFIG_ROCKCHIP_SCR is not set -# CONFIG_AD525X_DPOT is not set -# CONFIG_DUMMY_IRQ is not set -# CONFIG_PHANTOM is not set -# CONFIG_SGI_IOC4 is not set -# CONFIG_TIFM_CORE is not set -# CONFIG_ICS932S401 is not set -# CONFIG_ENCLOSURE_SERVICES is not set -# CONFIG_HP_ILO 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_BH1770 is not set -# CONFIG_SENSORS_APDS990X is not set -# CONFIG_HMC6352 is not set -# CONFIG_DS1682 is not set -# CONFIG_USB_SWITCH_FSA9480 is not set -# CONFIG_LATTICE_ECP3_CONFIG is not set +CONFIG_ATA_OVER_ETH=m +CONFIG_BLK_DEV_RBD=m +CONFIG_BLK_DEV_NVME=m CONFIG_SRAM=y -# CONFIG_PCI_ENDPOINT_TEST is not set -# CONFIG_PIR_ASCHIP is not set -# CONFIG_C2PORT is not set - -# -# EEPROM support -# -# CONFIG_EEPROM_AT24 is not set -# CONFIG_EEPROM_AT25 is not set -# CONFIG_EEPROM_LEGACY is not set -# CONFIG_EEPROM_MAX6875 is not set -# CONFIG_EEPROM_93CX6 is not set -# CONFIG_EEPROM_93XX46 is not set -# CONFIG_EEPROM_IDT_89HPESX is not set -# CONFIG_CB710_CORE is not set - -# -# Texas Instruments shared transport line discipline -# -# CONFIG_TI_ST is not set -# CONFIG_SENSORS_LIS3_SPI is not set -# CONFIG_SENSORS_LIS3_I2C is not set -# CONFIG_ALTERA_STAPL is not set - -# -# Intel MIC & related support -# - -# -# Intel MIC Bus Driver -# - -# -# SCIF Bus Driver -# - -# -# VOP Bus Driver -# - -# -# Intel MIC Host Driver -# - -# -# Intel MIC Card Driver -# - -# -# SCIF Driver -# - -# -# Intel MIC Coprocessor State Management (COSM) Drivers -# - -# -# VOP Driver -# -# CONFIG_GENWQE is not set -# CONFIG_ECHO is not set -# CONFIG_MISC_RTSX_PCI is not set -# CONFIG_MISC_RTSX_USB is not set - -# -# SCSI device support -# -CONFIG_SCSI_MOD=y -# CONFIG_RAID_ATTRS is not set -CONFIG_SCSI=y -CONFIG_SCSI_DMA=y -CONFIG_SCSI_MQ_DEFAULT=y -CONFIG_SCSI_PROC_FS=y - -# -# SCSI support type (disk, tape, CD-ROM) -# +CONFIG_EEPROM_93CX6=y CONFIG_BLK_DEV_SD=y -# CONFIG_CHR_DEV_ST is not set -# CONFIG_CHR_DEV_OSST is not set CONFIG_BLK_DEV_SR=y -# 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=y -# 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=y -# CONFIG_ISCSI_TCP is not set -# CONFIG_ISCSI_BOOT_SYSFS is not set -# CONFIG_SCSI_CXGB3_ISCSI is not set -# CONFIG_SCSI_CXGB4_ISCSI is not set -# CONFIG_SCSI_BNX2_ISCSI is not set -# CONFIG_BE2ISCSI is not set -# CONFIG_BLK_DEV_3W_XXXX_RAID is not set -# CONFIG_SCSI_HPSA is not set -# CONFIG_SCSI_3W_9XXX is not set -# CONFIG_SCSI_3W_SAS is not set -# CONFIG_SCSI_ACARD is not set -# CONFIG_SCSI_AACRAID is not set -# CONFIG_SCSI_AIC7XXX is not set -# CONFIG_SCSI_AIC79XX is not set -# CONFIG_SCSI_AIC94XX is not set -# CONFIG_SCSI_HISI_SAS is not set -# CONFIG_SCSI_MVSAS is not set -# CONFIG_SCSI_MVUMI is not set -# CONFIG_SCSI_ADVANSYS is not set -# CONFIG_SCSI_ARCMSR is not set -# CONFIG_SCSI_ESAS2R is not set -# CONFIG_MEGARAID_NEWGEN is not set -# CONFIG_MEGARAID_LEGACY is not set -# CONFIG_MEGARAID_SAS is not set -# CONFIG_SCSI_MPT3SAS is not set -# CONFIG_SCSI_MPT2SAS is not set -# CONFIG_SCSI_SMARTPQI is not set -# CONFIG_SCSI_UFSHCD is not set -# CONFIG_SCSI_HPTIOP is not set -# CONFIG_SCSI_SNIC is not set -# CONFIG_SCSI_DMX3191D is not set -# CONFIG_SCSI_IPS is not set -# CONFIG_SCSI_INITIO is not set -# CONFIG_SCSI_INIA100 is not set -# CONFIG_SCSI_STEX is not set -# CONFIG_SCSI_SYM53C8XX_2 is not set -# CONFIG_SCSI_IPR is not set -# CONFIG_SCSI_QLOGIC_1280 is not set -# CONFIG_SCSI_QLA_ISCSI is not set -# CONFIG_SCSI_DC395x is not set -# CONFIG_SCSI_AM53C974 is not set -# CONFIG_SCSI_WD719X is not set -# CONFIG_SCSI_DEBUG is not set -# CONFIG_SCSI_PMCRAID is not set -# CONFIG_SCSI_PM8001 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_MEGARAID_SAS=m +CONFIG_SCSI_MPT2SAS=m CONFIG_ATA=y -CONFIG_ATA_VERBOSE_ERROR=y -CONFIG_SATA_PMP=y - -# -# Controllers with non-SFF native interface -# CONFIG_SATA_AHCI=y -CONFIG_SATA_MOBILE_LPM_POLICY=0 CONFIG_SATA_AHCI_PLATFORM=y -# CONFIG_AHCI_CEVA is not set -# CONFIG_AHCI_QORIQ is not set -# CONFIG_SATA_INIC162X is not set -# CONFIG_SATA_ACARD_AHCI is not set -# CONFIG_SATA_SIL24 is not set -# CONFIG_ATA_SFF is not set +CONFIG_SATA_MV=m +CONFIG_SATA_NV=m +CONFIG_SATA_PROMISE=m +CONFIG_SATA_SIL=m CONFIG_MD=y -# CONFIG_BLK_DEV_MD is not set -# CONFIG_BCACHE is not set -# CONFIG_BLK_DEV_DM is not set -# CONFIG_TARGET_CORE is not set -# CONFIG_FUSION is not set - -# -# IEEE 1394 (FireWire) support -# -# CONFIG_FIREWIRE is not set -# CONFIG_FIREWIRE_NOSY is not set +CONFIG_MD_LINEAR=m +CONFIG_BCACHE=m +CONFIG_BLK_DEV_DM=y +CONFIG_DM_CRYPT=m +CONFIG_DM_RAID=y CONFIG_NETDEVICES=y -CONFIG_MII=y -CONFIG_NET_CORE=y -# CONFIG_BONDING is not set -# CONFIG_DUMMY is not set -# CONFIG_WIREGUARD is not set -# CONFIG_EQUALIZER is not set -# CONFIG_NET_FC is not set -# CONFIG_NET_TEAM is not set -# CONFIG_MACVLAN is not set -# CONFIG_IPVLAN is not set -# CONFIG_VXLAN is not set -# CONFIG_GENEVE is not set -# CONFIG_GTP is not set -# CONFIG_MACSEC is not set -# CONFIG_NETCONSOLE is not set -CONFIG_TUN=y -# CONFIG_TUN_VNET_CROSS_LE is not set -# CONFIG_VETH is not set -# CONFIG_NLMON is not set -# CONFIG_ARCNET is not set - -# -# CAIF transport drivers -# - -# -# Distributed Switch Architecture drivers -# -CONFIG_ETHERNET=y +CONFIG_WIREGUARD=y +CONFIG_MACVLAN=y +CONFIG_IPVLAN=y +CONFIG_VXLAN=m +CONFIG_TUN=m +CONFIG_VETH=y # CONFIG_NET_VENDOR_3COM is not set # CONFIG_NET_VENDOR_ADAPTEC is not set # CONFIG_NET_VENDOR_AGERE is not set -CONFIG_NET_VENDOR_ALACRITECH=y -# CONFIG_SLICOSS is not set # CONFIG_NET_VENDOR_ALTEON is not set -# CONFIG_ALTERA_TSE is not set -CONFIG_NET_VENDOR_AMAZON=y -# CONFIG_ENA_ETHERNET is not set # CONFIG_NET_VENDOR_AMD is not set -CONFIG_NET_VENDOR_AQUANTIA=y # CONFIG_NET_VENDOR_ARC is not set # CONFIG_NET_VENDOR_ATHEROS is not set -CONFIG_NET_VENDOR_AURORA=y -# CONFIG_AURORA_NB8800 is not set # CONFIG_NET_VENDOR_BROADCOM is not set -# CONFIG_NET_VENDOR_BROCADE is not set -CONFIG_NET_VENDOR_CADENCE=y -# CONFIG_MACB is not set # CONFIG_NET_VENDOR_CAVIUM is not set # CONFIG_NET_VENDOR_CHELSIO is not set # CONFIG_NET_VENDOR_CISCO is not set -CONFIG_NET_VENDOR_CORTINA=y -# CONFIG_GEMINI_ETHERNET is not set -# CONFIG_DNET is not set # CONFIG_NET_VENDOR_DEC is not set # CONFIG_NET_VENDOR_DLINK is not set # CONFIG_NET_VENDOR_EMULEX is not set # CONFIG_NET_VENDOR_EZCHIP is not set # CONFIG_NET_VENDOR_HISILICON is not set -# CONFIG_NET_VENDOR_HP is not set -CONFIG_NET_VENDOR_HUAWEI=y -# CONFIG_HINIC is not set -# CONFIG_NET_VENDOR_INTEL is not set -# CONFIG_JME is not set +CONFIG_E100=y +CONFIG_E1000=y +CONFIG_E1000E=y +CONFIG_IGB=y +CONFIG_IXGBE=y # CONFIG_NET_VENDOR_MARVELL is not set # CONFIG_NET_VENDOR_MELLANOX is not set # CONFIG_NET_VENDOR_MICREL is not set # CONFIG_NET_VENDOR_MICROCHIP is not set -CONFIG_NET_VENDOR_MICROSEMI=y # CONFIG_NET_VENDOR_MYRI is not set -# CONFIG_FEALNX is not set # CONFIG_NET_VENDOR_NATSEMI is not set -CONFIG_NET_VENDOR_NETERION=y -# CONFIG_S2IO is not set -# CONFIG_VXGE is not set -CONFIG_NET_VENDOR_NETRONOME=y -# CONFIG_NFP is not set -CONFIG_NET_VENDOR_NI=y # CONFIG_NET_VENDOR_NVIDIA is not set # CONFIG_NET_VENDOR_OKI is not set -# CONFIG_ETHOC is not set -CONFIG_NET_VENDOR_PACKET_ENGINES=y -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set # CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_BROCADE is not set # CONFIG_NET_VENDOR_QUALCOMM is not set # CONFIG_NET_VENDOR_RDC is not set # CONFIG_NET_VENDOR_REALTEK is not set @@ -1900,4317 +434,680 @@ CONFIG_NET_VENDOR_PACKET_ENGINES=y # CONFIG_NET_VENDOR_ROCKER is not set # CONFIG_NET_VENDOR_SAMSUNG is not set # CONFIG_NET_VENDOR_SEEQ is not set -CONFIG_NET_VENDOR_SOLARFLARE=y -# CONFIG_SFC is not set -# CONFIG_SFC_FALCON is not set # CONFIG_NET_VENDOR_SILAN is not set # CONFIG_NET_VENDOR_SIS is not set # CONFIG_NET_VENDOR_SMSC is not set -CONFIG_NET_VENDOR_SOCIONEXT=y -CONFIG_NET_VENDOR_STMICRO=y CONFIG_STMMAC_ETH=y -CONFIG_STMMAC_PLATFORM=y -# CONFIG_DWMAC_DWC_QOS_ETH is not set -CONFIG_DWMAC_GENERIC=y -CONFIG_DWMAC_ROCKCHIP=y -# CONFIG_STMMAC_PCI is not set # CONFIG_NET_VENDOR_SUN is not set # CONFIG_NET_VENDOR_SYNOPSYS is not set # CONFIG_NET_VENDOR_TEHUTI is not set # CONFIG_NET_VENDOR_TI is not set # CONFIG_NET_VENDOR_VIA is not set # CONFIG_NET_VENDOR_WIZNET is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -CONFIG_MDIO_DEVICE=y -CONFIG_MDIO_BUS=y -# CONFIG_MDIO_BCM_UNIMAC is not set -# CONFIG_MDIO_BITBANG is not set -# CONFIG_MDIO_BUS_MUX_GPIO is not set -# CONFIG_MDIO_BUS_MUX_MMIOREG is not set -# CONFIG_MDIO_HISI_FEMAC is not set -# CONFIG_MDIO_MSCC_MIIM is not set -# CONFIG_MDIO_OCTEON is not set -# CONFIG_MDIO_THUNDER is not set -CONFIG_PHYLIB=y -CONFIG_SWPHY=y -# CONFIG_LED_TRIGGER_PHY is not set - -# -# MII PHY device drivers -# -# CONFIG_AMD_PHY is not set -# CONFIG_AQUANTIA_PHY is not set -# CONFIG_AX88796B_PHY is not set -# CONFIG_AT803X_PHY is not set -# CONFIG_BCM7XXX_PHY is not set -# CONFIG_BCM87XX_PHY is not set -# CONFIG_BROADCOM_PHY is not set -# CONFIG_CICADA_PHY is not set -# CONFIG_CORTINA_PHY is not set -# CONFIG_DAVICOM_PHY is not set -# CONFIG_DP83822_PHY is not set -# CONFIG_DP83TC811_PHY is not set -# CONFIG_DP83848_PHY is not set -# CONFIG_DP83867_PHY is not set -CONFIG_FIXED_PHY=y -# CONFIG_ICPLUS_PHY is not set -# CONFIG_INTEL_XWAY_PHY is not set -# CONFIG_LSI_ET1011C_PHY is not set -# CONFIG_LXT_PHY is not set -# CONFIG_MARVELL_PHY is not set -# CONFIG_MARVELL_10G_PHY is not set -# CONFIG_MICREL_PHY is not set -# CONFIG_MICROCHIP_PHY is not set -# CONFIG_MICROCHIP_T1_PHY is not set -# CONFIG_MICROSEMI_PHY is not set -# CONFIG_NATIONAL_PHY is not set -# CONFIG_QSEMI_PHY is not set -# CONFIG_REALTEK_PHY is not set -# CONFIG_RENESAS_PHY is not set CONFIG_ROCKCHIP_PHY=y -# CONFIG_SMSC_PHY is not set -# CONFIG_STE10XP is not set -# CONFIG_TERANETICS_PHY is not set -# CONFIG_VITESSE_PHY is not set -# CONFIG_XILINX_GMII2RGMII is not set -# CONFIG_MICREL_KS8995MA is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set -CONFIG_USB_NET_DRIVERS=y -# CONFIG_USB_CATC is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_PEGASUS is not set +CONFIG_CAN_SJA1000=y +CONFIG_CAN_PLX_PCI=y +CONFIG_PPP=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPPOE=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m CONFIG_USB_RTL8150=y CONFIG_USB_RTL8152=y -# CONFIG_USB_LAN78XX is not set CONFIG_USB_USBNET=y -CONFIG_USB_NET_AX8817X=y -CONFIG_USB_NET_AX88179_178A=y -CONFIG_USB_NET_CDCETHER=y -# CONFIG_USB_NET_CDC_EEM is not set -CONFIG_USB_NET_CDC_NCM=y -# CONFIG_USB_NET_HUAWEI_CDC_NCM is not set CONFIG_USB_NET_CDC_MBIM=y -# CONFIG_USB_NET_DM9601 is not set -# CONFIG_USB_NET_SR9700 is not set -# CONFIG_USB_NET_SR9800 is not set -# CONFIG_USB_NET_SMSC75XX is not set -# CONFIG_USB_NET_SMSC95XX is not set -# CONFIG_USB_NET_GL620A is not set # CONFIG_USB_NET_NET1080 is not set -# CONFIG_USB_NET_PLUSB is not set -# CONFIG_USB_NET_MCS7830 is not set CONFIG_USB_NET_RNDIS_HOST=y # CONFIG_USB_NET_CDC_SUBSET is not set # CONFIG_USB_NET_ZAURUS is not set -# CONFIG_USB_NET_CX82310_ETH is not set -# CONFIG_USB_NET_KALMIA is not set CONFIG_USB_NET_QMI_WWAN=y -# CONFIG_USB_HSO is not set -# CONFIG_USB_NET_INT51X1 is not set -# CONFIG_USB_IPHETH is not set -# CONFIG_USB_SIERRA_NET is not set -# CONFIG_USB_VL600 is not set -# CONFIG_USB_NET_CH9200 is not set -CONFIG_WLAN=y -# CONFIG_WIRELESS_WDS is not set -CONFIG_WLAN_VENDOR_ADMTEK=y -# CONFIG_ADM8211 is not set -CONFIG_WLAN_VENDOR_ATH=y -# CONFIG_ATH_DEBUG is not set -# CONFIG_ATH5K is not set -# CONFIG_ATH5K_PCI is not set -# CONFIG_ATH9K is not set -# CONFIG_ATH9K_HTC is not set -# CONFIG_CARL9170 is not set -# CONFIG_ATH6KL is not set -# CONFIG_AR5523 is not set -# CONFIG_WIL6210 is not set -# CONFIG_ATH10K is not set -# CONFIG_WCN36XX is not set -CONFIG_WLAN_VENDOR_ATMEL=y -# CONFIG_ATMEL is not set -# CONFIG_AT76C50X_USB is not set -CONFIG_WLAN_VENDOR_BROADCOM=y -# CONFIG_B43 is not set -# CONFIG_B43LEGACY is not set -# CONFIG_BRCMSMAC is not set -# CONFIG_BRCMFMAC is not set -CONFIG_WLAN_VENDOR_CISCO=y -CONFIG_WLAN_VENDOR_INTEL=y -# CONFIG_IPW2100 is not set -# CONFIG_IPW2200 is not set -# CONFIG_IWL4965 is not set -# CONFIG_IWL3945 is not set -# CONFIG_IWLWIFI is not set -CONFIG_WLAN_VENDOR_INTERSIL=y -# CONFIG_HOSTAP is not set -# CONFIG_HERMES is not set -# CONFIG_P54_COMMON is not set -# CONFIG_PRISM54 is not set -CONFIG_WLAN_VENDOR_MARVELL=y -# CONFIG_LIBERTAS is not set -CONFIG_LIBERTAS_THINFIRM=y -# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set -# CONFIG_LIBERTAS_THINFIRM_USB is not set +CONFIG_ATH5K=m +CONFIG_ATH9K=m +CONFIG_ATH6KL=m +CONFIG_ATH6KL_USB=m +CONFIG_AR5523=m +CONFIG_ATH10K=m +CONFIG_WCN36XX=m +CONFIG_AT76C50X_USB=m +CONFIG_B43=m +CONFIG_BRCMFMAC=m +# CONFIG_BRCMFMAC_SDIO is not set +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMFMAC_PCIE=y +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBERTAS_THINFIRM=m CONFIG_MWIFIEX=m CONFIG_MWIFIEX_SDIO=m -# CONFIG_MWIFIEX_PCIE is not set -# CONFIG_MWIFIEX_USB is not set -# CONFIG_MWL8K is not set -CONFIG_WLAN_VENDOR_MEDIATEK=y -# CONFIG_MT7601U is not set -# CONFIG_MT76x0U is not set -# CONFIG_MT76x2E is not set -# CONFIG_MT76x2U is not set -CONFIG_WLAN_VENDOR_RALINK=y -# CONFIG_RT2X00 is not set -CONFIG_WLAN_VENDOR_REALTEK=y -# CONFIG_RTL8180 is not set -# CONFIG_RTL8187 is not set -CONFIG_RTL_CARDS=y -# CONFIG_RTL8192CE is not set -# CONFIG_RTL8192SE is not set -# CONFIG_RTL8192DE is not set -# CONFIG_RTL8723AE is not set -# CONFIG_RTL8723BE is not set -# CONFIG_RTL8188EE is not set -# CONFIG_RTL8192EE is not set -# CONFIG_RTL8821AE is not set -# CONFIG_RTL8192CU is not set -# CONFIG_RTL8XXXU is not set -CONFIG_WLAN_VENDOR_RSI=y -# CONFIG_RSI_91X is not set -CONFIG_WLAN_VENDOR_ST=y -# CONFIG_CW1200 is not set -CONFIG_WLAN_VENDOR_TI=y -# CONFIG_WL1251 is not set -# CONFIG_WL12XX is not set -# CONFIG_WL18XX is not set -# CONFIG_WLCORE is not set -CONFIG_WLAN_VENDOR_ZYDAS=y -# CONFIG_USB_ZD1201 is not set -# CONFIG_ZD1211RW is not set -CONFIG_WLAN_VENDOR_QUANTENNA=y -# CONFIG_QTNFMAC_PEARL_PCIE is not set -CONFIG_WL_ROCKCHIP=y -CONFIG_WIFI_BUILD_MODULE=y -CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP=y -# CONFIG_WIFI_GENERATE_RANDOM_MAC_ADDR is not set -CONFIG_BCMDHD=y -CONFIG_AP6XXX=m -CONFIG_AP6XXX_WIFI6=m -# CONFIG_AP6XXX_INDEP_POWER is not set -CONFIG_BCMDHD_FW_PATH="/etc/firmware/fw_bcmdhd.bin" -CONFIG_BCMDHD_NVRAM_PATH="/etc/firmware/nvram.txt" -# CONFIG_BCMDHD_STATIC_IF is not set -CONFIG_RTL_WIRELESS_SOLUTION=y -CONFIG_RTL8188EU=m -CONFIG_RTL8188FU=y -CONFIG_RTL8189FS=m -# CONFIG_RTL8723CS is not set -CONFIG_RTL8723DS=m -CONFIG_RTL8821CS=m -# CONFIG_RTL8822BS is not set -# CONFIG_MVL88W8977 is not set -# CONFIG_CYW_BCMDHD is not set -# CONFIG_MAC80211_HWSIM is not set -CONFIG_USB_NET_RNDIS_WLAN=y -# CONFIG_VIRT_WIFI is not set - -# -# Enable WiMAX (Networking options) to see the WiMAX drivers -# -# CONFIG_WAN is not set -# CONFIG_VMXNET3 is not set -# CONFIG_LTE is not set -# CONFIG_NETDEVSIM is not set -# CONFIG_NET_FAILOVER is not set -# CONFIG_ISDN is not set -# CONFIG_NVM is not set - -# -# Input device support -# -CONFIG_INPUT=y -CONFIG_INPUT_LEDS=y -CONFIG_INPUT_FF_MEMLESS=y -CONFIG_INPUT_POLLDEV=y -# CONFIG_INPUT_SPARSEKMAP is not set +CONFIG_MWIFIEX_USB=m +CONFIG_MT7601U=m +CONFIG_RT2X00=m +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +CONFIG_RT2800USB_UNKNOWN=y +CONFIG_RTL8180=m +CONFIG_RTL8187=m +CONFIG_RTL8192CE=m +CONFIG_RTL8192SE=m +CONFIG_RTL8192DE=m +CONFIG_RTL8723AE=m +CONFIG_RTL8723BE=m +CONFIG_RTL8188EE=m +CONFIG_RTL8192EE=m +CONFIG_RTL8821AE=m +CONFIG_RTL8XXXU=m +CONFIG_RTL8XXXU_UNTESTED=y +CONFIG_RTW88=m +CONFIG_RTW88_8822BE=m +CONFIG_RTW88_8822BU=m +CONFIG_RTW88_8822CE=m +CONFIG_RTW88_8822CU=m +CONFIG_RTW88_8723DE=m +CONFIG_RTW88_8723DS=m +CONFIG_RTW88_8723DU=m +CONFIG_RTW88_8821CE=m +CONFIG_RTW88_8821CS=m +CONFIG_RTW89=m +CONFIG_RTW89_8852AE=m +CONFIG_RTW89_8852CE=m +CONFIG_ZD1211RW=m +CONFIG_ISDN=y CONFIG_INPUT_MATRIXKMAP=y - -# -# Userland interfaces -# -# CONFIG_INPUT_MOUSEDEV is not set CONFIG_INPUT_JOYDEV=y CONFIG_INPUT_EVDEV=y -# CONFIG_INPUT_EVBUG is not set - -# -# Input Device Drivers -# -CONFIG_INPUT_KEYBOARD=y CONFIG_KEYBOARD_ADC=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_DLINK_DIR685 is not set -# CONFIG_KEYBOARD_LKKBD is not set CONFIG_KEYBOARD_GPIO=y CONFIG_KEYBOARD_GPIO_POLLED=y -# 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_TM2_TOUCHKEY is not set -# CONFIG_KEYBOARD_XTKBD is not set -CONFIG_KEYBOARD_CROS_EC=y -# CONFIG_KEYBOARD_CAP11XX is not set -# CONFIG_KEYBOARD_BCM is not set -CONFIG_INPUT_MOUSE=y # CONFIG_MOUSE_PS2 is not set -# CONFIG_MOUSE_SERIAL is not set -# CONFIG_MOUSE_APPLETOUCH is not set -# CONFIG_MOUSE_BCM5974 is not set -CONFIG_MOUSE_CYAPA=y -CONFIG_MOUSE_ELAN_I2C=y -CONFIG_MOUSE_ELAN_I2C_I2C=y -# CONFIG_MOUSE_ELAN_I2C_SMBUS is not set -# CONFIG_MOUSE_VSXXXAA is not set -# CONFIG_MOUSE_GPIO is not set -# CONFIG_MOUSE_SYNAPTICS_I2C is not set -# CONFIG_MOUSE_SYNAPTICS_USB is not set CONFIG_INPUT_JOYSTICK=y -CONFIG_JOYSTICK_ANALOG=m -CONFIG_JOYSTICK_A3D=m -CONFIG_JOYSTICK_ADI=m -CONFIG_JOYSTICK_COBRA=m -CONFIG_JOYSTICK_GF2K=m -CONFIG_JOYSTICK_GRIP=m -CONFIG_JOYSTICK_GRIP_MP=m -CONFIG_JOYSTICK_GUILLEMOT=m -CONFIG_JOYSTICK_INTERACT=m -CONFIG_JOYSTICK_SIDEWINDER=m -CONFIG_JOYSTICK_TMDC=m -CONFIG_JOYSTICK_IFORCE=m -CONFIG_JOYSTICK_IFORCE_USB=y -CONFIG_JOYSTICK_IFORCE_232=y -CONFIG_JOYSTICK_WARRIOR=m -CONFIG_JOYSTICK_MAGELLAN=m -CONFIG_JOYSTICK_SPACEORB=m -CONFIG_JOYSTICK_SPACEBALL=m -CONFIG_JOYSTICK_STINGER=m -CONFIG_JOYSTICK_TWIDJOY=m -CONFIG_JOYSTICK_ZHENHUA=m -CONFIG_JOYSTICK_AS5011=m -CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_ADC=y CONFIG_JOYSTICK_XPAD=m CONFIG_JOYSTICK_XPAD_FF=y -CONFIG_JOYSTICK_XPAD_LEDS=y -CONFIG_JOYSTICK_SINGLEADCJOY=y -# CONFIG_JOYSTICK_PSXPAD_SPI is not set -# CONFIG_JOYSTICK_PXRC is not set -# CONFIG_INPUT_TABLET is not set +CONFIG_INPUT_TABLET=y CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_PROPERTIES=y -# CONFIG_TOUCHSCREEN_ADS7846 is not set -# CONFIG_TOUCHSCREEN_AD7877 is not set -# CONFIG_TOUCHSCREEN_AD7879 is not set -# CONFIG_TOUCHSCREEN_ADC is not set -# CONFIG_TOUCHSCREEN_AR1021_I2C is not set -# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set -# CONFIG_TOUCHSCREEN_ATMEL_MXT_T37 is not set -# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set -# CONFIG_TOUCHSCREEN_BU21013 is not set -# CONFIG_TOUCHSCREEN_BU21029 is not set -# CONFIG_TOUCHSCREEN_CHIPONE_ICN8318 is not set -# CONFIG_TOUCHSCREEN_CY8C40XX is not set -# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set -# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set -# CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set -# CONFIG_TOUCHSCREEN_DYNAPRO is not set -# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set -# CONFIG_TOUCHSCREEN_EETI is not set -# CONFIG_TOUCHSCREEN_EGALAX is not set -# CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set -# CONFIG_TOUCHSCREEN_EXC3000 is not set -# CONFIG_TOUCHSCREEN_FUJITSU is not set -# CONFIG_TOUCHSCREEN_GOODIX is not set -# CONFIG_TOUCHSCREEN_GSLX6801 is not set -# CONFIG_TOUCHSCREEN_GSLX680A is not set -# CONFIG_TOUCHSCREEN_GSLX680_D708 is not set -# CONFIG_TOUCHSCREEN_GSLX680_PAD is not set -# CONFIG_TOUCHSCREEN_GSLX680_VR is not set -# CONFIG_TOUCHSCREEN_GSLX680_FIREFLY is not set -# CONFIG_TOUCHSCREEN_GSL3673 is not set -# CONFIG_TOUCHSCREEN_GSL3673_800X1280 is not set -# CONFIG_TOUCHSCREEN_GSL3676 is not set -# CONFIG_TOUCHSCREEN_GT9XX is not set -# CONFIG_TOUCHSCREEN_HIDEEP is not set -# CONFIG_TOUCHSCREEN_HYN_CST2XX is not set +CONFIG_TOUCHSCREEN_ATMEL_MXT=y +CONFIG_TOUCHSCREEN_GOODIX=y CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=y -# CONFIG_TOUCHSCREEN_ILI210X is not set -# CONFIG_TOUCHSCREEN_S6SY761 is not set -# CONFIG_TOUCHSCREEN_GUNZE is not set -# CONFIG_TOUCHSCREEN_EKTF2127 is not set -# CONFIG_TOUCHSCREEN_ELAN is not set -# CONFIG_TOUCHSCREEN_ELO is not set -# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set -# CONFIG_TOUCHSCREEN_WACOM_I2C is not set -# CONFIG_TOUCHSCREEN_WACOM_W9013 is not set -# CONFIG_TOUCHSCREEN_MAX11801 is not set -# CONFIG_TOUCHSCREEN_MCS5000 is not set -# CONFIG_TOUCHSCREEN_MMS114 is not set -# CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set -# CONFIG_TOUCHSCREEN_MTOUCH is not set -# CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set -# CONFIG_TOUCHSCREEN_INEXIO is not set -# CONFIG_TOUCHSCREEN_MK712 is not set -# CONFIG_TOUCHSCREEN_PENMOUNT is not set -# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set -# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set -# CONFIG_TOUCHSCREEN_TOUCHWIN is not set -# CONFIG_TOUCHSCREEN_PIXCIR is not set -# CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set CONFIG_TOUCHSCREEN_USB_COMPOSITE=y -CONFIG_TOUCHSCREEN_USB_EGALAX=y -CONFIG_TOUCHSCREEN_USB_PANJIT=y -CONFIG_TOUCHSCREEN_USB_3M=y -CONFIG_TOUCHSCREEN_USB_ITM=y -CONFIG_TOUCHSCREEN_USB_ETURBO=y -CONFIG_TOUCHSCREEN_USB_GUNZE=y -CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y -CONFIG_TOUCHSCREEN_USB_IRTOUCH=y -CONFIG_TOUCHSCREEN_USB_IDEALTEK=y -CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y -CONFIG_TOUCHSCREEN_USB_GOTOP=y -CONFIG_TOUCHSCREEN_USB_JASTEC=y -CONFIG_TOUCHSCREEN_USB_ELO=y -CONFIG_TOUCHSCREEN_USB_E2I=y -CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y -CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y -CONFIG_TOUCHSCREEN_USB_NEXIO=y -CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y -# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set -# CONFIG_TOUCHSCREEN_TSC_SERIO is not set -# CONFIG_TOUCHSCREEN_TSC2004 is not set -# CONFIG_TOUCHSCREEN_TSC2005 is not set -# CONFIG_TOUCHSCREEN_TSC2007 is not set -# CONFIG_TOUCHSCREEN_RM_TS is not set -# CONFIG_TOUCHSCREEN_SILEAD is not set -# CONFIG_TOUCHSCREEN_SIS_I2C is not set -# CONFIG_TOUCHSCREEN_ST1232 is not set -# CONFIG_TOUCHSCREEN_STMFTS is not set -# CONFIG_TOUCHSCREEN_SUR40 is not set -# CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set -# CONFIG_TOUCHSCREEN_SX8654 is not set -# CONFIG_TOUCHSCREEN_TPS6507X is not set -# CONFIG_TOUCHSCREEN_ZET6223 is not set -# CONFIG_TOUCHSCREEN_ZFORCE is not set -# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set -# CONFIG_TOUCHSCREEN_VTL_CT36X is not set -CONFIG_TOUCHSCREEN_GT1X=y -# CONFIG_TOUCHSCREEN_FTS is not set -# CONFIG_TOUCHSCREEN_FT5436 is not set -CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5=y -CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_DEVICETREE_SUPPORT=y -CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_I2C=y -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_SPI is not set -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_MT_A is not set -CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_MT_B=y -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_BUTTON is not set -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_PROXIMITY is not set -CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_DEVICE_ACCESS=y -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_DEVICE_ACCESS_API is not set -CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_LOADER=y -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_PLATFORM_FW_UPGRADE is not set -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_BINARY_FW_UPGRADE is not set -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_PLATFORM_TTCONFIG_UPGRADE is not set -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_MANUAL_TTCONFIG_UPGRADE is not set -# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_DEBUG_MDL is not set -CONFIG_ROCKCHIP_REMOTECTL=y -CONFIG_ROCKCHIP_REMOTECTL_PWM=y - -# -# handle all sensors -# -CONFIG_SENSOR_DEVICE=y -# CONFIG_ANGLE_DEVICE is not set -CONFIG_GSENSOR_DEVICE=y -# CONFIG_GS_MMA8452 is not set -# CONFIG_STK8BAXX_ACC is not set -# CONFIG_MPU6880_ACC is not set -# CONFIG_MPU6500_ACC is not set -# CONFIG_GS_KXTIK is not set -# CONFIG_GS_KXTJ9 is not set -# CONFIG_GS_LIS3DH is not set -# CONFIG_GS_MMA7660 is not set -CONFIG_GS_MC3230=y -# CONFIG_GS_SC7660 is not set -# CONFIG_GS_SC7A20 is not set -# CONFIG_GS_SC7A30 is not set -# CONFIG_GS_MXC6225 is not set -# CONFIG_GS_MXC6655XA is not set -# CONFIG_GS_DMT10 is not set -# CONFIG_GS_LSM303D is not set -# CONFIG_GS_BMA023 is not set -# CONFIG_LSM330_ACC is not set -# CONFIG_BMA2XX_ACC is not set -# CONFIG_GS_DA223 is not set -# CONFIG_ICM2060X_ACC is not set -# CONFIG_COMPASS_DEVICE is not set -# CONFIG_GYROSCOPE_DEVICE is not set -# CONFIG_LIGHT_DEVICE is not set -# CONFIG_PROXIMITY_DEVICE is not set -# CONFIG_TEMPERATURE_DEVICE is not set -# CONFIG_PRESSURE_DEVICE is not set -# CONFIG_HALL_DEVICE is not set CONFIG_INPUT_MISC=y -# CONFIG_INPUT_AD714X is not set -# CONFIG_INPUT_ATMEL_CAPTOUCH is not set -# CONFIG_INPUT_BMA150 is not set -# CONFIG_INPUT_E3X0_BUTTON is not set -# CONFIG_INPUT_MMA8450 is not set -# CONFIG_INPUT_GP2A is not set -# CONFIG_INPUT_GPIO_BEEPER is not set -# CONFIG_INPUT_GPIO_DECODER is not set -# CONFIG_INPUT_ATI_REMOTE2 is not set -# CONFIG_INPUT_KEYSPAN_REMOTE is not set -# CONFIG_INPUT_KXTJ9 is not set -# CONFIG_INPUT_POWERMATE is not set -# CONFIG_INPUT_YEALINK is not set -# CONFIG_INPUT_CM109 is not set -# CONFIG_INPUT_REGULATOR_HAPTIC is not set CONFIG_INPUT_UINPUT=y -# CONFIG_INPUT_PCF8574 is not set -# CONFIG_INPUT_PWM_BEEPER is not set -# CONFIG_INPUT_PWM_VIBRA is not set +CONFIG_INPUT_PWM_VIBRA=y CONFIG_INPUT_RK805_PWRKEY=y -# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set -# CONFIG_INPUT_ADXL34X is not set -# CONFIG_INPUT_IMS_PCU is not set -# CONFIG_INPUT_CMA3000 is not set -# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set -# CONFIG_INPUT_DRV260X_HAPTICS is not set -# CONFIG_INPUT_DRV2665_HAPTICS is not set -# CONFIG_INPUT_DRV2667_HAPTICS is not set -# CONFIG_RMI4_CORE is not set - -# -# Hardware I/O ports -# -CONFIG_SERIO=m CONFIG_SERIO_SERPORT=m -# CONFIG_SERIO_AMBAKMI is not set -# CONFIG_SERIO_PCIPS2 is not set -# CONFIG_SERIO_LIBPS2 is not set -# CONFIG_SERIO_RAW is not set -# CONFIG_SERIO_ALTERA_PS2 is not set -# CONFIG_SERIO_PS2MULT is not set -# CONFIG_SERIO_ARC_PS2 is not set -# CONFIG_SERIO_APBPS2 is not set -# CONFIG_SERIO_GPIO_PS2 is not set -# CONFIG_USERIO is not set -CONFIG_GAMEPORT=m -# CONFIG_GAMEPORT_NS558 is not set -# CONFIG_GAMEPORT_L4 is not set -# CONFIG_GAMEPORT_EMU10K1 is not set -# CONFIG_GAMEPORT_FM801 is not set - -# -# Character devices -# -CONFIG_TTY=y -CONFIG_VT=y -CONFIG_CONSOLE_TRANSLATIONS=y -CONFIG_VT_CONSOLE=y -CONFIG_VT_CONSOLE_SLEEP=y -CONFIG_HW_CONSOLE=y -CONFIG_VT_HW_CONSOLE_BINDING=y -CONFIG_UNIX98_PTYS=y +CONFIG_GAMEPORT=y # CONFIG_LEGACY_PTYS is not set -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_NOZOMI is not set -# CONFIG_N_GSM is not set -# CONFIG_TRACE_SINK is not set -CONFIG_LDISC_AUTOLOAD=y -CONFIG_DEVMEM=y - -# -# Serial drivers -# -CONFIG_SERIAL_EARLYCON=y CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y -# CONFIG_SERIAL_8250_FINTEK is not set CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_DMA=y # CONFIG_SERIAL_8250_PCI is not set -CONFIG_SERIAL_8250_NR_UARTS=10 -CONFIG_SERIAL_8250_RUNTIME_UARTS=10 -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_ASPEED_VUART is not set -CONFIG_SERIAL_8250_FSL=y +CONFIG_SERIAL_8250_NR_UARTS=5 +CONFIG_SERIAL_8250_RUNTIME_UARTS=5 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_SHARE_IRQ=y CONFIG_SERIAL_8250_DW=y -# CONFIG_SERIAL_8250_RT288X is not set -# CONFIG_SERIAL_8250_MOXA is not set CONFIG_SERIAL_OF_PLATFORM=y - -# -# 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_UARTLITE is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -# CONFIG_SERIAL_JSM is not set -# CONFIG_SERIAL_MSM_GENI_HALF_SAMPLING is not set -# CONFIG_SERIAL_MSM_GENI_EARLY_CONSOLE is not set -# 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_RP2 is not set -# CONFIG_SERIAL_FSL_LPUART is not set -# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y CONFIG_SERIAL_DEV_BUS=y -CONFIG_SERIAL_DEV_CTRL_TTYPORT=y -# CONFIG_TTY_PRINTK is not set -# CONFIG_HVC_DCC is not set -# CONFIG_IPMI_HANDLER is not set CONFIG_HW_RANDOM=y -# CONFIG_HW_RANDOM_TIMERIOMEM is not set -CONFIG_HW_RANDOM_CAVIUM=y -CONFIG_HW_RANDOM_ROCKCHIP=y -# CONFIG_APPLICOM is not set - -# -# PCMCIA character devices -# -# CONFIG_RAW_DRIVER is not set CONFIG_TCG_TPM=y -CONFIG_HW_RANDOM_TPM=y -# CONFIG_TCG_TIS is not set -# CONFIG_TCG_TIS_SPI is not set -# CONFIG_TCG_TIS_I2C_ATMEL is not set -CONFIG_TCG_TIS_I2C_INFINEON=y -# CONFIG_TCG_TIS_I2C_NUVOTON is not set -# CONFIG_TCG_ATMEL is not set -# CONFIG_TCG_VTPM_PROXY is not set -# CONFIG_TCG_TIS_ST33ZP24_I2C is not set -# CONFIG_TCG_TIS_ST33ZP24_SPI is not set -CONFIG_DEVPORT=y -# CONFIG_XILLYBUS is not set -# CONFIG_RANDOM_TRUST_BOOTLOADER is not set - -# -# I2C support -# -CONFIG_I2C=y -CONFIG_I2C_BOARDINFO=y -CONFIG_I2C_COMPAT=y +# CONFIG_I2C_COMPAT is not set CONFIG_I2C_CHARDEV=y -CONFIG_I2C_MUX=y - -# -# Multiplexer I2C Chip support -# -# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set -# CONFIG_I2C_MUX_GPIO is not set -# CONFIG_I2C_MUX_GPMUX is not set -# CONFIG_I2C_MUX_LTC4306 is not set -# CONFIG_I2C_MUX_PCA9541 is not set -# CONFIG_I2C_MUX_PCA954x is not set -# CONFIG_I2C_MUX_PINCTRL is not set -# CONFIG_I2C_MUX_REG is not set -# CONFIG_I2C_DEMUX_PINCTRL is not set -# CONFIG_I2C_MUX_MLXCPLD is not set -CONFIG_I2C_HELPER_AUTO=y -CONFIG_I2C_ALGOBIT=y - -# -# I2C Hardware Bus support -# - -# -# PC SMBus host controller drivers -# -# CONFIG_I2C_ALI1535 is not set -# CONFIG_I2C_ALI1563 is not set -# CONFIG_I2C_ALI15X3 is not set -# CONFIG_I2C_AMD756 is not set -# CONFIG_I2C_AMD8111 is not set -# CONFIG_I2C_I801 is not set -# CONFIG_I2C_ISCH is not set -# CONFIG_I2C_PIIX4 is not set -# CONFIG_I2C_NFORCE2 is not set -# CONFIG_I2C_SIS5595 is not set -# CONFIG_I2C_SIS630 is not set -# CONFIG_I2C_SIS96X is not set -# CONFIG_I2C_VIA is not set -# CONFIG_I2C_VIAPRO is not set - -# -# I2C system bus drivers (mostly embedded / system-on-chip) -# -# CONFIG_I2C_CADENCE is not set -# CONFIG_I2C_CBUS_GPIO is not set -# CONFIG_I2C_DESIGNWARE_PLATFORM is not set -# CONFIG_I2C_DESIGNWARE_PCI is not set -# CONFIG_I2C_EMEV2 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_DESIGNWARE_PLATFORM=y CONFIG_I2C_RK3X=y -# CONFIG_I2C_SIMTEC is not set -# CONFIG_I2C_THUNDERX 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_CROS_EC_TUNNEL=y -# CONFIG_I2C_STUB is not set -# CONFIG_I2C_SLAVE is not set -# CONFIG_I2C_DEBUG_CORE is not set -# CONFIG_I2C_DEBUG_ALGO is not set -# CONFIG_I2C_DEBUG_BUS is not set CONFIG_SPI=y -# CONFIG_SPI_DEBUG is not set -CONFIG_SPI_MASTER=y -# CONFIG_SPI_MEM is not set - -# -# SPI Master Controller Drivers -# -# CONFIG_SPI_ALTERA is not set -# CONFIG_SPI_AXI_SPI_ENGINE is not set -CONFIG_SPI_BITBANG=y -# CONFIG_SPI_CADENCE is not set -# CONFIG_SPI_DESIGNWARE is not set -# CONFIG_SPI_GPIO is not set -# CONFIG_SPI_FSL_SPI is not set -# CONFIG_SPI_OC_TINY is not set -# CONFIG_SPI_PL022 is not set -# CONFIG_SPI_PXA2XX is not set +CONFIG_SPI_GPIO=y CONFIG_SPI_ROCKCHIP=y -# CONFIG_SPI_SC18IS602 is not set -# CONFIG_SPI_THUNDERX is not set -# CONFIG_SPI_XCOMM is not set -# CONFIG_SPI_XILINX is not set -# CONFIG_SPI_ZYNQMP_GQSPI is not set - -# -# SPI Protocol Masters -# +CONFIG_SPI_ROCKCHIP_SFC=y +CONFIG_SPI_MUX=y CONFIG_SPI_SPIDEV=y -# CONFIG_SPI_LOOPBACK_TEST is not set -# CONFIG_SPI_TLE62X0 is not set -# CONFIG_SPI_SLAVE is not set -# CONFIG_SPMI is not set -# CONFIG_HSI is not set -CONFIG_PPS=y -# CONFIG_PPS_DEBUG is not set - -# -# PPS clients support -# -# CONFIG_PPS_CLIENT_KTIMER is not set -# CONFIG_PPS_CLIENT_LDISC is not set -# CONFIG_PPS_CLIENT_GPIO is not set - -# -# PPS generators support -# - -# -# PTP clock support -# -CONFIG_PTP_1588_CLOCK=y - -# -# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. -# -CONFIG_PINCTRL=y -CONFIG_PINMUX=y -CONFIG_PINCONF=y -CONFIG_GENERIC_PINCONF=y -# CONFIG_DEBUG_PINCTRL is not set -# CONFIG_PINCTRL_AMD is not set -# CONFIG_PINCTRL_MCP23S08 is not set -CONFIG_PINCTRL_ROCKCHIP=y -# CONFIG_PINCTRL_SINGLE is not set -# CONFIG_PINCTRL_SX150X is not set -CONFIG_PINCTRL_RK628=y CONFIG_PINCTRL_RK805=y -CONFIG_GPIOLIB=y -CONFIG_GPIOLIB_FASTPATH_LIMIT=512 -CONFIG_OF_GPIO=y -CONFIG_GPIOLIB_IRQCHIP=y -# CONFIG_DEBUG_GPIO is not set +CONFIG_PINCTRL_SINGLE=y CONFIG_GPIO_SYSFS=y -CONFIG_GPIO_GENERIC=y - -# -# Memory mapped GPIO drivers -# -# CONFIG_GPIO_74XX_MMIO is not set -# CONFIG_GPIO_ALTERA is not set -# CONFIG_GPIO_DWAPB is not set -# CONFIG_GPIO_FTGPIO010 is not set +CONFIG_GPIO_DWAPB=y CONFIG_GPIO_GENERIC_PLATFORM=y -# CONFIG_GPIO_GRGPIO is not set -# CONFIG_GPIO_HLWD is not set -# CONFIG_GPIO_MB86S7X is not set -# CONFIG_GPIO_MOCKUP is not set -# CONFIG_GPIO_PL061 is not set -CONFIG_GPIO_ROCKCHIP=y -# CONFIG_GPIO_SYSCON is not set -# CONFIG_GPIO_XGENE is not set -# CONFIG_GPIO_XILINX is not set - -# -# I2C GPIO expanders -# -# CONFIG_GPIO_ADP5588 is not set -# CONFIG_GPIO_ADNP is not set -# CONFIG_GPIO_MAX7300 is not set -# CONFIG_GPIO_MAX732X is not set -CONFIG_GPIO_PCA953X=y -# CONFIG_GPIO_PCA953X_IRQ is not set -# CONFIG_GPIO_PCF857X is not set -# CONFIG_GPIO_TPIC2810 is not set - -# -# MFD GPIO expanders -# -# CONFIG_GPIO_TPS6586X is not set - -# -# PCI GPIO expanders -# -# CONFIG_GPIO_BT8XX is not set -# CONFIG_GPIO_PCI_IDIO_16 is not set -# CONFIG_GPIO_PCIE_IDIO_24 is not set -# CONFIG_GPIO_RDC321X is not set - -# -# SPI GPIO expanders -# -# CONFIG_GPIO_74X164 is not set -# CONFIG_GPIO_MAX3191X is not set -# CONFIG_GPIO_MAX7301 is not set -# CONFIG_GPIO_MC33880 is not set -# CONFIG_GPIO_PISOSR is not set -# CONFIG_GPIO_XRA1403 is not set - -# -# USB GPIO expanders -# -# CONFIG_W1 is not set -CONFIG_POWER_AVS=y -CONFIG_ROCKCHIP_IODOMAIN=y -CONFIG_POWER_RESET=y -# CONFIG_POWER_RESET_BRCMSTB is not set CONFIG_POWER_RESET_GPIO=y CONFIG_POWER_RESET_GPIO_RESTART=y -# CONFIG_POWER_RESET_LTC2952 is not set -# CONFIG_POWER_RESET_RESTART is not set -# CONFIG_POWER_RESET_XGENE is not set -# CONFIG_POWER_RESET_SYSCON is not set -# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set -CONFIG_REBOOT_MODE=y +CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y CONFIG_SYSCON_REBOOT_MODE=y -CONFIG_POWER_SUPPLY=y -# CONFIG_POWER_SUPPLY_DEBUG is not set -# CONFIG_PDA_POWER is not set -# CONFIG_GENERIC_ADC_BATTERY is not set -# CONFIG_TEST_POWER is not set -# CONFIG_CHARGER_ADP5061 is not set -# CONFIG_BATTERY_DS2780 is not set -# CONFIG_BATTERY_DS2781 is not set -# CONFIG_BATTERY_DS2782 is not set -# CONFIG_BATTERY_LEGO_EV3 is not set +CONFIG_BATTERY_CW2015=y CONFIG_BATTERY_SBS=y -# CONFIG_CHARGER_SBS is not set -# CONFIG_MANAGER_SBS is not set -# CONFIG_BATTERY_BQ27XXX is not set -# CONFIG_BATTERY_MAX17040 is not set -# CONFIG_BATTERY_MAX17042 is not set -# CONFIG_CHARGER_ISP1704 is not set -# CONFIG_CHARGER_MAX8903 is not set -# CONFIG_CHARGER_LP8727 is not set CONFIG_CHARGER_GPIO=y -# CONFIG_CHARGER_MANAGER is not set -# CONFIG_CHARGER_LTC3651 is not set -# CONFIG_CHARGER_DETECTOR_MAX14656 is not set -# CONFIG_CHARGER_BQ2415X is not set -# CONFIG_CHARGER_BQ24190 is not set -# CONFIG_CHARGER_BQ24257 is not set CONFIG_CHARGER_BQ24735=y -# CONFIG_CHARGER_BQ25700 is not set -# CONFIG_CHARGER_BQ25890 is not set -# CONFIG_CHARGER_SMB347 is not set -# CONFIG_BATTERY_GAUGE_LTC2941 is not set -# CONFIG_CHARGER_RT9455 is not set -# CONFIG_CHARGER_CROS_USBPD is not set -# CONFIG_BATTERY_CW2015 is not set -# CONFIG_BATTERY_RK816 is not set -CONFIG_BATTERY_RK817=y CONFIG_CHARGER_RK817=y -# CONFIG_BATTERY_RK818 is not set -# CONFIG_CHARGER_RK818 is not set -CONFIG_HWMON=y -# CONFIG_HWMON_DEBUG_CHIP is not set - -# -# Native drivers -# -# CONFIG_SENSORS_AD7314 is not set -# CONFIG_SENSORS_AD7414 is not set -# CONFIG_SENSORS_AD7418 is not set -# CONFIG_SENSORS_ADM1021 is not set -# CONFIG_SENSORS_ADM1025 is not set -# CONFIG_SENSORS_ADM1026 is not set -# CONFIG_SENSORS_ADM1029 is not set -# CONFIG_SENSORS_ADM1031 is not set -# CONFIG_SENSORS_ADM9240 is not set -# CONFIG_SENSORS_ADT7310 is not set -# CONFIG_SENSORS_ADT7410 is not set -# CONFIG_SENSORS_ADT7411 is not set -# CONFIG_SENSORS_ADT7462 is not set -# CONFIG_SENSORS_ADT7470 is not set -# CONFIG_SENSORS_ADT7475 is not set -# CONFIG_SENSORS_ASC7621 is not set -# CONFIG_SENSORS_ARM_SCMI is not set -# CONFIG_SENSORS_ASPEED is not set -# CONFIG_SENSORS_ATXP1 is not set -# CONFIG_SENSORS_DS620 is not set -# CONFIG_SENSORS_DS1621 is not set -# CONFIG_SENSORS_I5K_AMB is not set -# CONFIG_SENSORS_F71805F is not set -# CONFIG_SENSORS_F71882FG is not set -# CONFIG_SENSORS_F75375S is not set -# CONFIG_SENSORS_FTSTEUTATES is not set -# CONFIG_SENSORS_GL518SM is not set -# CONFIG_SENSORS_GL520SM is not set -# CONFIG_SENSORS_G760A is not set -# CONFIG_SENSORS_G762 is not set -# CONFIG_SENSORS_GPIO_FAN is not set -# CONFIG_SENSORS_HIH6130 is not set -# CONFIG_SENSORS_IIO_HWMON is not set -# CONFIG_SENSORS_IT87 is not set -# CONFIG_SENSORS_JC42 is not set -# CONFIG_SENSORS_POWR1220 is not set -# CONFIG_SENSORS_LINEAGE is not set -# CONFIG_SENSORS_LTC2945 is not set -# CONFIG_SENSORS_LTC2990 is not set -# CONFIG_SENSORS_LTC4151 is not set -# CONFIG_SENSORS_LTC4215 is not set -# CONFIG_SENSORS_LTC4222 is not set -# CONFIG_SENSORS_LTC4245 is not set -# CONFIG_SENSORS_LTC4260 is not set -# CONFIG_SENSORS_LTC4261 is not set -# CONFIG_SENSORS_MAX1111 is not set -# CONFIG_SENSORS_MAX16065 is not set -# CONFIG_SENSORS_MAX1619 is not set -# CONFIG_SENSORS_MAX1668 is not set -# CONFIG_SENSORS_MAX197 is not set -# CONFIG_SENSORS_MAX31722 is not set -# CONFIG_SENSORS_MAX6621 is not set -# CONFIG_SENSORS_MAX6639 is not set -# CONFIG_SENSORS_MAX6642 is not set -# CONFIG_SENSORS_MAX6650 is not set -# CONFIG_SENSORS_MAX6697 is not set -# CONFIG_SENSORS_MAX31790 is not set -# CONFIG_SENSORS_MCP3021 is not set -# CONFIG_SENSORS_TC654 is not set -# CONFIG_SENSORS_ADCXX is not set -# CONFIG_SENSORS_LM63 is not set -# CONFIG_SENSORS_LM70 is not set -# CONFIG_SENSORS_LM73 is not set -# CONFIG_SENSORS_LM75 is not set -# CONFIG_SENSORS_LM77 is not set -# CONFIG_SENSORS_LM78 is not set -# CONFIG_SENSORS_LM80 is not set -# CONFIG_SENSORS_LM83 is not set -# CONFIG_SENSORS_LM85 is not set -# CONFIG_SENSORS_LM87 is not set -# CONFIG_SENSORS_LM90 is not set -# CONFIG_SENSORS_LM92 is not set -# CONFIG_SENSORS_LM93 is not set -# CONFIG_SENSORS_LM95234 is not set -# CONFIG_SENSORS_LM95241 is not set -# CONFIG_SENSORS_LM95245 is not set -# CONFIG_SENSORS_PC87360 is not set -# CONFIG_SENSORS_PC87427 is not set -# CONFIG_SENSORS_NTC_THERMISTOR is not set -# CONFIG_SENSORS_NCT6683 is not set -# CONFIG_SENSORS_NCT6775 is not set -# CONFIG_SENSORS_NCT7802 is not set -# CONFIG_SENSORS_NCT7904 is not set -# CONFIG_SENSORS_NPCM7XX is not set -# CONFIG_SENSORS_PCF8591 is not set -# CONFIG_PMBUS is not set -# CONFIG_SENSORS_PWM_FAN is not set -# CONFIG_SENSORS_SHT15 is not set -# CONFIG_SENSORS_SHT21 is not set -# CONFIG_SENSORS_SHT3x is not set -# CONFIG_SENSORS_SHTC1 is not set -# CONFIG_SENSORS_SIS5595 is not set -# CONFIG_SENSORS_DME1737 is not set -# CONFIG_SENSORS_EMC1403 is not set -# CONFIG_SENSORS_EMC2103 is not set -# CONFIG_SENSORS_EMC6W201 is not set -# CONFIG_SENSORS_SMSC47M1 is not set -# CONFIG_SENSORS_SMSC47M192 is not set -# CONFIG_SENSORS_SMSC47B397 is not set -# CONFIG_SENSORS_SCH5627 is not set -# CONFIG_SENSORS_SCH5636 is not set -# CONFIG_SENSORS_STTS751 is not set -# CONFIG_SENSORS_SMM665 is not set -# CONFIG_SENSORS_ADC128D818 is not set -# CONFIG_SENSORS_ADS1015 is not set -# CONFIG_SENSORS_ADS7828 is not set -# CONFIG_SENSORS_ADS7871 is not set -# CONFIG_SENSORS_AMC6821 is not set -# CONFIG_SENSORS_INA209 is not set -# CONFIG_SENSORS_INA2XX is not set -# CONFIG_SENSORS_INA3221 is not set -# CONFIG_SENSORS_TC74 is not set -# CONFIG_SENSORS_THMC50 is not set -# CONFIG_SENSORS_TMP102 is not set -# CONFIG_SENSORS_TMP103 is not set -# CONFIG_SENSORS_TMP108 is not set -# CONFIG_SENSORS_TMP401 is not set -# CONFIG_SENSORS_TMP421 is not set -# CONFIG_SENSORS_VIA686A is not set -# CONFIG_SENSORS_VT1211 is not set -# CONFIG_SENSORS_VT8231 is not set -# CONFIG_SENSORS_W83773G is not set -# CONFIG_SENSORS_W83781D is not set -# CONFIG_SENSORS_W83791D is not set -# CONFIG_SENSORS_W83792D is not set -# CONFIG_SENSORS_W83793 is not set -# CONFIG_SENSORS_W83795 is not set -# CONFIG_SENSORS_W83L785TS is not set -# CONFIG_SENSORS_W83L786NG is not set -# CONFIG_SENSORS_W83627HF is not set -# CONFIG_SENSORS_W83627EHF is not set +CONFIG_SENSORS_PWM_FAN=y CONFIG_THERMAL=y -# CONFIG_THERMAL_STATISTICS is not set -CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 -CONFIG_THERMAL_HWMON=y -CONFIG_THERMAL_OF=y CONFIG_THERMAL_WRITABLE_TRIPS=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_DEFAULT_GOV_POWER_ALLOCATOR=y CONFIG_THERMAL_GOV_FAIR_SHARE=y CONFIG_THERMAL_GOV_STEP_WISE=y -# CONFIG_THERMAL_GOV_BANG_BANG is not set -# CONFIG_THERMAL_GOV_USER_SPACE is not set CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y CONFIG_CPU_THERMAL=y -# CONFIG_CLOCK_THERMAL is not set CONFIG_DEVFREQ_THERMAL=y -# CONFIG_THERMAL_EMULATION is not set -# CONFIG_QORIQ_THERMAL is not set CONFIG_ROCKCHIP_THERMAL=y -# CONFIG_RK_VIRTUAL_THERMAL is not set -# CONFIG_RK3368_THERMAL is not set - -# -# ACPI INT340X thermal drivers -# -# CONFIG_GENERIC_ADC_THERMAL is not set +CONFIG_GENERIC_ADC_THERMAL=y CONFIG_WATCHDOG=y -CONFIG_WATCHDOG_CORE=y -# CONFIG_WATCHDOG_NOWAYOUT is not set -CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y -# CONFIG_WATCHDOG_SYSFS is not set - -# -# Watchdog Device Drivers -# -# CONFIG_SOFT_WATCHDOG is not set -# CONFIG_GPIO_WATCHDOG is not set -# CONFIG_XILINX_WATCHDOG is not set -# CONFIG_ZIIRAVE_WATCHDOG is not set -# CONFIG_ARM_SP805_WATCHDOG is not set -# CONFIG_ARM_SBSA_WATCHDOG is not set -# CONFIG_CADENCE_WATCHDOG is not set CONFIG_DW_WATCHDOG=y -# CONFIG_MAX63XX_WATCHDOG is not set -# CONFIG_ALIM7101_WDT is not set -# CONFIG_I6300ESB_WDT is not set -# CONFIG_MEN_A21_WDT is not set - -# -# PCI-based Watchdog Cards -# -# CONFIG_PCIPCWATCHDOG is not set -# CONFIG_WDTPCI is not set - -# -# USB-based Watchdog Cards -# -# CONFIG_USBPCWATCHDOG is not set - -# -# Watchdog Pretimeout Governors -# -# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set -CONFIG_SSB_POSSIBLE=y -# CONFIG_SSB is not set -CONFIG_BCMA_POSSIBLE=y -# CONFIG_BCMA is not set - -# -# Multifunction device drivers -# -CONFIG_MFD_CORE=y -# CONFIG_MFD_ACT8945A is not set -# CONFIG_MFD_AS3711 is not set -# CONFIG_MFD_AS3722 is not set -# CONFIG_PMIC_ADP5520 is not set -# CONFIG_MFD_AAT2870_CORE is not set -# CONFIG_MFD_ATMEL_FLEXCOM is not set -# CONFIG_MFD_ATMEL_HLCDC is not set -# CONFIG_MFD_BCM590XX is not set -# CONFIG_MFD_BD9571MWV is not set -# CONFIG_MFD_AXP20X_I2C is not set -CONFIG_MFD_CROS_EC=y -# CONFIG_MFD_CROS_EC_CHARDEV is not set -# CONFIG_MFD_MADERA is not set -# CONFIG_PMIC_DA903X is not set -# CONFIG_MFD_DA9052_SPI is not set -# CONFIG_MFD_DA9052_I2C is not set -# CONFIG_MFD_DA9055 is not set -# CONFIG_MFD_DA9062 is not set -# CONFIG_MFD_DA9063 is not set -# CONFIG_MFD_DA9150 is not set -# CONFIG_MFD_DLN2 is not set -# CONFIG_MFD_MC13XXX_SPI is not set -# CONFIG_MFD_MC13XXX_I2C is not set -# CONFIG_MFD_HI6421_PMIC is not set -# CONFIG_HTC_PASIC3 is not set -# CONFIG_HTC_I2CPLD is not set -# CONFIG_LPC_ICH is not set -# CONFIG_LPC_SCH is not set -# CONFIG_MFD_JANZ_CMODIO is not set -# CONFIG_MFD_KEMPLD is not set -# CONFIG_MFD_88PM800 is not set -# CONFIG_MFD_88PM805 is not set -# CONFIG_MFD_88PM860X is not set -# CONFIG_MFD_MAX14577 is not set -# CONFIG_MFD_MAX77620 is not set -# CONFIG_MFD_MAX77686 is not set -# CONFIG_MFD_MAX77693 is not set -# CONFIG_MFD_MAX77843 is not set -# CONFIG_MFD_MAX8907 is not set -# CONFIG_MFD_MAX8925 is not set -# CONFIG_MFD_MAX8997 is not set -# CONFIG_MFD_MAX8998 is not set -# CONFIG_MFD_MT6397 is not set -# CONFIG_MFD_MENF21BMC is not set -# CONFIG_EZX_PCAP is not set -# CONFIG_MFD_CPCAP is not set -# CONFIG_MFD_VIPERBOARD is not set -# CONFIG_MFD_RETU is not set -# CONFIG_MFD_PCF50633 is not set -# CONFIG_MFD_RDC321X is not set -# CONFIG_MFD_RT5033 is not set -# CONFIG_MFD_RC5T583 is not set -CONFIG_MFD_RK618=y -CONFIG_MFD_RK628=y -# CONFIG_MFD_RK630 is not set -# CONFIG_MFD_RK630_I2C is not set -# CONFIG_MFD_RK630_SPI is not set -CONFIG_MFD_RK808=y -# CONFIG_MFD_RK1000 is not set -# CONFIG_MFD_RN5T618 is not set -# CONFIG_MFD_SEC_CORE is not set -# CONFIG_MFD_SI476X_CORE is not set -# CONFIG_MFD_SM501 is not set -# CONFIG_MFD_SKY81452 is not set -# CONFIG_MFD_SMSC is not set -# CONFIG_ABX500_CORE is not set -# CONFIG_MFD_STMPE 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_TI_LMU is not set -# CONFIG_MFD_PALMAS is not set -# CONFIG_TPS6105X is not set -# CONFIG_TPS65010 is not set -# CONFIG_TPS6507X is not set -# CONFIG_MFD_TPS65086 is not set -# CONFIG_MFD_TPS65090 is not set -# CONFIG_MFD_TPS65217 is not set -# CONFIG_MFD_TI_LP873X is not set -# CONFIG_MFD_TI_LP87565 is not set -# CONFIG_MFD_TPS65218 is not set +CONFIG_SSB=y +CONFIG_BCMA=y +CONFIG_MFD_RK8XX_I2C=y CONFIG_MFD_TPS6586X=y -# CONFIG_MFD_TPS65910 is not set -# CONFIG_MFD_TPS65912_I2C is not set -# CONFIG_MFD_TPS65912_SPI is not set -# CONFIG_MFD_TPS80031 is not set -# CONFIG_TWL4030_CORE is not set -# CONFIG_TWL6040_CORE is not set -# CONFIG_MFD_WL1273_CORE is not set -# CONFIG_MFD_LM3533 is not set -# CONFIG_MFD_TC3589X is not set -# CONFIG_MFD_VX855 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_MFD_ROHM_BD718XX is not set -# CONFIG_RAVE_SP_CORE is not set -CONFIG_FUSB_30X=y CONFIG_REGULATOR=y CONFIG_REGULATOR_DEBUG=y CONFIG_REGULATOR_FIXED_VOLTAGE=y -# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set -# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set -# CONFIG_REGULATOR_PROXY_CONSUMER is not set -# CONFIG_REGULATOR_88PG86X is not set +CONFIG_REGULATOR_VIRTUAL_CONSUMER=y +CONFIG_REGULATOR_USERSPACE_CONSUMER=y CONFIG_REGULATOR_ACT8865=y -# 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_ARM_SCMI=y CONFIG_REGULATOR_FAN53555=y CONFIG_REGULATOR_GPIO=y -# 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_LP8752=y -# CONFIG_REGULATOR_LP8755 is not set -# CONFIG_REGULATOR_LTC3589 is not set -# CONFIG_REGULATOR_LTC3676 is not set -# CONFIG_REGULATOR_MAX1586 is not set -# CONFIG_REGULATOR_MAX8649 is not set -# CONFIG_REGULATOR_MAX8660 is not set -# CONFIG_REGULATOR_MAX8952 is not set -# CONFIG_REGULATOR_MAX8973 is not set -CONFIG_REGULATOR_MP8865=y -# CONFIG_REGULATOR_MT6311 is not set -# CONFIG_REGULATOR_PFUZE100 is not set -# CONFIG_REGULATOR_PV88060 is not set -# CONFIG_REGULATOR_PV88080 is not set -# CONFIG_REGULATOR_PV88090 is not set CONFIG_REGULATOR_PWM=y CONFIG_REGULATOR_RK808=y -# CONFIG_REGULATOR_SY8106A is not set -# CONFIG_REGULATOR_TPS51632 is not set -# CONFIG_REGULATOR_TPS549B22 is not set -# CONFIG_REGULATOR_TPS62360 is not set -# CONFIG_REGULATOR_TPS65023 is not set -# CONFIG_REGULATOR_TPS6507X is not set -CONFIG_REGULATOR_TPS65132=y -# CONFIG_REGULATOR_TPS6524X is not set CONFIG_REGULATOR_TPS6586X=y -# CONFIG_REGULATOR_VCTRL is not set -CONFIG_REGULATOR_XZ3216=y -# CONFIG_REGULATOR_DIO5632 is not set -CONFIG_CEC_CORE=y -CONFIG_CEC_NOTIFIER=y -# CONFIG_RC_CORE is not set +CONFIG_REGULATOR_VCTRL=y +CONFIG_RC_CORE=y +CONFIG_LIRC=y +CONFIG_RC_DECODERS=y +CONFIG_IR_JVC_DECODER=y +CONFIG_IR_MCE_KBD_DECODER=y +CONFIG_IR_NEC_DECODER=y +CONFIG_IR_RC5_DECODER=y +CONFIG_IR_RC6_DECODER=y +CONFIG_IR_SANYO_DECODER=y +CONFIG_IR_SHARP_DECODER=y +CONFIG_IR_SONY_DECODER=y +CONFIG_IR_XMP_DECODER=y +CONFIG_RC_DEVICES=y +CONFIG_IR_GPIO_CIR=y +CONFIG_MEDIA_CEC_RC=y +CONFIG_MEDIA_CEC_SUPPORT=y +CONFIG_USB_PULSE8_CEC=m +CONFIG_USB_RAINSHADOW_CEC=m CONFIG_MEDIA_SUPPORT=y - -# -# Multimedia core support -# +CONFIG_MEDIA_SUPPORT_FILTER=y CONFIG_MEDIA_CAMERA_SUPPORT=y -# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set -# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set -# CONFIG_MEDIA_RADIO_SUPPORT is not set -# CONFIG_MEDIA_SDR_SUPPORT is not set -CONFIG_MEDIA_CEC_SUPPORT=y -CONFIG_MEDIA_CONTROLLER=y -CONFIG_VIDEO_DEV=y -CONFIG_VIDEO_V4L2_SUBDEV_API=y -CONFIG_VIDEO_V4L2=y -# CONFIG_VIDEO_ADV_DEBUG is not set -# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set -# CONFIG_VIDEO_PCI_SKELETON is not set -CONFIG_V4L2_MEM2MEM_DEV=y -# CONFIG_V4L2_FLASH_LED_CLASS is not set -CONFIG_V4L2_FWNODE=y - -# -# Media drivers -# +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +CONFIG_MEDIA_PLATFORM_SUPPORT=y +CONFIG_MEDIA_TEST_SUPPORT=y +CONFIG_DVB_MAX_ADAPTERS=8 +# CONFIG_DVB_DYNAMIC_MINORS is not set CONFIG_MEDIA_USB_SUPPORT=y - -# -# Webcam devices -# +CONFIG_VIDEO_USBTV=m CONFIG_USB_VIDEO_CLASS=y # CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV is not set -# CONFIG_USB_GSPCA is not set -# CONFIG_USB_PWC is not set -# CONFIG_VIDEO_CPIA2 is not set -# CONFIG_USB_ZR364XX is not set -# CONFIG_USB_STKWEBCAM is not set -# CONFIG_USB_S2255 is not set -# CONFIG_VIDEO_USBTV is not set - -# -# Webcam, TV (analog/digital) USB devices -# -# CONFIG_VIDEO_EM28XX is not set - -# -# USB HDMI CEC adapters -# -# CONFIG_USB_PULSE8_CEC is not set -# CONFIG_USB_RAINSHADOW_CEC is not set -# CONFIG_MEDIA_PCI_SUPPORT is not set +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m +CONFIG_DVB_AS102=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +CONFIG_DVB_USB_V2=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_AF9035=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_AZ6007=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_DVBSKY=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_USB=y +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_DIBUSB_MB=m +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_USB_AIRSPY=m +CONFIG_USB_HACKRF=m +CONFIG_USB_MSI2500=m +CONFIG_MEDIA_PCI_SUPPORT=y +CONFIG_VIDEO_CX23885=m +CONFIG_VIDEO_CX25821=m CONFIG_V4L_PLATFORM_DRIVERS=y -# CONFIG_VIDEO_CAFE_CCIC is not set -# CONFIG_VIDEO_CADENCE is not set -# CONFIG_VIDEO_MUX is not set -CONFIG_SOC_CAMERA=y -# CONFIG_SOC_CAMERA_PLATFORM is not set -# CONFIG_VIDEO_XILINX is not set -CONFIG_VIDEO_ROCKCHIP_CIF=y -CONFIG_ROCKCHIP_CIF_WORKMODE_PINGPONG=y -# CONFIG_ROCKCHIP_CIF_WORKMODE_ONEFRAME is not set -CONFIG_VIDEO_ROCKCHIP_ISP1=y -CONFIG_VIDEO_ROCKCHIP_ISP=y -# CONFIG_VIDEO_ROCKCHIP_ISPP is not set +CONFIG_DVB_PLATFORM_DRIVERS=y CONFIG_V4L_MEM2MEM_DRIVERS=y -# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set -# CONFIG_VIDEO_SH_VEU is not set CONFIG_VIDEO_ROCKCHIP_RGA=y -# CONFIG_V4L_TEST_DRIVERS is not set -# CONFIG_CEC_PLATFORM_DRIVERS is not set - -# -# Supported MMC/SDIO adapters -# -# CONFIG_CYPRESS_FIRMWARE is not set -CONFIG_VIDEOBUF2_CORE=y -CONFIG_VIDEOBUF2_V4L2=y -CONFIG_VIDEOBUF2_MEMOPS=y -CONFIG_VIDEOBUF2_DMA_CONTIG=y -CONFIG_VIDEOBUF2_VMALLOC=y -CONFIG_VIDEOBUF2_DMA_SG=y - -# -# Media ancillary drivers (tuners, sensors, i2c, spi, frontends) -# -# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set - -# -# I2C Encoders, decoders, sensors and other helper chips -# - -# -# Audio decoders, processors and mixers -# -# CONFIG_VIDEO_TVAUDIO is not set -# CONFIG_VIDEO_TDA7432 is not set -# CONFIG_VIDEO_TDA9840 is not set -# CONFIG_VIDEO_TDA1997X is not set -# CONFIG_VIDEO_TEA6415C is not set -# CONFIG_VIDEO_TEA6420 is not set -# CONFIG_VIDEO_MSP3400 is not set -# CONFIG_VIDEO_CS3308 is not set -# CONFIG_VIDEO_CS5345 is not set -# CONFIG_VIDEO_CS53L32A is not set -# CONFIG_VIDEO_TLV320AIC23B is not set -# CONFIG_VIDEO_UDA1342 is not set -# CONFIG_VIDEO_WM8775 is not set -# CONFIG_VIDEO_WM8739 is not set -# CONFIG_VIDEO_VP27SMPX is not set -# CONFIG_VIDEO_SONY_BTF_MPX is not set - -# -# RDS decoders -# -# CONFIG_VIDEO_SAA6588 is not set - -# -# Video decoders -# -# CONFIG_VIDEO_ADV7180 is not set -# CONFIG_VIDEO_ADV7183 is not set -# CONFIG_VIDEO_ADV748X is not set -# CONFIG_VIDEO_ADV7604 is not set -# CONFIG_VIDEO_ADV7842 is not set -# CONFIG_VIDEO_BT819 is not set -# CONFIG_VIDEO_BT856 is not set -# CONFIG_VIDEO_BT866 is not set -# CONFIG_VIDEO_KS0127 is not set -# CONFIG_VIDEO_ML86V7667 is not set -# CONFIG_VIDEO_AD5820 is not set -# CONFIG_VIDEO_AK7375 is not set -# CONFIG_VIDEO_DW9714 is not set -# CONFIG_VIDEO_DW9807_VCM is not set -# CONFIG_VIDEO_FP5510 is not set -# CONFIG_VIDEO_GT9760S is not set -# CONFIG_VIDEO_VM149C is not set -# CONFIG_VIDEO_SAA7110 is not set -# CONFIG_VIDEO_SAA711X is not set -# CONFIG_VIDEO_TC358743 is not set -# CONFIG_VIDEO_TC35874X is not set -CONFIG_VIDEO_RK628_CSI=y -# CONFIG_VIDEO_TECHPOINT is not set -# CONFIG_VIDEO_TVP514X is not set -# CONFIG_VIDEO_TVP5150 is not set -# CONFIG_VIDEO_TVP7002 is not set -# CONFIG_VIDEO_TW2804 is not set -# CONFIG_VIDEO_TW9903 is not set -# CONFIG_VIDEO_TW9906 is not set -# CONFIG_VIDEO_TW9910 is not set -# CONFIG_VIDEO_VPX3220 is not set - -# -# Video and audio decoders -# -# CONFIG_VIDEO_SAA717X is not set -# CONFIG_VIDEO_CX25840 is not set - -# -# Video encoders -# -# CONFIG_VIDEO_SAA7127 is not set -# CONFIG_VIDEO_SAA7185 is not set -# CONFIG_VIDEO_ADV7170 is not set -# CONFIG_VIDEO_ADV7175 is not set -# CONFIG_VIDEO_ADV7343 is not set -# CONFIG_VIDEO_ADV7393 is not set -# CONFIG_VIDEO_ADV7511 is not set -# CONFIG_VIDEO_AD9389B is not set -# CONFIG_VIDEO_AK881X is not set -# CONFIG_VIDEO_THS8200 is not set - -# -# Camera sensor devices -# -# CONFIG_VIDEO_IMX178 is not set -# CONFIG_VIDEO_IMX219 is not set -# CONFIG_VIDEO_IMX258 is not set -# CONFIG_VIDEO_IMX274 is not set -# CONFIG_VIDEO_IMX307 is not set -# CONFIG_VIDEO_IMX317 is not set -# CONFIG_VIDEO_IMX323 is not set -# CONFIG_VIDEO_IMX327 is not set -# CONFIG_VIDEO_IMX334 is not set -# CONFIG_VIDEO_IMX335 is not set -# CONFIG_VIDEO_IMX347 is not set -# CONFIG_VIDEO_IMX378 is not set -# CONFIG_VIDEO_IMX415 is not set -# CONFIG_VIDEO_IMX464 is not set -# CONFIG_VIDEO_OS02G10 is not set -CONFIG_VIDEO_OS04A10=y -# CONFIG_VIDEO_OS04C10 is not set -# CONFIG_VIDEO_OS05A20 is not set -# CONFIG_VIDEO_OS08A10 is not set -# CONFIG_VIDEO_OV02B10 is not set -# CONFIG_VIDEO_OV02K10 is not set -# CONFIG_VIDEO_OV2640 is not set -# CONFIG_VIDEO_OV2659 is not set -# CONFIG_VIDEO_OV2680 is not set -# CONFIG_VIDEO_OV2685 is not set -# CONFIG_VIDEO_OV2718 is not set -# CONFIG_VIDEO_OV2735 is not set -# CONFIG_VIDEO_OV2775 is not set -# CONFIG_VIDEO_OV4686 is not set -# CONFIG_VIDEO_OV4688 is not set -CONFIG_VIDEO_OV4689=y -# CONFIG_VIDEO_OV5640 is not set -# CONFIG_VIDEO_OV5645 is not set -# CONFIG_VIDEO_OV5647 is not set -# CONFIG_VIDEO_OV5648 is not set -# CONFIG_VIDEO_OV5670 is not set -CONFIG_VIDEO_OV5695=y -# CONFIG_VIDEO_OV6650 is not set -CONFIG_VIDEO_OV7251=y -# CONFIG_VIDEO_OV772X is not set -# CONFIG_VIDEO_OV7640 is not set -# CONFIG_VIDEO_OV7670 is not set -# CONFIG_VIDEO_OV7740 is not set -# CONFIG_VIDEO_OV7750 is not set -# CONFIG_VIDEO_OV8858 is not set -# CONFIG_VIDEO_OV9281 is not set -# CONFIG_VIDEO_OV9650 is not set -# CONFIG_VIDEO_OV9750 is not set -# CONFIG_VIDEO_OV12D2Q is not set -CONFIG_VIDEO_OV13850=y -# CONFIG_VIDEO_OV13858 is not set -# CONFIG_VIDEO_PREISP_DUMMY_SENSOR is not set -# CONFIG_VIDEO_VS6624 is not set -# CONFIG_VIDEO_MT9M032 is not set -# CONFIG_VIDEO_MT9M111 is not set -# CONFIG_VIDEO_MT9P031 is not set -# CONFIG_VIDEO_MT9T001 is not set -# CONFIG_VIDEO_MT9T112 is not set -# CONFIG_VIDEO_MT9V011 is not set -# CONFIG_VIDEO_MT9V032 is not set -# CONFIG_VIDEO_MT9V111 is not set -# CONFIG_VIDEO_AR0230 is not set -# CONFIG_VIDEO_SR030PC30 is not set -# CONFIG_VIDEO_NOON010PC30 is not set -# CONFIG_VIDEO_M5MOLS is not set -# CONFIG_VIDEO_RJ54N1 is not set -# CONFIG_VIDEO_S5K6AA is not set -# CONFIG_VIDEO_S5K6A3 is not set -# CONFIG_VIDEO_S5KGM1SP is not set -# CONFIG_VIDEO_S5K4H7YX is not set -# CONFIG_VIDEO_S5K4ECGX is not set -# CONFIG_VIDEO_S5K5BAF is not set -# CONFIG_VIDEO_SMIAPP is not set -# CONFIG_VIDEO_ET8EK8 is not set -# CONFIG_VIDEO_S5C73M3 is not set -# CONFIG_VIDEO_GC02M2 is not set -# CONFIG_VIDEO_GC0312 is not set -# CONFIG_VIDEO_GC0329 is not set -# CONFIG_VIDEO_GC032A is not set -# CONFIG_VIDEO_GC0403 is not set -# CONFIG_VIDEO_GC2035 is not set -CONFIG_VIDEO_GC2053=y -CONFIG_VIDEO_GC2093=y -# CONFIG_VIDEO_GC2145 is not set -# CONFIG_VIDEO_GC2155 is not set -# CONFIG_VIDEO_GC2355 is not set -# CONFIG_VIDEO_GC2375H is not set -# CONFIG_VIDEO_GC2385 is not set -# CONFIG_VIDEO_GC4663 is not set -# CONFIG_VIDEO_GC4C33 is not set -# CONFIG_VIDEO_GC5024 is not set -# CONFIG_VIDEO_GC5025 is not set -# CONFIG_VIDEO_GC5035 is not set -CONFIG_VIDEO_GC8034=y -# CONFIG_VIDEO_BF3925 is not set -# CONFIG_VIDEO_JX_F37 is not set -# CONFIG_VIDEO_JX_H62 is not set -# CONFIG_VIDEO_JX_H65 is not set -# CONFIG_VIDEO_JX_K04 is not set -# CONFIG_VIDEO_SC031GS is not set -# CONFIG_VIDEO_SC035HGS is not set -# CONFIG_VIDEO_SC132GS is not set -# CONFIG_VIDEO_SC200AI is not set -# CONFIG_VIDEO_SC210IOT is not set -# CONFIG_VIDEO_SC2232 is not set -# CONFIG_VIDEO_SC2239 is not set -# CONFIG_VIDEO_SC2310 is not set -# CONFIG_VIDEO_SC2335 is not set -# CONFIG_VIDEO_SC401AI is not set -# CONFIG_VIDEO_SC4238 is not set -# CONFIG_VIDEO_SC430CS is not set -# CONFIG_VIDEO_SC500AI is not set -# CONFIG_VIDEO_SC8220 is not set -# CONFIG_VIDEO_SP250A is not set -# CONFIG_VIDEO_HYNIX_HI556 is not set -# CONFIG_VIDEO_HYNIX_HI846 is not set - -# -# Flash devices -# -# CONFIG_VIDEO_ADP1653 is not set -# CONFIG_VIDEO_LM3560 is not set -# CONFIG_VIDEO_LM3646 is not set -# CONFIG_VIDEO_SGM3784 is not set - -# -# Video improvement chips -# -# CONFIG_VIDEO_UPD64031A is not set -# CONFIG_VIDEO_UPD64083 is not set - -# -# Audio/Video compression chips -# -# CONFIG_VIDEO_SAA6752HS is not set - -# -# SDR tuner chips -# - -# -# Miscellaneous helper chips -# -# CONFIG_VIDEO_THS7303 is not set -# CONFIG_VIDEO_M52790 is not set -# CONFIG_VIDEO_I2C is not set -# CONFIG_VIDEO_NVP6158 is not set -# CONFIG_VIDEO_NVP6188 is not set -# CONFIG_VIDEO_NVP6324 is not set -# CONFIG_VIDEO_HALL_DC_MOTOR is not set -# CONFIG_VIDEO_RK_IRCUT is not set -# CONFIG_VIDEO_MP6507 is not set - -# -# Sensors used on soc_camera driver -# - -# -# soc_camera sensor drivers -# -# CONFIG_SOC_CAMERA_MT9M001 is not set -# CONFIG_SOC_CAMERA_MT9M111 is not set -# CONFIG_SOC_CAMERA_MT9T112 is not set -# CONFIG_SOC_CAMERA_MT9V022 is not set -# CONFIG_SOC_CAMERA_OV5642 is not set -# CONFIG_SOC_CAMERA_OV772X is not set -# CONFIG_SOC_CAMERA_OV9640 is not set -# CONFIG_SOC_CAMERA_OV9740 is not set -# CONFIG_SOC_CAMERA_RJ54N1 is not set -# CONFIG_SOC_CAMERA_TW9910 is not set - -# -# SPI helper chips -# -# CONFIG_VIDEO_GS1662 is not set -# CONFIG_VIDEO_ROCKCHIP_PREISP is not set - -# -# Media SPI Adapters -# - -# -# Customise DVB Frontends -# - -# -# Tools to develop new frontends -# - -# -# Graphics support -# -# CONFIG_VGA_ARB is not set +CONFIG_VIDEO_HANTRO=y +# CONFIG_VIDEO_IR_I2C is not set +CONFIG_VIDEO_IMX219=y +CONFIG_VIDEO_OV5645=y +CONFIG_CXD2880_SPI_DRV=m +CONFIG_DVB_ASCOT2E=m +CONFIG_DVB_HELENE=m +CONFIG_DVB_HORUS3A=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_LGS8GL5=m +CONFIG_DVB_LNBH25=m +CONFIG_DVB_LNBH29=m +CONFIG_DVB_TDA665x=m +CONFIG_DVB_CXD2099=m CONFIG_DRM=y -CONFIG_DRM_IGNORE_IOTCL_PERMIT=y -CONFIG_DRM_MIPI_DSI=y -# CONFIG_DRM_DP_AUX_CHARDEV is not set -# CONFIG_DRM_DEBUG_MM is not set -# CONFIG_DRM_DEBUG_SELFTEST is not set -CONFIG_DRM_KMS_HELPER=y -CONFIG_DRM_KMS_FB_HELPER=y -CONFIG_DRM_FBDEV_EMULATION=y -CONFIG_DRM_FBDEV_OVERALLOC=200 -# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set CONFIG_DRM_LOAD_EDID_FIRMWARE=y -# CONFIG_DRM_DP_CEC is not set -CONFIG_DRM_TTM=m -CONFIG_DRM_GEM_CMA_HELPER=y - -# -# I2C encoder or helper chips -# -# CONFIG_DRM_I2C_CH7006 is not set -# CONFIG_DRM_I2C_SIL164 is not set -# CONFIG_DRM_I2C_NXP_TDA998X is not set -# CONFIG_DRM_I2C_NXP_TDA9950 is not set -# CONFIG_DRM_HDLCD is not set -# CONFIG_DRM_MALI_DISPLAY is not set -# CONFIG_DRM_RADEON is not set -# CONFIG_DRM_AMDGPU is not set - -# -# ACP (Audio CoProcessor) Configuration -# - -# -# AMD Library routines -# -# CONFIG_DRM_NOUVEAU is not set -# CONFIG_DRM_VGEM is not set -# CONFIG_DRM_VKMS is not set +CONFIG_DRM_MALI_DISPLAY=y CONFIG_DRM_ROCKCHIP=y -# CONFIG_ROCKCHIP_DRM_DEBUG is not set -CONFIG_ROCKCHIP_ANALOGIX_DP=y -CONFIG_ROCKCHIP_CDN_DP=y +CONFIG_ROCKCHIP_VOP2=y CONFIG_ROCKCHIP_DW_HDMI=y CONFIG_ROCKCHIP_DW_MIPI_DSI=y -CONFIG_ROCKCHIP_INNO_HDMI=y -CONFIG_ROCKCHIP_LVDS=y -CONFIG_ROCKCHIP_DRM_TVE=y -CONFIG_ROCKCHIP_RGB=y -# CONFIG_DRM_ROCKCHIP_VVOP is not set -# CONFIG_ROCKCHIP_EBC_DEV is not set -CONFIG_DRM_ROCKCHIP_RK618=y -# CONFIG_DRM_ROCKCHIP_RK628 is not set -# CONFIG_DRM_UDL is not set -# CONFIG_DRM_AST is not set -# CONFIG_DRM_MGAG200 is not set -# CONFIG_DRM_CIRRUS_QEMU is not set -# CONFIG_DRM_RCAR_DW_HDMI is not set -# CONFIG_DRM_RCAR_LVDS is not set -# CONFIG_DRM_QXL is not set -# CONFIG_DRM_BOCHS is not set -CONFIG_DRM_PANEL=y - -# -# Display Panels -# -# CONFIG_DRM_PANEL_ARM_VERSATILE is not set -# CONFIG_DRM_PANEL_LVDS is not set -CONFIG_DRM_PANEL_SIMPLE=y -# CONFIG_DRM_PANEL_SIMPLE_OF_ONLY is not set -# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set -# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set -# CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set -# CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set -# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set -# CONFIG_DRM_PANEL_LG_LG4573 is not set -# CONFIG_DRM_PANEL_ORISETECH_OTM8009A is not set -# CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set -# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set -# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set -# CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set -# CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 is not set -# CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set -# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set -CONFIG_DRM_BRIDGE=y -CONFIG_DRM_PANEL_BRIDGE=y - -# -# Display Interface Bridges -# -# CONFIG_DRM_ANALOGIX_ANX78XX is not set -# CONFIG_DRM_CDNS_DSI is not set -# CONFIG_DRM_DUMB_VGA_DAC is not set -# CONFIG_DRM_LVDS_ENCODER is not set -# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set -# CONFIG_DRM_NXP_PTN3460 is not set -# CONFIG_DRM_PARADE_PS8622 is not set -# CONFIG_DRM_RK1000_TVE is not set -# CONFIG_DRM_SIL_SII8620 is not set -CONFIG_DRM_SII902X=y -# CONFIG_DRM_SII9234 is not set -# CONFIG_DRM_THINE_THC63LVD1024 is not set -# CONFIG_DRM_TOSHIBA_TC358767 is not set -# CONFIG_DRM_TI_TFP410 is not set -CONFIG_DRM_ANALOGIX_DP=y -# CONFIG_DRM_I2C_ADV7511 is not set -CONFIG_DRM_DW_HDMI=y -# CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set -CONFIG_DRM_DW_HDMI_I2S_AUDIO=y +CONFIG_DRM_PANEL_ELIDA_KD35T133=y +CONFIG_DRM_PANEL_HIMAX_HX8394=y +CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=y +CONFIG_DRM_PANEL_NEWVISION_NV3051D=y +CONFIG_DRM_PANEL_SITRONIX_ST7701=y +CONFIG_DRM_PANEL_SITRONIX_ST7703=y +CONFIG_DRM_DISPLAY_CONNECTOR=y CONFIG_DRM_DW_HDMI_CEC=y -# CONFIG_DRM_ARCPGU is not set -# CONFIG_DRM_HISI_HIBMC is not set -# CONFIG_DRM_HISI_KIRIN is not set -# CONFIG_DRM_MXSFB is not set -# CONFIG_DRM_TINYDRM is not set -# CONFIG_DRM_PL111 is not set -# CONFIG_DRM_LEGACY is not set -CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y -CONFIG_MALI400=y -CONFIG_MALI450=y -# CONFIG_MALI470 is not set -# CONFIG_MALI400_DEBUG is not set -# CONFIG_MALI400_PROFILING is not set -# CONFIG_MALI400_UMP is not set -CONFIG_MALI_DMA_BUF_MAP_ON_ATTACH=y -CONFIG_MALI_SHARED_INTERRUPTS=y -# CONFIG_MALI_PMU_PARALLEL_POWER_UP is not set -CONFIG_MALI_DT=y -CONFIG_MALI_DEVFREQ=y -# CONFIG_MALI_QUIET is not set -CONFIG_MALI_MIDGARD_FOR_ANDROID=y -# CONFIG_MALI_MIDGARD_FOR_LINUX is not set -CONFIG_MALI_MIDGARD=y -# CONFIG_MALI_GATOR_SUPPORT is not set -# CONFIG_MALI_MIDGARD_ENABLE_TRACE is not set -# CONFIG_MALI_DMA_FENCE is not set -CONFIG_MALI_EXPERT=y -# CONFIG_MALI_CORESTACK is not set -# CONFIG_MALI_PRFCNT_SET_SECONDARY is not set -# CONFIG_MALI_PLATFORM_FAKE is not set -# CONFIG_MALI_PLATFORM_DEVICETREE is not set -CONFIG_MALI_PLATFORM_THIRDPARTY=y -CONFIG_MALI_PLATFORM_THIRDPARTY_NAME="rk" -CONFIG_MALI_DEBUG=y -CONFIG_MALI_FENCE_DEBUG=y -# CONFIG_MALI_NO_MALI is not set -# CONFIG_MALI_TRACE_TIMELINE is not set -# CONFIG_MALI_SYSTEM_TRACE is not set -# CONFIG_MALI_GPU_MMU_AARCH64 is not set -CONFIG_MALI_PWRSOFT_765=y -# CONFIG_MALI_KUTF is not set -CONFIG_MALI_BIFROST_FOR_ANDROID=y -# CONFIG_MALI_BIFROST_FOR_LINUX is not set -CONFIG_MALI_BIFROST=y -CONFIG_MALI_BIFROST_GATOR_SUPPORT=y -# CONFIG_MALI_BIFROST_ENABLE_TRACE is not set -CONFIG_MALI_BIFROST_DEVFREQ=y -# CONFIG_MALI_BIFROST_DMA_FENCE is not set -CONFIG_MALI_PLATFORM_NAME="rk" -# CONFIG_MALI_ARBITER_SUPPORT is not set -# CONFIG_MALI_BIFROST_EXPERT is not set -CONFIG_MALI_REAL_HW=y -# CONFIG_MALI_DMA_BUF_MAP_ON_DEMAND is not set -# CONFIG_MALI_DMA_BUF_LEGACY_COMPAT is not set -# CONFIG_MALI_GEM5_BUILD is not set - -# -# Frame buffer Devices -# -CONFIG_FB_CMDLINE=y -CONFIG_FB_NOTIFY=y +CONFIG_DRM_PANEL_MIPI_DBI=y +CONFIG_DRM_PANFROST=y CONFIG_FB=y -# CONFIG_FIRMWARE_EDID is not set -CONFIG_FB_CFB_FILLRECT=y -CONFIG_FB_CFB_COPYAREA=y -CONFIG_FB_CFB_IMAGEBLIT=y -CONFIG_FB_SYS_FILLRECT=y -CONFIG_FB_SYS_COPYAREA=y -CONFIG_FB_SYS_IMAGEBLIT=y -# CONFIG_FB_FOREIGN_ENDIAN is not set -CONFIG_FB_SYS_FOPS=y -CONFIG_FB_DEFERRED_IO=y -# CONFIG_FB_MODE_HELPERS is not set -# CONFIG_FB_TILEBLITTING is not set - -# -# Frame buffer hardware drivers -# -# CONFIG_FB_CIRRUS is not set -# CONFIG_FB_PM2 is not set -# CONFIG_FB_ARMCLCD is not set -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_ASILIANT is not set -# CONFIG_FB_IMSTT is not set -# CONFIG_FB_UVESA is not set -# CONFIG_FB_OPENCORES is not set -# CONFIG_FB_S1D13XXX is not set -# CONFIG_FB_NVIDIA is not set -# CONFIG_FB_RIVA is not set -# CONFIG_FB_I740 is not set -# CONFIG_FB_MATROX is not set -# CONFIG_FB_RADEON is not set -# CONFIG_FB_ATY128 is not set -# CONFIG_FB_ATY is not set -# CONFIG_FB_S3 is not set -# CONFIG_FB_SAVAGE is not set -# CONFIG_FB_SIS is not set -# CONFIG_FB_NEOMAGIC is not set -# CONFIG_FB_KYRO is not set -# CONFIG_FB_3DFX is not set -# CONFIG_FB_VOODOO1 is not set -# CONFIG_FB_VT8623 is not set -# CONFIG_FB_TRIDENT is not set -# CONFIG_FB_ARK is not set -# CONFIG_FB_PM3 is not set -# CONFIG_FB_CARMINE is not set -# CONFIG_FB_SMSCUFX is not set -# CONFIG_FB_UDL is not set -# CONFIG_FB_IBM_GXT4500 is not set -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FB_METRONOME is not set -# CONFIG_FB_MB862XX is not set -# CONFIG_FB_BROADSHEET is not set -# CONFIG_FB_SIMPLE is not set -# CONFIG_FB_SSD1307 is not set -# CONFIG_FB_SM712 is not set -CONFIG_BACKLIGHT_LCD_SUPPORT=y -# CONFIG_LCD_CLASS_DEVICE is not set -CONFIG_BACKLIGHT_CLASS_DEVICE=y -CONFIG_BACKLIGHT_GENERIC=y +CONFIG_FIRMWARE_EDID=y +CONFIG_FB_MODE_HELPERS=y CONFIG_BACKLIGHT_PWM=y -# CONFIG_BACKLIGHT_PM8941_WLED is not set -# CONFIG_BACKLIGHT_ADP8860 is not set -# CONFIG_BACKLIGHT_ADP8870 is not set -# CONFIG_BACKLIGHT_LM3630A is not set -# CONFIG_BACKLIGHT_LM3639 is not set -# CONFIG_BACKLIGHT_LP855X is not set -# CONFIG_BACKLIGHT_GPIO is not set -# CONFIG_BACKLIGHT_LV5207LP is not set -# CONFIG_BACKLIGHT_BD6107 is not set -# CONFIG_BACKLIGHT_ARCXCNN is not set - -# -# Rockchip Misc Video driver -# - -# -# RGA -# -# CONFIG_ROCKCHIP_RGA is not set - -# -# RGA2 -# -CONFIG_ROCKCHIP_RGA2=y - -# -# IEP -# -# CONFIG_IEP is not set -# CONFIG_IEP_MMU is not set -CONFIG_ROCKCHIP_MPP_SERVICE=y -CONFIG_ROCKCHIP_MPP_RKVDEC=y -CONFIG_ROCKCHIP_MPP_RKVDEC2=y -CONFIG_ROCKCHIP_MPP_RKVENC=y -CONFIG_ROCKCHIP_MPP_VDPU1=y -CONFIG_ROCKCHIP_MPP_VEPU1=y -CONFIG_ROCKCHIP_MPP_VDPU2=y -CONFIG_ROCKCHIP_MPP_VEPU2=y -CONFIG_ROCKCHIP_MPP_IEP2=y -CONFIG_ROCKCHIP_MPP_JPGDEC=y -CONFIG_VIDEOMODE_HELPERS=y -CONFIG_HDMI=y - -# -# Console display driver support -# -CONFIG_DUMMY_CONSOLE=y -CONFIG_DUMMY_CONSOLE_COLUMNS=80 -CONFIG_DUMMY_CONSOLE_ROWS=25 -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +CONFIG_BACKLIGHT_LED=y CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y -# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set -# CONFIG_LOGO is not set CONFIG_SOUND=y CONFIG_SND=y -CONFIG_SND_TIMER=y -CONFIG_SND_PCM=y -CONFIG_SND_PCM_ELD=y -CONFIG_SND_PCM_IEC958=y -CONFIG_SND_DMAENGINE_PCM=y -CONFIG_SND_HWDEP=y -CONFIG_SND_SEQ_DEVICE=y -CONFIG_SND_RAWMIDI=y -CONFIG_SND_JACK=y -CONFIG_SND_JACK_INPUT_DEV=y -# CONFIG_SND_OSSEMUL is not set -CONFIG_SND_PCM_TIMER=y CONFIG_SND_HRTIMER=y CONFIG_SND_DYNAMIC_MINORS=y -CONFIG_SND_MAX_CARDS=32 # CONFIG_SND_SUPPORT_OLD_API is not set -CONFIG_SND_PROC_FS=y -CONFIG_SND_VERBOSE_PROCFS=y -# CONFIG_SND_VERBOSE_PRINTK is not set -# CONFIG_SND_DEBUG is not set +# CONFIG_SND_VERBOSE_PROCFS is not set +CONFIG_SND_VERBOSE_PRINTK=y CONFIG_SND_SEQUENCER=y CONFIG_SND_SEQ_DUMMY=y -CONFIG_SND_SEQ_HRTIMER_DEFAULT=y -CONFIG_SND_SEQ_MIDI_EVENT=y -CONFIG_SND_SEQ_MIDI=y -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 +# CONFIG_SND_DRIVERS is not set # CONFIG_SND_PCI is not set - -# -# HD-Audio -# -CONFIG_SND_HDA_PREALLOC_SIZE=64 # 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_USB_POD is not set -# CONFIG_SND_USB_PODHD is not set -# CONFIG_SND_USB_TONEPORT is not set -# CONFIG_SND_USB_VARIAX is not set CONFIG_SND_SOC=y -CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y -# CONFIG_SND_SOC_AMD_ACP is not set -# CONFIG_SND_ATMEL_SOC is not set -# CONFIG_SND_DESIGNWARE_I2S is not set - -# -# SoC Audio for Freescale CPUs -# - -# -# Common SoC Audio options for Freescale CPUs: -# -# CONFIG_SND_SOC_FSL_ASRC is not set -# CONFIG_SND_SOC_FSL_SAI is not set -# CONFIG_SND_SOC_FSL_SSI is not set -# CONFIG_SND_SOC_FSL_SPDIF is not set -# CONFIG_SND_SOC_FSL_ESAI is not set -# CONFIG_SND_SOC_IMX_AUDMUX is not set -# CONFIG_SND_I2S_HI6210_I2S is not set -# CONFIG_SND_SOC_IMG is not set +CONFIG_SND_SOC_FSL_SAI=y CONFIG_SND_SOC_ROCKCHIP=y -CONFIG_SND_SOC_ROCKCHIP_PREALLOC_BUFFER_SIZE=512 -# CONFIG_SND_SOC_ROCKCHIP_AUDIO_PWM is not set -CONFIG_SND_SOC_ROCKCHIP_I2S=y CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=y CONFIG_SND_SOC_ROCKCHIP_PDM=y CONFIG_SND_SOC_ROCKCHIP_SPDIF=y -# CONFIG_SND_SOC_ROCKCHIP_VAD is not set -CONFIG_SND_SOC_ROCKCHIP_MAX98090=y -CONFIG_SND_SOC_ROCKCHIP_MULTICODECS=y -CONFIG_SND_SOC_ROCKCHIP_RT5645=y -# CONFIG_SND_SOC_ROCKCHIP_RT5651 is not set -CONFIG_SND_SOC_ROCKCHIP_RT5651_RK628=y -# CONFIG_SND_SOC_RK3288_HDMI_ANALOG is not set -# CONFIG_SND_SOC_RK3399_GRU_SOUND is not set - -# -# STMicroelectronics STM32 SOC audio support -# -# CONFIG_SND_SOC_XTFPGA_I2S is not set -# CONFIG_ZX_TDM is not set -CONFIG_SND_SOC_I2C_AND_SPI=y - -# -# CODEC drivers -# -# CONFIG_SND_SOC_AC97_CODEC is not set -# CONFIG_SND_SOC_ADAU1701 is not set -# CONFIG_SND_SOC_ADAU1761_I2C is not set -# CONFIG_SND_SOC_ADAU1761_SPI is not set -# CONFIG_SND_SOC_ADAU7002 is not set -# CONFIG_SND_SOC_AK4104 is not set -# CONFIG_SND_SOC_AK4458 is not set -# CONFIG_SND_SOC_AK4554 is not set -# CONFIG_SND_SOC_AK4613 is not set -# CONFIG_SND_SOC_AK4642 is not set -# CONFIG_SND_SOC_AK5386 is not set -# CONFIG_SND_SOC_AK5558 is not set -# CONFIG_SND_SOC_ALC5623 is not set -# CONFIG_SND_SOC_BD28623 is not set -# CONFIG_SND_SOC_BT_SCO is not set -# CONFIG_SND_SOC_CS35L32 is not set -# CONFIG_SND_SOC_CS35L33 is not set -# CONFIG_SND_SOC_CS35L34 is not set -# CONFIG_SND_SOC_CS35L35 is not set -# CONFIG_SND_SOC_CS42L42 is not set -# CONFIG_SND_SOC_CS42L51_I2C is not set -# CONFIG_SND_SOC_CS42L52 is not set -# CONFIG_SND_SOC_CS42L56 is not set -# CONFIG_SND_SOC_CS42L73 is not set -# CONFIG_SND_SOC_CS4265 is not set -# CONFIG_SND_SOC_CS4270 is not set -# CONFIG_SND_SOC_CS4271_I2C is not set -# CONFIG_SND_SOC_CS4271_SPI is not set -# CONFIG_SND_SOC_CS42XX8_I2C is not set -# CONFIG_SND_SOC_CS43130 is not set -# CONFIG_SND_SOC_CS4349 is not set -# CONFIG_SND_SOC_CS53L30 is not set -# CONFIG_SND_SOC_CX2072X is not set -CONFIG_SND_SOC_DUMMY_CODEC=y -CONFIG_SND_SOC_HDMI_CODEC=y -# CONFIG_SND_SOC_ES7134 is not set -CONFIG_SND_SOC_ES7202=y -# CONFIG_SND_SOC_ES7210 is not set -# CONFIG_SND_SOC_ES7241 is not set -CONFIG_SND_SOC_ES7243E=y -CONFIG_SND_SOC_ES8311=y +CONFIG_SND_SOC_RK3288_HDMI_ANALOG=y CONFIG_SND_SOC_ES8316=y -# CONFIG_SND_SOC_ES8323 is not set -# CONFIG_SND_SOC_ES8328_I2C is not set -# CONFIG_SND_SOC_ES8328_SPI is not set -# CONFIG_SND_SOC_ES8396 is not set -# CONFIG_SND_SOC_GTM601 is not set -# CONFIG_SND_SOC_INNO_RK3036 is not set CONFIG_SND_SOC_MAX98090=y -# CONFIG_SND_SOC_MAX98504 is not set -# CONFIG_SND_SOC_MAX9867 is not set -# CONFIG_SND_SOC_MAX98927 is not set -# CONFIG_SND_SOC_MAX98373 is not set -# CONFIG_SND_SOC_MAX9860 is not set -# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set -# CONFIG_SND_SOC_PCM1681 is not set -# CONFIG_SND_SOC_PCM1789_I2C is not set -# CONFIG_SND_SOC_PCM179X_I2C is not set -# CONFIG_SND_SOC_PCM179X_SPI is not set -# CONFIG_SND_SOC_PCM186X_I2C is not set -# CONFIG_SND_SOC_PCM186X_SPI is not set -# CONFIG_SND_SOC_PCM3168A_I2C is not set -# CONFIG_SND_SOC_PCM3168A_SPI is not set -# CONFIG_SND_SOC_PCM512x_I2C is not set -# CONFIG_SND_SOC_PCM512x_SPI is not set -# CONFIG_SND_SOC_RK312X is not set -# CONFIG_SND_SOC_RK3228 is not set -CONFIG_SND_SOC_RK3308=y -CONFIG_SND_SOC_RK3328=y CONFIG_SND_SOC_RK817=y -CONFIG_SND_SOC_RK_CODEC_DIGITAL=y -CONFIG_SND_SOC_RL6231=y -CONFIG_SND_SOC_RT5616=y -# CONFIG_SND_SOC_RT5631 is not set -CONFIG_SND_SOC_RT5640=y -CONFIG_SND_SOC_RT5645=y -CONFIG_SND_SOC_RT5651=y -# CONFIG_SND_SOC_SGTL5000 is not set -# CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set -# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set +CONFIG_SND_SOC_SIMPLE_AMPLIFIER=y CONFIG_SND_SOC_SPDIF=y -# CONFIG_SND_SOC_SSM2305 is not set -# CONFIG_SND_SOC_SSM2602_SPI is not set -# CONFIG_SND_SOC_SSM2602_I2C is not set -# CONFIG_SND_SOC_SSM4567 is not set -# CONFIG_SND_SOC_STA32X is not set -# CONFIG_SND_SOC_STA350 is not set -# CONFIG_SND_SOC_STI_SAS is not set -# CONFIG_SND_SOC_TAS2552 is not set -# CONFIG_SND_SOC_TAS5086 is not set -# CONFIG_SND_SOC_TAS571X is not set -# CONFIG_SND_SOC_TAS5720 is not set -# CONFIG_SND_SOC_TAS6424 is not set -# CONFIG_SND_SOC_TDA7419 is not set -# CONFIG_SND_SOC_TFA9879 is not set -# CONFIG_SND_SOC_TLV320AIC23_I2C is not set -# CONFIG_SND_SOC_TLV320AIC23_SPI is not set -# CONFIG_SND_SOC_TLV320AIC31XX is not set -# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set -# CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set -# CONFIG_SND_SOC_TLV320AIC3X is not set CONFIG_SND_SOC_TS3A227E=y -# CONFIG_SND_SOC_TSCS42XX is not set -# CONFIG_SND_SOC_TSCS454 is not set -# CONFIG_SND_SOC_WM8510 is not set -# CONFIG_SND_SOC_WM8523 is not set -# CONFIG_SND_SOC_WM8524 is not set -# CONFIG_SND_SOC_WM8580 is not set -# CONFIG_SND_SOC_WM8711 is not set -# CONFIG_SND_SOC_WM8728 is not set -# CONFIG_SND_SOC_WM8731 is not set -# CONFIG_SND_SOC_WM8737 is not set -# CONFIG_SND_SOC_WM8741 is not set -# CONFIG_SND_SOC_WM8750 is not set -# CONFIG_SND_SOC_WM8753 is not set -# CONFIG_SND_SOC_WM8770 is not set -# CONFIG_SND_SOC_WM8776 is not set -# CONFIG_SND_SOC_WM8782 is not set -# CONFIG_SND_SOC_WM8804_I2C is not set -# CONFIG_SND_SOC_WM8804_SPI is not set -# CONFIG_SND_SOC_WM8903 is not set -# CONFIG_SND_SOC_WM8960 is not set -# CONFIG_SND_SOC_WM8962 is not set -# CONFIG_SND_SOC_WM8974 is not set -# CONFIG_SND_SOC_WM8978 is not set -# CONFIG_SND_SOC_WM8985 is not set -# CONFIG_SND_SOC_ZX_AUD96P22 is not set -# CONFIG_SND_SOC_MAX9759 is not set -# CONFIG_SND_SOC_MT6351 is not set -# CONFIG_SND_SOC_NAU8540 is not set -# CONFIG_SND_SOC_NAU8810 is not set -# CONFIG_SND_SOC_NAU8824 is not set -# CONFIG_SND_SOC_TPA6130A2 is not set -CONFIG_SND_SIMPLE_CARD_UTILS=y CONFIG_SND_SIMPLE_CARD=y -# CONFIG_SND_SIMPLE_SCU_CARD is not set -# CONFIG_SND_AUDIO_GRAPH_CARD is not set -# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set - -# -# HID support -# -CONFIG_HID=y +CONFIG_SND_AUDIO_GRAPH_CARD=y +CONFIG_SND_AUDIO_GRAPH_CARD2=y +CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE=y +CONFIG_SND_TEST_COMPONENT=y CONFIG_HID_BATTERY_STRENGTH=y CONFIG_HIDRAW=y CONFIG_UHID=y -CONFIG_HID_GENERIC=y - -# -# Special HID drivers -# -# CONFIG_HID_A4TECH is not set -# CONFIG_HID_ACCUTOUCH is not set -# CONFIG_HID_ACRUX is not set -# CONFIG_HID_APPLE is not set -# CONFIG_HID_APPLEIR is not set -# CONFIG_HID_ASUS is not set -# CONFIG_HID_AUREAL is not set -# CONFIG_HID_BELKIN is not set -# CONFIG_HID_BETOP_FF is not set -# CONFIG_HID_CHERRY is not set -# CONFIG_HID_CHICONY is not set -# CONFIG_HID_CORSAIR is not set -# CONFIG_HID_COUGAR is not set -# CONFIG_HID_PRODIKEYS is not set -# CONFIG_HID_CMEDIA is not set -# CONFIG_HID_CP2112 is not set -# CONFIG_HID_CYPRESS is not set -# CONFIG_HID_DRAGONRISE is not set -# CONFIG_HID_EMS_FF is not set -# CONFIG_HID_ELAN is not set -# CONFIG_HID_ELECOM is not set -# CONFIG_HID_ELO is not set -# CONFIG_HID_EZKEY is not set -# CONFIG_HID_GEMBIRD is not set -# CONFIG_HID_GFRM is not set -# CONFIG_HID_HOLTEK is not set -# CONFIG_HID_GOOGLE_HAMMER is not set -# CONFIG_HID_GT683R is not set -# CONFIG_HID_KEYTOUCH is not set -# CONFIG_HID_KYE is not set -# CONFIG_HID_UCLOGIC is not set -# CONFIG_HID_WALTOP is not set -# CONFIG_HID_GYRATION is not set -# CONFIG_HID_ICADE is not set -# CONFIG_HID_ITE is not set -# CONFIG_HID_JABRA is not set -# CONFIG_HID_TWINHAN is not set +CONFIG_HID_A4TECH=y +CONFIG_HID_ACRUX=y +CONFIG_HID_APPLE=y +CONFIG_HID_APPLEIR=y +CONFIG_HID_AUREAL=y +CONFIG_HID_BELKIN=y +CONFIG_HID_BETOP_FF=y +CONFIG_HID_CHERRY=y +CONFIG_HID_CHICONY=y +CONFIG_HID_CORSAIR=y +CONFIG_HID_PRODIKEYS=y +CONFIG_HID_CP2112=y +CONFIG_HID_CYPRESS=y +CONFIG_HID_DRAGONRISE=y +CONFIG_DRAGONRISE_FF=y +CONFIG_HID_EMS_FF=y +CONFIG_HID_ELECOM=y +CONFIG_HID_ELO=y +CONFIG_HID_EZKEY=y +CONFIG_HID_GEMBIRD=y +CONFIG_HID_GFRM=y +CONFIG_HID_HOLTEK=y +CONFIG_HOLTEK_FF=y +CONFIG_HID_GT683R=y +CONFIG_HID_KEYTOUCH=y +CONFIG_HID_KYE=y +CONFIG_HID_UCLOGIC=y +CONFIG_HID_WALTOP=y +CONFIG_HID_GYRATION=y +CONFIG_HID_ICADE=y +CONFIG_HID_TWINHAN=y CONFIG_HID_KENSINGTON=y -# CONFIG_HID_LCPOWER is not set -# CONFIG_HID_LED is not set -# CONFIG_HID_LENOVO is not set -# CONFIG_HID_LOGITECH is not set -# CONFIG_HID_MAGICMOUSE is not set -# CONFIG_HID_MAYFLASH is not set -# CONFIG_HID_REDRAGON is not set -# CONFIG_HID_MICROSOFT is not set -# CONFIG_HID_MONTEREY is not set +CONFIG_HID_LCPOWER=y +CONFIG_HID_LENOVO=y +CONFIG_HID_LOGITECH=y +CONFIG_HID_LOGITECH_DJ=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGIG940_FF=y +CONFIG_HID_MAGICMOUSE=y +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y CONFIG_HID_MULTITOUCH=y -# CONFIG_HID_NINTENDO is not set -# CONFIG_HID_NTI is not set -# CONFIG_HID_NTRIG is not set -# CONFIG_HID_ORTEK is not set -# CONFIG_HID_PANTHERLORD is not set -# CONFIG_HID_PENMOUNT is not set -# CONFIG_HID_PETALYNX is not set -# CONFIG_HID_PICOLCD is not set -# CONFIG_HID_PLANTRONICS is not set -# CONFIG_HID_PRIMAX is not set -# CONFIG_HID_RETRODE is not set -# CONFIG_HID_ROCCAT is not set -# CONFIG_HID_SAITEK is not set -# CONFIG_HID_SAMSUNG is not set -# CONFIG_HID_SONY is not set -# CONFIG_HID_SPEEDLINK is not set -# CONFIG_HID_STEAM is not set -# CONFIG_HID_STEELSERIES is not set -# CONFIG_HID_SUNPLUS is not set -# CONFIG_HID_RMI is not set -# CONFIG_HID_GREENASIA is not set -# CONFIG_HID_SMARTJOYPLUS is not set -# CONFIG_HID_TIVO is not set -# CONFIG_HID_TOPSEED is not set -# CONFIG_HID_THINGM is not set -# CONFIG_HID_THRUSTMASTER is not set -# CONFIG_HID_UDRAW_PS3 is not set -# CONFIG_HID_WACOM is not set -# CONFIG_HID_WIIMOTE is not set -# CONFIG_HID_XINMO is not set -# CONFIG_HID_ZEROPLUS is not set -# CONFIG_HID_ZYDACRON is not set -# CONFIG_HID_SENSOR_HUB is not set -# CONFIG_HID_ALPS is not set - -# -# USB HID support -# -CONFIG_USB_HID=y -# CONFIG_HID_PID is not set +CONFIG_HID_NTRIG=y +CONFIG_HID_ORTEK=y +CONFIG_HID_PANTHERLORD=y +CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PENMOUNT=y +CONFIG_HID_PETALYNX=y +CONFIG_HID_PLANTRONICS=y +CONFIG_HID_PRIMAX=y +CONFIG_HID_ROCCAT=y +CONFIG_HID_SAITEK=y +CONFIG_HID_SAMSUNG=y +CONFIG_HID_SONY=y +CONFIG_HID_SPEEDLINK=y +CONFIG_HID_STEELSERIES=y +CONFIG_HID_SUNPLUS=y +CONFIG_HID_RMI=y +CONFIG_HID_GREENASIA=y +CONFIG_GREENASIA_FF=y +CONFIG_HID_SMARTJOYPLUS=y +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_HID_TIVO=y +CONFIG_HID_TOPSEED=y +CONFIG_HID_THINGM=y +CONFIG_HID_THRUSTMASTER=y +CONFIG_THRUSTMASTER_FF=y +CONFIG_HID_WACOM=y +CONFIG_HID_WIIMOTE=y +CONFIG_HID_XINMO=y +CONFIG_HID_ZEROPLUS=y +CONFIG_ZEROPLUS_FF=y +CONFIG_HID_ZYDACRON=y +CONFIG_HID_SENSOR_HUB=y +CONFIG_HID_SENSOR_CUSTOM_SENSOR=y +CONFIG_HID_ALPS=y CONFIG_USB_HIDDEV=y - -# -# I2C HID support -# -CONFIG_I2C_HID=y -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_PCI=y +CONFIG_I2C_HID_OF_GOODIX=y CONFIG_USB_ANNOUNCE_NEW_DEVICES=y - -# -# Miscellaneous USB options -# # CONFIG_USB_DEFAULT_PERSIST is not set -# CONFIG_USB_DYNAMIC_MINORS is not set CONFIG_USB_OTG=y -# CONFIG_USB_OTG_WHITELIST is not set -# CONFIG_USB_OTG_BLACKLIST_HUB is not set -# CONFIG_USB_OTG_FSM is not set -# CONFIG_USB_LEDS_TRIGGER_USBPORT is not set +CONFIG_USB_OTG_PRODUCTLIST=y +CONFIG_USB_OTG_FSM=y +CONFIG_USB_LEDS_TRIGGER_USBPORT=y CONFIG_USB_MON=y -# CONFIG_USB_WUSB_CBAF is not set - -# -# USB Host Controller Drivers -# -# CONFIG_USB_C67X00_HCD is not set CONFIG_USB_XHCI_HCD=y -# CONFIG_USB_XHCI_DBGCAP is not set -CONFIG_USB_XHCI_PCI=y -CONFIG_USB_XHCI_PLATFORM=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y -CONFIG_USB_EHCI_TT_NEWSCHED=y -CONFIG_USB_EHCI_PCI=y CONFIG_USB_EHCI_HCD_PLATFORM=y -# CONFIG_USB_OXU210HP_HCD is not set -# CONFIG_USB_ISP116X_HCD is not set -# CONFIG_USB_FOTG210_HCD is not set -# CONFIG_USB_MAX3421_HCD is not set CONFIG_USB_OHCI_HCD=y # CONFIG_USB_OHCI_HCD_PCI is not set CONFIG_USB_OHCI_HCD_PLATFORM=y -# CONFIG_USB_UHCI_HCD is not set -# CONFIG_USB_SL811_HCD is not set -# CONFIG_USB_R8A66597_HCD is not set -# CONFIG_USB_HCD_TEST_MODE is not set - -# -# USB Device Class drivers -# CONFIG_USB_ACM=y -# CONFIG_USB_PRINTER is not set -CONFIG_USB_WDM=y -# 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 is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_ISD200 is not set -# CONFIG_USB_STORAGE_USBAT is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_SDDR55 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set -# CONFIG_USB_STORAGE_ALAUDA is not set -# CONFIG_USB_STORAGE_ONETOUCH is not set -# CONFIG_USB_STORAGE_KARMA is not set -# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set -# CONFIG_USB_STORAGE_ENE_UB6250 is not set +CONFIG_USB_STORAGE_REALTEK=y +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=y CONFIG_USB_UAS=y - -# -# 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=y -# CONFIG_USB_DWC3_HOST is not set -# CONFIG_USB_DWC3_GADGET is not set -CONFIG_USB_DWC3_DUAL_ROLE=y - -# -# Platform Glue Driver Support -# -CONFIG_USB_DWC3_HAPS=y -CONFIG_USB_DWC3_OF_SIMPLE=y -CONFIG_USB_DWC3_ROCKCHIP_INNO=y CONFIG_USB_DWC2=y -# CONFIG_USB_DWC2_HOST is not set - -# -# Gadget/Dual-role mode requires USB Gadget support to be enabled -# -# CONFIG_USB_DWC2_PERIPHERAL is not set -CONFIG_USB_DWC2_DUAL_ROLE=y -# CONFIG_USB_DWC2_PCI is not set -# CONFIG_USB_DWC2_DEBUG is not set -# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set -# CONFIG_USB_CHIPIDEA is not set -# CONFIG_USB_ISP1760 is not set - -# -# USB port drivers -# CONFIG_USB_SERIAL=y -CONFIG_USB_SERIAL_CONSOLE=y CONFIG_USB_SERIAL_GENERIC=y -# CONFIG_USB_SERIAL_SIMPLE is not set -# CONFIG_USB_SERIAL_AIRCABLE is not set -# CONFIG_USB_SERIAL_ARK3116 is not set -# CONFIG_USB_SERIAL_BELKIN is not set CONFIG_USB_SERIAL_CH341=y -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set CONFIG_USB_SERIAL_CP210X=y -# CONFIG_USB_SERIAL_CYPRESS_M8 is not set -# CONFIG_USB_SERIAL_EMPEG is not set CONFIG_USB_SERIAL_FTDI_SIO=y -# CONFIG_USB_SERIAL_VISOR is not set -# CONFIG_USB_SERIAL_IPAQ is not set -# CONFIG_USB_SERIAL_IR is not set -# CONFIG_USB_SERIAL_EDGEPORT is not set -# CONFIG_USB_SERIAL_EDGEPORT_TI is not set -# CONFIG_USB_SERIAL_F81232 is not set -# CONFIG_USB_SERIAL_F8153X is not set -# CONFIG_USB_SERIAL_GARMIN is not set -# CONFIG_USB_SERIAL_IPW is not set -# CONFIG_USB_SERIAL_IUU is not set -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set CONFIG_USB_SERIAL_KEYSPAN=y -# CONFIG_USB_SERIAL_KLSI is not set -# CONFIG_USB_SERIAL_KOBIL_SCT is not set -# CONFIG_USB_SERIAL_MCT_U232 is not set -# CONFIG_USB_SERIAL_METRO is not set -# CONFIG_USB_SERIAL_MOS7720 is not set -# CONFIG_USB_SERIAL_MOS7840 is not set -# CONFIG_USB_SERIAL_MXUPORT is not set -# CONFIG_USB_SERIAL_NAVMAN is not set CONFIG_USB_SERIAL_PL2303=y CONFIG_USB_SERIAL_OTI6858=y -# CONFIG_USB_SERIAL_QCAUX is not set CONFIG_USB_SERIAL_QUALCOMM=y -# CONFIG_USB_SERIAL_SPCP8X5 is not set -# CONFIG_USB_SERIAL_SAFE is not set CONFIG_USB_SERIAL_SIERRAWIRELESS=y -# CONFIG_USB_SERIAL_SYMBOL is not set -# CONFIG_USB_SERIAL_TI is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_XIRCOM is not set -CONFIG_USB_SERIAL_WWAN=y CONFIG_USB_SERIAL_OPTION=y -# CONFIG_USB_SERIAL_OMNINET is not set -# CONFIG_USB_SERIAL_OPTICON is not set -# CONFIG_USB_SERIAL_XSENS_MT is not set -# CONFIG_USB_SERIAL_WISHBONE is not set -# CONFIG_USB_SERIAL_SSU100 is not set -# CONFIG_USB_SERIAL_QT2 is not set -# CONFIG_USB_SERIAL_UPD78F0730 is not set -# CONFIG_USB_SERIAL_DEBUG is not set - -# -# 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_LEGOTOWER is not set -# CONFIG_USB_LCD is not set -# CONFIG_USB_CYPRESS_CY7C63 is not set -# CONFIG_USB_CYTHERM is not set -# CONFIG_USB_IDMOUSE is not set -# CONFIG_USB_FTDI_ELAN is not set -# CONFIG_USB_APPLEDISPLAY is not set -# CONFIG_USB_SISUSBVGA is not set -# CONFIG_USB_LD is not set -# CONFIG_USB_TRANCEVIBRATOR is not set -# CONFIG_USB_IOWARRIOR is not set -# CONFIG_USB_TEST is not set -# CONFIG_USB_EHSET_TEST_FIXTURE is not set -# CONFIG_USB_ISIGHTFW is not set -# CONFIG_USB_YUREX is not set -CONFIG_USB_EZUSB_FX2=y -# CONFIG_USB_HUB_USB251XB is not set -# CONFIG_USB_HSIC_USB3503 is not set -# CONFIG_USB_HSIC_USB4604 is not set -# CONFIG_USB_LINK_LAYER_TEST is not set -# CONFIG_USB_CHAOSKEY is not set - -# -# USB Physical Layer drivers -# -CONFIG_USB_PHY=y -# CONFIG_NOP_USB_XCEIV is not set -# CONFIG_USB_GPIO_VBUS is not set -# CONFIG_USB_ISP1301 is not set -# CONFIG_USB_ULPI is not set +CONFIG_NOP_USB_XCEIV=y CONFIG_USB_GADGET=y -# CONFIG_USB_GADGET_DEBUG is not set CONFIG_USB_GADGET_DEBUG_FILES=y -# CONFIG_USB_GADGET_DEBUG_FS is not set CONFIG_USB_GADGET_VBUS_DRAW=500 -CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 -# CONFIG_U_SERIAL_CONSOLE is not set - -# -# 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_SNP_UDC_PLAT is not set -# CONFIG_USB_M66592 is not set -# CONFIG_USB_BDC_UDC is not set -# CONFIG_USB_AMD5536UDC is not set -# CONFIG_USB_NET2272 is not set -# CONFIG_USB_NET2280 is not set -# CONFIG_USB_GOKU is not set -# CONFIG_USB_EG20T 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_F_FS=y -CONFIG_USB_F_UVC=y +CONFIG_U_SERIAL_CONSOLE=y CONFIG_USB_CONFIGFS=y -CONFIG_USB_CONFIGFS_UEVENT=y -# CONFIG_USB_CONFIGFS_SERIAL is not set CONFIG_USB_CONFIGFS_ACM=y -# CONFIG_USB_CONFIGFS_OBEX is not set -# CONFIG_USB_CONFIGFS_NCM is not set -# CONFIG_USB_CONFIGFS_ECM is not set -# CONFIG_USB_CONFIGFS_ECM_SUBSET is not set -# CONFIG_USB_CONFIGFS_RNDIS is not set -# CONFIG_USB_CONFIGFS_EEM is not set CONFIG_USB_CONFIGFS_MASS_STORAGE=y -# CONFIG_USB_CONFIGFS_F_LB_SS is not set CONFIG_USB_CONFIGFS_F_FS=y -# CONFIG_USB_CONFIGFS_F_ACC is not set -# CONFIG_USB_CONFIGFS_F_AUDIO_SRC is not set -# CONFIG_USB_CONFIGFS_F_UAC1 is not set -# CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set -# CONFIG_USB_CONFIGFS_F_UAC2 is not set -# CONFIG_USB_CONFIGFS_F_MIDI is not set -# CONFIG_USB_CONFIGFS_F_HID is not set CONFIG_USB_CONFIGFS_F_UVC=y -# CONFIG_USB_CONFIGFS_F_PRINTER is not set -# CONFIG_TYPEC is not set -# CONFIG_USB_ROLE_SWITCH is not set -# CONFIG_USB_LED_TRIG is not set -# CONFIG_USB_ULPI_BUS is not set -# CONFIG_UWB is not set -# CONFIG_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=m CONFIG_USB_FUNCTIONFS=m -# CONFIG_USB_FUNCTIONFS_ETH is not set -# CONFIG_USB_FUNCTIONFS_RNDIS is not set -CONFIG_USB_FUNCTIONFS_GENERIC=y CONFIG_USB_MASS_STORAGE=m CONFIG_USB_G_SERIAL=m -# CONFIG_USB_MIDI_GADGET is not set -# CONFIG_USB_G_PRINTER is not set -# CONFIG_USB_CDC_COMPOSITE is not set -# CONFIG_USB_G_ACM_MS is not set -# CONFIG_USB_G_MULTI is not set -# CONFIG_USB_G_HID is not set -# CONFIG_USB_G_DBGP is not set -# CONFIG_USB_G_WEBCAM is not set -# CONFIG_USB_RAW_GADGET is not set - +CONFIG_TYPEC=y +CONFIG_TYPEC_TCPM=y +CONFIG_TYPEC_FUSB302=y +CONFIG_TYPEC_DP_ALTMODE=y CONFIG_MMC=y -CONFIG_PWRSEQ_EMMC=y -# CONFIG_PWRSEQ_SD8787 is not set -CONFIG_PWRSEQ_SIMPLE=y -CONFIG_MMC_BLOCK=y CONFIG_MMC_BLOCK_MINORS=32 -# CONFIG_SDIO_UART is not set CONFIG_MMC_TEST=y -CONFIG_SDIO_KEEPALIVE=y - -# -# MMC/SD/SDIO Host Controller Drivers -# -# CONFIG_MMC_DEBUG is not set -# CONFIG_MMC_ARMMMCI is not set CONFIG_MMC_SDHCI=y -# CONFIG_MMC_SDHCI_PCI is not set CONFIG_MMC_SDHCI_PLTFM=y -CONFIG_MMC_SDHCI_OF_ARASAN=y -# CONFIG_MMC_SDHCI_OF_AT91 is not set CONFIG_MMC_SDHCI_OF_DWCMSHC=y -# CONFIG_MMC_SDHCI_CADENCE is not set -# CONFIG_MMC_SDHCI_F_SDH30 is not set -# CONFIG_MMC_TIFM_SD is not set -# CONFIG_MMC_SPI is not set -# CONFIG_MMC_CB710 is not set -# CONFIG_MMC_VIA_SDMMC is not set CONFIG_MMC_DW=y -CONFIG_MMC_DW_PLTFM=y -# CONFIG_MMC_DW_BLUEFIELD is not set -# CONFIG_MMC_DW_EXYNOS is not set -# CONFIG_MMC_DW_HI3798CV200 is not set -# CONFIG_MMC_DW_K3 is not set -# CONFIG_MMC_DW_PCI is not set CONFIG_MMC_DW_ROCKCHIP=y -# CONFIG_MMC_VUB300 is not set -# CONFIG_MMC_USHC is not set -# CONFIG_MMC_USDHI6ROL0 is not set -CONFIG_MMC_CQHCI=y -# CONFIG_MMC_TOSHIBA_PCI is not set -# CONFIG_MMC_MTK is not set -# CONFIG_MMC_SDHCI_XENON is not set -# CONFIG_MMC_SDHCI_OMAP is not set -# CONFIG_MEMSTICK is not set -CONFIG_NEW_LEDS=y -CONFIG_LEDS_CLASS=y -CONFIG_LEDS_CLASS_FLASH=y -# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set - -# -# LED drivers -# -# CONFIG_LEDS_AAT1290 is not set -# CONFIG_LEDS_AS3645A is not set -# CONFIG_LEDS_BCM6328 is not set -# CONFIG_LEDS_BCM6358 is not set -# CONFIG_LEDS_CR0014114 is not set -# CONFIG_LEDS_LM3530 is not set -# CONFIG_LEDS_LM3642 is not set -# CONFIG_LEDS_LM3692X is not set -# CONFIG_LEDS_LM3601X is not set -# CONFIG_LEDS_PCA9532 is not set +CONFIG_MMC_HSQ=y CONFIG_LEDS_GPIO=y -# CONFIG_LEDS_LP3944 is not set -# CONFIG_LEDS_LP3952 is not set -# CONFIG_LEDS_LP5521 is not set -# CONFIG_LEDS_LP5523 is not set -# CONFIG_LEDS_LP5562 is not set -# CONFIG_LEDS_LP8501 is not set -# CONFIG_LEDS_LP8860 is not set -# CONFIG_LEDS_PCA955X is not set -# CONFIG_LEDS_PCA963X is not set -# CONFIG_LEDS_DAC124S085 is not set -# CONFIG_LEDS_PWM is not set -# CONFIG_LEDS_REGULATOR is not set -# CONFIG_LEDS_BD2802 is not set -# CONFIG_LEDS_LT3593 is not set -# CONFIG_LEDS_TCA6507 is not set -# CONFIG_LEDS_TLC591XX is not set -# CONFIG_LEDS_LM355x is not set -# CONFIG_LEDS_KTD2692 is not set -# CONFIG_LEDS_IS31FL319X is not set +CONFIG_LEDS_PWM=y CONFIG_LEDS_IS31FL32XX=y -CONFIG_LEDS_RGB13H=y - -# -# 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 -# CONFIG_LEDS_MLXREG is not set -# CONFIG_LEDS_USER is not set - -# -# LED Triggers -# -CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_SYSCON=y CONFIG_LEDS_TRIGGER_TIMER=y -# CONFIG_LEDS_TRIGGER_ONESHOT is not set -# CONFIG_LEDS_TRIGGER_DISK is not set -# CONFIG_LEDS_TRIGGER_MTD 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_ACTIVITY 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_LEDS_TRIGGER_PANIC is not set -# CONFIG_LEDS_TRIGGER_NETDEV is not set -# CONFIG_ACCESSIBILITY is not set -# CONFIG_INFINIBAND is not set -CONFIG_EDAC_SUPPORT=y -# CONFIG_EDAC is not set -CONFIG_RTC_LIB=y +CONFIG_LEDS_TRIGGER_ONESHOT=y +CONFIG_LEDS_TRIGGER_DISK=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y CONFIG_RTC_CLASS=y -CONFIG_RTC_HCTOSYS=y -CONFIG_RTC_HCTOSYS_DEVICE="rtc0" -CONFIG_RTC_SYSTOHC=y -CONFIG_RTC_SYSTOHC_DEVICE="rtc0" -# CONFIG_RTC_DEBUG is not set -CONFIG_RTC_NVMEM=y - -# -# RTC interfaces -# -CONFIG_RTC_INTF_SYSFS=y -CONFIG_RTC_INTF_PROC=y -CONFIG_RTC_INTF_DEV=y -# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set -# CONFIG_RTC_DRV_TEST is not set - -# -# I2C RTC drivers -# -# CONFIG_RTC_DRV_ABB5ZES3 is not set -# CONFIG_RTC_DRV_ABX80X is not set -# CONFIG_RTC_DRV_DS1307 is not set -# CONFIG_RTC_DRV_DS1374 is not set -# CONFIG_RTC_DRV_DS1672 is not set -# CONFIG_RTC_DRV_FAKE is not set +# CONFIG_RTC_SYSTOHC is not set +# CONFIG_RTC_INTF_PROC is not set +# CONFIG_RTC_INTF_DEV is not set CONFIG_RTC_DRV_HYM8563=y -# CONFIG_RTC_DRV_MAX6900 is not set CONFIG_RTC_DRV_RK808=y -# CONFIG_RTC_DRV_RK_TIMER 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_ISL12026 is not set -# CONFIG_RTC_DRV_X1205 is not set -# CONFIG_RTC_DRV_PCF8523 is not set -# CONFIG_RTC_DRV_PCF85063 is not set -# CONFIG_RTC_DRV_PCF85363 is not set -# CONFIG_RTC_DRV_PCF8563 is not set -# CONFIG_RTC_DRV_PCF8583 is not set -# CONFIG_RTC_DRV_M41T80 is not set -# CONFIG_RTC_DRV_BQ32K is not set -# CONFIG_RTC_DRV_TPS6586X is not set -# CONFIG_RTC_DRV_S35390A is not set -# CONFIG_RTC_DRV_FM3130 is not set -# CONFIG_RTC_DRV_RX8010 is not set -# CONFIG_RTC_DRV_RX8581 is not set -# CONFIG_RTC_DRV_RX8025 is not set -# CONFIG_RTC_DRV_EM3027 is not set -# CONFIG_RTC_DRV_RV8803 is not set - -# -# SPI RTC drivers -# -# CONFIG_RTC_DRV_M41T93 is not set -# CONFIG_RTC_DRV_M41T94 is not set -# CONFIG_RTC_DRV_DS1302 is not set -# CONFIG_RTC_DRV_DS1305 is not set -# CONFIG_RTC_DRV_DS1343 is not set -# CONFIG_RTC_DRV_DS1347 is not set -# CONFIG_RTC_DRV_DS1390 is not set -# CONFIG_RTC_DRV_MAX6916 is not set -# CONFIG_RTC_DRV_R9701 is not set -# CONFIG_RTC_DRV_RX4581 is not set -# CONFIG_RTC_DRV_RX6110 is not set -# CONFIG_RTC_DRV_RS5C348 is not set -# CONFIG_RTC_DRV_MAX6902 is not set -# CONFIG_RTC_DRV_PCF2123 is not set -# CONFIG_RTC_DRV_MCP795 is not set -CONFIG_RTC_I2C_AND_SPI=y - -# -# SPI and I2C RTC drivers -# -# CONFIG_RTC_DRV_DS3232 is not set -# CONFIG_RTC_DRV_PCF2127 is not set -# CONFIG_RTC_DRV_RV3029C2 is not set - -# -# Platform RTC drivers -# -# CONFIG_RTC_DRV_DS1286 is not set -# CONFIG_RTC_DRV_DS1511 is not set -# CONFIG_RTC_DRV_DS1553 is not set -# CONFIG_RTC_DRV_DS1685_FAMILY is not set -# CONFIG_RTC_DRV_DS1742 is not set -# CONFIG_RTC_DRV_DS2404 is not set -# CONFIG_RTC_DRV_STK17TA8 is not set -# CONFIG_RTC_DRV_M48T86 is not set -# CONFIG_RTC_DRV_M48T35 is not set -# CONFIG_RTC_DRV_M48T59 is not set -# CONFIG_RTC_DRV_MSM6242 is not set -# CONFIG_RTC_DRV_BQ4802 is not set -# CONFIG_RTC_DRV_RP5C01 is not set -# CONFIG_RTC_DRV_V3020 is not set -# CONFIG_RTC_DRV_ZYNQMP is not set -# CONFIG_RTC_DRV_CROS_EC is not set - -# -# on-CPU RTC drivers -# -# CONFIG_RTC_DRV_PL030 is not set -# CONFIG_RTC_DRV_PL031 is not set -# CONFIG_RTC_DRV_FTRTC010 is not set -# CONFIG_RTC_DRV_SNVS is not set -# CONFIG_RTC_DRV_R7301 is not set - -# -# HID Sensor RTC drivers -# -# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set CONFIG_DMADEVICES=y -# CONFIG_DMADEVICES_DEBUG is not set - -# -# DMA Devices -# -CONFIG_DMA_ENGINE=y -CONFIG_DMA_OF=y -# CONFIG_ALTERA_MSGDMA is not set -# CONFIG_AMBA_PL08X is not set -# CONFIG_DW_AXI_DMAC is not set -# CONFIG_FSL_EDMA is not set -# CONFIG_INTEL_IDMA64 is not set -# CONFIG_MV_XOR_V2 is not set CONFIG_PL330_DMA=y -# CONFIG_XILINX_DMA is not set -# CONFIG_XILINX_ZYNQMP_DMA is not set -# CONFIG_QCOM_HIDMA_MGMT is not set -# CONFIG_QCOM_HIDMA is not set -# CONFIG_DW_DMAC is not set -# CONFIG_DW_DMAC_PCI is not set - -# -# DMA Clients -# -# CONFIG_ASYNC_TX_DMA is not set -# CONFIG_DMATEST is not set - -# -# DMABUF options -# -CONFIG_SYNC_FILE=y -# CONFIG_SW_SYNC is not set -# CONFIG_AUXDISPLAY is not set -# CONFIG_UIO is not set -# CONFIG_VFIO is not set -# CONFIG_VIRT_DRIVERS is not set -CONFIG_VIRTIO_MENU=y -# CONFIG_VIRTIO_PCI is not set -# CONFIG_VIRTIO_MMIO is not set - -# -# Microsoft Hyper-V guest support -# +CONFIG_UDMABUF=y +CONFIG_DMABUF_HEAPS=y +CONFIG_DMABUF_HEAPS_SYSTEM=y +# CONFIG_VIRTIO_MENU is not set +# CONFIG_VHOST_MENU is not set CONFIG_STAGING=y -# CONFIG_PRISM2_USB is not set -# CONFIG_COMEDI is not set -# CONFIG_RTL8192U is not set -# CONFIG_RTLLIB is not set -# CONFIG_RTL8723BS is not set -# CONFIG_R8712U is not set -# CONFIG_R8188EU is not set -# CONFIG_R8822BE is not set -# CONFIG_RTS5208 is not set -# CONFIG_VT6655 is not set -# CONFIG_VT6656 is not set - -# -# IIO staging drivers -# - -# -# Accelerometers -# -# CONFIG_ADIS16203 is not set -# CONFIG_ADIS16240 is not set - -# -# Analog to digital converters -# -# CONFIG_AD7606 is not set -# CONFIG_AD7780 is not set -# CONFIG_AD7816 is not set -# CONFIG_AD7192 is not set -# CONFIG_AD7280 is not set - -# -# Analog digital bi-direction converters -# -# CONFIG_ADT7316 is not set - -# -# Capacitance to digital converters -# -# CONFIG_AD7150 is not set -# CONFIG_AD7152 is not set -# CONFIG_AD7746 is not set - -# -# Direct Digital Synthesis -# -# CONFIG_AD9832 is not set -# CONFIG_AD9834 is not set - -# -# Network Analyzer, Impedance Converters -# -# CONFIG_AD5933 is not set - -# -# Active energy metering IC -# -# CONFIG_ADE7854 is not set - -# -# Resolver to digital converters -# -# CONFIG_AD2S90 is not set -# CONFIG_AD2S1210 is not set -# CONFIG_FB_SM750 is not set -# CONFIG_FB_XGI is not set - -# -# Speakup console speech -# -# CONFIG_SPEAKUP is not set -# CONFIG_STAGING_MEDIA is not set - -# -# Android -# -# CONFIG_ASHMEM is not set -# CONFIG_ANDROID_VSOC is not set -# CONFIG_ION is not set -CONFIG_FIQ_DEBUGGER=y -CONFIG_FIQ_DEBUGGER_NO_SLEEP=y -# CONFIG_FIQ_DEBUGGER_WAKEUP_IRQ_ALWAYS_ON is not set -CONFIG_FIQ_DEBUGGER_CONSOLE=y -CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE=y -CONFIG_FIQ_DEBUGGER_TRUST_ZONE=y -# CONFIG_FIQ_DEBUGGER_UART_OVERLAY is not set -CONFIG_RK_CONSOLE_THREAD=y -# CONFIG_STAGING_BOARD is not set -# CONFIG_LTE_GDM724X is not set -# CONFIG_DGNC is not set -# CONFIG_GS_FPGABOOT is not set -# CONFIG_UNISYSSPAR is not set -# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set -# CONFIG_FB_TFT is not set -# CONFIG_WILC1000_SDIO is not set -# CONFIG_WILC1000_SPI is not set -# CONFIG_MOST is not set -# CONFIG_KS7010 is not set -# CONFIG_GREYBUS is not set -# CONFIG_PI433 is not set -# CONFIG_MTK_MMC is not set - -# -# Gasket devices -# -# CONFIG_STAGING_GASKET_FRAMEWORK is not set -# CONFIG_XIL_AXIS_FIFO is not set -# CONFIG_EROFS_FS is not set -# CONFIG_POWERVR_ROGUE_N is not set -# CONFIG_GOLDFISH is not set +CONFIG_RTL8723BS=m +CONFIG_R8712U=m +CONFIG_STAGING_MEDIA=y +CONFIG_VIDEO_ROCKCHIP_VDEC=y CONFIG_CHROME_PLATFORMS=y -# CONFIG_CROS_EC_I2C is not set -# CONFIG_CROS_EC_SPI is not set -CONFIG_CROS_EC_PROTO=y -CONFIG_CLKDEV_LOOKUP=y -CONFIG_HAVE_CLK_PREPARE=y -CONFIG_COMMON_CLK=y - -# -# Common Clock Framework -# -CONFIG_COMMON_CLK_DEBUGFS=y -# CONFIG_COMMON_CLK_PROCFS is not set -# CONFIG_COMMON_CLK_VERSATILE is not set -# CONFIG_CLK_HSDK is not set -# CONFIG_COMMON_CLK_MAX9485 is not set +# CONFIG_SURFACE_PLATFORMS is not set CONFIG_COMMON_CLK_RK808=y CONFIG_COMMON_CLK_SCMI=y -# CONFIG_COMMON_CLK_SI5351 is not set -# CONFIG_COMMON_CLK_SI514 is not set -# CONFIG_COMMON_CLK_SI544 is not set -# CONFIG_COMMON_CLK_SI570 is not set -# CONFIG_COMMON_CLK_CDCE706 is not set -# CONFIG_COMMON_CLK_CDCE925 is not set -# CONFIG_COMMON_CLK_CS2000_CP is not set -# CONFIG_CLK_QORIQ is not set +CONFIG_COMMON_CLK_SCPI=y CONFIG_COMMON_CLK_XGENE=y -# CONFIG_COMMON_CLK_PWM is not set -# CONFIG_COMMON_CLK_VC5 is not set -# CONFIG_ROCKCHIP_CLK_COMPENSATION is not set -CONFIG_COMMON_CLK_ROCKCHIP_REGMAP=y -CONFIG_CLK_RK618=y -CONFIG_CLK_RK628=y -# CONFIG_HWSPINLOCK is not set - -# -# Clock Source drivers -# -CONFIG_TIMER_OF=y -CONFIG_TIMER_PROBE=y -CONFIG_CLKSRC_MMIO=y -CONFIG_ROCKCHIP_TIMER=y -CONFIG_ARM_ARCH_TIMER=y -CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y -CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y -CONFIG_FSL_ERRATUM_A008585=y -CONFIG_HISILICON_ERRATUM_161010101=y -CONFIG_ARM64_ERRATUM_858921=y -# CONFIG_ARM_TIMER_SP804 is not set +CONFIG_COMMON_CLK_PWM=y +CONFIG_COMMON_CLK_FIXED_MMIO=y +# CONFIG_CLK_RK3308 is not set +# CONFIG_CLK_RK3328 is not set +# CONFIG_CLK_RK3368 is not set +# CONFIG_CLK_RK3399 is not set +# CONFIG_FSL_ERRATUM_A008585 is not set +# CONFIG_HISILICON_ERRATUM_161010101 is not set +# CONFIG_ARM64_ERRATUM_858921 is not set CONFIG_MAILBOX=y -# CONFIG_ARM_MHU is not set -# CONFIG_PLATFORM_MHU is not set -# CONFIG_PL320_MBOX is not set -# CONFIG_ROCKCHIP_MBOX is not set -# CONFIG_ALTERA_MBOX is not set -# CONFIG_MAILBOX_TEST is not set -# CONFIG_RK3368_MBOX is not set -CONFIG_IOMMU_API=y -CONFIG_IOMMU_SUPPORT=y - -# -# Generic IOMMU Pagetable Support -# -# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set -# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set -# CONFIG_IOMMU_DEBUGFS is not set -# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set -CONFIG_IOMMU_IOVA=y -CONFIG_OF_IOMMU=y -CONFIG_IOMMU_DMA=y +CONFIG_ARM_MHU=y +CONFIG_PLATFORM_MHU=y +CONFIG_ROCKCHIP_MBOX=y CONFIG_ROCKCHIP_IOMMU=y -# CONFIG_ARM_SMMU is not set -# CONFIG_ARM_SMMU_V3 is not set - -# -# Remoteproc drivers -# -# CONFIG_REMOTEPROC is not set - -# -# Rpmsg drivers -# -# CONFIG_RPMSG_QCOM_GLINK_RPM is not set -# CONFIG_RPMSG_VIRTIO is not set - -# -# SOC (System On Chip) specific Drivers -# - -# -# Amlogic SoC drivers -# - -# -# Broadcom SoC drivers -# -# CONFIG_SOC_BRCMSTB is not set - -# -# NXP/Freescale QorIQ SoC drivers -# - -# -# i.MX SoC drivers -# - -# -# Qualcomm SoC drivers -# - -# -# Rockchip CPU selection -# -CONFIG_CPU_PX30=y -CONFIG_CPU_RK1808=y -# CONFIG_CPU_RK3308 is not set -CONFIG_CPU_RK3328=y -# CONFIG_CPU_RK3368 is not set -CONFIG_CPU_RK3399=y -CONFIG_CPU_RK3568=y -CONFIG_ANDROID_VERSION=0x08010000 -CONFIG_ROCKCHIP_CPUINFO=y -CONFIG_ROCKCHIP_GRF=y -# CONFIG_ROCKCHIP_HW_DECOMPRESS is not set -CONFIG_ROCKCHIP_IPA=y -CONFIG_ROCKCHIP_OPP=y +CONFIG_ARM_SMMU=y +CONFIG_ARM_SMMU_V3=y +CONFIG_ROCKCHIP_IODOMAIN=y CONFIG_ROCKCHIP_PM_DOMAINS=y -CONFIG_ROCKCHIP_PVTM=y -# CONFIG_ROCKCHIP_RAMDISK is not set -CONFIG_ROCKCHIP_SUSPEND_MODE=y -CONFIG_ROCKCHIP_SYSTEM_MONITOR=y -CONFIG_ROCKCHIP_MTD_VENDOR_STORAGE=y -CONFIG_ROCKCHIP_VENDOR_STORAGE_UPDATE_LOADER=y -CONFIG_ROCKCHIP_DEBUG=y -# CONFIG_ROCKCHIP_LOW_PERFORMANCE is not set -# CONFIG_ROCKCHIP_THUNDER_BOOT is not set -CONFIG_ROCKCHIP_SCHED_PERFORMANCE_BIAS=y -# CONFIG_SOC_TI is not set - -# -# Xilinx SoC drivers -# -# CONFIG_XILINX_VCU is not set -CONFIG_PM_DEVFREQ=y - -# -# DEVFREQ Governors -# -CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y CONFIG_DEVFREQ_GOV_PERFORMANCE=y CONFIG_DEVFREQ_GOV_POWERSAVE=y -CONFIG_DEVFREQ_GOV_USERSPACE=y -# CONFIG_DEVFREQ_GOV_PASSIVE is not set - -# -# DEVFREQ Drivers -# -CONFIG_ARM_ROCKCHIP_BUS_DEVFREQ=y -CONFIG_ARM_ROCKCHIP_DMC_DEVFREQ=y -# CONFIG_ARM_ROCKCHIP_DMC_DEBUG is not set -CONFIG_PM_DEVFREQ_EVENT=y -CONFIG_DEVFREQ_EVENT_ROCKCHIP_DFI=y -# CONFIG_DEVFREQ_EVENT_ROCKCHIP_NOCP is not set -CONFIG_EXTCON=y - -# -# Extcon Device Drivers -# -# CONFIG_EXTCON_ADC_JACK is not set -# CONFIG_EXTCON_GPIO is not set -# CONFIG_EXTCON_MAX3355 is not set -# CONFIG_EXTCON_RT8973A is not set -# CONFIG_EXTCON_SM5502 is not set -# CONFIG_EXTCON_USB_GPIO is not set -# CONFIG_EXTCON_USBC_CROS_EC is not set +CONFIG_ARM_RK3399_DMC_DEVFREQ=y CONFIG_MEMORY=y -# CONFIG_ARM_PL172_MPMC is not set CONFIG_IIO=y -CONFIG_IIO_BUFFER=y -# CONFIG_IIO_BUFFER_CB is not set -# CONFIG_IIO_BUFFER_HW_CONSUMER is not set -CONFIG_IIO_KFIFO_BUF=y -# CONFIG_IIO_CONFIGFS is not set -CONFIG_IIO_TRIGGER=y -CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 -# CONFIG_IIO_SW_DEVICE is not set -# CONFIG_IIO_SW_TRIGGER is not set - -# -# Accelerometers -# -# CONFIG_ADIS16201 is not set -# CONFIG_ADIS16209 is not set -# CONFIG_ADXL345_I2C is not set -# CONFIG_ADXL345_SPI is not set -# CONFIG_BMA180 is not set -# CONFIG_BMA220 is not set -# CONFIG_BMC150_ACCEL is not set -# CONFIG_DA280 is not set -# CONFIG_DA311 is not set -# CONFIG_DMARD06 is not set -# CONFIG_DMARD09 is not set -# CONFIG_DMARD10 is not set -# CONFIG_IIO_CROS_EC_ACCEL_LEGACY is not set -# CONFIG_IIO_ST_ACCEL_3AXIS is not set -# CONFIG_KXSD9 is not set -# CONFIG_KXCJK1013 is not set -# CONFIG_MC3230 is not set -# CONFIG_MMA7455_I2C is not set -# CONFIG_MMA7455_SPI is not set -# CONFIG_MMA7660 is not set -# CONFIG_MMA8452 is not set -# CONFIG_MMA9551 is not set -# CONFIG_MMA9553 is not set -# CONFIG_MXC4005 is not set -# CONFIG_MXC6255 is not set -# CONFIG_SCA3000 is not set -# CONFIG_STK8312 is not set -# CONFIG_STK8BA50 is not set - -# -# Analog to digital converters -# -# CONFIG_AD7266 is not set -# CONFIG_AD7291 is not set -# CONFIG_AD7298 is not set -# CONFIG_AD7476 is not set -# CONFIG_AD7766 is not set -# CONFIG_AD7791 is not set -# CONFIG_AD7793 is not set -# CONFIG_AD7887 is not set -# CONFIG_AD7923 is not set -# CONFIG_AD799X is not set -# CONFIG_CC10001_ADC is not set -# CONFIG_ENVELOPE_DETECTOR is not set -# CONFIG_HI8435 is not set -# CONFIG_HX711 is not set -# CONFIG_INA2XX_ADC is not set -# CONFIG_LTC2471 is not set -# CONFIG_LTC2485 is not set -# CONFIG_LTC2497 is not set -# CONFIG_MAX1027 is not set -# CONFIG_MAX11100 is not set -# CONFIG_MAX1118 is not set -# CONFIG_MAX1363 is not set -# CONFIG_MAX9611 is not set -# CONFIG_MCP320X is not set -# CONFIG_MCP3422 is not set -# CONFIG_NAU7802 is not set +CONFIG_IIO_BUFFER_HW_CONSUMER=y +CONFIG_IIO_SW_DEVICE=y +CONFIG_IIO_SW_TRIGGER=y +CONFIG_IIO_TRIGGERED_EVENT=y CONFIG_ROCKCHIP_SARADC=y -# CONFIG_ROCKCHIP_SARADC_TEST_CHN is not set -# CONFIG_SD_ADC_MODULATOR is not set -# CONFIG_TI_ADC081C is not set -# CONFIG_TI_ADC0832 is not set -# CONFIG_TI_ADC084S021 is not set -# CONFIG_TI_ADC12138 is not set -# CONFIG_TI_ADC108S102 is not set -# CONFIG_TI_ADC128S052 is not set -# CONFIG_TI_ADC161S626 is not set -# CONFIG_TI_ADS1015 is not set -# CONFIG_TI_ADS7950 is not set -# CONFIG_TI_ADS8688 is not set -# CONFIG_TI_TLC4541 is not set -# CONFIG_VF610_ADC is not set - -# -# Analog Front Ends -# -# CONFIG_IIO_RESCALE is not set - -# -# Amplifiers -# -# CONFIG_AD8366 is not set - -# -# Chemical Sensors -# -# CONFIG_ATLAS_PH_SENSOR is not set -# CONFIG_BME680 is not set -# CONFIG_CCS811 is not set -# CONFIG_IAQCORE is not set -# CONFIG_VZ89X is not set -# CONFIG_IIO_CROS_EC_SENSORS_CORE is not set - -# -# Hid Sensor IIO Common -# - -# -# SSP Sensor Common -# -# CONFIG_IIO_SSP_SENSORHUB is not set - -# -# Counters -# - -# -# Digital to analog converters -# -# CONFIG_AD5064 is not set -# CONFIG_AD5360 is not set -# CONFIG_AD5380 is not set -# CONFIG_AD5421 is not set -# CONFIG_AD5446 is not set -# CONFIG_AD5449 is not set -# CONFIG_AD5592R is not set -# CONFIG_AD5593R is not set -# CONFIG_AD5504 is not set -# CONFIG_AD5624R_SPI is not set -# CONFIG_LTC2632 is not set -# CONFIG_AD5686_SPI is not set -# CONFIG_AD5696_I2C is not set -# CONFIG_AD5755 is not set -# CONFIG_AD5758 is not set -# CONFIG_AD5761 is not set -# CONFIG_AD5764 is not set -# CONFIG_AD5791 is not set -# CONFIG_AD7303 is not set -# CONFIG_AD8801 is not set -# CONFIG_DPOT_DAC is not set -# CONFIG_DS4424 is not set -# CONFIG_M62332 is not set -# CONFIG_MAX517 is not set -# CONFIG_MAX5821 is not set -# CONFIG_MCP4725 is not set -# CONFIG_MCP4922 is not set -# CONFIG_TI_DAC082S085 is not set -# CONFIG_TI_DAC5571 is not set -# CONFIG_VF610_DAC is not set - -# -# IIO dummy driver -# - -# -# Frequency Synthesizers DDS/PLL -# - -# -# Clock Generator/Distribution -# -# CONFIG_AD9523 is not set - -# -# Phase-Locked Loop (PLL) frequency synthesizers -# -# CONFIG_ADF4350 is not set - -# -# Digital gyroscope sensors -# -# CONFIG_ADIS16080 is not set -# CONFIG_ADIS16130 is not set -# CONFIG_ADIS16136 is not set -# CONFIG_ADIS16260 is not set -# CONFIG_ADXRS450 is not set -# CONFIG_BMG160 is not set -# CONFIG_MPU3050_I2C is not set -# CONFIG_IIO_ST_GYRO_3AXIS is not set -# CONFIG_ITG3200 is not set - -# -# Health Sensors -# - -# -# Heart Rate Monitors -# -# CONFIG_AFE4403 is not set -# CONFIG_AFE4404 is not set -# CONFIG_MAX30100 is not set -# CONFIG_MAX30102 is not set - -# -# Humidity sensors -# -# CONFIG_AM2315 is not set -# CONFIG_DHT11 is not set -# CONFIG_HDC100X is not set -# CONFIG_HTS221 is not set -# CONFIG_HTU21 is not set -# CONFIG_SI7005 is not set -# CONFIG_SI7020 is not set - -# -# Inertial measurement units -# -# CONFIG_ADIS16400 is not set -# CONFIG_ADIS16480 is not set -# CONFIG_BMI160_I2C is not set -# CONFIG_BMI160_SPI is not set -# CONFIG_KMX61 is not set -# CONFIG_INV_MPU6050_I2C is not set -# CONFIG_INV_MPU6050_SPI is not set -# CONFIG_IIO_ST_LSM6DSX is not set - -# -# Light sensors -# -# CONFIG_ADJD_S311 is not set -# CONFIG_AL3320A is not set -# CONFIG_APDS9300 is not set -# CONFIG_APDS9960 is not set -# CONFIG_BH1750 is not set -# CONFIG_BH1780 is not set -# CONFIG_CM32181 is not set -# CONFIG_CM3232 is not set -# CONFIG_CM3323 is not set -# CONFIG_CM3605 is not set -# CONFIG_CM36651 is not set -# CONFIG_GP2AP020A00F is not set CONFIG_SENSORS_ISL29018=y -# CONFIG_SENSORS_ISL29028 is not set -# CONFIG_ISL29125 is not set -# CONFIG_JSA1212 is not set -# CONFIG_RPR0521 is not set -# CONFIG_LTR501 is not set -# CONFIG_LV0104CS is not set -# CONFIG_MAX44000 is not set -# CONFIG_OPT3001 is not set -# CONFIG_PA12203001 is not set -# CONFIG_SI1133 is not set -# CONFIG_SI1145 is not set -# CONFIG_STK3310 is not set -# CONFIG_ST_UVIS25 is not set -# CONFIG_TCS3414 is not set -# CONFIG_TCS3472 is not set CONFIG_SENSORS_TSL2563=y CONFIG_TSL2583=y -# CONFIG_TSL2772 is not set -# CONFIG_TSL4531 is not set -# CONFIG_US5182D is not set -# CONFIG_VCNL4000 is not set -# CONFIG_VEML6070 is not set -# CONFIG_VL6180 is not set -# CONFIG_ZOPT2201 is not set - -# -# Magnetometer sensors -# -# CONFIG_AK8974 is not set -# CONFIG_AK8975 is not set -# CONFIG_AK09911 is not set -# CONFIG_BMC150_MAGN_I2C is not set -# CONFIG_BMC150_MAGN_SPI is not set -# CONFIG_MAG3110 is not set -# CONFIG_MMC35240 is not set -# CONFIG_IIO_ST_MAGN_3AXIS is not set -# CONFIG_SENSORS_HMC5843_I2C is not set -# CONFIG_SENSORS_HMC5843_SPI is not set - -# -# Multiplexers -# -# CONFIG_IIO_MUX is not set - -# -# Inclinometer sensors -# - -# -# Triggers - standalone -# -# CONFIG_IIO_INTERRUPT_TRIGGER is not set +CONFIG_IIO_MUX=y +CONFIG_IIO_HRTIMER_TRIGGER=y CONFIG_IIO_SYSFS_TRIGGER=y - -# -# Digital potentiometers -# -# CONFIG_AD5272 is not set -# CONFIG_DS1803 is not set -# CONFIG_MAX5481 is not set -# CONFIG_MAX5487 is not set -# CONFIG_MCP4018 is not set -# CONFIG_MCP4131 is not set -# CONFIG_MCP4531 is not set -# CONFIG_TPL0102 is not set - -# -# Digital potentiostats -# -# CONFIG_LMP91000 is not set - -# -# Pressure sensors -# -# CONFIG_ABP060MG is not set -# CONFIG_BMP280 is not set -# CONFIG_HP03 is not set -# CONFIG_MPL115_I2C is not set -# CONFIG_MPL115_SPI is not set -# CONFIG_MPL3115 is not set -# CONFIG_MS5611 is not set -# CONFIG_MS5637 is not set -# CONFIG_IIO_ST_PRESS is not set -# CONFIG_T5403 is not set -# CONFIG_HP206C is not set -# CONFIG_ZPA2326 is not set - -# -# Lightning sensors -# -# CONFIG_AS3935 is not set - -# -# Proximity and distance sensors -# -# CONFIG_ISL29501 is not set -# CONFIG_LIDAR_LITE_V2 is not set -# CONFIG_RFD77402 is not set -# CONFIG_SRF04 is not set -# CONFIG_SX9500 is not set -# CONFIG_SRF08 is not set - -# -# Resolver to digital converters -# -# CONFIG_AD2S1200 is not set - -# -# Temperature sensors -# -# CONFIG_MAXIM_THERMOCOUPLE is not set -# CONFIG_MLX90614 is not set -# CONFIG_MLX90632 is not set -# CONFIG_TMP006 is not set -# CONFIG_TMP007 is not set -# CONFIG_TSYS01 is not set -# CONFIG_TSYS02D is not set -# CONFIG_NTB is not set -# CONFIG_VME_BUS is not set CONFIG_PWM=y -CONFIG_PWM_SYSFS=y -# CONFIG_PWM_CROS_EC is not set -# CONFIG_PWM_FSL_FTM is not set -# CONFIG_PWM_PCA9685 is not set CONFIG_PWM_ROCKCHIP=y -# CONFIG_PWM_ROCKCHIP_ONESHOT is not set - -# -# IRQ chip support -# -CONFIG_IRQCHIP=y -CONFIG_ARM_GIC=y -CONFIG_ARM_GIC_MAX_NR=1 -CONFIG_ARM_GIC_V2M=y -CONFIG_ARM_GIC_V3=y -CONFIG_ARM_GIC_V3_ITS=y -CONFIG_ARM_GIC_V3_ITS_PCI=y -CONFIG_PARTITION_PERCPU=y -# CONFIG_IPACK_BUS is not set -CONFIG_ARCH_HAS_RESET_CONTROLLER=y -CONFIG_RESET_CONTROLLER=y -# CONFIG_RESET_TI_SYSCON is not set -# CONFIG_FMC is not set - -# -# PHY Subsystem -# -CONFIG_GENERIC_PHY=y -# CONFIG_PHY_XGENE is not set -# CONFIG_BCM_KONA_USB2_PHY is not set -# CONFIG_PHY_PXA_28NM_HSIC is not set -# CONFIG_PHY_PXA_28NM_USB2 is not set -# CONFIG_PHY_CPCAP_USB is not set -# CONFIG_PHY_MAPPHONE_MDM6600 is not set -CONFIG_PHY_ROCKCHIP_CSI2_DPHY=y CONFIG_PHY_ROCKCHIP_DP=y +CONFIG_PHY_ROCKCHIP_DPHY_RX0=y CONFIG_PHY_ROCKCHIP_EMMC=y -# CONFIG_PHY_ROCKCHIP_INNO_COMBPHY is not set -CONFIG_PHY_ROCKCHIP_INNO_HDMI_PHY=y -CONFIG_PHY_ROCKCHIP_INNO_MIPI_DPHY=y +CONFIG_PHY_ROCKCHIP_INNO_HDMI=y CONFIG_PHY_ROCKCHIP_INNO_USB2=y -CONFIG_PHY_ROCKCHIP_INNO_USB3=y -CONFIG_PHY_ROCKCHIP_INNO_VIDEO_COMBO_PHY=y -# CONFIG_PHY_ROCKCHIP_INNO_VIDEO_PHY is not set -CONFIG_PHY_ROCKCHIP_MIPI_RX=y +CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY=y +CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=y -CONFIG_PHY_ROCKCHIP_NANENG_EDP=y -# CONFIG_PHY_ROCKCHIP_NANENG_USB2 is not set CONFIG_PHY_ROCKCHIP_PCIE=y CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y CONFIG_PHY_ROCKCHIP_TYPEC=y CONFIG_PHY_ROCKCHIP_USB=y -# CONFIG_PHY_SAMSUNG_USB2 is not set -# CONFIG_POWERCAP is not set -# CONFIG_MCB is not set -CONFIG_RAS=y - -# -# Android -# -CONFIG_ANDROID=y -# CONFIG_ANDROID_BINDER_IPC is not set -# CONFIG_LIBNVDIMM is not set -# CONFIG_DAX is not set -CONFIG_NVMEM=y -CONFIG_NVMEM_SYSFS=y -CONFIG_ROCKCHIP_EFUSE=y -CONFIG_ROCKCHIP_OTP=y - -# -# HW tracing support -# -# CONFIG_STM is not set -# CONFIG_INTEL_TH is not set -# CONFIG_FPGA is not set -# CONFIG_FSI is not set -# CONFIG_TEE is not set -CONFIG_PM_OPP=y -# CONFIG_SIOX is not set -# CONFIG_SLIMBUS is not set -# CONFIG_LEGACY_ENERGY_MODEL_DT is not set -CONFIG_RK_FLASH=y - -# -# Rockchip Flash Devices -# -# CONFIG_RK_NANDC_NAND is not set -CONFIG_RK_SFC_NAND=y -CONFIG_RK_SFC_NAND_MTD=y -CONFIG_RK_SFC_NOR=y -CONFIG_RK_SFC_NOR_MTD=y -# CONFIG_RK_NAND is not set - -# -# Headset device support -# -CONFIG_RK_HEADSET=y - -# -# File systems -# -CONFIG_DCACHE_WORD_ACCESS=y -CONFIG_FS_IOMAP=y -# CONFIG_EXT2_FS is not set -# CONFIG_EXT3_FS is not set +CONFIG_ARM_SMMU_V3_PMU=y +CONFIG_MUX_GPIO=y +CONFIG_MUX_MMIO=y CONFIG_EXT4_FS=y -CONFIG_EXT4_USE_FOR_EXT2=y +# CONFIG_EXT4_USE_FOR_EXT2 is not set CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y -# CONFIG_EXT4_ENCRYPTION is not set -# 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=y -# CONFIG_XFS_QUOTA is not set -# CONFIG_XFS_POSIX_ACL is not set -# CONFIG_XFS_RT is not set -# CONFIG_XFS_ONLINE_SCRUB is not set -# CONFIG_XFS_WARN is not set -# CONFIG_XFS_DEBUG is not set -# CONFIG_GFS2_FS is not set -# CONFIG_OCFS2_FS is not set -# CONFIG_BTRFS_FS is not set -# CONFIG_NILFS2_FS is not set -# CONFIG_F2FS_FS is not set -# CONFIG_FS_DAX is not set -CONFIG_FS_POSIX_ACL=y -CONFIG_EXPORTFS=y -# CONFIG_EXPORTFS_BLOCK_OPS is not set -CONFIG_FILE_LOCKING=y -CONFIG_MANDATORY_FILE_LOCKING=y -# CONFIG_FS_ENCRYPTION is not set -# CONFIG_FS_VERITY is not set -CONFIG_FSNOTIFY=y # CONFIG_DNOTIFY is not set -CONFIG_INOTIFY_USER=y -# CONFIG_FANOTIFY is not set -# CONFIG_QUOTA is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_AUTOFS_FS is not set +CONFIG_AUTOFS_FS=y CONFIG_FUSE_FS=y -# CONFIG_CUSE is not set CONFIG_OVERLAY_FS=y -CONFIG_OVERLAY_FS_REDIRECT_DIR=y -CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y -# CONFIG_OVERLAY_FS_INDEX is not set -# CONFIG_OVERLAY_FS_XINO_AUTO is not set -# CONFIG_OVERLAY_FS_METACOPY is not set -# CONFIG_INCREMENTAL_FS is not set - -# -# Caches -# -# CONFIG_FSCACHE is not set - -# -# CD-ROM/DVD Filesystems -# +CONFIG_FSCACHE=y 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 is not set +CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y -CONFIG_FAT_DEFAULT_CODEPAGE=936 -CONFIG_FAT_DEFAULT_IOCHARSET="utf8" -CONFIG_FAT_DEFAULT_UTF8=y +CONFIG_FAT_DEFAULT_IOCHARSET="ascii" CONFIG_EXFAT_FS=y -CONFIG_EXFAT_DEFAULT_CODEPAGE=437 -CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8" -CONFIG_EXFAT_VIRTUAL_XATTR=y -CONFIG_EXFAT_VIRTUAL_XATTR_SELINUX_LABEL="u:object_r:exfat:s0" -# CONFIG_EXFAT_DEBUG is not set -# CONFIG_EXFAT_UEVENT is not set -# 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_PROC_CHILDREN is not set -# CONFIG_PROC_UID is not set -CONFIG_KERNFS=y -CONFIG_SYSFS=y CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y -CONFIG_TMPFS_XATTR=y -# CONFIG_HUGETLBFS is not set -CONFIG_MEMFD_CREATE=y -CONFIG_ARCH_HAS_GIGANTIC_PAGE=y -CONFIG_CONFIGFS_FS=y -CONFIG_MISC_FILESYSTEMS=y -# CONFIG_ORANGEFS_FS is not set -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_ECRYPT_FS is not set -# CONFIG_SDCARD_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_HFSPLUS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -CONFIG_JFFS2_FS_WRITEBUFFER=y -# CONFIG_JFFS2_FS_WBUF_VERIFY is not set -# CONFIG_JFFS2_SUMMARY is not set -# CONFIG_JFFS2_FS_XATTR is not set -# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set -CONFIG_JFFS2_ZLIB=y -CONFIG_JFFS2_RTIME=y -CONFIG_UBIFS_FS=y -CONFIG_UBIFS_FS_ADVANCED_COMPR=y -CONFIG_UBIFS_FS_LZO=y -CONFIG_UBIFS_FS_ZLIB=y -# CONFIG_UBIFS_ATIME_SUPPORT is not set -CONFIG_UBIFS_FS_XATTR=y -CONFIG_UBIFS_FS_SECURITY=y -# CONFIG_CRAMFS is not set CONFIG_SQUASHFS=y -CONFIG_SQUASHFS_FILE_CACHE=y -# CONFIG_SQUASHFS_FILE_DIRECT is not set -CONFIG_SQUASHFS_DECOMP_SINGLE=y -# CONFIG_SQUASHFS_DECOMP_MULTI is not set -# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set -# CONFIG_SQUASHFS_XATTR is not set -CONFIG_SQUASHFS_ZLIB=y CONFIG_SQUASHFS_LZ4=y CONFIG_SQUASHFS_LZO=y CONFIG_SQUASHFS_XZ=y -# CONFIG_SQUASHFS_ZSTD is not set -# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set -# CONFIG_SQUASHFS_EMBEDDED is not set -CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 -# 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_SQUASHFS_ZSTD=y CONFIG_PSTORE=y -CONFIG_PSTORE_DEFLATE_COMPRESS=y -# CONFIG_PSTORE_LZO_COMPRESS is not set -# CONFIG_PSTORE_LZ4_COMPRESS is not set -# CONFIG_PSTORE_LZ4HC_COMPRESS is not set -# CONFIG_PSTORE_842_COMPRESS is not set -# CONFIG_PSTORE_ZSTD_COMPRESS is not set -CONFIG_PSTORE_COMPRESS=y -CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y -CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" -CONFIG_PSTORE_CONSOLE=y -# CONFIG_PSTORE_CONSOLE_FORCE is not set -# CONFIG_PSTORE_PMSG is not set -# CONFIG_PSTORE_FTRACE is not set -CONFIG_PSTORE_RAM=y -# CONFIG_PSTORE_MCU_LOG is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UFS_FS is not set -CONFIG_NETWORK_FILESYSTEMS=y -# CONFIG_NFS_FS is not set -# CONFIG_NFSD is not set -# CONFIG_CEPH_FS is not set -# CONFIG_CIFS is not set -# CONFIG_CODA_FS is not set -# CONFIG_AFS_FS is not set -CONFIG_NLS=y -CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_DEFAULT="utf-8" 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=y -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1250 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set CONFIG_NLS_ASCII=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_UNICODE=y -# CONFIG_UNICODE_NORMALIZATION_SELFTEST 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_TRUSTED_KEYS is not set -# CONFIG_ENCRYPTED_KEYS is not set -# CONFIG_KEY_DH_OPERATIONS is not set -# CONFIG_SECURITY_DMESG_RESTRICT is not set -# CONFIG_SECURITY is not set -CONFIG_SECURITYFS=y -CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y -# CONFIG_HARDENED_USERCOPY is not set -# CONFIG_FORTIFY_SOURCE is not set -# CONFIG_STATIC_USERMODEHELPER is not set -# CONFIG_TEE_SUPPORT is not set -CONFIG_DEFAULT_SECURITY_DAC=y -CONFIG_DEFAULT_SECURITY="" - -# -# Kernel hardening options -# - -# -# Memory initialization -# +CONFIG_SECURITY=y +CONFIG_SECURITY_NETWORK=y +CONFIG_HARDENED_USERCOPY=y +CONFIG_STATIC_USERMODEHELPER=y +CONFIG_LSM="selinux,integrity" CONFIG_INIT_STACK_NONE=y -# CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set -# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set -CONFIG_CRYPTO=y - -# -# Crypto core or helper -# -CONFIG_CRYPTO_ALGAPI=y -CONFIG_CRYPTO_ALGAPI2=y -CONFIG_CRYPTO_AEAD=y -CONFIG_CRYPTO_AEAD2=y -CONFIG_CRYPTO_BLKCIPHER=y -CONFIG_CRYPTO_BLKCIPHER2=y -CONFIG_CRYPTO_HASH=y -CONFIG_CRYPTO_HASH2=y -CONFIG_CRYPTO_RNG=y -CONFIG_CRYPTO_RNG2=y -CONFIG_CRYPTO_RNG_DEFAULT=y -CONFIG_CRYPTO_AKCIPHER2=y -CONFIG_CRYPTO_AKCIPHER=y -CONFIG_CRYPTO_KPP2=y -CONFIG_CRYPTO_KPP=y -CONFIG_CRYPTO_ACOMP2=y -CONFIG_CRYPTO_RSA=y -# CONFIG_CRYPTO_DH is not set -CONFIG_CRYPTO_ECDH=y -CONFIG_CRYPTO_MANAGER=y -CONFIG_CRYPTO_MANAGER2=y -# CONFIG_CRYPTO_USER is not set -CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y -CONFIG_CRYPTO_GF128MUL=y -CONFIG_CRYPTO_NULL=y -CONFIG_CRYPTO_NULL2=y -# CONFIG_CRYPTO_PCRYPT is not set -CONFIG_CRYPTO_WORKQUEUE=y +CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y +CONFIG_INIT_ON_FREE_DEFAULT_ON=y +CONFIG_CRYPTO_USER=y +CONFIG_CRYPTO_PCRYPT=y CONFIG_CRYPTO_CRYPTD=y -# CONFIG_CRYPTO_MCRYPTD is not set -CONFIG_CRYPTO_AUTHENC=m -# CONFIG_CRYPTO_TEST is not set -CONFIG_CRYPTO_SIMD=y -# CONFIG_CRYPTO_CURVE25519 is not set - -# -# Authenticated Encryption with Associated Data -# -CONFIG_CRYPTO_CCM=y -CONFIG_CRYPTO_GCM=y -# CONFIG_CRYPTO_CHACHA20POLY1305 is not set -# CONFIG_CRYPTO_AEGIS128 is not set -# CONFIG_CRYPTO_AEGIS128L is not set -# CONFIG_CRYPTO_AEGIS256 is not set -# CONFIG_CRYPTO_MORUS640 is not set -# CONFIG_CRYPTO_MORUS1280 is not set -CONFIG_CRYPTO_SEQIV=y -CONFIG_CRYPTO_ECHAINIV=m - -# -# Block modes -# -CONFIG_CRYPTO_CBC=y -CONFIG_CRYPTO_CFB=y -CONFIG_CRYPTO_CTR=y -# CONFIG_CRYPTO_CTS is not set -CONFIG_CRYPTO_ECB=y -# CONFIG_CRYPTO_LRW is not set -# CONFIG_CRYPTO_PCBC is not set +CONFIG_CRYPTO_ECDH=y +CONFIG_CRYPTO_TWOFISH=y +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_CTS=y CONFIG_CRYPTO_XTS=y -# CONFIG_CRYPTO_KEYWRAP is not set -# CONFIG_CRYPTO_ADIANTUM is not set - -# -# Hash modes -# +CONFIG_CRYPTO_CHACHA20POLY1305=y +CONFIG_CRYPTO_CCM=y +CONFIG_CRYPTO_ESSIV=y CONFIG_CRYPTO_CMAC=y -CONFIG_CRYPTO_HMAC=y -# CONFIG_CRYPTO_XCBC is not set -# CONFIG_CRYPTO_VMAC is not set - -# -# Digest -# -CONFIG_CRYPTO_CRC32C=y -# CONFIG_CRYPTO_CRC32 is not set -# CONFIG_CRYPTO_BLAKE2S is not set -CONFIG_CRYPTO_CRCT10DIF=y -CONFIG_CRYPTO_GHASH=y -# CONFIG_CRYPTO_POLY1305 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=y -# CONFIG_CRYPTO_SHA3 is not set -CONFIG_CRYPTO_SM3=y -# CONFIG_CRYPTO_TGR192 is not set -# CONFIG_CRYPTO_WP512 is not set - -# -# Ciphers -# -CONFIG_CRYPTO_AES=y -# CONFIG_CRYPTO_AES_TI is not set -# CONFIG_CRYPTO_ANUBIS is not set -CONFIG_CRYPTO_ARC4=y -# CONFIG_CRYPTO_BLOWFISH is not set -# CONFIG_CRYPTO_CAMELLIA is not set -# CONFIG_CRYPTO_CAST5 is not set -# CONFIG_CRYPTO_CAST6 is not set -CONFIG_CRYPTO_DES=y -# CONFIG_CRYPTO_FCRYPT is not set -# CONFIG_CRYPTO_KHAZAD is not set -# CONFIG_CRYPTO_SALSA20 is not set -# CONFIG_CRYPTO_CHACHA20 is not set -# CONFIG_CRYPTO_SEED is not set -# CONFIG_CRYPTO_SERPENT is not set -# CONFIG_CRYPTO_SM4 is not set -# CONFIG_CRYPTO_TEA is not set -CONFIG_CRYPTO_TWOFISH=y -CONFIG_CRYPTO_TWOFISH_COMMON=y - -# -# Compression -# -CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_XCBC=y +CONFIG_CRYPTO_CRC32=y CONFIG_CRYPTO_LZO=y -# CONFIG_CRYPTO_842 is not set -# CONFIG_CRYPTO_LZ4 is not set -# CONFIG_CRYPTO_LZ4HC is not set -# CONFIG_CRYPTO_ZSTD is not set - -# -# Random Number Generation -# +CONFIG_CRYPTO_LZ4=y +CONFIG_CRYPTO_LZ4HC=y +CONFIG_CRYPTO_ZSTD=y CONFIG_CRYPTO_ANSI_CPRNG=y -CONFIG_CRYPTO_DRBG_MENU=y -CONFIG_CRYPTO_DRBG_HMAC=y -# CONFIG_CRYPTO_DRBG_HASH is not set -# CONFIG_CRYPTO_DRBG_CTR is not set -CONFIG_CRYPTO_DRBG=y -CONFIG_CRYPTO_JITTERENTROPY=y -CONFIG_CRYPTO_USER_API=y CONFIG_CRYPTO_USER_API_HASH=y CONFIG_CRYPTO_USER_API_SKCIPHER=y -# CONFIG_CRYPTO_USER_API_RNG is not set -# CONFIG_CRYPTO_USER_API_AEAD is not set -CONFIG_CRYPTO_HASH_INFO=y - -# -# Crypto library routines -# -# CONFIG_CRYPTO_LIB_BLAKE2S is not set -# CONFIG_CRYPTO_LIB_CHACHA is not set -CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 -# CONFIG_CRYPTO_LIB_POLY1305 is not set -# CONFIG_CRYPTO_LIB_CURVE25519 is not set -# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set -CONFIG_CRYPTO_HW=y -# CONFIG_CRYPTO_DEV_CCP is not set -# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set -# CONFIG_CRYPTO_DEV_CAVIUM_ZIP is not set +CONFIG_CRYPTO_USER_API_RNG=y +CONFIG_CRYPTO_USER_API_AEAD=y +CONFIG_CRYPTO_STATS=y +CONFIG_CRYPTO_NHPOLY1305_NEON=y +CONFIG_CRYPTO_GHASH_ARM64_CE=y +CONFIG_CRYPTO_SHA1_ARM64_CE=y +CONFIG_CRYPTO_SHA2_ARM64_CE=y +CONFIG_CRYPTO_SHA512_ARM64_CE=y +CONFIG_CRYPTO_AES_ARM64=y +CONFIG_CRYPTO_AES_ARM64_CE_BLK=y +CONFIG_CRYPTO_AES_ARM64_BS=y +CONFIG_CRYPTO_AES_ARM64_CE_CCM=y CONFIG_CRYPTO_DEV_ROCKCHIP=y -# CONFIG_CRYPTO_DEV_CCREE is not set -# CONFIG_CRYPTO_DEV_HISI_SEC is not set -CONFIG_ASYMMETRIC_KEY_TYPE=y -CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y -CONFIG_X509_CERTIFICATE_PARSER=y -CONFIG_PKCS7_MESSAGE_PARSER=y -# CONFIG_PKCS7_TEST_KEY is not set -# CONFIG_SIGNED_PE_FILE_VERIFICATION is not set - -# -# Certificates for signature checking -# -CONFIG_SYSTEM_TRUSTED_KEYRING=y -CONFIG_SYSTEM_TRUSTED_KEYS="" -# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set -# CONFIG_SECONDARY_TRUSTED_KEYRING is not set -# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set -CONFIG_BINARY_PRINTF=y - -# -# Library routines -# -CONFIG_BITREVERSE=y -CONFIG_HAVE_ARCH_BITREVERSE=y -CONFIG_RATIONAL=y -CONFIG_GENERIC_STRNCPY_FROM_USER=y -CONFIG_GENERIC_STRNLEN_USER=y -CONFIG_GENERIC_NET_UTILS=y -CONFIG_GENERIC_PCI_IOMAP=y -CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y -CONFIG_ARCH_HAS_FAST_MULTIPLIER=y -# CONFIG_INDIRECT_PIO is not set +CONFIG_CORDIC=y CONFIG_CRC_CCITT=y -CONFIG_CRC16=y CONFIG_CRC_T10DIF=y CONFIG_CRC_ITU_T=y -CONFIG_CRC32=y -# CONFIG_CRC32_SELFTEST is not set -CONFIG_CRC32_SLICEBY8=y -# CONFIG_CRC32_SLICEBY4 is not set -# CONFIG_CRC32_SARWATE is not set -# CONFIG_CRC32_BIT is not set -# CONFIG_CRC64 is not set -# CONFIG_CRC4 is not set CONFIG_CRC7=y -CONFIG_LIBCRC32C=y -# CONFIG_CRC8 is not set -CONFIG_AUDIT_ARCH_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_LZ4_DECOMPRESS=y -CONFIG_XZ_DEC=y # CONFIG_XZ_DEC_X86 is not set # CONFIG_XZ_DEC_POWERPC is not set -# CONFIG_XZ_DEC_IA64 is not set -CONFIG_XZ_DEC_ARM=y -CONFIG_XZ_DEC_ARMTHUMB=y # CONFIG_XZ_DEC_SPARC is not set -CONFIG_XZ_DEC_BCJ=y -# CONFIG_XZ_DEC_TEST is not set -CONFIG_DECOMPRESS_GZIP=y -CONFIG_DECOMPRESS_BZIP2=y -CONFIG_DECOMPRESS_LZMA=y -CONFIG_DECOMPRESS_XZ=y -CONFIG_DECOMPRESS_LZO=y -CONFIG_DECOMPRESS_LZ4=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=m -CONFIG_TEXTSEARCH_BM=m -CONFIG_TEXTSEARCH_FSM=m -CONFIG_ASSOCIATIVE_ARRAY=y -CONFIG_HAS_IOMEM=y -CONFIG_HAS_IOPORT_MAP=y -CONFIG_HAS_DMA=y -CONFIG_NEED_SG_DMA_LENGTH=y -CONFIG_NEED_DMA_MAP_STATE=y -CONFIG_ARCH_DMA_ADDR_T_64BIT=y -CONFIG_HAVE_GENERIC_DMA_COHERENT=y -CONFIG_DMA_DIRECT_OPS=y -CONFIG_SWIOTLB=y -CONFIG_SGL_ALLOC=y -CONFIG_CPU_RMAP=y -CONFIG_DQL=y -CONFIG_GLOB=y -# CONFIG_GLOB_SELFTEST is not set -CONFIG_NLATTR=y -CONFIG_CLZ_TAB=y -# CONFIG_CORDIC is not set -# CONFIG_DDR is not set -# CONFIG_IRQ_POLL is not set -CONFIG_MPILIB=y -CONFIG_LIBFDT=y -CONFIG_OID_REGISTRY=y -CONFIG_HAVE_GENERIC_VDSO=y -CONFIG_GENERIC_GETTIMEOFDAY=y -CONFIG_FONT_SUPPORT=y -# CONFIG_FONTS is not set -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y -CONFIG_SG_POOL=y -CONFIG_ARCH_HAS_SG_CHAIN=y -CONFIG_SBITMAP=y -# CONFIG_STRING_SELFTEST is not set - -# -# Kernel hacking -# - -# -# printk and dmesg options -# CONFIG_PRINTK_TIME=y -# CONFIG_PRINTK_TIME_FROM_ARM_ARCH_TIMER is not set -# CONFIG_PRINTK_PROCESS is not set -CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 -CONFIG_CONSOLE_LOGLEVEL_QUIET=4 -CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 -# CONFIG_BOOT_PRINTK_DELAY is not set +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7 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_GDB_SCRIPTS is not set -CONFIG_ENABLE_MUST_CHECK=y -CONFIG_FRAME_WARN=2048 -# CONFIG_STRIP_ASM_SYMS is not set -# CONFIG_READABLE_ASM is not set -# CONFIG_UNUSED_SYMBOLS is not set -# CONFIG_PAGE_OWNER is not set -CONFIG_DEBUG_FS=y -# CONFIG_HEADERS_CHECK is not set -# CONFIG_DEBUG_SECTION_MISMATCH is not set -CONFIG_SECTION_MISMATCH_WARN_ONLY=y -CONFIG_ARCH_WANT_FRAME_POINTERS=y -CONFIG_FRAME_POINTER=y -# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# CONFIG_SYMBOLIC_ERRNAME is not set +# CONFIG_DEBUG_MISC is not set CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0 -CONFIG_MAGIC_SYSRQ_SERIAL=y -CONFIG_DEBUG_KERNEL=y - -# -# Memory Debugging -# -# CONFIG_PAGE_EXTENSION is not set -# CONFIG_DEBUG_PAGEALLOC is not set -# CONFIG_PAGE_POISONING is not set -# CONFIG_DEBUG_PAGE_REF is not set -# CONFIG_DEBUG_RODATA_TEST is not set -# CONFIG_DEBUG_OBJECTS is not set -# CONFIG_SLUB_DEBUG_ON 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_ARCH_HAS_DEBUG_VIRTUAL=y -# CONFIG_DEBUG_VIRTUAL is not set -# CONFIG_DEBUG_MEMORY_INIT is not set -# CONFIG_DEBUG_PER_CPU_MAPS is not set -CONFIG_HAVE_ARCH_KASAN=y -CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y -CONFIG_CC_HAS_KASAN_GENERIC=y -# CONFIG_KASAN is not set -CONFIG_KASAN_STACK=1 -CONFIG_ARCH_HAS_KCOV=y -CONFIG_CC_HAS_SANCOV_TRACE_PC=y -# CONFIG_KCOV is not set -# CONFIG_DEBUG_SHIRQ is not set - -# -# Debug Lockups and Hangs -# -# CONFIG_SOFTLOCKUP_DETECTOR is not set -# CONFIG_DETECT_HUNG_TASK is not set -# CONFIG_WQ_WATCHDOG is not set -# CONFIG_PANIC_ON_OOPS is not set -CONFIG_PANIC_ON_OOPS_VALUE=0 -CONFIG_PANIC_TIMEOUT=0 -CONFIG_SCHED_DEBUG=y -CONFIG_SCHED_INFO=y +CONFIG_DEBUG_FS=y +# CONFIG_SLUB_DEBUG is not set +CONFIG_PANIC_TIMEOUT=1 +CONFIG_DETECT_HUNG_TASK=y +CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y +# CONFIG_SCHED_DEBUG is not set CONFIG_SCHEDSTATS=y -# CONFIG_SCHED_STACK_END_CHECK is not set -# CONFIG_DEBUG_TIMEKEEPING is not set - -# -# Lock Debugging (spinlocks, mutexes, etc...) -# -CONFIG_LOCK_DEBUGGING_SUPPORT=y -# CONFIG_PROVE_LOCKING is not set -# CONFIG_LOCK_STAT is not set -# CONFIG_DEBUG_RT_MUTEXES is not set CONFIG_DEBUG_SPINLOCK=y -# CONFIG_DEBUG_MUTEXES is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set -# CONFIG_DEBUG_RWSEMS is not set -# CONFIG_DEBUG_LOCK_ALLOC is not set -# CONFIG_DEBUG_ATOMIC_SLEEP is not set -# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set -# CONFIG_LOCK_TORTURE_TEST is not set -# CONFIG_WW_MUTEX_SELFTEST is not set CONFIG_STACKTRACE=y -# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set -# CONFIG_DEBUG_KOBJECT is not set -CONFIG_HAVE_DEBUG_BUGVERBOSE=y -CONFIG_DEBUG_BUGVERBOSE=y -# CONFIG_DEBUG_LIST is not set -# CONFIG_DEBUG_PI_LIST is not set -# CONFIG_DEBUG_SG is not set -# CONFIG_DEBUG_NOTIFIERS is not set CONFIG_DEBUG_CREDENTIALS=y - -# -# RCU Debugging -# -# CONFIG_RCU_PERF_TEST is not set -# CONFIG_RCU_TORTURE_TEST is not set CONFIG_RCU_CPU_STALL_TIMEOUT=60 -CONFIG_RCU_TRACE=y -# CONFIG_RCU_EQS_DEBUG is not set -# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set -# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set -# CONFIG_NOTIFIER_ERROR_INJECTION is not set -# CONFIG_FAULT_INJECTION is not set -# CONFIG_LATENCYTOP is not set -CONFIG_NOP_TRACER=y -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_TRACE_CLOCK=y -CONFIG_RING_BUFFER=y -CONFIG_EVENT_TRACING=y -CONFIG_CONTEXT_SWITCH_TRACER=y -CONFIG_TRACING=y -CONFIG_GENERIC_TRACER=y -CONFIG_TRACING_SUPPORT=y -CONFIG_FTRACE=y -CONFIG_FUNCTION_TRACER=y -CONFIG_FUNCTION_GRAPH_TRACER=y -# CONFIG_PREEMPTIRQ_EVENTS is not set -# CONFIG_IRQSOFF_TRACER is not set -# CONFIG_SCHED_TRACER is not set -# CONFIG_HWLAT_TRACER is not set -# CONFIG_FTRACE_SYSCALLS is not set -# CONFIG_TRACER_SNAPSHOT is not set -CONFIG_BRANCH_PROFILE_NONE=y -# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set -# CONFIG_PROFILE_ALL_BRANCHES is not set -# CONFIG_STACK_TRACER is not set -CONFIG_BLK_DEV_IO_TRACE=y -CONFIG_DYNAMIC_FTRACE=y -# CONFIG_FUNCTION_PROFILER is not set -CONFIG_FTRACE_MCOUNT_RECORD=y -# CONFIG_FTRACE_STARTUP_TEST is not set -# CONFIG_HIST_TRIGGERS is not set -# CONFIG_TRACEPOINT_BENCHMARK is not set -# CONFIG_RING_BUFFER_BENCHMARK is not set -# CONFIG_RING_BUFFER_STARTUP_TEST is not set -# CONFIG_PREEMPTIRQ_DELAY_TEST is not set -# CONFIG_TRACE_EVAL_MAP_FILE is not set -CONFIG_TRACING_EVENTS_GPIO=y -# CONFIG_DMA_API_DEBUG is not set -CONFIG_RUNTIME_TESTING_MENU=y -CONFIG_LKDTM=y -# CONFIG_TEST_LIST_SORT is not set -# CONFIG_TEST_SORT is not set -# CONFIG_BACKTRACE_SELF_TEST is not set -# CONFIG_RBTREE_TEST is not set -# CONFIG_INTERVAL_TREE_TEST is not set -# CONFIG_PERCPU_TEST is not set -# CONFIG_ATOMIC64_SELFTEST is not set -# CONFIG_TEST_HEXDUMP is not set -# CONFIG_TEST_STRING_HELPERS is not set -# CONFIG_TEST_KSTRTOX is not set -# CONFIG_TEST_PRINTF is not set -# CONFIG_TEST_BITMAP is not set -# CONFIG_TEST_BITFIELD is not set -# CONFIG_TEST_UUID is not set -# CONFIG_TEST_OVERFLOW is not set -# CONFIG_TEST_RHASHTABLE is not set -# CONFIG_TEST_HASH is not set -# CONFIG_TEST_IDA is not set -# CONFIG_TEST_LKM is not set -# CONFIG_TEST_USER_COPY is not set -# CONFIG_TEST_BPF is not set -# CONFIG_FIND_BIT_BENCHMARK is not set -# CONFIG_TEST_FIRMWARE is not set -# CONFIG_TEST_SYSCTL is not set -# CONFIG_TEST_UDELAY is not set -# CONFIG_TEST_STATIC_KEYS is not set -# CONFIG_TEST_KMOD is not set -# CONFIG_TEST_MEMINIT is not set -# CONFIG_TEST_STACKINIT is not set -# CONFIG_MEMTEST is not set -# CONFIG_BUG_ON_DATA_CORRUPTION is not set -# CONFIG_SAMPLES is not set -CONFIG_HAVE_ARCH_KGDB=y -# CONFIG_KGDB is not set -CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y -# CONFIG_UBSAN is not set -CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y -CONFIG_STRICT_DEVMEM=y -# CONFIG_IO_STRICT_DEVMEM is not set -# CONFIG_ARM64_PTDUMP_DEBUGFS is not set -# CONFIG_PID_IN_CONTEXTIDR is not set -# CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set -# CONFIG_DEBUG_WX is not set -# CONFIG_DEBUG_ALIGN_RODATA is not set -# CONFIG_ARM64_RELOC_TEST is not set -# CONFIG_CORESIGHT is not set +CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=20 +# CONFIG_RCU_TRACE is not set +# CONFIG_FTRACE is not set +# CONFIG_STRICT_DEVMEM is not set +# CONFIG_RUNTIME_TESTING_MENU is not set diff --git a/projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.old.conf b/projects/Rockchip/devices/RK3566/linux/linux.aarch64.old.conf similarity index 100% rename from projects/Rockchip/devices/RK3566-ML/linux/linux.aarch64.old.conf rename to projects/Rockchip/devices/RK3566/linux/linux.aarch64.old.conf diff --git a/projects/Rockchip/devices/RK3566-ML/linux/linux.jelos.compact.config b/projects/Rockchip/devices/RK3566/linux/linux.jelos.compact.config similarity index 100% rename from projects/Rockchip/devices/RK3566-ML/linux/linux.jelos.compact.config rename to projects/Rockchip/devices/RK3566/linux/linux.jelos.compact.config diff --git a/projects/Rockchip/devices/RK3566/options b/projects/Rockchip/devices/RK3566/options index 7b8c083e65..e0b068e669 100644 --- a/projects/Rockchip/devices/RK3566/options +++ b/projects/Rockchip/devices/RK3566/options @@ -31,12 +31,12 @@ BOOTLOADER="u-boot" PARTITION_TABLE="gpt" UBOOT_LABEL="uboot" - TRUST_LABEL="resource" - DEVICE_DTB=("rk3566-rg353p-linux" "rk3566-rg353v-linux" "rk3566-rg353m-linux" "rk3566-rg503-linux" "rk3566-rk2023-linux" "rk3566-rgb30-linux") + TRUST_LABEL="trust" + DEVICE_DTB=("rk3566-anbernic-rg353ps" "rk3566-anbernic-rg353vs" "rk3566-anbernic-rg503" "rk3566-anbernic-rg353p" "rk3566-anbernic-rg353v" "rk3566-powkiddy-rk2023" "rk3566-powkiddy-rgb30") UBOOT_DTB="rk3566" - UBOOT_CONFIG="rk3568_defconfig" - PKG_SOC="rk356x" - PKG_DATAFILE="${PKG_RKBIN}/bin/rk35/rk3566_ddr_1056MHz_v1.16.bin" + UBOOT_CONFIG="anbernic-rgxx3-rk3566_defconfig" + PKG_SOC="rk3568" + PKG_DATAFILE="${PKG_RKBIN}/bin/rk35/rk3568_ddr_1056MHz_v1.16.bin" PKG_LOADER="${PKG_RKBIN}/bin/rk35/rk356x_spl_v1.12.bin" PKG_BL31="${PKG_RKBIN}/bin/rk35/rk3568_bl31_v1.42.elf" PKG_LOAD_ADDR="0x0a100000" @@ -45,26 +45,37 @@ # Additional kernel make parameters (for example to specify the u-boot loadaddress) KERNEL_MAKE_EXTRACMD=" $(for DTB in "${DEVICE_DTB[@]}"; do echo -n "rockchip/${DTB}.dtb "; done)" + KERNEL_EXTRA_DEPENDS_TARGET="zstd libcap libtraceevent" # Define the CPU HW_CPU="Rockchip RK3566" # Mali GPU family MALI_FAMILY="bifrost-g52" - MALI_VERSION="g2p0" - OPENGLES="libmali" - VULKAN_SUPPORT="no" + # MALI_VERSION="g2p0" + # OPENGLES="libmali" + VULKAN_SUPPORT="" - GRAPHIC_DRIVERS="" + # OpenGL(X) implementation to use (mesa / no) + OPENGL="mesa" + + # OpenGL-ES implementation to use (mesa / no) + OPENGLES="mesa" + + GRAPHIC_DRIVERS="panfrost" # Displayserver to use (weston / x11 / no) - DISPLAYSERVER="no" + DISPLAYSERVER="wl" # Windowmanager to use (fluxbox / weston / no) - WINDOWMANAGER="no" + WINDOWMANAGER="weston" + + # debug tty path + DEBUG_TTY="/dev/ttyS2" # kernel serial console - EXTRA_CMDLINE="quiet rootwait console=ttyS2,1500000 console=/dev/tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20" + #EXTRA_CMDLINE="quiet rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20 initcall_blacklist=uvc_init log_buf_len=1M" + EXTRA_CMDLINE="rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty1 ssh consoleblank=0 systemd.show_status=0 loglevel=8 panic=20 nopkmute" # additional packages to install # ADDITIONAL_PACKAGES="" @@ -72,13 +83,13 @@ # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) # Space separated list is supported, # e.g. FIRMWARE="dvb-firmware misc-firmware wlan-firmware" - FIRMWARE="misc-firmware wlan-firmware RTL8821CS-firmware" + FIRMWARE="misc-firmware" # additional drivers to install: # for a list of additional drivers see packages/linux-drivers # Space separated list is supported, # e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" - ADDITIONAL_DRIVERS="RTL8821AU RTL8821CU RTL88x2BU" + ADDITIONAL_DRIVERS="jelos-gamepad" # build and install driver addons (yes / no) DRIVER_ADDONS_SUPPORT="no" @@ -88,9 +99,6 @@ # Space separated list is supported, DRIVER_ADDONS="" #dvb-latest - # debug tty path - DEBUG_TTY="/dev/ttyUSB0" - # build and install bluetooth support (yes / no) BLUETOOTH_SUPPORT="yes" @@ -109,11 +117,9 @@ # build and install SFTP Server (yes / no) SFTP_SERVER="yes" - # build and install Simple HTTP Server (yes / no) - SIMPLE_HTTP_SERVER="yes" - # build and install OpenVPN support (yes / no) OPENVPN_SUPPORT="no" + WIREGUARD_SUPPORT="no" # build and install ZeroTier support (yes / no) ZEROTIER_SUPPORT="yes" diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index eef3b64e5b..0b5346c9fb 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -23,22 +23,10 @@ case ${DEVICE} in GET_HANDLER_SUPPORT="git" PKG_GIT_CLONE_BRANCH="main" ;; - *ML) - PKG_VERSION="6.7-rc6" + RK356*) + PKG_VERSION="6.7-rc7" PKG_URL="https://git.kernel.org/torvalds/t/${PKG_NAME}-${PKG_VERSION}.tar.gz" ;; - RK3566) - PKG_URL="${PKG_SITE}/rk356x-kernel.git" - PKG_VERSION="d346337a7b3e3e7e0d12dbdcc4fc62efc86cbda3" - GET_HANDLER_SUPPORT="git" - PKG_GIT_CLONE_BRANCH="main" - ;; - *X55) - PKG_URL="${PKG_SITE}/rk3566-x55-kernel.git" - PKG_VERSION="9b92751b8fe21f9326d1a54dd5f675965a12d6e1" - GET_HANDLER_SUPPORT="git" - PKG_GIT_CLONE_BRANCH="main" - ;; RK33*) PKG_VERSION="6.1.69" PKG_URL="https://www.kernel.org/pub/linux/kernel/v6.x/${PKG_NAME}-${PKG_VERSION}.tar.xz" diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55/0001-drm-panel-Add-helper-for-reading-DT-rotation.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55/0001-drm-panel-Add-helper-for-reading-DT-rotation.patch deleted file mode 100644 index a02e062c41..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566-X55/0001-drm-panel-Add-helper-for-reading-DT-rotation.patch +++ /dev/null @@ -1,103 +0,0 @@ -From c74b76bb8a4da44a9f8cf06f4aba9f3334e1a148 Mon Sep 17 00:00:00 2001 -From: Derek Basehore -Date: Tue, 9 Jul 2019 19:16:56 -0700 -Subject: [PATCH 1/4] drm/panel: Add helper for reading DT rotation - -This adds a helper function for reading the rotation (panel -orientation) from the device tree. - -Signed-off-by: Derek Basehore ---- - drivers/gpu/drm/drm_panel.c | 43 +++++++++++++++++++++++++++++++++++++ - include/drm/drm_panel.h | 9 ++++++++ - 2 files changed, 52 insertions(+) - -diff --git a/drivers/gpu/drm/drm_panel.c b/drivers/gpu/drm/drm_panel.c -index d37b83f40..b2d8fa2c3 100644 ---- a/drivers/gpu/drm/drm_panel.c -+++ b/drivers/gpu/drm/drm_panel.c -@@ -168,6 +168,49 @@ struct drm_panel *of_drm_find_panel(const struct device_node *np) - return ERR_PTR(-EPROBE_DEFER); - } - EXPORT_SYMBOL(of_drm_find_panel); -+ -+/** -+ * of_drm_get_panel_orientation - look up the orientation of the panel through -+ * the "rotation" binding from a device tree node -+ * @np: device tree node of the panel -+ * @orientation: orientation enum to be filled in -+ * -+ * Looks up the rotation of a panel in the device tree. The orientation of the -+ * panel is expressed as a property name "rotation" in the device tree. The -+ * rotation in the device tree is counter clockwise. -+ * -+ * Return: 0 when a valid rotation value (0, 90, 180, or 270) is read or the -+ * rotation property doesn't exist. -EERROR otherwise. -+ */ -+int of_drm_get_panel_orientation(const struct device_node *np, -+ enum drm_panel_orientation *orientation) -+{ -+ int rotation, ret; -+ -+ ret = of_property_read_u32(np, "rotation", &rotation); -+ if (ret == -EINVAL) { -+ /* Don't return an error if there's no rotation property. */ -+ *orientation = DRM_MODE_PANEL_ORIENTATION_UNKNOWN; -+ return 0; -+ } -+ -+ if (ret < 0) -+ return ret; -+ -+ if (rotation == 0) -+ *orientation = DRM_MODE_PANEL_ORIENTATION_NORMAL; -+ else if (rotation == 90) -+ *orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP; -+ else if (rotation == 180) -+ *orientation = DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP; -+ else if (rotation == 270) -+ *orientation = DRM_MODE_PANEL_ORIENTATION_LEFT_UP; -+ else -+ return -EINVAL; -+ -+ return 0; -+} -+EXPORT_SYMBOL(of_drm_get_panel_orientation); - #endif - - int drm_panel_notifier_register(struct drm_panel *panel, -diff --git a/include/drm/drm_panel.h b/include/drm/drm_panel.h -index 6aab8fefc..c58c4c19f 100644 ---- a/include/drm/drm_panel.h -+++ b/include/drm/drm_panel.h -@@ -53,6 +53,8 @@ struct drm_device; - struct drm_panel; - struct display_timing; - -+enum drm_panel_orientation; -+ - /** - * @loader_protect: protect loader logo panel's power - * struct drm_panel_funcs - perform operations on a given panel -@@ -240,11 +242,18 @@ int drm_panel_notifier_call_chain(struct drm_panel *panel, - - #if defined(CONFIG_OF) && defined(CONFIG_DRM_PANEL) - struct drm_panel *of_drm_find_panel(const struct device_node *np); -+int of_drm_get_panel_orientation(const struct device_node *np, -+ enum drm_panel_orientation *orientation); - #else - static inline struct drm_panel *of_drm_find_panel(const struct device_node *np) - { - return ERR_PTR(-ENODEV); - } -+static inline int of_drm_get_panel_orientation(const struct device_node *np, -+ enum drm_panel_orientation *orientation) -+{ -+ return -ENODEV; -+} - #endif - - #endif --- -2.34.1 - diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55/0002-drm-connector-Split-out-orientation-quirk-detection-.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55/0002-drm-connector-Split-out-orientation-quirk-detection-.patch deleted file mode 100644 index 23f41607b7..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566-X55/0002-drm-connector-Split-out-orientation-quirk-detection-.patch +++ /dev/null @@ -1,171 +0,0 @@ -From b76306d4adb2e169f8425fb417de565d555fcf22 Mon Sep 17 00:00:00 2001 -From: Derek Basehore -Date: Sun, 5 Jan 2020 16:51:19 +0100 -Subject: [PATCH 2/4] drm/connector: Split out orientation quirk detection (v2) - -Not every platform needs quirk detection for panel orientation, so -split the drm_connector_init_panel_orientation_property into two -functions. One for platforms without the need for quirks, and the -other for platforms that need quirks. - -Hans de Goede (changes in v2): - -Rename the function from drm_connector_init_panel_orientation_property -to drm_connector_set_panel_orientation[_with_quirk] and pass in the -panel-orientation to set. - -Beside the rename, also make the function set the passed in value -only once, if the value was set before (to a value other then -DRM_MODE_PANEL_ORIENTATION_UNKNOWN) make any further set calls a no-op. - -This change is preparation for allowing the user to override the -panel-orientation for any connector from the kernel commandline. -When the panel-orientation is overridden this way, then we must ignore -the panel-orientation detection done by the driver. - -Reviewed-by: Rodrigo Vivi -Signed-off-by: Derek Basehore -Signed-off-by: Hans de Goede -Acked-by: Jani Nikula -Link: https://patchwork.freedesktop.org/patch/msgid/20200105155120.96466-1-hdegoede@redhat.com ---- - drivers/gpu/drm/drm_connector.c | 74 ++++++++++++++++++++++++--------- - include/drm/drm_connector.h | 9 +++- - 2 files changed, 61 insertions(+), 22 deletions(-) - -diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c -index 8a2a1965e..77a2087bf 100644 ---- a/drivers/gpu/drm/drm_connector.c -+++ b/drivers/gpu/drm/drm_connector.c -@@ -996,7 +996,8 @@ static const struct drm_prop_enum_list dp_colorspaces[] = { - * coordinates, so if userspace rotates the picture to adjust for - * the orientation it must also apply the same transformation to the - * touchscreen input coordinates. This property is initialized by calling -- * drm_connector_init_panel_orientation_property(). -+ * drm_connector_set_panel_orientation() or -+ * drm_connector_set_panel_orientation_with_quirk() - * - * scaling mode: - * This property defines how a non-native mode is upscaled to the native -@@ -1713,38 +1714,41 @@ void drm_connector_set_link_status_property(struct drm_connector *connector, - EXPORT_SYMBOL(drm_connector_set_link_status_property); - - /** -- * drm_connector_init_panel_orientation_property - -- * initialize the connecters panel_orientation property -- * @connector: connector for which to init the panel-orientation property. -- * @width: width in pixels of the panel, used for panel quirk detection -- * @height: height in pixels of the panel, used for panel quirk detection -+ * drm_connector_set_panel_orientation - sets the connecter's panel_orientation -+ * @connector: connector for which to set the panel-orientation property. -+ * @panel_orientation: drm_panel_orientation value to set -+ * -+ * This function sets the connector's panel_orientation and attaches -+ * a "panel orientation" property to the connector. - * -- * This function should only be called for built-in panels, after setting -- * connector->display_info.panel_orientation first (if known). -+ * Calling this function on a connector where the panel_orientation has -+ * already been set is a no-op (e.g. the orientation has been overridden with -+ * a kernel commandline option). - * -- * This function will check for platform specific (e.g. DMI based) quirks -- * overriding display_info.panel_orientation first, then if panel_orientation -- * is not DRM_MODE_PANEL_ORIENTATION_UNKNOWN it will attach the -- * "panel orientation" property to the connector. -+ * It is allowed to call this function with a panel_orientation of -+ * DRM_MODE_PANEL_ORIENTATION_UNKNOWN, in which case it is a no-op. - * - * Returns: - * Zero on success, negative errno on failure. - */ --int drm_connector_init_panel_orientation_property( -- struct drm_connector *connector, int width, int height) -+int drm_connector_set_panel_orientation( -+ struct drm_connector *connector, -+ enum drm_panel_orientation panel_orientation) - { - struct drm_device *dev = connector->dev; - struct drm_display_info *info = &connector->display_info; - struct drm_property *prop; -- int orientation_quirk; - -- orientation_quirk = drm_get_panel_orientation_quirk(width, height); -- if (orientation_quirk != DRM_MODE_PANEL_ORIENTATION_UNKNOWN) -- info->panel_orientation = orientation_quirk; -+ /* Already set? */ -+ if (info->panel_orientation != DRM_MODE_PANEL_ORIENTATION_UNKNOWN) -+ return 0; - -- if (info->panel_orientation == DRM_MODE_PANEL_ORIENTATION_UNKNOWN) -+ /* Don't attach the property if the orientation is unknown */ -+ if (panel_orientation == DRM_MODE_PANEL_ORIENTATION_UNKNOWN) - return 0; - -+ info->panel_orientation = panel_orientation; -+ - prop = dev->mode_config.panel_orientation_property; - if (!prop) { - prop = drm_property_create_enum(dev, DRM_MODE_PROP_IMMUTABLE, -@@ -1761,7 +1765,37 @@ int drm_connector_init_panel_orientation_property( - info->panel_orientation); - return 0; - } --EXPORT_SYMBOL(drm_connector_init_panel_orientation_property); -+EXPORT_SYMBOL(drm_connector_set_panel_orientation); -+ -+/** -+ * drm_connector_set_panel_orientation_with_quirk - -+ * set the connecter's panel_orientation after checking for quirks -+ * @connector: connector for which to init the panel-orientation property. -+ * @panel_orientation: drm_panel_orientation value to set -+ * @width: width in pixels of the panel, used for panel quirk detection -+ * @height: height in pixels of the panel, used for panel quirk detection -+ * -+ * Like drm_connector_set_panel_orientation(), but with a check for platform -+ * specific (e.g. DMI based) quirks overriding the passed in panel_orientation. -+ * -+ * Returns: -+ * Zero on success, negative errno on failure. -+ */ -+int drm_connector_set_panel_orientation_with_quirk( -+ struct drm_connector *connector, -+ enum drm_panel_orientation panel_orientation, -+ int width, int height) -+{ -+ int orientation_quirk; -+ -+ orientation_quirk = drm_get_panel_orientation_quirk(width, height); -+ if (orientation_quirk != DRM_MODE_PANEL_ORIENTATION_UNKNOWN) -+ panel_orientation = orientation_quirk; -+ -+ return drm_connector_set_panel_orientation(connector, -+ panel_orientation); -+} -+EXPORT_SYMBOL(drm_connector_set_panel_orientation_with_quirk); - - int drm_connector_set_obj_prop(struct drm_mode_object *obj, - struct drm_property *property, -diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h -index 1d81bb31f..44b6c7f85 100644 ---- a/include/drm/drm_connector.h -+++ b/include/drm/drm_connector.h -@@ -1473,8 +1473,13 @@ int drm_connector_update_edid_property(struct drm_connector *connector, - const struct edid *edid); - void drm_connector_set_link_status_property(struct drm_connector *connector, - uint64_t link_status); --int drm_connector_init_panel_orientation_property( -- struct drm_connector *connector, int width, int height); -+int drm_connector_set_panel_orientation( -+ struct drm_connector *connector, -+ enum drm_panel_orientation panel_orientation); -+int drm_connector_set_panel_orientation_with_quirk( -+ struct drm_connector *connector, -+ enum drm_panel_orientation panel_orientation, -+ int width, int height); - - /** - * struct drm_tile_group - Tile group metadata --- -2.34.1 - diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55/0003-drm-panel-simple-Read-panel-orientation.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55/0003-drm-panel-simple-Read-panel-orientation.patch deleted file mode 100644 index c76a3747d4..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566-X55/0003-drm-panel-simple-Read-panel-orientation.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 953791baf27ea161378af5c78d8db337472507c8 Mon Sep 17 00:00:00 2001 -From: Dmitry Osipenko -Date: Fri, 14 Aug 2020 00:56:09 +0300 -Subject: [PATCH 3/4] drm/panel-simple: Read panel orientation - -The panel orientation needs to parsed from a device-tree and assigned to -the panel's connector in order to make orientation property available to -userspace. That's what this patch does for the panel-simple driver. - -Signed-off-by: Dmitry Osipenko -Signed-off-by: Sam Ravnborg -Link: https://patchwork.freedesktop.org/patch/msgid/20200813215609.28643-5-digetx@gmail.com ---- - drivers/gpu/drm/panel/panel-simple.c | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c -index f41d4e091..f10181b93 100644 ---- a/drivers/gpu/drm/panel/panel-simple.c -+++ b/drivers/gpu/drm/panel/panel-simple.c -@@ -127,6 +127,8 @@ struct panel_simple { - struct gpio_desc *spi_scl_gpio; - struct gpio_desc *spi_cs_gpio; - struct device_node *np_crtc; -+ -+ enum drm_panel_orientation orientation; - }; - - enum rockchip_cmd_type { -@@ -442,6 +444,9 @@ static int panel_simple_get_fixed_modes(struct panel_simple *panel) - if (panel->desc->bus_flags) - connector->display_info.bus_flags = panel->desc->bus_flags; - -+ /* set up connector's "panel orientation" property */ -+ drm_connector_set_panel_orientation(connector, panel->orientation); -+ - return num; - } - -@@ -789,6 +794,12 @@ static int panel_simple_probe(struct device *dev, const struct panel_desc *desc) - return -EPROBE_DEFER; - } - -+ err = of_drm_get_panel_orientation(dev->of_node, &panel->orientation); -+ if (err) { -+ dev_err(dev, "%pOF: failed to get orientation %d\n", dev->of_node, err); -+ return err; -+ } -+ - ddc = of_parse_phandle(dev->of_node, "ddc-i2c-bus", 0); - if (ddc) { - panel->ddc = of_find_i2c_adapter_by_node(ddc); --- -2.34.1 - diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55/0004-dts-Define-the-orientation-of-the-Powkiddy-X55-panel.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55/0004-dts-Define-the-orientation-of-the-Powkiddy-X55-panel.patch deleted file mode 100644 index 8db6d4847b..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566-X55/0004-dts-Define-the-orientation-of-the-Powkiddy-X55-panel.patch +++ /dev/null @@ -1,25 +0,0 @@ -From ad469e3890607d81f4b6ee0f8035537d76937370 Mon Sep 17 00:00:00 2001 -From: Johnny on Flame -Date: Mon, 7 Aug 2023 20:59:28 +0000 -Subject: [PATCH 4/4] dts: Define the orientation of the Powkiddy X55 panel. - ---- - .../boot/dts/rockchip/lcd/lcd_HX8394F_720x1280_mipi_dsi0.dtsi | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/arch/arm64/boot/dts/rockchip/lcd/lcd_HX8394F_720x1280_mipi_dsi0.dtsi b/arch/arm64/boot/dts/rockchip/lcd/lcd_HX8394F_720x1280_mipi_dsi0.dtsi -index 5eb492203..b3745a81b 100755 ---- a/arch/arm64/boot/dts/rockchip/lcd/lcd_HX8394F_720x1280_mipi_dsi0.dtsi -+++ b/arch/arm64/boot/dts/rockchip/lcd/lcd_HX8394F_720x1280_mipi_dsi0.dtsi -@@ -16,7 +16,7 @@ - init-delay-ms = <60>; - unprepare-delay-ms = <60>; - disable-delay-ms = <60>; -- -+ rotation = <90>; - - dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | - MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>; --- -2.34.1 - diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55/0005-disable-enum-int-mismatch-warning.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55/0005-disable-enum-int-mismatch-warning.patch deleted file mode 100644 index 4789856575..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566-X55/0005-disable-enum-int-mismatch-warning.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/Makefile b/Makefile -index 1c06eae06..9465e5561 100755 ---- a/Makefile -+++ b/Makefile -@@ -710,6 +710,7 @@ KBUILD_CFLAGS += $(call cc-disable-warning, array-compare) - KBUILD_CFLAGS += $(call cc-disable-warning, stringop-overread) - KBUILD_CFLAGS += $(call cc-disable-warning, dangling-pointer) - KBUILD_CFLAGS += $(call cc-disable-warning, address) -+KBUILD_CFLAGS += $(call cc-disable-warning, enum-int-mismatch) - - ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE - KBUILD_CFLAGS += -Os diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/001-fix-model-names.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55/001-fix-model-names.patch similarity index 100% rename from projects/Rockchip/packages/linux/patches/RK3566-ML/001-fix-model-names.patch rename to projects/Rockchip/packages/linux/patches/RK3566-X55/001-fix-model-names.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/002-rk817-power-driver-names.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55/002-rk817-power-driver-names.patch similarity index 100% rename from projects/Rockchip/packages/linux/patches/RK3566-ML/002-rk817-power-driver-names.patch rename to projects/Rockchip/packages/linux/patches/RK3566-X55/002-rk817-power-driver-names.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/003-v4-add-rk2023.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55/003-v4-add-rk2023.patch similarity index 100% rename from projects/Rockchip/packages/linux/patches/RK3566-ML/003-v4-add-rk2023.patch rename to projects/Rockchip/packages/linux/patches/RK3566-X55/003-v4-add-rk2023.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/004-add-rg351v.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55/004-add-rg351v.patch similarity index 100% rename from projects/Rockchip/packages/linux/patches/RK3566-ML/004-add-rg351v.patch rename to projects/Rockchip/packages/linux/patches/RK3566-X55/004-add-rg351v.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/005-set-mac-address.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55/005-set-mac-address.patch similarity index 100% rename from projects/Rockchip/packages/linux/patches/RK3566-ML/005-set-mac-address.patch rename to projects/Rockchip/packages/linux/patches/RK3566-X55/005-set-mac-address.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-ML/006-v2-add-powkiddy-x55.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55/006-v2-add-powkiddy-x55.patch similarity index 100% rename from projects/Rockchip/packages/linux/patches/RK3566-ML/006-v2-add-powkiddy-x55.patch rename to projects/Rockchip/packages/linux/patches/RK3566-X55/006-v2-add-powkiddy-x55.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/001-fix-model-names.patch b/projects/Rockchip/packages/linux/patches/RK3566/001-fix-model-names.patch similarity index 100% rename from projects/Rockchip/packages/linux/patches/RK3566-X55-ML/001-fix-model-names.patch rename to projects/Rockchip/packages/linux/patches/RK3566/001-fix-model-names.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/002-rk817-power-driver-names.patch b/projects/Rockchip/packages/linux/patches/RK3566/002-rk817-power-driver-names.patch similarity index 100% rename from projects/Rockchip/packages/linux/patches/RK3566-X55-ML/002-rk817-power-driver-names.patch rename to projects/Rockchip/packages/linux/patches/RK3566/002-rk817-power-driver-names.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/003-v4-add-rk2023.patch b/projects/Rockchip/packages/linux/patches/RK3566/003-v4-add-rk2023.patch similarity index 100% rename from projects/Rockchip/packages/linux/patches/RK3566-X55-ML/003-v4-add-rk2023.patch rename to projects/Rockchip/packages/linux/patches/RK3566/003-v4-add-rk2023.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/004-add-rg351v.patch b/projects/Rockchip/packages/linux/patches/RK3566/004-add-rg351v.patch similarity index 100% rename from projects/Rockchip/packages/linux/patches/RK3566-X55-ML/004-add-rg351v.patch rename to projects/Rockchip/packages/linux/patches/RK3566/004-add-rg351v.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/005-set-mac-address.patch b/projects/Rockchip/packages/linux/patches/RK3566/005-set-mac-address.patch similarity index 100% rename from projects/Rockchip/packages/linux/patches/RK3566-X55-ML/005-set-mac-address.patch rename to projects/Rockchip/packages/linux/patches/RK3566/005-set-mac-address.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55-ML/006-v2-add-powkiddy-x55.patch b/projects/Rockchip/packages/linux/patches/RK3566/006-v2-add-powkiddy-x55.patch similarity index 100% rename from projects/Rockchip/packages/linux/patches/RK3566-X55-ML/006-v2-add-powkiddy-x55.patch rename to projects/Rockchip/packages/linux/patches/RK3566/006-v2-add-powkiddy-x55.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566/0005-disable-enum-int-mismatch-warning.patch b/projects/Rockchip/packages/linux/patches/RK3588/0005-disable-enum-int-mismatch-warning.patch similarity index 100% rename from projects/Rockchip/packages/linux/patches/RK3566/0005-disable-enum-int-mismatch-warning.patch rename to projects/Rockchip/packages/linux/patches/RK3588/0005-disable-enum-int-mismatch-warning.patch diff --git a/projects/Rockchip/packages/u-boot/package.mk b/projects/Rockchip/packages/u-boot/package.mk index 040b998993..847ff40447 100644 --- a/projects/Rockchip/packages/u-boot/package.mk +++ b/projects/Rockchip/packages/u-boot/package.mk @@ -18,15 +18,11 @@ case ${DEVICE} in PKG_VERSION="d34ff0716" PKG_GIT_CLONE_BRANCH="v2017.09-rk3588" ;; - *ML) + RK356*) PKG_URL="https://github.com/u-boot/u-boot.git" PKG_VERSION="27089f1e4d11fd7e0619097b59258d0428cde2ac" PKG_GIT_CLONE_BRANCH="master" ;; - RK356*) - PKG_URL="${PKG_SITE}/rk356x-uboot.git" - PKG_VERSION="88b2f26" - ;; RK3399) PKG_URL="${PKG_SITE}/rk3399-uboot.git" PKG_VERSION="bb226439ac676a75b87a555e8741ac3c0b3e11b1" diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-X55/0005-disable-enum-int-mismatch-warning.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-X55/0005-disable-enum-int-mismatch-warning.patch deleted file mode 100644 index 850022d7c3..0000000000 --- a/projects/Rockchip/packages/u-boot/patches/RK3566-X55/0005-disable-enum-int-mismatch-warning.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/Makefile b/Makefile -index cdb3ff9..d439225 100644 ---- a/Makefile -+++ b/Makefile -@@ -596,6 +596,8 @@ KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks) - KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member) - KBUILD_CFLAGS += $(call cc-disable-warning, dangling-pointer) - KBUILD_CFLAGS += $(call cc-disable-warning, address) -+KBUILD_CFLAGS += $(call cc-disable-warning, enum-int-mismatch) -+KBUILD_CFLAGS += $(call cc-disable-warning, maybe-uninitialized) - - KBUILD_CFLAGS += -g - # $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-X55/001-charge-led.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-X55/001-charge-led.patch deleted file mode 100644 index a26c53b2bb..0000000000 --- a/projects/Rockchip/packages/u-boot/patches/RK3566-X55/001-charge-led.patch +++ /dev/null @@ -1,219 +0,0 @@ -diff --git a/arch/arm/dts/rk3568-evb.dts b/arch/arm/dts/rk3568-evb.dts -index 950bc3a..f893a9a 100644 ---- a/arch/arm/dts/rk3568-evb.dts -+++ b/arch/arm/dts/rk3568-evb.dts -@@ -28,30 +28,77 @@ - press-threshold-microvolt = <9>; - }; - }; -- leds: gpio-leds { -+ /*leds: gpio-leds { - compatible = "gpio-leds"; - pinctrl-names = "default"; - pinctrl-0 =<&leds_gpio>; - - led@1 { -- gpios = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>; -+ gpios = <&gpio4 RK_PC5 GPIO_ACTIVE_HIGH>; - label = "battery_full"; - default-state="on"; - retain-state-suspended; - }; - - led@2 { -- gpios = <&gpio0 RK_PC6 GPIO_ACTIVE_HIGH>; -+ gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>; - label = "battery_charging"; - retain-state-suspended; - }; - - led@3 { -- gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>; -+ gpios = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>; - label = "low_power"; - default-state="off"; - retain-state-suspended; - }; -+ };*/ -+}; -+ -+&i2c0 { -+ rk817: pmic@20 { -+ battery { -+ compatible = "rk817,battery"; -+ ocv_table = <3400 3553 3621 3688 3735 3768 3801 -+ 3826 3843 3857 3878 3904 3934 3972 -+ 4006 4020 4030 4044 4059 4083 4138>; -+ design_capacity = <3527>; -+ design_qmax = <3880>; -+ bat_res = <91>; -+ sleep_enter_current = <150>; -+ sleep_exit_current = <180>; -+ sleep_filter_current = <100>; -+ power_off_thresd = <3350>; -+ zero_algorithm_vol = <3300>; -+ max_soc_offset = <60>; -+ monitor_sec = <5>; -+ sample_res = <10>; -+ virtual_power = <0>; -+ // dc_det_gpio = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>;//uboot使用 -+ charge_red_gpio = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>;//充电指示灯 红 -+ charge_green_gpio = <&gpio4 RK_PB5 GPIO_ACTIVE_HIGH>;//充电指示灯 绿 -+ charge_yellow_gpio = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;//充电指示灯 黄 -+ }; -+ -+ charger { -+ compatible = "rk817,charger"; -+ min_input_voltage = <4500>; -+ max_input_current = <2000>; -+ max_chrg_current = <2000>; -+ max_chrg_voltage = <4300>; -+ chrg_term_mode = <0>; -+ chrg_finish_cur = <300>; -+ virtual_power = <0>; -+ dc_det_adc = <0>; -+ // dc_det_gpio = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>; -+ charge_red_gpio = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>;//充电指示灯 红 -+ charge_green_gpio = <&gpio4 RK_PB5 GPIO_ACTIVE_HIGH>;//充电指示灯 绿 -+ charge_yellow_gpio = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;//充电指示灯 黄 -+ pinctrl-names = "default"; -+ pinctrl-0 = <&charge_led_gpio>; -+ extcon = <&usb2phy0>; -+ gate_function_disable = <1>; -+ }; - }; - }; - -@@ -131,12 +178,20 @@ - }; - - &pinctrl { -- gpio-leds { -+ /*gpio-leds { - leds_gpio: leds-gpio { - rockchip,pins = -- <0 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>, -- <0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>, -- <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>; -+ <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>, -+ <4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>, -+ <4 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>; - }; -- }; -+ };*/ -+ led { -+ charge_led_gpio:charge-led-gpio{ -+ rockchip,pins = <4 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>, -+ <4 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>, -+ <4 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ }; - }; -diff --git a/drivers/power/fuel_gauge/fg_rk817.c b/drivers/power/fuel_gauge/fg_rk817.c -index b5abb72..f54188c 100644 ---- a/drivers/power/fuel_gauge/fg_rk817.c -+++ b/drivers/power/fuel_gauge/fg_rk817.c -@@ -256,6 +256,10 @@ struct rk817_battery_device { - u32 bat_res_up; - u32 bat_res_down; - u32 variant; -+ struct gpio_desc dc_det_gpio; -+ struct gpio_desc charge_red_gpio; -+ struct gpio_desc charge_green_gpio; -+ struct gpio_desc charge_yellow_gpio; - }; - - static u32 interpolate(int value, u32 *table, int size) -@@ -948,15 +952,27 @@ static int rk817_bat_update_get_current(struct udevice *dev) - return VIRTUAL_POWER_CUR; - } - -+static int get_dc_statue(struct rk817_battery_device *battery) -+{ -+ -+// printf("%s.... dc status = %d \n",__func__,dm_gpio_get_value(&battery->dc_det_gpio)); -+ if (dm_gpio_get_value(&battery->dc_det_gpio)) -+ return true; -+ else -+ return false; -+} - static int rk817_bat_dwc_otg_check_dpdm(struct rk817_battery_device *battery) - { - if (battery->variant == RK809_ID) { -+ // printf("%s.... rk809 \n",__func__); - if (rk817_bat_read(battery, PMIC_SYS_STS) & PLUG_IN_STS) - return AC_CHARGER; - else - return NO_CHARGER; - } else { -+ // printf("%s.... rk817 \n",__func__); - return rockchip_chg_get_type(); -+ // return get_dc_statue(battery); - } - } - -@@ -1186,6 +1202,23 @@ static void rk817_bat_smooth_charge(struct rk817_battery_device *battery) - else if (battery->dsoc < 0) - battery->dsoc = 0; - -+ //黄灯 -+ if (get_dc_statue(battery)){ -+ dm_gpio_set_value(&battery->charge_yellow_gpio,1); -+ if (battery->dsoc == 100) -+ dm_gpio_set_value(&battery->charge_yellow_gpio,0); -+ }else -+ dm_gpio_set_value(&battery->charge_yellow_gpio,0); -+ -+ //红绿 -+ if (battery->dsoc >= 15){ -+ dm_gpio_set_value(&battery->charge_green_gpio,1); //电量足 -+ dm_gpio_set_value(&battery->charge_red_gpio,0); -+ }else{ -+ dm_gpio_set_value(&battery->charge_green_gpio,0); //电量不足 -+ dm_gpio_set_value(&battery->charge_red_gpio,1); -+ } -+ - rk817_bat_save_dsoc(battery, battery->dsoc); - rk817_bat_save_cap(battery, battery->remain_cap / 1000); - out: -@@ -1319,6 +1352,39 @@ static int rk817_fg_ofdata_to_platdata(struct udevice *dev) - battery->res_div = (value == SAMPLE_RES_20mR) ? - SAMPLE_RES_DIV2 : SAMPLE_RES_DIV1; - -+ value = gpio_request_by_name_nodev(dev_ofnode(dev), "dc_det_gpio", -+ 0, &battery->dc_det_gpio,GPIOD_IS_IN); -+ if (!value) { -+ printf("DC is valid\n"); -+ } else { -+ printf("DC is invalid\n"); -+ } -+ -+ value = gpio_request_by_name_nodev(dev_ofnode(dev), "charge_red_gpio", -+ 0, &battery->charge_red_gpio,GPIOD_IS_OUT); -+ if (!value) { -+ printf("charge_red_gpio is valid\n"); -+ } else { -+ printf("charge_red_gpio is invalid\n"); -+ } -+ -+ value = gpio_request_by_name_nodev(dev_ofnode(dev), "charge_green_gpio", -+ 0, &battery->charge_green_gpio,GPIOD_IS_OUT); -+ if (!value) { -+ printf("charge_green_gpio is valid\n"); -+ } else { -+ printf("charge_green_gpio is invalid\n"); -+ } -+ -+ -+ value = gpio_request_by_name_nodev(dev_ofnode(dev), "charge_yellow_gpio", -+ 0, &battery->charge_yellow_gpio,GPIOD_IS_OUT); -+ if (!value) { -+ printf("charge_yellow_gpio is valid\n"); -+ } else { -+ printf("charge_yellow_gpio is invalid\n"); -+ } -+ - DBG("OCV Value:"); - for (i = 0; i < battery->ocv_size; i++) - DBG("%d ", battery->ocv_table[i]); diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/001-v3-add_additional_boards_and_features_to_rgxx3.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-X55/001-v3-add_additional_boards_and_features_to_rgxx3.patch similarity index 100% rename from projects/Rockchip/packages/u-boot/patches/RK3566-ML/001-v3-add_additional_boards_and_features_to_rgxx3.patch rename to projects/Rockchip/packages/u-boot/patches/RK3566-X55/001-v3-add_additional_boards_and_features_to_rgxx3.patch diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/002-v2-add-powkiddy-x55.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-X55/002-v2-add-powkiddy-x55.patch similarity index 100% rename from projects/Rockchip/packages/u-boot/patches/RK3566-ML/002-v2-add-powkiddy-x55.patch rename to projects/Rockchip/packages/u-boot/patches/RK3566-X55/002-v2-add-powkiddy-x55.patch diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-ML/003-fix-dtb-and-vs.patch b/projects/Rockchip/packages/u-boot/patches/RK3566-X55/003-fix-dtb-and-vs.patch similarity index 100% rename from projects/Rockchip/packages/u-boot/patches/RK3566-ML/003-fix-dtb-and-vs.patch rename to projects/Rockchip/packages/u-boot/patches/RK3566-X55/003-fix-dtb-and-vs.patch diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566/0005-disable-enum-int-mismatch-warning.patch b/projects/Rockchip/packages/u-boot/patches/RK3566/0005-disable-enum-int-mismatch-warning.patch deleted file mode 100644 index 850022d7c3..0000000000 --- a/projects/Rockchip/packages/u-boot/patches/RK3566/0005-disable-enum-int-mismatch-warning.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/Makefile b/Makefile -index cdb3ff9..d439225 100644 ---- a/Makefile -+++ b/Makefile -@@ -596,6 +596,8 @@ KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks) - KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member) - KBUILD_CFLAGS += $(call cc-disable-warning, dangling-pointer) - KBUILD_CFLAGS += $(call cc-disable-warning, address) -+KBUILD_CFLAGS += $(call cc-disable-warning, enum-int-mismatch) -+KBUILD_CFLAGS += $(call cc-disable-warning, maybe-uninitialized) - - KBUILD_CFLAGS += -g - # $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-X55-ML/001-v3-add_additional_boards_and_features_to_rgxx3.patch b/projects/Rockchip/packages/u-boot/patches/RK3566/001-v3-add_additional_boards_and_features_to_rgxx3.patch similarity index 100% rename from projects/Rockchip/packages/u-boot/patches/RK3566-X55-ML/001-v3-add_additional_boards_and_features_to_rgxx3.patch rename to projects/Rockchip/packages/u-boot/patches/RK3566/001-v3-add_additional_boards_and_features_to_rgxx3.patch diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-X55-ML/002-v2-add-powkiddy-x55.patch b/projects/Rockchip/packages/u-boot/patches/RK3566/002-v2-add-powkiddy-x55.patch similarity index 100% rename from projects/Rockchip/packages/u-boot/patches/RK3566-X55-ML/002-v2-add-powkiddy-x55.patch rename to projects/Rockchip/packages/u-boot/patches/RK3566/002-v2-add-powkiddy-x55.patch diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566-X55-ML/003-fix-dtb-and-vs.patch b/projects/Rockchip/packages/u-boot/patches/RK3566/003-fix-dtb-and-vs.patch similarity index 100% rename from projects/Rockchip/packages/u-boot/patches/RK3566-X55-ML/003-fix-dtb-and-vs.patch rename to projects/Rockchip/packages/u-boot/patches/RK3566/003-fix-dtb-and-vs.patch From 86e4557bc87d2f43665d56b5fa379dd9b33f2426 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 27 Dec 2023 19:48:49 +0000 Subject: [PATCH 075/167] Fixes for RK3566 and RK3566-X55. --- packages/devel/glibc/package.mk | 3 -- packages/network/iptables/package.mk | 7 --- packages/network/tailscale/package.mk | 7 --- .../patches/RK3566/01-fix-build-issue.patch | 20 -------- .../patches/RK3566/02-fix-another-one.patch | 50 ------------------- 5 files changed, 87 deletions(-) delete mode 100644 packages/network/wireguard-linux-compat/patches/RK3566/01-fix-build-issue.patch delete mode 100644 packages/network/wireguard-linux-compat/patches/RK3566/02-fix-another-one.patch diff --git a/packages/devel/glibc/package.mk b/packages/devel/glibc/package.mk index 84b55eb88a..8265f7b7ca 100644 --- a/packages/devel/glibc/package.mk +++ b/packages/devel/glibc/package.mk @@ -13,9 +13,6 @@ PKG_LONGDESC="The Glibc package contains the main C library." PKG_BUILD_FLAGS="+bfd -gold" case "${DEVICE}" in - RK356*) - OPT_ENABLE_KERNEL=4.4.0 - ;; RK358*) OPT_ENABLE_KERNEL=5.10.0 ;; diff --git a/packages/network/iptables/package.mk b/packages/network/iptables/package.mk index 44c9a80fc1..fbb70374dc 100644 --- a/packages/network/iptables/package.mk +++ b/packages/network/iptables/package.mk @@ -12,13 +12,6 @@ PKG_TOOLCHAIN="autotools" case ${DEVICE} in - RK356*) - PKG_VERSION="1.8.3" - PKG_EXTENSION="bz2" - PKG_PATCH_DIRS+="4.x" - PKG_CONFIGURE_OPTS_TARGET="--with-kernel=$(kernel_path) - CPPFLAGS=-I${SYSROOT_PREFIX}/usr/include" - ;; *) PKG_VERSION="1.8.9" PKG_EXTENSION="xz" diff --git a/packages/network/tailscale/package.mk b/packages/network/tailscale/package.mk index fd80beca9a..d9134273d5 100644 --- a/packages/network/tailscale/package.mk +++ b/packages/network/tailscale/package.mk @@ -22,13 +22,6 @@ esac PKG_URL="https://pkgs.tailscale.com/stable/tailscale_${PKG_VERSION}${TS_ARCH}.tgz" -# Don't wildcard (X55) -case ${DEVICE} in - RK3566) - PKG_DEPENDS_TARGET+=" wireguard-linux-compat" - ;; -esac - pre_unpack() { mkdir -p ${PKG_BUILD} tar --strip-components=1 -xf $SOURCES/${PKG_NAME}/${PKG_NAME}-${PKG_VERSION}.tgz -C ${PKG_BUILD} tailscale_${PKG_VERSION}${TS_ARCH} diff --git a/packages/network/wireguard-linux-compat/patches/RK3566/01-fix-build-issue.patch b/packages/network/wireguard-linux-compat/patches/RK3566/01-fix-build-issue.patch deleted file mode 100644 index 905ab9a256..0000000000 --- a/packages/network/wireguard-linux-compat/patches/RK3566/01-fix-build-issue.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff -rupN wireguard-linux-compat.orig/src/compat/compat.h wireguard-linux-compat/src/compat/compat.h ---- wireguard-linux-compat.orig/src/compat/compat.h 2022-05-12 09:47:59.423533102 +0000 -+++ wireguard-linux-compat/src/compat/compat.h 2022-05-12 09:49:46.623499934 +0000 -@@ -686,14 +686,14 @@ struct __compat_dummy_container { char d - #define genl_dump_check_consistent(a, b) genl_dump_check_consistent(a, b, &genl_family) - #endif - --#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0) && !defined(ISRHEL7) -+/* #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0) && !defined(ISRHEL7) - static inline void *skb_put_data(struct sk_buff *skb, const void *data, unsigned int len) - { - void *tmp = skb_put(skb, len); - memcpy(tmp, data, len); - return tmp; - } --#endif -+#endif */ - - #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) && !defined(ISRHEL7) - #define napi_complete_done(n, work_done) napi_complete(n) diff --git a/packages/network/wireguard-linux-compat/patches/RK3566/02-fix-another-one.patch b/packages/network/wireguard-linux-compat/patches/RK3566/02-fix-another-one.patch deleted file mode 100644 index bc786c259b..0000000000 --- a/packages/network/wireguard-linux-compat/patches/RK3566/02-fix-another-one.patch +++ /dev/null @@ -1,50 +0,0 @@ -diff -rupN wireguard-linux-compat.orig/src/compat/compat.h wireguard-linux-compat/src/compat/compat.h ---- wireguard-linux-compat.orig/src/compat/compat.h 2022-05-18 13:48:16.173696186 +0000 -+++ wireguard-linux-compat/src/compat/compat.h 2022-05-18 13:54:54.027438354 +0000 -@@ -414,16 +414,6 @@ static inline u64 __compat_jiffies64_to_ - } - #define jiffies64_to_nsecs __compat_jiffies64_to_nsecs - #endif --static inline u64 ktime_get_coarse_boottime_ns(void) --{ --#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) -- return ktime_to_ns(ktime_get_boottime()); --#elif (LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 12) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)) || LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 53) -- return ktime_to_ns(ktime_mono_to_any(ns_to_ktime(jiffies64_to_nsecs(get_jiffies_64())), TK_OFFS_BOOT)); --#else -- return ktime_to_ns(ktime_get_coarse_boottime()); --#endif --} - #endif - - #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0) -@@ -1080,29 +1070,8 @@ static inline void skb_reset_redirect(st - #define pre_exit exit - #endif - --#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) --#include --#include --#include --static inline __be16 ip_tunnel_parse_protocol(const struct sk_buff *skb) --{ -- if (skb_network_header(skb) >= skb->head && -- (skb_network_header(skb) + sizeof(struct iphdr)) <= skb_tail_pointer(skb) && -- ip_hdr(skb)->version == 4) -- return htons(ETH_P_IP); -- if (skb_network_header(skb) >= skb->head && -- (skb_network_header(skb) + sizeof(struct ipv6hdr)) <= skb_tail_pointer(skb) && -- ipv6_hdr(skb)->version == 6) -- return htons(ETH_P_IPV6); -- return 0; --} --#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0) || defined(ISRHEL8) --static const struct header_ops ip_tunnel_header_ops = { .parse_protocol = ip_tunnel_parse_protocol }; --#else - #define header_ops hard_header_len - #define ip_tunnel_header_ops *(char *)0 - (char *)0 --#endif --#endif - - #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 9, 0) - #define kfree_sensitive(a) kzfree(a) From 55db67306870c2209353c7941a085ed36132d371 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 27 Dec 2023 20:21:59 +0000 Subject: [PATCH 076/167] Update hardware quirks for RK3566 and X55. --- .../devices/Anbernic RG353V/030-suspend_mode | 14 ---------- .../devices/Anbernic RG503/030-suspend_mode | 14 ---------- .../devices/Powkiddy RGB30/030-suspend_mode | 14 ---------- .../devices/Powkiddy RGB30/050-audio_path | 9 ------ .../devices/Powkiddy RK2023/030-suspend_mode | 14 ---------- .../devices/Powkiddy RK2023/050-audio_path | 9 ------ .../Powkiddy x55/sleep.d/post/001-audio | 28 ------------------- .../RK3566}/030-suspend_mode | 2 -- .../quirks/platforms/RK3566/050-audio_path | 2 +- .../quirks/platforms/RK3566/050-volume | 8 ++++++ projects/Rockchip/devices/RK3566-X55/options | 3 +- projects/Rockchip/devices/RK3566/options | 3 +- 12 files changed, 11 insertions(+), 109 deletions(-) delete mode 100755 packages/hardware/quirks/devices/Anbernic RG353V/030-suspend_mode delete mode 100755 packages/hardware/quirks/devices/Anbernic RG503/030-suspend_mode delete mode 100755 packages/hardware/quirks/devices/Powkiddy RGB30/030-suspend_mode delete mode 100755 packages/hardware/quirks/devices/Powkiddy RGB30/050-audio_path delete mode 100755 packages/hardware/quirks/devices/Powkiddy RK2023/030-suspend_mode delete mode 100755 packages/hardware/quirks/devices/Powkiddy RK2023/050-audio_path delete mode 100644 packages/hardware/quirks/devices/Powkiddy x55/sleep.d/post/001-audio rename packages/hardware/quirks/{devices/Anbernic RG353P => platforms/RK3566}/030-suspend_mode (87%) create mode 100755 packages/hardware/quirks/platforms/RK3566/050-volume diff --git a/packages/hardware/quirks/devices/Anbernic RG353V/030-suspend_mode b/packages/hardware/quirks/devices/Anbernic RG353V/030-suspend_mode deleted file mode 100755 index 523d9736bb..0000000000 --- a/packages/hardware/quirks/devices/Anbernic RG353V/030-suspend_mode +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -. /etc/profile.d/001-functions - -MYSLEEPMODE=$(get_setting system.suspendmode) -if [ -z "${MYSLEEPMODE}" ] -then - /usr/bin/suspendmode mem -fi - -echo s2idle >/sys/power/mem_sleep - diff --git a/packages/hardware/quirks/devices/Anbernic RG503/030-suspend_mode b/packages/hardware/quirks/devices/Anbernic RG503/030-suspend_mode deleted file mode 100755 index a7a9cbb02e..0000000000 --- a/packages/hardware/quirks/devices/Anbernic RG503/030-suspend_mode +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -. /etc/profile.d/001-functions - -MYSLEEPMODE=$(get_setting system.suspendmode) -if [ -z "${MYSLEEPMODE}" ] -then - /usr/bin/suspendmode mem -fi - -echo s2idle >/sys/power/mem_sleep - diff --git a/packages/hardware/quirks/devices/Powkiddy RGB30/030-suspend_mode b/packages/hardware/quirks/devices/Powkiddy RGB30/030-suspend_mode deleted file mode 100755 index 523d9736bb..0000000000 --- a/packages/hardware/quirks/devices/Powkiddy RGB30/030-suspend_mode +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -. /etc/profile.d/001-functions - -MYSLEEPMODE=$(get_setting system.suspendmode) -if [ -z "${MYSLEEPMODE}" ] -then - /usr/bin/suspendmode mem -fi - -echo s2idle >/sys/power/mem_sleep - diff --git a/packages/hardware/quirks/devices/Powkiddy RGB30/050-audio_path b/packages/hardware/quirks/devices/Powkiddy RGB30/050-audio_path deleted file mode 100755 index f5860cdb57..0000000000 --- a/packages/hardware/quirks/devices/Powkiddy RGB30/050-audio_path +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -cat </storage/.config/profile.d/002-audio_path -DEVICE_PLAYBACK_PATH_SPK="HP" -DEVICE_PLAYBACK_PATH_HP="SPK" -DEVICE_PLAYBACK_PATH="Playback Path" -EOF diff --git a/packages/hardware/quirks/devices/Powkiddy RK2023/030-suspend_mode b/packages/hardware/quirks/devices/Powkiddy RK2023/030-suspend_mode deleted file mode 100755 index 523d9736bb..0000000000 --- a/packages/hardware/quirks/devices/Powkiddy RK2023/030-suspend_mode +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -. /etc/profile.d/001-functions - -MYSLEEPMODE=$(get_setting system.suspendmode) -if [ -z "${MYSLEEPMODE}" ] -then - /usr/bin/suspendmode mem -fi - -echo s2idle >/sys/power/mem_sleep - diff --git a/packages/hardware/quirks/devices/Powkiddy RK2023/050-audio_path b/packages/hardware/quirks/devices/Powkiddy RK2023/050-audio_path deleted file mode 100755 index f5860cdb57..0000000000 --- a/packages/hardware/quirks/devices/Powkiddy RK2023/050-audio_path +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -cat </storage/.config/profile.d/002-audio_path -DEVICE_PLAYBACK_PATH_SPK="HP" -DEVICE_PLAYBACK_PATH_HP="SPK" -DEVICE_PLAYBACK_PATH="Playback Path" -EOF diff --git a/packages/hardware/quirks/devices/Powkiddy x55/sleep.d/post/001-audio b/packages/hardware/quirks/devices/Powkiddy x55/sleep.d/post/001-audio deleted file mode 100644 index bc699e4522..0000000000 --- a/packages/hardware/quirks/devices/Powkiddy x55/sleep.d/post/001-audio +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -# Workaround for no audio on wake from sleep. - -. /etc/profile - -DEVICE_HEADPHONE_DEV="/sys/devices/platform/rk-headset/extcon/extcon3/state" -HEADPHONE_STATE=$(awk 'BEGIN {FS="="} /HEADPHONE/ {print $2}' ${DEVICE_HEADPHONE_DEV}) - -amixer -c 0 set "MUTE" "MUTE" - -amixer -c 0 set "Capture MIC Path" "Main Mic" -amixer -c 0 set "Capture MIC Path" "MIC OFF" - -case ${HEADPHONE_STATE} in - 1) - amixer -c 0 set "Playback Path" "${DEVICE_PLAYBACK_PATH_SPK}" - amixer -c 0 set "Playback Path" "${DEVICE_PLAYBACK_PATH_HP}" - ;; - 0) - amixer -c 0 set "Playback Path" "${DEVICE_PLAYBACK_PATH_HP}" - amixer -c 0 set "Playback Path" "${DEVICE_PLAYBACK_PATH_SPK}" - ;; -esac - -amixer -c 0 set "MUTE" "UNMUTE" diff --git a/packages/hardware/quirks/devices/Anbernic RG353P/030-suspend_mode b/packages/hardware/quirks/platforms/RK3566/030-suspend_mode similarity index 87% rename from packages/hardware/quirks/devices/Anbernic RG353P/030-suspend_mode rename to packages/hardware/quirks/platforms/RK3566/030-suspend_mode index 523d9736bb..a5b3d79e5d 100755 --- a/packages/hardware/quirks/devices/Anbernic RG353P/030-suspend_mode +++ b/packages/hardware/quirks/platforms/RK3566/030-suspend_mode @@ -10,5 +10,3 @@ then /usr/bin/suspendmode mem fi -echo s2idle >/sys/power/mem_sleep - diff --git a/packages/hardware/quirks/platforms/RK3566/050-audio_path b/packages/hardware/quirks/platforms/RK3566/050-audio_path index 0aafc65654..f12a3983e0 100755 --- a/packages/hardware/quirks/platforms/RK3566/050-audio_path +++ b/packages/hardware/quirks/platforms/RK3566/050-audio_path @@ -5,5 +5,5 @@ cat </storage/.config/profile.d/002-audio_path DEVICE_PLAYBACK_PATH_SPK="SPK" DEVICE_PLAYBACK_PATH_HP="HP" -DEVICE_PLAYBACK_PATH="Playback Path" +DEVICE_PLAYBACK_PATH="Playback Mux" EOF diff --git a/packages/hardware/quirks/platforms/RK3566/050-volume b/packages/hardware/quirks/platforms/RK3566/050-volume new file mode 100755 index 0000000000..2594c1543a --- /dev/null +++ b/packages/hardware/quirks/platforms/RK3566/050-volume @@ -0,0 +1,8 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +. /storage/.config/profile.d/001-device_config + +# RK3566 devices have a master volume attached to card 0 that needs to be set to 100% on startup. +amixer -c 0 set "Master" "100%" diff --git a/projects/Rockchip/devices/RK3566-X55/options b/projects/Rockchip/devices/RK3566-X55/options index f8690886db..bc3aa84e38 100644 --- a/projects/Rockchip/devices/RK3566-X55/options +++ b/projects/Rockchip/devices/RK3566-X55/options @@ -74,8 +74,7 @@ DEBUG_TTY="/dev/ttyS2" # kernel serial console - #EXTRA_CMDLINE="quiet rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20 initcall_blacklist=uvc_init log_buf_len=1M" - EXTRA_CMDLINE="rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty1 ssh consoleblank=0 systemd.show_status=0 loglevel=8 panic=20 nopkmute" + EXTRA_CMDLINE="quiet rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty1 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20" # additional packages to install # ADDITIONAL_PACKAGES="" diff --git a/projects/Rockchip/devices/RK3566/options b/projects/Rockchip/devices/RK3566/options index e0b068e669..d2016de3df 100644 --- a/projects/Rockchip/devices/RK3566/options +++ b/projects/Rockchip/devices/RK3566/options @@ -74,8 +74,7 @@ DEBUG_TTY="/dev/ttyS2" # kernel serial console - #EXTRA_CMDLINE="quiet rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20 initcall_blacklist=uvc_init log_buf_len=1M" - EXTRA_CMDLINE="rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty1 ssh consoleblank=0 systemd.show_status=0 loglevel=8 panic=20 nopkmute" + EXTRA_CMDLINE="quiet rootwait earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000n8 console=tty1 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20" # additional packages to install # ADDITIONAL_PACKAGES="" From 6dd39a2767aa8581ab480b090a13a1e749198e72 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 27 Dec 2023 21:33:44 +0000 Subject: [PATCH 077/167] Fix spl, update rkbin and firmware, fix a few quirks. --- .../quirks/devices/Anbernic RG353P/010-governors | 9 --------- .../hardware/quirks/devices/Anbernic RG503/010-governors | 9 --------- .../hardware/quirks/devices/Powkiddy RGB30/010-governors | 9 --------- .../quirks/devices/Powkiddy RK2023/010-governors | 9 --------- .../Anbernic RG353V => platforms/RK3566}/010-governors | 3 +-- packages/hardware/quirks/platforms/RK3566/050-volume | 2 +- packages/tools/rkbin/package.mk | 2 +- projects/Rockchip/devices/RK3566-X55/options | 6 +++--- projects/Rockchip/devices/RK3566/options | 6 +++--- 9 files changed, 9 insertions(+), 46 deletions(-) delete mode 100755 packages/hardware/quirks/devices/Anbernic RG353P/010-governors delete mode 100755 packages/hardware/quirks/devices/Anbernic RG503/010-governors delete mode 100755 packages/hardware/quirks/devices/Powkiddy RGB30/010-governors delete mode 100755 packages/hardware/quirks/devices/Powkiddy RK2023/010-governors rename packages/hardware/quirks/{devices/Anbernic RG353V => platforms/RK3566}/010-governors (67%) diff --git a/packages/hardware/quirks/devices/Anbernic RG353P/010-governors b/packages/hardware/quirks/devices/Anbernic RG353P/010-governors deleted file mode 100755 index e1a4622419..0000000000 --- a/packages/hardware/quirks/devices/Anbernic RG353P/010-governors +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -cat </storage/.config/profile.d/010-governors -CPU_FREQ=("/sys/devices/system/cpu/cpufreq/policy0") -GPU_FREQ="/sys/devices/platform/fde60000.gpu/devfreq/fde60000.gpu" -DMC_FREQ="/sys/devices/platform/dmc/devfreq/dmc" -EOF diff --git a/packages/hardware/quirks/devices/Anbernic RG503/010-governors b/packages/hardware/quirks/devices/Anbernic RG503/010-governors deleted file mode 100755 index e1a4622419..0000000000 --- a/packages/hardware/quirks/devices/Anbernic RG503/010-governors +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -cat </storage/.config/profile.d/010-governors -CPU_FREQ=("/sys/devices/system/cpu/cpufreq/policy0") -GPU_FREQ="/sys/devices/platform/fde60000.gpu/devfreq/fde60000.gpu" -DMC_FREQ="/sys/devices/platform/dmc/devfreq/dmc" -EOF diff --git a/packages/hardware/quirks/devices/Powkiddy RGB30/010-governors b/packages/hardware/quirks/devices/Powkiddy RGB30/010-governors deleted file mode 100755 index e1a4622419..0000000000 --- a/packages/hardware/quirks/devices/Powkiddy RGB30/010-governors +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -cat </storage/.config/profile.d/010-governors -CPU_FREQ=("/sys/devices/system/cpu/cpufreq/policy0") -GPU_FREQ="/sys/devices/platform/fde60000.gpu/devfreq/fde60000.gpu" -DMC_FREQ="/sys/devices/platform/dmc/devfreq/dmc" -EOF diff --git a/packages/hardware/quirks/devices/Powkiddy RK2023/010-governors b/packages/hardware/quirks/devices/Powkiddy RK2023/010-governors deleted file mode 100755 index e1a4622419..0000000000 --- a/packages/hardware/quirks/devices/Powkiddy RK2023/010-governors +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -cat </storage/.config/profile.d/010-governors -CPU_FREQ=("/sys/devices/system/cpu/cpufreq/policy0") -GPU_FREQ="/sys/devices/platform/fde60000.gpu/devfreq/fde60000.gpu" -DMC_FREQ="/sys/devices/platform/dmc/devfreq/dmc" -EOF diff --git a/packages/hardware/quirks/devices/Anbernic RG353V/010-governors b/packages/hardware/quirks/platforms/RK3566/010-governors similarity index 67% rename from packages/hardware/quirks/devices/Anbernic RG353V/010-governors rename to packages/hardware/quirks/platforms/RK3566/010-governors index 437984c283..64a383e66b 100755 --- a/packages/hardware/quirks/devices/Anbernic RG353V/010-governors +++ b/packages/hardware/quirks/platforms/RK3566/010-governors @@ -5,6 +5,5 @@ cat </storage/.config/profile.d/010-governors # FREQ governors CPU_FREQ=("/sys/devices/system/cpu/cpufreq/policy0") -GPU_FREQ="/sys/devices/platform/ff400000.gpu/devfreq/ff400000.gpu" -DMC_FREQ="/sys/devices/platform/dmc/devfreq/dmc" +GPU_FREQ="$(find /sys/devices/platform/*gpu/devfreq -name '*.gpu')" EOF diff --git a/packages/hardware/quirks/platforms/RK3566/050-volume b/packages/hardware/quirks/platforms/RK3566/050-volume index 2594c1543a..df8bd341e4 100755 --- a/packages/hardware/quirks/platforms/RK3566/050-volume +++ b/packages/hardware/quirks/platforms/RK3566/050-volume @@ -5,4 +5,4 @@ . /storage/.config/profile.d/001-device_config # RK3566 devices have a master volume attached to card 0 that needs to be set to 100% on startup. -amixer -c 0 set "Master" "100%" +amixer -c 1 set "Master" "100%" diff --git a/packages/tools/rkbin/package.mk b/packages/tools/rkbin/package.mk index 61ee82bcf9..d1065f4912 100644 --- a/packages/tools/rkbin/package.mk +++ b/packages/tools/rkbin/package.mk @@ -9,5 +9,5 @@ PKG_LONGDESC="rkbin: Rockchip Firmware and Tool Binaries" PKG_TOOLCHAIN="manual" PKG_PATCH_DIRS+="${DEVICE}*" -PKG_VERSION="3aafb4dd13a750ab226604875d7938284d4ee9f1" +PKG_VERSION="5257e54cc6c15fef28c3b73bd95ca1b55cc8c8cd" PKG_URL="${PKG_SITE}.git" diff --git a/projects/Rockchip/devices/RK3566-X55/options b/projects/Rockchip/devices/RK3566-X55/options index bc3aa84e38..38157f65e1 100644 --- a/projects/Rockchip/devices/RK3566-X55/options +++ b/projects/Rockchip/devices/RK3566-X55/options @@ -36,9 +36,9 @@ UBOOT_DTB="rk3566" UBOOT_CONFIG="powkiddy-x55-rk3566_defconfig" PKG_SOC="rk3568" - PKG_DATAFILE="${PKG_RKBIN}/bin/rk35/rk3568_ddr_1056MHz_v1.16.bin" - PKG_LOADER="${PKG_RKBIN}/bin/rk35/rk356x_spl_v1.12.bin" - PKG_BL31="${PKG_RKBIN}/bin/rk35/rk3568_bl31_v1.42.elf" + PKG_DATAFILE="${PKG_RKBIN}/bin/rk35/rk3566_ddr_1056MHz_v1.18.bin" + PKG_LOADER="spl/u-boot-spl.bin" + PKG_BL31="${PKG_RKBIN}/bin/rk35/rk3568_bl31_v1.43.elf" PKG_LOAD_ADDR="0x0a100000" BOOT_INI=false EXT_LINUX_CONF=true diff --git a/projects/Rockchip/devices/RK3566/options b/projects/Rockchip/devices/RK3566/options index d2016de3df..f87e610a08 100644 --- a/projects/Rockchip/devices/RK3566/options +++ b/projects/Rockchip/devices/RK3566/options @@ -36,9 +36,9 @@ UBOOT_DTB="rk3566" UBOOT_CONFIG="anbernic-rgxx3-rk3566_defconfig" PKG_SOC="rk3568" - PKG_DATAFILE="${PKG_RKBIN}/bin/rk35/rk3568_ddr_1056MHz_v1.16.bin" - PKG_LOADER="${PKG_RKBIN}/bin/rk35/rk356x_spl_v1.12.bin" - PKG_BL31="${PKG_RKBIN}/bin/rk35/rk3568_bl31_v1.42.elf" + PKG_DATAFILE="${PKG_RKBIN}/bin/rk35/rk3566_ddr_1056MHz_v1.18.bin" + PKG_LOADER="spl/u-boot-spl.bin" + PKG_BL31="${PKG_RKBIN}/bin/rk35/rk3568_bl31_v1.43.elf" PKG_LOAD_ADDR="0x0a100000" BOOT_INI=false EXT_LINUX_CONF=true From 911d48551a741095689566b159cbadb109a5079c Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 27 Dec 2023 21:59:36 +0000 Subject: [PATCH 078/167] Update ALSA. --- packages/audio/alsa-lib/package.mk | 2 +- packages/audio/alsa-ucm-conf/package.mk | 2 +- packages/audio/alsa-utils/package.mk | 2 +- .../alsa-utils/patches/alsa-utils-PR213.patch | 34 ------------------ .../alsa-utils/patches/alsa-utils-PR225.patch | 36 ------------------- 5 files changed, 3 insertions(+), 73 deletions(-) delete mode 100644 packages/audio/alsa-utils/patches/alsa-utils-PR213.patch delete mode 100644 packages/audio/alsa-utils/patches/alsa-utils-PR225.patch diff --git a/packages/audio/alsa-lib/package.mk b/packages/audio/alsa-lib/package.mk index f308f6d519..694f20133d 100644 --- a/packages/audio/alsa-lib/package.mk +++ b/packages/audio/alsa-lib/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) PKG_NAME="alsa-lib" -PKG_VERSION="1.2.9" +PKG_VERSION="1.2.10" PKG_LICENSE="GPL" PKG_SITE="http://www.alsa-project.org/" PKG_URL="https://www.alsa-project.org/files/pub/lib/alsa-lib-${PKG_VERSION}.tar.bz2" diff --git a/packages/audio/alsa-ucm-conf/package.mk b/packages/audio/alsa-ucm-conf/package.mk index 7dc2555887..c30f80fc70 100644 --- a/packages/audio/alsa-ucm-conf/package.mk +++ b/packages/audio/alsa-ucm-conf/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2020-present Team LibreELEC (https://libreelec.tv) PKG_NAME="alsa-ucm-conf" -PKG_VERSION="1.2.9" +PKG_VERSION="1.2.10" PKG_LICENSE="BSD-3c" PKG_SITE="http://www.alsa-project.org/" PKG_URL="https://www.alsa-project.org/files/pub/lib/alsa-ucm-conf-${PKG_VERSION}.tar.bz2" diff --git a/packages/audio/alsa-utils/package.mk b/packages/audio/alsa-utils/package.mk index 288d73ea88..fed5b128ae 100644 --- a/packages/audio/alsa-utils/package.mk +++ b/packages/audio/alsa-utils/package.mk @@ -4,7 +4,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="alsa-utils" -PKG_VERSION="1.2.9" +PKG_VERSION="1.2.10" PKG_LICENSE="GPL" PKG_SITE="http://www.alsa-project.org/" PKG_URL="https://www.alsa-project.org/files/pub/utils/alsa-utils-${PKG_VERSION}.tar.bz2" diff --git a/packages/audio/alsa-utils/patches/alsa-utils-PR213.patch b/packages/audio/alsa-utils/patches/alsa-utils-PR213.patch deleted file mode 100644 index 48ac2e7f17..0000000000 --- a/packages/audio/alsa-utils/patches/alsa-utils-PR213.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 44636a7c5862538def0d2fac074772cc39a22a15 Mon Sep 17 00:00:00 2001 -From: Rudi Heitbaum -Date: Tue, 16 May 2023 02:27:59 +1000 -Subject: [PATCH] alsactl: fix compilation when building in a subdir - -Fixes: 613372d -Fixes: cff2d1c - -Compile errors when building in a subdir: -alsactl/alsactl.c:33:10: fatal error: os_compat.h: No such file or directory - 33 | #include "os_compat.h" - | ^~~~~~~~~~~~~ -alsactl/lock.c:34:10: fatal error: os_compat.h: No such file or directory - 34 | #include "os_compat.h" - | ^~~~~~~~~~~~~ - -Signed-off-by: Rudi Heitbaum ---- - alsactl/Makefile.am | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/alsactl/Makefile.am b/alsactl/Makefile.am -index 80dba69d..fb32c4f3 100644 ---- a/alsactl/Makefile.am -+++ b/alsactl/Makefile.am -@@ -9,6 +9,8 @@ EXTRA_DIST=alsactl.1 alsactl_init.xml - - AM_CFLAGS = -D_GNU_SOURCE - -+AM_CPPFLAGS = -I$(top_srcdir)/include -+ - alsactl_SOURCES=alsactl.c state.c lock.c utils.c init_parse.c init_ucm.c \ - daemon.c monitor.c clean.c info.c - diff --git a/packages/audio/alsa-utils/patches/alsa-utils-PR225.patch b/packages/audio/alsa-utils/patches/alsa-utils-PR225.patch deleted file mode 100644 index b2cd435de7..0000000000 --- a/packages/audio/alsa-utils/patches/alsa-utils-PR225.patch +++ /dev/null @@ -1,36 +0,0 @@ -From f912b09ec2737e4a479396f4696f7a97213fd3d0 Mon Sep 17 00:00:00 2001 -From: Rudi Heitbaum -Date: Sat, 22 Jul 2023 15:36:09 +0000 -Subject: [PATCH] alsactl: add define to compile with glibc 2.38 - -strlcat and strlcpy have been added to glibc 2.38. -update the defines to use the glibc versions, and not conflict with -string.h. - -ref: -- https://sourceware.org/git/?p=glibc.git;a=commit;h=454a20c8756c9c1d55419153255fc7692b3d2199 ---- - alsactl/init_sysdeps.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/alsactl/init_sysdeps.c b/alsactl/init_sysdeps.c -index 3aca1b4..f09b1ae 100644 ---- a/alsactl/init_sysdeps.c -+++ b/alsactl/init_sysdeps.c -@@ -18,6 +18,7 @@ - */ - - #if defined(__GLIBC__) && !(defined(__UCLIBC__) && defined(__USE_BSD)) -+#if !(__GLIBC_PREREQ(2, 38)) - static size_t strlcpy(char *dst, const char *src, size_t size) - { - size_t bytes = 0; -@@ -60,4 +61,5 @@ static size_t strlcat(char *dst, const char *src, size_t size) - *q = '\0'; - return bytes; - } -+#endif /* !(__GLIBC_PREREQ(2, 38)) */ - #endif /* __GLIBC__ */ --- -2.34.1 - From b0c66365c823a20b70c962a00495f2d189485537 Mon Sep 17 00:00:00 2001 From: sydarn Date: Sun, 31 Dec 2023 12:16:13 +0100 Subject: [PATCH 079/167] Better display mode for rk2023 --- .../RK3566/007-rk2023-display-mode.patch | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 projects/Rockchip/packages/linux/patches/RK3566/007-rk2023-display-mode.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566/007-rk2023-display-mode.patch b/projects/Rockchip/packages/linux/patches/RK3566/007-rk2023-display-mode.patch new file mode 100644 index 0000000000..0bb84bd1b7 --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566/007-rk2023-display-mode.patch @@ -0,0 +1,32 @@ +diff --git a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c +index 94d89ffd596..923e4df1420 100644 +--- a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c ++++ b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c +@@ -477,18 +477,18 @@ static const struct drm_display_mode nv3051d_rgxx3_modes[] = { + }; + + static const struct drm_display_mode nv3051d_rk2023_modes[] = { +- { ++ { + .hdisplay = 640, +- .hsync_start = 640 + 40, +- .hsync_end = 640 + 40 + 2, +- .htotal = 640 + 40 + 2 + 80, ++ .hsync_start = 640 + 48, ++ .hsync_end = 640 + 48 + 2, ++ .htotal = 640 + 48 + 2 + 47, + .vdisplay = 480, +- .vsync_start = 480 + 18, +- .vsync_end = 480 + 18 + 2, +- .vtotal = 480 + 18 + 2 + 4, +- .clock = 24150, ++ .vsync_start = 480 + 2, ++ .vsync_end = 480 + 2 + 4, ++ .vtotal = 480 + 2 + 4 + 3, ++ .clock = 21600, + .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, +- }, ++ } + }; + + static const struct nv3051d_panel_info nv3051d_rg351v_info = { From 318133d0fa37c0f11ca68252b98992f958fab23d Mon Sep 17 00:00:00 2001 From: brooksytech <1673861+brooksytech@users.noreply.github.com> Date: Fri, 29 Dec 2023 14:29:36 +0000 Subject: [PATCH 080/167] Clean up RK3326 & RK3399 sleep vars --- .../quirks/devices/Anbernic RG552/sleep.d/pre/002-freq | 4 ++-- .../hardware/quirks/platforms/RK3326/sleep.d/pre/002-freq | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/pre/002-freq b/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/pre/002-freq index 9e66aefa29..64d15b20ed 100644 --- a/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/pre/002-freq +++ b/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/pre/002-freq @@ -7,8 +7,8 @@ . /etc/profile ### Get the current cpu and gpu governor, save for when the device wakes from sleep. -CUR_CPU_FREQ="$(cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor)" -CUR_GPU_FREQ="$(cat /sys/devices/platform/ff9a0000.gpu/devfreq/ff9a0000.gpu/governor)" +CUR_CPU_FREQ="$(cat ${CPU_FREQ}/scaling_governor)" +CUR_GPU_FREQ="$(cat ${GPU_FREQ}/governor)" set_setting sleep.cpugovernor "${CUR_CPU_FREQ}" set_setting sleep.gpugovernor "${CUR_GPU_FREQ}" diff --git a/packages/hardware/quirks/platforms/RK3326/sleep.d/pre/002-freq b/packages/hardware/quirks/platforms/RK3326/sleep.d/pre/002-freq index 9fcc29bd94..4fbe8c64f0 100644 --- a/packages/hardware/quirks/platforms/RK3326/sleep.d/pre/002-freq +++ b/packages/hardware/quirks/platforms/RK3326/sleep.d/pre/002-freq @@ -7,8 +7,8 @@ . /etc/profile ### Get the current cpu and gpu governor, save for when the device wakes from sleep. -CUR_CPU_FREQ="$(cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor)" -CUR_GPU_FREQ="$(cat /sys/devices/platform/ff400000.gpu/devfreq/ff400000.gpu/governor)" +CUR_CPU_FREQ="$(cat ${CPU_FREQ}/scaling_governor)" +CUR_GPU_FREQ="$(cat ${GPU_FREQ}/governor)" set_setting sleep.cpugovernor "${CUR_CPU_FREQ}" set_setting sleep.gpugovernor "${CUR_GPU_FREQ}" From 444bfdbab60fd82304f4f0a55a84f63c1bfb5d63 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Sat, 30 Dec 2023 21:02:14 +0000 Subject: [PATCH 081/167] Add a guard to set_epp so it isn't executed on devices that don't have it available. --- packages/jelos/sources/scripts/runemu.sh | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/jelos/sources/scripts/runemu.sh b/packages/jelos/sources/scripts/runemu.sh index 103a7580b5..c9536ef5aa 100755 --- a/packages/jelos/sources/scripts/runemu.sh +++ b/packages/jelos/sources/scripts/runemu.sh @@ -336,11 +336,14 @@ case ${CPU_VENDOR} in esac ### Apply energy performance preference -EPP=$(get_setting "power.epp" "${PLATFORM}" "${ROMNAME##*/}") -if [ ! -z ${EPP} ] +if [ -e "/usr/bin/set_epp" ] then - ${VERBOSE} && log $0 "Set EPP to (${EPP})" - /usr/bin/set_epp ${EPP} + EPP=$(get_setting "power.epp" "${PLATFORM}" "${ROMNAME##*/}") + if [ ! -z ${EPP} ] + then + ${VERBOSE} && log $0 "Set EPP to (${EPP})" + /usr/bin/set_epp ${EPP} + fi fi ### Configure GPU performance mode From 8b873a06c0674fc6516db11100c3049860836032 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Mon, 1 Jan 2024 11:38:19 +0000 Subject: [PATCH 082/167] Add invert-abs patches, update kernel to RC8. --- projects/Rockchip/packages/linux/package.mk | 2 +- .../RK3566/008-invert-abs-helper.patch | 71 +++++++++++++++++ .../linux/patches/RK3566/009-invert-abs.patch | 77 +++++++++++++++++++ 3 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 projects/Rockchip/packages/linux/patches/RK3566/008-invert-abs-helper.patch create mode 100644 projects/Rockchip/packages/linux/patches/RK3566/009-invert-abs.patch diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index 0b5346c9fb..e340fdb528 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -24,7 +24,7 @@ case ${DEVICE} in PKG_GIT_CLONE_BRANCH="main" ;; RK356*) - PKG_VERSION="6.7-rc7" + PKG_VERSION="6.7-rc8" PKG_URL="https://git.kernel.org/torvalds/t/${PKG_NAME}-${PKG_VERSION}.tar.gz" ;; RK33*) diff --git a/projects/Rockchip/packages/linux/patches/RK3566/008-invert-abs-helper.patch b/projects/Rockchip/packages/linux/patches/RK3566/008-invert-abs-helper.patch new file mode 100644 index 0000000000..afb829f4a2 --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566/008-invert-abs-helper.patch @@ -0,0 +1,71 @@ +From: Chris Morgan +To: linux-input@vger.kernel.org +Cc: dmitry.torokhov@gmail.com, hdegoede@redhat.com, + paul@crapouillou.net, peter.hutterer@who-t.net, svv@google.com, + biswarupp@google.com, contact@artur-rojek.eu, + Chris Morgan +Subject: [PATCH 1/2] Input: add input_invert_abs() +Date: Sun, 31 Dec 2023 14:56:42 -0600 [thread overview] +Message-ID: <20231231205643.129435-2-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231231205643.129435-1-macroalpha82@gmail.com> + +From: Chris Morgan + +Add a helper function to make it easier for a driver to invert abs +values when needed. It is up to the driver itself to track axes that +need to be inverted and normalize the data before it is passed on. + +This function assumes that drivers will set the min and max values +so that min < max and then will simply call this function each time +the values need to be inverted. + +Signed-off-by: Chris Morgan +--- + drivers/input/input.c | 19 +++++++++++++++++++ + include/linux/input.h | 1 + + 2 files changed, 20 insertions(+) + +diff --git a/drivers/input/input.c b/drivers/input/input.c +index 8c5fdb0f858a..f135aed165a1 100644 +--- a/drivers/input/input.c ++++ b/drivers/input/input.c +@@ -552,6 +552,25 @@ void input_copy_abs(struct input_dev *dst, unsigned int dst_axis, + } + EXPORT_SYMBOL(input_copy_abs); + ++/** ++ * input_invert_abs - Invert the abs value for an inverted axis. ++ * @dev: Input device with absolute events ++ * @axis: ABS_* value selecting the destination axis for the event to ++ * invert. ++ * @val: Value to be inverted based on min and max values of the axis. ++ * ++ * Return an inverted value for a given ABS axis based on its min and ++ * max values. ++ */ ++int input_invert_abs(struct input_dev *dev, unsigned int axis, int val) ++{ ++ int min = dev->absinfo[axis].minimum; ++ int max = dev->absinfo[axis].maximum; ++ ++ return (max + min) - val; ++} ++EXPORT_SYMBOL(input_invert_abs); ++ + /** + * input_grab_device - grabs device for exclusive use + * @handle: input handle that wants to own the device +diff --git a/include/linux/input.h b/include/linux/input.h +index de6503c0edb8..deb5f8bb0ec7 100644 +--- a/include/linux/input.h ++++ b/include/linux/input.h +@@ -477,6 +477,7 @@ void input_set_abs_params(struct input_dev *dev, unsigned int axis, + int min, int max, int fuzz, int flat); + void input_copy_abs(struct input_dev *dst, unsigned int dst_axis, + const struct input_dev *src, unsigned int src_axis); ++int input_invert_abs(struct input_dev *dev, unsigned int axis, int val); + + #define INPUT_GENERATE_ABS_ACCESSORS(_suffix, _item) \ + static inline int input_abs_get_##_suffix(struct input_dev *dev, \ +-- +2.34.1 diff --git a/projects/Rockchip/packages/linux/patches/RK3566/009-invert-abs.patch b/projects/Rockchip/packages/linux/patches/RK3566/009-invert-abs.patch new file mode 100644 index 0000000000..5635651a1c --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566/009-invert-abs.patch @@ -0,0 +1,77 @@ +From: Chris Morgan +To: linux-input@vger.kernel.org +Cc: dmitry.torokhov@gmail.com, hdegoede@redhat.com, + paul@crapouillou.net, peter.hutterer@who-t.net, svv@google.com, + biswarupp@google.com, contact@artur-rojek.eu, + Chris Morgan +Subject: [PATCH 2/2] Input: adc-joystick: Handle inverted axes +Date: Sun, 31 Dec 2023 14:56:43 -0600 [thread overview] +Message-ID: <20231231205643.129435-3-macroalpha82@gmail.com> (raw) +In-Reply-To: <20231231205643.129435-1-macroalpha82@gmail.com> + +From: Chris Morgan + +When one or more axes are inverted, (where min > max), normalize the +data so that min < max and call a helper function to invert the +values reported to the input stack. + +This ensures we can continue defining the device correctly in the +device tree while not breaking downstream assumptions that min is +always less than max. + +Signed-off-by: Chris Morgan +--- + drivers/input/joystick/adc-joystick.c | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/drivers/input/joystick/adc-joystick.c b/drivers/input/joystick/adc-joystick.c +index c0deff5d4282..4e8d446987b6 100644 +--- a/drivers/input/joystick/adc-joystick.c ++++ b/drivers/input/joystick/adc-joystick.c +@@ -18,6 +18,7 @@ struct adc_joystick_axis { + s32 range[2]; + s32 fuzz; + s32 flat; ++ bool inverted; + }; + + struct adc_joystick { +@@ -38,6 +39,8 @@ static void adc_joystick_poll(struct input_dev *input) + ret = iio_read_channel_raw(&joy->chans[i], &val); + if (ret < 0) + return; ++ if (joy->axes[i].inverted) ++ val = input_invert_abs(input, i, val); + input_report_abs(input, joy->axes[i].code, val); + } + input_sync(input); +@@ -86,6 +89,8 @@ static int adc_joystick_handle(const void *data, void *private) + val = sign_extend32(val, msb); + else + val &= GENMASK(msb, 0); ++ if (joy->axes[i].inverted) ++ val = input_invert_abs(joy->input, i, val); + input_report_abs(joy->input, joy->axes[i].code, val); + } + +@@ -168,11 +173,17 @@ static int adc_joystick_set_axes(struct device *dev, struct adc_joystick *joy) + goto err_fwnode_put; + } + ++ if (axes[i].range[0] > axes[i].range[1]) { ++ dev_dbg(dev, "abs-axis %d inverted\n", i); ++ axes[i].inverted = 1; ++ } ++ + fwnode_property_read_u32(child, "abs-fuzz", &axes[i].fuzz); + fwnode_property_read_u32(child, "abs-flat", &axes[i].flat); + + input_set_abs_params(joy->input, axes[i].code, +- axes[i].range[0], axes[i].range[1], ++ min_array(axes[i].range, 2), ++ max_array(axes[i].range, 2), + axes[i].fuzz, axes[i].flat); + input_set_capability(joy->input, EV_ABS, axes[i].code); + } +-- +2.34.1 From c015df078242a517a1235506e54fe51f9bfb1b5a Mon Sep 17 00:00:00 2001 From: fewtarius Date: Thu, 11 Jan 2024 11:39:25 +0000 Subject: [PATCH 083/167] Adds a virtual input driver that collapses inputs into a single input device. Thanks to @macromorgan. --- .../emulators/tools/virtualgamepad/package.mk | 20 +++++++++++++++++++ .../system.d/virtualgamepad.service | 9 +++++++++ packages/virtual/gamesupport/package.mk | 2 +- 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 packages/emulators/tools/virtualgamepad/package.mk create mode 100644 packages/emulators/tools/virtualgamepad/system.d/virtualgamepad.service diff --git a/packages/emulators/tools/virtualgamepad/package.mk b/packages/emulators/tools/virtualgamepad/package.mk new file mode 100644 index 0000000000..7e19e63471 --- /dev/null +++ b/packages/emulators/tools/virtualgamepad/package.mk @@ -0,0 +1,20 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +PKG_NAME="virtualgamepad" +PKG_VERSION="a6e8459" +PKG_LICENSE="GPLv2" +PKG_SITE="https://github.com/macromorgan/input-wrapper" +PKG_URL="${PKG_SITE}.git" +PKG_DEPENDS_TARGET="toolchain linux" +PKG_TOOLCHAIN="make" + +makeinstall_target() { + mkdir -p ${INSTALL}/usr/bin + cp wrap ${INSTALL}/usr/bin/virtualgamepad + chmod 0755 ${INSTALL}/usr/bin/virtualgamepad +} + +post_install() { + enable_service virtualgamepad.service +} diff --git a/packages/emulators/tools/virtualgamepad/system.d/virtualgamepad.service b/packages/emulators/tools/virtualgamepad/system.d/virtualgamepad.service new file mode 100644 index 0000000000..23af44bb57 --- /dev/null +++ b/packages/emulators/tools/virtualgamepad/system.d/virtualgamepad.service @@ -0,0 +1,9 @@ +[Unit] +Description=Virtual Gamepad Driver + +[Service] +Type=simple +ExecStart=/usr/bin/virtualgamepad + +[Install] +WantedBy=multi-user.target diff --git a/packages/virtual/gamesupport/package.mk b/packages/virtual/gamesupport/package.mk index 02c6822a8d..36c786ad37 100644 --- a/packages/virtual/gamesupport/package.mk +++ b/packages/virtual/gamesupport/package.mk @@ -7,7 +7,7 @@ PKG_SITE="www.jelos.org" PKG_SECTION="virtual" PKG_LONGDESC="Game support software metapackage." -PKG_GAMESUPPORT="sixaxis gptokeyb jstest-sdl gamecontrollerdb sdljoytest control-gen" +PKG_GAMESUPPORT="sixaxis gptokeyb jstest-sdl gamecontrollerdb sdljoytest control-gen virtualgamepad" PKG_DEPENDS_TARGET="${PKG_GAMESUPPORT}" From e682c4a467eb8fed3f803098599d93de8031be3f Mon Sep 17 00:00:00 2001 From: sydarn Date: Tue, 23 Jan 2024 10:19:29 +0100 Subject: [PATCH 084/167] RK3566 updates, and boots from fresh flash (but with some hiccups) --- projects/Rockchip/bootloader/mkimage | 8 ++++---- projects/Rockchip/bootloader/release | 4 ++++ projects/Rockchip/packages/u-boot/package.mk | 17 ++++++++++++----- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/projects/Rockchip/bootloader/mkimage b/projects/Rockchip/bootloader/mkimage index eedb0f8280..bd1b3fb2ef 100755 --- a/projects/Rockchip/bootloader/mkimage +++ b/projects/Rockchip/bootloader/mkimage @@ -52,16 +52,16 @@ case "${PKG_SOC}" in ;; esac -#Create boot.scr +#Create boot.ini if [ "${BOOT_INI}" == true ] then echo "boot: create boot.ini..." if [ -e "${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/boot/boot.ini" ] then cp -f ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/boot/boot.ini ${LE_TMP}/boot.ini - sed -i "s~@UUID_SYSTEM@~${UUID_SYSTEM}~g" ${INSTALL}/usr/share/bootloader/boot.ini - sed -i "s~@UUID_STORAGE@~${UUID_STORAGE}~g" ${INSTALL}/usr/share/bootloader/boot.ini - sed -i "s~@EXTRA_CMDLINE@~${EXTRA_CMDLINE}~g" ${INSTALL}/usr/share/bootloader/boot.ini + sed -i "s~@UUID_SYSTEM@~${UUID_SYSTEM}~g" ${LE_TMP}/boot.ini + sed -i "s~@UUID_STORAGE@~${UUID_STORAGE}~g" ${LE_TMP}/boot.ini + sed -i "s~@EXTRA_CMDLINE@~${EXTRA_CMDLINE}~g" ${LE_TMP}/boot.ini mcopy -so "${LE_TMP}/boot.ini" :: else echo "ERROR: No boot.ini found in ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/boot/." diff --git a/projects/Rockchip/bootloader/release b/projects/Rockchip/bootloader/release index 2b98b8197c..3830864df3 100755 --- a/projects/Rockchip/bootloader/release +++ b/projects/Rockchip/bootloader/release @@ -33,6 +33,10 @@ if [ -n "${UBOOT_CONFIG}" ]; then esac fi +if [ -f ${INSTALL}/usr/share/bootloader/boot.ini ]; then + cp -a ${INSTALL}/usr/share/bootloader/boot.ini ${RELEASE_DIR}/3rdparty/bootloader +fi + if [ -f ${INSTALL}/usr/share/bootloader/boot.scr ]; then cp -a ${INSTALL}/usr/share/bootloader/boot.scr ${RELEASE_DIR}/3rdparty/bootloader fi diff --git a/projects/Rockchip/packages/u-boot/package.mk b/projects/Rockchip/packages/u-boot/package.mk index 8ec657c5f6..98ea1ddb1a 100644 --- a/projects/Rockchip/packages/u-boot/package.mk +++ b/projects/Rockchip/packages/u-boot/package.mk @@ -7,7 +7,7 @@ PKG_NAME="u-boot" PKG_ARCH="arm aarch64" PKG_SITE="https://github.com/JustEnoughLinuxOS" PKG_LICENSE="GPL" -PKG_DEPENDS_TARGET="toolchain swig:host rkbin glibc pyelftools:host" +PKG_DEPENDS_TARGET="toolchain Python3 swig:host rkbin glibc pyelftools:host" PKG_LONGDESC="Rockchip U-Boot is a bootloader for embedded systems." PKG_PATCH_DIRS+="${DEVICE}" @@ -52,7 +52,8 @@ post_patch() { } make_target() { -setup_pkg_config_host + export PKG_RKBIN="$(get_build_dir rkbin)" + setup_pkg_config_host . ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/options if [ -z "${UBOOT_CONFIG}" ]; then echo "UBOOT_CONFIG must be set to build an image" @@ -70,11 +71,17 @@ setup_pkg_config_host then PKG_LOADER="$(get_build_dir rkbin)/${PKG_LOADER}" fi - if [[ "${PKG_SOC}" =~ "rk35" ]] + if [[ "${PKG_SOC}" =~ rk35* ]] then + echo "Building for GPT (${UBOOT_DTB})..." + echo "toolchain (${TOOLCHAIN})" + export BL31="${PKG_BL31}" + export ROCKCHIP_TPL="${PKG_DATAFILE}" DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make mrproper - DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make ${UBOOT_CONFIG} BL31=${PKG_BL31} ${PKG_LOADER} u-boot.dtb u-boot.itb CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" - DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 _python_sysroot="${TOOLCHAIN}" _python_prefix=/ _python_exec_prefix=/ make HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTSTRIP="true" CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" + echo "begin make" + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="--lssl -lcrypto" ARCH=arm64 make ${UBOOT_CONFIG} ${PKG_LOADER} u-boot.dtb u-boot.img tools HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTCFLAGS="-I${TOOLCHAIN}/include" + echo "end make" + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 _python_sysroot="${TOOLCHAIN}" _python_prefix=/ _python_exec_prefix=/ make HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTCFLAGS="-I${TOOLCHAIN}/include" HOSTSTRIP="true" CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" else echo "Building for MBR (${UBOOT_DTB})..." if [[ "${ATF_PLATFORM}" =~ "rk3399" ]]; then From 0a109ebf8e604fee0610e0749d5933b7f3fc254a Mon Sep 17 00:00:00 2001 From: sydarn Date: Tue, 23 Jan 2024 12:43:48 +0100 Subject: [PATCH 085/167] RK3326 boots --- projects/Rockchip/devices/RK3326/options | 3 +-- projects/Rockchip/packages/linux/package.mk | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/projects/Rockchip/devices/RK3326/options b/projects/Rockchip/devices/RK3326/options index b73059ac53..934bdac91f 100644 --- a/projects/Rockchip/devices/RK3326/options +++ b/projects/Rockchip/devices/RK3326/options @@ -38,8 +38,7 @@ PKG_DATAFILE="$PKG_RKBIN/bin/rk33/rk3326_ddr_333MHz_v1.15.bin" PKG_LOADER="$PKG_RKBIN/bin/rk33/rk3326_miniloader_v1.28.bin" PKG_BL31="$PKG_RKBIN/bin/rk33/rk3326_bl31_v1.22.elf" - PKG_LOAD_ADDR="0x02000000" - DTB_LOAD_ADDR="0x01f00000" + PKG_LOAD_ADDR="0x00200000" BOOT_INI=true BOOT_PART="1:1" EXT_LINUX_CONF=false diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index af01476d0b..8162c2c9f3 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -177,7 +177,6 @@ make_target() { NO_LIBTRACEEVENT=1 \ NO_LZMA=1 \ NO_SDT=1 \ - NO_LIBTRACEEVENT=1 \ CROSS_COMPILE="${TARGET_PREFIX}" \ JOBS="${CONCURRENCY_MAKE_LEVEL}" \ make ${PERF_BUILD_ARGS} From cddedfe0a52c29dd67e343780fd9ed2ebf8be307 Mon Sep 17 00:00:00 2001 From: sydarn Date: Tue, 23 Jan 2024 18:03:45 +0100 Subject: [PATCH 086/167] RK3588 u-boot build commands from dev --- projects/Rockchip/packages/u-boot/package.mk | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/projects/Rockchip/packages/u-boot/package.mk b/projects/Rockchip/packages/u-boot/package.mk index 98ea1ddb1a..925ac0f59a 100644 --- a/projects/Rockchip/packages/u-boot/package.mk +++ b/projects/Rockchip/packages/u-boot/package.mk @@ -71,9 +71,10 @@ make_target() { then PKG_LOADER="$(get_build_dir rkbin)/${PKG_LOADER}" fi - if [[ "${PKG_SOC}" =~ rk35* ]] + if [[ "${PKG_SOC}" =~ "rk3568" ]] then - echo "Building for GPT (${UBOOT_DTB})..." + # rk3566 device + echo "Building for GPT (${UBOOT_DTB})..." echo "toolchain (${TOOLCHAIN})" export BL31="${PKG_BL31}" export ROCKCHIP_TPL="${PKG_DATAFILE}" @@ -82,8 +83,14 @@ make_target() { DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="--lssl -lcrypto" ARCH=arm64 make ${UBOOT_CONFIG} ${PKG_LOADER} u-boot.dtb u-boot.img tools HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTCFLAGS="-I${TOOLCHAIN}/include" echo "end make" DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 _python_sysroot="${TOOLCHAIN}" _python_prefix=/ _python_exec_prefix=/ make HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTCFLAGS="-I${TOOLCHAIN}/include" HOSTSTRIP="true" CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" - else - echo "Building for MBR (${UBOOT_DTB})..." + elif [[ "${PKG_SOC}" =~ "rk3588" ]] + then + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make mrproper + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make ${UBOOT_CONFIG} BL31=${PKG_BL31} ${PKG_LOADER} u-boot.dtb u-boot.itb CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 _python_sysroot="${TOOLCHAIN}" _python_prefix=/ _python_exec_prefix=/ make HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTSTRIP="true" CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" + else + # rk3326 and rk3399 devices + echo "Building for MBR (${UBOOT_DTB})..." if [[ "${ATF_PLATFORM}" =~ "rk3399" ]]; then export BL31="$(get_build_dir atf)/.install_pkg/usr/share/bootloader/bl31.elf" fi From 4daec95a41dd283cc2297f537e28c37785cb1b19 Mon Sep 17 00:00:00 2001 From: sydarn Date: Wed, 24 Jan 2024 11:55:31 +0100 Subject: [PATCH 087/167] iptables: Remove unnessecary case statement in package.mk --- packages/network/iptables/package.mk | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/network/iptables/package.mk b/packages/network/iptables/package.mk index fbb70374dc..088c724492 100644 --- a/packages/network/iptables/package.mk +++ b/packages/network/iptables/package.mk @@ -11,13 +11,9 @@ PKG_LONGDESC="IP packet filter administration." PKG_TOOLCHAIN="autotools" -case ${DEVICE} in - *) - PKG_VERSION="1.8.9" - PKG_EXTENSION="xz" - PKG_PATCH_DIRS+="5.x" - ;; -esac +PKG_VERSION="1.8.9" +PKG_EXTENSION="xz" +PKG_PATCH_DIRS+="5.x" PKG_URL="https://www.netfilter.org/projects/iptables/files/${PKG_NAME}-${PKG_VERSION}.tar.${PKG_EXTENSION}" From dc6d53d1ef46929f2829746549d7377488139655 Mon Sep 17 00:00:00 2001 From: sydarn Date: Tue, 23 Jan 2024 10:19:29 +0100 Subject: [PATCH 088/167] RK3566 updates, and boots from fresh flash (but with some hiccups) --- projects/Rockchip/bootloader/mkimage | 8 ++++---- projects/Rockchip/bootloader/release | 4 ++++ projects/Rockchip/packages/u-boot/package.mk | 17 ++++++++++++----- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/projects/Rockchip/bootloader/mkimage b/projects/Rockchip/bootloader/mkimage index eedb0f8280..bd1b3fb2ef 100755 --- a/projects/Rockchip/bootloader/mkimage +++ b/projects/Rockchip/bootloader/mkimage @@ -52,16 +52,16 @@ case "${PKG_SOC}" in ;; esac -#Create boot.scr +#Create boot.ini if [ "${BOOT_INI}" == true ] then echo "boot: create boot.ini..." if [ -e "${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/boot/boot.ini" ] then cp -f ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/boot/boot.ini ${LE_TMP}/boot.ini - sed -i "s~@UUID_SYSTEM@~${UUID_SYSTEM}~g" ${INSTALL}/usr/share/bootloader/boot.ini - sed -i "s~@UUID_STORAGE@~${UUID_STORAGE}~g" ${INSTALL}/usr/share/bootloader/boot.ini - sed -i "s~@EXTRA_CMDLINE@~${EXTRA_CMDLINE}~g" ${INSTALL}/usr/share/bootloader/boot.ini + sed -i "s~@UUID_SYSTEM@~${UUID_SYSTEM}~g" ${LE_TMP}/boot.ini + sed -i "s~@UUID_STORAGE@~${UUID_STORAGE}~g" ${LE_TMP}/boot.ini + sed -i "s~@EXTRA_CMDLINE@~${EXTRA_CMDLINE}~g" ${LE_TMP}/boot.ini mcopy -so "${LE_TMP}/boot.ini" :: else echo "ERROR: No boot.ini found in ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/boot/." diff --git a/projects/Rockchip/bootloader/release b/projects/Rockchip/bootloader/release index 2b98b8197c..3830864df3 100755 --- a/projects/Rockchip/bootloader/release +++ b/projects/Rockchip/bootloader/release @@ -33,6 +33,10 @@ if [ -n "${UBOOT_CONFIG}" ]; then esac fi +if [ -f ${INSTALL}/usr/share/bootloader/boot.ini ]; then + cp -a ${INSTALL}/usr/share/bootloader/boot.ini ${RELEASE_DIR}/3rdparty/bootloader +fi + if [ -f ${INSTALL}/usr/share/bootloader/boot.scr ]; then cp -a ${INSTALL}/usr/share/bootloader/boot.scr ${RELEASE_DIR}/3rdparty/bootloader fi diff --git a/projects/Rockchip/packages/u-boot/package.mk b/projects/Rockchip/packages/u-boot/package.mk index 8ec657c5f6..98ea1ddb1a 100644 --- a/projects/Rockchip/packages/u-boot/package.mk +++ b/projects/Rockchip/packages/u-boot/package.mk @@ -7,7 +7,7 @@ PKG_NAME="u-boot" PKG_ARCH="arm aarch64" PKG_SITE="https://github.com/JustEnoughLinuxOS" PKG_LICENSE="GPL" -PKG_DEPENDS_TARGET="toolchain swig:host rkbin glibc pyelftools:host" +PKG_DEPENDS_TARGET="toolchain Python3 swig:host rkbin glibc pyelftools:host" PKG_LONGDESC="Rockchip U-Boot is a bootloader for embedded systems." PKG_PATCH_DIRS+="${DEVICE}" @@ -52,7 +52,8 @@ post_patch() { } make_target() { -setup_pkg_config_host + export PKG_RKBIN="$(get_build_dir rkbin)" + setup_pkg_config_host . ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/options if [ -z "${UBOOT_CONFIG}" ]; then echo "UBOOT_CONFIG must be set to build an image" @@ -70,11 +71,17 @@ setup_pkg_config_host then PKG_LOADER="$(get_build_dir rkbin)/${PKG_LOADER}" fi - if [[ "${PKG_SOC}" =~ "rk35" ]] + if [[ "${PKG_SOC}" =~ rk35* ]] then + echo "Building for GPT (${UBOOT_DTB})..." + echo "toolchain (${TOOLCHAIN})" + export BL31="${PKG_BL31}" + export ROCKCHIP_TPL="${PKG_DATAFILE}" DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make mrproper - DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make ${UBOOT_CONFIG} BL31=${PKG_BL31} ${PKG_LOADER} u-boot.dtb u-boot.itb CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" - DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 _python_sysroot="${TOOLCHAIN}" _python_prefix=/ _python_exec_prefix=/ make HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTSTRIP="true" CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" + echo "begin make" + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="--lssl -lcrypto" ARCH=arm64 make ${UBOOT_CONFIG} ${PKG_LOADER} u-boot.dtb u-boot.img tools HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTCFLAGS="-I${TOOLCHAIN}/include" + echo "end make" + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 _python_sysroot="${TOOLCHAIN}" _python_prefix=/ _python_exec_prefix=/ make HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTCFLAGS="-I${TOOLCHAIN}/include" HOSTSTRIP="true" CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" else echo "Building for MBR (${UBOOT_DTB})..." if [[ "${ATF_PLATFORM}" =~ "rk3399" ]]; then From f42e4c7e667e660e3fa61cf779b37acdf1a0be7f Mon Sep 17 00:00:00 2001 From: sydarn Date: Tue, 23 Jan 2024 12:43:48 +0100 Subject: [PATCH 089/167] RK3326 boots --- projects/Rockchip/devices/RK3326/options | 3 +-- projects/Rockchip/packages/linux/package.mk | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/projects/Rockchip/devices/RK3326/options b/projects/Rockchip/devices/RK3326/options index b73059ac53..934bdac91f 100644 --- a/projects/Rockchip/devices/RK3326/options +++ b/projects/Rockchip/devices/RK3326/options @@ -38,8 +38,7 @@ PKG_DATAFILE="$PKG_RKBIN/bin/rk33/rk3326_ddr_333MHz_v1.15.bin" PKG_LOADER="$PKG_RKBIN/bin/rk33/rk3326_miniloader_v1.28.bin" PKG_BL31="$PKG_RKBIN/bin/rk33/rk3326_bl31_v1.22.elf" - PKG_LOAD_ADDR="0x02000000" - DTB_LOAD_ADDR="0x01f00000" + PKG_LOAD_ADDR="0x00200000" BOOT_INI=true BOOT_PART="1:1" EXT_LINUX_CONF=false diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index af01476d0b..8162c2c9f3 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -177,7 +177,6 @@ make_target() { NO_LIBTRACEEVENT=1 \ NO_LZMA=1 \ NO_SDT=1 \ - NO_LIBTRACEEVENT=1 \ CROSS_COMPILE="${TARGET_PREFIX}" \ JOBS="${CONCURRENCY_MAKE_LEVEL}" \ make ${PERF_BUILD_ARGS} From 4d16c26918538ae692566416eb5fb72391730f91 Mon Sep 17 00:00:00 2001 From: sydarn Date: Tue, 23 Jan 2024 18:03:45 +0100 Subject: [PATCH 090/167] RK3588 u-boot build commands from dev --- projects/Rockchip/packages/u-boot/package.mk | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/projects/Rockchip/packages/u-boot/package.mk b/projects/Rockchip/packages/u-boot/package.mk index 98ea1ddb1a..925ac0f59a 100644 --- a/projects/Rockchip/packages/u-boot/package.mk +++ b/projects/Rockchip/packages/u-boot/package.mk @@ -71,9 +71,10 @@ make_target() { then PKG_LOADER="$(get_build_dir rkbin)/${PKG_LOADER}" fi - if [[ "${PKG_SOC}" =~ rk35* ]] + if [[ "${PKG_SOC}" =~ "rk3568" ]] then - echo "Building for GPT (${UBOOT_DTB})..." + # rk3566 device + echo "Building for GPT (${UBOOT_DTB})..." echo "toolchain (${TOOLCHAIN})" export BL31="${PKG_BL31}" export ROCKCHIP_TPL="${PKG_DATAFILE}" @@ -82,8 +83,14 @@ make_target() { DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="--lssl -lcrypto" ARCH=arm64 make ${UBOOT_CONFIG} ${PKG_LOADER} u-boot.dtb u-boot.img tools HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTCFLAGS="-I${TOOLCHAIN}/include" echo "end make" DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 _python_sysroot="${TOOLCHAIN}" _python_prefix=/ _python_exec_prefix=/ make HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTCFLAGS="-I${TOOLCHAIN}/include" HOSTSTRIP="true" CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" - else - echo "Building for MBR (${UBOOT_DTB})..." + elif [[ "${PKG_SOC}" =~ "rk3588" ]] + then + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make mrproper + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 make ${UBOOT_CONFIG} BL31=${PKG_BL31} ${PKG_LOADER} u-boot.dtb u-boot.itb CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm64 _python_sysroot="${TOOLCHAIN}" _python_prefix=/ _python_exec_prefix=/ make HOSTCC="${HOST_CC}" HOSTLDFLAGS="-L${TOOLCHAIN}/lib" HOSTSTRIP="true" CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" + else + # rk3326 and rk3399 devices + echo "Building for MBR (${UBOOT_DTB})..." if [[ "${ATF_PLATFORM}" =~ "rk3399" ]]; then export BL31="$(get_build_dir atf)/.install_pkg/usr/share/bootloader/bl31.elf" fi From 54d64e31c0d3ac2e45f14dabcb6c496ed565543c Mon Sep 17 00:00:00 2001 From: sydarn Date: Wed, 24 Jan 2024 11:55:31 +0100 Subject: [PATCH 091/167] iptables: Remove unnessecary case statement in package.mk --- packages/network/iptables/package.mk | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/network/iptables/package.mk b/packages/network/iptables/package.mk index fbb70374dc..088c724492 100644 --- a/packages/network/iptables/package.mk +++ b/packages/network/iptables/package.mk @@ -11,13 +11,9 @@ PKG_LONGDESC="IP packet filter administration." PKG_TOOLCHAIN="autotools" -case ${DEVICE} in - *) - PKG_VERSION="1.8.9" - PKG_EXTENSION="xz" - PKG_PATCH_DIRS+="5.x" - ;; -esac +PKG_VERSION="1.8.9" +PKG_EXTENSION="xz" +PKG_PATCH_DIRS+="5.x" PKG_URL="https://www.netfilter.org/projects/iptables/files/${PKG_NAME}-${PKG_VERSION}.tar.${PKG_EXTENSION}" From 42d770de35e4c76c3b88fb76313bff7231739812 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Mon, 22 Jan 2024 14:52:33 +0000 Subject: [PATCH 092/167] Update bluez, pipewire, pulseaudio, and wireplumber. --- packages/audio/pipewire/package.mk | 2 +- .../pipewire/patches/001-pipewire-pulse.patch | 44 ++++++++----------- packages/audio/pulseaudio/package.mk | 2 +- packages/audio/wireplumber/package.mk | 3 +- .../network/bluez/autostart/009-bluetooth | 4 ++ packages/network/bluez/package.mk | 8 +++- 6 files changed, 34 insertions(+), 29 deletions(-) diff --git a/packages/audio/pipewire/package.mk b/packages/audio/pipewire/package.mk index e5f4c04213..270ce84826 100644 --- a/packages/audio/pipewire/package.mk +++ b/packages/audio/pipewire/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) PKG_NAME="pipewire" -PKG_VERSION="0.3.84" +PKG_VERSION="1.0.1" PKG_LICENSE="LGPL" PKG_SITE="https://pipewire.org" PKG_URL="https://github.com/PipeWire/pipewire/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/audio/pipewire/patches/001-pipewire-pulse.patch b/packages/audio/pipewire/patches/001-pipewire-pulse.patch index b71eae88ef..bb7a5af626 100644 --- a/packages/audio/pipewire/patches/001-pipewire-pulse.patch +++ b/packages/audio/pipewire/patches/001-pipewire-pulse.patch @@ -1,7 +1,7 @@ -diff -rupN pipewire-0.3.84.orig/src/daemon/pipewire-pulse.conf.in pipewire-0.3.84/src/daemon/pipewire-pulse.conf.in ---- pipewire-0.3.84.orig/src/daemon/pipewire-pulse.conf.in 2023-11-13 16:35:56.502690919 +0000 -+++ pipewire-0.3.84/src/daemon/pipewire-pulse.conf.in 2023-11-13 16:36:28.096495134 +0000 -@@ -90,11 +90,11 @@ pulse.properties = { +diff -rupN pipewire-1.0.0.orig/src/daemon/pipewire-pulse.conf.in pipewire-1.0.0/src/daemon/pipewire-pulse.conf.in +--- pipewire-1.0.0.orig/src/daemon/pipewire-pulse.conf.in 2023-12-29 13:41:35.329947857 +0000 ++++ pipewire-1.0.0/src/daemon/pipewire-pulse.conf.in 2023-12-29 13:41:46.850669838 +0000 +@@ -92,11 +92,11 @@ pulse.properties = { #"tcp:[::]:9999" # IPv6 on all addresses #"tcp:127.0.0.1:8888" # IPv4 on a single address # @@ -18,23 +18,17 @@ diff -rupN pipewire-0.3.84.orig/src/daemon/pipewire-pulse.conf.in pipewire-0.3.8 ] #server.dbus-name = "org.pulseaudio.Server" #pulse.min.req = 128/48000 # 2.7ms -diff -rupN pipewire-0.3.84.orig/src/daemon/systemd/system/pipewire.service.in pipewire-0.3.84/src/daemon/systemd/system/pipewire.service.in ---- pipewire-0.3.84.orig/src/daemon/systemd/system/pipewire.service.in 2023-11-13 16:35:56.502690919 +0000 -+++ pipewire-0.3.84/src/daemon/systemd/system/pipewire.service.in 2023-11-13 16:36:28.096495134 +0000 -@@ -15,21 +15,24 @@ Description=PipeWire Multimedia Service - Requires=pipewire.socket - - [Service] --LockPersonality=yes --MemoryDenyWriteExecute=yes --NoNewPrivileges=yes --RestrictNamespaces=yes --SystemCallArchitectures=native --SystemCallFilter=@system-service +diff -rupN pipewire-1.0.0.orig/src/daemon/systemd/system/pipewire.service.in pipewire-1.0.0/src/daemon/systemd/system/pipewire.service.in +--- pipewire-1.0.0.orig/src/daemon/systemd/system/pipewire.service.in 2023-12-29 13:41:35.329947857 +0000 ++++ pipewire-1.0.0/src/daemon/systemd/system/pipewire.service.in 2023-12-29 13:43:32.217227049 +0000 +@@ -21,15 +21,25 @@ NoNewPrivileges=yes + RestrictNamespaces=yes + SystemCallArchitectures=native + SystemCallFilter=@system-service +Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket +User=root Type=simple --AmbientCapabilities=CAP_SYS_NICE + AmbientCapabilities=CAP_SYS_NICE -ExecStart=@PW_BINARY@ +ExecStart=/usr/bin/pipewire Restart=on-failure @@ -53,16 +47,16 @@ diff -rupN pipewire-0.3.84.orig/src/daemon/systemd/system/pipewire.service.in pi +Environment=HOME=/storage [Install] --Also=pipewire.socket -+Also=pipewire-pulse.socket +-Also=pipewire.socket pipewire-manager.socket ++Also=pipewire.socket pipewire-pulse.socket pipewire-manager.socket WantedBy=default.target -diff -rupN pipewire-0.3.84.orig/src/daemon/systemd/system/pipewire.socket pipewire-0.3.84/src/daemon/systemd/system/pipewire.socket ---- pipewire-0.3.84.orig/src/daemon/systemd/system/pipewire.socket 2023-11-13 16:35:56.502690919 +0000 -+++ pipewire-0.3.84/src/daemon/systemd/system/pipewire.socket 2023-11-13 16:36:58.434228383 +0000 -@@ -5,8 +5,8 @@ Description=PipeWire Multimedia System S +diff -rupN pipewire-1.0.0.orig/src/daemon/systemd/system/pipewire.socket pipewire-1.0.0/src/daemon/systemd/system/pipewire.socket +--- pipewire-1.0.0.orig/src/daemon/systemd/system/pipewire.socket 2023-12-29 13:41:35.329947857 +0000 ++++ pipewire-1.0.0/src/daemon/systemd/system/pipewire.socket 2023-12-29 13:44:04.291208172 +0000 +@@ -4,8 +4,8 @@ Description=PipeWire Multimedia System S + [Socket] Priority=6 ListenStream=%t/pipewire/pipewire-0 - ListenStream=%t/pipewire/pipewire-0-manager -SocketUser=pipewire -SocketGroup=pipewire +SocketUser=root diff --git a/packages/audio/pulseaudio/package.mk b/packages/audio/pulseaudio/package.mk index 0cee45008a..b3005ab5ca 100644 --- a/packages/audio/pulseaudio/package.mk +++ b/packages/audio/pulseaudio/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) PKG_NAME="pulseaudio" -PKG_VERSION="16.1" +PKG_VERSION="17.0" PKG_LICENSE="GPL" PKG_SITE="http://pulseaudio.org/" PKG_URL="http://www.freedesktop.org/software/pulseaudio/releases/${PKG_NAME}-${PKG_VERSION}.tar.xz" diff --git a/packages/audio/wireplumber/package.mk b/packages/audio/wireplumber/package.mk index 231f3b1cd6..e048dca173 100644 --- a/packages/audio/wireplumber/package.mk +++ b/packages/audio/wireplumber/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv) PKG_NAME="wireplumber" -PKG_VERSION="0.4.15" +PKG_VERSION="0.4.17" PKG_LICENSE="MIT" PKG_SITE="https://gitlab.freedesktop.org/pipewire/wireplumber" PKG_URL="https://gitlab.freedesktop.org/pipewire/wireplumber/-/archive/${PKG_VERSION}/${PKG_NAME}-${PKG_VERSION}.tar.gz" @@ -21,6 +21,7 @@ PKG_MESON_OPTS_TARGET="-Dintrospection=disabled \ post_makeinstall_target() { + mkdir -p ${INSTALL}/usr/share/wireplumber/{main.lua.d,bluetooth.lua.d} # ref https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/0da29f38181e391160fa8702623050b8544ec775 cat > ${INSTALL}/usr/share/wireplumber/main.lua.d/89-disable-session-dbus-dependent-features.lua << EOF alsa_monitor.properties["alsa.reserve"] = false diff --git a/packages/network/bluez/autostart/009-bluetooth b/packages/network/bluez/autostart/009-bluetooth index ebccc94d55..60fb5bd92d 100755 --- a/packages/network/bluez/autostart/009-bluetooth +++ b/packages/network/bluez/autostart/009-bluetooth @@ -7,6 +7,10 @@ if [ "$(get_setting bluetooth.enabled)" == "1" ] then tocon "Starting bluetooth..." + if [ ! -e "/storage/.cache/services/bluez.conf" ] + then + cp -f /usr/share/services/bluez.conf /storage/.cache/services/bluez.conf + fi nohup systemctl start bluetooth & nohup systemctl start bluetooth-agent & nohup systemctl start bluetoothsense & diff --git a/packages/network/bluez/package.mk b/packages/network/bluez/package.mk index 90d1a22b16..a738d5e17a 100644 --- a/packages/network/bluez/package.mk +++ b/packages/network/bluez/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv) PKG_NAME="bluez" -PKG_VERSION="5.70" +PKG_VERSION="5.72" PKG_LICENSE="GPL" PKG_SITE="http://www.bluez.org/" PKG_URL="https://www.kernel.org/pub/linux/bluetooth/${PKG_NAME}-${PKG_VERSION}.tar.xz" @@ -71,9 +71,15 @@ post_makeinstall_target() { mkdir -p ${INSTALL}/etc/bluetooth cp src/main.conf ${INSTALL}/etc/bluetooth + cat <${INSTALL}/etc/bluetooth/input.conf +[General] +ClassicBondedOnly=false +EOF + mkdir -p ${INSTALL}/usr/share/services cp -P ${PKG_DIR}/default.d/*.conf ${INSTALL}/usr/share/services + # bluez looks in /etc/firmware/ ln -sf /usr/lib/firmware ${INSTALL}/etc/firmware From b70d7341bc940d0dcb5592705e45b6442b851a80 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Tue, 23 Jan 2024 00:55:28 +0000 Subject: [PATCH 093/167] Revert back to kernel 6.6.x as AMD64 devices have had some boot time panic issues since moving to 6.7.x. --- .../linux-firmware/kernel-firmware/package.mk | 4 +- packages/kernel/linux/package.mk | 2 +- .../AMD64/002-LegionGO-rotation-quirk.patch | 528 +----------------- .../patches/AMD64/002-display-quirks.patch | 14 +- .../patches/AMD64/009-ayaneo-audio.patch | 52 ++ 5 files changed, 68 insertions(+), 532 deletions(-) create mode 100644 packages/kernel/linux/patches/AMD64/009-ayaneo-audio.patch diff --git a/packages/kernel/linux-firmware/kernel-firmware/package.mk b/packages/kernel/linux-firmware/kernel-firmware/package.mk index 794b5d98c0..e7f40b7813 100644 --- a/packages/kernel/linux-firmware/kernel-firmware/package.mk +++ b/packages/kernel/linux-firmware/kernel-firmware/package.mk @@ -2,10 +2,10 @@ # Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) PKG_NAME="kernel-firmware" -PKG_VERSION="20231211" +PKG_VERSION="20240115" PKG_LICENSE="other" PKG_SITE="https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/" -PKG_URL="https://cdn.kernel.org/pub/linux/kernel/firmware/linux-firmware-${PKG_VERSION}.tar.xz" +PKG_URL="https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/linux-firmware-${PKG_VERSION}.tar.gz" PKG_NEED_UNPACK="${PROJECT_DIR}/${PROJECT}/packages/${PKG_NAME} ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/packages/${PKG_NAME}" PKG_LONGDESC="kernel-firmware: kernel related firmware" PKG_TOOLCHAIN="manual" diff --git a/packages/kernel/linux/package.mk b/packages/kernel/linux/package.mk index 539c3c994b..60d87bfe0e 100644 --- a/packages/kernel/linux/package.mk +++ b/packages/kernel/linux/package.mk @@ -4,7 +4,7 @@ PKG_NAME="linux" PKG_LICENSE="GPL" -PKG_VERSION="6.7.1" +PKG_VERSION="6.6.13" PKG_URL="https://www.kernel.org/pub/linux/kernel/v6.x/${PKG_NAME}-${PKG_VERSION}.tar.xz" PKG_SITE="http://www.kernel.org" PKG_DEPENDS_HOST="ccache:host rsync:host openssl:host rdfind:host" diff --git a/packages/kernel/linux/patches/AMD64/002-LegionGO-rotation-quirk.patch b/packages/kernel/linux/patches/AMD64/002-LegionGO-rotation-quirk.patch index 1bca49a0a9..f4b8423eb7 100644 --- a/packages/kernel/linux/patches/AMD64/002-LegionGO-rotation-quirk.patch +++ b/packages/kernel/linux/patches/AMD64/002-LegionGO-rotation-quirk.patch @@ -1,533 +1,17 @@ -diff -rupN linux-6.7-rc8.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux-6.7-rc8.panel/drivers/gpu/drm/drm_panel_orientation_quirks.c ---- linux-6.7-rc8.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c 2024-01-04 23:15:09.706448784 +0000 -+++ linux-6.7-rc8.panel/drivers/gpu/drm/drm_panel_orientation_quirks.c 2024-01-04 23:20:09.071025713 +0000 +diff -rupN linux.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux/drivers/gpu/drm/drm_panel_orientation_quirks.c +--- linux.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c 2023-11-28 17:20:18.000000000 +0000 ++++ linux/drivers/gpu/drm/drm_panel_orientation_quirks.c 2023-11-30 15:33:54.949480402 +0000 @@ -336,6 +336,13 @@ static const struct dmi_system_id orient DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "IdeaPad Duet 3 10IGL5"), }, .driver_data = (void *)&lcd1200x1920_rightside_up, -+ }, { /* Lenovo Legion Go */ ++ }, { /* Lenovo Legion Go */ + .matches = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "83E1"), + DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Legion Go 8APU1"), + }, + .driver_data = (void *)&lcd1600x2560_leftside_up, - }, { /* Lenovo Legion Go 8APU1 */ + }, { /* Lenovo Yoga Book X90F / X90L */ .matches = { - DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"), -diff -rupN linux-6.7-rc8.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c.orig linux-6.7-rc8.panel/drivers/gpu/drm/drm_panel_orientation_quirks.c.orig ---- linux-6.7-rc8.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c.orig 1970-01-01 00:00:00.000000000 +0000 -+++ linux-6.7-rc8.panel/drivers/gpu/drm/drm_panel_orientation_quirks.c.orig 2024-01-04 23:18:55.450922222 +0000 -@@ -0,0 +1,492 @@ -+/* SPDX-License-Identifier: MIT */ -+/* -+ * drm_panel_orientation_quirks.c -- Quirks for non-normal panel orientation -+ * -+ * Copyright (C) 2017 Hans de Goede -+ * -+ * Note the quirks in this file are shared with fbdev/efifb and as such -+ * must not depend on other drm code. -+ */ -+ -+#include -+#include -+#include -+#include -+ -+#ifdef CONFIG_DMI -+ -+/* -+ * Some x86 clamshell design devices use portrait tablet screens and a display -+ * engine which cannot rotate in hardware, so we need to rotate the fbcon to -+ * compensate. Unfortunately these (cheap) devices also typically have quite -+ * generic DMI data, so we match on a combination of DMI data, screen resolution -+ * and a list of known BIOS dates to avoid false positives. -+ */ -+ -+struct drm_dmi_panel_orientation_data { -+ int width; -+ int height; -+ const char * const *bios_dates; -+ int orientation; -+}; -+ -+static const struct drm_dmi_panel_orientation_data gpd_micropc = { -+ .width = 720, -+ .height = 1280, -+ .bios_dates = (const char * const []){ "04/26/2019", -+ NULL }, -+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP, -+}; -+ -+static const struct drm_dmi_panel_orientation_data gpd_onemix2s = { -+ .width = 1200, -+ .height = 1920, -+ .bios_dates = (const char * const []){ "05/21/2018", "10/26/2018", -+ "03/04/2019", NULL }, -+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP, -+}; -+ -+static const struct drm_dmi_panel_orientation_data gpd_pocket = { -+ .width = 1200, -+ .height = 1920, -+ .bios_dates = (const char * const []){ "05/26/2017", "06/28/2017", -+ "07/05/2017", "08/07/2017", NULL }, -+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP, -+}; -+ -+static const struct drm_dmi_panel_orientation_data gpd_pocket2 = { -+ .width = 1200, -+ .height = 1920, -+ .bios_dates = (const char * const []){ "06/28/2018", "08/28/2018", -+ "12/07/2018", NULL }, -+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP, -+}; -+ -+static const struct drm_dmi_panel_orientation_data gpd_win = { -+ .width = 720, -+ .height = 1280, -+ .bios_dates = (const char * const []){ -+ "10/25/2016", "11/18/2016", "12/23/2016", "12/26/2016", -+ "02/21/2017", "03/20/2017", "05/25/2017", NULL }, -+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP, -+}; -+ -+static const struct drm_dmi_panel_orientation_data gpd_win2 = { -+ .width = 720, -+ .height = 1280, -+ .bios_dates = (const char * const []){ -+ "12/07/2017", "05/24/2018", "06/29/2018", NULL }, -+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP, -+}; -+ -+static const struct drm_dmi_panel_orientation_data itworks_tw891 = { -+ .width = 800, -+ .height = 1280, -+ .bios_dates = (const char * const []){ "10/16/2015", NULL }, -+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP, -+}; -+ -+static const struct drm_dmi_panel_orientation_data onegx1_pro = { -+ .width = 1200, -+ .height = 1920, -+ .bios_dates = (const char * const []){ "12/17/2020", NULL }, -+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP, -+}; -+ -+static const struct drm_dmi_panel_orientation_data lcd720x1280_rightside_up = { -+ .width = 720, -+ .height = 1280, -+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP, -+}; -+ -+static const struct drm_dmi_panel_orientation_data lcd800x1280_leftside_up = { -+ .width = 800, -+ .height = 1280, -+ .orientation = DRM_MODE_PANEL_ORIENTATION_LEFT_UP, -+}; -+ -+static const struct drm_dmi_panel_orientation_data lcd800x1280_rightside_up = { -+ .width = 800, -+ .height = 1280, -+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP, -+}; -+ -+static const struct drm_dmi_panel_orientation_data lcd1080x1920_leftside_up = { -+ .width = 1080, -+ .height = 1920, -+ .orientation = DRM_MODE_PANEL_ORIENTATION_LEFT_UP, -+}; -+ -+static const struct drm_dmi_panel_orientation_data lcd1200x1920_rightside_up = { -+ .width = 1200, -+ .height = 1920, -+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP, -+}; -+ -+static const struct drm_dmi_panel_orientation_data lcd1280x1920_rightside_up = { -+ .width = 1280, -+ .height = 1920, -+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP, -+}; -+ -+static const struct drm_dmi_panel_orientation_data lcd1600x2560_leftside_up = { -+ .width = 1600, -+ .height = 2560, -+ .orientation = DRM_MODE_PANEL_ORIENTATION_LEFT_UP, -+}; -+ -+static const struct drm_dmi_panel_orientation_data lcd1600x2560_rightside_up = { -+ .width = 1600, -+ .height = 2560, -+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP, -+}; -+ -+static const struct dmi_system_id orientation_data[] = { -+ { /* Acer One 10 (S1003) */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Acer"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "One S1003"), -+ }, -+ .driver_data = (void *)&lcd800x1280_rightside_up, -+ }, { /* Acer Switch V 10 (SW5-017) */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Acer"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "SW5-017"), -+ }, -+ .driver_data = (void *)&lcd800x1280_rightside_up, -+ }, { /* Anbernic Win600 */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Anbernic"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Win600"), -+ }, -+ .driver_data = (void *)&lcd720x1280_rightside_up, -+ }, { /* Asus T100HA */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "T100HAN"), -+ }, -+ .driver_data = (void *)&lcd800x1280_leftside_up, -+ }, { /* Asus T101HA */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "T101HA"), -+ }, -+ .driver_data = (void *)&lcd800x1280_rightside_up, -+ }, { /* Asus T103HAF */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "T103HAF"), -+ }, -+ .driver_data = (void *)&lcd800x1280_rightside_up, -+ }, { /* AYA NEO 2021 */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AYADEVICE"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "AYA NEO 2021"), -+ }, -+ .driver_data = (void *)&lcd800x1280_rightside_up, -+ }, { /* AYA NEO AIR */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AYANEO"), -+ DMI_MATCH(DMI_PRODUCT_NAME, "AIR"), -+ }, -+ .driver_data = (void *)&lcd1080x1920_leftside_up, -+ }, { /* AYA NEO NEXT */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"), -+ DMI_MATCH(DMI_BOARD_NAME, "NEXT"), -+ }, -+ .driver_data = (void *)&lcd800x1280_rightside_up, -+ }, { /* Chuwi HiBook (CWI514) */ -+ .matches = { -+ DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"), -+ DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"), -+ /* Above matches are too generic, add bios-date match */ -+ DMI_MATCH(DMI_BIOS_DATE, "05/07/2016"), -+ }, -+ .driver_data = (void *)&lcd1200x1920_rightside_up, -+ }, { /* Chuwi Hi10 Pro (CWI529) */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Hampoo"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Hi10 pro tablet"), -+ }, -+ .driver_data = (void *)&lcd1200x1920_rightside_up, -+ }, { /* Dynabook K50 */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dynabook Inc."), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "dynabook K50/FR"), -+ }, -+ .driver_data = (void *)&lcd800x1280_leftside_up, -+ }, { /* GPD MicroPC (generic strings, also match on bios date) */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Default string"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Default string"), -+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Default string"), -+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"), -+ }, -+ .driver_data = (void *)&gpd_micropc, -+ }, { /* GPD MicroPC (later BIOS versions with proper DMI strings) */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "GPD"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "MicroPC"), -+ }, -+ .driver_data = (void *)&lcd720x1280_rightside_up, -+ }, { /* GPD Win Max */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "GPD"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "G1619-01"), -+ }, -+ .driver_data = (void *)&lcd800x1280_rightside_up, -+ }, { /* -+ * GPD Pocket, note that the DMI data is less generic then -+ * it seems, devices with a board-vendor of "AMI Corporation" -+ * are quite rare, as are devices which have both board- *and* -+ * product-id set to "Default String" -+ */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"), -+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"), -+ DMI_EXACT_MATCH(DMI_BOARD_SERIAL, "Default string"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Default string"), -+ }, -+ .driver_data = (void *)&gpd_pocket, -+ }, { /* GPD Pocket 2 (generic strings, also match on bios date) */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Default string"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Default string"), -+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Default string"), -+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"), -+ }, -+ .driver_data = (void *)&gpd_pocket2, -+ }, { /* GPD Win (same note on DMI match as GPD Pocket) */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"), -+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"), -+ DMI_EXACT_MATCH(DMI_BOARD_SERIAL, "Default string"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Default string"), -+ }, -+ .driver_data = (void *)&gpd_win, -+ }, { /* GPD Win 2 (too generic strings, also match on bios date) */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Default string"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Default string"), -+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Default string"), -+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"), -+ }, -+ .driver_data = (void *)&gpd_win2, -+ }, { /* GPD Win 3 */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "GPD"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "G1618-03") -+ }, -+ .driver_data = (void *)&lcd720x1280_rightside_up, -+ }, { /* I.T.Works TW891 */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "To be filled by O.E.M."), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "TW891"), -+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "To be filled by O.E.M."), -+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "TW891"), -+ }, -+ .driver_data = (void *)&itworks_tw891, -+ }, { /* KD Kurio Smart C15200 2-in-1 */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "KD Interactive"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Kurio Smart"), -+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "KDM960BCP"), -+ }, -+ .driver_data = (void *)&lcd800x1280_rightside_up, -+ }, { /* -+ * Lenovo Ideapad Miix 310 laptop, only some production batches -+ * have a portrait screen, the resolution checks makes the quirk -+ * apply only to those batches. -+ */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "80SG"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "MIIX 310-10ICR"), -+ }, -+ .driver_data = (void *)&lcd800x1280_rightside_up, -+ }, { /* Lenovo Ideapad Miix 320 */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "80XF"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Lenovo MIIX 320-10ICR"), -+ }, -+ .driver_data = (void *)&lcd800x1280_rightside_up, -+ }, { /* Lenovo Ideapad D330-10IGM (HD) */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad D330-10IGM"), -+ }, -+ .driver_data = (void *)&lcd800x1280_rightside_up, -+ }, { /* Lenovo Ideapad D330-10IGM (FHD) */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad D330-10IGM"), -+ }, -+ .driver_data = (void *)&lcd1200x1920_rightside_up, -+ }, { /* Lenovo Ideapad D330-10IGL (HD) */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad D330-10IGL"), -+ }, -+ .driver_data = (void *)&lcd800x1280_rightside_up, -+ }, { /* Lenovo IdeaPad Duet 3 10IGL5 */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "IdeaPad Duet 3 10IGL5"), -+ }, -+ .driver_data = (void *)&lcd1200x1920_rightside_up, -+ }, { /* Lenovo Legion Go 8APU1 */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Legion Go 8APU1"), -+ }, -+ .driver_data = (void *)&lcd1600x2560_leftside_up, -+ }, { /* Lenovo Yoga Book X90F / X90L */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Intel Corporation"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "YETI-11"), -+ }, -+ .driver_data = (void *)&lcd1200x1920_rightside_up, -+ }, { /* Lenovo Yoga Book X91F / X91L */ -+ .matches = { -+ /* Non exact match to match F + L versions */ -+ DMI_MATCH(DMI_PRODUCT_NAME, "Lenovo YB1-X91"), -+ }, -+ .driver_data = (void *)&lcd1200x1920_rightside_up, -+ }, { /* Lenovo Yoga Tablet 2 830F / 830L */ -+ .matches = { -+ /* -+ * Note this also matches the Lenovo Yoga Tablet 2 1050F/L -+ * since that uses the same mainboard. The resolution match -+ * will limit this to only matching on the 830F/L. Neither has -+ * any external video outputs so those are not a concern. -+ */ -+ DMI_MATCH(DMI_SYS_VENDOR, "Intel Corp."), -+ DMI_MATCH(DMI_PRODUCT_NAME, "VALLEYVIEW C0 PLATFORM"), -+ DMI_MATCH(DMI_BOARD_NAME, "BYT-T FFD8"), -+ /* Partial match on beginning of BIOS version */ -+ DMI_MATCH(DMI_BIOS_VERSION, "BLADE_21"), -+ }, -+ .driver_data = (void *)&lcd1200x1920_rightside_up, -+ }, { /* Lenovo Yoga Tab 3 X90F */ -+ .matches = { -+ DMI_MATCH(DMI_SYS_VENDOR, "Intel Corporation"), -+ DMI_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"), -+ DMI_MATCH(DMI_PRODUCT_VERSION, "Blade3-10A-001"), -+ }, -+ .driver_data = (void *)&lcd1600x2560_rightside_up, -+ }, { /* Nanote UMPC-01 */ -+ .matches = { -+ DMI_MATCH(DMI_SYS_VENDOR, "RWC CO.,LTD"), -+ DMI_MATCH(DMI_PRODUCT_NAME, "UMPC-01"), -+ }, -+ .driver_data = (void *)&lcd1200x1920_rightside_up, -+ }, { /* OneGX1 Pro */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "SYSTEM_MANUFACTURER"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "SYSTEM_PRODUCT_NAME"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Default string"), -+ }, -+ .driver_data = (void *)&onegx1_pro, -+ }, { /* OneXPlayer */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ONE-NETBOOK TECHNOLOGY CO., LTD."), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "ONE XPLAYER"), -+ }, -+ .driver_data = (void *)&lcd1600x2560_leftside_up, -+ }, { /* Samsung GalaxyBook 10.6 */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Galaxy Book 10.6"), -+ }, -+ .driver_data = (void *)&lcd1280x1920_rightside_up, -+ }, { /* Valve Steam Deck */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Valve"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Jupiter"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "1"), -+ }, -+ .driver_data = (void *)&lcd800x1280_rightside_up, -+ }, { /* VIOS LTH17 */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "VIOS"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "LTH17"), -+ }, -+ .driver_data = (void *)&lcd800x1280_rightside_up, -+ }, { /* One Mix 2S (generic strings, also match on bios date) */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Default string"), -+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Default string"), -+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Default string"), -+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"), -+ }, -+ .driver_data = (void *)&gpd_onemix2s, -+ }, -+ {} -+}; -+ -+/** -+ * drm_get_panel_orientation_quirk - Check for panel orientation quirks -+ * @width: width in pixels of the panel -+ * @height: height in pixels of the panel -+ * -+ * This function checks for platform specific (e.g. DMI based) quirks -+ * providing info on panel_orientation for systems where this cannot be -+ * probed from the hard-/firm-ware. To avoid false-positive this function -+ * takes the panel resolution as argument and checks that against the -+ * resolution expected by the quirk-table entry. -+ * -+ * Note this function is also used outside of the drm-subsys, by for example -+ * the efifb code. Because of this this function gets compiled into its own -+ * kernel-module when built as a module. -+ * -+ * Returns: -+ * A DRM_MODE_PANEL_ORIENTATION_* value if there is a quirk for this system, -+ * or DRM_MODE_PANEL_ORIENTATION_UNKNOWN if there is no quirk. -+ */ -+int drm_get_panel_orientation_quirk(int width, int height) -+{ -+ const struct dmi_system_id *match; -+ const struct drm_dmi_panel_orientation_data *data; -+ const char *bios_date; -+ int i; -+ -+ for (match = dmi_first_match(orientation_data); -+ match; -+ match = dmi_first_match(match + 1)) { -+ data = match->driver_data; -+ -+ if (data->width != width || -+ data->height != height) -+ continue; -+ -+ if (!data->bios_dates) -+ return data->orientation; -+ -+ bios_date = dmi_get_system_info(DMI_BIOS_DATE); -+ if (!bios_date) -+ continue; -+ -+ i = match_string(data->bios_dates, -1, bios_date); -+ if (i >= 0) -+ return data->orientation; -+ } -+ -+ return DRM_MODE_PANEL_ORIENTATION_UNKNOWN; -+} -+EXPORT_SYMBOL(drm_get_panel_orientation_quirk); -+ -+#else -+ -+/* There are no quirks for non x86 devices yet */ -+int drm_get_panel_orientation_quirk(int width, int height) -+{ -+ return DRM_MODE_PANEL_ORIENTATION_UNKNOWN; -+} -+EXPORT_SYMBOL(drm_get_panel_orientation_quirk); -+ -+#endif -+ -+MODULE_LICENSE("Dual MIT/GPL"); -diff -rupN linux-6.7-rc8.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c.rej linux-6.7-rc8.panel/drivers/gpu/drm/drm_panel_orientation_quirks.c.rej ---- linux-6.7-rc8.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c.rej 1970-01-01 00:00:00.000000000 +0000 -+++ linux-6.7-rc8.panel/drivers/gpu/drm/drm_panel_orientation_quirks.c.rej 2024-01-04 23:18:55.450922222 +0000 -@@ -0,0 +1,16 @@ -+--- drivers/gpu/drm/drm_panel_orientation_quirks.c 2023-11-28 17:20:18.000000000 +0000 -++++ drivers/gpu/drm/drm_panel_orientation_quirks.c 2023-11-30 15:33:54.949480402 +0000 -+@@ -336,6 +336,13 @@ static const struct dmi_system_id orient -+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "IdeaPad Duet 3 10IGL5"), -+ }, -+ .driver_data = (void *)&lcd1200x1920_rightside_up, -++ }, { /* Lenovo Legion Go */ -++ .matches = { -++ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"), -++ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "83E1"), -++ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Legion Go 8APU1"), -++ }, -++ .driver_data = (void *)&lcd1600x2560_leftside_up, -+ }, { /* Lenovo Yoga Book X90F / X90L */ -+ .matches = { -+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Intel Corporation"), + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Intel Corporation"), diff --git a/packages/kernel/linux/patches/AMD64/002-display-quirks.patch b/packages/kernel/linux/patches/AMD64/002-display-quirks.patch index 806f3f6449..7352a9946f 100755 --- a/packages/kernel/linux/patches/AMD64/002-display-quirks.patch +++ b/packages/kernel/linux/patches/AMD64/002-display-quirks.patch @@ -1,7 +1,7 @@ -diff -rupN linux-6.6.9.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux-6.6.9/drivers/gpu/drm/drm_panel_orientation_quirks.c ---- linux-6.6.9.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c 2024-01-04 00:22:05.545161814 +0000 -+++ linux-6.6.9/drivers/gpu/drm/drm_panel_orientation_quirks.c 2024-01-04 00:23:21.365247268 +0000 -@@ -141,6 +141,12 @@ static const struct drm_dmi_panel_orient +diff -rupN linux.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux/drivers/gpu/drm/drm_panel_orientation_quirks.c +--- linux.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c 2023-09-02 07:14:38.000000000 +0000 ++++ linux/drivers/gpu/drm/drm_panel_orientation_quirks.c 2023-09-09 03:24:49.178775423 +0000 +@@ -133,6 +133,12 @@ static const struct drm_dmi_panel_orient .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP, }; @@ -14,7 +14,7 @@ diff -rupN linux-6.6.9.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux static const struct dmi_system_id orientation_data[] = { { /* Acer One 10 (S1003) */ .matches = { -@@ -178,13 +184,13 @@ static const struct dmi_system_id orient +@@ -170,13 +176,13 @@ static const struct dmi_system_id orient DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "T103HAF"), }, .driver_data = (void *)&lcd800x1280_rightside_up, @@ -31,7 +31,7 @@ diff -rupN linux-6.6.9.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux .matches = { DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AYANEO"), DMI_MATCH(DMI_PRODUCT_NAME, "AIR"), -@@ -196,6 +202,30 @@ static const struct dmi_system_id orient +@@ -188,6 +194,30 @@ static const struct dmi_system_id orient DMI_MATCH(DMI_BOARD_NAME, "NEXT"), }, .driver_data = (void *)&lcd800x1280_rightside_up, @@ -41,7 +41,7 @@ diff -rupN linux-6.6.9.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux + DMI_MATCH(DMI_BOARD_NAME, "GEEK"), + }, + .driver_data = (void *)&lcd800x1280_rightside_up, -+ }, { /* AYANEO AYANEO 2, 2S */ ++ }, { /* AYANEO AYANEO 2 */ + .matches = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AYANEO"), + DMI_MATCH(DMI_PRODUCT_NAME, "AYANEO 2"), diff --git a/packages/kernel/linux/patches/AMD64/009-ayaneo-audio.patch b/packages/kernel/linux/patches/AMD64/009-ayaneo-audio.patch new file mode 100644 index 0000000000..d8ce9fe35e --- /dev/null +++ b/packages/kernel/linux/patches/AMD64/009-ayaneo-audio.patch @@ -0,0 +1,52 @@ +diff -rupN linux-6.7-rc8.orig/sound/pci/hda/patch_realtek.c linux-6.7-rc8.hda/sound/pci/hda/patch_realtek.c +--- linux-6.7-rc8.orig/sound/pci/hda/patch_realtek.c 2024-01-04 23:15:10.710503820 +0000 ++++ linux-6.7-rc8.hda/sound/pci/hda/patch_realtek.c 2024-01-04 23:23:29.598266931 +0000 +@@ -6550,6 +6550,20 @@ static void alc294_gx502_toggle_output(s + alc_write_coef_idx(codec, 0x10, 0x0a20); + } + ++static void alc269_fixup_headphone_volume(struct hda_codec *codec, ++ const struct hda_fixup *fix, int action) ++{ ++ /* Pin 0x21: Some devices share 0x14 for headphones and speakers. ++ * This will fix ensure these devices have volume controls. */ ++ if (!is_jack_detectable(codec, 0x21)) ++ return; ++ ++ if (action == HDA_FIXUP_ACT_PRE_PROBE) { ++ static const hda_nid_t conn1[] = { 0x02 }; ++ snd_hda_override_conn_list(codec, 0x14, ARRAY_SIZE(conn1), conn1); ++ } ++} ++ + static void alc294_fixup_gx502_hp(struct hda_codec *codec, + const struct hda_fixup *fix, int action) + { +@@ -7235,6 +7249,7 @@ enum { + ALC269_FIXUP_DELL3_MIC_NO_PRESENCE, + ALC269_FIXUP_DELL4_MIC_NO_PRESENCE, + ALC269_FIXUP_DELL4_MIC_NO_PRESENCE_QUIET, ++ ALC269_FIXUP_HEADSET_AYANEO_DEVICES, + ALC269_FIXUP_HEADSET_MODE, + ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC, + ALC269_FIXUP_ASPIRE_HEADSET_MIC, +@@ -8391,6 +8406,10 @@ static const struct hda_fixup alc269_fix + .chained = true, + .chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE + }, ++ [ALC269_FIXUP_HEADSET_AYANEO_DEVICES] = { ++ .type = HDA_FIXUP_FUNC, ++ .v.func = alc269_fixup_headphone_volume, ++ }, + [ALC256_FIXUP_ASUS_AIO_GPIO2] = { + .type = HDA_FIXUP_FUNC, + /* Set up GPIO2 for the speaker amp */ +@@ -10283,6 +10302,8 @@ static const struct snd_pci_quirk alc269 + SND_PCI_QUIRK(0x1d72, 0x1901, "RedmiBook 14", ALC256_FIXUP_ASUS_HEADSET_MIC), + SND_PCI_QUIRK(0x1d72, 0x1945, "Redmi G", ALC256_FIXUP_ASUS_HEADSET_MIC), + SND_PCI_QUIRK(0x1d72, 0x1947, "RedmiBook Air", ALC255_FIXUP_XIAOMI_HEADSET_MIC), ++ SND_PCI_QUIRK(0x1f66, 0x0101, "AYANEO Devices", ALC269_FIXUP_HEADSET_AYANEO_DEVICES), ++ SND_PCI_QUIRK(0x1f66, 0x0103, "AYANEO Air Plus", ALC269_FIXUP_HEADSET_AYANEO_DEVICES), + SND_PCI_QUIRK(0x2782, 0x0232, "CHUWI CoreBook XPro", ALC269VB_FIXUP_CHUWI_COREBOOK_XPRO), + SND_PCI_QUIRK(0x8086, 0x2074, "Intel NUC 8", ALC233_FIXUP_INTEL_NUC8_DMIC), + SND_PCI_QUIRK(0x8086, 0x2080, "Intel NUC 8 Rugged", ALC256_FIXUP_INTEL_NUC8_RUGGED), From 56c8aafd0917b58da8c3bc9087fcdd93c65c3187 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Tue, 23 Jan 2024 14:42:24 +0000 Subject: [PATCH 094/167] Fix gamepad device order passed from EmulationStation to RetroArch. --- .../retroarch/patches/0007-xkb-fix.patch | 30 ------------------- packages/ui/emulationstation/package.mk | 2 +- 2 files changed, 1 insertion(+), 31 deletions(-) delete mode 100644 packages/emulators/standalone/retroarch/patches/0007-xkb-fix.patch diff --git a/packages/emulators/standalone/retroarch/patches/0007-xkb-fix.patch b/packages/emulators/standalone/retroarch/patches/0007-xkb-fix.patch deleted file mode 100644 index 630547b0eb..0000000000 --- a/packages/emulators/standalone/retroarch/patches/0007-xkb-fix.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff --git a/input/drivers/udev_input.c b/input/drivers/udev_input.c -index bcdacb60a6..d2f00114bd 100644 ---- a/input/drivers/udev_input.c -+++ b/input/drivers/udev_input.c -@@ -76,14 +76,14 @@ - #include "../../retroarch.h" - #include "../../verbosity.h" - --#if defined(HAVE_XKBCOMMON) && defined(HAVE_KMS) -+#if defined(HAVE_XKBCOMMON) - #define UDEV_XKB_HANDLING - #endif - - /* Force UDEV_XKB_HANDLING for Lakka */ - #ifdef HAVE_LAKKA - #ifndef UDEV_XKB_HANDLING --#define UDEV_XKB_HANDLING -+#undef UDEV_XKB_HANDLING - #endif - #endif - -@@ -1402,7 +1402,7 @@ - /* Force xkb_handling on Lakka */ - udev->xkb_handling = true; - #else -- udev->xkb_handling = string_is_equal(ctx_ident.ident, "kms"); -+ udev->xkb_handling = true; //string_is_equal(ctx_ident.ident, "kms"); - #endif /* HAVE_LAKKA */ - #endif - diff --git a/packages/ui/emulationstation/package.mk b/packages/ui/emulationstation/package.mk index ba2b55005b..32adf8e702 100644 --- a/packages/ui/emulationstation/package.mk +++ b/packages/ui/emulationstation/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="emulationstation" -PKG_VERSION="ba5c0f88a21fdd19fe0b0f94e1ff6229fbf682cf" +PKG_VERSION="3e541dc2a9ea3fac9f842fc808be42c095934262" PKG_GIT_CLONE_BRANCH="main" PKG_REV="1" PKG_ARCH="any" From 75bcf939d49fb8d6a25d836d21b9c3ca4e706d10 Mon Sep 17 00:00:00 2001 From: brooksytech <1673861+brooksytech@users.noreply.github.com> Date: Tue, 23 Jan 2024 20:56:23 +0000 Subject: [PATCH 095/167] Add overclocking options to RK3326 --- .../hardware/quirks/autostart/095-turbo-mode | 16 +++++ .../quirks/platforms/RK3326/001-device_config | 7 ++ packages/hardware/quirks/profile.d/999-export | 1 + packages/sysutils/system-utils/package.mk | 1 + .../system-utils/sources/scripts/turbomode | 15 ++++ packages/ui/emulationstation/package.mk | 2 +- .../linux/patches/RK3326/000-rk3326-dts.patch | 70 +++++++++++-------- 7 files changed, 83 insertions(+), 29 deletions(-) create mode 100644 packages/hardware/quirks/autostart/095-turbo-mode create mode 100644 packages/hardware/quirks/platforms/RK3326/001-device_config create mode 100644 packages/sysutils/system-utils/sources/scripts/turbomode diff --git a/packages/hardware/quirks/autostart/095-turbo-mode b/packages/hardware/quirks/autostart/095-turbo-mode new file mode 100644 index 0000000000..2d063b7ddd --- /dev/null +++ b/packages/hardware/quirks/autostart/095-turbo-mode @@ -0,0 +1,16 @@ +#!/bin/sh + +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2024-present JELOS (https://github.com/JustEnoughLinuxOS) + +. /etc/profile.d/001-functions + +# Get Turbo Mode state. +TURBO_MODE_STATE=$(get_setting "enable.turbo-mode") +if [ ! -n "${TURBO_MODE_STATE}" ]; then + TURBO_MODE_STATE=0 + set_setting "enable.turbo-mode" "0" +fi + +# Set turbo-mode at boot +echo ${TURBO_MODE_STATE} > /sys/devices/system/cpu/cpufreq/boost diff --git a/packages/hardware/quirks/platforms/RK3326/001-device_config b/packages/hardware/quirks/platforms/RK3326/001-device_config new file mode 100644 index 0000000000..41c16bebda --- /dev/null +++ b/packages/hardware/quirks/platforms/RK3326/001-device_config @@ -0,0 +1,7 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS) + +cat </storage/.config/profile.d/001-device_config +DEVICE_TURBO_MODE="true" +EOF diff --git a/packages/hardware/quirks/profile.d/999-export b/packages/hardware/quirks/profile.d/999-export index 95433c38e7..d6c3576ee9 100755 --- a/packages/hardware/quirks/profile.d/999-export +++ b/packages/hardware/quirks/profile.d/999-export @@ -39,6 +39,7 @@ export SLOW_CORES \ DEVICE_ROTATED_SDL \ DEVICE_SW_HP_SWITCH \ DEVICE_TEMP_SENSOR \ + DEVICE_TURBO_MODE \ DEVICE_VOLUME \ DEVICE_VOLUMECTL \ DEVICE_WIFI \ diff --git a/packages/sysutils/system-utils/package.mk b/packages/sysutils/system-utils/package.mk index a1baf0744e..7bf26a40ec 100644 --- a/packages/sysutils/system-utils/package.mk +++ b/packages/sysutils/system-utils/package.mk @@ -22,6 +22,7 @@ makeinstall_target() { cp ${PKG_DIR}/sources/scripts/volume_sense ${INSTALL}/usr/bin cp ${PKG_DIR}/sources/scripts/bluetooth_sense ${INSTALL}/usr/bin cp ${PKG_DIR}/sources/scripts/ledcontrol ${INSTALL}/usr/bin + cp ${PKG_DIR}/sources/scripts/turbomode ${INSTALL}/usr/bin if [ -d "${PKG_DIR}/sources/devices/${DEVICE}" ] then cp ${PKG_DIR}/sources/devices/${DEVICE}/* ${INSTALL}/usr/bin diff --git a/packages/sysutils/system-utils/sources/scripts/turbomode b/packages/sysutils/system-utils/sources/scripts/turbomode new file mode 100644 index 0000000000..0eeee9388b --- /dev/null +++ b/packages/sysutils/system-utils/sources/scripts/turbomode @@ -0,0 +1,15 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS) + +# Set turbomode state +case $1 in + disable) + echo "0" > /sys/devices/system/cpu/cpufreq/boost + set_setting enable.turbo-mode 0 + ;; + enable) + echo "1" > /sys/devices/system/cpu/cpufreq/boost + set_setting enable.turbo-mode 1 + ;; +esac diff --git a/packages/ui/emulationstation/package.mk b/packages/ui/emulationstation/package.mk index 32adf8e702..7bad461040 100644 --- a/packages/ui/emulationstation/package.mk +++ b/packages/ui/emulationstation/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="emulationstation" -PKG_VERSION="3e541dc2a9ea3fac9f842fc808be42c095934262" +PKG_VERSION="67e3614fad133fcc414bffed9ed7941bfac3bc05" PKG_GIT_CLONE_BRANCH="main" PKG_REV="1" PKG_ARCH="any" diff --git a/projects/Rockchip/packages/linux/patches/RK3326/000-rk3326-dts.patch b/projects/Rockchip/packages/linux/patches/RK3326/000-rk3326-dts.patch index 679f44ca10..a1200ec508 100644 --- a/projects/Rockchip/packages/linux/patches/RK3326/000-rk3326-dts.patch +++ b/projects/Rockchip/packages/linux/patches/RK3326/000-rk3326-dts.patch @@ -1,6 +1,6 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/Makefile linux/arch/arm64/boot/dts/rockchip/Makefile ---- linux.orig/arch/arm64/boot/dts/rockchip/Makefile 2024-01-17 03:47:10.074350115 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/Makefile 2024-01-17 04:01:50.682844812 +0000 +--- linux.orig/arch/arm64/boot/dts/rockchip/Makefile 2024-01-22 23:55:56.423256979 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/Makefile 2024-01-23 03:05:55.471049048 +0000 @@ -9,9 +9,12 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-ro dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-rock-pi-s.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3318-a95x-z2.dtb @@ -15,9 +15,9 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/Makefile linux/arch/arm64/boo dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-evb.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-nanopi-r2c.dtb diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi linux/arch/arm64/boot/dts/rockchip/px30.dtsi ---- linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi 2024-01-17 03:47:10.078350209 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/px30.dtsi 2024-01-17 03:59:58.108276677 +0000 -@@ -114,27 +114,11 @@ +--- linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi 2024-01-22 23:55:56.427257071 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/px30.dtsi 2024-01-23 18:01:18.953774998 +0000 +@@ -114,32 +114,22 @@ compatible = "operating-points-v2"; opp-shared; @@ -45,7 +45,18 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi linux/arch/arm64/bo opp-1296000000 { opp-hz = /bits/ 64 <1296000000>; opp-microvolt = <1350000 1350000 1350000>; -@@ -349,6 +333,32 @@ + clock-latency-ns = <40000>; + }; ++ opp-1416000000 { ++ opp-hz = /bits/ 64 <1416000000>; ++ opp-microvolt = <1350000 1350000 1350000>; ++ clock-latency-ns = <40000>; ++ turbo-mode; ++ }; + }; + + arm-pmu { +@@ -349,6 +339,32 @@ }; }; @@ -78,7 +89,7 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi linux/arch/arm64/bo pmugrf: syscon@ff010000 { compatible = "rockchip,px30-pmugrf", "syscon", "simple-mfd"; reg = <0x0 0xff010000 0x0 0x1000>; -@@ -1064,20 +1074,12 @@ +@@ -1064,21 +1080,9 @@ gpu_opp_table: opp-table-1 { compatible = "operating-points-v2"; @@ -90,20 +101,22 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi linux/arch/arm64/bo - opp-hz = /bits/ 64 <300000000>; - opp-microvolt = <975000>; - }; - opp-400000000 { - opp-hz = /bits/ 64 <400000000>; - opp-microvolt = <1050000>; - }; +- opp-400000000 { +- opp-hz = /bits/ 64 <400000000>; +- opp-microvolt = <1050000>; +- }; - opp-480000000 { - opp-hz = /bits/ 64 <480000000>; -+ opp-440000000 { -+ opp-hz = /bits/ 64 <440000000>; - opp-microvolt = <1125000>; +- opp-microvolt = <1125000>; ++ opp-560000000 { ++ opp-hz = /bits/ 64 <560000000>; ++ opp-microvolt = <1150000>; }; }; + diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts ---- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts 2024-01-17 03:47:10.078350209 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts 2024-01-17 03:59:58.108276677 +0000 +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts 2024-01-22 23:55:56.427257071 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts 2024-01-23 03:05:55.471049048 +0000 @@ -12,6 +12,25 @@ model = "Anbernic RG351M"; compatible = "anbernic,rg351m", "rockchip,rk3326"; @@ -156,7 +169,7 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts li +}; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts --- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts 1970-01-01 00:00:00.000000000 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts 2024-01-17 03:59:58.108276677 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts 2024-01-23 03:05:55.471049048 +0000 @@ -0,0 +1,124 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* @@ -282,8 +295,9 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts li + }; + }; +}; ---- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts 1969-12-31 19:00:00.000000000 -0500 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts 2024-01-19 15:39:57.362135961 -0500 +diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts linux/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts 1970-01-01 00:00:00.000000000 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts 2024-01-23 03:05:55.471049048 +0000 @@ -0,0 +1,848 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* @@ -1134,8 +1148,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts li + }; +}; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi ---- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi 2024-01-17 03:47:10.078350209 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi 2024-01-17 03:59:58.108276677 +0000 +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi 2024-01-22 23:55:56.427257071 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi 2024-01-23 03:05:55.471049048 +0000 @@ -25,93 +25,40 @@ compatible = "pwm-backlight"; power-supply = <&vcc_bl>; @@ -1292,8 +1306,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi linux/a #clock-cells = <1>; #sound-dai-cells = <0>; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts ---- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts 2024-01-17 03:47:10.078350209 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts 2024-01-17 03:59:58.108276677 +0000 +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts 2024-01-22 23:55:56.427257071 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts 2024-01-23 03:05:55.471049048 +0000 @@ -16,31 +16,187 @@ mmc1 = &sdio; }; @@ -1575,8 +1589,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts lin <2 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>, <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts ---- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts 2024-01-17 03:47:10.078350209 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts 2024-01-17 03:59:58.108276677 +0000 +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts 2024-01-22 23:55:56.427257071 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts 2024-01-23 03:05:55.471049048 +0000 @@ -12,30 +12,175 @@ model = "ODROID-GO Advance"; compatible = "hardkernel,rk3326-odroid-go2", "rockchip,rk3326"; @@ -1809,8 +1823,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts linux/a + }; +}; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts ---- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts 2024-01-17 03:47:10.078350209 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts 2024-01-17 03:59:58.108276677 +0000 +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts 2024-01-22 23:55:56.427257071 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts 2024-01-23 03:05:55.471049048 +0000 @@ -12,67 +12,196 @@ model = "ODROID-GO Super"; compatible = "hardkernel,rk3326-odroid-go3", "rockchip,rk3326"; @@ -2120,7 +2134,7 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts linux/a }; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts linux/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts --- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts 1970-01-01 00:00:00.000000000 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts 2024-01-17 03:59:58.108276677 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts 2024-01-23 03:05:55.471049048 +0000 @@ -0,0 +1,280 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* From 97a252930fce09fd2c5eed3c917cc236f8e42211 Mon Sep 17 00:00:00 2001 From: brooksytech <1673861+brooksytech@users.noreply.github.com> Date: Tue, 23 Jan 2024 21:11:32 +0000 Subject: [PATCH 096/167] Fix profile oopsie --- .../RK3326/{001-device_config => 002-turbo-mode_config} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename packages/hardware/quirks/platforms/RK3326/{001-device_config => 002-turbo-mode_config} (70%) diff --git a/packages/hardware/quirks/platforms/RK3326/001-device_config b/packages/hardware/quirks/platforms/RK3326/002-turbo-mode_config similarity index 70% rename from packages/hardware/quirks/platforms/RK3326/001-device_config rename to packages/hardware/quirks/platforms/RK3326/002-turbo-mode_config index 41c16bebda..e78c24e2f7 100644 --- a/packages/hardware/quirks/platforms/RK3326/001-device_config +++ b/packages/hardware/quirks/platforms/RK3326/002-turbo-mode_config @@ -2,6 +2,6 @@ # SPDX-License-Identifier: GPL-2.0 # Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS) -cat </storage/.config/profile.d/001-device_config +cat </storage/.config/profile.d/002-turbo-mode_config DEVICE_TURBO_MODE="true" EOF From 0f2af0549370a64de4c6d5922de274f543398c25 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Tue, 23 Jan 2024 18:05:47 +0000 Subject: [PATCH 097/167] LEDs should power down when the system powers off. --- .../quirks/devices/AYANEO AIR Plus/bin/ledcontrol | 3 +++ .../quirks/devices/AYANEO AIR/bin/ledcontrol | 3 +++ .../quirks/devices/AYANEO AYANEO 2S/bin/ledcontrol | 3 +++ packages/hardware/quirks/package.mk | 4 ++++ .../hardware/quirks/system.d/led-poweroff.service | 12 ++++++++++++ 5 files changed, 25 insertions(+) create mode 100644 packages/hardware/quirks/system.d/led-poweroff.service diff --git a/packages/hardware/quirks/devices/AYANEO AIR Plus/bin/ledcontrol b/packages/hardware/quirks/devices/AYANEO AIR Plus/bin/ledcontrol index 3c301539b7..4a68c19e5a 100755 --- a/packages/hardware/quirks/devices/AYANEO AIR Plus/bin/ledcontrol +++ b/packages/hardware/quirks/devices/AYANEO AIR Plus/bin/ledcontrol @@ -303,6 +303,9 @@ case ${LEDBRIGHTNESS} in esac case ${1} in + poweroff) + led_state 0x31 + ;; off) led_state 0x31 set_setting led.color off diff --git a/packages/hardware/quirks/devices/AYANEO AIR/bin/ledcontrol b/packages/hardware/quirks/devices/AYANEO AIR/bin/ledcontrol index ba9bd87474..83da486db4 100755 --- a/packages/hardware/quirks/devices/AYANEO AIR/bin/ledcontrol +++ b/packages/hardware/quirks/devices/AYANEO AIR/bin/ledcontrol @@ -157,6 +157,9 @@ case $1 in color 1 ${LEDBRIGHTNESS} set_setting led.color purple ;; + poweroff) + off + ;; off) off set_setting led.color off diff --git a/packages/hardware/quirks/devices/AYANEO AYANEO 2S/bin/ledcontrol b/packages/hardware/quirks/devices/AYANEO AYANEO 2S/bin/ledcontrol index ba9bd87474..83da486db4 100755 --- a/packages/hardware/quirks/devices/AYANEO AYANEO 2S/bin/ledcontrol +++ b/packages/hardware/quirks/devices/AYANEO AYANEO 2S/bin/ledcontrol @@ -157,6 +157,9 @@ case $1 in color 1 ${LEDBRIGHTNESS} set_setting led.color purple ;; + poweroff) + off + ;; off) off set_setting led.color off diff --git a/packages/hardware/quirks/package.mk b/packages/hardware/quirks/package.mk index cff5bbd52a..91053eba91 100644 --- a/packages/hardware/quirks/package.mk +++ b/packages/hardware/quirks/package.mk @@ -22,3 +22,7 @@ makeinstall_target() { fi chmod -R 0755 ${INSTALL}/usr/lib/autostart/quirks } + +post_install() { + enable_service led-poweroff.service +} diff --git a/packages/hardware/quirks/system.d/led-poweroff.service b/packages/hardware/quirks/system.d/led-poweroff.service new file mode 100644 index 0000000000..e32d6c84e1 --- /dev/null +++ b/packages/hardware/quirks/system.d/led-poweroff.service @@ -0,0 +1,12 @@ +[Unit] +Description=Power LEDs off before shutting down. +After=multi-user.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/bin/true +ExecStop=/usr/bin/ledcontrol poweroff + +[Install] +WantedBy=multi-user.target From f75bfbdb5e8682790b4b85827053c8f828a523af Mon Sep 17 00:00:00 2001 From: fewtarius Date: Tue, 23 Jan 2024 21:17:37 +0000 Subject: [PATCH 098/167] * Fix pipewire bug affecting mednafen, discovered in https://forum.fobby.net/index.php?t=msg&&th=2172&goto=6976#msg_6976 * Loki devices should turn off LEDs before powering down as well. --- .../pipewire/patches/002-revert-pollfd.patch | 106 ++++++++++++++++++ .../devices/ayn Loki Max/bin/ledcontrol | 3 + .../devices/ayn Loki Zero/bin/ledcontrol | 3 + packages/jelos/sources/scripts/factoryreset | 10 +- 4 files changed, 117 insertions(+), 5 deletions(-) create mode 100644 packages/audio/pipewire/patches/002-revert-pollfd.patch diff --git a/packages/audio/pipewire/patches/002-revert-pollfd.patch b/packages/audio/pipewire/patches/002-revert-pollfd.patch new file mode 100644 index 0000000000..ddea2e936f --- /dev/null +++ b/packages/audio/pipewire/patches/002-revert-pollfd.patch @@ -0,0 +1,106 @@ +diff -rupN pipewire-1.0.1.orig/pipewire-alsa/alsa-plugins/pcm_pipewire.c pipewire-1.0.1/pipewire-alsa/alsa-plugins/pcm_pipewire.c +--- pipewire-1.0.1.orig/pipewire-alsa/alsa-plugins/pcm_pipewire.c 2024-01-23 20:57:27.818081461 +0000 ++++ pipewire-1.0.1/pipewire-alsa/alsa-plugins/pcm_pipewire.c 2024-01-23 20:57:56.203633317 +0000 +@@ -89,7 +89,7 @@ typedef struct { + + static int snd_pcm_pipewire_stop(snd_pcm_ioplug_t *io); + +-static int update_active(snd_pcm_ioplug_t *io) ++static int check_active(snd_pcm_ioplug_t *io) + { + snd_pcm_pipewire_t *pw = io->private_data; + snd_pcm_sframes_t avail; +@@ -97,10 +97,7 @@ static int update_active(snd_pcm_ioplug_ + + avail = snd_pcm_ioplug_avail(io, pw->hw_ptr, io->appl_ptr); + +- if (pw->error > 0) { +- active = true; +- } +- else if (io->state == SND_PCM_STATE_DRAINING) { ++ if (io->state == SND_PCM_STATE_DRAINING) { + active = pw->drained; + } + else if (avail >= 0 && avail < (snd_pcm_sframes_t)pw->min_avail) { +@@ -108,27 +105,33 @@ static int update_active(snd_pcm_ioplug_ + } + else if (avail >= (snd_pcm_sframes_t)pw->min_avail) { + active = true; +- } +- else { ++ } else { + active = false; + } + if (pw->active != active) { +- uint64_t val; +- + pw_log_trace("%p: avail:%lu min-avail:%lu state:%s hw:%lu appl:%lu active:%d->%d state:%s", + pw, avail, pw->min_avail, snd_pcm_state_name(io->state), + pw->hw_ptr, io->appl_ptr, pw->active, active, + snd_pcm_state_name(io->state)); +- +- pw->active = active; +- if (active) +- spa_system_eventfd_write(pw->system, io->poll_fd, 1); +- else +- spa_system_eventfd_read(pw->system, io->poll_fd, &val); + } + return active; + } + ++ ++static int update_active(snd_pcm_ioplug_t *io) ++{ ++ snd_pcm_pipewire_t *pw = io->private_data; ++ pw->active = check_active(io); ++ uint64_t val; ++ ++ if (pw->active || pw->error < 0) ++ spa_system_eventfd_write(pw->system, io->poll_fd, 1); ++ else ++ spa_system_eventfd_read(pw->system, io->poll_fd, &val); ++ ++ return pw->active; ++} ++ + static void snd_pcm_pipewire_free(snd_pcm_pipewire_t *pw) + { + if (pw == NULL) +@@ -159,6 +162,15 @@ static int snd_pcm_pipewire_close(snd_pc + return 0; + } + ++static int snd_pcm_pipewire_poll_descriptors(snd_pcm_ioplug_t *io, struct pollfd *pfds, unsigned int space) ++{ ++ snd_pcm_pipewire_t *pw = io->private_data; ++ update_active(io); ++ pfds->fd = pw->fd; ++ pfds->events = POLLIN | POLLERR | POLLNVAL; ++ return 1; ++} ++ + static int snd_pcm_pipewire_poll_revents(snd_pcm_ioplug_t *io, + struct pollfd *pfds, unsigned int nfds, + unsigned short *revents) +@@ -171,10 +183,10 @@ static int snd_pcm_pipewire_poll_revents + return pw->error; + + *revents = pfds[0].revents & ~(POLLIN | POLLOUT); +- if (pfds[0].revents & POLLIN && update_active(io)) ++ if (pfds[0].revents & POLLIN && check_active(io)) { + *revents |= (io->stream == SND_PCM_STREAM_PLAYBACK) ? POLLOUT : POLLIN; +- +- pw_log_trace_fp("poll %d", *revents); ++ update_active(io); ++ } + + return 0; + } +@@ -899,6 +911,7 @@ static snd_pcm_ioplug_callback_t pipewir + .delay = snd_pcm_pipewire_delay, + .drain = snd_pcm_pipewire_drain, + .prepare = snd_pcm_pipewire_prepare, ++ .poll_descriptors = snd_pcm_pipewire_poll_descriptors, + .poll_revents = snd_pcm_pipewire_poll_revents, + .hw_params = snd_pcm_pipewire_hw_params, + .sw_params = snd_pcm_pipewire_sw_params, diff --git a/packages/hardware/quirks/devices/ayn Loki Max/bin/ledcontrol b/packages/hardware/quirks/devices/ayn Loki Max/bin/ledcontrol index c023d5fa8d..866931afcc 100755 --- a/packages/hardware/quirks/devices/ayn Loki Max/bin/ledcontrol +++ b/packages/hardware/quirks/devices/ayn Loki Max/bin/ledcontrol @@ -151,6 +151,9 @@ case $1 in ec_save set_setting led.color white ;; + poweroff) + off + ;; off) off set_setting led.color off diff --git a/packages/hardware/quirks/devices/ayn Loki Zero/bin/ledcontrol b/packages/hardware/quirks/devices/ayn Loki Zero/bin/ledcontrol index c023d5fa8d..866931afcc 100755 --- a/packages/hardware/quirks/devices/ayn Loki Zero/bin/ledcontrol +++ b/packages/hardware/quirks/devices/ayn Loki Zero/bin/ledcontrol @@ -151,6 +151,9 @@ case $1 in ec_save set_setting led.color white ;; + poweroff) + off + ;; off) off set_setting led.color off diff --git a/packages/jelos/sources/scripts/factoryreset b/packages/jelos/sources/scripts/factoryreset index 67c2efcfd4..0f28cd0a44 100755 --- a/packages/jelos/sources/scripts/factoryreset +++ b/packages/jelos/sources/scripts/factoryreset @@ -22,13 +22,13 @@ case "${1}" in systemctl reboot ;; "ALL") - swapoff -a - umount /storage/roms ||: - umount /storage/games-external ||: + swapoff -a 2>/dev/null + umount /storage/roms 2>/dev/null ||: + umount /storage/games-external 2>/dev/null ||: cd / - find /storage -mindepth 1 \( ! -regex '^/storage/.update.*' -a ! -regex '^/storage/roms.*' -a ! -regex '^/storage/games-.*' \) -delete + find /storage -mindepth 1 \( ! -regex '^/storage/.update.*' -a ! -regex '^/storage/roms.*' -a ! -regex '^/storage/games-.*' \) -delete 2>/dev/null mkdir /storage/.config/ - sync + sync 2>/dev/null systemctl reboot ;; esac From 0e2af21010d1d36f35c48061e5d908a48b35fdee Mon Sep 17 00:00:00 2001 From: brooksytech <1673861+brooksytech@users.noreply.github.com> Date: Tue, 23 Jan 2024 20:56:23 +0000 Subject: [PATCH 099/167] Add overclocking options to RK3326 --- .../hardware/quirks/platforms/RK3326/001-device_config | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 packages/hardware/quirks/platforms/RK3326/001-device_config diff --git a/packages/hardware/quirks/platforms/RK3326/001-device_config b/packages/hardware/quirks/platforms/RK3326/001-device_config new file mode 100644 index 0000000000..41c16bebda --- /dev/null +++ b/packages/hardware/quirks/platforms/RK3326/001-device_config @@ -0,0 +1,7 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS) + +cat </storage/.config/profile.d/001-device_config +DEVICE_TURBO_MODE="true" +EOF From b72ef36c8514b468f0fcbf2315ff2995dbab7dbb Mon Sep 17 00:00:00 2001 From: brooksytech <1673861+brooksytech@users.noreply.github.com> Date: Tue, 23 Jan 2024 21:11:32 +0000 Subject: [PATCH 100/167] Fix profile oopsie --- .../hardware/quirks/platforms/RK3326/001-device_config | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 packages/hardware/quirks/platforms/RK3326/001-device_config diff --git a/packages/hardware/quirks/platforms/RK3326/001-device_config b/packages/hardware/quirks/platforms/RK3326/001-device_config deleted file mode 100644 index 41c16bebda..0000000000 --- a/packages/hardware/quirks/platforms/RK3326/001-device_config +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS) - -cat </storage/.config/profile.d/001-device_config -DEVICE_TURBO_MODE="true" -EOF From efbde15a634a3f6f474e02b00e9ee47166ed992f Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 24 Jan 2024 00:41:39 +0000 Subject: [PATCH 101/167] Improve use old repaint behavior patch. --- .../003-use-old-repaint-behavior.patch | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/packages/wayland/weston/patches/003-use-old-repaint-behavior.patch b/packages/wayland/weston/patches/003-use-old-repaint-behavior.patch index 6d7bafbe29..a9c0af1b54 100644 --- a/packages/wayland/weston/patches/003-use-old-repaint-behavior.patch +++ b/packages/wayland/weston/patches/003-use-old-repaint-behavior.patch @@ -1,19 +1,12 @@ diff -rupN weston-12.0.3.orig/libweston/compositor.c weston-12.0.3/libweston/compositor.c --- weston-12.0.3.orig/libweston/compositor.c 2024-01-15 15:42:23.723505677 +0000 -+++ weston-12.0.3/libweston/compositor.c 2024-01-20 13:27:54.816568920 +0000 -@@ -3349,10 +3349,13 @@ weston_output_finish_frame(struct weston - * If timestamp of latest vblank is given, it must always go forwards. ++++ weston-12.0.3/libweston/compositor.c 2024-01-24 00:32:15.715324559 +0000 +@@ -3350,7 +3350,7 @@ weston_output_finish_frame(struct weston * If not given, INVALID flag must be set. */ -- if (stamp) -+ /* if (stamp) - assert(timespec_sub_to_nsec(stamp, &output->frame_time) >= 0); + if (stamp) +- assert(timespec_sub_to_nsec(stamp, &output->frame_time) >= 0); ++ assert(timespec_sub_to_nsec(stamp, &output->frame_time) || (presented_flags & WP_PRESENTATION_FEEDBACK_INVALID)); else -- assert(presented_flags & WP_PRESENTATION_FEEDBACK_INVALID); -+ assert(presented_flags & WP_PRESENTATION_FEEDBACK_INVALID); */ -+ -+ assert(output->repaint_status == REPAINT_AWAITING_COMPLETION); -+ assert(stamp || (presented_flags & WP_PRESENTATION_FEEDBACK_INVALID)); - - weston_compositor_read_presentation_clock(compositor, &now); + assert(presented_flags & WP_PRESENTATION_FEEDBACK_INVALID); From c4a32cabb8acdb71297586bc03fe48c7a08cc92c Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 24 Jan 2024 03:10:49 +0000 Subject: [PATCH 102/167] Move LED and DPMS control to platform quirks, add guards to execute only on supported devices. --- .../hardware/quirks/devices/AYANEO AIR Plus/010-dpms | 8 ++++++++ packages/hardware/quirks/devices/AYANEO AIR/010-dpms | 8 ++++++++ .../hardware/quirks/devices/ayn Loki Max/010-dpms | 7 +++++++ .../quirks/devices/ayn Loki Zero/001-device_config | 3 --- .../hardware/quirks/devices/ayn Loki Zero/010-dpms | 7 +++++++ .../quirks/devices/ayn Loki Zero/020-audio_latency | 0 .../hardware/quirks/platforms/AMD64/001-device_config | 3 --- packages/hardware/quirks/platforms/AMD64/010-dpms | 7 +++++++ .../hardware/quirks/platforms/AMD64/010-led_control | 11 +++++++++++ .../hardware/quirks/platforms/AMD64/020-fan_control | 7 +++++++ .../quirks/platforms/AMD64/sleep.d/post/001-dpms | 10 ++++++++++ .../AMD64/sleep.d/post/002-ledcontrol} | 7 +++++-- .../AMD64}/sleep.d/pre/001-dpms | 7 +++++-- .../quirks/platforms/AMD64/sleep.d/pre/002-ledcontrol | 10 ++++++++++ packages/hardware/quirks/profile.d/999-export | 1 + 15 files changed, 86 insertions(+), 10 deletions(-) create mode 100644 packages/hardware/quirks/devices/AYANEO AIR Plus/010-dpms create mode 100644 packages/hardware/quirks/devices/AYANEO AIR/010-dpms create mode 100755 packages/hardware/quirks/devices/ayn Loki Max/010-dpms mode change 100644 => 100755 packages/hardware/quirks/devices/ayn Loki Zero/001-device_config create mode 100755 packages/hardware/quirks/devices/ayn Loki Zero/010-dpms mode change 100644 => 100755 packages/hardware/quirks/devices/ayn Loki Zero/020-audio_latency create mode 100755 packages/hardware/quirks/platforms/AMD64/010-dpms create mode 100755 packages/hardware/quirks/platforms/AMD64/010-led_control create mode 100755 packages/hardware/quirks/platforms/AMD64/020-fan_control create mode 100755 packages/hardware/quirks/platforms/AMD64/sleep.d/post/001-dpms rename packages/hardware/quirks/{devices/AYANEO AYANEO 2S/sleep.d/post/001-dpms => platforms/AMD64/sleep.d/post/002-ledcontrol} (54%) rename packages/hardware/quirks/{devices/AYANEO AYANEO 2S => platforms/AMD64}/sleep.d/pre/001-dpms (53%) create mode 100755 packages/hardware/quirks/platforms/AMD64/sleep.d/pre/002-ledcontrol diff --git a/packages/hardware/quirks/devices/AYANEO AIR Plus/010-dpms b/packages/hardware/quirks/devices/AYANEO AIR Plus/010-dpms new file mode 100644 index 0000000000..f4a112017b --- /dev/null +++ b/packages/hardware/quirks/devices/AYANEO AIR Plus/010-dpms @@ -0,0 +1,8 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +### Set the default device configuration +cat <>/storage/.config/profile.d/001-device_config +DEVICE_SLEEP_DPMS="false" +EOF diff --git a/packages/hardware/quirks/devices/AYANEO AIR/010-dpms b/packages/hardware/quirks/devices/AYANEO AIR/010-dpms new file mode 100644 index 0000000000..f4a112017b --- /dev/null +++ b/packages/hardware/quirks/devices/AYANEO AIR/010-dpms @@ -0,0 +1,8 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +### Set the default device configuration +cat <>/storage/.config/profile.d/001-device_config +DEVICE_SLEEP_DPMS="false" +EOF diff --git a/packages/hardware/quirks/devices/ayn Loki Max/010-dpms b/packages/hardware/quirks/devices/ayn Loki Max/010-dpms new file mode 100755 index 0000000000..ca371e8a2d --- /dev/null +++ b/packages/hardware/quirks/devices/ayn Loki Max/010-dpms @@ -0,0 +1,7 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +cat </storage/.config/profile.d/010-dpms +DEVICE_SLEEP_DPMS="false" +EOF diff --git a/packages/hardware/quirks/devices/ayn Loki Zero/001-device_config b/packages/hardware/quirks/devices/ayn Loki Zero/001-device_config old mode 100644 new mode 100755 index 1ab12d92fd..123af288c5 --- a/packages/hardware/quirks/devices/ayn Loki Zero/001-device_config +++ b/packages/hardware/quirks/devices/ayn Loki Zero/001-device_config @@ -7,9 +7,6 @@ ### Set the default device configuration cat </storage/.config/profile.d/001-device_config DEVICE_BASE_TDP="6w" -DEVICE_LED_CONTROL="false" -DEVICE_LED_BRIGHTNESS="false" -DEVICE_HAS_FAN="false" DEVICE_VOLUMECTL="true" DEVICE_BRIGHTNESS="hardware" EOF diff --git a/packages/hardware/quirks/devices/ayn Loki Zero/010-dpms b/packages/hardware/quirks/devices/ayn Loki Zero/010-dpms new file mode 100755 index 0000000000..ca371e8a2d --- /dev/null +++ b/packages/hardware/quirks/devices/ayn Loki Zero/010-dpms @@ -0,0 +1,7 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +cat </storage/.config/profile.d/010-dpms +DEVICE_SLEEP_DPMS="false" +EOF diff --git a/packages/hardware/quirks/devices/ayn Loki Zero/020-audio_latency b/packages/hardware/quirks/devices/ayn Loki Zero/020-audio_latency old mode 100644 new mode 100755 diff --git a/packages/hardware/quirks/platforms/AMD64/001-device_config b/packages/hardware/quirks/platforms/AMD64/001-device_config index 309b6dd555..29d2bef44d 100755 --- a/packages/hardware/quirks/platforms/AMD64/001-device_config +++ b/packages/hardware/quirks/platforms/AMD64/001-device_config @@ -7,9 +7,6 @@ ### Set the default device configuration cat </storage/.config/profile.d/001-device_config DEVICE_BASE_TDP="15w" -DEVICE_LED_CONTROL="false" -DEVICE_LED_BRIGHTNESS="false" -DEVICE_HAS_FAN="false" DEVICE_VOLUMECTL="true" DEVICE_BRIGHTNESS="hardware" EOF diff --git a/packages/hardware/quirks/platforms/AMD64/010-dpms b/packages/hardware/quirks/platforms/AMD64/010-dpms new file mode 100755 index 0000000000..a13917d3e5 --- /dev/null +++ b/packages/hardware/quirks/platforms/AMD64/010-dpms @@ -0,0 +1,7 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +cat </storage/.config/profile.d/010-dpms +DEVICE_SLEEP_DPMS="true" +EOF diff --git a/packages/hardware/quirks/platforms/AMD64/010-led_control b/packages/hardware/quirks/platforms/AMD64/010-led_control new file mode 100755 index 0000000000..905d0dbbe2 --- /dev/null +++ b/packages/hardware/quirks/platforms/AMD64/010-led_control @@ -0,0 +1,11 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +. /etc/profile.d/001-functions + +### Set the default device configuration +cat </storage/.config/profile.d/010-led_control +DEVICE_LED_CONTROL="false" +DEVICE_LED_BRIGHTNESS="false" +EOF diff --git a/packages/hardware/quirks/platforms/AMD64/020-fan_control b/packages/hardware/quirks/platforms/AMD64/020-fan_control new file mode 100755 index 0000000000..eb4ddf9a9c --- /dev/null +++ b/packages/hardware/quirks/platforms/AMD64/020-fan_control @@ -0,0 +1,7 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +cat </storage/.config/profile.d/020-fan_control +DEVICE_HAS_FAN="false" +EOF diff --git a/packages/hardware/quirks/platforms/AMD64/sleep.d/post/001-dpms b/packages/hardware/quirks/platforms/AMD64/sleep.d/post/001-dpms new file mode 100755 index 0000000000..5a3e110885 --- /dev/null +++ b/packages/hardware/quirks/platforms/AMD64/sleep.d/post/001-dpms @@ -0,0 +1,10 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS) + +. /etc/profile.d/001-functions + +if [ "${DEVICE_SLEEP_DPMS}" = "true" ] +then + dpms-client -m on & +fi diff --git a/packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/post/001-dpms b/packages/hardware/quirks/platforms/AMD64/sleep.d/post/002-ledcontrol similarity index 54% rename from packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/post/001-dpms rename to packages/hardware/quirks/platforms/AMD64/sleep.d/post/002-ledcontrol index 347ca4593b..7f7d042f97 100755 --- a/packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/post/001-dpms +++ b/packages/hardware/quirks/platforms/AMD64/sleep.d/post/002-ledcontrol @@ -2,6 +2,9 @@ # SPDX-License-Identifier: GPL-2.0 # Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS) -. /etc/profile +. /etc/profile.d/001-functions -dpms-client -m on +if [ "${DEVICE_LED_CONTROL}" = "true" ] +then + ledcontrol & +fi diff --git a/packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/pre/001-dpms b/packages/hardware/quirks/platforms/AMD64/sleep.d/pre/001-dpms similarity index 53% rename from packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/pre/001-dpms rename to packages/hardware/quirks/platforms/AMD64/sleep.d/pre/001-dpms index ad3d488f22..1da07fab7a 100755 --- a/packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/pre/001-dpms +++ b/packages/hardware/quirks/platforms/AMD64/sleep.d/pre/001-dpms @@ -2,6 +2,9 @@ # SPDX-License-Identifier: GPL-2.0 # Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS) -. /etc/profile +. /etc/profile.d/001-functions -dpms-client -m off +if [ "${DEVICE_SLEEP_DPMS}" = "true" ] +then + dpms-client -m off +fi diff --git a/packages/hardware/quirks/platforms/AMD64/sleep.d/pre/002-ledcontrol b/packages/hardware/quirks/platforms/AMD64/sleep.d/pre/002-ledcontrol new file mode 100755 index 0000000000..62a7282589 --- /dev/null +++ b/packages/hardware/quirks/platforms/AMD64/sleep.d/pre/002-ledcontrol @@ -0,0 +1,10 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS) + +. /etc/profile.d/001-functions + +if [ "${DEVICE_LED_CONTROL}" = "true" ] +then + ledcontrol poweroff +fi diff --git a/packages/hardware/quirks/profile.d/999-export b/packages/hardware/quirks/profile.d/999-export index d6c3576ee9..00bcb35092 100755 --- a/packages/hardware/quirks/profile.d/999-export +++ b/packages/hardware/quirks/profile.d/999-export @@ -37,6 +37,7 @@ export SLOW_CORES \ DEVICE_PWM_FAN \ DEVICE_PWM_MOTOR \ DEVICE_ROTATED_SDL \ + DEVICE_SLEEP_DPMS \ DEVICE_SW_HP_SWITCH \ DEVICE_TEMP_SENSOR \ DEVICE_TURBO_MODE \ From 67cd9077514a7c6fafcecba567c301994aa99bc6 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Thu, 25 Jan 2024 11:57:42 +0000 Subject: [PATCH 103/167] Update EmulationStation to rename danger zone. --- packages/ui/emulationstation/package.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ui/emulationstation/package.mk b/packages/ui/emulationstation/package.mk index 7bad461040..5293f131a9 100644 --- a/packages/ui/emulationstation/package.mk +++ b/packages/ui/emulationstation/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="emulationstation" -PKG_VERSION="67e3614fad133fcc414bffed9ed7941bfac3bc05" +PKG_VERSION="c1aacbbba4e6a22bea7d25057f81fbf9c7d52eb5" PKG_GIT_CLONE_BRANCH="main" PKG_REV="1" PKG_ARCH="any" From a4679a6a8221147f6c014cc5d4b36fe47f2da4ca Mon Sep 17 00:00:00 2001 From: brooksytech <1673861+brooksytech@users.noreply.github.com> Date: Tue, 23 Jan 2024 20:56:23 +0000 Subject: [PATCH 104/167] Add overclocking options to RK3326 --- .../hardware/quirks/platforms/RK3326/001-device_config | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 packages/hardware/quirks/platforms/RK3326/001-device_config diff --git a/packages/hardware/quirks/platforms/RK3326/001-device_config b/packages/hardware/quirks/platforms/RK3326/001-device_config new file mode 100644 index 0000000000..41c16bebda --- /dev/null +++ b/packages/hardware/quirks/platforms/RK3326/001-device_config @@ -0,0 +1,7 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS) + +cat </storage/.config/profile.d/001-device_config +DEVICE_TURBO_MODE="true" +EOF From 6c5b8450f80ecaf713ef56e6fd563023bafd8c32 Mon Sep 17 00:00:00 2001 From: brooksytech <1673861+brooksytech@users.noreply.github.com> Date: Tue, 23 Jan 2024 21:11:32 +0000 Subject: [PATCH 105/167] Fix profile oopsie --- .../hardware/quirks/platforms/RK3326/001-device_config | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 packages/hardware/quirks/platforms/RK3326/001-device_config diff --git a/packages/hardware/quirks/platforms/RK3326/001-device_config b/packages/hardware/quirks/platforms/RK3326/001-device_config deleted file mode 100644 index 41c16bebda..0000000000 --- a/packages/hardware/quirks/platforms/RK3326/001-device_config +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS) - -cat </storage/.config/profile.d/001-device_config -DEVICE_TURBO_MODE="true" -EOF From cecd267e499be0a00ce82a3f7dc11faa48562111 Mon Sep 17 00:00:00 2001 From: brooksytech <1673861+brooksytech@users.noreply.github.com> Date: Tue, 23 Jan 2024 20:56:23 +0000 Subject: [PATCH 106/167] Add overclocking options to RK3326 --- .../hardware/quirks/platforms/RK3326/001-device_config | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 packages/hardware/quirks/platforms/RK3326/001-device_config diff --git a/packages/hardware/quirks/platforms/RK3326/001-device_config b/packages/hardware/quirks/platforms/RK3326/001-device_config new file mode 100644 index 0000000000..41c16bebda --- /dev/null +++ b/packages/hardware/quirks/platforms/RK3326/001-device_config @@ -0,0 +1,7 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS) + +cat </storage/.config/profile.d/001-device_config +DEVICE_TURBO_MODE="true" +EOF From fa1d78c1e5b71f2fef18ecded75242b66bf6aece Mon Sep 17 00:00:00 2001 From: brooksytech <1673861+brooksytech@users.noreply.github.com> Date: Tue, 23 Jan 2024 21:11:32 +0000 Subject: [PATCH 107/167] Fix profile oopsie --- .../hardware/quirks/platforms/RK3326/001-device_config | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 packages/hardware/quirks/platforms/RK3326/001-device_config diff --git a/packages/hardware/quirks/platforms/RK3326/001-device_config b/packages/hardware/quirks/platforms/RK3326/001-device_config deleted file mode 100644 index 41c16bebda..0000000000 --- a/packages/hardware/quirks/platforms/RK3326/001-device_config +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS) - -cat </storage/.config/profile.d/001-device_config -DEVICE_TURBO_MODE="true" -EOF From 4b235cf71c3547f81cef7a2e552fbc9777f50abb Mon Sep 17 00:00:00 2001 From: brooksytech <1673861+brooksytech@users.noreply.github.com> Date: Thu, 25 Jan 2024 01:25:10 +0000 Subject: [PATCH 108/167] RK3399 & RK3326: update kernel to 6.7.1 --- projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf index 78c930679c..1c9b821226 100644 --- a/projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf @@ -464,7 +464,7 @@ CONFIG_AS_HAS_SHA3=y # CONFIG_ARM64_PTR_AUTH is not set CONFIG_CC_HAS_BRANCH_PROT_PAC_RET=y CONFIG_CC_HAS_SIGN_RETURN_ADDRESS=y -# CONFIG_AS_HAS_ARMV8_3 is not set +CONFIG_AS_HAS_ARMV8_3=y CONFIG_AS_HAS_CFI_NEGATE_RA_STATE=y CONFIG_AS_HAS_LDAPR=y # end of ARMv8.3 architectural features From 61673b94ba3a403b2641617fdf36eed4e1620eb8 Mon Sep 17 00:00:00 2001 From: brooksytech <1673861+brooksytech@users.noreply.github.com> Date: Thu, 25 Jan 2024 01:28:57 +0000 Subject: [PATCH 109/167] RK3399 & RK3326: update kernel to 6.7.1 --- projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf index 1c9b821226..78c930679c 100644 --- a/projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf @@ -464,7 +464,7 @@ CONFIG_AS_HAS_SHA3=y # CONFIG_ARM64_PTR_AUTH is not set CONFIG_CC_HAS_BRANCH_PROT_PAC_RET=y CONFIG_CC_HAS_SIGN_RETURN_ADDRESS=y -CONFIG_AS_HAS_ARMV8_3=y +# CONFIG_AS_HAS_ARMV8_3 is not set CONFIG_AS_HAS_CFI_NEGATE_RA_STATE=y CONFIG_AS_HAS_LDAPR=y # end of ARMv8.3 architectural features From 22ee8db3cabc83eb205a39f2a44a354b13848599 Mon Sep 17 00:00:00 2001 From: sydarn Date: Thu, 25 Jan 2024 21:22:24 +0100 Subject: [PATCH 110/167] mesa: fix pkg error for rk3566 --- packages/graphics/mesa/package.mk | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/graphics/mesa/package.mk b/packages/graphics/mesa/package.mk index 3ccbb25a44..a06e66ae48 100644 --- a/packages/graphics/mesa/package.mk +++ b/packages/graphics/mesa/package.mk @@ -10,17 +10,17 @@ PKG_TOOLCHAIN="meson" PKG_PATCH_DIRS+=" ${DEVICE}" case ${DEVICE} in - RK35*) - PKG_VERSION="120202c675749c5ef81ae4c8cdc30019b4de08f4" - PKG_SITE="https://gitlab.com/panfork/mesa" - PKG_URL="${PKG_SITE}.git" - PKG_GIT_CLONE_BRANCH="csf" + RK3588) + PKG_VERSION="120202c675749c5ef81ae4c8cdc30019b4de08f4" + PKG_SITE="https://gitlab.com/panfork/mesa" + PKG_URL="${PKG_SITE}.git" + PKG_GIT_CLONE_BRANCH="csf" ;; - RK33*) #Using upstream dev for panfrost + RK33*|RK3566) #Using upstream dev for panfrost PKG_VERSION="7adc7678a88edccfbd20af2307e7f50e9ed48e47" PKG_SITE="https://gitlab.freedesktop.org/mesa/mesa" PKG_URL="${PKG_SITE}.git" - PKG_PATCH_DIRS+=" panfrost" + PKG_PATCH_DIRS+=" panfrost" ;; *) PKG_VERSION="23.3.4" From 53d1e4025850cc220489c2799e42ade500222f09 Mon Sep 17 00:00:00 2001 From: sydarn Date: Sun, 28 Jan 2024 21:59:04 +0100 Subject: [PATCH 111/167] rgb10max: boots, but panel timing is, ES is upside-down --- .../Powkiddy RGB10MAX3/050-game_configs | 14 ++ projects/Rockchip/devices/RK3566/options | 2 +- .../RK3566/010-powkiddy-rgb10max3.patch | 232 ++++++++++++++++++ .../u-boot/patches/RK3566/004-rgb10max3.patch | 26 ++ 4 files changed, 273 insertions(+), 1 deletion(-) create mode 100755 packages/hardware/quirks/devices/Powkiddy RGB10MAX3/050-game_configs create mode 100644 projects/Rockchip/packages/linux/patches/RK3566/010-powkiddy-rgb10max3.patch create mode 100644 projects/Rockchip/packages/u-boot/patches/RK3566/004-rgb10max3.patch diff --git a/packages/hardware/quirks/devices/Powkiddy RGB10MAX3/050-game_configs b/packages/hardware/quirks/devices/Powkiddy RGB10MAX3/050-game_configs new file mode 100755 index 0000000000..a7937224aa --- /dev/null +++ b/packages/hardware/quirks/devices/Powkiddy RGB10MAX3/050-game_configs @@ -0,0 +1,14 @@ + +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) + +. /etc/profile + +#Set up gzdoom +if [ ! -d "/storage/.config/gzdoom/" ]; then + cp -rf /usr/config/gzdoom /storage/.config/ + sed -i '/Joy10=/c\Joy10=togglemap; + /Joy9=/c\Joy9=menu_main; + /vid_defheight=/c\vid_defheight=720; + /vid_defwidth=/c\vid_defwidth=1280' /storage/.config/gzdoom/gzdoom.ini +fi diff --git a/projects/Rockchip/devices/RK3566/options b/projects/Rockchip/devices/RK3566/options index aa7b83d598..e6e2636b2a 100644 --- a/projects/Rockchip/devices/RK3566/options +++ b/projects/Rockchip/devices/RK3566/options @@ -32,7 +32,7 @@ PARTITION_TABLE="gpt" UBOOT_LABEL="uboot" TRUST_LABEL="trust" - DEVICE_DTB=("rk3566-anbernic-rg353ps" "rk3566-anbernic-rg353vs" "rk3566-anbernic-rg503" "rk3566-anbernic-rg353p" "rk3566-anbernic-rg353v" "rk3566-powkiddy-rk2023" "rk3566-powkiddy-rgb30") + DEVICE_DTB=("rk3566-anbernic-rg353ps" "rk3566-anbernic-rg353vs" "rk3566-anbernic-rg503" "rk3566-anbernic-rg353p" "rk3566-anbernic-rg353v" "rk3566-powkiddy-rk2023" "rk3566-powkiddy-rgb30" "rk3566-powkiddy-rgb10max3") UBOOT_DTB="rk3566" UBOOT_CONFIG="anbernic-rgxx3-rk3566_defconfig" PKG_SOC="rk3568" diff --git a/projects/Rockchip/packages/linux/patches/RK3566/010-powkiddy-rgb10max3.patch b/projects/Rockchip/packages/linux/patches/RK3566/010-powkiddy-rgb10max3.patch new file mode 100644 index 0000000000..2aab821adc --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566/010-powkiddy-rgb10max3.patch @@ -0,0 +1,232 @@ +diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile +index b7371afb6227..2ee31fc6bd8e 100644 +--- a/arch/arm64/boot/dts/rockchip/Makefile ++++ b/arch/arm64/boot/dts/rockchip/Makefile +@@ -79,6 +79,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-anbernic-rg503.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.1.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.2.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-rgb30.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-rgb10max3.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-rk2023.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-a.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-b.dtb +diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb10max3.dts b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb10max3.dts +new file mode 100644 +index 000000000000..26884dfda818 +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb10max3.dts +@@ -0,0 +1,40 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include ++#include ++#include ++#include "rk3566-powkiddy-rk2023.dtsi" ++ ++/ { ++ model = "Powkiddy RGB10MAX3"; ++ compatible = "powkiddy,rgb10max3", "rockchip,rk3566"; ++}; ++ ++&cru { ++ assigned-clocks = <&pmucru CLK_RTC_32K>, <&cru PLL_GPLL>, ++ <&pmucru PLL_PPLL>, <&cru PLL_VPLL>; ++ assigned-clock-rates = <32768>, <1200000000>, ++ <200000000>, <292500000>; ++}; ++ ++&dsi0 { ++ panel: panel@0 { ++ compatible = "powkiddy,rgb10max3-panel"; ++ reg = <0>; ++ backlight = <&backlight>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&lcd_rst>; ++ reset-gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_LOW>; ++ vcc-supply = <&vcc3v3_lcd0_n>; ++ iovcc-supply = <&vcc3v3_lcd0_n>; ++ rotation = <270>; ++ ++ port { ++ mipi_in_panel: endpoint { ++ remote-endpoint = <&mipi_out_panel>; ++ }; ++ }; ++ }; ++}; +diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7703.c b/drivers/gpu/drm/panel/panel-sitronix-st7703.c +index b55bafd1a8be..0e80bc8c0d21 100644 +--- a/drivers/gpu/drm/panel/panel-sitronix-st7703.c ++++ b/drivers/gpu/drm/panel/panel-sitronix-st7703.c +@@ -59,6 +59,7 @@ struct st7703 { + struct regulator *vcc; + struct regulator *iovcc; + bool prepared; ++ enum drm_panel_orientation orientation; + + struct dentry *debugfs; + const struct st7703_panel_desc *desc; +@@ -493,6 +494,76 @@ static int rgb30panel_init_sequence(struct st7703 *ctx) + 0x13, 0x15, 0x14, 0x15, 0x10, 0x17, 0x00, 0x0a, + 0x0f, 0x29, 0x3b, 0x3f, 0x42, 0x39, 0x06, 0x0d, + 0x10, 0x13, 0x15, 0x14, 0x15, 0x10, 0x17); ++ return 0; ++} ++ ++static int rgb10max3_init_sequence(struct st7703 *ctx) ++{ ++ struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); ++ ++ /* ++ * Init sequence was supplied by the panel vendor. ++ */ ++ ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_SETEXTC, 0xf1, 0x12, 0x83); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_SETAPID, 0x00, 0x00, 0x00, ++ 0xda, 0x80); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_SETDISP, 0xc8, 0x02, 0x30); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_SETRGBIF, 0x10, 0x10, 0x28, ++ 0x28, 0x03, 0xff, 0x00, 0x00, 0x00, 0x00); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_SETCYC, 0x80); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_SETBGP, 0x04, 0x04); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_SETVCOM, 0x78, 0x78); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_SETPOWER_EXT, 0x25, 0x22, 0xf0, ++ 0x63); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_SETMIPI, 0x33, 0x81, 0x05, 0xf9, ++ 0x0e, 0x0e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x44, 0x25, 0x00, 0x90, 0x0a, 0x00, ++ 0x00, 0x01, 0x4f, 0x01, 0x00, 0x00, 0x37); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_SETVDC, 0x47); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_UNKNOWN_BF, 0x02, 0x11, 0x00); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_SETSCR, 0x73, 0x73, 0x50, 0x50, ++ 0x00, 0x00, 0x12, 0x70, 0x00); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_SETPOWER, 0x25, 0x00, 0x32, ++ 0x32, 0x77, 0xe1, 0xff, 0xff, 0xcc, 0xcc, 0x77, ++ 0x77); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_SETECO, 0x82, 0x00, 0xbf, 0xff, ++ 0x00, 0xff); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_SETIO, 0xb8, 0x00, 0x0a, 0x00, ++ 0x00, 0x00); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_SETCABC, 0x10, 0x40, 0x1e, ++ 0x02); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_SETPANEL, 0x0b); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_SETGAMMA, 0x00, 0x04, 0x07, ++ 0x2a, 0x39, 0x3f, 0x36, 0x31, 0x06, 0x0b, 0x0e, ++ 0x12, 0x14, 0x12, 0x13, 0x0f, 0x17, 0x00, 0x04, ++ 0x07, 0x2a, 0x39, 0x3f, 0x36, 0x31, 0x06, 0x0b, ++ 0x0e, 0x12, 0x14, 0x12, 0x13, 0x0f, 0x17); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_SETEQ, 0x03, 0x03, 0x03, 0x03, ++ 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff, 0x80, ++ 0xc0, 0x10); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_SETGIP1, 0xc8, 0x10, 0x08, 0x00, ++ 0x00, 0x41, 0xf8, 0x12, 0x31, 0x23, 0x37, 0x86, ++ 0x11, 0xc8, 0x37, 0x2a, 0x00, 0x00, 0x0c, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, ++ 0x88, 0x20, 0x46, 0x02, 0x88, 0x88, 0x88, 0x88, ++ 0x88, 0x88, 0xff, 0x88, 0x31, 0x57, 0x13, 0x88, ++ 0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_SETGIP2, 0x00, 0x1a, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x8f, 0x13, 0x31, 0x75, 0x88, 0x88, 0x88, 0x88, ++ 0x88, 0x88, 0xf8, 0x8f, 0x02, 0x20, 0x64, 0x88, ++ 0x88, 0x88, 0x88, 0x88, 0x88, 0xf8, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00); ++ mipi_dsi_dcs_write_seq(dsi, ST7703_CMD_UNKNOWN_EF, 0xff, 0xff, 0x01); ++ ++ ++ + + return 0; + } +@@ -512,6 +583,21 @@ static const struct drm_display_mode rgb30panel_mode = { + .height_mm = 76, + }; + ++static const struct drm_display_mode rgb10max3panel_mode = { ++ .hdisplay = 720, ++ .hsync_start = 720 + 20, ++ .hsync_end = 720 + 20 + 10, ++ .htotal = 720 + 20 + 10 + 20, ++ .vdisplay = 1280, ++ .vsync_start = 1280 + 16, ++ .vsync_end = 1280 + 16 + 4, ++ .vtotal = 1280 + 16 + 4 + 14, ++ .clock = 60000, ++ .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, ++ .width_mm = 63, ++ .height_mm = 111, ++}; ++ + static const struct st7703_panel_desc rgb30panel_desc = { + .mode = &rgb30panel_mode, + .lanes = 4, +@@ -521,6 +607,15 @@ static const struct st7703_panel_desc rgb30panel_desc = { + .init_sequence = rgb30panel_init_sequence, + }; + ++static const struct st7703_panel_desc rgb10max3panel_desc = { ++ .mode = &rgb10max3panel_mode, ++ .lanes = 4, ++ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | ++ MIPI_DSI_MODE_NO_EOT_PACKET | MIPI_DSI_MODE_LPM, ++ .format = MIPI_DSI_FMT_RGB888, ++ .init_sequence = rgb10max3_init_sequence, ++}; ++ + static int st7703_enable(struct drm_panel *panel) + { + struct st7703 *ctx = panel_to_st7703(panel); +@@ -649,16 +744,25 @@ static int st7703_get_modes(struct drm_panel *panel, + drm_display_info_set_bus_formats(&connector->display_info, + mantix_bus_formats, + ARRAY_SIZE(mantix_bus_formats)); ++ drm_connector_set_panel_orientation(connector, ctx->orientation); + + return 1; + } + ++static enum drm_panel_orientation st7703_get_orientation(struct drm_panel *panel) ++{ ++ struct st7703 *ctx = panel_to_st7703(panel); ++ ++ return ctx->orientation; ++} ++ + static const struct drm_panel_funcs st7703_drm_funcs = { + .disable = st7703_disable, + .unprepare = st7703_unprepare, + .prepare = st7703_prepare, + .enable = st7703_enable, + .get_modes = st7703_get_modes, ++ .get_orientation = st7703_get_orientation, + }; + + static int allpixelson_set(void *data, u64 val) +@@ -727,6 +831,12 @@ static int st7703_probe(struct mipi_dsi_device *dsi) + return dev_err_probe(dev, PTR_ERR(ctx->iovcc), + "Failed to request iovcc regulator\n"); + ++ ret = of_drm_get_panel_orientation(dev->of_node, &ctx->orientation); ++ if (ret < 0) { ++ dev_err(dev, "%pOF: failed to get orientation %d\n", dev->of_node, ret); ++ return ret; ++ } ++ + drm_panel_init(&ctx->panel, dev, &st7703_drm_funcs, + DRM_MODE_CONNECTOR_DSI); + +@@ -785,6 +895,7 @@ static void st7703_remove(struct mipi_dsi_device *dsi) + static const struct of_device_id st7703_of_match[] = { + { .compatible = "anbernic,rg353v-panel-v2", .data = &rg353v2_desc }, + { .compatible = "powkiddy,rgb30-panel", .data = &rgb30panel_desc }, ++ { .compatible = "powkiddy,rgb10max3-panel", .data = &rgb10max3panel_desc }, + { .compatible = "rocktech,jh057n00900", .data = &jh057n00900_panel_desc }, + { .compatible = "xingbangda,xbd599", .data = &xbd599_desc }, + { /* sentinel */ } diff --git a/projects/Rockchip/packages/u-boot/patches/RK3566/004-rgb10max3.patch b/projects/Rockchip/packages/u-boot/patches/RK3566/004-rgb10max3.patch new file mode 100644 index 0000000000..da07cc5526 --- /dev/null +++ b/projects/Rockchip/packages/u-boot/patches/RK3566/004-rgb10max3.patch @@ -0,0 +1,26 @@ +diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +index 194605ff06..ee498631ba 100644 +--- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c ++++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c +@@ -49,6 +49,7 @@ enum rgxx3_device_id { + RG353V, + RG503, + RGB30, ++ RGB10MAX3, + RK2023, + RGARCD, + /* Devices with duplicate ADC value */ +@@ -94,6 +95,13 @@ static const struct rg3xx_model rg3xx_model_details[] = { + .fdtfile = DTB_DIR "rk3566-powkiddy-rgb30.dtb", + .detect_panel = 0, + }, ++ [RGB10MAX3] = { ++ .adc_value = 765, /* Observed average from device */ ++ .board = "rk3566-powkiddy-rgb10max3", ++ .board_name = "RGB10MAX3", ++ .fdtfile = DTB_DIR "rk3566-powkiddy-rgb10max3.dtb", ++ .detect_panel = 0, ++ }, + [RK2023] = { + .adc_value = 635, /* Observed average from device */ + .board = "rk3566-powkiddy-rk2023", From 36419637acf8c27fa55b2aeb68a32521a6211edc Mon Sep 17 00:00:00 2001 From: sydarn Date: Mon, 29 Jan 2024 10:56:39 +0100 Subject: [PATCH 112/167] rgb10max3: better timings, passes bgr border test. HACK: change dts rotation to 90 --- .../linux/patches/RK3566/010-powkiddy-rgb10max3.patch | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/projects/Rockchip/packages/linux/patches/RK3566/010-powkiddy-rgb10max3.patch b/projects/Rockchip/packages/linux/patches/RK3566/010-powkiddy-rgb10max3.patch index 2aab821adc..a93f8e6f1c 100644 --- a/projects/Rockchip/packages/linux/patches/RK3566/010-powkiddy-rgb10max3.patch +++ b/projects/Rockchip/packages/linux/patches/RK3566/010-powkiddy-rgb10max3.patch @@ -47,7 +47,7 @@ index 000000000000..26884dfda818 + reset-gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_LOW>; + vcc-supply = <&vcc3v3_lcd0_n>; + iovcc-supply = <&vcc3v3_lcd0_n>; -+ rotation = <270>; ++ rotation = <90>; + + port { + mipi_in_panel: endpoint { @@ -57,7 +57,7 @@ index 000000000000..26884dfda818 + }; +}; diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7703.c b/drivers/gpu/drm/panel/panel-sitronix-st7703.c -index b55bafd1a8be..0e80bc8c0d21 100644 +index b55bafd1a8be..99db98f46dcb 100644 --- a/drivers/gpu/drm/panel/panel-sitronix-st7703.c +++ b/drivers/gpu/drm/panel/panel-sitronix-st7703.c @@ -59,6 +59,7 @@ struct st7703 { @@ -151,9 +151,9 @@ index b55bafd1a8be..0e80bc8c0d21 100644 +static const struct drm_display_mode rgb10max3panel_mode = { + .hdisplay = 720, -+ .hsync_start = 720 + 20, -+ .hsync_end = 720 + 20 + 10, -+ .htotal = 720 + 20 + 10 + 20, ++ .hsync_start = 720 + 60, ++ .hsync_end = 720 + 60 + 10, ++ .htotal = 720 + 60 + 10 + 20, + .vdisplay = 1280, + .vsync_start = 1280 + 16, + .vsync_end = 1280 + 16 + 4, From ef8d0a88ff561d85c7d6658e22055a82eca9feab Mon Sep 17 00:00:00 2001 From: sydarn Date: Tue, 30 Jan 2024 17:25:41 +0100 Subject: [PATCH 113/167] rgb10max3: Correct rotation in dts, match orientaiton behavior to x55 --- .../RK3566/010-powkiddy-rgb10max3.patch | 65 ++++++++++++++----- 1 file changed, 47 insertions(+), 18 deletions(-) diff --git a/projects/Rockchip/packages/linux/patches/RK3566/010-powkiddy-rgb10max3.patch b/projects/Rockchip/packages/linux/patches/RK3566/010-powkiddy-rgb10max3.patch index a93f8e6f1c..b4877568b8 100644 --- a/projects/Rockchip/packages/linux/patches/RK3566/010-powkiddy-rgb10max3.patch +++ b/projects/Rockchip/packages/linux/patches/RK3566/010-powkiddy-rgb10max3.patch @@ -47,7 +47,7 @@ index 000000000000..26884dfda818 + reset-gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_LOW>; + vcc-supply = <&vcc3v3_lcd0_n>; + iovcc-supply = <&vcc3v3_lcd0_n>; -+ rotation = <90>; ++ rotation = <270>; + + port { + mipi_in_panel: endpoint { @@ -57,18 +57,19 @@ index 000000000000..26884dfda818 + }; +}; diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7703.c b/drivers/gpu/drm/panel/panel-sitronix-st7703.c -index b55bafd1a8be..99db98f46dcb 100644 +index b55bafd1a8be..e8d1730241b4 100644 --- a/drivers/gpu/drm/panel/panel-sitronix-st7703.c +++ b/drivers/gpu/drm/panel/panel-sitronix-st7703.c -@@ -59,6 +59,7 @@ struct st7703 { +@@ -58,7 +58,7 @@ struct st7703 { + struct gpio_desc *reset_gpio; struct regulator *vcc; struct regulator *iovcc; - bool prepared; +- bool prepared; + enum drm_panel_orientation orientation; struct dentry *debugfs; const struct st7703_panel_desc *desc; -@@ -493,6 +494,76 @@ static int rgb30panel_init_sequence(struct st7703 *ctx) +@@ -493,6 +493,76 @@ static int rgb30panel_init_sequence(struct st7703 *ctx) 0x13, 0x15, 0x14, 0x15, 0x10, 0x17, 0x00, 0x0a, 0x0f, 0x29, 0x3b, 0x3f, 0x42, 0x39, 0x06, 0x0d, 0x10, 0x13, 0x15, 0x14, 0x15, 0x10, 0x17); @@ -145,7 +146,7 @@ index b55bafd1a8be..99db98f46dcb 100644 return 0; } -@@ -512,6 +583,21 @@ static const struct drm_display_mode rgb30panel_mode = { +@@ -512,6 +582,21 @@ static const struct drm_display_mode rgb30panel_mode = { .height_mm = 76, }; @@ -167,7 +168,7 @@ index b55bafd1a8be..99db98f46dcb 100644 static const struct st7703_panel_desc rgb30panel_desc = { .mode = &rgb30panel_mode, .lanes = 4, -@@ -521,6 +607,15 @@ static const struct st7703_panel_desc rgb30panel_desc = { +@@ -521,6 +606,15 @@ static const struct st7703_panel_desc rgb30panel_desc = { .init_sequence = rgb30panel_init_sequence, }; @@ -183,12 +184,40 @@ index b55bafd1a8be..99db98f46dcb 100644 static int st7703_enable(struct drm_panel *panel) { struct st7703 *ctx = panel_to_st7703(panel); -@@ -649,16 +744,25 @@ static int st7703_get_modes(struct drm_panel *panel, - drm_display_info_set_bus_formats(&connector->display_info, - mantix_bus_formats, - ARRAY_SIZE(mantix_bus_formats)); -+ drm_connector_set_panel_orientation(connector, ctx->orientation); +@@ -575,13 +669,9 @@ static int st7703_unprepare(struct drm_panel *panel) + { + struct st7703 *ctx = panel_to_st7703(panel); + +- if (!ctx->prepared) +- return 0; +- + gpiod_set_value_cansleep(ctx->reset_gpio, 1); + regulator_disable(ctx->iovcc); + regulator_disable(ctx->vcc); +- ctx->prepared = false; + + return 0; + } +@@ -591,9 +681,6 @@ static int st7703_prepare(struct drm_panel *panel) + struct st7703 *ctx = panel_to_st7703(panel); + int ret; + +- if (ctx->prepared) +- return 0; +- + dev_dbg(ctx->dev, "Resetting the panel\n"); + gpiod_set_value_cansleep(ctx->reset_gpio, 1); + +@@ -616,8 +703,6 @@ static int st7703_prepare(struct drm_panel *panel) + gpiod_set_value_cansleep(ctx->reset_gpio, 0); + usleep_range(15000, 20000); + +- ctx->prepared = true; +- + return 0; + } +@@ -653,12 +738,20 @@ static int st7703_get_modes(struct drm_panel *panel, return 1; } @@ -209,9 +238,9 @@ index b55bafd1a8be..99db98f46dcb 100644 }; static int allpixelson_set(void *data, u64 val) -@@ -727,6 +831,12 @@ static int st7703_probe(struct mipi_dsi_device *dsi) - return dev_err_probe(dev, PTR_ERR(ctx->iovcc), - "Failed to request iovcc regulator\n"); +@@ -709,6 +802,12 @@ static int st7703_probe(struct mipi_dsi_device *dsi) + if (IS_ERR(ctx->reset_gpio)) + return dev_err_probe(dev, PTR_ERR(ctx->reset_gpio), "Failed to get reset gpio\n"); + ret = of_drm_get_panel_orientation(dev->of_node, &ctx->orientation); + if (ret < 0) { @@ -219,10 +248,10 @@ index b55bafd1a8be..99db98f46dcb 100644 + return ret; + } + - drm_panel_init(&ctx->panel, dev, &st7703_drm_funcs, - DRM_MODE_CONNECTOR_DSI); + mipi_dsi_set_drvdata(dsi, ctx); -@@ -785,6 +895,7 @@ static void st7703_remove(struct mipi_dsi_device *dsi) + ctx->dev = dev; +@@ -785,6 +884,7 @@ static void st7703_remove(struct mipi_dsi_device *dsi) static const struct of_device_id st7703_of_match[] = { { .compatible = "anbernic,rg353v-panel-v2", .data = &rg353v2_desc }, { .compatible = "powkiddy,rgb30-panel", .data = &rgb30panel_desc }, From 1f18c4559c2c1a4065b9a36145972943f4282c61 Mon Sep 17 00:00:00 2001 From: adamg Date: Tue, 6 Feb 2024 18:21:20 +0000 Subject: [PATCH 114/167] linux-drivers: various wifi driver updates to support linux v6.8 --- packages/kernel/linux-drivers/RTL8188EU/package.mk | 2 +- packages/kernel/linux-drivers/RTL8812AU/package.mk | 2 +- packages/kernel/linux-drivers/RTL8821AU/package.mk | 2 +- packages/kernel/linux-drivers/RTL8821CU/package.mk | 2 +- packages/kernel/linux-drivers/RTL88x2BU/package.mk | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/kernel/linux-drivers/RTL8188EU/package.mk b/packages/kernel/linux-drivers/RTL8188EU/package.mk index ef2ef24869..d3c539f977 100644 --- a/packages/kernel/linux-drivers/RTL8188EU/package.mk +++ b/packages/kernel/linux-drivers/RTL8188EU/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) PKG_NAME="RTL8188EU" -PKG_VERSION="306f3e62cf7cddf8cee74f70f88a7a7b3af46f56" +PKG_VERSION="f42fc9c45d2086c415dce70d3018031b54a7beef" PKG_LICENSE="GPL" PKG_SITE="https://github.com/lwfinger/rtl8188eu" PKG_URL="https://github.com/lwfinger/rtl8188eu/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/kernel/linux-drivers/RTL8812AU/package.mk b/packages/kernel/linux-drivers/RTL8812AU/package.mk index 3f248dc559..3ed9d0509c 100644 --- a/packages/kernel/linux-drivers/RTL8812AU/package.mk +++ b/packages/kernel/linux-drivers/RTL8812AU/package.mk @@ -4,7 +4,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="RTL8812AU" -PKG_VERSION="fe35eddb562bba0d6b3dfaa5991fca0ea22ff915" +PKG_VERSION="2c4567a67b7aac1d6920af7c0928687553059305" PKG_LICENSE="GPL" PKG_SITE="https://github.com/morrownr/8812au-20210629" PKG_URL="${PKG_SITE}.git" diff --git a/packages/kernel/linux-drivers/RTL8821AU/package.mk b/packages/kernel/linux-drivers/RTL8821AU/package.mk index 4da99ae91a..6cdf3dc86d 100644 --- a/packages/kernel/linux-drivers/RTL8821AU/package.mk +++ b/packages/kernel/linux-drivers/RTL8821AU/package.mk @@ -4,7 +4,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="RTL8821AU" -PKG_VERSION="cf0f873b795806f755d92e0bac063c26b3b31f12" +PKG_VERSION="6cd61cfce48218c26b57db4733aa0d3cbf9a2f2c" PKG_LICENSE="GPL" PKG_SITE="https://github.com/morrownr/8821au-20210708" PKG_URL="${PKG_SITE}.git" diff --git a/packages/kernel/linux-drivers/RTL8821CU/package.mk b/packages/kernel/linux-drivers/RTL8821CU/package.mk index 12c0a1eec5..13f1e5dbd9 100644 --- a/packages/kernel/linux-drivers/RTL8821CU/package.mk +++ b/packages/kernel/linux-drivers/RTL8821CU/package.mk @@ -4,7 +4,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="RTL8821CU" -PKG_VERSION="eb52ece92607394ecc22e96b41671ec3e5b1fa30" +PKG_VERSION="5b39398e2de146edeb76716420f3288f508bea61" PKG_LICENSE="GPL" PKG_SITE="https://github.com/morrownr/8821cu-20210916" PKG_URL="${PKG_SITE}.git" diff --git a/packages/kernel/linux-drivers/RTL88x2BU/package.mk b/packages/kernel/linux-drivers/RTL88x2BU/package.mk index 65bb57416f..d5f8282f40 100644 --- a/packages/kernel/linux-drivers/RTL88x2BU/package.mk +++ b/packages/kernel/linux-drivers/RTL88x2BU/package.mk @@ -4,7 +4,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="RTL88x2BU" -PKG_VERSION="cd2b6cbd9c8fbfebee8a1f28fab8e4434450456c" +PKG_VERSION="cb741f8b773b76c4eb1858f489b4b141ff586365" PKG_LICENSE="GPL" PKG_SITE="https://github.com/morrownr/88x2bu-20210702" PKG_URL="${PKG_SITE}.git" From 1500c615c1ef816b74ad7541b9157e4f83e0efeb Mon Sep 17 00:00:00 2001 From: fewtarius Date: Tue, 6 Feb 2024 18:27:15 +0000 Subject: [PATCH 115/167] Bump kernel to 6.7.4 (AMD64, S922X, RK3326, RK3399). --- Makefile | 2 +- .../RK3399/SUPPORTED_EMULATORS_AND_CORES.md | 1 + packages/kernel/linux/package.mk | 2 +- projects/Amlogic/packages/linux/package.mk | 2 +- projects/Rockchip/packages/linux/package.mk | 2 +- 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 9049d7b32e..8a181d34f2 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,7 @@ src-pkg: docs: ./tools/foreach './scripts/clean emulators && ./scripts/build emulators' -world: AMD64 RK3588 S922X RK3566 RK3566-X55 RK3326 RK3399 +world: AMD64 RK3588 S922X RK3326 RK3399 AMD64: unset DEVICE_ROOT diff --git a/documentation/PER_DEVICE_DOCUMENTATION/RK3399/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/RK3399/SUPPORTED_EMULATORS_AND_CORES.md index c3612ba8c6..e8ea141835 100644 --- a/documentation/PER_DEVICE_DOCUMENTATION/RK3399/SUPPORTED_EMULATORS_AND_CORES.md +++ b/documentation/PER_DEVICE_DOCUMENTATION/RK3399/SUPPORTED_EMULATORS_AND_CORES.md @@ -116,6 +116,7 @@ This document describes all available systems emulators and cores available for |Sony|PlayStation Portable (psp)|2004|`psp`|.iso .cso .pbp .chd|**ppsspp:** ppsspp-sa (default)
| |Sony|PSP Minis (pspminis)|2004|`pspminis`|.iso .cso .pbp|**ppsspp:** ppsspp-sa (default)
**retroarch:** ppsspp
| |Sun Microsystems|J2ME (j2me)|2002|`j2me`|.jar|**retroarch:** freej2me (default)
| +|Various|CHIP-8 / S-CHIP / XO-CHIP (chip-8)|1978|`chip-8`|.ch8 .sc8 .xo8|**retroarch:** jaxe (default)
| |Various|EasyRPG (easyrpg)|2003|`easyrpg`|.zip .easyrpg .ldb|**retroarch:** easyrpg (default)
| |Various|OpenBOR (openbor)|2003|`openbor`|.pak|**OpenBOR:** OpenBOR (default)
| |Various|ScummVM (scummvm)|2001|`games`|.sh .svm .scummvm|**scummvmsa:** scummvm (default)
**retroarch:** scummvm
| diff --git a/packages/kernel/linux/package.mk b/packages/kernel/linux/package.mk index 3fdef6a22a..3444e24cba 100644 --- a/packages/kernel/linux/package.mk +++ b/packages/kernel/linux/package.mk @@ -4,7 +4,7 @@ PKG_NAME="linux" PKG_LICENSE="GPL" -PKG_VERSION="6.7.3" +PKG_VERSION="6.7.4" PKG_URL="https://www.kernel.org/pub/linux/kernel/v6.x/${PKG_NAME}-${PKG_VERSION}.tar.xz" PKG_SITE="http://www.kernel.org" PKG_DEPENDS_HOST="ccache:host rdfind:host rsync:host openssl:host" diff --git a/projects/Amlogic/packages/linux/package.mk b/projects/Amlogic/packages/linux/package.mk index 8ef5c07583..0dfc2f2534 100644 --- a/projects/Amlogic/packages/linux/package.mk +++ b/projects/Amlogic/packages/linux/package.mk @@ -18,7 +18,7 @@ PKG_PATCH_DIRS+="${DEVICE}" case ${DEVICE} in S922X*) - PKG_VERSION="6.7.3" + PKG_VERSION="6.7.4" PKG_URL="https://www.kernel.org/pub/linux/kernel/v6.x/${PKG_NAME}-${PKG_VERSION}.tar.xz" ;; esac diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index 57e98a1039..6d7dd9a665 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -36,7 +36,7 @@ case ${DEVICE} in PKG_GIT_CLONE_BRANCH="main" ;; RK3399|RK3326|RK-ARMV8-A) - PKG_VERSION="6.7.3" + PKG_VERSION="6.7.4" PKG_URL="https://www.kernel.org/pub/linux/kernel/v6.x/${PKG_NAME}-${PKG_VERSION}.tar.xz" ;; esac From 0e9fe209e19875fc5c6d8775e037cfe3b9076790 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Tue, 6 Feb 2024 19:11:47 +0000 Subject: [PATCH 116/167] Fix rdfind:host dependency issue. --- projects/Amlogic/packages/linux/package.mk | 4 ++-- projects/Rockchip/packages/linux/package.mk | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/projects/Amlogic/packages/linux/package.mk b/projects/Amlogic/packages/linux/package.mk index 0dfc2f2534..8b3a5a371d 100644 --- a/projects/Amlogic/packages/linux/package.mk +++ b/projects/Amlogic/packages/linux/package.mk @@ -7,8 +7,8 @@ PKG_NAME="linux" PKG_LICENSE="GPL" PKG_SITE="https://github.com/JustEnoughLinuxOS" -PKG_DEPENDS_HOST="ccache:host rsync:host openssl:host rdfind:host" -PKG_DEPENDS_TARGET="toolchain linux:host cpio:host kmod:host xz:host wireless-regdb keyutils util-linux binutils ncurses openssl:host ${KERNEL_EXTRA_DEPENDS_TARGET}" +PKG_DEPENDS_HOST="ccache:host rdfind:host rsync:host openssl:host" +PKG_DEPENDS_TARGET="toolchain rdfind:host linux:host cpio:host kmod:host xz:host wireless-regdb keyutils util-linux binutils ncurses openssl:host ${KERNEL_EXTRA_DEPENDS_TARGET}" PKG_DEPENDS_INIT="toolchain" PKG_NEED_UNPACK="${LINUX_DEPENDS} $(get_pkg_directory initramfs) $(get_pkg_variable initramfs PKG_NEED_UNPACK)" PKG_LONGDESC="This package builds the kernel for Amlogic devices" diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index 1c10efed87..a902e431fc 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -7,8 +7,8 @@ PKG_NAME="linux" PKG_LICENSE="GPL" PKG_SITE="https://github.com/JustEnoughLinuxOS" -PKG_DEPENDS_HOST="ccache:host rsync:host openssl:host rdfind:host" -PKG_DEPENDS_TARGET="toolchain linux:host cpio:host kmod:host xz:host lz4:host wireless-regdb keyutils util-linux binutils ncurses openssl:host ${KERNEL_EXTRA_DEPENDS_TARGET}" +PKG_DEPENDS_HOST="ccache:host rdfind:host rsync:host openssl:host" +PKG_DEPENDS_TARGET="toolchain rdfind:host linux:host cpio:host kmod:host xz:host lz4:host wireless-regdb keyutils util-linux binutils ncurses openssl:host ${KERNEL_EXTRA_DEPENDS_TARGET}" PKG_DEPENDS_INIT="toolchain" PKG_NEED_UNPACK="${LINUX_DEPENDS} $(get_pkg_directory initramfs) $(get_pkg_variable initramfs PKG_NEED_UNPACK)" PKG_LONGDESC="This package builds the kernel for Rockchip devices" From 3c5d7836a24dcfd9618eaa8abf1dd4311378ec96 Mon Sep 17 00:00:00 2001 From: brooksytech <1673861+brooksytech@users.noreply.github.com> Date: Tue, 6 Feb 2024 21:30:21 +0000 Subject: [PATCH 117/167] Bump weston to 13.0.0 --- .../patches/001-fix-build.patch | 2 +- packages/wayland/weston/package.mk | 4 +-- .../weston/patches/002-weston-image.patch | 28 +++++++++++-------- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/packages/wayland/weston-kiosk-shell-dpms/patches/001-fix-build.patch b/packages/wayland/weston-kiosk-shell-dpms/patches/001-fix-build.patch index afc0c1bdf9..65bf6b75be 100644 --- a/packages/wayland/weston-kiosk-shell-dpms/patches/001-fix-build.patch +++ b/packages/wayland/weston-kiosk-shell-dpms/patches/001-fix-build.patch @@ -7,7 +7,7 @@ index f1fb908..6ea815e 100644 endif -libweston_version = 10 -+libweston_version = 12 ++libweston_version = 13 dir_prefix = get_option('prefix') dir_lib = dir_prefix / get_option('libdir') dir_module_weston = dir_lib / 'weston' diff --git a/packages/wayland/weston/package.mk b/packages/wayland/weston/package.mk index a6f4778b2a..8352a9aba5 100644 --- a/packages/wayland/weston/package.mk +++ b/packages/wayland/weston/package.mk @@ -2,12 +2,11 @@ # Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) PKG_NAME="weston" -PKG_VERSION="12.0.3" +PKG_VERSION="13.0.0" PKG_LICENSE="MIT" PKG_SITE="https://wayland.freedesktop.org/" PKG_URL="https://gitlab.freedesktop.org/wayland/weston/-/archive/${PKG_VERSION}/${PKG_NAME}-${PKG_VERSION}.tar.gz" -#PKG_URL="https://gitlab.freedesktop.org/wayland/weston.git" PKG_DEPENDS_TARGET="toolchain wayland wayland-protocols libdrm libxkbcommon libxcb-cursor libinput cairo pango libjpeg-turbo dbus seatd glu ${OPENGL} libX11 xwayland libXcursor xkbcomp setxkbmap cairo xterm libwebp" PKG_LONGDESC="Reference implementation of a Wayland compositor" PKG_PATCH_DIRS+="${DEVICE}" @@ -39,7 +38,6 @@ PKG_MESON_OPTS_TARGET+=" -Dbackend-drm=true \ -Dshell-kiosk=true \ -Ddesktop-shell-client-default="weston-desktop-shell" \ -Dcolor-management-lcms=false \ - -Dlauncher-libseat=true \ -Dimage-jpeg=true \ -Dimage-webp=true \ -Dtools=['terminal','debug','info'] diff --git a/packages/wayland/weston/patches/002-weston-image.patch b/packages/wayland/weston/patches/002-weston-image.patch index 39af379040..d9f3253f93 100644 --- a/packages/wayland/weston/patches/002-weston-image.patch +++ b/packages/wayland/weston/patches/002-weston-image.patch @@ -1,21 +1,19 @@ -diff --git a/clients/image.c b/clients/image.c -index 63a5cefb..eedbefa2 100644 ---- a/clients/image.c -+++ b/clients/image.c -@@ -402,7 +402,7 @@ image_create(struct display *display, const char *filename, +diff -rupN weston.orig/clients/image.c weston/clients/image.c +--- weston.orig/clients/image.c 2024-02-05 14:42:51.052285175 +0000 ++++ weston/clients/image.c 2024-02-05 14:44:09.510805841 +0000 +@@ -402,7 +402,7 @@ image_create(struct display *display, co widget_set_button_handler(image->widget, button_handler); widget_set_axis_handler(image->widget, axis_handler); window_set_key_handler(image->window, key_handler); - widget_schedule_resize(image->widget, 500, 400); -+ widget_schedule_resize(image->widget, 480, 320); ++ widget_schedule_resize(image->widget, 380, 320); return image; } -diff --git a/clients/meson.build b/clients/meson.build -index 2fe10956..38000b41 100644 ---- a/clients/meson.build -+++ b/clients/meson.build -@@ -267,77 +267,7 @@ foreach t : tools_list +diff -rupN weston.orig/clients/meson.build weston/clients/meson.build +--- weston.orig/clients/meson.build 2024-02-05 14:42:51.052285175 +0000 ++++ weston/clients/meson.build 2024-02-05 14:47:27.792730710 +0000 +@@ -270,83 +270,7 @@ foreach t : tools_list endforeach demo_clients = [ @@ -24,7 +22,13 @@ index 2fe10956..38000b41 100644 - 'basename': 'cliptest', - 'dep_objs': [ dep_vertex_clipping, dep_matrix_c ] - }, -- { 'basename': 'confine' }, +- { +- 'basename': 'constraints', +- 'add_sources': [ +- xdg_shell_client_protocol_h, +- xdg_shell_protocol_c, +- ], +- }, - { - 'basename': 'content_protection', - 'add_sources': [ From c6e3205968e954a049c9db5bcaea8d210e909ec2 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 7 Feb 2024 11:24:48 +0000 Subject: [PATCH 118/167] Fix build issue on S922X. --- packages/wayland/weston-kiosk-shell-dpms/package.mk | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/wayland/weston-kiosk-shell-dpms/package.mk b/packages/wayland/weston-kiosk-shell-dpms/package.mk index 3edb0d5be3..97c159a1e9 100644 --- a/packages/wayland/weston-kiosk-shell-dpms/package.mk +++ b/packages/wayland/weston-kiosk-shell-dpms/package.mk @@ -6,9 +6,17 @@ PKG_VERSION="dccd7db3905464bb0c00b65ee554b0fd2e3ba7b6" PKG_LICENSE="MIT" PKG_SITE="https://github.com/akhilharihar/Weston-kiosk-shell-DPMS" PKG_URL="${PKG_SITE}.git" -PKG_DEPENDS_TARGET="toolchain weston" +PKG_DEPENDS_TARGET="toolchain ${WINDOWMANAGER}" PKG_LONGDESC="A dpms module for Weston's kiosk shell." +pre_configure_target() { + case ${WINDOWMANAGER} in + weston11) + sed -i 's~libweston_version =.*$~libweston_version = 11~g' ${PKG_BUILD}/meson.build + ;; + esac +} + post_makeinstall_target() { mkdir -p ${INSTALL}/usr/bin cp ${PKG_BUILD}/.${TARGET_NAME}/dpms-client ${INSTALL}/usr/bin From 1014c756722cdba555f46b17ce936a11b96f9ab7 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 7 Feb 2024 12:53:54 +0000 Subject: [PATCH 119/167] Update Vita3k stand alone. --- .../emulators/standalone/vita3k-sa/package.mk | 5 +- .../vita3k-sa/patches/001-base-path.patch | 39 +- .../003-drop-xdg-desktop-portals.patch | 596 ------------------ .../patches/004-fix-link-error.patch | 27 +- 4 files changed, 43 insertions(+), 624 deletions(-) delete mode 100644 packages/emulators/standalone/vita3k-sa/patches/003-drop-xdg-desktop-portals.patch diff --git a/packages/emulators/standalone/vita3k-sa/package.mk b/packages/emulators/standalone/vita3k-sa/package.mk index 0fdf101efa..2c7914e258 100644 --- a/packages/emulators/standalone/vita3k-sa/package.mk +++ b/packages/emulators/standalone/vita3k-sa/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="vita3k-sa" -PKG_VERSION="564417b3b6a31296a2a09912c249a0145376e3c8" +PKG_VERSION="da73a57" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/Vita3K/Vita3K" PKG_URL="${PKG_SITE}.git" @@ -33,7 +33,8 @@ pre_configure_target() { PKG_CMAKE_OPTS_TARGET+=" -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=OFF \ -DUSE_DISCORD_RICH_PRESENCE=OFF \ - -DUSE_VITA3K_UPDATE=OFF" + -DUSE_VITA3K_UPDATE=OFF \ + -DXXH_X86DISPATCH_ALLOW_AVX=ON" } makeinstall_target() { diff --git a/packages/emulators/standalone/vita3k-sa/patches/001-base-path.patch b/packages/emulators/standalone/vita3k-sa/patches/001-base-path.patch index 1b0777c25d..003bb01ea0 100644 --- a/packages/emulators/standalone/vita3k-sa/patches/001-base-path.patch +++ b/packages/emulators/standalone/vita3k-sa/patches/001-base-path.patch @@ -1,15 +1,26 @@ -diff --git a/vita3k/main.cpp b/vita3k/main.cpp -index 4439ad9b6e..c26b84ff82 100644 ---- a/vita3k/main.cpp -+++ b/vita3k/main.cpp -@@ -84,8 +84,8 @@ static void run_execv(char *argv[], EmuEnvState &emuenv) { - int main(int argc, char *argv[]) { - ZoneScoped; // Tracy - Track main function scope - Root root_paths; -- root_paths.set_base_path(string_utils::utf_to_wide(SDL_GetBasePath())); -- root_paths.set_pref_path(string_utils::utf_to_wide(SDL_GetPrefPath(org_name, app_name))); -+ root_paths.set_base_path(string_utils::utf_to_wide("/storage/.config/vita3k/")); -+ root_paths.set_pref_path(string_utils::utf_to_wide("/storage/psvita/vita3k/")); +diff --git a/vita3k/app/src/app_init.cpp b/vita3k/app/src/app_init.cpp +index 8536b401..459e21f5 100644 +--- a/vita3k/app/src/app_init.cpp ++++ b/vita3k/app/src/app_init.cpp +@@ -103,9 +103,7 @@ void update_viewport(EmuEnvState &state) { + } - // Create default preference path for safety - if (!fs::exists(root_paths.get_pref_path())) + void init_paths(Root &root_paths) { +- auto sdl_base_path = SDL_GetBasePath(); +- auto base_path = fs_utils::utf8_to_path(sdl_base_path); +- SDL_free(sdl_base_path); ++ auto base_path = fs_utils::utf8_to_path("/storage/.config/vita3k/"); + + root_paths.set_base_path(base_path); + root_paths.set_static_assets_path(base_path); +@@ -129,9 +127,7 @@ void init_paths(Root &root_paths) { + } else { + // SDL_GetPrefPath is deferred as it creates the directory. + // When using a portable directory, it is not needed. +- auto sdl_pref_path = SDL_GetPrefPath(org_name, app_name); +- auto pref_path = fs_utils::utf8_to_path(sdl_pref_path); +- SDL_free(sdl_pref_path); ++ auto pref_path = fs_utils::utf8_to_path("/storage/psvita/vita3k/"); + + #if defined(__APPLE__) + // Store other data in the user-wide path. Otherwise we may end up dumping diff --git a/packages/emulators/standalone/vita3k-sa/patches/003-drop-xdg-desktop-portals.patch b/packages/emulators/standalone/vita3k-sa/patches/003-drop-xdg-desktop-portals.patch deleted file mode 100644 index a0effdc0d6..0000000000 --- a/packages/emulators/standalone/vita3k-sa/patches/003-drop-xdg-desktop-portals.patch +++ /dev/null @@ -1,596 +0,0 @@ -diff --git a/.gitmodules b/.gitmodules -index e57fd159..bb5ed956 100644 ---- a/.gitmodules -+++ b/.gitmodules -@@ -90,9 +90,9 @@ - [submodule "external/tracy"] - path = external/tracy - url = https://github.com/wolfpld/tracy.git --[submodule "external/nativefiledialog-extended"] -- path = external/nativefiledialog-extended -- url = https://github.com/btzy/nativefiledialog-extended.git -+[submodule "external/nativefiledialog-cmake"] -+ path = external/nativefiledialog-cmake -+ url = https://github.com/Vita3K/nativefiledialog-cmake - [submodule "external/cubeb"] - path = external/cubeb - url = https://github.com/mozilla/cubeb.git -diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt -index d4dcfc94..4cb3e1ee 100644 ---- a/external/CMakeLists.txt -+++ b/external/CMakeLists.txt -@@ -344,11 +344,20 @@ target_compile_definitions(tracy PUBLIC $<$:TRACY_E - # - # target_compile_definitions(tracy PUBLIC TRACY_ENABLE) - --# Use XDG desktop portals on Linux --set(NFD_PORTAL ON) -+# Create alias to prevent the need of multiple changes in case the target name changes -+# Batocera - bring back nativefiledialog -+if(UNIX) -+ find_package(PkgConfig REQUIRED) -+ pkg_check_modules(GTK3 REQUIRED gtk+-3.0) - --# nativefiledialog-extended --add_subdirectory(nativefiledialog-extended) -+ include_directories(${GTK3_INCLUDE_DIRS}) -+ link_directories(${GTK3_LIBRARY_DIRS}) -+ -+ add_definitions(${GTK3_CFLAGS_OTHER}) -+ -+ add_library(nativefiledialog STATIC nativefiledialog-cmake/src/nfd_gtk.c nativefiledialog-cmake/src/nfd_common.c) -+ target_include_directories(nativefiledialog PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/nativefiledialog-cmake/src/include") -+ target_link_libraries(nativefiledialog ${GTK3_LIBRARIES}) -+endif() -+set_property(TARGET nativefiledialog PROPERTY FOLDER externals) - --# Create alias to prevent the need of multiple changes in case the target name changes --add_library(NFDe::NFDe ALIAS nfd) -diff --git a/vita3k/CMakeLists.txt b/vita3k/CMakeLists.txt -index e1b27dfd..25d8f88b 100644 ---- a/vita3k/CMakeLists.txt -+++ b/vita3k/CMakeLists.txt -@@ -105,7 +105,6 @@ add_subdirectory(features) - add_subdirectory(glutil) - add_subdirectory(gui) - add_subdirectory(gxm) --add_subdirectory(host) - add_subdirectory(ime) - add_subdirectory(lang) - add_subdirectory(net) -diff --git a/vita3k/dir_doc.cpp b/vita3k/dir_doc.cpp -index b66bbd98..28d5a6f4 100644 ---- a/vita3k/dir_doc.cpp -+++ b/vita3k/dir_doc.cpp -@@ -115,12 +115,6 @@ - * @brief Vita's GXM low-level graphics API translation layer - */ - --/** -- * @dir vita3k/host -- * -- * @brief Host operating system abstraction layer -- */ -- - /** - * @dir vita3k/io - * -diff --git a/vita3k/gui/CMakeLists.txt b/vita3k/gui/CMakeLists.txt -index ef7de553..811ee661 100644 ---- a/vita3k/gui/CMakeLists.txt -+++ b/vita3k/gui/CMakeLists.txt -@@ -51,5 +51,5 @@ add_library( - - target_include_directories(gui PUBLIC include ${CMAKE_SOURCE_DIR}/vita3k) - target_link_libraries(gui PUBLIC app compat config dialog emuenv https ime imgui glutil lang regmgr np) --target_link_libraries(gui PRIVATE audio ctrl kernel miniz psvpfsparser pugixml::pugixml stb renderer packages sdl2 touch vkutil host::dialog) -+target_link_libraries(gui PRIVATE audio ctrl kernel miniz psvpfsparser pugixml::pugixml stb renderer packages sdl2 touch vkutil nativefiledialog) - target_link_libraries(gui PUBLIC tracy) -diff --git a/vita3k/gui/src/archive_install_dialog.cpp b/vita3k/gui/src/archive_install_dialog.cpp -index 67832991..5d724637 100644 ---- a/vita3k/gui/src/archive_install_dialog.cpp -+++ b/vita3k/gui/src/archive_install_dialog.cpp -@@ -19,7 +19,7 @@ - #include "private.h" - - #include --#include -+#include - #include - - #include -@@ -32,7 +33,7 @@ static bool delete_archive_file; - static std::string state, type, title; - static std::map> contents_archives; - static std::vector invalid_archives; --static std::filesystem::path archive_path = ""; -+static nfdchar_t *archive_path; - static float global_progress = 0.f; - static float archives_count = 0.f; - -@@ -104,20 +104,12 @@ void draw_archive_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - gui.file_menu.archive_install_dialog = false; - } else { - if (state.empty()) { -- host::dialog::filesystem::Result result = host::dialog::filesystem::Result::CANCEL; -- if (type == "file") { -- // Set file filters for the file picking dialog -- std::vector file_filters = { -- { "PlayStation Vita commercial software package (NoNpDrm/FAGDec) / PlayStation Vita homebrew software package", { "zip", "vpk" } }, -- { "PlayStation Vita commercial software package (NoNpDrm/FAGDec)", { "zip" } }, -- { "PlayStation Vita homebrew software package", { "vpk" } }, -- }; -- // Call file picking dialog from the native file browser -- result = host::dialog::filesystem::open_file(archive_path, file_filters); -- } else { -- result = host::dialog::filesystem::pick_folder(archive_path); -- } -- if (result == host::dialog::filesystem::Result::SUCCESS) { -+ nfdresult_t result = NFD_CANCEL; -+ if (type == "file") -+ result = NFD_OpenDialog("zip,vpk", nullptr, &archive_path); -+ else -+ result = NFD_PickFolder(nullptr, &archive_path); -+ if (result == NFD_OKAY) { - state = "install"; - } else - type.clear(); -@@ -133,7 +127,7 @@ void draw_archive_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - } else - invalid_archives.push_back(archive_path); - }; -- const auto contents_path = fs::path(archive_path.wstring()); -+ const auto contents_path = fs::path(string_utils::utf_to_wide(archive_path)); - if (type == "directory") { - const auto archives_path = get_path_of_archives(contents_path); - archives_count = float(archives_path.size()); -@@ -264,7 +258,7 @@ void draw_archive_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - for (const auto archive : invalid_archives) - fs::remove(archive); - } -- archive_path = ""; -+ archive_path = nullptr; - gui.file_menu.archive_install_dialog = false; - delete_archive_file = false; - contents_archives.clear(); -diff --git a/vita3k/gui/src/firmware_install_dialog.cpp b/vita3k/gui/src/firmware_install_dialog.cpp -index 1b7208e6..f29150f7 100644 ---- a/vita3k/gui/src/firmware_install_dialog.cpp -+++ b/vita3k/gui/src/firmware_install_dialog.cpp -@@ -19,18 +19,19 @@ - - #include - #include --#include - #include - #include - #include - -+#include -+ - #include - - namespace gui { - - std::string fw_version; - bool delete_pup_file; --std::filesystem::path pup_path = ""; -+nfdchar_t *pup_path; - - static void get_firmware_version(EmuEnvState &emuenv) { - fs::ifstream versionFile(emuenv.pref_path + L"/PUP_DEC/PUP/version.txt"); -@@ -46,7 +46,7 @@ static void get_firmware_version(EmuEnvState &emuenv) { - } - - void draw_firmware_install_dialog(GuiState &gui, EmuEnvState &emuenv) { -- host::dialog::filesystem::Result result = host::dialog::filesystem::Result::CANCEL; -+ nfdresult_t result = NFD_CANCEL; - - static std::mutex install_mutex; - static bool draw_file_dialog = true; -@@ -62,23 +62,23 @@ void draw_firmware_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - std::lock_guard lock(install_mutex); - - if (draw_file_dialog) { -- result = host::dialog::filesystem::open_file(pup_path, { { "PlayStation Vita Firmware Package", { "PUP" } } }); -+ result = NFD_OpenDialog("PUP", nullptr, &pup_path); - draw_file_dialog = false; - finished_installing = false; - -- if (result == host::dialog::filesystem::Result::SUCCESS) { -+ if (result == NFD_OKAY) { - std::thread installation([&emuenv]() { -- install_pup(emuenv.pref_path, pup_path.string(), progress_callback); -+ install_pup(emuenv.pref_path, pup_path, progress_callback); - std::lock_guard lock(install_mutex); - finished_installing = true; - get_firmware_version(emuenv); - }); - installation.detach(); -- } else if (result == host::dialog::filesystem::Result::CANCEL) { -+ } else if (result == NFD_CANCEL) { - gui.file_menu.firmware_install_dialog = false; - draw_file_dialog = true; - } else { -- LOG_ERROR("Error initializing file dialog: {}", host::dialog::filesystem::get_error()); -+ LOG_ERROR("Error initializing file dialog: {}", NFD_GetError()); - gui.file_menu.firmware_install_dialog = false; - draw_file_dialog = true; - } -@@ -117,7 +118,7 @@ void draw_firmware_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - ImGui::SetCursorPosX(ImGui::GetWindowWidth() / 2 - 30); - if (ImGui::Button("OK", BUTTON_SIZE)) { - if (delete_pup_file) { -- fs::remove(fs::path(pup_path.wstring())); -+ fs::remove(fs::path(string_utils::utf_to_wide(pup_path))); - delete_pup_file = false; - } - if (emuenv.cfg.initial_setup) -diff --git a/vita3k/gui/src/initial_setup.cpp b/vita3k/gui/src/initial_setup.cpp -index 0bbe3548..e327c6cb 100644 ---- a/vita3k/gui/src/initial_setup.cpp -+++ b/vita3k/gui/src/initial_setup.cpp -@@ -19,11 +19,12 @@ - - #include - #include --#include - #include - - #include - -+#include -+ - namespace gui { - - enum InitialSetup { -@@ -121,12 +122,12 @@ void draw_initial_setup(GuiState &gui, EmuEnvState &emuenv) { - ImGui::TextWrapped("%s", emuenv.cfg.pref_path.c_str()); - ImGui::SetCursorPos(!is_default_path ? ImVec2((WINDOW_SIZE.x / 2.f) - BIG_BUTTON_SIZE.x - (20.f * SCALE.x), BIG_BUTTON_POS.y) : BIG_BUTTON_POS); - if (ImGui::Button("Change Emulator Path", BIG_BUTTON_SIZE)) { -- std::filesystem::path emulator_path = ""; -- host::dialog::filesystem::Result result = host::dialog::filesystem::pick_folder(emulator_path); -+ nfdchar_t *emulator_path = nullptr; -+ nfdresult_t result = NFD_PickFolder(nullptr, &emulator_path); - -- if ((result == host::dialog::filesystem::Result::SUCCESS) && (emulator_path.wstring() != emuenv.pref_path)) { -- emuenv.pref_path = emulator_path.wstring() + L'/'; -- emuenv.cfg.pref_path = emulator_path.string(); -+ if ((result == NFD_OKAY) && (string_utils::utf_to_wide(emulator_path) != emuenv.pref_path)) { -+ emuenv.pref_path = string_utils::utf_to_wide(emulator_path) + L'/'; -+ emuenv.cfg.pref_path = emulator_path; - } - } - if (!is_default_path) { -diff --git a/vita3k/gui/src/license_install_dialog.cpp b/vita3k/gui/src/license_install_dialog.cpp -index beabedb8..7eb910a5 100644 ---- a/vita3k/gui/src/license_install_dialog.cpp -+++ b/vita3k/gui/src/license_install_dialog.cpp -@@ -17,15 +17,15 @@ - - #include "private.h" - --#include - #include - #include - #include -+#include - - namespace gui { - - static std::string state, title, zRIF; --std::filesystem::path license_path = ""; -+nfdchar_t *license_path; - static bool delete_license_file; - - void draw_license_install_dialog(GuiState &gui, EmuEnvState &emuenv) { -@@ -67,10 +67,10 @@ void draw_license_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - if (ImGui::Button(common["cancel"].c_str(), BUTTON_SIZE)) - gui.file_menu.license_install_dialog = false; - } else if (state == "license") { -- host::dialog::filesystem::Result result = host::dialog::filesystem::Result::CANCEL; -- result = host::dialog::filesystem::open_file(license_path, { { "PlayStation Vita software license file", { "bin", "rif" } } }); -- if (result == host::dialog::filesystem::Result::SUCCESS) { -- if (copy_license(emuenv, fs::path(license_path.wstring()))) -+ nfdresult_t result = NFD_CANCEL; -+ result = NFD_OpenDialog("bin,rif", nullptr, &license_path); -+ if (result == NFD_OKAY) { -+ if (copy_license(emuenv, license_path)) - state = "success"; - else - state = "fail"; -@@ -105,12 +105,12 @@ void draw_license_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - ImGui::Spacing(); - ImGui::Separator(); - ImGui::Spacing(); -- if (license_path != "") -+ if (license_path) - ImGui::Checkbox(license["delete_bin_rif"].c_str(), &delete_license_file); - ImGui::SetCursorPos(ImVec2(POS_BUTTON, ImGui::GetWindowSize().y - BUTTON_SIZE.y - (20.f * SCALE.y))); - if (ImGui::Button(common["ok"].c_str(), BUTTON_SIZE)) { - if (delete_license_file) { -- fs::remove(fs::path(license_path.wstring())); -+ fs::remove(fs::path(string_utils::utf_to_wide(std::string(license_path)))); - delete_license_file = false; - } - license_path = nullptr; -diff --git a/vita3k/gui/src/pkg_install_dialog.cpp b/vita3k/gui/src/pkg_install_dialog.cpp -index 75c11214..46fcf6f8 100644 ---- a/vita3k/gui/src/pkg_install_dialog.cpp -+++ b/vita3k/gui/src/pkg_install_dialog.cpp -@@ -18,7 +18,6 @@ - #include "private.h" - - #include --#include - #include - #include - #include -@@ -25,19 +25,18 @@ - #include - #include - #include -- -+#include - #include - - namespace gui { - --static std::filesystem::path pkg_path = ""; --static std::filesystem::path license_path = ""; -+static nfdchar_t *pkg_path, *license_path; - static std::string state, title, zRIF; - static bool draw_file_dialog = true; - static bool delete_pkg_file, delete_license_file; - - void draw_pkg_install_dialog(GuiState &gui, EmuEnvState &emuenv) { -- host::dialog::filesystem::Result result = host::dialog::filesystem::Result::CANCEL; -+ nfdresult_t result = NFD_CANCEL; - static std::atomic progress(0); - static std::mutex install_mutex; - static const auto progress_callback = [&](float updated_progress) { -@@ -53,15 +53,15 @@ void draw_pkg_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - const auto BUTTON_SIZE = ImVec2(160.f * SCALE.x, 45.f * SCALE.y); - - if (draw_file_dialog) { -- result = host::dialog::filesystem::open_file(pkg_path, { { "PlayStation Store Downloaded Package", { "pkg" } } }); -+ result = NFD_OpenDialog("pkg", nullptr, &pkg_path); - draw_file_dialog = false; -- if (result == host::dialog::filesystem::Result::SUCCESS) -+ if (result == NFD_OKAY) - ImGui::OpenPopup("install"); -- else if (result == host::dialog::filesystem::Result::CANCEL) { -+ else if (result == NFD_CANCEL) { - gui.file_menu.pkg_install_dialog = false; - draw_file_dialog = true; - } else { -- LOG_ERROR("Error initializing file dialog: {}", host::dialog::filesystem::get_error()); -+ LOG_ERROR("Error initializing file dialog: {}", NFD_GetError()); - gui.file_menu.pkg_install_dialog = false; - draw_file_dialog = true; - } -@@ -97,9 +96,9 @@ void draw_pkg_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - draw_file_dialog = true; - } - } else if (state == "license") { -- result = host::dialog::filesystem::open_file(license_path, { { "PlayStation Vita software license file", { "bin", "rif" } } }); -- if (result == host::dialog::filesystem::Result::SUCCESS) { -- fs::ifstream binfile(license_path.wstring(), std::ios::in | std::ios::binary | std::ios::ate); -+ result = NFD_OpenDialog("bin,rif", nullptr, &license_path); -+ if (result == NFD_OKAY) { -+ fs::ifstream binfile(string_utils::utf_to_wide(std::string(license_path)), std::ios::in | std::ios::binary | std::ios::ate); - zRIF = rif2zrif(binfile); - state = "install"; - } else -@@ -125,7 +125,7 @@ void draw_pkg_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - state = "install"; - } else if (state == "install") { - std::thread installation([&emuenv]() { -- if (install_pkg(pkg_path.string(), emuenv, zRIF, progress_callback)) { -+ if (install_pkg(std::string(pkg_path), emuenv, zRIF, progress_callback)) { - std::lock_guard lock(install_mutex); - state = "success"; - } else { -@@ -143,17 +142,17 @@ void draw_pkg_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - ImGui::Separator(); - ImGui::Spacing(); - ImGui::Checkbox(lang["delete_pkg"].c_str(), &delete_pkg_file); -- if (license_path != "") -+ if (license_path) - ImGui::Checkbox(lang["delete_bin_rif"].c_str(), &delete_license_file); - ImGui::Spacing(); - ImGui::SetCursorPos(ImVec2(POS_BUTTON, ImGui::GetWindowSize().y - BUTTON_SIZE.y - (20.f * SCALE.y))); - if (ImGui::Button(common["ok"].c_str(), BUTTON_SIZE)) { - if (delete_pkg_file) { -- fs::remove(fs::path(pkg_path.wstring())); -+ fs::remove(fs::path(string_utils::utf_to_wide(std::string(pkg_path)))); - delete_pkg_file = false; - } - if (delete_license_file) { -- fs::remove(fs::path(license_path.wstring())); -+ fs::remove(fs::path(string_utils::utf_to_wide(std::string(pkg_path)))); - delete_license_file = false; - } - if ((emuenv.app_info.app_category.find("gd") != std::string::npos) || (emuenv.app_info.app_category.find("gp") != std::string::npos)) { -@@ -160,8 +160,8 @@ void draw_pkg_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - save_apps_cache(gui, emuenv); - } - update_notice_info(gui, emuenv, "content"); -- pkg_path = ""; -- license_path = ""; -+ pkg_path = nullptr; -+ license_path = nullptr; - gui.file_menu.pkg_install_dialog = false; - draw_file_dialog = true; - state.clear(); -@@ -175,7 +175,7 @@ void draw_pkg_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - ImGui::SetCursorPos(ImVec2(POS_BUTTON, ImGui::GetWindowSize().y - BUTTON_SIZE.y - (20.f * SCALE.y))); - if (ImGui::Button("OK", BUTTON_SIZE)) { - gui.file_menu.pkg_install_dialog = false; -- pkg_path = ""; -+ pkg_path = nullptr; - draw_file_dialog = true; - work_path = ""; - state.clear(); -diff --git a/vita3k/gui/src/settings.cpp b/vita3k/gui/src/settings.cpp -index 72ffabdb..7a6f4265 100644 ---- a/vita3k/gui/src/settings.cpp -+++ b/vita3k/gui/src/settings.cpp -@@ -20,7 +20,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -29,6 +28,7 @@ - #include - #include - -+#include - #include - #include - -@@ -581,11 +581,11 @@ void draw_settings(GuiState &gui, EmuEnvState &emuenv) { - sub_menu.clear(); - } - } else if (sub_menu == "image") { -- std::filesystem::path image_path = ""; -- host::dialog::filesystem::Result result = host::dialog::filesystem::open_file(image_path, { { "Image file", { "bmp", "gif", "jpg", "png", "tif" } } }); -+ nfdchar_t *image_path; -+ nfdresult_t result = NFD_OpenDialog("bmp,gif,jpg,png,tif", nullptr, &image_path); - -- if ((result == host::dialog::filesystem::Result::SUCCESS) && init_user_start_background(gui, image_path.string())) { -- gui.users[emuenv.io.user_id].start_path = image_path.string(); -+ if ((result == NFD_OKAY) && init_user_start_background(gui, image_path)) { -+ gui.users[emuenv.io.user_id].start_path = image_path; - gui.users[emuenv.io.user_id].start_type = "image"; - save_user(gui, emuenv, emuenv.io.user_id); - } -@@ -641,12 +641,12 @@ void draw_settings(GuiState &gui, EmuEnvState &emuenv) { - ImGui::NextColumn(); - } - if (ImGui::Selectable(theme_background.home_screen_backgrounds["add_background"].c_str(), false, ImGuiSelectableFlags_None, SIZE_PACKAGE)) { -- std::filesystem::path background_path = ""; -- host::dialog::filesystem::Result result = host::dialog::filesystem::open_file(background_path, { { "Image file", { "bmp", "gif", "jpg", "png", "tif" } } }); -+ nfdchar_t *background_path; -+ nfdresult_t result = NFD_OpenDialog("bmp,gif,jpg,png,tif", nullptr, &background_path); - -- if ((result == host::dialog::filesystem::Result::SUCCESS) && (!gui.user_backgrounds.contains(background_path.string()))) { -- if (init_user_background(gui, emuenv, background_path.string())) { -- gui.users[emuenv.io.user_id].backgrounds.push_back(background_path.string()); -+ if ((result == NFD_OKAY) && (gui.user_backgrounds.find(background_path) == gui.user_backgrounds.end())) { -+ if (init_user_background(gui, emuenv, background_path)) { -+ gui.users[emuenv.io.user_id].backgrounds.push_back(background_path); - gui.users[emuenv.io.user_id].use_theme_bg = false; - save_user(gui, emuenv, emuenv.io.user_id); - } -diff --git a/vita3k/gui/src/settings_dialog.cpp b/vita3k/gui/src/settings_dialog.cpp -index 37c05f1c..73dc08c3 100644 ---- a/vita3k/gui/src/settings_dialog.cpp -+++ b/vita3k/gui/src/settings_dialog.cpp -@@ -21,7 +21,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -43,6 +42,7 @@ - #include - - #include -+#include - #include - #include - -@@ -105,12 +105,12 @@ static void reset_emulator(GuiState &gui, EmuEnvState &emuenv) { - } - - static void change_emulator_path(GuiState &gui, EmuEnvState &emuenv) { -- std::filesystem::path emulator_path = ""; -- host::dialog::filesystem::Result result = host::dialog::filesystem::pick_folder(emulator_path); -+ nfdchar_t *emulator_path = nullptr; -+ nfdresult_t result = NFD_PickFolder(nullptr, &emulator_path); - -- if (result == host::dialog::filesystem::Result::SUCCESS && emulator_path.wstring() != emuenv.pref_path) { -+ if (result == NFD_OKAY && string_utils::utf_to_wide(emulator_path) != emuenv.pref_path) { - // Refresh the working paths -- emuenv.pref_path = emulator_path.wstring() + L'/'; -+ emuenv.pref_path = string_utils::utf_to_wide(emulator_path) + L'/'; - - // TODO: Move app old to new path - reset_emulator(gui, emuenv); -diff --git a/vita3k/gui/src/trophy_collection.cpp b/vita3k/gui/src/trophy_collection.cpp -index 85854dc3..97193c7d 100644 ---- a/vita3k/gui/src/trophy_collection.cpp -+++ b/vita3k/gui/src/trophy_collection.cpp -@@ -26,6 +26,7 @@ - #include - #include - -+#include - #include - #include - -diff --git a/vita3k/gui/src/user_management.cpp b/vita3k/gui/src/user_management.cpp -index e1d23bfb..f0b8a935 100644 ---- a/vita3k/gui/src/user_management.cpp -+++ b/vita3k/gui/src/user_management.cpp -@@ -24,13 +24,13 @@ - - #include - #include --#include - #include - #include - - #include - #include - -+#include - #include - #include - -@@ -373,11 +373,11 @@ void draw_user_management(GuiState &gui, EmuEnvState &emuenv) { - const auto CHANGE_AVATAR_BTN_SIZE = ImGui::CalcTextSize(lang["change_avatar"].c_str()).x + (ImGui::GetStyle().FramePadding.x * 2.f); - ImGui::SetCursorPos(ImVec2(AVATAR_POS.x + (AVATAR_SIZE.x / 2.f) - (CHANGE_AVATAR_BTN_SIZE / 2.f), AVATAR_POS.y + AVATAR_SIZE.y)); - if (ImGui::Button(lang["choose_avatar"].c_str(), CHANGE_AVATAR_BTN_SIZE)) { -- std::filesystem::path avatar_path = ""; -- host::dialog::filesystem::Result result = host::dialog::filesystem::open_file(avatar_path, { { "Image file", { "bmp", "gif", "jpg", "png", "tif" } } }); -+ nfdchar_t *avatar_path; -+ nfdresult_t result = NFD_OpenDialog("bmp,gif,jpg,png,tif", nullptr, &avatar_path); - -- if ((result == host::dialog::filesystem::Result::SUCCESS) && init_avatar(gui, emuenv, "temp", avatar_path.string())) -- temp.avatar = avatar_path.string(); -+ if ((result == NFD_OKAY) && init_avatar(gui, emuenv, "temp", avatar_path)) -+ temp.avatar = avatar_path; - } - ImGui::SetWindowFontScale(0.8f); - const auto INPUT_NAME_SIZE = 330.f * SCALE.x; -diff --git a/vita3k/host/CMakeLists.txt b/vita3k/host/CMakeLists.txt -deleted file mode 100644 -index f9d89128..00000000 ---- a/vita3k/host/CMakeLists.txt -+++ /dev/null -@@ -1 +0,0 @@ --add_subdirectory(dialog) -diff --git a/vita3k/host/dialog/CMakeLists.txt b/vita3k/host/dialog/CMakeLists.txt -deleted file mode 100644 -index d577a152..00000000 ---- a/vita3k/host/dialog/CMakeLists.txt -+++ /dev/null -@@ -1,11 +0,0 @@ --add_library(host_dialog STATIC -- src/filesystem.cpp --) -- --# Create alias for more friendly naming and avoid conflicts --# in global CMake scope --add_library(host::dialog ALIAS host_dialog) -- --target_include_directories(host_dialog PUBLIC include) -- --target_link_libraries(host_dialog PRIVATE NFDe::NFDe) diff --git a/packages/emulators/standalone/vita3k-sa/patches/004-fix-link-error.patch b/packages/emulators/standalone/vita3k-sa/patches/004-fix-link-error.patch index ce6d21857f..be1ff84d8c 100644 --- a/packages/emulators/standalone/vita3k-sa/patches/004-fix-link-error.patch +++ b/packages/emulators/standalone/vita3k-sa/patches/004-fix-link-error.patch @@ -1,12 +1,15 @@ -diff --git a/vita3k/https/CMakeLists.txt b/vita3k/https/CMakeLists.txt -index f64456bd..e9555080 100644 ---- a/vita3k/https/CMakeLists.txt -+++ b/vita3k/https/CMakeLists.txt -@@ -6,5 +6,6 @@ add_library( - ) - - target_include_directories(https PUBLIC include) --target_include_directories(https PRIVATE ${OPENSSL_INCLUDE_DIR}) -+target_include_directories(https PRIVATE crypto ssl) - target_link_libraries(https PUBLIC util) -+target_link_libraries(https PRIVATE crypto ssl) +diff --git a/vita3k/CMakeLists.txt b/vita3k/CMakeLists.txt +index 04177f04..4adb1e0b 100644 +--- a/vita3k/CMakeLists.txt ++++ b/vita3k/CMakeLists.txt +@@ -136,10 +136,6 @@ if(USE_DISCORD_RICH_PRESENCE) + target_link_libraries(vita3k PRIVATE discord-rpc) + endif() + +-if(LINUX) +- target_link_libraries(vita3k PRIVATE -static-libgcc -static-libstdc++) +-endif() +- + set_target_properties(vita3k PROPERTIES OUTPUT_NAME Vita3K + ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" From e0f08b4e08cf643bc410cea51017ac76753a73a7 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 7 Feb 2024 12:53:54 +0000 Subject: [PATCH 120/167] Update Vita3k stand alone. --- .../emulators/standalone/vita3k-sa/package.mk | 5 +- .../vita3k-sa/patches/001-base-path.patch | 39 +- .../003-drop-xdg-desktop-portals.patch | 596 ------------------ .../patches/004-fix-link-error.patch | 27 +- 4 files changed, 43 insertions(+), 624 deletions(-) delete mode 100644 packages/emulators/standalone/vita3k-sa/patches/003-drop-xdg-desktop-portals.patch diff --git a/packages/emulators/standalone/vita3k-sa/package.mk b/packages/emulators/standalone/vita3k-sa/package.mk index 0fdf101efa..2c7914e258 100644 --- a/packages/emulators/standalone/vita3k-sa/package.mk +++ b/packages/emulators/standalone/vita3k-sa/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="vita3k-sa" -PKG_VERSION="564417b3b6a31296a2a09912c249a0145376e3c8" +PKG_VERSION="da73a57" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/Vita3K/Vita3K" PKG_URL="${PKG_SITE}.git" @@ -33,7 +33,8 @@ pre_configure_target() { PKG_CMAKE_OPTS_TARGET+=" -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=OFF \ -DUSE_DISCORD_RICH_PRESENCE=OFF \ - -DUSE_VITA3K_UPDATE=OFF" + -DUSE_VITA3K_UPDATE=OFF \ + -DXXH_X86DISPATCH_ALLOW_AVX=ON" } makeinstall_target() { diff --git a/packages/emulators/standalone/vita3k-sa/patches/001-base-path.patch b/packages/emulators/standalone/vita3k-sa/patches/001-base-path.patch index 1b0777c25d..003bb01ea0 100644 --- a/packages/emulators/standalone/vita3k-sa/patches/001-base-path.patch +++ b/packages/emulators/standalone/vita3k-sa/patches/001-base-path.patch @@ -1,15 +1,26 @@ -diff --git a/vita3k/main.cpp b/vita3k/main.cpp -index 4439ad9b6e..c26b84ff82 100644 ---- a/vita3k/main.cpp -+++ b/vita3k/main.cpp -@@ -84,8 +84,8 @@ static void run_execv(char *argv[], EmuEnvState &emuenv) { - int main(int argc, char *argv[]) { - ZoneScoped; // Tracy - Track main function scope - Root root_paths; -- root_paths.set_base_path(string_utils::utf_to_wide(SDL_GetBasePath())); -- root_paths.set_pref_path(string_utils::utf_to_wide(SDL_GetPrefPath(org_name, app_name))); -+ root_paths.set_base_path(string_utils::utf_to_wide("/storage/.config/vita3k/")); -+ root_paths.set_pref_path(string_utils::utf_to_wide("/storage/psvita/vita3k/")); +diff --git a/vita3k/app/src/app_init.cpp b/vita3k/app/src/app_init.cpp +index 8536b401..459e21f5 100644 +--- a/vita3k/app/src/app_init.cpp ++++ b/vita3k/app/src/app_init.cpp +@@ -103,9 +103,7 @@ void update_viewport(EmuEnvState &state) { + } - // Create default preference path for safety - if (!fs::exists(root_paths.get_pref_path())) + void init_paths(Root &root_paths) { +- auto sdl_base_path = SDL_GetBasePath(); +- auto base_path = fs_utils::utf8_to_path(sdl_base_path); +- SDL_free(sdl_base_path); ++ auto base_path = fs_utils::utf8_to_path("/storage/.config/vita3k/"); + + root_paths.set_base_path(base_path); + root_paths.set_static_assets_path(base_path); +@@ -129,9 +127,7 @@ void init_paths(Root &root_paths) { + } else { + // SDL_GetPrefPath is deferred as it creates the directory. + // When using a portable directory, it is not needed. +- auto sdl_pref_path = SDL_GetPrefPath(org_name, app_name); +- auto pref_path = fs_utils::utf8_to_path(sdl_pref_path); +- SDL_free(sdl_pref_path); ++ auto pref_path = fs_utils::utf8_to_path("/storage/psvita/vita3k/"); + + #if defined(__APPLE__) + // Store other data in the user-wide path. Otherwise we may end up dumping diff --git a/packages/emulators/standalone/vita3k-sa/patches/003-drop-xdg-desktop-portals.patch b/packages/emulators/standalone/vita3k-sa/patches/003-drop-xdg-desktop-portals.patch deleted file mode 100644 index a0effdc0d6..0000000000 --- a/packages/emulators/standalone/vita3k-sa/patches/003-drop-xdg-desktop-portals.patch +++ /dev/null @@ -1,596 +0,0 @@ -diff --git a/.gitmodules b/.gitmodules -index e57fd159..bb5ed956 100644 ---- a/.gitmodules -+++ b/.gitmodules -@@ -90,9 +90,9 @@ - [submodule "external/tracy"] - path = external/tracy - url = https://github.com/wolfpld/tracy.git --[submodule "external/nativefiledialog-extended"] -- path = external/nativefiledialog-extended -- url = https://github.com/btzy/nativefiledialog-extended.git -+[submodule "external/nativefiledialog-cmake"] -+ path = external/nativefiledialog-cmake -+ url = https://github.com/Vita3K/nativefiledialog-cmake - [submodule "external/cubeb"] - path = external/cubeb - url = https://github.com/mozilla/cubeb.git -diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt -index d4dcfc94..4cb3e1ee 100644 ---- a/external/CMakeLists.txt -+++ b/external/CMakeLists.txt -@@ -344,11 +344,20 @@ target_compile_definitions(tracy PUBLIC $<$:TRACY_E - # - # target_compile_definitions(tracy PUBLIC TRACY_ENABLE) - --# Use XDG desktop portals on Linux --set(NFD_PORTAL ON) -+# Create alias to prevent the need of multiple changes in case the target name changes -+# Batocera - bring back nativefiledialog -+if(UNIX) -+ find_package(PkgConfig REQUIRED) -+ pkg_check_modules(GTK3 REQUIRED gtk+-3.0) - --# nativefiledialog-extended --add_subdirectory(nativefiledialog-extended) -+ include_directories(${GTK3_INCLUDE_DIRS}) -+ link_directories(${GTK3_LIBRARY_DIRS}) -+ -+ add_definitions(${GTK3_CFLAGS_OTHER}) -+ -+ add_library(nativefiledialog STATIC nativefiledialog-cmake/src/nfd_gtk.c nativefiledialog-cmake/src/nfd_common.c) -+ target_include_directories(nativefiledialog PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/nativefiledialog-cmake/src/include") -+ target_link_libraries(nativefiledialog ${GTK3_LIBRARIES}) -+endif() -+set_property(TARGET nativefiledialog PROPERTY FOLDER externals) - --# Create alias to prevent the need of multiple changes in case the target name changes --add_library(NFDe::NFDe ALIAS nfd) -diff --git a/vita3k/CMakeLists.txt b/vita3k/CMakeLists.txt -index e1b27dfd..25d8f88b 100644 ---- a/vita3k/CMakeLists.txt -+++ b/vita3k/CMakeLists.txt -@@ -105,7 +105,6 @@ add_subdirectory(features) - add_subdirectory(glutil) - add_subdirectory(gui) - add_subdirectory(gxm) --add_subdirectory(host) - add_subdirectory(ime) - add_subdirectory(lang) - add_subdirectory(net) -diff --git a/vita3k/dir_doc.cpp b/vita3k/dir_doc.cpp -index b66bbd98..28d5a6f4 100644 ---- a/vita3k/dir_doc.cpp -+++ b/vita3k/dir_doc.cpp -@@ -115,12 +115,6 @@ - * @brief Vita's GXM low-level graphics API translation layer - */ - --/** -- * @dir vita3k/host -- * -- * @brief Host operating system abstraction layer -- */ -- - /** - * @dir vita3k/io - * -diff --git a/vita3k/gui/CMakeLists.txt b/vita3k/gui/CMakeLists.txt -index ef7de553..811ee661 100644 ---- a/vita3k/gui/CMakeLists.txt -+++ b/vita3k/gui/CMakeLists.txt -@@ -51,5 +51,5 @@ add_library( - - target_include_directories(gui PUBLIC include ${CMAKE_SOURCE_DIR}/vita3k) - target_link_libraries(gui PUBLIC app compat config dialog emuenv https ime imgui glutil lang regmgr np) --target_link_libraries(gui PRIVATE audio ctrl kernel miniz psvpfsparser pugixml::pugixml stb renderer packages sdl2 touch vkutil host::dialog) -+target_link_libraries(gui PRIVATE audio ctrl kernel miniz psvpfsparser pugixml::pugixml stb renderer packages sdl2 touch vkutil nativefiledialog) - target_link_libraries(gui PUBLIC tracy) -diff --git a/vita3k/gui/src/archive_install_dialog.cpp b/vita3k/gui/src/archive_install_dialog.cpp -index 67832991..5d724637 100644 ---- a/vita3k/gui/src/archive_install_dialog.cpp -+++ b/vita3k/gui/src/archive_install_dialog.cpp -@@ -19,7 +19,7 @@ - #include "private.h" - - #include --#include -+#include - #include - - #include -@@ -32,7 +33,7 @@ static bool delete_archive_file; - static std::string state, type, title; - static std::map> contents_archives; - static std::vector invalid_archives; --static std::filesystem::path archive_path = ""; -+static nfdchar_t *archive_path; - static float global_progress = 0.f; - static float archives_count = 0.f; - -@@ -104,20 +104,12 @@ void draw_archive_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - gui.file_menu.archive_install_dialog = false; - } else { - if (state.empty()) { -- host::dialog::filesystem::Result result = host::dialog::filesystem::Result::CANCEL; -- if (type == "file") { -- // Set file filters for the file picking dialog -- std::vector file_filters = { -- { "PlayStation Vita commercial software package (NoNpDrm/FAGDec) / PlayStation Vita homebrew software package", { "zip", "vpk" } }, -- { "PlayStation Vita commercial software package (NoNpDrm/FAGDec)", { "zip" } }, -- { "PlayStation Vita homebrew software package", { "vpk" } }, -- }; -- // Call file picking dialog from the native file browser -- result = host::dialog::filesystem::open_file(archive_path, file_filters); -- } else { -- result = host::dialog::filesystem::pick_folder(archive_path); -- } -- if (result == host::dialog::filesystem::Result::SUCCESS) { -+ nfdresult_t result = NFD_CANCEL; -+ if (type == "file") -+ result = NFD_OpenDialog("zip,vpk", nullptr, &archive_path); -+ else -+ result = NFD_PickFolder(nullptr, &archive_path); -+ if (result == NFD_OKAY) { - state = "install"; - } else - type.clear(); -@@ -133,7 +127,7 @@ void draw_archive_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - } else - invalid_archives.push_back(archive_path); - }; -- const auto contents_path = fs::path(archive_path.wstring()); -+ const auto contents_path = fs::path(string_utils::utf_to_wide(archive_path)); - if (type == "directory") { - const auto archives_path = get_path_of_archives(contents_path); - archives_count = float(archives_path.size()); -@@ -264,7 +258,7 @@ void draw_archive_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - for (const auto archive : invalid_archives) - fs::remove(archive); - } -- archive_path = ""; -+ archive_path = nullptr; - gui.file_menu.archive_install_dialog = false; - delete_archive_file = false; - contents_archives.clear(); -diff --git a/vita3k/gui/src/firmware_install_dialog.cpp b/vita3k/gui/src/firmware_install_dialog.cpp -index 1b7208e6..f29150f7 100644 ---- a/vita3k/gui/src/firmware_install_dialog.cpp -+++ b/vita3k/gui/src/firmware_install_dialog.cpp -@@ -19,18 +19,19 @@ - - #include - #include --#include - #include - #include - #include - -+#include -+ - #include - - namespace gui { - - std::string fw_version; - bool delete_pup_file; --std::filesystem::path pup_path = ""; -+nfdchar_t *pup_path; - - static void get_firmware_version(EmuEnvState &emuenv) { - fs::ifstream versionFile(emuenv.pref_path + L"/PUP_DEC/PUP/version.txt"); -@@ -46,7 +46,7 @@ static void get_firmware_version(EmuEnvState &emuenv) { - } - - void draw_firmware_install_dialog(GuiState &gui, EmuEnvState &emuenv) { -- host::dialog::filesystem::Result result = host::dialog::filesystem::Result::CANCEL; -+ nfdresult_t result = NFD_CANCEL; - - static std::mutex install_mutex; - static bool draw_file_dialog = true; -@@ -62,23 +62,23 @@ void draw_firmware_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - std::lock_guard lock(install_mutex); - - if (draw_file_dialog) { -- result = host::dialog::filesystem::open_file(pup_path, { { "PlayStation Vita Firmware Package", { "PUP" } } }); -+ result = NFD_OpenDialog("PUP", nullptr, &pup_path); - draw_file_dialog = false; - finished_installing = false; - -- if (result == host::dialog::filesystem::Result::SUCCESS) { -+ if (result == NFD_OKAY) { - std::thread installation([&emuenv]() { -- install_pup(emuenv.pref_path, pup_path.string(), progress_callback); -+ install_pup(emuenv.pref_path, pup_path, progress_callback); - std::lock_guard lock(install_mutex); - finished_installing = true; - get_firmware_version(emuenv); - }); - installation.detach(); -- } else if (result == host::dialog::filesystem::Result::CANCEL) { -+ } else if (result == NFD_CANCEL) { - gui.file_menu.firmware_install_dialog = false; - draw_file_dialog = true; - } else { -- LOG_ERROR("Error initializing file dialog: {}", host::dialog::filesystem::get_error()); -+ LOG_ERROR("Error initializing file dialog: {}", NFD_GetError()); - gui.file_menu.firmware_install_dialog = false; - draw_file_dialog = true; - } -@@ -117,7 +118,7 @@ void draw_firmware_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - ImGui::SetCursorPosX(ImGui::GetWindowWidth() / 2 - 30); - if (ImGui::Button("OK", BUTTON_SIZE)) { - if (delete_pup_file) { -- fs::remove(fs::path(pup_path.wstring())); -+ fs::remove(fs::path(string_utils::utf_to_wide(pup_path))); - delete_pup_file = false; - } - if (emuenv.cfg.initial_setup) -diff --git a/vita3k/gui/src/initial_setup.cpp b/vita3k/gui/src/initial_setup.cpp -index 0bbe3548..e327c6cb 100644 ---- a/vita3k/gui/src/initial_setup.cpp -+++ b/vita3k/gui/src/initial_setup.cpp -@@ -19,11 +19,12 @@ - - #include - #include --#include - #include - - #include - -+#include -+ - namespace gui { - - enum InitialSetup { -@@ -121,12 +122,12 @@ void draw_initial_setup(GuiState &gui, EmuEnvState &emuenv) { - ImGui::TextWrapped("%s", emuenv.cfg.pref_path.c_str()); - ImGui::SetCursorPos(!is_default_path ? ImVec2((WINDOW_SIZE.x / 2.f) - BIG_BUTTON_SIZE.x - (20.f * SCALE.x), BIG_BUTTON_POS.y) : BIG_BUTTON_POS); - if (ImGui::Button("Change Emulator Path", BIG_BUTTON_SIZE)) { -- std::filesystem::path emulator_path = ""; -- host::dialog::filesystem::Result result = host::dialog::filesystem::pick_folder(emulator_path); -+ nfdchar_t *emulator_path = nullptr; -+ nfdresult_t result = NFD_PickFolder(nullptr, &emulator_path); - -- if ((result == host::dialog::filesystem::Result::SUCCESS) && (emulator_path.wstring() != emuenv.pref_path)) { -- emuenv.pref_path = emulator_path.wstring() + L'/'; -- emuenv.cfg.pref_path = emulator_path.string(); -+ if ((result == NFD_OKAY) && (string_utils::utf_to_wide(emulator_path) != emuenv.pref_path)) { -+ emuenv.pref_path = string_utils::utf_to_wide(emulator_path) + L'/'; -+ emuenv.cfg.pref_path = emulator_path; - } - } - if (!is_default_path) { -diff --git a/vita3k/gui/src/license_install_dialog.cpp b/vita3k/gui/src/license_install_dialog.cpp -index beabedb8..7eb910a5 100644 ---- a/vita3k/gui/src/license_install_dialog.cpp -+++ b/vita3k/gui/src/license_install_dialog.cpp -@@ -17,15 +17,15 @@ - - #include "private.h" - --#include - #include - #include - #include -+#include - - namespace gui { - - static std::string state, title, zRIF; --std::filesystem::path license_path = ""; -+nfdchar_t *license_path; - static bool delete_license_file; - - void draw_license_install_dialog(GuiState &gui, EmuEnvState &emuenv) { -@@ -67,10 +67,10 @@ void draw_license_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - if (ImGui::Button(common["cancel"].c_str(), BUTTON_SIZE)) - gui.file_menu.license_install_dialog = false; - } else if (state == "license") { -- host::dialog::filesystem::Result result = host::dialog::filesystem::Result::CANCEL; -- result = host::dialog::filesystem::open_file(license_path, { { "PlayStation Vita software license file", { "bin", "rif" } } }); -- if (result == host::dialog::filesystem::Result::SUCCESS) { -- if (copy_license(emuenv, fs::path(license_path.wstring()))) -+ nfdresult_t result = NFD_CANCEL; -+ result = NFD_OpenDialog("bin,rif", nullptr, &license_path); -+ if (result == NFD_OKAY) { -+ if (copy_license(emuenv, license_path)) - state = "success"; - else - state = "fail"; -@@ -105,12 +105,12 @@ void draw_license_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - ImGui::Spacing(); - ImGui::Separator(); - ImGui::Spacing(); -- if (license_path != "") -+ if (license_path) - ImGui::Checkbox(license["delete_bin_rif"].c_str(), &delete_license_file); - ImGui::SetCursorPos(ImVec2(POS_BUTTON, ImGui::GetWindowSize().y - BUTTON_SIZE.y - (20.f * SCALE.y))); - if (ImGui::Button(common["ok"].c_str(), BUTTON_SIZE)) { - if (delete_license_file) { -- fs::remove(fs::path(license_path.wstring())); -+ fs::remove(fs::path(string_utils::utf_to_wide(std::string(license_path)))); - delete_license_file = false; - } - license_path = nullptr; -diff --git a/vita3k/gui/src/pkg_install_dialog.cpp b/vita3k/gui/src/pkg_install_dialog.cpp -index 75c11214..46fcf6f8 100644 ---- a/vita3k/gui/src/pkg_install_dialog.cpp -+++ b/vita3k/gui/src/pkg_install_dialog.cpp -@@ -18,7 +18,6 @@ - #include "private.h" - - #include --#include - #include - #include - #include -@@ -25,19 +25,18 @@ - #include - #include - #include -- -+#include - #include - - namespace gui { - --static std::filesystem::path pkg_path = ""; --static std::filesystem::path license_path = ""; -+static nfdchar_t *pkg_path, *license_path; - static std::string state, title, zRIF; - static bool draw_file_dialog = true; - static bool delete_pkg_file, delete_license_file; - - void draw_pkg_install_dialog(GuiState &gui, EmuEnvState &emuenv) { -- host::dialog::filesystem::Result result = host::dialog::filesystem::Result::CANCEL; -+ nfdresult_t result = NFD_CANCEL; - static std::atomic progress(0); - static std::mutex install_mutex; - static const auto progress_callback = [&](float updated_progress) { -@@ -53,15 +53,15 @@ void draw_pkg_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - const auto BUTTON_SIZE = ImVec2(160.f * SCALE.x, 45.f * SCALE.y); - - if (draw_file_dialog) { -- result = host::dialog::filesystem::open_file(pkg_path, { { "PlayStation Store Downloaded Package", { "pkg" } } }); -+ result = NFD_OpenDialog("pkg", nullptr, &pkg_path); - draw_file_dialog = false; -- if (result == host::dialog::filesystem::Result::SUCCESS) -+ if (result == NFD_OKAY) - ImGui::OpenPopup("install"); -- else if (result == host::dialog::filesystem::Result::CANCEL) { -+ else if (result == NFD_CANCEL) { - gui.file_menu.pkg_install_dialog = false; - draw_file_dialog = true; - } else { -- LOG_ERROR("Error initializing file dialog: {}", host::dialog::filesystem::get_error()); -+ LOG_ERROR("Error initializing file dialog: {}", NFD_GetError()); - gui.file_menu.pkg_install_dialog = false; - draw_file_dialog = true; - } -@@ -97,9 +96,9 @@ void draw_pkg_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - draw_file_dialog = true; - } - } else if (state == "license") { -- result = host::dialog::filesystem::open_file(license_path, { { "PlayStation Vita software license file", { "bin", "rif" } } }); -- if (result == host::dialog::filesystem::Result::SUCCESS) { -- fs::ifstream binfile(license_path.wstring(), std::ios::in | std::ios::binary | std::ios::ate); -+ result = NFD_OpenDialog("bin,rif", nullptr, &license_path); -+ if (result == NFD_OKAY) { -+ fs::ifstream binfile(string_utils::utf_to_wide(std::string(license_path)), std::ios::in | std::ios::binary | std::ios::ate); - zRIF = rif2zrif(binfile); - state = "install"; - } else -@@ -125,7 +125,7 @@ void draw_pkg_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - state = "install"; - } else if (state == "install") { - std::thread installation([&emuenv]() { -- if (install_pkg(pkg_path.string(), emuenv, zRIF, progress_callback)) { -+ if (install_pkg(std::string(pkg_path), emuenv, zRIF, progress_callback)) { - std::lock_guard lock(install_mutex); - state = "success"; - } else { -@@ -143,17 +142,17 @@ void draw_pkg_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - ImGui::Separator(); - ImGui::Spacing(); - ImGui::Checkbox(lang["delete_pkg"].c_str(), &delete_pkg_file); -- if (license_path != "") -+ if (license_path) - ImGui::Checkbox(lang["delete_bin_rif"].c_str(), &delete_license_file); - ImGui::Spacing(); - ImGui::SetCursorPos(ImVec2(POS_BUTTON, ImGui::GetWindowSize().y - BUTTON_SIZE.y - (20.f * SCALE.y))); - if (ImGui::Button(common["ok"].c_str(), BUTTON_SIZE)) { - if (delete_pkg_file) { -- fs::remove(fs::path(pkg_path.wstring())); -+ fs::remove(fs::path(string_utils::utf_to_wide(std::string(pkg_path)))); - delete_pkg_file = false; - } - if (delete_license_file) { -- fs::remove(fs::path(license_path.wstring())); -+ fs::remove(fs::path(string_utils::utf_to_wide(std::string(pkg_path)))); - delete_license_file = false; - } - if ((emuenv.app_info.app_category.find("gd") != std::string::npos) || (emuenv.app_info.app_category.find("gp") != std::string::npos)) { -@@ -160,8 +160,8 @@ void draw_pkg_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - save_apps_cache(gui, emuenv); - } - update_notice_info(gui, emuenv, "content"); -- pkg_path = ""; -- license_path = ""; -+ pkg_path = nullptr; -+ license_path = nullptr; - gui.file_menu.pkg_install_dialog = false; - draw_file_dialog = true; - state.clear(); -@@ -175,7 +175,7 @@ void draw_pkg_install_dialog(GuiState &gui, EmuEnvState &emuenv) { - ImGui::SetCursorPos(ImVec2(POS_BUTTON, ImGui::GetWindowSize().y - BUTTON_SIZE.y - (20.f * SCALE.y))); - if (ImGui::Button("OK", BUTTON_SIZE)) { - gui.file_menu.pkg_install_dialog = false; -- pkg_path = ""; -+ pkg_path = nullptr; - draw_file_dialog = true; - work_path = ""; - state.clear(); -diff --git a/vita3k/gui/src/settings.cpp b/vita3k/gui/src/settings.cpp -index 72ffabdb..7a6f4265 100644 ---- a/vita3k/gui/src/settings.cpp -+++ b/vita3k/gui/src/settings.cpp -@@ -20,7 +20,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -29,6 +28,7 @@ - #include - #include - -+#include - #include - #include - -@@ -581,11 +581,11 @@ void draw_settings(GuiState &gui, EmuEnvState &emuenv) { - sub_menu.clear(); - } - } else if (sub_menu == "image") { -- std::filesystem::path image_path = ""; -- host::dialog::filesystem::Result result = host::dialog::filesystem::open_file(image_path, { { "Image file", { "bmp", "gif", "jpg", "png", "tif" } } }); -+ nfdchar_t *image_path; -+ nfdresult_t result = NFD_OpenDialog("bmp,gif,jpg,png,tif", nullptr, &image_path); - -- if ((result == host::dialog::filesystem::Result::SUCCESS) && init_user_start_background(gui, image_path.string())) { -- gui.users[emuenv.io.user_id].start_path = image_path.string(); -+ if ((result == NFD_OKAY) && init_user_start_background(gui, image_path)) { -+ gui.users[emuenv.io.user_id].start_path = image_path; - gui.users[emuenv.io.user_id].start_type = "image"; - save_user(gui, emuenv, emuenv.io.user_id); - } -@@ -641,12 +641,12 @@ void draw_settings(GuiState &gui, EmuEnvState &emuenv) { - ImGui::NextColumn(); - } - if (ImGui::Selectable(theme_background.home_screen_backgrounds["add_background"].c_str(), false, ImGuiSelectableFlags_None, SIZE_PACKAGE)) { -- std::filesystem::path background_path = ""; -- host::dialog::filesystem::Result result = host::dialog::filesystem::open_file(background_path, { { "Image file", { "bmp", "gif", "jpg", "png", "tif" } } }); -+ nfdchar_t *background_path; -+ nfdresult_t result = NFD_OpenDialog("bmp,gif,jpg,png,tif", nullptr, &background_path); - -- if ((result == host::dialog::filesystem::Result::SUCCESS) && (!gui.user_backgrounds.contains(background_path.string()))) { -- if (init_user_background(gui, emuenv, background_path.string())) { -- gui.users[emuenv.io.user_id].backgrounds.push_back(background_path.string()); -+ if ((result == NFD_OKAY) && (gui.user_backgrounds.find(background_path) == gui.user_backgrounds.end())) { -+ if (init_user_background(gui, emuenv, background_path)) { -+ gui.users[emuenv.io.user_id].backgrounds.push_back(background_path); - gui.users[emuenv.io.user_id].use_theme_bg = false; - save_user(gui, emuenv, emuenv.io.user_id); - } -diff --git a/vita3k/gui/src/settings_dialog.cpp b/vita3k/gui/src/settings_dialog.cpp -index 37c05f1c..73dc08c3 100644 ---- a/vita3k/gui/src/settings_dialog.cpp -+++ b/vita3k/gui/src/settings_dialog.cpp -@@ -21,7 +21,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -43,6 +42,7 @@ - #include - - #include -+#include - #include - #include - -@@ -105,12 +105,12 @@ static void reset_emulator(GuiState &gui, EmuEnvState &emuenv) { - } - - static void change_emulator_path(GuiState &gui, EmuEnvState &emuenv) { -- std::filesystem::path emulator_path = ""; -- host::dialog::filesystem::Result result = host::dialog::filesystem::pick_folder(emulator_path); -+ nfdchar_t *emulator_path = nullptr; -+ nfdresult_t result = NFD_PickFolder(nullptr, &emulator_path); - -- if (result == host::dialog::filesystem::Result::SUCCESS && emulator_path.wstring() != emuenv.pref_path) { -+ if (result == NFD_OKAY && string_utils::utf_to_wide(emulator_path) != emuenv.pref_path) { - // Refresh the working paths -- emuenv.pref_path = emulator_path.wstring() + L'/'; -+ emuenv.pref_path = string_utils::utf_to_wide(emulator_path) + L'/'; - - // TODO: Move app old to new path - reset_emulator(gui, emuenv); -diff --git a/vita3k/gui/src/trophy_collection.cpp b/vita3k/gui/src/trophy_collection.cpp -index 85854dc3..97193c7d 100644 ---- a/vita3k/gui/src/trophy_collection.cpp -+++ b/vita3k/gui/src/trophy_collection.cpp -@@ -26,6 +26,7 @@ - #include - #include - -+#include - #include - #include - -diff --git a/vita3k/gui/src/user_management.cpp b/vita3k/gui/src/user_management.cpp -index e1d23bfb..f0b8a935 100644 ---- a/vita3k/gui/src/user_management.cpp -+++ b/vita3k/gui/src/user_management.cpp -@@ -24,13 +24,13 @@ - - #include - #include --#include - #include - #include - - #include - #include - -+#include - #include - #include - -@@ -373,11 +373,11 @@ void draw_user_management(GuiState &gui, EmuEnvState &emuenv) { - const auto CHANGE_AVATAR_BTN_SIZE = ImGui::CalcTextSize(lang["change_avatar"].c_str()).x + (ImGui::GetStyle().FramePadding.x * 2.f); - ImGui::SetCursorPos(ImVec2(AVATAR_POS.x + (AVATAR_SIZE.x / 2.f) - (CHANGE_AVATAR_BTN_SIZE / 2.f), AVATAR_POS.y + AVATAR_SIZE.y)); - if (ImGui::Button(lang["choose_avatar"].c_str(), CHANGE_AVATAR_BTN_SIZE)) { -- std::filesystem::path avatar_path = ""; -- host::dialog::filesystem::Result result = host::dialog::filesystem::open_file(avatar_path, { { "Image file", { "bmp", "gif", "jpg", "png", "tif" } } }); -+ nfdchar_t *avatar_path; -+ nfdresult_t result = NFD_OpenDialog("bmp,gif,jpg,png,tif", nullptr, &avatar_path); - -- if ((result == host::dialog::filesystem::Result::SUCCESS) && init_avatar(gui, emuenv, "temp", avatar_path.string())) -- temp.avatar = avatar_path.string(); -+ if ((result == NFD_OKAY) && init_avatar(gui, emuenv, "temp", avatar_path)) -+ temp.avatar = avatar_path; - } - ImGui::SetWindowFontScale(0.8f); - const auto INPUT_NAME_SIZE = 330.f * SCALE.x; -diff --git a/vita3k/host/CMakeLists.txt b/vita3k/host/CMakeLists.txt -deleted file mode 100644 -index f9d89128..00000000 ---- a/vita3k/host/CMakeLists.txt -+++ /dev/null -@@ -1 +0,0 @@ --add_subdirectory(dialog) -diff --git a/vita3k/host/dialog/CMakeLists.txt b/vita3k/host/dialog/CMakeLists.txt -deleted file mode 100644 -index d577a152..00000000 ---- a/vita3k/host/dialog/CMakeLists.txt -+++ /dev/null -@@ -1,11 +0,0 @@ --add_library(host_dialog STATIC -- src/filesystem.cpp --) -- --# Create alias for more friendly naming and avoid conflicts --# in global CMake scope --add_library(host::dialog ALIAS host_dialog) -- --target_include_directories(host_dialog PUBLIC include) -- --target_link_libraries(host_dialog PRIVATE NFDe::NFDe) diff --git a/packages/emulators/standalone/vita3k-sa/patches/004-fix-link-error.patch b/packages/emulators/standalone/vita3k-sa/patches/004-fix-link-error.patch index ce6d21857f..be1ff84d8c 100644 --- a/packages/emulators/standalone/vita3k-sa/patches/004-fix-link-error.patch +++ b/packages/emulators/standalone/vita3k-sa/patches/004-fix-link-error.patch @@ -1,12 +1,15 @@ -diff --git a/vita3k/https/CMakeLists.txt b/vita3k/https/CMakeLists.txt -index f64456bd..e9555080 100644 ---- a/vita3k/https/CMakeLists.txt -+++ b/vita3k/https/CMakeLists.txt -@@ -6,5 +6,6 @@ add_library( - ) - - target_include_directories(https PUBLIC include) --target_include_directories(https PRIVATE ${OPENSSL_INCLUDE_DIR}) -+target_include_directories(https PRIVATE crypto ssl) - target_link_libraries(https PUBLIC util) -+target_link_libraries(https PRIVATE crypto ssl) +diff --git a/vita3k/CMakeLists.txt b/vita3k/CMakeLists.txt +index 04177f04..4adb1e0b 100644 +--- a/vita3k/CMakeLists.txt ++++ b/vita3k/CMakeLists.txt +@@ -136,10 +136,6 @@ if(USE_DISCORD_RICH_PRESENCE) + target_link_libraries(vita3k PRIVATE discord-rpc) + endif() + +-if(LINUX) +- target_link_libraries(vita3k PRIVATE -static-libgcc -static-libstdc++) +-endif() +- + set_target_properties(vita3k PROPERTIES OUTPUT_NAME Vita3K + ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" From 9bdc44cfa46a23d47410f69263018e5cdc6fce84 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 7 Feb 2024 15:50:50 +0000 Subject: [PATCH 121/167] Fix missing directory that breaks configuration. --- .../emulators/standalone/vita3k-sa/scripts/start_vita3k.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/emulators/standalone/vita3k-sa/scripts/start_vita3k.sh b/packages/emulators/standalone/vita3k-sa/scripts/start_vita3k.sh index 415e268cf6..7f0f3c88ab 100644 --- a/packages/emulators/standalone/vita3k-sa/scripts/start_vita3k.sh +++ b/packages/emulators/standalone/vita3k-sa/scripts/start_vita3k.sh @@ -9,7 +9,12 @@ jslisten set "-9 Vita3K" #Check if vita3k folder exists in /storage/.config/vita3k if [ ! -d "/storage/.config/vita3k" ]; then mkdir -p "/storage/.config/vita3k" - cp -r "/usr/config/vita3k" "/storage/.config/" + cp -r "/usr/config/vita3k" "/storage/.config/" +fi + +if [ ! -d "/storage/.config/vita3k/lang/user" ] +then + mkdir -p "/storage/.config/vita3k/lang/user" fi #Check if vita3k folder exists in /storage/roms/psvita From 5b4c938b9ca78dc40f1107bc020d4787213d1f08 Mon Sep 17 00:00:00 2001 From: sydarn Date: Wed, 7 Feb 2024 17:42:47 +0100 Subject: [PATCH 122/167] rk3566: bump linux to 6.8rc3 --- projects/Rockchip/packages/linux/package.mk | 6 +- ...l-Add-helper-for-reading-DT-rotation.patch | 103 - ...lit-out-orientation-quirk-detection-.patch | 171 -- ...-panel-simple-Read-panel-orientation.patch | 55 - ...tch => 001-fix-anbernic-model-names.patch} | 0 .../patches/RK3566/003-v4-add-rk2023.patch | 1495 --------------- .../linux/patches/RK3566/004-add-rg351v.patch | 715 ------- .../patches/RK3566/005-set-mac-address.patch | 15 - .../RK3566/006-v2-add-powkiddy-x55.patch | 1657 ----------------- 9 files changed, 5 insertions(+), 4212 deletions(-) delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566/0001-drm-panel-Add-helper-for-reading-DT-rotation.patch delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566/0002-drm-connector-Split-out-orientation-quirk-detection-.patch delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566/0003-drm-panel-simple-Read-panel-orientation.patch rename projects/Rockchip/packages/linux/patches/RK3566/{001-fix-model-names.patch => 001-fix-anbernic-model-names.patch} (100%) delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566/003-v4-add-rk2023.patch delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566/004-add-rg351v.patch delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566/005-set-mac-address.patch delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566/006-v2-add-powkiddy-x55.patch diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index a902e431fc..73e8b23122 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -23,10 +23,14 @@ case ${DEVICE} in GET_HANDLER_SUPPORT="git" PKG_GIT_CLONE_BRANCH="main" ;; - RK3399|RK3326|RK356*|RK-ARMV8-A) + RK3399|RK3326|RK-ARMV8-A) PKG_VERSION="6.7.4" PKG_URL="https://www.kernel.org/pub/linux/kernel/v6.x/${PKG_NAME}-${PKG_VERSION}.tar.xz" ;; + RK356*) + PKG_VERSION="6.8-rc3" + PKG_URL="https://git.kernel.org/torvalds/t/${PKG_NAME}-${PKG_VERSION}.tar.gz" + ;; esac PKG_KERNEL_CFG_FILE=$(kernel_config_path) || die diff --git a/projects/Rockchip/packages/linux/patches/RK3566/0001-drm-panel-Add-helper-for-reading-DT-rotation.patch b/projects/Rockchip/packages/linux/patches/RK3566/0001-drm-panel-Add-helper-for-reading-DT-rotation.patch deleted file mode 100644 index b0cc4f5e31..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566/0001-drm-panel-Add-helper-for-reading-DT-rotation.patch +++ /dev/null @@ -1,103 +0,0 @@ -From c74b76bb8a4da44a9f8cf06f4aba9f3334e1a148 Mon Sep 17 00:00:00 2001 -From: Derek Basehore -Date: Tue, 9 Jul 2019 19:16:56 -0700 -Subject: [PATCH 1/4] drm/panel: Add helper for reading DT rotation - -This adds a helper function for reading the rotation (panel -orientation) from the device tree. - -Signed-off-by: Derek Basehore ---- - drivers/gpu/drm/drm_panel.c | 43 +++++++++++++++++++++++++++++++++++++ - include/drm/drm_panel.h | 9 ++++++++ - 2 files changed, 52 insertions(+) - -diff --git a/drivers/gpu/drm/drm_panel.c b/drivers/gpu/drm/drm_panel.c -index d37b83f40..b2d8fa2c3 100644 ---- a/drivers/gpu/drm/drm_panel.c -+++ b/drivers/gpu/drm/drm_panel.c -@@ -168,6 +168,49 @@ struct drm_panel *of_drm_find_panel(const struct device_node *np) - return ERR_PTR(-EPROBE_DEFER); - } - EXPORT_SYMBOL(of_drm_find_panel); -+ -+/** -+ * of_drm_get_panel_orientation - look up the orientation of the panel through -+ * the "rotation" binding from a device tree node -+ * @np: device tree node of the panel -+ * @orientation: orientation enum to be filled in -+ * -+ * Looks up the rotation of a panel in the device tree. The orientation of the -+ * panel is expressed as a property name "rotation" in the device tree. The -+ * rotation in the device tree is counter clockwise. -+ * -+ * Return: 0 when a valid rotation value (0, 90, 180, or 270) is read or the -+ * rotation property doesn't exist. -EERROR otherwise. -+ */ -+int of_drm_get_panel_orientation(const struct device_node *np, -+ enum drm_panel_orientation *orientation) -+{ -+ int rotation, ret; -+ -+ ret = of_property_read_u32(np, "rotation", &rotation); -+ if (ret == -EINVAL) { -+ /* Don't return an error if there's no rotation property. */ -+ *orientation = DRM_MODE_PANEL_ORIENTATION_UNKNOWN; -+ return 0; -+ } -+ -+ if (ret < 0) -+ return ret; -+ -+ if (rotation == 0) -+ *orientation = DRM_MODE_PANEL_ORIENTATION_NORMAL; -+ else if (rotation == 90) -+ *orientation = DRM_MODE_PANEL_ORIENTATION_LEFT_UP; -+ else if (rotation == 180) -+ *orientation = DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP; -+ else if (rotation == 270) -+ *orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP; -+ else -+ return -EINVAL; -+ -+ return 0; -+} -+EXPORT_SYMBOL(of_drm_get_panel_orientation); - #endif - - int drm_panel_notifier_register(struct drm_panel *panel, -diff --git a/include/drm/drm_panel.h b/include/drm/drm_panel.h -index 6aab8fefc..c58c4c19f 100644 ---- a/include/drm/drm_panel.h -+++ b/include/drm/drm_panel.h -@@ -53,6 +53,8 @@ struct drm_device; - struct drm_panel; - struct display_timing; - -+enum drm_panel_orientation; -+ - /** - * @loader_protect: protect loader logo panel's power - * struct drm_panel_funcs - perform operations on a given panel -@@ -240,11 +242,18 @@ int drm_panel_notifier_call_chain(struct drm_panel *panel, - - #if defined(CONFIG_OF) && defined(CONFIG_DRM_PANEL) - struct drm_panel *of_drm_find_panel(const struct device_node *np); -+int of_drm_get_panel_orientation(const struct device_node *np, -+ enum drm_panel_orientation *orientation); - #else - static inline struct drm_panel *of_drm_find_panel(const struct device_node *np) - { - return ERR_PTR(-ENODEV); - } -+static inline int of_drm_get_panel_orientation(const struct device_node *np, -+ enum drm_panel_orientation *orientation) -+{ -+ return -ENODEV; -+} - #endif - - #endif --- -2.34.1 - diff --git a/projects/Rockchip/packages/linux/patches/RK3566/0002-drm-connector-Split-out-orientation-quirk-detection-.patch b/projects/Rockchip/packages/linux/patches/RK3566/0002-drm-connector-Split-out-orientation-quirk-detection-.patch deleted file mode 100644 index 23f41607b7..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566/0002-drm-connector-Split-out-orientation-quirk-detection-.patch +++ /dev/null @@ -1,171 +0,0 @@ -From b76306d4adb2e169f8425fb417de565d555fcf22 Mon Sep 17 00:00:00 2001 -From: Derek Basehore -Date: Sun, 5 Jan 2020 16:51:19 +0100 -Subject: [PATCH 2/4] drm/connector: Split out orientation quirk detection (v2) - -Not every platform needs quirk detection for panel orientation, so -split the drm_connector_init_panel_orientation_property into two -functions. One for platforms without the need for quirks, and the -other for platforms that need quirks. - -Hans de Goede (changes in v2): - -Rename the function from drm_connector_init_panel_orientation_property -to drm_connector_set_panel_orientation[_with_quirk] and pass in the -panel-orientation to set. - -Beside the rename, also make the function set the passed in value -only once, if the value was set before (to a value other then -DRM_MODE_PANEL_ORIENTATION_UNKNOWN) make any further set calls a no-op. - -This change is preparation for allowing the user to override the -panel-orientation for any connector from the kernel commandline. -When the panel-orientation is overridden this way, then we must ignore -the panel-orientation detection done by the driver. - -Reviewed-by: Rodrigo Vivi -Signed-off-by: Derek Basehore -Signed-off-by: Hans de Goede -Acked-by: Jani Nikula -Link: https://patchwork.freedesktop.org/patch/msgid/20200105155120.96466-1-hdegoede@redhat.com ---- - drivers/gpu/drm/drm_connector.c | 74 ++++++++++++++++++++++++--------- - include/drm/drm_connector.h | 9 +++- - 2 files changed, 61 insertions(+), 22 deletions(-) - -diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c -index 8a2a1965e..77a2087bf 100644 ---- a/drivers/gpu/drm/drm_connector.c -+++ b/drivers/gpu/drm/drm_connector.c -@@ -996,7 +996,8 @@ static const struct drm_prop_enum_list dp_colorspaces[] = { - * coordinates, so if userspace rotates the picture to adjust for - * the orientation it must also apply the same transformation to the - * touchscreen input coordinates. This property is initialized by calling -- * drm_connector_init_panel_orientation_property(). -+ * drm_connector_set_panel_orientation() or -+ * drm_connector_set_panel_orientation_with_quirk() - * - * scaling mode: - * This property defines how a non-native mode is upscaled to the native -@@ -1713,38 +1714,41 @@ void drm_connector_set_link_status_property(struct drm_connector *connector, - EXPORT_SYMBOL(drm_connector_set_link_status_property); - - /** -- * drm_connector_init_panel_orientation_property - -- * initialize the connecters panel_orientation property -- * @connector: connector for which to init the panel-orientation property. -- * @width: width in pixels of the panel, used for panel quirk detection -- * @height: height in pixels of the panel, used for panel quirk detection -+ * drm_connector_set_panel_orientation - sets the connecter's panel_orientation -+ * @connector: connector for which to set the panel-orientation property. -+ * @panel_orientation: drm_panel_orientation value to set -+ * -+ * This function sets the connector's panel_orientation and attaches -+ * a "panel orientation" property to the connector. - * -- * This function should only be called for built-in panels, after setting -- * connector->display_info.panel_orientation first (if known). -+ * Calling this function on a connector where the panel_orientation has -+ * already been set is a no-op (e.g. the orientation has been overridden with -+ * a kernel commandline option). - * -- * This function will check for platform specific (e.g. DMI based) quirks -- * overriding display_info.panel_orientation first, then if panel_orientation -- * is not DRM_MODE_PANEL_ORIENTATION_UNKNOWN it will attach the -- * "panel orientation" property to the connector. -+ * It is allowed to call this function with a panel_orientation of -+ * DRM_MODE_PANEL_ORIENTATION_UNKNOWN, in which case it is a no-op. - * - * Returns: - * Zero on success, negative errno on failure. - */ --int drm_connector_init_panel_orientation_property( -- struct drm_connector *connector, int width, int height) -+int drm_connector_set_panel_orientation( -+ struct drm_connector *connector, -+ enum drm_panel_orientation panel_orientation) - { - struct drm_device *dev = connector->dev; - struct drm_display_info *info = &connector->display_info; - struct drm_property *prop; -- int orientation_quirk; - -- orientation_quirk = drm_get_panel_orientation_quirk(width, height); -- if (orientation_quirk != DRM_MODE_PANEL_ORIENTATION_UNKNOWN) -- info->panel_orientation = orientation_quirk; -+ /* Already set? */ -+ if (info->panel_orientation != DRM_MODE_PANEL_ORIENTATION_UNKNOWN) -+ return 0; - -- if (info->panel_orientation == DRM_MODE_PANEL_ORIENTATION_UNKNOWN) -+ /* Don't attach the property if the orientation is unknown */ -+ if (panel_orientation == DRM_MODE_PANEL_ORIENTATION_UNKNOWN) - return 0; - -+ info->panel_orientation = panel_orientation; -+ - prop = dev->mode_config.panel_orientation_property; - if (!prop) { - prop = drm_property_create_enum(dev, DRM_MODE_PROP_IMMUTABLE, -@@ -1761,7 +1765,37 @@ int drm_connector_init_panel_orientation_property( - info->panel_orientation); - return 0; - } --EXPORT_SYMBOL(drm_connector_init_panel_orientation_property); -+EXPORT_SYMBOL(drm_connector_set_panel_orientation); -+ -+/** -+ * drm_connector_set_panel_orientation_with_quirk - -+ * set the connecter's panel_orientation after checking for quirks -+ * @connector: connector for which to init the panel-orientation property. -+ * @panel_orientation: drm_panel_orientation value to set -+ * @width: width in pixels of the panel, used for panel quirk detection -+ * @height: height in pixels of the panel, used for panel quirk detection -+ * -+ * Like drm_connector_set_panel_orientation(), but with a check for platform -+ * specific (e.g. DMI based) quirks overriding the passed in panel_orientation. -+ * -+ * Returns: -+ * Zero on success, negative errno on failure. -+ */ -+int drm_connector_set_panel_orientation_with_quirk( -+ struct drm_connector *connector, -+ enum drm_panel_orientation panel_orientation, -+ int width, int height) -+{ -+ int orientation_quirk; -+ -+ orientation_quirk = drm_get_panel_orientation_quirk(width, height); -+ if (orientation_quirk != DRM_MODE_PANEL_ORIENTATION_UNKNOWN) -+ panel_orientation = orientation_quirk; -+ -+ return drm_connector_set_panel_orientation(connector, -+ panel_orientation); -+} -+EXPORT_SYMBOL(drm_connector_set_panel_orientation_with_quirk); - - int drm_connector_set_obj_prop(struct drm_mode_object *obj, - struct drm_property *property, -diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h -index 1d81bb31f..44b6c7f85 100644 ---- a/include/drm/drm_connector.h -+++ b/include/drm/drm_connector.h -@@ -1473,8 +1473,13 @@ int drm_connector_update_edid_property(struct drm_connector *connector, - const struct edid *edid); - void drm_connector_set_link_status_property(struct drm_connector *connector, - uint64_t link_status); --int drm_connector_init_panel_orientation_property( -- struct drm_connector *connector, int width, int height); -+int drm_connector_set_panel_orientation( -+ struct drm_connector *connector, -+ enum drm_panel_orientation panel_orientation); -+int drm_connector_set_panel_orientation_with_quirk( -+ struct drm_connector *connector, -+ enum drm_panel_orientation panel_orientation, -+ int width, int height); - - /** - * struct drm_tile_group - Tile group metadata --- -2.34.1 - diff --git a/projects/Rockchip/packages/linux/patches/RK3566/0003-drm-panel-simple-Read-panel-orientation.patch b/projects/Rockchip/packages/linux/patches/RK3566/0003-drm-panel-simple-Read-panel-orientation.patch deleted file mode 100644 index c76a3747d4..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566/0003-drm-panel-simple-Read-panel-orientation.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 953791baf27ea161378af5c78d8db337472507c8 Mon Sep 17 00:00:00 2001 -From: Dmitry Osipenko -Date: Fri, 14 Aug 2020 00:56:09 +0300 -Subject: [PATCH 3/4] drm/panel-simple: Read panel orientation - -The panel orientation needs to parsed from a device-tree and assigned to -the panel's connector in order to make orientation property available to -userspace. That's what this patch does for the panel-simple driver. - -Signed-off-by: Dmitry Osipenko -Signed-off-by: Sam Ravnborg -Link: https://patchwork.freedesktop.org/patch/msgid/20200813215609.28643-5-digetx@gmail.com ---- - drivers/gpu/drm/panel/panel-simple.c | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c -index f41d4e091..f10181b93 100644 ---- a/drivers/gpu/drm/panel/panel-simple.c -+++ b/drivers/gpu/drm/panel/panel-simple.c -@@ -127,6 +127,8 @@ struct panel_simple { - struct gpio_desc *spi_scl_gpio; - struct gpio_desc *spi_cs_gpio; - struct device_node *np_crtc; -+ -+ enum drm_panel_orientation orientation; - }; - - enum rockchip_cmd_type { -@@ -442,6 +444,9 @@ static int panel_simple_get_fixed_modes(struct panel_simple *panel) - if (panel->desc->bus_flags) - connector->display_info.bus_flags = panel->desc->bus_flags; - -+ /* set up connector's "panel orientation" property */ -+ drm_connector_set_panel_orientation(connector, panel->orientation); -+ - return num; - } - -@@ -789,6 +794,12 @@ static int panel_simple_probe(struct device *dev, const struct panel_desc *desc) - return -EPROBE_DEFER; - } - -+ err = of_drm_get_panel_orientation(dev->of_node, &panel->orientation); -+ if (err) { -+ dev_err(dev, "%pOF: failed to get orientation %d\n", dev->of_node, err); -+ return err; -+ } -+ - ddc = of_parse_phandle(dev->of_node, "ddc-i2c-bus", 0); - if (ddc) { - panel->ddc = of_find_i2c_adapter_by_node(ddc); --- -2.34.1 - diff --git a/projects/Rockchip/packages/linux/patches/RK3566/001-fix-model-names.patch b/projects/Rockchip/packages/linux/patches/RK3566/001-fix-anbernic-model-names.patch similarity index 100% rename from projects/Rockchip/packages/linux/patches/RK3566/001-fix-model-names.patch rename to projects/Rockchip/packages/linux/patches/RK3566/001-fix-anbernic-model-names.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566/003-v4-add-rk2023.patch b/projects/Rockchip/packages/linux/patches/RK3566/003-v4-add-rk2023.patch deleted file mode 100644 index 707113aa95..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566/003-v4-add-rk2023.patch +++ /dev/null @@ -1,1495 +0,0 @@ -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, - sebastian.reichel@collabora.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, - heiko@sntech.de, conor+dt@kernel.org, - krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, - Chris Morgan -Subject: [PATCH V4 0/6] rockchip: Add Powkiddy RK2023 -Date: Fri, 17 Nov 2023 14:25:30 -0600 [thread overview] -Message-ID: <20231117202536.1387815-1-macroalpha82@gmail.com> (raw) - -From: Chris Morgan - -Add support for the Powkiddy RK2023, which is extremely similar to -existing Powkiddy RGB30 device. - -Changes since V3: - - Corrected commit subject lines. - -Changes since V2: - - Split "hold panel in reset" to a separate patch for the NV3051D. - - Changed replaced common include to a new Powkiddy specific include - to better reflect the similarity of these two devices (and so as - to not have to delete so many nodes). - -Changes since V1: - - Necessary clock changes have been accepted to mainline, so removed - from this series. - https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git/commit/?id=f1db0865b4628d5e2e85347350c077a71f0629d2 - - Combined Powkiddy RK3566 devices in devicetree documentation. - Dropped ack from binding as this change is vastly different than - the previous update. - - Updated panel driver to hold panel in reset status after unprepare. - -Chris Morgan (6): - dt-bindings: display: panel: Update NewVision NV3051D compatibles - drm/panel: nv3051d: Hold panel in reset for unprepare - nv3051d: Add Powkiddy RK2023 Panel Support - dt-bindings: arm: rockchip: Add Powkiddy RK2023 - arm64: dts: rockchip: Update powkiddy,rgb30 include to rk2023 DTSI - arm: dts: rockchip: Add Powkiddy RK2023 - - .../devicetree/bindings/arm/rockchip.yaml | 6 +- - .../display/panel/newvision,nv3051d.yaml | 2 +- - arch/arm64/boot/dts/rockchip/Makefile | 1 + - .../dts/rockchip/rk3566-powkiddy-rgb30.dts | 154 +-- - .../dts/rockchip/rk3566-powkiddy-rk2023.dts | 38 + - .../dts/rockchip/rk3566-powkiddy-rk2023.dtsi | 875 ++++++++++++++++++ - .../gpu/drm/panel/panel-newvision-nv3051d.c | 57 +- - 7 files changed, 981 insertions(+), 152 deletions(-) - create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts - create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi - --- -2.34.1 -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, - sebastian.reichel@collabora.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, - heiko@sntech.de, conor+dt@kernel.org, - krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, - Chris Morgan , - Krzysztof Kozlowski -Subject: [PATCH V4 1/6] dt-bindings: display: nv3051d: Update NewVision NV3051D compatibles -Date: Fri, 17 Nov 2023 14:25:31 -0600 [thread overview] -Message-ID: <20231117202536.1387815-2-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Update the NewVision NV3051D compatible strings by adding a new panel, -the powkiddy,rk2023-panel, and removing another entry, the -anbernic,rg353v-panel. - -The rk2023-panel is similar to the rg353p-panel but has slightly -different timings so it needs a new string. - -The rg353v-panel is duplicate to the rg353p-panel, so remove it. No -current devices use it and changes to the driver mean it is no longer -valid as a compatible string. - -Signed-off-by: Chris Morgan -Acked-by: Krzysztof Kozlowski ---- - .../devicetree/bindings/display/panel/newvision,nv3051d.yaml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Documentation/devicetree/bindings/display/panel/newvision,nv3051d.yaml b/Documentation/devicetree/bindings/display/panel/newvision,nv3051d.yaml -index cce775a87f87..7a634fbc465e 100644 ---- a/Documentation/devicetree/bindings/display/panel/newvision,nv3051d.yaml -+++ b/Documentation/devicetree/bindings/display/panel/newvision,nv3051d.yaml -@@ -21,7 +21,7 @@ properties: - - enum: - - anbernic,rg351v-panel - - anbernic,rg353p-panel -- - anbernic,rg353v-panel -+ - powkiddy,rk2023-panel - - const: newvision,nv3051d - - reg: true --- -2.34.1 - -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, - sebastian.reichel@collabora.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, - heiko@sntech.de, conor+dt@kernel.org, - krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, - Chris Morgan , - Jessica Zhang -Subject: [PATCH V4 2/6] drm/panel: nv3051d: Hold panel in reset for unprepare -Date: Fri, 17 Nov 2023 14:25:32 -0600 [thread overview] -Message-ID: <20231117202536.1387815-3-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Improve the panel's ability to restore from suspend by holding the -panel in suspend after unprepare. - -Fixes: b1d39f0f4264 ("drm/panel: Add NewVision NV3051D MIPI-DSI LCD panel") -Signed-off-by: Chris Morgan -Reviewed-by: Jessica Zhang ---- - drivers/gpu/drm/panel/panel-newvision-nv3051d.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c -index 79de6c886292..c44c6945662f 100644 ---- a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c -+++ b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c -@@ -261,6 +261,8 @@ static int panel_nv3051d_unprepare(struct drm_panel *panel) - - usleep_range(10000, 15000); - -+ gpiod_set_value_cansleep(ctx->reset_gpio, 1); -+ - regulator_disable(ctx->vdd); - - return 0; --- -2.34.1 - -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, - sebastian.reichel@collabora.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, - heiko@sntech.de, conor+dt@kernel.org, - krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, - Chris Morgan , - Jessica Zhang -Subject: [PATCH V4 3/6] drm/panel: nv3051d: Add Powkiddy RK2023 Panel Support -Date: Fri, 17 Nov 2023 14:25:33 -0600 [thread overview] -Message-ID: <20231117202536.1387815-4-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Refactor the driver to add support for the powkiddy,rk2023-panel -panel. This panel is extremely similar to the rg353p-panel but -requires a smaller vertical back porch and isn't as tolerant of -higher speeds. Note that while all of these panels are identical in -size (70x57) it is possible future panels may not be. - -Tested on my RG351V, RG353P, RG353V, and RK2023. - -Signed-off-by: Chris Morgan -Reviewed-by: Jessica Zhang ---- - .../gpu/drm/panel/panel-newvision-nv3051d.c | 55 +++++++++++++++---- - 1 file changed, 44 insertions(+), 11 deletions(-) - -diff --git a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c -index c44c6945662f..94d89ffd596b 100644 ---- a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c -+++ b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c -@@ -28,6 +28,7 @@ struct nv3051d_panel_info { - unsigned int num_modes; - u16 width_mm, height_mm; - u32 bus_flags; -+ u32 mode_flags; - }; - - struct panel_nv3051d { -@@ -387,15 +388,7 @@ static int panel_nv3051d_probe(struct mipi_dsi_device *dsi) - - dsi->lanes = 4; - dsi->format = MIPI_DSI_FMT_RGB888; -- dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | -- MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET; -- -- /* -- * The panel in the RG351V is identical to the 353P, except it -- * requires MIPI_DSI_CLOCK_NON_CONTINUOUS to operate correctly. -- */ -- if (of_device_is_compatible(dev->of_node, "anbernic,rg351v-panel")) -- dsi->mode_flags |= MIPI_DSI_CLOCK_NON_CONTINUOUS; -+ dsi->mode_flags = ctx->panel_info->mode_flags; - - drm_panel_init(&ctx->panel, &dsi->dev, &panel_nv3051d_funcs, - DRM_MODE_CONNECTOR_DSI); -@@ -483,16 +476,56 @@ static const struct drm_display_mode nv3051d_rgxx3_modes[] = { - }, - }; - --static const struct nv3051d_panel_info nv3051d_rgxx3_info = { -+static const struct drm_display_mode nv3051d_rk2023_modes[] = { -+ { -+ .hdisplay = 640, -+ .hsync_start = 640 + 40, -+ .hsync_end = 640 + 40 + 2, -+ .htotal = 640 + 40 + 2 + 80, -+ .vdisplay = 480, -+ .vsync_start = 480 + 18, -+ .vsync_end = 480 + 18 + 2, -+ .vtotal = 480 + 18 + 2 + 4, -+ .clock = 24150, -+ .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, -+ }, -+}; -+ -+static const struct nv3051d_panel_info nv3051d_rg351v_info = { - .display_modes = nv3051d_rgxx3_modes, - .num_modes = ARRAY_SIZE(nv3051d_rgxx3_modes), - .width_mm = 70, - .height_mm = 57, - .bus_flags = DRM_BUS_FLAG_DE_LOW | DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE, -+ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | -+ MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET | -+ MIPI_DSI_CLOCK_NON_CONTINUOUS, -+}; -+ -+static const struct nv3051d_panel_info nv3051d_rg353p_info = { -+ .display_modes = nv3051d_rgxx3_modes, -+ .num_modes = ARRAY_SIZE(nv3051d_rgxx3_modes), -+ .width_mm = 70, -+ .height_mm = 57, -+ .bus_flags = DRM_BUS_FLAG_DE_LOW | DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE, -+ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | -+ MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET, -+}; -+ -+static const struct nv3051d_panel_info nv3051d_rk2023_info = { -+ .display_modes = nv3051d_rk2023_modes, -+ .num_modes = ARRAY_SIZE(nv3051d_rk2023_modes), -+ .width_mm = 70, -+ .height_mm = 57, -+ .bus_flags = DRM_BUS_FLAG_DE_LOW | DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE, -+ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | -+ MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET, - }; - - static const struct of_device_id newvision_nv3051d_of_match[] = { -- { .compatible = "newvision,nv3051d", .data = &nv3051d_rgxx3_info }, -+ { .compatible = "anbernic,rg351v-panel", .data = &nv3051d_rg351v_info }, -+ { .compatible = "anbernic,rg353p-panel", .data = &nv3051d_rg353p_info }, -+ { .compatible = "powkiddy,rk2023-panel", .data = &nv3051d_rk2023_info }, - { /* sentinel */ } - }; - MODULE_DEVICE_TABLE(of, newvision_nv3051d_of_match); --- -2.34.1 - -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, - sebastian.reichel@collabora.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, - heiko@sntech.de, conor+dt@kernel.org, - krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, - Chris Morgan , - Krzysztof Kozlowski -Subject: [PATCH V4 4/6] dt-bindings: arm: rockchip: Add Powkiddy RK2023 -Date: Fri, 17 Nov 2023 14:25:34 -0600 [thread overview] -Message-ID: <20231117202536.1387815-5-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> - -From: Chris Morgan - -The Powkiddy RK2023 is a handheld gaming device made by Powkiddy and -powered by the Rockchip RK3566 SoC. Group the Powkiddy RK3566 based -devices together as they are both extremely similar. - -Signed-off-by: Chris Morgan -Acked-by: Krzysztof Kozlowski ---- - Documentation/devicetree/bindings/arm/rockchip.yaml | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/Documentation/devicetree/bindings/arm/rockchip.yaml b/Documentation/devicetree/bindings/arm/rockchip.yaml -index 5f7c6c4aad8f..5b015c4ed775 100644 ---- a/Documentation/devicetree/bindings/arm/rockchip.yaml -+++ b/Documentation/devicetree/bindings/arm/rockchip.yaml -@@ -674,9 +674,11 @@ properties: - - const: pine64,soquartz - - const: rockchip,rk3566 - -- - description: Powkiddy RGB30 -+ - description: Powkiddy RK3566 Handheld Gaming Console - items: -- - const: powkiddy,rgb30 -+ - enum: -+ - powkiddy,rgb30 -+ - powkiddy,rk2023 - - const: rockchip,rk3566 - - - description: Radxa Compute Module 3(CM3) --- -2.34.1 - -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, - sebastian.reichel@collabora.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, - heiko@sntech.de, conor+dt@kernel.org, - krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, - Chris Morgan -Subject: [PATCH V4 5/6] arm64: dts: rockchip: Update powkiddy,rgb30 include to rk2023 DTSI -Date: Fri, 17 Nov 2023 14:25:35 -0600 [thread overview] -Message-ID: <20231117202536.1387815-6-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> - -From: Chris Morgan - -The Powkiddy RGB30 device is similar to the Anbernic RGxx3 series, -however there are several differences which require deleting nodes in -order to properly define the hardware. This was deemed unacceptable -for the RK2023, so instead create a common include file for the -Powkiddy RGB30 and the Powkiddy RK2023. The only notable difference -between these Powkiddy devices are the panel in use, the device -name, and the PLL_VPLL frequency necessary to support the different -panels. - -Since the RK2023 was released on the market first, name the common -include file after it. - -Signed-off-by: Chris Morgan ---- - .../dts/rockchip/rk3566-powkiddy-rgb30.dts | 154 +-- - .../dts/rockchip/rk3566-powkiddy-rk2023.dtsi | 875 ++++++++++++++++++ - 2 files changed, 891 insertions(+), 138 deletions(-) - create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi - -diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts -index 1ead3c5c24b3..0ac64f043b80 100644 ---- a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts -+++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts -@@ -5,67 +5,11 @@ - #include - #include - #include --#include "rk3566-anbernic-rg353x.dtsi" -+#include "rk3566-powkiddy-rk2023.dtsi" - - / { - model = "RGB30"; - compatible = "powkiddy,rgb30", "rockchip,rk3566"; -- -- aliases { -- mmc1 = &sdmmc0; -- mmc2 = &sdmmc1; -- mmc3 = &sdmmc2; -- }; -- -- battery: battery { -- compatible = "simple-battery"; -- charge-full-design-microamp-hours = <3151000>; -- charge-term-current-microamp = <300000>; -- constant-charge-current-max-microamp = <2000000>; -- constant-charge-voltage-max-microvolt = <4250000>; -- factory-internal-resistance-micro-ohms = <117000>; -- voltage-max-design-microvolt = <4172000>; -- voltage-min-design-microvolt = <3400000>; -- -- ocv-capacity-celsius = <20>; -- ocv-capacity-table-0 = <4172000 100>, <4092000 95>, <4035000 90>, <3990000 85>, -- <3939000 80>, <3895000 75>, <3852000 70>, <3807000 65>, -- <3762000 60>, <3713000 55>, <3672000 50>, <3647000 45>, -- <3629000 40>, <3613000 35>, <3598000 30>, <3578000 25>, -- <3550000 20>, <3519000 15>, <3479000 10>, <3438000 5>, -- <3400000 0>; -- }; -- -- /* -- * Channels reversed for speakers. Headphones automatically switch via hardware when -- * detected with no ability to control output in software. Headphones appear to be mono -- * (each output channel receives all audio). No microphone support on 3.5mm jack. -- */ -- sound { -- compatible = "simple-audio-card"; -- simple-audio-card,name = "rk817_ext"; -- simple-audio-card,format = "i2s"; -- simple-audio-card,mclk-fs = <256>; -- simple-audio-card,widgets = -- "Headphone", "Headphones"; -- simple-audio-card,routing = -- "Headphones", "HPOL", -- "Headphones", "HPOR"; -- -- simple-audio-card,codec { -- sound-dai = <&rk817>; -- }; -- -- simple-audio-card,cpu { -- sound-dai = <&i2s1_8ch>; -- }; -- }; --}; -- --/delete-node/ &adc_keys; -- --&chosen { -- /delete-property/ stdout-path; - }; - - &cru { -@@ -75,87 +19,21 @@ &cru { - <200000000>, <292500000>; - }; - --&gpio_keys_control { -- button-r1 { -- gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>; -- label = "TR"; -- linux,code = ; -- }; -- -- button-r2 { -- gpios = <&gpio3 RK_PB4 GPIO_ACTIVE_LOW>; -- label = "TR2"; -- linux,code = ; -- }; --}; -- --/delete-node/ &{/i2c@fdd40000/regulator@40}; -- --&i2c0 { -- vdd_cpu: regulator@1c { -- compatible = "tcs,tcs4525"; -- reg = <0x1c>; -- fcs,suspend-voltage-selector = <1>; -- regulator-always-on; -- regulator-boot-on; -- regulator-min-microvolt = <712500>; -- regulator-max-microvolt = <1390000>; -- regulator-name = "vdd_cpu"; -- regulator-ramp-delay = <2300>; -- vin-supply = <&vcc_sys>; -- regulator-state-mem { -- regulator-off-in-suspend; -+&dsi0 { -+ panel: panel@0 { -+ compatible = "powkiddy,rgb30-panel"; -+ reg = <0>; -+ backlight = <&backlight>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&lcd_rst>; -+ reset-gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_LOW>; -+ vcc-supply = <&vcc3v3_lcd0_n>; -+ iovcc-supply = <&vcc3v3_lcd0_n>; -+ -+ port { -+ mipi_in_panel: endpoint { -+ remote-endpoint = <&mipi_out_panel>; -+ }; - }; - }; - }; -- --/* -- * Device has 2 red LEDs instead of an amber and a red. Relabel LEDs as -- * red_led0 and red_led1. -- */ --/delete-node/ &{/pwm-leds/led-1}; --/delete-node/ &{/pwm-leds/led-2}; -- --&leds { -- red_led0: led-1 { -- color = ; -- function = LED_FUNCTION_CHARGING; -- max-brightness = <255>; -- pwms = <&pwm7 0 25000 0>; -- }; -- -- red_led1: led-2 { -- color = ; -- default-state = "off"; -- function = LED_FUNCTION_STATUS; -- max-brightness = <255>; -- pwms = <&pwm0 0 25000 0>; -- }; --}; -- --&panel { -- compatible = "powkiddy,rgb30-panel"; -- vcc-supply = <&vcc3v3_lcd0_n>; -- iovcc-supply = <&vcc3v3_lcd0_n>; -- /delete-property/ vdd-supply; --}; -- --&pwm5 { -- status = "disabled"; --}; -- --&rk817 { -- rk817_charger: charger { -- monitored-battery = <&battery>; -- rockchip,resistor-sense-micro-ohms = <10000>; -- rockchip,sleep-enter-current-microamp = <300000>; -- rockchip,sleep-filter-current-microamp = <100000>; -- }; --}; -- --/* There is no UART header visible on the board for this device. */ --&uart2 { -- status = "disabled"; --}; -- --/delete-node/ &vibrator; -diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi -new file mode 100644 -index 000000000000..0fa8f06f94cd ---- /dev/null -+++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi -@@ -0,0 +1,875 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+ -+/dts-v1/; -+ -+#include -+#include -+#include -+#include -+#include -+#include "rk3566.dtsi" -+ -+/ { -+ aliases { -+ mmc1 = &sdmmc0; -+ mmc2 = &sdmmc1; -+ mmc3 = &sdmmc2; -+ }; -+ -+ adc-joystick { -+ compatible = "adc-joystick"; -+ io-channels = <&adc_mux 0>, -+ <&adc_mux 1>, -+ <&adc_mux 2>, -+ <&adc_mux 3>; -+ pinctrl-0 = <&joy_mux_en>; -+ pinctrl-names = "default"; -+ poll-interval = <60>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ axis@0 { -+ reg = <0>; -+ abs-flat = <32>; -+ abs-fuzz = <32>; -+ abs-range = <1023 15>; -+ linux,code = ; -+ }; -+ -+ axis@1 { -+ reg = <1>; -+ abs-flat = <32>; -+ abs-fuzz = <32>; -+ abs-range = <15 1023>; -+ linux,code = ; -+ }; -+ -+ axis@2 { -+ reg = <2>; -+ abs-flat = <32>; -+ abs-fuzz = <32>; -+ abs-range = <15 1023>; -+ linux,code = ; -+ }; -+ -+ axis@3 { -+ reg = <3>; -+ abs-flat = <32>; -+ abs-fuzz = <32>; -+ abs-range = <1023 15>; -+ linux,code = ; -+ }; -+ }; -+ -+ adc_mux: adc-mux { -+ compatible = "io-channel-mux"; -+ channels = "left_x", "right_x", "left_y", "right_y"; -+ #io-channel-cells = <1>; -+ io-channels = <&saradc 3>; -+ io-channel-names = "parent"; -+ mux-controls = <&gpio_mux>; -+ settle-time-us = <100>; -+ }; -+ -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ power-supply = <&vcc_sys>; -+ pwms = <&pwm4 0 25000 0>; -+ }; -+ -+ battery: battery { -+ compatible = "simple-battery"; -+ charge-full-design-microamp-hours = <3151000>; -+ charge-term-current-microamp = <300000>; -+ constant-charge-current-max-microamp = <2000000>; -+ constant-charge-voltage-max-microvolt = <4250000>; -+ factory-internal-resistance-micro-ohms = <117000>; -+ voltage-max-design-microvolt = <4172000>; -+ voltage-min-design-microvolt = <3400000>; -+ -+ ocv-capacity-celsius = <20>; -+ ocv-capacity-table-0 = <4172000 100>, <4092000 95>, <4035000 90>, <3990000 85>, -+ <3939000 80>, <3895000 75>, <3852000 70>, <3807000 65>, -+ <3762000 60>, <3713000 55>, <3672000 50>, <3647000 45>, -+ <3629000 40>, <3613000 35>, <3598000 30>, <3578000 25>, -+ <3550000 20>, <3519000 15>, <3479000 10>, <3438000 5>, -+ <3400000 0>; -+ }; -+ -+ gpio_keys_control: gpio-keys-control { -+ compatible = "gpio-keys"; -+ pinctrl-0 = <&btn_pins_ctrl>; -+ pinctrl-names = "default"; -+ -+ button-a { -+ gpios = <&gpio3 RK_PC2 GPIO_ACTIVE_LOW>; -+ label = "EAST"; -+ linux,code = ; -+ }; -+ -+ button-b { -+ gpios = <&gpio3 RK_PC3 GPIO_ACTIVE_LOW>; -+ label = "SOUTH"; -+ linux,code = ; -+ }; -+ -+ button-down { -+ gpios = <&gpio3 RK_PA4 GPIO_ACTIVE_LOW>; -+ label = "DPAD-DOWN"; -+ linux,code = ; -+ }; -+ -+ button-l1 { -+ gpios = <&gpio3 RK_PB1 GPIO_ACTIVE_LOW>; -+ label = "TL"; -+ linux,code = ; -+ }; -+ -+ button-l2 { -+ gpios = <&gpio3 RK_PB2 GPIO_ACTIVE_LOW>; -+ label = "TL2"; -+ linux,code = ; -+ }; -+ -+ button-left { -+ gpios = <&gpio3 RK_PA6 GPIO_ACTIVE_LOW>; -+ label = "DPAD-LEFT"; -+ linux,code = ; -+ }; -+ -+ button-r1 { -+ gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>; -+ label = "TR"; -+ linux,code = ; -+ }; -+ -+ button-r2 { -+ gpios = <&gpio3 RK_PB4 GPIO_ACTIVE_LOW>; -+ label = "TR2"; -+ linux,code = ; -+ }; -+ -+ button-right { -+ gpios = <&gpio3 RK_PA5 GPIO_ACTIVE_LOW>; -+ label = "DPAD-RIGHT"; -+ linux,code = ; -+ }; -+ -+ button-select { -+ gpios = <&gpio3 RK_PB6 GPIO_ACTIVE_LOW>; -+ label = "SELECT"; -+ linux,code = ; -+ }; -+ -+ button-start { -+ gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_LOW>; -+ label = "START"; -+ linux,code = ; -+ }; -+ -+ button-thumbl { -+ gpios = <&gpio3 RK_PA1 GPIO_ACTIVE_LOW>; -+ label = "THUMBL"; -+ linux,code = ; -+ }; -+ -+ button-thumbr { -+ gpios = <&gpio3 RK_PA2 GPIO_ACTIVE_LOW>; -+ label = "THUMBR"; -+ linux,code = ; -+ }; -+ -+ button-up { -+ gpios = <&gpio3 RK_PA3 GPIO_ACTIVE_LOW>; -+ label = "DPAD-UP"; -+ linux,code = ; -+ }; -+ -+ button-x { -+ gpios = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>; -+ label = "NORTH"; -+ linux,code = ; -+ }; -+ -+ button-y { -+ gpios = <&gpio3 RK_PC1 GPIO_ACTIVE_LOW>; -+ label = "WEST"; -+ linux,code = ; -+ }; -+ }; -+ -+ gpio_keys_vol: gpio-keys-vol { -+ compatible = "gpio-keys"; -+ autorepeat; -+ pinctrl-0 = <&btn_pins_vol>; -+ pinctrl-names = "default"; -+ -+ button-vol-down { -+ gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>; -+ label = "VOLUMEDOWN"; -+ linux,code = ; -+ }; -+ -+ button-vol-up { -+ gpios = <&gpio3 RK_PA7 GPIO_ACTIVE_LOW>; -+ label = "VOLUMEUP"; -+ linux,code = ; -+ }; -+ }; -+ -+ gpio_mux: mux-controller { -+ compatible = "gpio-mux"; -+ mux-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>, -+ <&gpio0 RK_PB7 GPIO_ACTIVE_LOW>; -+ #mux-control-cells = <0>; -+ }; -+ -+ hdmi-con { -+ compatible = "hdmi-connector"; -+ ddc-i2c-bus = <&i2c5>; -+ type = "c"; -+ -+ port { -+ hdmi_con_in: endpoint { -+ remote-endpoint = <&hdmi_out_con>; -+ }; -+ }; -+ }; -+ -+ /* -+ * Device also includes an always on LED that is wired to the 5V input -+ * voltage and is on when the device is plugged in. -+ */ -+ leds: pwm-leds { -+ compatible = "pwm-leds"; -+ -+ green_led: led-0 { -+ color = ; -+ function = LED_FUNCTION_STATUS; -+ max-brightness = <255>; -+ pwms = <&pwm6 0 25000 0>; -+ }; -+ -+ red_led: led-1 { -+ color = ; -+ function = LED_FUNCTION_CHARGING; -+ max-brightness = <255>; -+ pwms = <&pwm7 0 25000 0>; -+ }; -+ }; -+ -+ sdio_pwrseq: sdio-pwrseq { -+ compatible = "mmc-pwrseq-simple"; -+ clocks = <&rk817 1>; -+ clock-names = "ext_clock"; -+ pinctrl-0 = <&wifi_enable_h>; -+ pinctrl-names = "default"; -+ post-power-on-delay-ms = <200>; -+ reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_LOW>; -+ }; -+ -+ /* -+ * Channels reversed for speakers. Headphones automatically switch via hardware when -+ * detected with no ability to control output in software. Headphones appear to be mono -+ * (each output channel receives all audio). No microphone support on 3.5mm jack. -+ */ -+ sound { -+ compatible = "simple-audio-card"; -+ simple-audio-card,name = "rk817_ext"; -+ simple-audio-card,format = "i2s"; -+ simple-audio-card,mclk-fs = <256>; -+ simple-audio-card,widgets = -+ "Headphone", "Headphones"; -+ simple-audio-card,routing = -+ "Headphones", "HPOL", -+ "Headphones", "HPOR"; -+ -+ simple-audio-card,codec { -+ sound-dai = <&rk817>; -+ }; -+ -+ simple-audio-card,cpu { -+ sound-dai = <&i2s1_8ch>; -+ }; -+ }; -+ -+ vcc3v3_lcd0_n: regulator-vcc3v3-lcd0 { -+ compatible = "regulator-fixed"; -+ gpio = <&gpio0 RK_PC2 GPIO_ACTIVE_HIGH>; -+ enable-active-high; -+ pinctrl-0 = <&vcc_lcd_h>; -+ pinctrl-names = "default"; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc3v3_lcd0_n"; -+ vin-supply = <&vcc_3v3>; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc_sys: regulator-vcc-sys { -+ compatible = "regulator-fixed"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3800000>; -+ regulator-max-microvolt = <3800000>; -+ regulator-name = "vcc_sys"; -+ }; -+ -+ vcc_wifi: regulator-vcc-wifi { -+ compatible = "regulator-fixed"; -+ enable-active-high; -+ gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>; -+ pinctrl-0 = <&vcc_wifi_h>; -+ pinctrl-names = "default"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc_wifi"; -+ }; -+}; -+ -+&combphy1 { -+ status = "okay"; -+}; -+ -+&cpu0 { -+ cpu-supply = <&vdd_cpu>; -+}; -+ -+&cpu1 { -+ cpu-supply = <&vdd_cpu>; -+}; -+ -+&cpu2 { -+ cpu-supply = <&vdd_cpu>; -+}; -+ -+&cpu3 { -+ cpu-supply = <&vdd_cpu>; -+}; -+ -+&dsi0 { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ ports { -+ dsi0_in: port@0 { -+ reg = <0>; -+ dsi0_in_vp1: endpoint { -+ remote-endpoint = <&vp1_out_dsi0>; -+ }; -+ }; -+ -+ dsi0_out: port@1 { -+ reg = <1>; -+ mipi_out_panel: endpoint { -+ remote-endpoint = <&mipi_in_panel>; -+ }; -+ }; -+ }; -+}; -+ -+&dsi_dphy0 { -+ status = "okay"; -+}; -+ -+&gpu { -+ mali-supply = <&vdd_gpu>; -+ status = "okay"; -+}; -+ -+&hdmi { -+ ddc-i2c-bus = <&i2c5>; -+ pinctrl-0 = <&hdmitxm0_cec>; -+ pinctrl-names = "default"; -+ status = "okay"; -+}; -+ -+&hdmi_in { -+ hdmi_in_vp0: endpoint { -+ remote-endpoint = <&vp0_out_hdmi>; -+ }; -+}; -+ -+&hdmi_out { -+ hdmi_out_con: endpoint { -+ remote-endpoint = <&hdmi_con_in>; -+ }; -+}; -+ -+&hdmi_sound { -+ status = "okay"; -+}; -+ -+&i2c0 { -+ status = "okay"; -+ -+ rk817: pmic@20 { -+ compatible = "rockchip,rk817"; -+ reg = <0x20>; -+ interrupt-parent = <&gpio0>; -+ interrupts = ; -+ clock-output-names = "rk808-clkout1", "rk808-clkout2"; -+ clock-names = "mclk"; -+ clocks = <&cru I2S1_MCLKOUT_TX>; -+ assigned-clocks = <&cru I2S1_MCLKOUT_TX>; -+ assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>; -+ #clock-cells = <1>; -+ #sound-dai-cells = <0>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2s1m0_mclk>, <&pmic_int_l>; -+ wakeup-source; -+ -+ vcc1-supply = <&vcc_sys>; -+ vcc2-supply = <&vcc_sys>; -+ vcc3-supply = <&vcc_sys>; -+ vcc4-supply = <&vcc_sys>; -+ vcc5-supply = <&vcc_sys>; -+ vcc6-supply = <&vcc_sys>; -+ vcc7-supply = <&vcc_sys>; -+ vcc8-supply = <&vcc_sys>; -+ vcc9-supply = <&dcdc_boost>; -+ -+ regulators { -+ vdd_logic: DCDC_REG1 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <500000>; -+ regulator-max-microvolt = <1350000>; -+ regulator-ramp-delay = <6001>; -+ regulator-initial-mode = <0x2>; -+ regulator-name = "vdd_logic"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ regulator-suspend-microvolt = <900000>; -+ }; -+ }; -+ -+ vdd_gpu: DCDC_REG2 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <500000>; -+ regulator-max-microvolt = <1350000>; -+ regulator-ramp-delay = <6001>; -+ regulator-initial-mode = <0x2>; -+ regulator-name = "vdd_gpu"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc_ddr: DCDC_REG3 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-initial-mode = <0x2>; -+ regulator-name = "vcc_ddr"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ vcc_3v3: DCDC_REG4 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-initial-mode = <0x2>; -+ regulator-name = "vcc_3v3"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; -+ }; -+ -+ vcca1v8_pmu: LDO_REG1 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "vcca1v8_pmu"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <1800000>; -+ }; -+ }; -+ -+ vdda_0v9: LDO_REG2 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <900000>; -+ regulator-max-microvolt = <900000>; -+ regulator-name = "vdda_0v9"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vdda0v9_pmu: LDO_REG3 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <900000>; -+ regulator-max-microvolt = <900000>; -+ regulator-name = "vdda0v9_pmu"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <900000>; -+ }; -+ }; -+ -+ vccio_acodec: LDO_REG4 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vccio_acodec"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vccio_sd: LDO_REG5 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vccio_sd"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc3v3_pmu: LDO_REG6 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc3v3_pmu"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; -+ }; -+ -+ vcc_1v8: LDO_REG7 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "vcc_1v8"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc1v8_dvp: LDO_REG8 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc1v8_dvp"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc2v8_dvp: LDO_REG9 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <2800000>; -+ regulator-max-microvolt = <2800000>; -+ regulator-name = "vcc2v8_dvp"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ dcdc_boost: BOOST { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <4700000>; -+ regulator-max-microvolt = <5400000>; -+ regulator-name = "boost"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ otg_switch: OTG_SWITCH { -+ regulator-name = "otg_switch"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ }; -+ -+ rk817_charger: charger { -+ monitored-battery = <&battery>; -+ rockchip,resistor-sense-micro-ohms = <10000>; -+ rockchip,sleep-enter-current-microamp = <300000>; -+ rockchip,sleep-filter-current-microamp = <100000>; -+ }; -+ }; -+ -+ vdd_cpu: regulator@1c { -+ compatible = "tcs,tcs4525"; -+ reg = <0x1c>; -+ fcs,suspend-voltage-selector = <1>; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <712500>; -+ regulator-max-microvolt = <1390000>; -+ regulator-name = "vdd_cpu"; -+ regulator-ramp-delay = <2300>; -+ vin-supply = <&vcc_sys>; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+}; -+ -+&i2c5 { -+ pinctrl-0 = <&i2c5m1_xfer>; -+ pinctrl-names = "default"; -+ status = "okay"; -+}; -+ -+&i2s0_8ch { -+ status = "okay"; -+}; -+ -+&i2s1_8ch { -+ pinctrl-0 = <&i2s1m0_sclktx -+ &i2s1m0_lrcktx -+ &i2s1m0_sdi0 -+ &i2s1m0_sdo0>; -+ pinctrl-names = "default"; -+ rockchip,trcm-sync-tx-only; -+ status = "okay"; -+}; -+ -+&pinctrl { -+ gpio-btns { -+ btn_pins_ctrl: btn-pins-ctrl { -+ rockchip,pins = -+ <3 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PC1 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PC3 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ -+ btn_pins_vol: btn-pins-vol { -+ rockchip,pins = -+ <3 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ joy-mux { -+ joy_mux_en: joy-mux-en { -+ rockchip,pins = -+ <0 RK_PB5 RK_FUNC_GPIO &pcfg_output_low>; -+ }; -+ }; -+ -+ gpio-lcd { -+ lcd_rst: lcd-rst { -+ rockchip,pins = -+ <4 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ pmic { -+ pmic_int_l: pmic-int-l { -+ rockchip,pins = -+ <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ sdio-pwrseq { -+ wifi_enable_h: wifi-enable-h { -+ rockchip,pins = -+ <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ vcc3v3-lcd { -+ vcc_lcd_h: vcc-lcd-h { -+ rockchip,pins = -+ <0 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ vcc-wifi { -+ vcc_wifi_h: vcc-wifi-h { -+ rockchip,pins = -+ <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+}; -+ -+&pmu_io_domains { -+ status = "okay"; -+ pmuio1-supply = <&vcc3v3_pmu>; -+ pmuio2-supply = <&vcc3v3_pmu>; -+ vccio1-supply = <&vccio_acodec>; -+ vccio3-supply = <&vccio_sd>; -+ vccio4-supply = <&vcc_1v8>; -+ vccio5-supply = <&vcc_3v3>; -+ vccio6-supply = <&vcc1v8_dvp>; -+ vccio7-supply = <&vcc_3v3>; -+}; -+ -+&pwm4 { -+ status = "okay"; -+}; -+ -+&pwm6 { -+ status = "okay"; -+}; -+ -+&pwm7 { -+ status = "okay"; -+}; -+ -+&saradc { -+ vref-supply = <&vcc_1v8>; -+ status = "okay"; -+}; -+ -+&sdmmc0 { -+ bus-width = <4>; -+ cap-sd-highspeed; -+ cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>; -+ disable-wp; -+ pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>; -+ pinctrl-names = "default"; -+ sd-uhs-sdr104; -+ vmmc-supply = <&vcc_3v3>; -+ vqmmc-supply = <&vccio_sd>; -+ status = "okay"; -+}; -+ -+&sdmmc1 { -+ bus-width = <4>; -+ cap-sd-highspeed; -+ cd-gpios = <&gpio2 RK_PB2 GPIO_ACTIVE_LOW>; -+ disable-wp; -+ pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_cmd &sdmmc1_clk &sdmmc1_det>; -+ pinctrl-names = "default"; -+ sd-uhs-sdr104; -+ vmmc-supply = <&vcc_3v3>; -+ vqmmc-supply = <&vcc1v8_dvp>; -+ status = "okay"; -+}; -+ -+&sdmmc2 { -+ bus-width = <4>; -+ cap-sd-highspeed; -+ cap-sdio-irq; -+ keep-power-in-suspend; -+ mmc-pwrseq = <&sdio_pwrseq>; -+ non-removable; -+ pinctrl-0 = <&sdmmc2m0_bus4 &sdmmc2m0_cmd &sdmmc2m0_clk>; -+ pinctrl-names = "default"; -+ vmmc-supply = <&vcc_wifi>; -+ vqmmc-supply = <&vcca1v8_pmu>; -+ status = "okay"; -+}; -+ -+&tsadc { -+ rockchip,hw-tshut-mode = <1>; -+ rockchip,hw-tshut-polarity = <0>; -+ status = "okay"; -+}; -+ -+&uart1 { -+ pinctrl-0 = <&uart1m1_xfer &uart1m1_ctsn &uart1m1_rtsn>; -+ pinctrl-names = "default"; -+ uart-has-rtscts; -+ status = "okay"; -+ -+ bluetooth { -+ compatible = "realtek,rtl8821cs-bt", "realtek,rtl8723bs-bt"; -+ device-wake-gpios = <&gpio4 4 GPIO_ACTIVE_HIGH>; -+ enable-gpios = <&gpio4 3 GPIO_ACTIVE_HIGH>; -+ host-wake-gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>; -+ }; -+}; -+ -+&usb_host0_xhci { -+ dr_mode = "peripheral"; -+ phys = <&usb2phy0_otg>; -+ phy-names = "usb2-phy"; -+ status = "okay"; -+}; -+ -+&usb_host1_ehci { -+ status = "okay"; -+}; -+ -+&usb_host1_ohci { -+ status = "okay"; -+}; -+ -+&usb_host1_xhci { -+ phy-names = "usb2-phy", "usb3-phy"; -+ phys = <&usb2phy1_host>, <&combphy1 PHY_TYPE_USB3>; -+ status = "okay"; -+}; -+ -+&usb2phy0 { -+ status = "okay"; -+}; -+ -+&usb2phy0_otg { -+ status = "okay"; -+}; -+ -+&usb2phy1 { -+ status = "okay"; -+}; -+ -+&usb2phy1_host { -+ status = "okay"; -+}; -+ -+&vop { -+ assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; -+ assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; -+ status = "okay"; -+}; -+ -+&vop_mmu { -+ status = "okay"; -+}; -+ -+&vp0 { -+ vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { -+ reg = ; -+ remote-endpoint = <&hdmi_in_vp0>; -+ }; -+}; -+ -+&vp1 { -+ vp1_out_dsi0: endpoint@ROCKCHIP_VOP2_EP_MIPI0 { -+ reg = ; -+ remote-endpoint = <&dsi0_in_vp1>; -+ }; -+}; --- -2.34.1 - -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, - sebastian.reichel@collabora.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, - heiko@sntech.de, conor+dt@kernel.org, - krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, - Chris Morgan -Subject: [PATCH V4 6/6] arm64: dts: rockchip: Add Powkiddy RK2023 -Date: Fri, 17 Nov 2023 14:25:36 -0600 [thread overview] -Message-ID: <20231117202536.1387815-7-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Add support for the Powkiddy RK2023. The Powkiddy RK2023 is a handheld -gaming device with a 3.5 inch screen powered by the Rockchip RK3566 -SoC. The device looks physically different from the Powkiddy RGB30, -but is functionally identical except for the panel. - -Signed-off-by: Chris Morgan ---- - arch/arm64/boot/dts/rockchip/Makefile | 1 + - .../dts/rockchip/rk3566-powkiddy-rk2023.dts | 38 +++++++++++++++++++ - 2 files changed, 39 insertions(+) - create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts - -diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile -index a18f33bf0c0e..f969618da352 100644 ---- a/arch/arm64/boot/dts/rockchip/Makefile -+++ b/arch/arm64/boot/dts/rockchip/Makefile -@@ -78,6 +78,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-anbernic-rg503.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.1.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.2.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-rgb30.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-rk2023.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-a.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-b.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-radxa-cm3-io.dtb -diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts -new file mode 100644 -index 000000000000..ba32d0793dca ---- /dev/null -+++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts -@@ -0,0 +1,38 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+ -+/dts-v1/; -+ -+#include -+#include -+#include -+#include "rk3566-powkiddy-rk2023.dtsi" -+ -+/ { -+ model = "RK2023"; -+ compatible = "powkiddy,rk2023", "rockchip,rk3566"; -+}; -+ -+&cru { -+ assigned-clocks = <&pmucru CLK_RTC_32K>, <&cru PLL_GPLL>, -+ <&pmucru PLL_PPLL>, <&cru PLL_VPLL>; -+ assigned-clock-rates = <32768>, <1200000000>, -+ <200000000>, <115200000>; -+}; -+ -+&dsi0 { -+ panel: panel@0 { -+ compatible = "powkiddy,rk2023-panel", "newvision,nv3051d"; -+ reg = <0>; -+ backlight = <&backlight>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&lcd_rst>; -+ reset-gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_LOW>; -+ vdd-supply = <&vcc3v3_lcd0_n>; -+ -+ port { -+ mipi_in_panel: endpoint { -+ remote-endpoint = <&mipi_out_panel>; -+ }; -+ }; -+ }; -+}; --- -2.34.1 - diff --git a/projects/Rockchip/packages/linux/patches/RK3566/004-add-rg351v.patch b/projects/Rockchip/packages/linux/patches/RK3566/004-add-rg351v.patch deleted file mode 100644 index 052ee0fea2..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566/004-add-rg351v.patch +++ /dev/null @@ -1,715 +0,0 @@ -From: Chris Morgan -To: devicetree@vger.kernel.org -Cc: linux-rockchip@lists.infradead.org, maccraft123mc@gmail.com, - sebastian.reichel@collabora.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH 0/3] Add Support for Anbernic RG351V -Date: Mon, 20 Nov 2023 17:01:28 -0600 [thread overview] -Message-ID: <20231120230131.57705-1-macroalpha82@gmail.com> (raw) - -From: Chris Morgan - -Add support for the Anbernic RG351V handheld gaming console. - -Chris Morgan (3): - dt-bindings: arm: rockchip: Add Anbernic RG351V - arm64: dts: rockchip: Split RG351M from Odroid Go Advance - arm64: dts: rockchip: Add Anbernic RG351V - - .../devicetree/bindings/arm/rockchip.yaml | 6 +- - arch/arm64/boot/dts/rockchip/Makefile | 1 + - .../dts/rockchip/rk3326-anbernic-rg351m.dts | 18 +- - .../dts/rockchip/rk3326-anbernic-rg351m.dtsi | 478 ++++++++++++++++++ - .../dts/rockchip/rk3326-anbernic-rg351v.dts | 44 ++ - 5 files changed, 529 insertions(+), 18 deletions(-) - create mode 100644 arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dtsi - create mode 100644 arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts - --- -2.34.1 -From: Chris Morgan -To: devicetree@vger.kernel.org -Cc: linux-rockchip@lists.infradead.org, maccraft123mc@gmail.com, - sebastian.reichel@collabora.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH 1/3] dt-bindings: arm: rockchip: Add Anbernic RG351V -Date: Mon, 20 Nov 2023 17:01:29 -0600 [thread overview] -Message-ID: <20231120230131.57705-2-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231120230131.57705-1-macroalpha82@gmail.com> - -From: Chris Morgan - -The Anbernic RG351V is a portable gaming console from Anbernic with the -RK3326 SoC. - -Signed-off-by: Chris Morgan ---- - Documentation/devicetree/bindings/arm/rockchip.yaml | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/Documentation/devicetree/bindings/arm/rockchip.yaml b/Documentation/devicetree/bindings/arm/rockchip.yaml -index 5f7c6c4aad8f..3786f901a1a7 100644 ---- a/Documentation/devicetree/bindings/arm/rockchip.yaml -+++ b/Documentation/devicetree/bindings/arm/rockchip.yaml -@@ -30,9 +30,11 @@ properties: - - const: amarula,vyasa-rk3288 - - const: rockchip,rk3288 - -- - description: Anbernic RG351M -+ - description: Anbernic RK3326 Handheld Gaming Console - items: -- - const: anbernic,rg351m -+ - enum: -+ - anbernic,rg351m -+ - anbernic,rg351v - - const: rockchip,rk3326 - - - description: Anbernic RG353P --- -2.34.1 -From: Chris Morgan -To: devicetree@vger.kernel.org -Cc: linux-rockchip@lists.infradead.org, maccraft123mc@gmail.com, - sebastian.reichel@collabora.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH 2/3] arm64: dts: rockchip: Split RG351M from Odroid Go Advance -Date: Mon, 20 Nov 2023 17:01:30 -0600 [thread overview] -Message-ID: <20231120230131.57705-3-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231120230131.57705-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Split the RG351M into its own DTSI file. The RG351M, unlike the Odroid -Go Advance, has no ADC joysticks, no GPIO buttons (except for volume -on the RG351V), a PWM vibrator that interferes with an Odroid -regulator, and different LEDs. Split the RG351M into a DTSI file -that can then be imported into the DTS files for the RG351M and a -new RG351V. - -Signed-off-by: Chris Morgan ---- - .../dts/rockchip/rk3326-anbernic-rg351m.dts | 18 +- - .../dts/rockchip/rk3326-anbernic-rg351m.dtsi | 478 ++++++++++++++++++ - 2 files changed, 480 insertions(+), 16 deletions(-) - create mode 100644 arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dtsi - -diff --git a/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts -index ce318e05f0a6..f4d20f29c1b4 100644 ---- a/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts -+++ b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts -@@ -6,30 +6,16 @@ - */ - - /dts-v1/; --#include "rk3326-odroid-go.dtsi" -+#include "rk3326-anbernic-rg351m.dtsi" - - / { - model = "Anbernic RG351M"; - compatible = "anbernic,rg351m", "rockchip,rk3326"; -- -- vibrator { -- compatible = "pwm-vibrator"; -- pwms = <&pwm0 0 1000000 0>; -- pwm-names = "enable"; -- }; - }; - --/delete-node/ &builtin_gamepad; --/delete-node/ &vcc_host; /* conflicts with pwm vibration motor */ -- - &internal_display { - compatible = "elida,kd35t133"; - iovcc-supply = <&vcc_lcd>; -+ rotation = <270>; - vdd-supply = <&vcc_lcd>; - }; -- --&pwm0 { -- status = "okay"; --}; -- --/delete-node/ &rk817_charger; -diff --git a/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dtsi b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dtsi -new file mode 100644 -index 000000000000..89e64647b4fa ---- /dev/null -+++ b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dtsi -@@ -0,0 +1,478 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+/* -+ * Copyright (c) 2019 Hardkernel Co., Ltd -+ * Copyright (c) 2020 Theobroma Systems Design und Consulting GmbH -+ * Copyright (c) 2022 Maya Matuszczyk -+ */ -+ -+/dts-v1/; -+#include -+#include -+#include -+#include -+#include "rk3326.dtsi" -+ -+/ { -+ aliases { -+ mmc0 = &sdmmc; -+ }; -+ -+ chosen { -+ stdout-path = "serial2:115200n8"; -+ }; -+ -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ power-supply = <&vcc_bl>; -+ pwms = <&pwm1 0 25000 0>; -+ }; -+ -+ /* -+ * LED is a tri-state. Driven high it is red, driven low it is -+ * green, and not driven at all (pin set to input) it is amber. -+ * Additionally, there is a 2nd LED that is not controllable -+ * that is on (red) when plugged in to power. -+ */ -+ gpio_led: gpio-leds { -+ compatible = "gpio-leds"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&led_pin>; -+ -+ red_green_led: led-0 { -+ color = ; -+ gpios = <&gpio2 RK_PB5 GPIO_ACTIVE_HIGH>; -+ function = LED_FUNCTION_CHARGING; -+ }; -+ }; -+ -+ rk817-sound { -+ compatible = "simple-audio-card"; -+ simple-audio-card,name = "rk817_int"; -+ simple-audio-card,format = "i2s"; -+ simple-audio-card,hp-det-gpio = <&gpio2 RK_PC6 GPIO_ACTIVE_HIGH>; -+ simple-audio-card,mclk-fs = <256>; -+ simple-audio-card,widgets = -+ "Microphone", "Mic Jack", -+ "Headphone", "Headphones", -+ "Speaker", "Speaker"; -+ simple-audio-card,routing = -+ "MICL", "Mic Jack", -+ "Headphones", "HPOL", -+ "Headphones", "HPOR", -+ "Speaker", "SPKO"; -+ -+ simple-audio-card,codec { -+ sound-dai = <&rk817>; -+ }; -+ -+ simple-audio-card,cpu { -+ sound-dai = <&i2s1_2ch>; -+ }; -+ }; -+ -+ vccsys: vccsys { -+ compatible = "regulator-fixed"; -+ regulator-name = "vcc3v8_sys"; -+ regulator-always-on; -+ regulator-min-microvolt = <3800000>; -+ regulator-max-microvolt = <3800000>; -+ }; -+ -+ vibrator { -+ compatible = "pwm-vibrator"; -+ pwms = <&pwm0 0 1000000 0>; -+ pwm-names = "enable"; -+ }; -+}; -+ -+&cpu0 { -+ cpu-supply = <&vdd_arm>; -+}; -+ -+&cpu1 { -+ cpu-supply = <&vdd_arm>; -+}; -+ -+&cpu2 { -+ cpu-supply = <&vdd_arm>; -+}; -+ -+&cpu3 { -+ cpu-supply = <&vdd_arm>; -+}; -+ -+&cru { -+ assigned-clocks = <&cru PLL_NPLL>, -+ <&cru ACLK_BUS_PRE>, <&cru ACLK_PERI_PRE>, -+ <&cru HCLK_BUS_PRE>, <&cru HCLK_PERI_PRE>, -+ <&cru PCLK_BUS_PRE>, <&cru SCLK_GPU>; -+ -+ assigned-clock-rates = <1188000000>, -+ <200000000>, <200000000>, -+ <150000000>, <150000000>, -+ <100000000>, <200000000>; -+}; -+ -+&display_subsystem { -+ status = "okay"; -+}; -+ -+&dsi { -+ status = "okay"; -+ -+ ports { -+ mipi_out: port@1 { -+ reg = <1>; -+ -+ mipi_out_panel: endpoint { -+ remote-endpoint = <&mipi_in_panel>; -+ }; -+ }; -+ }; -+ -+ internal_display: panel@0 { -+ reg = <0>; -+ backlight = <&backlight>; -+ reset-gpios = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>; -+ -+ port { -+ mipi_in_panel: endpoint { -+ remote-endpoint = <&mipi_out_panel>; -+ }; -+ }; -+ }; -+}; -+ -+&dsi_dphy { -+ status = "okay"; -+}; -+ -+&gpu { -+ mali-supply = <&vdd_logic>; -+ status = "okay"; -+}; -+ -+&i2c0 { -+ clock-frequency = <400000>; -+ i2c-scl-falling-time-ns = <16>; -+ i2c-scl-rising-time-ns = <280>; -+ status = "okay"; -+ -+ rk817: pmic@20 { -+ compatible = "rockchip,rk817"; -+ reg = <0x20>; -+ #clock-cells = <1>; -+ clock-names = "mclk"; -+ clock-output-names = "rk808-clkout1", "xin32k"; -+ clocks = <&cru SCLK_I2S1_OUT>; -+ interrupt-parent = <&gpio0>; -+ interrupts = ; -+ pinctrl-0 = <&pmic_int>, <&i2s1_2ch_mclk>; -+ pinctrl-names = "default"; -+ #sound-dai-cells = <0>; -+ wakeup-source; -+ -+ vcc1-supply = <&vccsys>; -+ vcc2-supply = <&vccsys>; -+ vcc3-supply = <&vccsys>; -+ vcc4-supply = <&vccsys>; -+ vcc5-supply = <&vccsys>; -+ vcc6-supply = <&vccsys>; -+ vcc7-supply = <&vccsys>; -+ vcc8-supply = <&vccsys>; -+ -+ regulators { -+ vdd_logic: DCDC_REG1 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-max-microvolt = <1150000>; -+ regulator-min-microvolt = <950000>; -+ regulator-name = "vdd_logic"; -+ regulator-ramp-delay = <6001>; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <950000>; -+ }; -+ }; -+ -+ vdd_arm: DCDC_REG2 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-max-microvolt = <1350000>; -+ regulator-min-microvolt = <950000>; -+ regulator-name = "vdd_arm"; -+ regulator-ramp-delay = <6001>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ regulator-suspend-microvolt = <950000>; -+ }; -+ }; -+ -+ vcc_ddr: DCDC_REG3 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-name = "vcc_ddr"; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ vcc_3v3: DCDC_REG4 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-max-microvolt = <3300000>; -+ regulator-min-microvolt = <3300000>; -+ regulator-name = "vcc_3v3"; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; -+ }; -+ -+ vcc_1v8: LDO_REG2 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-max-microvolt = <1800000>; -+ regulator-min-microvolt = <1800000>; -+ regulator-name = "vcc_1v8"; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <1800000>; -+ }; -+ }; -+ -+ vdd_1v0: LDO_REG3 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-max-microvolt = <1000000>; -+ regulator-min-microvolt = <1000000>; -+ regulator-name = "vdd_1v0"; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <1000000>; -+ }; -+ }; -+ -+ vcc3v3_pmu: LDO_REG4 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-max-microvolt = <3300000>; -+ regulator-min-microvolt = <3300000>; -+ regulator-name = "vcc3v3_pmu"; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; -+ }; -+ -+ vccio_sd: LDO_REG5 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-max-microvolt = <3300000>; -+ regulator-min-microvolt = <1800000>; -+ regulator-name = "vccio_sd"; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; -+ }; -+ -+ vcc_sd: LDO_REG6 { -+ regulator-boot-on; -+ regulator-max-microvolt = <3300000>; -+ regulator-min-microvolt = <3300000>; -+ regulator-name = "vcc_sd"; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; -+ }; -+ -+ vcc_bl: LDO_REG7 { -+ regulator-max-microvolt = <3300000>; -+ regulator-min-microvolt = <3300000>; -+ regulator-name = "vcc_bl"; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; -+ }; -+ -+ vcc_lcd: LDO_REG8 { -+ regulator-max-microvolt = <2800000>; -+ regulator-min-microvolt = <2800000>; -+ regulator-name = "vcc_lcd"; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ regulator-suspend-microvolt = <2800000>; -+ }; -+ }; -+ -+ vcc_wifi: LDO_REG9 { -+ regulator-max-microvolt = <3300000>; -+ regulator-min-microvolt = <3300000>; -+ regulator-name = "vcc_wifi"; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; -+ }; -+ -+ usb_midu: BOOST { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-max-microvolt = <5400000>; -+ regulator-min-microvolt = <5000000>; -+ regulator-name = "usb_midu"; -+ }; -+ }; -+ -+ rk817_codec: codec { -+ rockchip,mic-in-differential; -+ }; -+ }; -+}; -+ -+&i2s1_2ch { -+ status = "okay"; -+}; -+ -+&io_domains { -+ vccio1-supply = <&vcc_3v3>; -+ vccio2-supply = <&vccio_sd>; -+ vccio3-supply = <&vcc_3v3>; -+ vccio4-supply = <&vcc_3v3>; -+ vccio5-supply = <&vcc_3v3>; -+ vccio6-supply = <&vcc_3v3>; -+ status = "okay"; -+}; -+ -+&pmu_io_domains { -+ pmuio1-supply = <&vcc3v3_pmu>; -+ pmuio2-supply = <&vcc3v3_pmu>; -+ status = "okay"; -+}; -+ -+&pwm0 { -+ status = "okay"; -+}; -+ -+&pwm1 { -+ status = "okay"; -+}; -+ -+&saradc { -+ vref-supply = <&vcc_1v8>; -+ status = "okay"; -+}; -+ -+&sdmmc { -+ cap-sd-highspeed; -+ card-detect-delay = <200>; -+ cd-gpios = <&gpio0 RK_PA3 GPIO_ACTIVE_LOW>; -+ sd-uhs-sdr12; -+ sd-uhs-sdr25; -+ sd-uhs-sdr50; -+ sd-uhs-sdr104; -+ vmmc-supply = <&vcc_sd>; -+ vqmmc-supply = <&vccio_sd>; -+ status = "okay"; -+}; -+ -+&sfc { -+ #address-cells = <1>; -+ pinctrl-0 = <&sfc_clk &sfc_cs0 &sfc_bus2>; -+ pinctrl-names = "default"; -+ #size-cells = <0>; -+ status = "okay"; -+ -+ flash@0 { -+ compatible = "jedec,spi-nor"; -+ reg = <0>; -+ spi-max-frequency = <108000000>; -+ spi-rx-bus-width = <2>; -+ spi-tx-bus-width = <1>; -+ }; -+}; -+ -+&tsadc { -+ status = "okay"; -+}; -+ -+&u2phy { -+ status = "okay"; -+ -+ u2phy_host: host-port { -+ status = "okay"; -+ }; -+ -+ u2phy_otg: otg-port { -+ status = "disabled"; -+ }; -+}; -+ -+&usb20_otg { -+ status = "okay"; -+}; -+ -+&uart2 { -+ pinctrl-0 = <&uart2m1_xfer>; -+ pinctrl-names = "default"; -+ status = "okay"; -+}; -+ -+&vopb { -+ status = "okay"; -+}; -+ -+&vopb_mmu { -+ status = "okay"; -+}; -+ -+&pinctrl { -+ headphone { -+ hp_det: hp-det { -+ rockchip,pins = <2 RK_PC6 RK_FUNC_GPIO &pcfg_pull_down>; -+ }; -+ }; -+ -+ leds { -+ led_pin: led-pin { -+ rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ pmic { -+ dc_det: dc-det { -+ rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ pmic_int: pmic-int { -+ rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ -+ soc_slppin_gpio: soc_slppin_gpio { -+ rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_output_low>; -+ }; -+ -+ soc_slppin_rst: soc_slppin_rst { -+ rockchip,pins = <0 RK_PA4 2 &pcfg_pull_none>; -+ }; -+ -+ soc_slppin_slp: soc_slppin_slp { -+ rockchip,pins = <0 RK_PA4 1 &pcfg_pull_none>; -+ }; -+ }; -+}; --- -2.34.1 - -From: Chris Morgan -To: devicetree@vger.kernel.org -Cc: linux-rockchip@lists.infradead.org, maccraft123mc@gmail.com, - sebastian.reichel@collabora.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH 3/3] arm64: dts: rockchip: Add Anbernic RG351V -Date: Mon, 20 Nov 2023 17:01:31 -0600 [thread overview] -Message-ID: <20231120230131.57705-4-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231120230131.57705-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Add support for the Anbernic RG351V, which is a handheld gaming console -from Anbernic with an RK3326 SoC, a 640x480 LCD display, a single -analog joystick with several face buttons, two USB C ports, and -internal WiFi over USB. All hardware has been tested as working -except for the battery, which will require further modification to the -mainline rk817 battery driver before it can be used (the device was -built without a shunt resistor, and as such the battery cannot -measure current; only voltage). - -Signed-off-by: Chris Morgan ---- - arch/arm64/boot/dts/rockchip/Makefile | 1 + - .../dts/rockchip/rk3326-anbernic-rg351v.dts | 44 +++++++++++++++++++ - 2 files changed, 45 insertions(+) - create mode 100644 arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts - -diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile -index a18f33bf0c0e..0ac27cf782d7 100644 ---- a/arch/arm64/boot/dts/rockchip/Makefile -+++ b/arch/arm64/boot/dts/rockchip/Makefile -@@ -9,6 +9,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-roc-cc.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-rock-pi-s.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3318-a95x-z2.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-anbernic-rg351m.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-anbernic-rg351v.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2-v11.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go3.dtb -diff --git a/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts -new file mode 100644 -index 000000000000..c2f9b56ca5f9 ---- /dev/null -+++ b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts -@@ -0,0 +1,44 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+ -+/dts-v1/; -+#include "rk3326-anbernic-rg351m.dtsi" -+ -+/ { -+ model = "Anbernic RG351V"; -+ compatible = "anbernic,rg351v", "rockchip,rk3326"; -+ -+ gpio_keys_vol: gpio-keys-vol { -+ compatible = "gpio-keys"; -+ autorepeat; -+ -+ button-vol-down { -+ label = "VOLUMEDOWN"; -+ linux,code = ; -+ gpios = <&gpio2 RK_PA1 GPIO_ACTIVE_LOW>; -+ }; -+ -+ button-vol-up { -+ label = "VOLUMEUP"; -+ linux,code = ; -+ gpios = <&gpio2 RK_PA0 GPIO_ACTIVE_LOW>; -+ }; -+ }; -+}; -+ -+&internal_display { -+ compatible = "anbernic,rg351v-panel", "newvision,nv3051d"; -+ vdd-supply = <&vcc_lcd>; -+}; -+ -+&io_domains { -+ vccio1-supply = <&vccio_sd>; -+}; -+ -+&vcc_sd { -+ regulator-max-microvolt = <3000000>; -+ regulator-min-microvolt = <1800000>; -+}; -+ -+&vccio_sd { -+ regulator-max-microvolt = <1800000>; -+}; --- -2.34.1 diff --git a/projects/Rockchip/packages/linux/patches/RK3566/005-set-mac-address.patch b/projects/Rockchip/packages/linux/patches/RK3566/005-set-mac-address.patch deleted file mode 100644 index c4878de131..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566/005-set-mac-address.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c -index 4a33d2e47f33..6d22628129d0 100644 ---- a/drivers/net/wireless/realtek/rtw88/main.c -+++ b/drivers/net/wireless/realtek/rtw88/main.c -@@ -2008,6 +2008,11 @@ static int rtw_chip_efuse_info_setup(struct rtw_dev *rtwdev) - efuse->ext_pa_5g = efuse->pa_type_5g & BIT(0) ? 1 : 0; - efuse->ext_lna_2g = efuse->lna_type_5g & BIT(3) ? 1 : 0; - -+ if (!is_valid_ether_addr(efuse->addr)) { -+ eth_random_addr(efuse->addr); -+ dev_warn(rtwdev->dev, "efuse MAC invalid, using random\n"); -+ } -+ - out_disable: - rtw_chip_efuse_disable(rtwdev); diff --git a/projects/Rockchip/packages/linux/patches/RK3566/006-v2-add-powkiddy-x55.patch b/projects/Rockchip/packages/linux/patches/RK3566/006-v2-add-powkiddy-x55.patch deleted file mode 100644 index 18ce833db2..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566/006-v2-add-powkiddy-x55.patch +++ /dev/null @@ -1,1657 +0,0 @@ -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH V2 00/10] rockchip: Add Powkiddy X55 -Date: Mon, 4 Dec 2023 12:57:09 -0600 [thread overview] -Message-ID: <20231204185719.569021-1-macroalpha82@gmail.com> (raw) - -From: Chris Morgan - -Add support for the Rockchip RK3566 based Powkiddy X55 handheld gaming -console. - -Changes since V1: - - Corrected a bug with the DRM mode flags for the video driver. - - Adjusted panel front and back porch and pixel clock to fix - issues with display that occurred after correcting DRM mode - flag bug. - - Add a new clk frequency for PLL_VPLL to get panel to run at ~60hz. - -Chris Morgan (10): - drm/panel: himax-hx8394: Drop prepare/unprepare tracking - drm/panel: himax-hx8394: Drop shutdown logic - dt-bindings: display: Document Himax HX8394 panel rotation - drm/panel: himax-hx8394: Add Panel Rotation Support - dt-bindings: display: himax-hx8394: Add Powkiddy X55 panel - drm/panel: himax-hx8394: Add Support for Powkiddy X55 panel - clk: rockchip: Mark pclk_usb as critical on rk3568 - clk: rockchip: rk3568: Add PLL rate for 126.4MHz - dt-bindings: arm: rockchip: Add Powkiddy X55 - arm64: dts: rockchip: Add Powkiddy X55 - - .../devicetree/bindings/arm/rockchip.yaml | 1 + - .../bindings/display/panel/himax,hx8394.yaml | 3 + - arch/arm64/boot/dts/rockchip/Makefile | 1 + - .../boot/dts/rockchip/rk3566-powkiddy-x55.dts | 926 ++++++++++++++++++ - drivers/clk/rockchip/clk-rk3568.c | 2 + - drivers/gpu/drm/panel/panel-himax-hx8394.c | 180 +++- - 6 files changed, 1085 insertions(+), 28 deletions(-) - create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x55.dts - --- -2.34.1 -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH V2 01/10] drm/panel: himax-hx8394: Drop prepare/unprepare tracking -Date: Mon, 4 Dec 2023 12:57:10 -0600 [thread overview] -Message-ID: <20231204185719.569021-2-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Drop the panel specific prepare/unprepare logic. This is now tracked -by the DRM stack [1]. - -[1] commit d2aacaf07395 ("drm/panel: Check for already prepared/enabled in -drm_panel") - -Signed-off-by: Chris Morgan ---- - drivers/gpu/drm/panel/panel-himax-hx8394.c | 11 ----------- - 1 file changed, 11 deletions(-) - -diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c -index c73243d85de7..3823ff388b96 100644 ---- a/drivers/gpu/drm/panel/panel-himax-hx8394.c -+++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c -@@ -68,7 +68,6 @@ struct hx8394 { - struct gpio_desc *reset_gpio; - struct regulator *vcc; - struct regulator *iovcc; -- bool prepared; - - const struct hx8394_panel_desc *desc; - }; -@@ -262,16 +261,11 @@ static int hx8394_unprepare(struct drm_panel *panel) - { - struct hx8394 *ctx = panel_to_hx8394(panel); - -- if (!ctx->prepared) -- return 0; -- - gpiod_set_value_cansleep(ctx->reset_gpio, 1); - - regulator_disable(ctx->iovcc); - regulator_disable(ctx->vcc); - -- ctx->prepared = false; -- - return 0; - } - -@@ -280,9 +274,6 @@ static int hx8394_prepare(struct drm_panel *panel) - struct hx8394 *ctx = panel_to_hx8394(panel); - int ret; - -- if (ctx->prepared) -- return 0; -- - gpiod_set_value_cansleep(ctx->reset_gpio, 1); - - ret = regulator_enable(ctx->vcc); -@@ -301,8 +292,6 @@ static int hx8394_prepare(struct drm_panel *panel) - - msleep(180); - -- ctx->prepared = true; -- - return 0; - - disable_vcc: --- -2.34.1 - -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH V2 02/10] drm/panel: himax-hx8394: Drop shutdown logic -Date: Mon, 4 Dec 2023 12:57:11 -0600 [thread overview] -Message-ID: <20231204185719.569021-3-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> - -From: Chris Morgan - -The driver shutdown is duplicate as it calls drm_unprepare and -drm_disable which are called anyway when associated drivers are -shutdown/removed. - -Signed-off-by: Chris Morgan ---- - drivers/gpu/drm/panel/panel-himax-hx8394.c | 17 ----------------- - 1 file changed, 17 deletions(-) - -diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c -index 3823ff388b96..d8e590d5e1da 100644 ---- a/drivers/gpu/drm/panel/panel-himax-hx8394.c -+++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c -@@ -390,27 +390,11 @@ static int hx8394_probe(struct mipi_dsi_device *dsi) - return 0; - } - --static void hx8394_shutdown(struct mipi_dsi_device *dsi) --{ -- struct hx8394 *ctx = mipi_dsi_get_drvdata(dsi); -- int ret; -- -- ret = drm_panel_disable(&ctx->panel); -- if (ret < 0) -- dev_err(&dsi->dev, "Failed to disable panel: %d\n", ret); -- -- ret = drm_panel_unprepare(&ctx->panel); -- if (ret < 0) -- dev_err(&dsi->dev, "Failed to unprepare panel: %d\n", ret); --} -- - static void hx8394_remove(struct mipi_dsi_device *dsi) - { - struct hx8394 *ctx = mipi_dsi_get_drvdata(dsi); - int ret; - -- hx8394_shutdown(dsi); -- - ret = mipi_dsi_detach(dsi); - if (ret < 0) - dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret); -@@ -427,7 +411,6 @@ MODULE_DEVICE_TABLE(of, hx8394_of_match); - static struct mipi_dsi_driver hx8394_driver = { - .probe = hx8394_probe, - .remove = hx8394_remove, -- .shutdown = hx8394_shutdown, - .driver = { - .name = DRV_NAME, - .of_match_table = hx8394_of_match, --- -2.34.1 -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan , - Krzysztof Kozlowski -Subject: [PATCH V2 03/10] dt-bindings: display: Document Himax HX8394 panel rotation -Date: Mon, 4 Dec 2023 12:57:12 -0600 [thread overview] -Message-ID: <20231204185719.569021-4-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Document panel rotation for Himax HX8394 display panel. - -Signed-off-by: Chris Morgan -Acked-by: Krzysztof Kozlowski ---- - .../devicetree/bindings/display/panel/himax,hx8394.yaml | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml -index ffb35288ffbb..3096debca55c 100644 ---- a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml -+++ b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml -@@ -31,6 +31,8 @@ properties: - - backlight: true - -+ rotation: true -+ - port: true - - vcc-supply: --- -2.34.1 -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH V2 04/10] drm/panel: himax-hx8394: Add Panel Rotation Support -Date: Mon, 4 Dec 2023 12:57:13 -0600 [thread overview] -Message-ID: <20231204185719.569021-5-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Add support for setting the rotation property for the Himax HX8394 -panel. - -Signed-off-by: Chris Morgan ---- - drivers/gpu/drm/panel/panel-himax-hx8394.c | 15 +++++++++++++++ - 1 file changed, 15 insertions(+) - -diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c -index d8e590d5e1da..b68ea09f4725 100644 ---- a/drivers/gpu/drm/panel/panel-himax-hx8394.c -+++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c -@@ -68,6 +68,7 @@ struct hx8394 { - struct gpio_desc *reset_gpio; - struct regulator *vcc; - struct regulator *iovcc; -+ enum drm_panel_orientation orientation; - - const struct hx8394_panel_desc *desc; - }; -@@ -324,12 +325,20 @@ static int hx8394_get_modes(struct drm_panel *panel, - return 1; - } - -+static enum drm_panel_orientation hx8394_get_orientation(struct drm_panel *panel) -+{ -+ struct hx8394 *ctx = panel_to_hx8394(panel); -+ -+ return ctx->orientation; -+} -+ - static const struct drm_panel_funcs hx8394_drm_funcs = { - .disable = hx8394_disable, - .unprepare = hx8394_unprepare, - .prepare = hx8394_prepare, - .enable = hx8394_enable, - .get_modes = hx8394_get_modes, -+ .get_orientation = hx8394_get_orientation, - }; - - static int hx8394_probe(struct mipi_dsi_device *dsi) -@@ -347,6 +356,12 @@ static int hx8394_probe(struct mipi_dsi_device *dsi) - return dev_err_probe(dev, PTR_ERR(ctx->reset_gpio), - "Failed to get reset gpio\n"); - -+ ret = of_drm_get_panel_orientation(dev->of_node, &ctx->orientation); -+ if (ret < 0) { -+ dev_err(dev, "%pOF: failed to get orientation %d\n", dev->of_node, ret); -+ return ret; -+ } -+ - mipi_dsi_set_drvdata(dsi, ctx); - - ctx->dev = dev; --- -2.34.1 -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan , - Krzysztof Kozlowski -Subject: [PATCH V2 05/10] dt-bindings: display: himax-hx8394: Add Powkiddy X55 panel -Date: Mon, 4 Dec 2023 12:57:14 -0600 [thread overview] -Message-ID: <20231204185719.569021-6-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Add compatible string for the Powkiddy X55 panel. - -Signed-off-by: Chris Morgan -Acked-by: Krzysztof Kozlowski ---- - .../devicetree/bindings/display/panel/himax,hx8394.yaml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml -index 3096debca55c..916bb7f94206 100644 ---- a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml -+++ b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml -@@ -23,6 +23,7 @@ properties: - items: - - enum: - - hannstar,hsd060bhw4 -+ - powkiddy,x55-panel - - const: himax,hx8394 - - reg: true --- -2.34.1 -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH V2 06/10] drm/panel: himax-hx8394: Add Support for Powkiddy X55 panel -Date: Mon, 4 Dec 2023 12:57:15 -0600 [thread overview] -Message-ID: <20231204185719.569021-7-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Add support for the Powkiddy X55 panel as used on the Powkiddy X55 -handheld gaming console. This panel uses a Himax HX8394 display -controller and requires a vendor provided init sequence. The display -resolution is 720x1280 and is 67mm by 121mm as measured with calipers. - -Signed-off-by: Chris Morgan ---- - drivers/gpu/drm/panel/panel-himax-hx8394.c | 137 +++++++++++++++++++++ - 1 file changed, 137 insertions(+) - -diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c -index b68ea09f4725..ff0dc08b9829 100644 ---- a/drivers/gpu/drm/panel/panel-himax-hx8394.c -+++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c -@@ -38,6 +38,7 @@ - #define HX8394_CMD_SETMIPI 0xba - #define HX8394_CMD_SETOTP 0xbb - #define HX8394_CMD_SETREGBANK 0xbd -+#define HX8394_CMD_UNKNOWN5 0xbf - #define HX8394_CMD_UNKNOWN1 0xc0 - #define HX8394_CMD_SETDGCLUT 0xc1 - #define HX8394_CMD_SETID 0xc3 -@@ -52,6 +53,7 @@ - #define HX8394_CMD_SETGIP1 0xd5 - #define HX8394_CMD_SETGIP2 0xd6 - #define HX8394_CMD_SETGPO 0xd6 -+#define HX8394_CMD_UNKNOWN4 0xd8 - #define HX8394_CMD_SETSCALING 0xdd - #define HX8394_CMD_SETIDLE 0xdf - #define HX8394_CMD_SETGAMMA 0xe0 -@@ -203,6 +205,140 @@ static const struct hx8394_panel_desc hsd060bhw4_desc = { - .init_sequence = hsd060bhw4_init_sequence, - }; - -+static int powkiddy_x55_init_sequence(struct hx8394 *ctx) -+{ -+ struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); -+ -+ /* 5.19.8 SETEXTC: Set extension command (B9h) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETEXTC, -+ 0xff, 0x83, 0x94); -+ -+ /* 5.19.9 SETMIPI: Set MIPI control (BAh) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETMIPI, -+ 0x63, 0x03, 0x68, 0x6b, 0xb2, 0xc0); -+ -+ /* 5.19.2 SETPOWER: Set power (B1h) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETPOWER, -+ 0x48, 0x12, 0x72, 0x09, 0x32, 0x54, 0x71, 0x71, 0x57, 0x47); -+ -+ /* 5.19.3 SETDISP: Set display related register (B2h) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETDISP, -+ 0x00, 0x80, 0x64, 0x2c, 0x16, 0x2f); -+ -+ /* 5.19.4 SETCYC: Set display waveform cycles (B4h) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETCYC, -+ 0x73, 0x74, 0x73, 0x74, 0x73, 0x74, 0x01, 0x0c, 0x86, 0x75, -+ 0x00, 0x3f, 0x73, 0x74, 0x73, 0x74, 0x73, 0x74, 0x01, 0x0c, -+ 0x86); -+ -+ /* 5.19.5 SETVCOM: Set VCOM voltage (B6h) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETVCOM, -+ 0x6e, 0x6e); -+ -+ /* 5.19.19 SETGIP0: Set GIP Option0 (D3h) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETGIP0, -+ 0x00, 0x00, 0x07, 0x07, 0x40, 0x07, 0x0c, 0x00, 0x08, 0x10, -+ 0x08, 0x00, 0x08, 0x54, 0x15, 0x0a, 0x05, 0x0a, 0x02, 0x15, -+ 0x06, 0x05, 0x06, 0x47, 0x44, 0x0a, 0x0a, 0x4b, 0x10, 0x07, -+ 0x07, 0x0c, 0x40); -+ -+ /* 5.19.20 Set GIP Option1 (D5h) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETGIP1, -+ 0x1c, 0x1c, 0x1d, 0x1d, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, -+ 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x24, 0x25, 0x18, 0x18, -+ 0x26, 0x27, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -+ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x20, 0x21, -+ 0x18, 0x18, 0x18, 0x18); -+ -+ /* 5.19.21 Set GIP Option2 (D6h) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETGIP2, -+ 0x1c, 0x1c, 0x1d, 0x1d, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, -+ 0x01, 0x00, 0x0b, 0x0a, 0x09, 0x08, 0x21, 0x20, 0x18, 0x18, -+ 0x27, 0x26, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -+ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x25, 0x24, -+ 0x18, 0x18, 0x18, 0x18); -+ -+ /* 5.19.25 SETGAMMA: Set gamma curve related setting (E0h) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETGAMMA, -+ 0x00, 0x0a, 0x15, 0x1b, 0x1e, 0x21, 0x24, 0x22, 0x47, 0x56, -+ 0x65, 0x66, 0x6e, 0x82, 0x88, 0x8b, 0x9a, 0x9d, 0x98, 0xa8, -+ 0xb9, 0x5d, 0x5c, 0x61, 0x66, 0x6a, 0x6f, 0x7f, 0x7f, 0x00, -+ 0x0a, 0x15, 0x1b, 0x1e, 0x21, 0x24, 0x22, 0x47, 0x56, 0x65, -+ 0x65, 0x6e, 0x81, 0x87, 0x8b, 0x98, 0x9d, 0x99, 0xa8, 0xba, -+ 0x5d, 0x5d, 0x62, 0x67, 0x6b, 0x72, 0x7f, 0x7f); -+ -+ /* Unknown command, not listed in the HX8394-F datasheet */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_UNKNOWN1, -+ 0x1f, 0x31); -+ -+ /* 5.19.17 SETPANEL (CCh) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETPANEL, -+ 0x0b); -+ -+ /* Unknown command, not listed in the HX8394-F datasheet */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_UNKNOWN3, -+ 0x02); -+ -+ /* 5.19.11 Set register bank (BDh) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETREGBANK, -+ 0x02); -+ -+ /* Unknown command, not listed in the HX8394-F datasheet */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_UNKNOWN4, -+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -+ 0xff, 0xff); -+ -+ /* 5.19.11 Set register bank (BDh) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETREGBANK, -+ 0x00); -+ -+ /* 5.19.11 Set register bank (BDh) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETREGBANK, -+ 0x01); -+ -+ /* 5.19.2 SETPOWER: Set power (B1h) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETPOWER, -+ 0x00); -+ -+ /* 5.19.11 Set register bank (BDh) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETREGBANK, -+ 0x00); -+ -+ /* Unknown command, not listed in the HX8394-F datasheet */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_UNKNOWN5, -+ 0x40, 0x81, 0x50, 0x00, 0x1a, 0xfc, 0x01); -+ -+ /* Unknown command, not listed in the HX8394-F datasheet */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_UNKNOWN2, -+ 0xed); -+ -+ return 0; -+} -+ -+static const struct drm_display_mode powkiddy_x55_mode = { -+ .hdisplay = 720, -+ .hsync_start = 720 + 44, -+ .hsync_end = 720 + 44 + 20, -+ .htotal = 720 + 44 + 20 + 20, -+ .vdisplay = 1280, -+ .vsync_start = 1280 + 12, -+ .vsync_end = 1280 + 12 + 10, -+ .vtotal = 1280 + 12 + 10 + 10, -+ .clock = 63290, -+ .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, -+ .width_mm = 67, -+ .height_mm = 121, -+}; -+ -+static const struct hx8394_panel_desc powkiddy_x55_desc = { -+ .mode = &powkiddy_x55_mode, -+ .lanes = 4, -+ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | -+ MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET, -+ .format = MIPI_DSI_FMT_RGB888, -+ .init_sequence = powkiddy_x55_init_sequence, -+}; -+ - static int hx8394_enable(struct drm_panel *panel) - { - struct hx8394 *ctx = panel_to_hx8394(panel); -@@ -419,6 +555,7 @@ static void hx8394_remove(struct mipi_dsi_device *dsi) - - static const struct of_device_id hx8394_of_match[] = { - { .compatible = "hannstar,hsd060bhw4", .data = &hsd060bhw4_desc }, -+ { .compatible = "powkiddy,x55-panel", .data = &powkiddy_x55_desc }, - { /* sentinel */ } - }; - MODULE_DEVICE_TABLE(of, hx8394_of_match); --- -2.34.1 -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH V2 07/10] clk: rockchip: Mark pclk_usb as critical on rk3568 -Date: Mon, 4 Dec 2023 12:57:16 -0600 [thread overview] -Message-ID: <20231204185719.569021-8-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> - -From: Chris Morgan - -In the reference manual under "2.8.6 NIU Clock gating reliance" -it is stated that pclk_usb_niu has a dependency on hclk_usb_niu. - -While the manual does not state that this is a bi-directional -relationship it was noted that the sdmmc2 failed to operate for me in -mmc mode if the pclk_usb was not marked as critical. The parent clock -of the hclk_sdmmc2 is hclk_usb. - -Signed-off-by: Chris Morgan ---- - drivers/clk/rockchip/clk-rk3568.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/drivers/clk/rockchip/clk-rk3568.c b/drivers/clk/rockchip/clk-rk3568.c -index bfbcbb744327..c4fa2375dbfb 100644 ---- a/drivers/clk/rockchip/clk-rk3568.c -+++ b/drivers/clk/rockchip/clk-rk3568.c -@@ -1595,6 +1595,7 @@ static const char *const rk3568_cru_critical_clocks[] __initconst = { - "pclk_php", - "hclk_usb", - "hclk_vo", -+ "pclk_usb", - }; - - static const char *const rk3568_pmucru_critical_clocks[] __initconst = { --- -2.34.1 -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH V2 08/10] clk: rockchip: rk3568: Add PLL rate for 126.4MHz -Date: Mon, 4 Dec 2023 12:57:17 -0600 [thread overview] -Message-ID: <20231204185719.569021-9-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Add support for a PLL rate of 126.4MHz so that the Powkiddy X55 panel -can run at a requested 60hz. - -I have confirmed this rate fits with all the constraints -listed in the TRM for the VPLL (as an integer PLL) in Part 1 "Chapter -2 Clock & Reset Unit (CRU)." - -Signed-off-by: Chris Morgan ---- - drivers/clk/rockchip/clk-rk3568.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/drivers/clk/rockchip/clk-rk3568.c b/drivers/clk/rockchip/clk-rk3568.c -index c4fa2375dbfb..fa408fedf625 100644 ---- a/drivers/clk/rockchip/clk-rk3568.c -+++ b/drivers/clk/rockchip/clk-rk3568.c -@@ -78,6 +78,7 @@ static struct rockchip_pll_rate_table rk3568_pll_rates[] = { - RK3036_PLL_RATE(200000000, 1, 100, 3, 4, 1, 0), - RK3036_PLL_RATE(148500000, 1, 99, 4, 4, 1, 0), - RK3036_PLL_RATE(135000000, 2, 45, 4, 1, 1, 0), -+ RK3036_PLL_RATE(126400000, 1, 79, 5, 3, 1, 0), - RK3036_PLL_RATE(119000000, 3, 119, 4, 2, 1, 0), - RK3036_PLL_RATE(115200000, 1, 24, 5, 1, 1, 0), - RK3036_PLL_RATE(108000000, 2, 45, 5, 1, 1, 0), --- -2.34.1 -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan , - Krzysztof Kozlowski -Subject: [PATCH V2 09/10] dt-bindings: arm: rockchip: Add Powkiddy X55 -Date: Mon, 4 Dec 2023 12:57:18 -0600 [thread overview] -Message-ID: <20231204185719.569021-10-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> - -From: Chris Morgan - -The Powkiddy RK2023 is a handheld gaming device made by Powkiddy and -powered by the Rockchip RK3566 SoC. This device is somewhat similar -to the existing Powkiddy RK3566 devices, which have been grouped -together with a previous commit[1]. - -[1] https://lore.kernel.org/linux-rockchip/20231117202536.1387815-1-macroalpha82@gmail.com/T/#m4764997cfafaca22fe677200de96caa5fb8f0005 - -Signed-off-by: Chris Morgan -Acked-by: Krzysztof Kozlowski ---- - Documentation/devicetree/bindings/arm/rockchip.yaml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/Documentation/devicetree/bindings/arm/rockchip.yaml b/Documentation/devicetree/bindings/arm/rockchip.yaml -index 021a0e95ba62..5e22f247ee6e 100644 ---- a/Documentation/devicetree/bindings/arm/rockchip.yaml -+++ b/Documentation/devicetree/bindings/arm/rockchip.yaml -@@ -681,6 +681,7 @@ properties: - - enum: - - powkiddy,rgb30 - - powkiddy,rk2023 -+ - powkiddy,x55 - - const: rockchip,rk3566 - - - description: Radxa Compute Module 3(CM3) --- -2.34.1 -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH V2 10/10] arm64: dts: rockchip: Add Powkiddy X55 -Date: Mon, 4 Dec 2023 12:57:19 -0600 [thread overview] -Message-ID: <20231204185719.569021-11-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Add support for the Powkiddy X55. The Powkiddy RK2023 is a handheld -gaming device with a 720p 5.5 inch screen powered by the Rockchip -RK3566 SoC. It includes a Realtek 8821cs WiFi/BT module, 2 ADC -joysticks powered by 4 dedicated ADC channels, and several GPIO -face buttons. There are 2 SDMMC slots (sdmmc1 and sdmmc3), and an -8GB internal eMMC. - -Signed-off-by: Chris Morgan ---- - arch/arm64/boot/dts/rockchip/Makefile | 1 + - .../boot/dts/rockchip/rk3566-powkiddy-x55.dts | 926 ++++++++++++++++++ - 2 files changed, 927 insertions(+) - create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x55.dts - -diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile -index 9dcb65f76342..a1a06e33a299 100644 ---- a/arch/arm64/boot/dts/rockchip/Makefile -+++ b/arch/arm64/boot/dts/rockchip/Makefile -@@ -82,6 +82,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.1.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.2.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-rgb30.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-rk2023.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-x55.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-a.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-b.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-radxa-cm3-io.dtb -diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x55.dts b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x55.dts -new file mode 100644 -index 000000000000..4786b19fd017 ---- /dev/null -+++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x55.dts -@@ -0,0 +1,926 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+ -+/dts-v1/; -+ -+#include -+#include -+#include -+#include -+#include -+#include "rk3566.dtsi" -+ -+/ { -+ model = "Powkiddy x55"; -+ compatible = "powkiddy,x55", "rockchip,rk3566"; -+ -+ aliases { -+ mmc0 = &sdhci; -+ mmc1 = &sdmmc0; -+ mmc2 = &sdmmc2; -+ mmc3 = &sdmmc1; -+ }; -+ -+ chosen: chosen { -+ stdout-path = "serial2:1500000n8"; -+ }; -+ -+ adc_joystick: adc-joystick { -+ compatible = "adc-joystick"; -+ io-channels = <&saradc 0>, <&saradc 1>, -+ <&saradc 2>, <&saradc 3>; -+ poll-interval = <60>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ axis@0 { -+ reg = <0>; -+ abs-flat = <30>; -+ abs-fuzz = <20>; -+ abs-range = <15 1023>; -+ linux,code = ; -+ }; -+ -+ axis@1 { -+ reg = <1>; -+ abs-flat = <30>; -+ abs-fuzz = <20>; -+ abs-range = <1023 15>; -+ linux,code = ; -+ }; -+ -+ axis@2 { -+ reg = <2>; -+ abs-flat = <30>; -+ abs-fuzz = <20>; -+ abs-range = <15 1023>; -+ linux,code = ; -+ }; -+ -+ axis@3 { -+ reg = <3>; -+ abs-flat = <30>; -+ abs-fuzz = <20>; -+ abs-range = <1023 15>; -+ linux,code = ; -+ }; -+ }; -+ -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ power-supply = <&vcc_sys>; -+ pwms = <&pwm4 0 25000 0>; -+ }; -+ -+ battery: battery { -+ compatible = "simple-battery"; -+ charge-full-design-microamp-hours = <4000000>; -+ charge-term-current-microamp = <300000>; -+ constant-charge-current-max-microamp = <2000000>; -+ constant-charge-voltage-max-microvolt = <4300000>; -+ factory-internal-resistance-micro-ohms = <91000>; -+ voltage-max-design-microvolt = <4138000>; -+ voltage-min-design-microvolt = <3400000>; -+ -+ ocv-capacity-celsius = <20>; -+ ocv-capacity-table-0 = <4138000 100>, <4083000 95>, <4059000 90>, <4044000 85>, -+ <4030000 80>, <4020000 75>, <4006000 70>, <3972000 65>, -+ <3934000 60>, <3904000 55>, <3878000 50>, <3857000 45>, -+ <3843000 40>, <3826000 35>, <3801000 30>, <3768000 25>, -+ <3735000 20>, <3688000 15>, <3621000 10>, <3553000 5>, -+ <3400000 0>; -+ }; -+ -+ gpio_keys_control: gpio-keys-control { -+ compatible = "gpio-keys"; -+ pinctrl-0 = <&btn_pins_ctrl>; -+ pinctrl-names = "default"; -+ -+ button-a { -+ gpios = <&gpio3 RK_PD3 GPIO_ACTIVE_LOW>; -+ label = "EAST"; -+ linux,code = ; -+ }; -+ -+ button-b { -+ gpios = <&gpio3 RK_PD2 GPIO_ACTIVE_LOW>; -+ label = "SOUTH"; -+ linux,code = ; -+ }; -+ -+ button-down { -+ gpios = <&gpio4 RK_PA1 GPIO_ACTIVE_LOW>; -+ label = "DPAD-DOWN"; -+ linux,code = ; -+ }; -+ -+ button-l1 { -+ gpios = <&gpio3 RK_PD0 GPIO_ACTIVE_LOW>; -+ label = "TL"; -+ linux,code = ; -+ }; -+ -+ button-l2 { -+ gpios = <&gpio3 RK_PD1 GPIO_ACTIVE_LOW>; -+ label = "TL2"; -+ linux,code = ; -+ }; -+ -+ button-left { -+ gpios = <&gpio3 RK_PD6 GPIO_ACTIVE_LOW>; -+ label = "DPAD-LEFT"; -+ linux,code = ; -+ }; -+ -+ button-right { -+ gpios = <&gpio3 RK_PD7 GPIO_ACTIVE_LOW>; -+ label = "DPAD-RIGHT"; -+ linux,code = ; -+ }; -+ -+ button-select { -+ gpios = <&gpio4 RK_PA4 GPIO_ACTIVE_LOW>; -+ label = "SELECT"; -+ linux,code = ; -+ }; -+ -+ button-start { -+ gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_LOW>; -+ label = "START"; -+ linux,code = ; -+ }; -+ -+ button-thumbl { -+ gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_LOW>; -+ label = "THUMBL"; -+ linux,code = ; -+ }; -+ -+ button-thumbr { -+ gpios = <&gpio4 RK_PB0 GPIO_ACTIVE_LOW>; -+ label = "THUMBR"; -+ linux,code = ; -+ }; -+ -+ button-r1 { -+ gpios = <&gpio3 RK_PC6 GPIO_ACTIVE_LOW>; -+ label = "TR"; -+ linux,code = ; -+ }; -+ -+ button-r2 { -+ gpios = <&gpio3 RK_PC7 GPIO_ACTIVE_LOW>; -+ label = "TR2"; -+ linux,code = ; -+ }; -+ -+ button-up { -+ gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_LOW>; -+ label = "DPAD-UP"; -+ linux,code = ; -+ }; -+ -+ button-x { -+ gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>; -+ label = "NORTH"; -+ linux,code = ; -+ }; -+ -+ button-y { -+ gpios = <&gpio3 RK_PD4 GPIO_ACTIVE_LOW>; -+ label = "WEST"; -+ linux,code = ; -+ }; -+ }; -+ -+ gpio_keys_vol: gpio-keys-vol { -+ compatible = "gpio-keys"; -+ autorepeat; -+ pinctrl-0 = <&btn_pins_vol>; -+ pinctrl-names = "default"; -+ -+ button-voldown { -+ gpios = <&gpio4 RK_PA3 GPIO_ACTIVE_LOW>; -+ label = "VOLUMEDOWN"; -+ linux,code = ; -+ }; -+ -+ button-volup { -+ gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_LOW>; -+ label = "VOLUMEUP"; -+ linux,code = ; -+ }; -+ }; -+ -+ gpio_leds: gpio-leds { -+ compatible = "gpio-leds"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&led_pins>; -+ -+ red_led: led-0 { -+ color = ; -+ default-state = "off"; -+ gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>; -+ function = LED_FUNCTION_STATUS; -+ }; -+ -+ green_led: led-1 { -+ color = ; -+ default-state = "on"; -+ gpios = <&gpio4 RK_PB5 GPIO_ACTIVE_HIGH>; -+ function = LED_FUNCTION_POWER; -+ }; -+ -+ amber_led: led-2 { -+ color = ; -+ gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>; -+ function = LED_FUNCTION_CHARGING; -+ }; -+ -+ }; -+ -+ hdmi-con { -+ compatible = "hdmi-connector"; -+ ddc-i2c-bus = <&i2c5>; -+ type = "c"; -+ -+ port { -+ hdmi_con_in: endpoint { -+ remote-endpoint = <&hdmi_out_con>; -+ }; -+ }; -+ }; -+ -+ sdio_pwrseq: sdio-pwrseq { -+ compatible = "mmc-pwrseq-simple"; -+ clocks = <&rk817 1>; -+ clock-names = "ext_clock"; -+ pinctrl-0 = <&wifi_enable_h>; -+ pinctrl-names = "default"; -+ post-power-on-delay-ms = <200>; -+ reset-gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_LOW>; -+ }; -+ -+ /* Channels reversed for both headphones and speakers. */ -+ sound { -+ compatible = "simple-audio-card"; -+ pinctrl-0 = <&hp_det>; -+ pinctrl-names = "default"; -+ simple-audio-card,name = "rk817_ext"; -+ simple-audio-card,aux-devs = <&spk_amp>; -+ simple-audio-card,format = "i2s"; -+ simple-audio-card,hp-det-gpio = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>; -+ simple-audio-card,mclk-fs = <256>; -+ simple-audio-card,widgets = -+ "Microphone", "Mic Jack", -+ "Headphone", "Headphones", -+ "Speaker", "Internal Speakers"; -+ simple-audio-card,routing = -+ "MICL", "Mic Jack", -+ "Headphones", "HPOL", -+ "Headphones", "HPOR", -+ "Internal Speakers", "Speaker Amp OUTL", -+ "Internal Speakers", "Speaker Amp OUTR", -+ "Speaker Amp INL", "HPOL", -+ "Speaker Amp INR", "HPOR"; -+ simple-audio-card,pin-switches = "Internal Speakers"; -+ -+ simple-audio-card,codec { -+ sound-dai = <&rk817>; -+ }; -+ -+ simple-audio-card,cpu { -+ sound-dai = <&i2s1_8ch>; -+ }; -+ }; -+ -+ spk_amp: audio-amplifier { -+ compatible = "simple-audio-amplifier"; -+ enable-gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>; -+ pinctrl-0 = <&spk_amp_enable_h>; -+ pinctrl-names = "default"; -+ sound-name-prefix = "Speaker Amp"; -+ }; -+ -+ vcc5v0_host: regulator-vcc5v0-host { -+ compatible = "regulator-fixed"; -+ enable-active-high; -+ gpio = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>; -+ pinctrl-0 = <&vcc5v0_host_en>; -+ pinctrl-names = "default"; -+ regulator-name = "vcc5v0_host"; -+ vin-supply = <&dcdc_boost>; -+ }; -+ -+ vcc_lcd: regulator-vcc-lcd { -+ compatible = "regulator-fixed"; -+ enable-active-high; -+ gpio = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>; -+ pinctrl-0 = <&vcc_lcd_en>; -+ pinctrl-names = "default"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc_lcd"; -+ }; -+ -+ vcc_sys: regulator-vcc-sys { -+ compatible = "regulator-fixed"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3800000>; -+ regulator-max-microvolt = <3800000>; -+ regulator-name = "vcc_sys"; -+ }; -+ -+ vcc_wifi: regulator-vcc-wifi { -+ compatible = "regulator-fixed"; -+ gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>; -+ pinctrl-0 = <&vcc_wifi_h>; -+ pinctrl-names = "default"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc_wifi"; -+ }; -+}; -+ -+&combphy1 { -+ status = "okay"; -+}; -+ -+&cru { -+ assigned-clocks = <&pmucru CLK_RTC_32K>, <&cru PLL_GPLL>, -+ <&pmucru PLL_PPLL>, <&cru PLL_VPLL>; -+ assigned-clock-rates = <32768>, <1200000000>, -+ <200000000>, <126400000>; -+}; -+ -+&cpu0 { -+ cpu-supply = <&vdd_cpu>; -+}; -+ -+&cpu1 { -+ cpu-supply = <&vdd_cpu>; -+}; -+ -+&cpu2 { -+ cpu-supply = <&vdd_cpu>; -+}; -+ -+&cpu3 { -+ cpu-supply = <&vdd_cpu>; -+}; -+ -+&dsi_dphy0 { -+ status = "okay"; -+}; -+ -+&dsi0 { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ ports { -+ dsi0_in: port@0 { -+ reg = <0>; -+ dsi0_in_vp1: endpoint { -+ remote-endpoint = <&vp1_out_dsi0>; -+ }; -+ }; -+ -+ dsi0_out: port@1 { -+ reg = <1>; -+ mipi_out_panel: endpoint { -+ remote-endpoint = <&mipi_in_panel>; -+ }; -+ }; -+ }; -+ -+ panel: panel@0 { -+ compatible = "powkiddy,x55-panel", "himax,hx8394"; -+ reg = <0>; -+ backlight = <&backlight>; -+ iovcc-supply = <&vcc_lcd>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&lcd_rst>; -+ reset-gpios = <&gpio0 RK_PD5 GPIO_ACTIVE_LOW>; -+ rotation = <270>; -+ vcc-supply = <&vcc_lcd>; -+ -+ port { -+ mipi_in_panel: endpoint { -+ remote-endpoint = <&mipi_out_panel>; -+ }; -+ }; -+ }; -+}; -+ -+&gpu { -+ mali-supply = <&vdd_gpu>; -+ status = "okay"; -+}; -+ -+&hdmi { -+ ddc-i2c-bus = <&i2c5>; -+ pinctrl-0 = <&hdmitxm0_cec>; -+ pinctrl-names = "default"; -+ status = "okay"; -+}; -+ -+&hdmi_in { -+ hdmi_in_vp0: endpoint { -+ remote-endpoint = <&vp0_out_hdmi>; -+ }; -+}; -+ -+&hdmi_out { -+ hdmi_out_con: endpoint { -+ remote-endpoint = <&hdmi_con_in>; -+ }; -+}; -+ -+&hdmi_sound { -+ status = "okay"; -+}; -+ -+&i2c0 { -+ status = "okay"; -+ -+ rk817: pmic@20 { -+ compatible = "rockchip,rk817"; -+ reg = <0x20>; -+ assigned-clocks = <&cru I2S1_MCLKOUT_TX>; -+ assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>; -+ clock-names = "mclk"; -+ clock-output-names = "rk808-clkout1", "rk808-clkout2"; -+ clocks = <&cru I2S1_MCLKOUT_TX>; -+ interrupt-parent = <&gpio0>; -+ interrupts = ; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2s1m0_mclk>, <&pmic_int_l>; -+ wakeup-source; -+ #clock-cells = <1>; -+ #sound-dai-cells = <0>; -+ -+ vcc1-supply = <&vcc_sys>; -+ vcc2-supply = <&vcc_sys>; -+ vcc3-supply = <&vcc_sys>; -+ vcc4-supply = <&vcc_sys>; -+ vcc5-supply = <&vcc_sys>; -+ vcc6-supply = <&vcc_sys>; -+ vcc7-supply = <&vcc_sys>; -+ vcc8-supply = <&vcc_sys>; -+ vcc9-supply = <&dcdc_boost>; -+ -+ regulators { -+ vdd_logic: DCDC_REG1 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <500000>; -+ regulator-max-microvolt = <1350000>; -+ regulator-ramp-delay = <6001>; -+ regulator-initial-mode = <0x2>; -+ regulator-name = "vdd_logic"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ regulator-suspend-microvolt = <900000>; -+ }; -+ }; -+ -+ vdd_gpu: DCDC_REG2 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <500000>; -+ regulator-max-microvolt = <1350000>; -+ regulator-ramp-delay = <6001>; -+ regulator-initial-mode = <0x2>; -+ regulator-name = "vdd_gpu"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc_ddr: DCDC_REG3 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-initial-mode = <0x2>; -+ regulator-name = "vcc_ddr"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ vcc_3v3: DCDC_REG4 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-initial-mode = <0x2>; -+ regulator-name = "vcc_3v3"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; -+ }; -+ -+ vcca1v8_pmu: LDO_REG1 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "vcca1v8_pmu"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <1800000>; -+ }; -+ }; -+ -+ vdda_0v9: LDO_REG2 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <900000>; -+ regulator-max-microvolt = <900000>; -+ regulator-name = "vdda_0v9"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vdda0v9_pmu: LDO_REG3 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <900000>; -+ regulator-max-microvolt = <900000>; -+ regulator-name = "vdda0v9_pmu"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <900000>; -+ }; -+ }; -+ -+ vccio_acodec: LDO_REG4 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vccio_acodec"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vccio_sd: LDO_REG5 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vccio_sd"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc3v3_pmu: LDO_REG6 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc3v3_pmu"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; -+ }; -+ -+ vcc_1v8: LDO_REG7 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "vcc_1v8"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc1v8_dvp: LDO_REG8 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "vcc1v8_dvp"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ vcc2v8_dvp: LDO_REG9 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc2v8_dvp"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ dcdc_boost: BOOST { -+ regulator-min-microvolt = <4700000>; -+ regulator-max-microvolt = <5400000>; -+ regulator-name = "boost"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ otg_switch: OTG_SWITCH { -+ regulator-name = "otg_switch"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ }; -+ -+ rk817_charger: charger { -+ monitored-battery = <&battery>; -+ rockchip,resistor-sense-micro-ohms = <10000>; -+ rockchip,sleep-enter-current-microamp = <150000>; -+ rockchip,sleep-filter-current-microamp = <100000>; -+ }; -+ -+ }; -+ -+ vdd_cpu: regulator@1c { -+ compatible = "tcs,tcs4525"; -+ reg = <0x1c>; -+ fcs,suspend-voltage-selector = <1>; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <712500>; -+ regulator-max-microvolt = <1390000>; -+ regulator-name = "vdd_cpu"; -+ regulator-ramp-delay = <2300>; -+ vin-supply = <&vcc_sys>; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+}; -+ -+&i2c5 { -+ pinctrl-0 = <&i2c5m1_xfer>; -+ pinctrl-names = "default"; -+ status = "okay"; -+}; -+ -+&i2s0_8ch { -+ status = "okay"; -+}; -+ -+&i2s1_8ch { -+ pinctrl-0 = <&i2s1m0_sclktx>, <&i2s1m0_lrcktx>, <&i2s1m0_sdi0>, -+ <&i2s1m0_sdo0>; -+ pinctrl-names = "default"; -+ rockchip,trcm-sync-tx-only; -+ status = "okay"; -+}; -+ -+&pinctrl { -+ audio-amplifier { -+ spk_amp_enable_h: spk-amp-enable-h { -+ rockchip,pins = -+ <4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ gpio-control { -+ btn_pins_ctrl: btn-pins-ctrl { -+ rockchip,pins = -+ <3 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PD1 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PD2 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PD7 RK_FUNC_GPIO &pcfg_pull_up>, -+ <4 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>, -+ <4 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>, -+ <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>, -+ <4 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>, -+ <4 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, -+ <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ -+ btn_pins_vol: btn-pins-vol { -+ rockchip,pins = -+ <4 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>, -+ <4 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ gpio-lcd { -+ lcd_rst: lcd-rst { -+ rockchip,pins = -+ <0 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ gpio-leds { -+ led_pins: led-pins { -+ rockchip,pins = -+ <4 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>, -+ <4 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>, -+ <4 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ hp-detect { -+ hp_det: hp-det { -+ rockchip,pins = -+ <4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ pmic { -+ pmic_int_l: pmic-int-l { -+ rockchip,pins = -+ <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ sdio-pwrseq { -+ wifi_enable_h: wifi-enable-h { -+ rockchip,pins = -+ <0 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ usb { -+ vcc5v0_host_en: vcc5v0-host-en { -+ rockchip,pins = -+ <4 RK_PC4 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ -+ vcc5v0_otg_en: vcc5v0-otg-en { -+ rockchip,pins = -+ <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ vcc-lcd { -+ vcc_lcd_en: vcc-lcd-en { -+ rockchip,pins = -+ <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ vcc-wifi { -+ vcc_wifi_h: vcc-wifi-h { -+ rockchip,pins = -+ <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+}; -+ -+&pmu_io_domains { -+ status = "okay"; -+ pmuio1-supply = <&vcc3v3_pmu>; -+ pmuio2-supply = <&vcca1v8_pmu>; -+ vccio1-supply = <&vccio_acodec>; -+ vccio3-supply = <&vccio_sd>; -+ vccio4-supply = <&vcca1v8_pmu>; -+ vccio5-supply = <&vcc2v8_dvp>; -+ vccio6-supply = <&vcc1v8_dvp>; -+ vccio7-supply = <&vcc_3v3>; -+}; -+ -+&pwm4 { -+ status = "okay"; -+}; -+ -+&saradc { -+ vref-supply = <&vcc_1v8>; -+ status = "okay"; -+}; -+ -+&sdhci { -+ bus-width = <8>; -+ mmc-hs200-1_8v; -+ non-removable; -+ pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>, -+ <&emmc_datastrobe>, <&emmc_rstnout>; -+ pinctrl-names = "default"; -+ status = "okay"; -+}; -+ -+&sdmmc0 { -+ bus-width = <4>; -+ cap-mmc-highspeed; -+ cap-sd-highspeed; -+ disable-wp; -+ pinctrl-0 = <&sdmmc0_bus4>, <&sdmmc0_clk>, <&sdmmc0_cmd>, -+ <&sdmmc0_det>; -+ pinctrl-names = "default"; -+ sd-uhs-sdr104; -+ vqmmc-supply = <&vccio_sd>; -+ status = "okay"; -+}; -+ -+&sdmmc1 { -+ bus-width = <4>; -+ cap-sd-highspeed; -+ cap-sdio-irq; -+ keep-power-in-suspend; -+ mmc-pwrseq = <&sdio_pwrseq>; -+ non-removable; -+ pinctrl-0 = <&sdmmc1_bus4>, <&sdmmc1_cmd>, <&sdmmc1_clk>; -+ pinctrl-names = "default"; -+ vmmc-supply = <&vcc_wifi>; -+ status = "okay"; -+}; -+ -+&sdmmc2 { -+ bus-width = <4>; -+ cap-mmc-highspeed; -+ cap-sd-highspeed; -+ disable-wp; -+ pinctrl-0 = <&sdmmc2m1_bus4>, <&sdmmc2m1_cmd>, <&sdmmc2m1_clk>, -+ <&sdmmc2m1_det>; -+ pinctrl-names = "default"; -+ sd-uhs-sdr104; -+ vqmmc-supply = <&vcc2v8_dvp>; -+ status = "okay"; -+}; -+ -+&tsadc { -+ rockchip,hw-tshut-mode = <1>; -+ rockchip,hw-tshut-polarity = <0>; -+ status = "okay"; -+}; -+ -+&uart1 { -+ pinctrl-0 = <&uart1m0_xfer>, <&uart1m0_ctsn>, <&uart1m0_rtsn>; -+ pinctrl-names = "default"; -+ uart-has-rtscts; -+ status = "okay"; -+ -+ bluetooth { -+ compatible = "realtek,rtl8821cs-bt", "realtek,rtl8723bs-bt"; -+ device-wake-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>; -+ enable-gpios = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>; -+ host-wake-gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>; -+ }; -+}; -+ -+&uart2 { -+ status = "okay"; -+}; -+ -+&usb_host0_xhci { -+ phys = <&usb2phy0_otg>; -+ phy-names = "usb2-phy"; -+ status = "okay"; -+}; -+ -+&usb_host1_xhci { -+ status = "okay"; -+}; -+ -+&usb2phy0 { -+ status = "okay"; -+}; -+ -+&usb2phy0_otg { -+ status = "okay"; -+}; -+ -+&usb2phy0_host { -+ phy-supply = <&vcc5v0_host>; -+ status = "okay"; -+}; -+ -+&vop { -+ assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; -+ assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; -+ status = "okay"; -+}; -+ -+&vop_mmu { -+ status = "okay"; -+}; -+ -+&vp0 { -+ vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { -+ reg = ; -+ remote-endpoint = <&hdmi_in_vp0>; -+ }; -+}; -+ -+&vp1 { -+ vp1_out_dsi0: endpoint@ROCKCHIP_VOP2_EP_MIPI0 { -+ reg = ; -+ remote-endpoint = <&dsi0_in_vp1>; -+ }; -+}; --- -2.34.1 From 54902df0508a5760d07a0b491a066ac5aa30d8a8 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 7 Feb 2024 17:18:07 +0000 Subject: [PATCH 123/167] Vita3k start script should sync configuration from /usr/config to catch any changes without overwriting existing settings. --- .../standalone/vita3k-sa/scripts/start_vita3k.sh | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/emulators/standalone/vita3k-sa/scripts/start_vita3k.sh b/packages/emulators/standalone/vita3k-sa/scripts/start_vita3k.sh index 7f0f3c88ab..df601ef148 100644 --- a/packages/emulators/standalone/vita3k-sa/scripts/start_vita3k.sh +++ b/packages/emulators/standalone/vita3k-sa/scripts/start_vita3k.sh @@ -9,13 +9,11 @@ jslisten set "-9 Vita3K" #Check if vita3k folder exists in /storage/.config/vita3k if [ ! -d "/storage/.config/vita3k" ]; then mkdir -p "/storage/.config/vita3k" - cp -r "/usr/config/vita3k" "/storage/.config/" fi -if [ ! -d "/storage/.config/vita3k/lang/user" ] -then - mkdir -p "/storage/.config/vita3k/lang/user" -fi +#Make sure we sync any changes from /storage/.config so new features will be enabled +#without overwriting existing settings. +rsync -ah --update /usr/config/vita3k/* /storage/.config/vita3k 2>/dev/null #Check if vita3k folder exists in /storage/roms/psvita if [ ! -d "/storage/roms/psvita/vita3k" ]; then From a8488eca91fe7f1b8dc8e038cf9ff03ca89e3ebf Mon Sep 17 00:00:00 2001 From: sydarn Date: Wed, 7 Feb 2024 18:33:02 +0100 Subject: [PATCH 124/167] Fix rgb10max3 quirk directory and model name in dts --- .../devices/Powkiddy RGB10 Max 3/010-governors | 9 --------- .../Powkiddy RGB10 Max 3/030-suspend_mode | 14 -------------- .../Powkiddy RGB10 Max 3/050-game_configs | 17 ----------------- .../devices/Powkiddy RGB10MAX3/050-game_configs | 14 -------------- .../patches/RK3566/010-powkiddy-rgb10max3.patch | 2 +- 5 files changed, 1 insertion(+), 55 deletions(-) delete mode 100755 packages/hardware/quirks/devices/Powkiddy RGB10 Max 3/010-governors delete mode 100755 packages/hardware/quirks/devices/Powkiddy RGB10 Max 3/030-suspend_mode delete mode 100755 packages/hardware/quirks/devices/Powkiddy RGB10 Max 3/050-game_configs delete mode 100755 packages/hardware/quirks/devices/Powkiddy RGB10MAX3/050-game_configs diff --git a/packages/hardware/quirks/devices/Powkiddy RGB10 Max 3/010-governors b/packages/hardware/quirks/devices/Powkiddy RGB10 Max 3/010-governors deleted file mode 100755 index e1a4622419..0000000000 --- a/packages/hardware/quirks/devices/Powkiddy RGB10 Max 3/010-governors +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -cat </storage/.config/profile.d/010-governors -CPU_FREQ=("/sys/devices/system/cpu/cpufreq/policy0") -GPU_FREQ="/sys/devices/platform/fde60000.gpu/devfreq/fde60000.gpu" -DMC_FREQ="/sys/devices/platform/dmc/devfreq/dmc" -EOF diff --git a/packages/hardware/quirks/devices/Powkiddy RGB10 Max 3/030-suspend_mode b/packages/hardware/quirks/devices/Powkiddy RGB10 Max 3/030-suspend_mode deleted file mode 100755 index 523d9736bb..0000000000 --- a/packages/hardware/quirks/devices/Powkiddy RGB10 Max 3/030-suspend_mode +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -. /etc/profile.d/001-functions - -MYSLEEPMODE=$(get_setting system.suspendmode) -if [ -z "${MYSLEEPMODE}" ] -then - /usr/bin/suspendmode mem -fi - -echo s2idle >/sys/power/mem_sleep - diff --git a/packages/hardware/quirks/devices/Powkiddy RGB10 Max 3/050-game_configs b/packages/hardware/quirks/devices/Powkiddy RGB10 Max 3/050-game_configs deleted file mode 100755 index 8fc2c5134d..0000000000 --- a/packages/hardware/quirks/devices/Powkiddy RGB10 Max 3/050-game_configs +++ /dev/null @@ -1,17 +0,0 @@ - -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) - -. /etc/profile - -#Set up gzdoom -if [ ! -d "/storage/.config/gzdoom/" ]; then - cp -rf /usr/config/gzdoom /storage/.config/ - sed -i '/Joy10=/c\Joy10=togglemap; - /Joy9=/c\Joy9=menu_main; - /vid_defheight=/c\vid_defheight=480; - /vid_defwidth=/c\vid_defwidth=640' /storage/.config/gzdoom/gzdoom.ini -fi - -#Set Duckstastion SA to rotate -sed -i '/^Rotate =/c\Rotate = 1' /storage/.config/duckstation/settings.ini diff --git a/packages/hardware/quirks/devices/Powkiddy RGB10MAX3/050-game_configs b/packages/hardware/quirks/devices/Powkiddy RGB10MAX3/050-game_configs deleted file mode 100755 index a7937224aa..0000000000 --- a/packages/hardware/quirks/devices/Powkiddy RGB10MAX3/050-game_configs +++ /dev/null @@ -1,14 +0,0 @@ - -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) - -. /etc/profile - -#Set up gzdoom -if [ ! -d "/storage/.config/gzdoom/" ]; then - cp -rf /usr/config/gzdoom /storage/.config/ - sed -i '/Joy10=/c\Joy10=togglemap; - /Joy9=/c\Joy9=menu_main; - /vid_defheight=/c\vid_defheight=720; - /vid_defwidth=/c\vid_defwidth=1280' /storage/.config/gzdoom/gzdoom.ini -fi diff --git a/projects/Rockchip/packages/linux/patches/RK3566/010-powkiddy-rgb10max3.patch b/projects/Rockchip/packages/linux/patches/RK3566/010-powkiddy-rgb10max3.patch index b4877568b8..3b9a63ddef 100644 --- a/projects/Rockchip/packages/linux/patches/RK3566/010-powkiddy-rgb10max3.patch +++ b/projects/Rockchip/packages/linux/patches/RK3566/010-powkiddy-rgb10max3.patch @@ -26,7 +26,7 @@ index 000000000000..26884dfda818 +#include "rk3566-powkiddy-rk2023.dtsi" + +/ { -+ model = "Powkiddy RGB10MAX3"; ++ model = "Powkiddy RGB10 Max 3"; + compatible = "powkiddy,rgb10max3", "rockchip,rk3566"; +}; + From bf90f7af16390830df298552c3eb621d3bb79f01 Mon Sep 17 00:00:00 2001 From: sydarn Date: Wed, 7 Feb 2024 18:35:14 +0100 Subject: [PATCH 125/167] linux patches: symlink RK3566 to rk3566-X55 --- .../packages/linux/patches/RK3566-X55 | 1 + .../RK3566-X55/001-fix-model-names.patch | 60 - .../002-rk817-power-driver-names.patch | 21 - .../RK3566-X55/003-v4-add-rk2023.patch | 1495 --------------- .../patches/RK3566-X55/004-add-rg351v.patch | 715 ------- .../RK3566-X55/005-set-mac-address.patch | 15 - .../RK3566-X55/006-v2-add-powkiddy-x55.patch | 1657 ----------------- 7 files changed, 1 insertion(+), 3963 deletions(-) create mode 120000 projects/Rockchip/packages/linux/patches/RK3566-X55 delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566-X55/001-fix-model-names.patch delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566-X55/002-rk817-power-driver-names.patch delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566-X55/003-v4-add-rk2023.patch delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566-X55/004-add-rg351v.patch delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566-X55/005-set-mac-address.patch delete mode 100644 projects/Rockchip/packages/linux/patches/RK3566-X55/006-v2-add-powkiddy-x55.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55 b/projects/Rockchip/packages/linux/patches/RK3566-X55 new file mode 120000 index 0000000000..9207b5754b --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566-X55 @@ -0,0 +1 @@ +RK3566 \ No newline at end of file diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55/001-fix-model-names.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55/001-fix-model-names.patch deleted file mode 100644 index aac0fbffaa..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566-X55/001-fix-model-names.patch +++ /dev/null @@ -1,60 +0,0 @@ -diff -rupN linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353p.dts linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353p.dts ---- linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353p.dts 2023-10-03 23:48:15.144113656 +0000 -+++ linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353p.dts 2023-10-03 23:48:55.102040451 +0000 -@@ -8,7 +8,7 @@ - #include "rk3566-anbernic-rg353x.dtsi" - - / { -- model = "RG353P"; -+ model = "Anbernic RG353P"; - compatible = "anbernic,rg353p", "rockchip,rk3566"; - - aliases { -diff -rupN linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353ps.dts linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353ps.dts ---- linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353ps.dts 2023-10-03 23:48:15.144113656 +0000 -+++ linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353ps.dts 2023-10-03 23:49:18.163158275 +0000 -@@ -8,7 +8,7 @@ - #include "rk3566-anbernic-rg353x.dtsi" - - / { -- model = "RG353PS"; -+ model = "Anbernic RG353PS"; - compatible = "anbernic,rg353ps", "rockchip,rk3566"; - - aliases { -diff -rupN linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353v.dts linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353v.dts ---- linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353v.dts 2023-10-03 23:48:15.144113656 +0000 -+++ linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353v.dts 2023-10-03 23:49:09.254725978 +0000 -@@ -8,7 +8,7 @@ - #include "rk3566-anbernic-rg353x.dtsi" - - / { -- model = "RG353V"; -+ model = "Anbernic RG353V"; - compatible = "anbernic,rg353v", "rockchip,rk3566"; - - aliases { -diff -rupN linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353vs.dts linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353vs.dts ---- linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353vs.dts 2023-10-03 23:48:15.144113656 +0000 -+++ linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353vs.dts 2023-10-03 23:49:30.947779716 +0000 -@@ -8,7 +8,7 @@ - #include "rk3566-anbernic-rg353x.dtsi" - - / { -- model = "RG353VS"; -+ model = "Anbernic RG353VS"; - compatible = "anbernic,rg353vs", "rockchip,rk3566"; - - aliases { -diff -rupN linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg503.dts linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg503.dts ---- linux-6.6-rc3.orig/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg503.dts 2023-10-03 23:48:15.144113656 +0000 -+++ linux-6.6-rc3/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg503.dts 2023-10-03 23:49:41.912313646 +0000 -@@ -8,7 +8,7 @@ - #include "rk3566-anbernic-rgxx3.dtsi" - - / { -- model = "RG503"; -+ model = "Anbernic RG503"; - compatible = "anbernic,rg503", "rockchip,rk3566"; - - aliases { diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55/002-rk817-power-driver-names.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55/002-rk817-power-driver-names.patch deleted file mode 100644 index 265df75ad8..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566-X55/002-rk817-power-driver-names.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -rupN linux-6.6-orig/drivers/power/supply/rk817_charger.c linux-6.6/drivers/power/supply/rk817_charger.c ---- linux-6.6-orig/drivers/power/supply/rk817_charger.c 2023-10-30 02:31:08.000000000 +0000 -+++ linux-6.6/drivers/power/supply/rk817_charger.c 2023-11-22 19:43:15.957223087 +0000 -@@ -679,7 +679,7 @@ static enum power_supply_usb_type rk817_ - }; - - static const struct power_supply_desc rk817_bat_desc = { -- .name = "rk817-battery", -+ .name = "battery", - .type = POWER_SUPPLY_TYPE_BATTERY, - .properties = rk817_bat_props, - .num_properties = ARRAY_SIZE(rk817_bat_props), -@@ -687,7 +687,7 @@ static const struct power_supply_desc rk - }; - - static const struct power_supply_desc rk817_chg_desc = { -- .name = "rk817-charger", -+ .name = "charger", - .type = POWER_SUPPLY_TYPE_USB, - .usb_types = rk817_usb_type, - .num_usb_types = ARRAY_SIZE(rk817_usb_type), diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55/003-v4-add-rk2023.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55/003-v4-add-rk2023.patch deleted file mode 100644 index 707113aa95..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566-X55/003-v4-add-rk2023.patch +++ /dev/null @@ -1,1495 +0,0 @@ -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, - sebastian.reichel@collabora.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, - heiko@sntech.de, conor+dt@kernel.org, - krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, - Chris Morgan -Subject: [PATCH V4 0/6] rockchip: Add Powkiddy RK2023 -Date: Fri, 17 Nov 2023 14:25:30 -0600 [thread overview] -Message-ID: <20231117202536.1387815-1-macroalpha82@gmail.com> (raw) - -From: Chris Morgan - -Add support for the Powkiddy RK2023, which is extremely similar to -existing Powkiddy RGB30 device. - -Changes since V3: - - Corrected commit subject lines. - -Changes since V2: - - Split "hold panel in reset" to a separate patch for the NV3051D. - - Changed replaced common include to a new Powkiddy specific include - to better reflect the similarity of these two devices (and so as - to not have to delete so many nodes). - -Changes since V1: - - Necessary clock changes have been accepted to mainline, so removed - from this series. - https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git/commit/?id=f1db0865b4628d5e2e85347350c077a71f0629d2 - - Combined Powkiddy RK3566 devices in devicetree documentation. - Dropped ack from binding as this change is vastly different than - the previous update. - - Updated panel driver to hold panel in reset status after unprepare. - -Chris Morgan (6): - dt-bindings: display: panel: Update NewVision NV3051D compatibles - drm/panel: nv3051d: Hold panel in reset for unprepare - nv3051d: Add Powkiddy RK2023 Panel Support - dt-bindings: arm: rockchip: Add Powkiddy RK2023 - arm64: dts: rockchip: Update powkiddy,rgb30 include to rk2023 DTSI - arm: dts: rockchip: Add Powkiddy RK2023 - - .../devicetree/bindings/arm/rockchip.yaml | 6 +- - .../display/panel/newvision,nv3051d.yaml | 2 +- - arch/arm64/boot/dts/rockchip/Makefile | 1 + - .../dts/rockchip/rk3566-powkiddy-rgb30.dts | 154 +-- - .../dts/rockchip/rk3566-powkiddy-rk2023.dts | 38 + - .../dts/rockchip/rk3566-powkiddy-rk2023.dtsi | 875 ++++++++++++++++++ - .../gpu/drm/panel/panel-newvision-nv3051d.c | 57 +- - 7 files changed, 981 insertions(+), 152 deletions(-) - create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts - create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi - --- -2.34.1 -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, - sebastian.reichel@collabora.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, - heiko@sntech.de, conor+dt@kernel.org, - krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, - Chris Morgan , - Krzysztof Kozlowski -Subject: [PATCH V4 1/6] dt-bindings: display: nv3051d: Update NewVision NV3051D compatibles -Date: Fri, 17 Nov 2023 14:25:31 -0600 [thread overview] -Message-ID: <20231117202536.1387815-2-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Update the NewVision NV3051D compatible strings by adding a new panel, -the powkiddy,rk2023-panel, and removing another entry, the -anbernic,rg353v-panel. - -The rk2023-panel is similar to the rg353p-panel but has slightly -different timings so it needs a new string. - -The rg353v-panel is duplicate to the rg353p-panel, so remove it. No -current devices use it and changes to the driver mean it is no longer -valid as a compatible string. - -Signed-off-by: Chris Morgan -Acked-by: Krzysztof Kozlowski ---- - .../devicetree/bindings/display/panel/newvision,nv3051d.yaml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Documentation/devicetree/bindings/display/panel/newvision,nv3051d.yaml b/Documentation/devicetree/bindings/display/panel/newvision,nv3051d.yaml -index cce775a87f87..7a634fbc465e 100644 ---- a/Documentation/devicetree/bindings/display/panel/newvision,nv3051d.yaml -+++ b/Documentation/devicetree/bindings/display/panel/newvision,nv3051d.yaml -@@ -21,7 +21,7 @@ properties: - - enum: - - anbernic,rg351v-panel - - anbernic,rg353p-panel -- - anbernic,rg353v-panel -+ - powkiddy,rk2023-panel - - const: newvision,nv3051d - - reg: true --- -2.34.1 - -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, - sebastian.reichel@collabora.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, - heiko@sntech.de, conor+dt@kernel.org, - krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, - Chris Morgan , - Jessica Zhang -Subject: [PATCH V4 2/6] drm/panel: nv3051d: Hold panel in reset for unprepare -Date: Fri, 17 Nov 2023 14:25:32 -0600 [thread overview] -Message-ID: <20231117202536.1387815-3-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Improve the panel's ability to restore from suspend by holding the -panel in suspend after unprepare. - -Fixes: b1d39f0f4264 ("drm/panel: Add NewVision NV3051D MIPI-DSI LCD panel") -Signed-off-by: Chris Morgan -Reviewed-by: Jessica Zhang ---- - drivers/gpu/drm/panel/panel-newvision-nv3051d.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c -index 79de6c886292..c44c6945662f 100644 ---- a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c -+++ b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c -@@ -261,6 +261,8 @@ static int panel_nv3051d_unprepare(struct drm_panel *panel) - - usleep_range(10000, 15000); - -+ gpiod_set_value_cansleep(ctx->reset_gpio, 1); -+ - regulator_disable(ctx->vdd); - - return 0; --- -2.34.1 - -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, - sebastian.reichel@collabora.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, - heiko@sntech.de, conor+dt@kernel.org, - krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, - Chris Morgan , - Jessica Zhang -Subject: [PATCH V4 3/6] drm/panel: nv3051d: Add Powkiddy RK2023 Panel Support -Date: Fri, 17 Nov 2023 14:25:33 -0600 [thread overview] -Message-ID: <20231117202536.1387815-4-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Refactor the driver to add support for the powkiddy,rk2023-panel -panel. This panel is extremely similar to the rg353p-panel but -requires a smaller vertical back porch and isn't as tolerant of -higher speeds. Note that while all of these panels are identical in -size (70x57) it is possible future panels may not be. - -Tested on my RG351V, RG353P, RG353V, and RK2023. - -Signed-off-by: Chris Morgan -Reviewed-by: Jessica Zhang ---- - .../gpu/drm/panel/panel-newvision-nv3051d.c | 55 +++++++++++++++---- - 1 file changed, 44 insertions(+), 11 deletions(-) - -diff --git a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c -index c44c6945662f..94d89ffd596b 100644 ---- a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c -+++ b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c -@@ -28,6 +28,7 @@ struct nv3051d_panel_info { - unsigned int num_modes; - u16 width_mm, height_mm; - u32 bus_flags; -+ u32 mode_flags; - }; - - struct panel_nv3051d { -@@ -387,15 +388,7 @@ static int panel_nv3051d_probe(struct mipi_dsi_device *dsi) - - dsi->lanes = 4; - dsi->format = MIPI_DSI_FMT_RGB888; -- dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | -- MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET; -- -- /* -- * The panel in the RG351V is identical to the 353P, except it -- * requires MIPI_DSI_CLOCK_NON_CONTINUOUS to operate correctly. -- */ -- if (of_device_is_compatible(dev->of_node, "anbernic,rg351v-panel")) -- dsi->mode_flags |= MIPI_DSI_CLOCK_NON_CONTINUOUS; -+ dsi->mode_flags = ctx->panel_info->mode_flags; - - drm_panel_init(&ctx->panel, &dsi->dev, &panel_nv3051d_funcs, - DRM_MODE_CONNECTOR_DSI); -@@ -483,16 +476,56 @@ static const struct drm_display_mode nv3051d_rgxx3_modes[] = { - }, - }; - --static const struct nv3051d_panel_info nv3051d_rgxx3_info = { -+static const struct drm_display_mode nv3051d_rk2023_modes[] = { -+ { -+ .hdisplay = 640, -+ .hsync_start = 640 + 40, -+ .hsync_end = 640 + 40 + 2, -+ .htotal = 640 + 40 + 2 + 80, -+ .vdisplay = 480, -+ .vsync_start = 480 + 18, -+ .vsync_end = 480 + 18 + 2, -+ .vtotal = 480 + 18 + 2 + 4, -+ .clock = 24150, -+ .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, -+ }, -+}; -+ -+static const struct nv3051d_panel_info nv3051d_rg351v_info = { - .display_modes = nv3051d_rgxx3_modes, - .num_modes = ARRAY_SIZE(nv3051d_rgxx3_modes), - .width_mm = 70, - .height_mm = 57, - .bus_flags = DRM_BUS_FLAG_DE_LOW | DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE, -+ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | -+ MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET | -+ MIPI_DSI_CLOCK_NON_CONTINUOUS, -+}; -+ -+static const struct nv3051d_panel_info nv3051d_rg353p_info = { -+ .display_modes = nv3051d_rgxx3_modes, -+ .num_modes = ARRAY_SIZE(nv3051d_rgxx3_modes), -+ .width_mm = 70, -+ .height_mm = 57, -+ .bus_flags = DRM_BUS_FLAG_DE_LOW | DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE, -+ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | -+ MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET, -+}; -+ -+static const struct nv3051d_panel_info nv3051d_rk2023_info = { -+ .display_modes = nv3051d_rk2023_modes, -+ .num_modes = ARRAY_SIZE(nv3051d_rk2023_modes), -+ .width_mm = 70, -+ .height_mm = 57, -+ .bus_flags = DRM_BUS_FLAG_DE_LOW | DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE, -+ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | -+ MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET, - }; - - static const struct of_device_id newvision_nv3051d_of_match[] = { -- { .compatible = "newvision,nv3051d", .data = &nv3051d_rgxx3_info }, -+ { .compatible = "anbernic,rg351v-panel", .data = &nv3051d_rg351v_info }, -+ { .compatible = "anbernic,rg353p-panel", .data = &nv3051d_rg353p_info }, -+ { .compatible = "powkiddy,rk2023-panel", .data = &nv3051d_rk2023_info }, - { /* sentinel */ } - }; - MODULE_DEVICE_TABLE(of, newvision_nv3051d_of_match); --- -2.34.1 - -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, - sebastian.reichel@collabora.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, - heiko@sntech.de, conor+dt@kernel.org, - krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, - Chris Morgan , - Krzysztof Kozlowski -Subject: [PATCH V4 4/6] dt-bindings: arm: rockchip: Add Powkiddy RK2023 -Date: Fri, 17 Nov 2023 14:25:34 -0600 [thread overview] -Message-ID: <20231117202536.1387815-5-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> - -From: Chris Morgan - -The Powkiddy RK2023 is a handheld gaming device made by Powkiddy and -powered by the Rockchip RK3566 SoC. Group the Powkiddy RK3566 based -devices together as they are both extremely similar. - -Signed-off-by: Chris Morgan -Acked-by: Krzysztof Kozlowski ---- - Documentation/devicetree/bindings/arm/rockchip.yaml | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/Documentation/devicetree/bindings/arm/rockchip.yaml b/Documentation/devicetree/bindings/arm/rockchip.yaml -index 5f7c6c4aad8f..5b015c4ed775 100644 ---- a/Documentation/devicetree/bindings/arm/rockchip.yaml -+++ b/Documentation/devicetree/bindings/arm/rockchip.yaml -@@ -674,9 +674,11 @@ properties: - - const: pine64,soquartz - - const: rockchip,rk3566 - -- - description: Powkiddy RGB30 -+ - description: Powkiddy RK3566 Handheld Gaming Console - items: -- - const: powkiddy,rgb30 -+ - enum: -+ - powkiddy,rgb30 -+ - powkiddy,rk2023 - - const: rockchip,rk3566 - - - description: Radxa Compute Module 3(CM3) --- -2.34.1 - -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, - sebastian.reichel@collabora.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, - heiko@sntech.de, conor+dt@kernel.org, - krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, - Chris Morgan -Subject: [PATCH V4 5/6] arm64: dts: rockchip: Update powkiddy,rgb30 include to rk2023 DTSI -Date: Fri, 17 Nov 2023 14:25:35 -0600 [thread overview] -Message-ID: <20231117202536.1387815-6-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> - -From: Chris Morgan - -The Powkiddy RGB30 device is similar to the Anbernic RGxx3 series, -however there are several differences which require deleting nodes in -order to properly define the hardware. This was deemed unacceptable -for the RK2023, so instead create a common include file for the -Powkiddy RGB30 and the Powkiddy RK2023. The only notable difference -between these Powkiddy devices are the panel in use, the device -name, and the PLL_VPLL frequency necessary to support the different -panels. - -Since the RK2023 was released on the market first, name the common -include file after it. - -Signed-off-by: Chris Morgan ---- - .../dts/rockchip/rk3566-powkiddy-rgb30.dts | 154 +-- - .../dts/rockchip/rk3566-powkiddy-rk2023.dtsi | 875 ++++++++++++++++++ - 2 files changed, 891 insertions(+), 138 deletions(-) - create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi - -diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts -index 1ead3c5c24b3..0ac64f043b80 100644 ---- a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts -+++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts -@@ -5,67 +5,11 @@ - #include - #include - #include --#include "rk3566-anbernic-rg353x.dtsi" -+#include "rk3566-powkiddy-rk2023.dtsi" - - / { - model = "RGB30"; - compatible = "powkiddy,rgb30", "rockchip,rk3566"; -- -- aliases { -- mmc1 = &sdmmc0; -- mmc2 = &sdmmc1; -- mmc3 = &sdmmc2; -- }; -- -- battery: battery { -- compatible = "simple-battery"; -- charge-full-design-microamp-hours = <3151000>; -- charge-term-current-microamp = <300000>; -- constant-charge-current-max-microamp = <2000000>; -- constant-charge-voltage-max-microvolt = <4250000>; -- factory-internal-resistance-micro-ohms = <117000>; -- voltage-max-design-microvolt = <4172000>; -- voltage-min-design-microvolt = <3400000>; -- -- ocv-capacity-celsius = <20>; -- ocv-capacity-table-0 = <4172000 100>, <4092000 95>, <4035000 90>, <3990000 85>, -- <3939000 80>, <3895000 75>, <3852000 70>, <3807000 65>, -- <3762000 60>, <3713000 55>, <3672000 50>, <3647000 45>, -- <3629000 40>, <3613000 35>, <3598000 30>, <3578000 25>, -- <3550000 20>, <3519000 15>, <3479000 10>, <3438000 5>, -- <3400000 0>; -- }; -- -- /* -- * Channels reversed for speakers. Headphones automatically switch via hardware when -- * detected with no ability to control output in software. Headphones appear to be mono -- * (each output channel receives all audio). No microphone support on 3.5mm jack. -- */ -- sound { -- compatible = "simple-audio-card"; -- simple-audio-card,name = "rk817_ext"; -- simple-audio-card,format = "i2s"; -- simple-audio-card,mclk-fs = <256>; -- simple-audio-card,widgets = -- "Headphone", "Headphones"; -- simple-audio-card,routing = -- "Headphones", "HPOL", -- "Headphones", "HPOR"; -- -- simple-audio-card,codec { -- sound-dai = <&rk817>; -- }; -- -- simple-audio-card,cpu { -- sound-dai = <&i2s1_8ch>; -- }; -- }; --}; -- --/delete-node/ &adc_keys; -- --&chosen { -- /delete-property/ stdout-path; - }; - - &cru { -@@ -75,87 +19,21 @@ &cru { - <200000000>, <292500000>; - }; - --&gpio_keys_control { -- button-r1 { -- gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>; -- label = "TR"; -- linux,code = ; -- }; -- -- button-r2 { -- gpios = <&gpio3 RK_PB4 GPIO_ACTIVE_LOW>; -- label = "TR2"; -- linux,code = ; -- }; --}; -- --/delete-node/ &{/i2c@fdd40000/regulator@40}; -- --&i2c0 { -- vdd_cpu: regulator@1c { -- compatible = "tcs,tcs4525"; -- reg = <0x1c>; -- fcs,suspend-voltage-selector = <1>; -- regulator-always-on; -- regulator-boot-on; -- regulator-min-microvolt = <712500>; -- regulator-max-microvolt = <1390000>; -- regulator-name = "vdd_cpu"; -- regulator-ramp-delay = <2300>; -- vin-supply = <&vcc_sys>; -- regulator-state-mem { -- regulator-off-in-suspend; -+&dsi0 { -+ panel: panel@0 { -+ compatible = "powkiddy,rgb30-panel"; -+ reg = <0>; -+ backlight = <&backlight>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&lcd_rst>; -+ reset-gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_LOW>; -+ vcc-supply = <&vcc3v3_lcd0_n>; -+ iovcc-supply = <&vcc3v3_lcd0_n>; -+ -+ port { -+ mipi_in_panel: endpoint { -+ remote-endpoint = <&mipi_out_panel>; -+ }; - }; - }; - }; -- --/* -- * Device has 2 red LEDs instead of an amber and a red. Relabel LEDs as -- * red_led0 and red_led1. -- */ --/delete-node/ &{/pwm-leds/led-1}; --/delete-node/ &{/pwm-leds/led-2}; -- --&leds { -- red_led0: led-1 { -- color = ; -- function = LED_FUNCTION_CHARGING; -- max-brightness = <255>; -- pwms = <&pwm7 0 25000 0>; -- }; -- -- red_led1: led-2 { -- color = ; -- default-state = "off"; -- function = LED_FUNCTION_STATUS; -- max-brightness = <255>; -- pwms = <&pwm0 0 25000 0>; -- }; --}; -- --&panel { -- compatible = "powkiddy,rgb30-panel"; -- vcc-supply = <&vcc3v3_lcd0_n>; -- iovcc-supply = <&vcc3v3_lcd0_n>; -- /delete-property/ vdd-supply; --}; -- --&pwm5 { -- status = "disabled"; --}; -- --&rk817 { -- rk817_charger: charger { -- monitored-battery = <&battery>; -- rockchip,resistor-sense-micro-ohms = <10000>; -- rockchip,sleep-enter-current-microamp = <300000>; -- rockchip,sleep-filter-current-microamp = <100000>; -- }; --}; -- --/* There is no UART header visible on the board for this device. */ --&uart2 { -- status = "disabled"; --}; -- --/delete-node/ &vibrator; -diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi -new file mode 100644 -index 000000000000..0fa8f06f94cd ---- /dev/null -+++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi -@@ -0,0 +1,875 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+ -+/dts-v1/; -+ -+#include -+#include -+#include -+#include -+#include -+#include "rk3566.dtsi" -+ -+/ { -+ aliases { -+ mmc1 = &sdmmc0; -+ mmc2 = &sdmmc1; -+ mmc3 = &sdmmc2; -+ }; -+ -+ adc-joystick { -+ compatible = "adc-joystick"; -+ io-channels = <&adc_mux 0>, -+ <&adc_mux 1>, -+ <&adc_mux 2>, -+ <&adc_mux 3>; -+ pinctrl-0 = <&joy_mux_en>; -+ pinctrl-names = "default"; -+ poll-interval = <60>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ axis@0 { -+ reg = <0>; -+ abs-flat = <32>; -+ abs-fuzz = <32>; -+ abs-range = <1023 15>; -+ linux,code = ; -+ }; -+ -+ axis@1 { -+ reg = <1>; -+ abs-flat = <32>; -+ abs-fuzz = <32>; -+ abs-range = <15 1023>; -+ linux,code = ; -+ }; -+ -+ axis@2 { -+ reg = <2>; -+ abs-flat = <32>; -+ abs-fuzz = <32>; -+ abs-range = <15 1023>; -+ linux,code = ; -+ }; -+ -+ axis@3 { -+ reg = <3>; -+ abs-flat = <32>; -+ abs-fuzz = <32>; -+ abs-range = <1023 15>; -+ linux,code = ; -+ }; -+ }; -+ -+ adc_mux: adc-mux { -+ compatible = "io-channel-mux"; -+ channels = "left_x", "right_x", "left_y", "right_y"; -+ #io-channel-cells = <1>; -+ io-channels = <&saradc 3>; -+ io-channel-names = "parent"; -+ mux-controls = <&gpio_mux>; -+ settle-time-us = <100>; -+ }; -+ -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ power-supply = <&vcc_sys>; -+ pwms = <&pwm4 0 25000 0>; -+ }; -+ -+ battery: battery { -+ compatible = "simple-battery"; -+ charge-full-design-microamp-hours = <3151000>; -+ charge-term-current-microamp = <300000>; -+ constant-charge-current-max-microamp = <2000000>; -+ constant-charge-voltage-max-microvolt = <4250000>; -+ factory-internal-resistance-micro-ohms = <117000>; -+ voltage-max-design-microvolt = <4172000>; -+ voltage-min-design-microvolt = <3400000>; -+ -+ ocv-capacity-celsius = <20>; -+ ocv-capacity-table-0 = <4172000 100>, <4092000 95>, <4035000 90>, <3990000 85>, -+ <3939000 80>, <3895000 75>, <3852000 70>, <3807000 65>, -+ <3762000 60>, <3713000 55>, <3672000 50>, <3647000 45>, -+ <3629000 40>, <3613000 35>, <3598000 30>, <3578000 25>, -+ <3550000 20>, <3519000 15>, <3479000 10>, <3438000 5>, -+ <3400000 0>; -+ }; -+ -+ gpio_keys_control: gpio-keys-control { -+ compatible = "gpio-keys"; -+ pinctrl-0 = <&btn_pins_ctrl>; -+ pinctrl-names = "default"; -+ -+ button-a { -+ gpios = <&gpio3 RK_PC2 GPIO_ACTIVE_LOW>; -+ label = "EAST"; -+ linux,code = ; -+ }; -+ -+ button-b { -+ gpios = <&gpio3 RK_PC3 GPIO_ACTIVE_LOW>; -+ label = "SOUTH"; -+ linux,code = ; -+ }; -+ -+ button-down { -+ gpios = <&gpio3 RK_PA4 GPIO_ACTIVE_LOW>; -+ label = "DPAD-DOWN"; -+ linux,code = ; -+ }; -+ -+ button-l1 { -+ gpios = <&gpio3 RK_PB1 GPIO_ACTIVE_LOW>; -+ label = "TL"; -+ linux,code = ; -+ }; -+ -+ button-l2 { -+ gpios = <&gpio3 RK_PB2 GPIO_ACTIVE_LOW>; -+ label = "TL2"; -+ linux,code = ; -+ }; -+ -+ button-left { -+ gpios = <&gpio3 RK_PA6 GPIO_ACTIVE_LOW>; -+ label = "DPAD-LEFT"; -+ linux,code = ; -+ }; -+ -+ button-r1 { -+ gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>; -+ label = "TR"; -+ linux,code = ; -+ }; -+ -+ button-r2 { -+ gpios = <&gpio3 RK_PB4 GPIO_ACTIVE_LOW>; -+ label = "TR2"; -+ linux,code = ; -+ }; -+ -+ button-right { -+ gpios = <&gpio3 RK_PA5 GPIO_ACTIVE_LOW>; -+ label = "DPAD-RIGHT"; -+ linux,code = ; -+ }; -+ -+ button-select { -+ gpios = <&gpio3 RK_PB6 GPIO_ACTIVE_LOW>; -+ label = "SELECT"; -+ linux,code = ; -+ }; -+ -+ button-start { -+ gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_LOW>; -+ label = "START"; -+ linux,code = ; -+ }; -+ -+ button-thumbl { -+ gpios = <&gpio3 RK_PA1 GPIO_ACTIVE_LOW>; -+ label = "THUMBL"; -+ linux,code = ; -+ }; -+ -+ button-thumbr { -+ gpios = <&gpio3 RK_PA2 GPIO_ACTIVE_LOW>; -+ label = "THUMBR"; -+ linux,code = ; -+ }; -+ -+ button-up { -+ gpios = <&gpio3 RK_PA3 GPIO_ACTIVE_LOW>; -+ label = "DPAD-UP"; -+ linux,code = ; -+ }; -+ -+ button-x { -+ gpios = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>; -+ label = "NORTH"; -+ linux,code = ; -+ }; -+ -+ button-y { -+ gpios = <&gpio3 RK_PC1 GPIO_ACTIVE_LOW>; -+ label = "WEST"; -+ linux,code = ; -+ }; -+ }; -+ -+ gpio_keys_vol: gpio-keys-vol { -+ compatible = "gpio-keys"; -+ autorepeat; -+ pinctrl-0 = <&btn_pins_vol>; -+ pinctrl-names = "default"; -+ -+ button-vol-down { -+ gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>; -+ label = "VOLUMEDOWN"; -+ linux,code = ; -+ }; -+ -+ button-vol-up { -+ gpios = <&gpio3 RK_PA7 GPIO_ACTIVE_LOW>; -+ label = "VOLUMEUP"; -+ linux,code = ; -+ }; -+ }; -+ -+ gpio_mux: mux-controller { -+ compatible = "gpio-mux"; -+ mux-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>, -+ <&gpio0 RK_PB7 GPIO_ACTIVE_LOW>; -+ #mux-control-cells = <0>; -+ }; -+ -+ hdmi-con { -+ compatible = "hdmi-connector"; -+ ddc-i2c-bus = <&i2c5>; -+ type = "c"; -+ -+ port { -+ hdmi_con_in: endpoint { -+ remote-endpoint = <&hdmi_out_con>; -+ }; -+ }; -+ }; -+ -+ /* -+ * Device also includes an always on LED that is wired to the 5V input -+ * voltage and is on when the device is plugged in. -+ */ -+ leds: pwm-leds { -+ compatible = "pwm-leds"; -+ -+ green_led: led-0 { -+ color = ; -+ function = LED_FUNCTION_STATUS; -+ max-brightness = <255>; -+ pwms = <&pwm6 0 25000 0>; -+ }; -+ -+ red_led: led-1 { -+ color = ; -+ function = LED_FUNCTION_CHARGING; -+ max-brightness = <255>; -+ pwms = <&pwm7 0 25000 0>; -+ }; -+ }; -+ -+ sdio_pwrseq: sdio-pwrseq { -+ compatible = "mmc-pwrseq-simple"; -+ clocks = <&rk817 1>; -+ clock-names = "ext_clock"; -+ pinctrl-0 = <&wifi_enable_h>; -+ pinctrl-names = "default"; -+ post-power-on-delay-ms = <200>; -+ reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_LOW>; -+ }; -+ -+ /* -+ * Channels reversed for speakers. Headphones automatically switch via hardware when -+ * detected with no ability to control output in software. Headphones appear to be mono -+ * (each output channel receives all audio). No microphone support on 3.5mm jack. -+ */ -+ sound { -+ compatible = "simple-audio-card"; -+ simple-audio-card,name = "rk817_ext"; -+ simple-audio-card,format = "i2s"; -+ simple-audio-card,mclk-fs = <256>; -+ simple-audio-card,widgets = -+ "Headphone", "Headphones"; -+ simple-audio-card,routing = -+ "Headphones", "HPOL", -+ "Headphones", "HPOR"; -+ -+ simple-audio-card,codec { -+ sound-dai = <&rk817>; -+ }; -+ -+ simple-audio-card,cpu { -+ sound-dai = <&i2s1_8ch>; -+ }; -+ }; -+ -+ vcc3v3_lcd0_n: regulator-vcc3v3-lcd0 { -+ compatible = "regulator-fixed"; -+ gpio = <&gpio0 RK_PC2 GPIO_ACTIVE_HIGH>; -+ enable-active-high; -+ pinctrl-0 = <&vcc_lcd_h>; -+ pinctrl-names = "default"; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc3v3_lcd0_n"; -+ vin-supply = <&vcc_3v3>; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc_sys: regulator-vcc-sys { -+ compatible = "regulator-fixed"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3800000>; -+ regulator-max-microvolt = <3800000>; -+ regulator-name = "vcc_sys"; -+ }; -+ -+ vcc_wifi: regulator-vcc-wifi { -+ compatible = "regulator-fixed"; -+ enable-active-high; -+ gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>; -+ pinctrl-0 = <&vcc_wifi_h>; -+ pinctrl-names = "default"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc_wifi"; -+ }; -+}; -+ -+&combphy1 { -+ status = "okay"; -+}; -+ -+&cpu0 { -+ cpu-supply = <&vdd_cpu>; -+}; -+ -+&cpu1 { -+ cpu-supply = <&vdd_cpu>; -+}; -+ -+&cpu2 { -+ cpu-supply = <&vdd_cpu>; -+}; -+ -+&cpu3 { -+ cpu-supply = <&vdd_cpu>; -+}; -+ -+&dsi0 { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ ports { -+ dsi0_in: port@0 { -+ reg = <0>; -+ dsi0_in_vp1: endpoint { -+ remote-endpoint = <&vp1_out_dsi0>; -+ }; -+ }; -+ -+ dsi0_out: port@1 { -+ reg = <1>; -+ mipi_out_panel: endpoint { -+ remote-endpoint = <&mipi_in_panel>; -+ }; -+ }; -+ }; -+}; -+ -+&dsi_dphy0 { -+ status = "okay"; -+}; -+ -+&gpu { -+ mali-supply = <&vdd_gpu>; -+ status = "okay"; -+}; -+ -+&hdmi { -+ ddc-i2c-bus = <&i2c5>; -+ pinctrl-0 = <&hdmitxm0_cec>; -+ pinctrl-names = "default"; -+ status = "okay"; -+}; -+ -+&hdmi_in { -+ hdmi_in_vp0: endpoint { -+ remote-endpoint = <&vp0_out_hdmi>; -+ }; -+}; -+ -+&hdmi_out { -+ hdmi_out_con: endpoint { -+ remote-endpoint = <&hdmi_con_in>; -+ }; -+}; -+ -+&hdmi_sound { -+ status = "okay"; -+}; -+ -+&i2c0 { -+ status = "okay"; -+ -+ rk817: pmic@20 { -+ compatible = "rockchip,rk817"; -+ reg = <0x20>; -+ interrupt-parent = <&gpio0>; -+ interrupts = ; -+ clock-output-names = "rk808-clkout1", "rk808-clkout2"; -+ clock-names = "mclk"; -+ clocks = <&cru I2S1_MCLKOUT_TX>; -+ assigned-clocks = <&cru I2S1_MCLKOUT_TX>; -+ assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>; -+ #clock-cells = <1>; -+ #sound-dai-cells = <0>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2s1m0_mclk>, <&pmic_int_l>; -+ wakeup-source; -+ -+ vcc1-supply = <&vcc_sys>; -+ vcc2-supply = <&vcc_sys>; -+ vcc3-supply = <&vcc_sys>; -+ vcc4-supply = <&vcc_sys>; -+ vcc5-supply = <&vcc_sys>; -+ vcc6-supply = <&vcc_sys>; -+ vcc7-supply = <&vcc_sys>; -+ vcc8-supply = <&vcc_sys>; -+ vcc9-supply = <&dcdc_boost>; -+ -+ regulators { -+ vdd_logic: DCDC_REG1 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <500000>; -+ regulator-max-microvolt = <1350000>; -+ regulator-ramp-delay = <6001>; -+ regulator-initial-mode = <0x2>; -+ regulator-name = "vdd_logic"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ regulator-suspend-microvolt = <900000>; -+ }; -+ }; -+ -+ vdd_gpu: DCDC_REG2 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <500000>; -+ regulator-max-microvolt = <1350000>; -+ regulator-ramp-delay = <6001>; -+ regulator-initial-mode = <0x2>; -+ regulator-name = "vdd_gpu"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc_ddr: DCDC_REG3 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-initial-mode = <0x2>; -+ regulator-name = "vcc_ddr"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ vcc_3v3: DCDC_REG4 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-initial-mode = <0x2>; -+ regulator-name = "vcc_3v3"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; -+ }; -+ -+ vcca1v8_pmu: LDO_REG1 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "vcca1v8_pmu"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <1800000>; -+ }; -+ }; -+ -+ vdda_0v9: LDO_REG2 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <900000>; -+ regulator-max-microvolt = <900000>; -+ regulator-name = "vdda_0v9"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vdda0v9_pmu: LDO_REG3 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <900000>; -+ regulator-max-microvolt = <900000>; -+ regulator-name = "vdda0v9_pmu"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <900000>; -+ }; -+ }; -+ -+ vccio_acodec: LDO_REG4 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vccio_acodec"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vccio_sd: LDO_REG5 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vccio_sd"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc3v3_pmu: LDO_REG6 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc3v3_pmu"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; -+ }; -+ -+ vcc_1v8: LDO_REG7 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "vcc_1v8"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc1v8_dvp: LDO_REG8 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc1v8_dvp"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc2v8_dvp: LDO_REG9 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <2800000>; -+ regulator-max-microvolt = <2800000>; -+ regulator-name = "vcc2v8_dvp"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ dcdc_boost: BOOST { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <4700000>; -+ regulator-max-microvolt = <5400000>; -+ regulator-name = "boost"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ otg_switch: OTG_SWITCH { -+ regulator-name = "otg_switch"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ }; -+ -+ rk817_charger: charger { -+ monitored-battery = <&battery>; -+ rockchip,resistor-sense-micro-ohms = <10000>; -+ rockchip,sleep-enter-current-microamp = <300000>; -+ rockchip,sleep-filter-current-microamp = <100000>; -+ }; -+ }; -+ -+ vdd_cpu: regulator@1c { -+ compatible = "tcs,tcs4525"; -+ reg = <0x1c>; -+ fcs,suspend-voltage-selector = <1>; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <712500>; -+ regulator-max-microvolt = <1390000>; -+ regulator-name = "vdd_cpu"; -+ regulator-ramp-delay = <2300>; -+ vin-supply = <&vcc_sys>; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+}; -+ -+&i2c5 { -+ pinctrl-0 = <&i2c5m1_xfer>; -+ pinctrl-names = "default"; -+ status = "okay"; -+}; -+ -+&i2s0_8ch { -+ status = "okay"; -+}; -+ -+&i2s1_8ch { -+ pinctrl-0 = <&i2s1m0_sclktx -+ &i2s1m0_lrcktx -+ &i2s1m0_sdi0 -+ &i2s1m0_sdo0>; -+ pinctrl-names = "default"; -+ rockchip,trcm-sync-tx-only; -+ status = "okay"; -+}; -+ -+&pinctrl { -+ gpio-btns { -+ btn_pins_ctrl: btn-pins-ctrl { -+ rockchip,pins = -+ <3 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PC1 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PC3 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ -+ btn_pins_vol: btn-pins-vol { -+ rockchip,pins = -+ <3 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ joy-mux { -+ joy_mux_en: joy-mux-en { -+ rockchip,pins = -+ <0 RK_PB5 RK_FUNC_GPIO &pcfg_output_low>; -+ }; -+ }; -+ -+ gpio-lcd { -+ lcd_rst: lcd-rst { -+ rockchip,pins = -+ <4 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ pmic { -+ pmic_int_l: pmic-int-l { -+ rockchip,pins = -+ <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ sdio-pwrseq { -+ wifi_enable_h: wifi-enable-h { -+ rockchip,pins = -+ <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ vcc3v3-lcd { -+ vcc_lcd_h: vcc-lcd-h { -+ rockchip,pins = -+ <0 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ vcc-wifi { -+ vcc_wifi_h: vcc-wifi-h { -+ rockchip,pins = -+ <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+}; -+ -+&pmu_io_domains { -+ status = "okay"; -+ pmuio1-supply = <&vcc3v3_pmu>; -+ pmuio2-supply = <&vcc3v3_pmu>; -+ vccio1-supply = <&vccio_acodec>; -+ vccio3-supply = <&vccio_sd>; -+ vccio4-supply = <&vcc_1v8>; -+ vccio5-supply = <&vcc_3v3>; -+ vccio6-supply = <&vcc1v8_dvp>; -+ vccio7-supply = <&vcc_3v3>; -+}; -+ -+&pwm4 { -+ status = "okay"; -+}; -+ -+&pwm6 { -+ status = "okay"; -+}; -+ -+&pwm7 { -+ status = "okay"; -+}; -+ -+&saradc { -+ vref-supply = <&vcc_1v8>; -+ status = "okay"; -+}; -+ -+&sdmmc0 { -+ bus-width = <4>; -+ cap-sd-highspeed; -+ cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>; -+ disable-wp; -+ pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>; -+ pinctrl-names = "default"; -+ sd-uhs-sdr104; -+ vmmc-supply = <&vcc_3v3>; -+ vqmmc-supply = <&vccio_sd>; -+ status = "okay"; -+}; -+ -+&sdmmc1 { -+ bus-width = <4>; -+ cap-sd-highspeed; -+ cd-gpios = <&gpio2 RK_PB2 GPIO_ACTIVE_LOW>; -+ disable-wp; -+ pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_cmd &sdmmc1_clk &sdmmc1_det>; -+ pinctrl-names = "default"; -+ sd-uhs-sdr104; -+ vmmc-supply = <&vcc_3v3>; -+ vqmmc-supply = <&vcc1v8_dvp>; -+ status = "okay"; -+}; -+ -+&sdmmc2 { -+ bus-width = <4>; -+ cap-sd-highspeed; -+ cap-sdio-irq; -+ keep-power-in-suspend; -+ mmc-pwrseq = <&sdio_pwrseq>; -+ non-removable; -+ pinctrl-0 = <&sdmmc2m0_bus4 &sdmmc2m0_cmd &sdmmc2m0_clk>; -+ pinctrl-names = "default"; -+ vmmc-supply = <&vcc_wifi>; -+ vqmmc-supply = <&vcca1v8_pmu>; -+ status = "okay"; -+}; -+ -+&tsadc { -+ rockchip,hw-tshut-mode = <1>; -+ rockchip,hw-tshut-polarity = <0>; -+ status = "okay"; -+}; -+ -+&uart1 { -+ pinctrl-0 = <&uart1m1_xfer &uart1m1_ctsn &uart1m1_rtsn>; -+ pinctrl-names = "default"; -+ uart-has-rtscts; -+ status = "okay"; -+ -+ bluetooth { -+ compatible = "realtek,rtl8821cs-bt", "realtek,rtl8723bs-bt"; -+ device-wake-gpios = <&gpio4 4 GPIO_ACTIVE_HIGH>; -+ enable-gpios = <&gpio4 3 GPIO_ACTIVE_HIGH>; -+ host-wake-gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>; -+ }; -+}; -+ -+&usb_host0_xhci { -+ dr_mode = "peripheral"; -+ phys = <&usb2phy0_otg>; -+ phy-names = "usb2-phy"; -+ status = "okay"; -+}; -+ -+&usb_host1_ehci { -+ status = "okay"; -+}; -+ -+&usb_host1_ohci { -+ status = "okay"; -+}; -+ -+&usb_host1_xhci { -+ phy-names = "usb2-phy", "usb3-phy"; -+ phys = <&usb2phy1_host>, <&combphy1 PHY_TYPE_USB3>; -+ status = "okay"; -+}; -+ -+&usb2phy0 { -+ status = "okay"; -+}; -+ -+&usb2phy0_otg { -+ status = "okay"; -+}; -+ -+&usb2phy1 { -+ status = "okay"; -+}; -+ -+&usb2phy1_host { -+ status = "okay"; -+}; -+ -+&vop { -+ assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; -+ assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; -+ status = "okay"; -+}; -+ -+&vop_mmu { -+ status = "okay"; -+}; -+ -+&vp0 { -+ vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { -+ reg = ; -+ remote-endpoint = <&hdmi_in_vp0>; -+ }; -+}; -+ -+&vp1 { -+ vp1_out_dsi0: endpoint@ROCKCHIP_VOP2_EP_MIPI0 { -+ reg = ; -+ remote-endpoint = <&dsi0_in_vp1>; -+ }; -+}; --- -2.34.1 - -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, - sebastian.reichel@collabora.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, neil.armstrong@linaro.org, - heiko@sntech.de, conor+dt@kernel.org, - krzysztof.kozlowski+dt@linaro.org, robh+dt@kernel.org, - Chris Morgan -Subject: [PATCH V4 6/6] arm64: dts: rockchip: Add Powkiddy RK2023 -Date: Fri, 17 Nov 2023 14:25:36 -0600 [thread overview] -Message-ID: <20231117202536.1387815-7-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231117202536.1387815-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Add support for the Powkiddy RK2023. The Powkiddy RK2023 is a handheld -gaming device with a 3.5 inch screen powered by the Rockchip RK3566 -SoC. The device looks physically different from the Powkiddy RGB30, -but is functionally identical except for the panel. - -Signed-off-by: Chris Morgan ---- - arch/arm64/boot/dts/rockchip/Makefile | 1 + - .../dts/rockchip/rk3566-powkiddy-rk2023.dts | 38 +++++++++++++++++++ - 2 files changed, 39 insertions(+) - create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts - -diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile -index a18f33bf0c0e..f969618da352 100644 ---- a/arch/arm64/boot/dts/rockchip/Makefile -+++ b/arch/arm64/boot/dts/rockchip/Makefile -@@ -78,6 +78,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-anbernic-rg503.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.1.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.2.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-rgb30.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-rk2023.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-a.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-b.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-radxa-cm3-io.dtb -diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts -new file mode 100644 -index 000000000000..ba32d0793dca ---- /dev/null -+++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts -@@ -0,0 +1,38 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+ -+/dts-v1/; -+ -+#include -+#include -+#include -+#include "rk3566-powkiddy-rk2023.dtsi" -+ -+/ { -+ model = "RK2023"; -+ compatible = "powkiddy,rk2023", "rockchip,rk3566"; -+}; -+ -+&cru { -+ assigned-clocks = <&pmucru CLK_RTC_32K>, <&cru PLL_GPLL>, -+ <&pmucru PLL_PPLL>, <&cru PLL_VPLL>; -+ assigned-clock-rates = <32768>, <1200000000>, -+ <200000000>, <115200000>; -+}; -+ -+&dsi0 { -+ panel: panel@0 { -+ compatible = "powkiddy,rk2023-panel", "newvision,nv3051d"; -+ reg = <0>; -+ backlight = <&backlight>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&lcd_rst>; -+ reset-gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_LOW>; -+ vdd-supply = <&vcc3v3_lcd0_n>; -+ -+ port { -+ mipi_in_panel: endpoint { -+ remote-endpoint = <&mipi_out_panel>; -+ }; -+ }; -+ }; -+}; --- -2.34.1 - diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55/004-add-rg351v.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55/004-add-rg351v.patch deleted file mode 100644 index 052ee0fea2..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566-X55/004-add-rg351v.patch +++ /dev/null @@ -1,715 +0,0 @@ -From: Chris Morgan -To: devicetree@vger.kernel.org -Cc: linux-rockchip@lists.infradead.org, maccraft123mc@gmail.com, - sebastian.reichel@collabora.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH 0/3] Add Support for Anbernic RG351V -Date: Mon, 20 Nov 2023 17:01:28 -0600 [thread overview] -Message-ID: <20231120230131.57705-1-macroalpha82@gmail.com> (raw) - -From: Chris Morgan - -Add support for the Anbernic RG351V handheld gaming console. - -Chris Morgan (3): - dt-bindings: arm: rockchip: Add Anbernic RG351V - arm64: dts: rockchip: Split RG351M from Odroid Go Advance - arm64: dts: rockchip: Add Anbernic RG351V - - .../devicetree/bindings/arm/rockchip.yaml | 6 +- - arch/arm64/boot/dts/rockchip/Makefile | 1 + - .../dts/rockchip/rk3326-anbernic-rg351m.dts | 18 +- - .../dts/rockchip/rk3326-anbernic-rg351m.dtsi | 478 ++++++++++++++++++ - .../dts/rockchip/rk3326-anbernic-rg351v.dts | 44 ++ - 5 files changed, 529 insertions(+), 18 deletions(-) - create mode 100644 arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dtsi - create mode 100644 arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts - --- -2.34.1 -From: Chris Morgan -To: devicetree@vger.kernel.org -Cc: linux-rockchip@lists.infradead.org, maccraft123mc@gmail.com, - sebastian.reichel@collabora.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH 1/3] dt-bindings: arm: rockchip: Add Anbernic RG351V -Date: Mon, 20 Nov 2023 17:01:29 -0600 [thread overview] -Message-ID: <20231120230131.57705-2-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231120230131.57705-1-macroalpha82@gmail.com> - -From: Chris Morgan - -The Anbernic RG351V is a portable gaming console from Anbernic with the -RK3326 SoC. - -Signed-off-by: Chris Morgan ---- - Documentation/devicetree/bindings/arm/rockchip.yaml | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/Documentation/devicetree/bindings/arm/rockchip.yaml b/Documentation/devicetree/bindings/arm/rockchip.yaml -index 5f7c6c4aad8f..3786f901a1a7 100644 ---- a/Documentation/devicetree/bindings/arm/rockchip.yaml -+++ b/Documentation/devicetree/bindings/arm/rockchip.yaml -@@ -30,9 +30,11 @@ properties: - - const: amarula,vyasa-rk3288 - - const: rockchip,rk3288 - -- - description: Anbernic RG351M -+ - description: Anbernic RK3326 Handheld Gaming Console - items: -- - const: anbernic,rg351m -+ - enum: -+ - anbernic,rg351m -+ - anbernic,rg351v - - const: rockchip,rk3326 - - - description: Anbernic RG353P --- -2.34.1 -From: Chris Morgan -To: devicetree@vger.kernel.org -Cc: linux-rockchip@lists.infradead.org, maccraft123mc@gmail.com, - sebastian.reichel@collabora.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH 2/3] arm64: dts: rockchip: Split RG351M from Odroid Go Advance -Date: Mon, 20 Nov 2023 17:01:30 -0600 [thread overview] -Message-ID: <20231120230131.57705-3-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231120230131.57705-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Split the RG351M into its own DTSI file. The RG351M, unlike the Odroid -Go Advance, has no ADC joysticks, no GPIO buttons (except for volume -on the RG351V), a PWM vibrator that interferes with an Odroid -regulator, and different LEDs. Split the RG351M into a DTSI file -that can then be imported into the DTS files for the RG351M and a -new RG351V. - -Signed-off-by: Chris Morgan ---- - .../dts/rockchip/rk3326-anbernic-rg351m.dts | 18 +- - .../dts/rockchip/rk3326-anbernic-rg351m.dtsi | 478 ++++++++++++++++++ - 2 files changed, 480 insertions(+), 16 deletions(-) - create mode 100644 arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dtsi - -diff --git a/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts -index ce318e05f0a6..f4d20f29c1b4 100644 ---- a/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts -+++ b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts -@@ -6,30 +6,16 @@ - */ - - /dts-v1/; --#include "rk3326-odroid-go.dtsi" -+#include "rk3326-anbernic-rg351m.dtsi" - - / { - model = "Anbernic RG351M"; - compatible = "anbernic,rg351m", "rockchip,rk3326"; -- -- vibrator { -- compatible = "pwm-vibrator"; -- pwms = <&pwm0 0 1000000 0>; -- pwm-names = "enable"; -- }; - }; - --/delete-node/ &builtin_gamepad; --/delete-node/ &vcc_host; /* conflicts with pwm vibration motor */ -- - &internal_display { - compatible = "elida,kd35t133"; - iovcc-supply = <&vcc_lcd>; -+ rotation = <270>; - vdd-supply = <&vcc_lcd>; - }; -- --&pwm0 { -- status = "okay"; --}; -- --/delete-node/ &rk817_charger; -diff --git a/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dtsi b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dtsi -new file mode 100644 -index 000000000000..89e64647b4fa ---- /dev/null -+++ b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dtsi -@@ -0,0 +1,478 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+/* -+ * Copyright (c) 2019 Hardkernel Co., Ltd -+ * Copyright (c) 2020 Theobroma Systems Design und Consulting GmbH -+ * Copyright (c) 2022 Maya Matuszczyk -+ */ -+ -+/dts-v1/; -+#include -+#include -+#include -+#include -+#include "rk3326.dtsi" -+ -+/ { -+ aliases { -+ mmc0 = &sdmmc; -+ }; -+ -+ chosen { -+ stdout-path = "serial2:115200n8"; -+ }; -+ -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ power-supply = <&vcc_bl>; -+ pwms = <&pwm1 0 25000 0>; -+ }; -+ -+ /* -+ * LED is a tri-state. Driven high it is red, driven low it is -+ * green, and not driven at all (pin set to input) it is amber. -+ * Additionally, there is a 2nd LED that is not controllable -+ * that is on (red) when plugged in to power. -+ */ -+ gpio_led: gpio-leds { -+ compatible = "gpio-leds"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&led_pin>; -+ -+ red_green_led: led-0 { -+ color = ; -+ gpios = <&gpio2 RK_PB5 GPIO_ACTIVE_HIGH>; -+ function = LED_FUNCTION_CHARGING; -+ }; -+ }; -+ -+ rk817-sound { -+ compatible = "simple-audio-card"; -+ simple-audio-card,name = "rk817_int"; -+ simple-audio-card,format = "i2s"; -+ simple-audio-card,hp-det-gpio = <&gpio2 RK_PC6 GPIO_ACTIVE_HIGH>; -+ simple-audio-card,mclk-fs = <256>; -+ simple-audio-card,widgets = -+ "Microphone", "Mic Jack", -+ "Headphone", "Headphones", -+ "Speaker", "Speaker"; -+ simple-audio-card,routing = -+ "MICL", "Mic Jack", -+ "Headphones", "HPOL", -+ "Headphones", "HPOR", -+ "Speaker", "SPKO"; -+ -+ simple-audio-card,codec { -+ sound-dai = <&rk817>; -+ }; -+ -+ simple-audio-card,cpu { -+ sound-dai = <&i2s1_2ch>; -+ }; -+ }; -+ -+ vccsys: vccsys { -+ compatible = "regulator-fixed"; -+ regulator-name = "vcc3v8_sys"; -+ regulator-always-on; -+ regulator-min-microvolt = <3800000>; -+ regulator-max-microvolt = <3800000>; -+ }; -+ -+ vibrator { -+ compatible = "pwm-vibrator"; -+ pwms = <&pwm0 0 1000000 0>; -+ pwm-names = "enable"; -+ }; -+}; -+ -+&cpu0 { -+ cpu-supply = <&vdd_arm>; -+}; -+ -+&cpu1 { -+ cpu-supply = <&vdd_arm>; -+}; -+ -+&cpu2 { -+ cpu-supply = <&vdd_arm>; -+}; -+ -+&cpu3 { -+ cpu-supply = <&vdd_arm>; -+}; -+ -+&cru { -+ assigned-clocks = <&cru PLL_NPLL>, -+ <&cru ACLK_BUS_PRE>, <&cru ACLK_PERI_PRE>, -+ <&cru HCLK_BUS_PRE>, <&cru HCLK_PERI_PRE>, -+ <&cru PCLK_BUS_PRE>, <&cru SCLK_GPU>; -+ -+ assigned-clock-rates = <1188000000>, -+ <200000000>, <200000000>, -+ <150000000>, <150000000>, -+ <100000000>, <200000000>; -+}; -+ -+&display_subsystem { -+ status = "okay"; -+}; -+ -+&dsi { -+ status = "okay"; -+ -+ ports { -+ mipi_out: port@1 { -+ reg = <1>; -+ -+ mipi_out_panel: endpoint { -+ remote-endpoint = <&mipi_in_panel>; -+ }; -+ }; -+ }; -+ -+ internal_display: panel@0 { -+ reg = <0>; -+ backlight = <&backlight>; -+ reset-gpios = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>; -+ -+ port { -+ mipi_in_panel: endpoint { -+ remote-endpoint = <&mipi_out_panel>; -+ }; -+ }; -+ }; -+}; -+ -+&dsi_dphy { -+ status = "okay"; -+}; -+ -+&gpu { -+ mali-supply = <&vdd_logic>; -+ status = "okay"; -+}; -+ -+&i2c0 { -+ clock-frequency = <400000>; -+ i2c-scl-falling-time-ns = <16>; -+ i2c-scl-rising-time-ns = <280>; -+ status = "okay"; -+ -+ rk817: pmic@20 { -+ compatible = "rockchip,rk817"; -+ reg = <0x20>; -+ #clock-cells = <1>; -+ clock-names = "mclk"; -+ clock-output-names = "rk808-clkout1", "xin32k"; -+ clocks = <&cru SCLK_I2S1_OUT>; -+ interrupt-parent = <&gpio0>; -+ interrupts = ; -+ pinctrl-0 = <&pmic_int>, <&i2s1_2ch_mclk>; -+ pinctrl-names = "default"; -+ #sound-dai-cells = <0>; -+ wakeup-source; -+ -+ vcc1-supply = <&vccsys>; -+ vcc2-supply = <&vccsys>; -+ vcc3-supply = <&vccsys>; -+ vcc4-supply = <&vccsys>; -+ vcc5-supply = <&vccsys>; -+ vcc6-supply = <&vccsys>; -+ vcc7-supply = <&vccsys>; -+ vcc8-supply = <&vccsys>; -+ -+ regulators { -+ vdd_logic: DCDC_REG1 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-max-microvolt = <1150000>; -+ regulator-min-microvolt = <950000>; -+ regulator-name = "vdd_logic"; -+ regulator-ramp-delay = <6001>; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <950000>; -+ }; -+ }; -+ -+ vdd_arm: DCDC_REG2 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-max-microvolt = <1350000>; -+ regulator-min-microvolt = <950000>; -+ regulator-name = "vdd_arm"; -+ regulator-ramp-delay = <6001>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ regulator-suspend-microvolt = <950000>; -+ }; -+ }; -+ -+ vcc_ddr: DCDC_REG3 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-name = "vcc_ddr"; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ vcc_3v3: DCDC_REG4 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-max-microvolt = <3300000>; -+ regulator-min-microvolt = <3300000>; -+ regulator-name = "vcc_3v3"; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; -+ }; -+ -+ vcc_1v8: LDO_REG2 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-max-microvolt = <1800000>; -+ regulator-min-microvolt = <1800000>; -+ regulator-name = "vcc_1v8"; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <1800000>; -+ }; -+ }; -+ -+ vdd_1v0: LDO_REG3 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-max-microvolt = <1000000>; -+ regulator-min-microvolt = <1000000>; -+ regulator-name = "vdd_1v0"; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <1000000>; -+ }; -+ }; -+ -+ vcc3v3_pmu: LDO_REG4 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-max-microvolt = <3300000>; -+ regulator-min-microvolt = <3300000>; -+ regulator-name = "vcc3v3_pmu"; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; -+ }; -+ -+ vccio_sd: LDO_REG5 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-max-microvolt = <3300000>; -+ regulator-min-microvolt = <1800000>; -+ regulator-name = "vccio_sd"; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; -+ }; -+ -+ vcc_sd: LDO_REG6 { -+ regulator-boot-on; -+ regulator-max-microvolt = <3300000>; -+ regulator-min-microvolt = <3300000>; -+ regulator-name = "vcc_sd"; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; -+ }; -+ -+ vcc_bl: LDO_REG7 { -+ regulator-max-microvolt = <3300000>; -+ regulator-min-microvolt = <3300000>; -+ regulator-name = "vcc_bl"; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; -+ }; -+ -+ vcc_lcd: LDO_REG8 { -+ regulator-max-microvolt = <2800000>; -+ regulator-min-microvolt = <2800000>; -+ regulator-name = "vcc_lcd"; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ regulator-suspend-microvolt = <2800000>; -+ }; -+ }; -+ -+ vcc_wifi: LDO_REG9 { -+ regulator-max-microvolt = <3300000>; -+ regulator-min-microvolt = <3300000>; -+ regulator-name = "vcc_wifi"; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; -+ }; -+ -+ usb_midu: BOOST { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-max-microvolt = <5400000>; -+ regulator-min-microvolt = <5000000>; -+ regulator-name = "usb_midu"; -+ }; -+ }; -+ -+ rk817_codec: codec { -+ rockchip,mic-in-differential; -+ }; -+ }; -+}; -+ -+&i2s1_2ch { -+ status = "okay"; -+}; -+ -+&io_domains { -+ vccio1-supply = <&vcc_3v3>; -+ vccio2-supply = <&vccio_sd>; -+ vccio3-supply = <&vcc_3v3>; -+ vccio4-supply = <&vcc_3v3>; -+ vccio5-supply = <&vcc_3v3>; -+ vccio6-supply = <&vcc_3v3>; -+ status = "okay"; -+}; -+ -+&pmu_io_domains { -+ pmuio1-supply = <&vcc3v3_pmu>; -+ pmuio2-supply = <&vcc3v3_pmu>; -+ status = "okay"; -+}; -+ -+&pwm0 { -+ status = "okay"; -+}; -+ -+&pwm1 { -+ status = "okay"; -+}; -+ -+&saradc { -+ vref-supply = <&vcc_1v8>; -+ status = "okay"; -+}; -+ -+&sdmmc { -+ cap-sd-highspeed; -+ card-detect-delay = <200>; -+ cd-gpios = <&gpio0 RK_PA3 GPIO_ACTIVE_LOW>; -+ sd-uhs-sdr12; -+ sd-uhs-sdr25; -+ sd-uhs-sdr50; -+ sd-uhs-sdr104; -+ vmmc-supply = <&vcc_sd>; -+ vqmmc-supply = <&vccio_sd>; -+ status = "okay"; -+}; -+ -+&sfc { -+ #address-cells = <1>; -+ pinctrl-0 = <&sfc_clk &sfc_cs0 &sfc_bus2>; -+ pinctrl-names = "default"; -+ #size-cells = <0>; -+ status = "okay"; -+ -+ flash@0 { -+ compatible = "jedec,spi-nor"; -+ reg = <0>; -+ spi-max-frequency = <108000000>; -+ spi-rx-bus-width = <2>; -+ spi-tx-bus-width = <1>; -+ }; -+}; -+ -+&tsadc { -+ status = "okay"; -+}; -+ -+&u2phy { -+ status = "okay"; -+ -+ u2phy_host: host-port { -+ status = "okay"; -+ }; -+ -+ u2phy_otg: otg-port { -+ status = "disabled"; -+ }; -+}; -+ -+&usb20_otg { -+ status = "okay"; -+}; -+ -+&uart2 { -+ pinctrl-0 = <&uart2m1_xfer>; -+ pinctrl-names = "default"; -+ status = "okay"; -+}; -+ -+&vopb { -+ status = "okay"; -+}; -+ -+&vopb_mmu { -+ status = "okay"; -+}; -+ -+&pinctrl { -+ headphone { -+ hp_det: hp-det { -+ rockchip,pins = <2 RK_PC6 RK_FUNC_GPIO &pcfg_pull_down>; -+ }; -+ }; -+ -+ leds { -+ led_pin: led-pin { -+ rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ pmic { -+ dc_det: dc-det { -+ rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ pmic_int: pmic-int { -+ rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ -+ soc_slppin_gpio: soc_slppin_gpio { -+ rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_output_low>; -+ }; -+ -+ soc_slppin_rst: soc_slppin_rst { -+ rockchip,pins = <0 RK_PA4 2 &pcfg_pull_none>; -+ }; -+ -+ soc_slppin_slp: soc_slppin_slp { -+ rockchip,pins = <0 RK_PA4 1 &pcfg_pull_none>; -+ }; -+ }; -+}; --- -2.34.1 - -From: Chris Morgan -To: devicetree@vger.kernel.org -Cc: linux-rockchip@lists.infradead.org, maccraft123mc@gmail.com, - sebastian.reichel@collabora.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH 3/3] arm64: dts: rockchip: Add Anbernic RG351V -Date: Mon, 20 Nov 2023 17:01:31 -0600 [thread overview] -Message-ID: <20231120230131.57705-4-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231120230131.57705-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Add support for the Anbernic RG351V, which is a handheld gaming console -from Anbernic with an RK3326 SoC, a 640x480 LCD display, a single -analog joystick with several face buttons, two USB C ports, and -internal WiFi over USB. All hardware has been tested as working -except for the battery, which will require further modification to the -mainline rk817 battery driver before it can be used (the device was -built without a shunt resistor, and as such the battery cannot -measure current; only voltage). - -Signed-off-by: Chris Morgan ---- - arch/arm64/boot/dts/rockchip/Makefile | 1 + - .../dts/rockchip/rk3326-anbernic-rg351v.dts | 44 +++++++++++++++++++ - 2 files changed, 45 insertions(+) - create mode 100644 arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts - -diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile -index a18f33bf0c0e..0ac27cf782d7 100644 ---- a/arch/arm64/boot/dts/rockchip/Makefile -+++ b/arch/arm64/boot/dts/rockchip/Makefile -@@ -9,6 +9,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-roc-cc.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-rock-pi-s.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3318-a95x-z2.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-anbernic-rg351m.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-anbernic-rg351v.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2-v11.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go3.dtb -diff --git a/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts -new file mode 100644 -index 000000000000..c2f9b56ca5f9 ---- /dev/null -+++ b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts -@@ -0,0 +1,44 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+ -+/dts-v1/; -+#include "rk3326-anbernic-rg351m.dtsi" -+ -+/ { -+ model = "Anbernic RG351V"; -+ compatible = "anbernic,rg351v", "rockchip,rk3326"; -+ -+ gpio_keys_vol: gpio-keys-vol { -+ compatible = "gpio-keys"; -+ autorepeat; -+ -+ button-vol-down { -+ label = "VOLUMEDOWN"; -+ linux,code = ; -+ gpios = <&gpio2 RK_PA1 GPIO_ACTIVE_LOW>; -+ }; -+ -+ button-vol-up { -+ label = "VOLUMEUP"; -+ linux,code = ; -+ gpios = <&gpio2 RK_PA0 GPIO_ACTIVE_LOW>; -+ }; -+ }; -+}; -+ -+&internal_display { -+ compatible = "anbernic,rg351v-panel", "newvision,nv3051d"; -+ vdd-supply = <&vcc_lcd>; -+}; -+ -+&io_domains { -+ vccio1-supply = <&vccio_sd>; -+}; -+ -+&vcc_sd { -+ regulator-max-microvolt = <3000000>; -+ regulator-min-microvolt = <1800000>; -+}; -+ -+&vccio_sd { -+ regulator-max-microvolt = <1800000>; -+}; --- -2.34.1 diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55/005-set-mac-address.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55/005-set-mac-address.patch deleted file mode 100644 index c4878de131..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566-X55/005-set-mac-address.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c -index 4a33d2e47f33..6d22628129d0 100644 ---- a/drivers/net/wireless/realtek/rtw88/main.c -+++ b/drivers/net/wireless/realtek/rtw88/main.c -@@ -2008,6 +2008,11 @@ static int rtw_chip_efuse_info_setup(struct rtw_dev *rtwdev) - efuse->ext_pa_5g = efuse->pa_type_5g & BIT(0) ? 1 : 0; - efuse->ext_lna_2g = efuse->lna_type_5g & BIT(3) ? 1 : 0; - -+ if (!is_valid_ether_addr(efuse->addr)) { -+ eth_random_addr(efuse->addr); -+ dev_warn(rtwdev->dev, "efuse MAC invalid, using random\n"); -+ } -+ - out_disable: - rtw_chip_efuse_disable(rtwdev); diff --git a/projects/Rockchip/packages/linux/patches/RK3566-X55/006-v2-add-powkiddy-x55.patch b/projects/Rockchip/packages/linux/patches/RK3566-X55/006-v2-add-powkiddy-x55.patch deleted file mode 100644 index 18ce833db2..0000000000 --- a/projects/Rockchip/packages/linux/patches/RK3566-X55/006-v2-add-powkiddy-x55.patch +++ /dev/null @@ -1,1657 +0,0 @@ -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH V2 00/10] rockchip: Add Powkiddy X55 -Date: Mon, 4 Dec 2023 12:57:09 -0600 [thread overview] -Message-ID: <20231204185719.569021-1-macroalpha82@gmail.com> (raw) - -From: Chris Morgan - -Add support for the Rockchip RK3566 based Powkiddy X55 handheld gaming -console. - -Changes since V1: - - Corrected a bug with the DRM mode flags for the video driver. - - Adjusted panel front and back porch and pixel clock to fix - issues with display that occurred after correcting DRM mode - flag bug. - - Add a new clk frequency for PLL_VPLL to get panel to run at ~60hz. - -Chris Morgan (10): - drm/panel: himax-hx8394: Drop prepare/unprepare tracking - drm/panel: himax-hx8394: Drop shutdown logic - dt-bindings: display: Document Himax HX8394 panel rotation - drm/panel: himax-hx8394: Add Panel Rotation Support - dt-bindings: display: himax-hx8394: Add Powkiddy X55 panel - drm/panel: himax-hx8394: Add Support for Powkiddy X55 panel - clk: rockchip: Mark pclk_usb as critical on rk3568 - clk: rockchip: rk3568: Add PLL rate for 126.4MHz - dt-bindings: arm: rockchip: Add Powkiddy X55 - arm64: dts: rockchip: Add Powkiddy X55 - - .../devicetree/bindings/arm/rockchip.yaml | 1 + - .../bindings/display/panel/himax,hx8394.yaml | 3 + - arch/arm64/boot/dts/rockchip/Makefile | 1 + - .../boot/dts/rockchip/rk3566-powkiddy-x55.dts | 926 ++++++++++++++++++ - drivers/clk/rockchip/clk-rk3568.c | 2 + - drivers/gpu/drm/panel/panel-himax-hx8394.c | 180 +++- - 6 files changed, 1085 insertions(+), 28 deletions(-) - create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x55.dts - --- -2.34.1 -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH V2 01/10] drm/panel: himax-hx8394: Drop prepare/unprepare tracking -Date: Mon, 4 Dec 2023 12:57:10 -0600 [thread overview] -Message-ID: <20231204185719.569021-2-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Drop the panel specific prepare/unprepare logic. This is now tracked -by the DRM stack [1]. - -[1] commit d2aacaf07395 ("drm/panel: Check for already prepared/enabled in -drm_panel") - -Signed-off-by: Chris Morgan ---- - drivers/gpu/drm/panel/panel-himax-hx8394.c | 11 ----------- - 1 file changed, 11 deletions(-) - -diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c -index c73243d85de7..3823ff388b96 100644 ---- a/drivers/gpu/drm/panel/panel-himax-hx8394.c -+++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c -@@ -68,7 +68,6 @@ struct hx8394 { - struct gpio_desc *reset_gpio; - struct regulator *vcc; - struct regulator *iovcc; -- bool prepared; - - const struct hx8394_panel_desc *desc; - }; -@@ -262,16 +261,11 @@ static int hx8394_unprepare(struct drm_panel *panel) - { - struct hx8394 *ctx = panel_to_hx8394(panel); - -- if (!ctx->prepared) -- return 0; -- - gpiod_set_value_cansleep(ctx->reset_gpio, 1); - - regulator_disable(ctx->iovcc); - regulator_disable(ctx->vcc); - -- ctx->prepared = false; -- - return 0; - } - -@@ -280,9 +274,6 @@ static int hx8394_prepare(struct drm_panel *panel) - struct hx8394 *ctx = panel_to_hx8394(panel); - int ret; - -- if (ctx->prepared) -- return 0; -- - gpiod_set_value_cansleep(ctx->reset_gpio, 1); - - ret = regulator_enable(ctx->vcc); -@@ -301,8 +292,6 @@ static int hx8394_prepare(struct drm_panel *panel) - - msleep(180); - -- ctx->prepared = true; -- - return 0; - - disable_vcc: --- -2.34.1 - -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH V2 02/10] drm/panel: himax-hx8394: Drop shutdown logic -Date: Mon, 4 Dec 2023 12:57:11 -0600 [thread overview] -Message-ID: <20231204185719.569021-3-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> - -From: Chris Morgan - -The driver shutdown is duplicate as it calls drm_unprepare and -drm_disable which are called anyway when associated drivers are -shutdown/removed. - -Signed-off-by: Chris Morgan ---- - drivers/gpu/drm/panel/panel-himax-hx8394.c | 17 ----------------- - 1 file changed, 17 deletions(-) - -diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c -index 3823ff388b96..d8e590d5e1da 100644 ---- a/drivers/gpu/drm/panel/panel-himax-hx8394.c -+++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c -@@ -390,27 +390,11 @@ static int hx8394_probe(struct mipi_dsi_device *dsi) - return 0; - } - --static void hx8394_shutdown(struct mipi_dsi_device *dsi) --{ -- struct hx8394 *ctx = mipi_dsi_get_drvdata(dsi); -- int ret; -- -- ret = drm_panel_disable(&ctx->panel); -- if (ret < 0) -- dev_err(&dsi->dev, "Failed to disable panel: %d\n", ret); -- -- ret = drm_panel_unprepare(&ctx->panel); -- if (ret < 0) -- dev_err(&dsi->dev, "Failed to unprepare panel: %d\n", ret); --} -- - static void hx8394_remove(struct mipi_dsi_device *dsi) - { - struct hx8394 *ctx = mipi_dsi_get_drvdata(dsi); - int ret; - -- hx8394_shutdown(dsi); -- - ret = mipi_dsi_detach(dsi); - if (ret < 0) - dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret); -@@ -427,7 +411,6 @@ MODULE_DEVICE_TABLE(of, hx8394_of_match); - static struct mipi_dsi_driver hx8394_driver = { - .probe = hx8394_probe, - .remove = hx8394_remove, -- .shutdown = hx8394_shutdown, - .driver = { - .name = DRV_NAME, - .of_match_table = hx8394_of_match, --- -2.34.1 -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan , - Krzysztof Kozlowski -Subject: [PATCH V2 03/10] dt-bindings: display: Document Himax HX8394 panel rotation -Date: Mon, 4 Dec 2023 12:57:12 -0600 [thread overview] -Message-ID: <20231204185719.569021-4-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Document panel rotation for Himax HX8394 display panel. - -Signed-off-by: Chris Morgan -Acked-by: Krzysztof Kozlowski ---- - .../devicetree/bindings/display/panel/himax,hx8394.yaml | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml -index ffb35288ffbb..3096debca55c 100644 ---- a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml -+++ b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml -@@ -31,6 +31,8 @@ properties: - - backlight: true - -+ rotation: true -+ - port: true - - vcc-supply: --- -2.34.1 -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH V2 04/10] drm/panel: himax-hx8394: Add Panel Rotation Support -Date: Mon, 4 Dec 2023 12:57:13 -0600 [thread overview] -Message-ID: <20231204185719.569021-5-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Add support for setting the rotation property for the Himax HX8394 -panel. - -Signed-off-by: Chris Morgan ---- - drivers/gpu/drm/panel/panel-himax-hx8394.c | 15 +++++++++++++++ - 1 file changed, 15 insertions(+) - -diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c -index d8e590d5e1da..b68ea09f4725 100644 ---- a/drivers/gpu/drm/panel/panel-himax-hx8394.c -+++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c -@@ -68,6 +68,7 @@ struct hx8394 { - struct gpio_desc *reset_gpio; - struct regulator *vcc; - struct regulator *iovcc; -+ enum drm_panel_orientation orientation; - - const struct hx8394_panel_desc *desc; - }; -@@ -324,12 +325,20 @@ static int hx8394_get_modes(struct drm_panel *panel, - return 1; - } - -+static enum drm_panel_orientation hx8394_get_orientation(struct drm_panel *panel) -+{ -+ struct hx8394 *ctx = panel_to_hx8394(panel); -+ -+ return ctx->orientation; -+} -+ - static const struct drm_panel_funcs hx8394_drm_funcs = { - .disable = hx8394_disable, - .unprepare = hx8394_unprepare, - .prepare = hx8394_prepare, - .enable = hx8394_enable, - .get_modes = hx8394_get_modes, -+ .get_orientation = hx8394_get_orientation, - }; - - static int hx8394_probe(struct mipi_dsi_device *dsi) -@@ -347,6 +356,12 @@ static int hx8394_probe(struct mipi_dsi_device *dsi) - return dev_err_probe(dev, PTR_ERR(ctx->reset_gpio), - "Failed to get reset gpio\n"); - -+ ret = of_drm_get_panel_orientation(dev->of_node, &ctx->orientation); -+ if (ret < 0) { -+ dev_err(dev, "%pOF: failed to get orientation %d\n", dev->of_node, ret); -+ return ret; -+ } -+ - mipi_dsi_set_drvdata(dsi, ctx); - - ctx->dev = dev; --- -2.34.1 -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan , - Krzysztof Kozlowski -Subject: [PATCH V2 05/10] dt-bindings: display: himax-hx8394: Add Powkiddy X55 panel -Date: Mon, 4 Dec 2023 12:57:14 -0600 [thread overview] -Message-ID: <20231204185719.569021-6-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Add compatible string for the Powkiddy X55 panel. - -Signed-off-by: Chris Morgan -Acked-by: Krzysztof Kozlowski ---- - .../devicetree/bindings/display/panel/himax,hx8394.yaml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml -index 3096debca55c..916bb7f94206 100644 ---- a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml -+++ b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml -@@ -23,6 +23,7 @@ properties: - items: - - enum: - - hannstar,hsd060bhw4 -+ - powkiddy,x55-panel - - const: himax,hx8394 - - reg: true --- -2.34.1 -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH V2 06/10] drm/panel: himax-hx8394: Add Support for Powkiddy X55 panel -Date: Mon, 4 Dec 2023 12:57:15 -0600 [thread overview] -Message-ID: <20231204185719.569021-7-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Add support for the Powkiddy X55 panel as used on the Powkiddy X55 -handheld gaming console. This panel uses a Himax HX8394 display -controller and requires a vendor provided init sequence. The display -resolution is 720x1280 and is 67mm by 121mm as measured with calipers. - -Signed-off-by: Chris Morgan ---- - drivers/gpu/drm/panel/panel-himax-hx8394.c | 137 +++++++++++++++++++++ - 1 file changed, 137 insertions(+) - -diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c -index b68ea09f4725..ff0dc08b9829 100644 ---- a/drivers/gpu/drm/panel/panel-himax-hx8394.c -+++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c -@@ -38,6 +38,7 @@ - #define HX8394_CMD_SETMIPI 0xba - #define HX8394_CMD_SETOTP 0xbb - #define HX8394_CMD_SETREGBANK 0xbd -+#define HX8394_CMD_UNKNOWN5 0xbf - #define HX8394_CMD_UNKNOWN1 0xc0 - #define HX8394_CMD_SETDGCLUT 0xc1 - #define HX8394_CMD_SETID 0xc3 -@@ -52,6 +53,7 @@ - #define HX8394_CMD_SETGIP1 0xd5 - #define HX8394_CMD_SETGIP2 0xd6 - #define HX8394_CMD_SETGPO 0xd6 -+#define HX8394_CMD_UNKNOWN4 0xd8 - #define HX8394_CMD_SETSCALING 0xdd - #define HX8394_CMD_SETIDLE 0xdf - #define HX8394_CMD_SETGAMMA 0xe0 -@@ -203,6 +205,140 @@ static const struct hx8394_panel_desc hsd060bhw4_desc = { - .init_sequence = hsd060bhw4_init_sequence, - }; - -+static int powkiddy_x55_init_sequence(struct hx8394 *ctx) -+{ -+ struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); -+ -+ /* 5.19.8 SETEXTC: Set extension command (B9h) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETEXTC, -+ 0xff, 0x83, 0x94); -+ -+ /* 5.19.9 SETMIPI: Set MIPI control (BAh) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETMIPI, -+ 0x63, 0x03, 0x68, 0x6b, 0xb2, 0xc0); -+ -+ /* 5.19.2 SETPOWER: Set power (B1h) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETPOWER, -+ 0x48, 0x12, 0x72, 0x09, 0x32, 0x54, 0x71, 0x71, 0x57, 0x47); -+ -+ /* 5.19.3 SETDISP: Set display related register (B2h) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETDISP, -+ 0x00, 0x80, 0x64, 0x2c, 0x16, 0x2f); -+ -+ /* 5.19.4 SETCYC: Set display waveform cycles (B4h) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETCYC, -+ 0x73, 0x74, 0x73, 0x74, 0x73, 0x74, 0x01, 0x0c, 0x86, 0x75, -+ 0x00, 0x3f, 0x73, 0x74, 0x73, 0x74, 0x73, 0x74, 0x01, 0x0c, -+ 0x86); -+ -+ /* 5.19.5 SETVCOM: Set VCOM voltage (B6h) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETVCOM, -+ 0x6e, 0x6e); -+ -+ /* 5.19.19 SETGIP0: Set GIP Option0 (D3h) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETGIP0, -+ 0x00, 0x00, 0x07, 0x07, 0x40, 0x07, 0x0c, 0x00, 0x08, 0x10, -+ 0x08, 0x00, 0x08, 0x54, 0x15, 0x0a, 0x05, 0x0a, 0x02, 0x15, -+ 0x06, 0x05, 0x06, 0x47, 0x44, 0x0a, 0x0a, 0x4b, 0x10, 0x07, -+ 0x07, 0x0c, 0x40); -+ -+ /* 5.19.20 Set GIP Option1 (D5h) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETGIP1, -+ 0x1c, 0x1c, 0x1d, 0x1d, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, -+ 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x24, 0x25, 0x18, 0x18, -+ 0x26, 0x27, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -+ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x20, 0x21, -+ 0x18, 0x18, 0x18, 0x18); -+ -+ /* 5.19.21 Set GIP Option2 (D6h) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETGIP2, -+ 0x1c, 0x1c, 0x1d, 0x1d, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, -+ 0x01, 0x00, 0x0b, 0x0a, 0x09, 0x08, 0x21, 0x20, 0x18, 0x18, -+ 0x27, 0x26, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -+ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x25, 0x24, -+ 0x18, 0x18, 0x18, 0x18); -+ -+ /* 5.19.25 SETGAMMA: Set gamma curve related setting (E0h) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETGAMMA, -+ 0x00, 0x0a, 0x15, 0x1b, 0x1e, 0x21, 0x24, 0x22, 0x47, 0x56, -+ 0x65, 0x66, 0x6e, 0x82, 0x88, 0x8b, 0x9a, 0x9d, 0x98, 0xa8, -+ 0xb9, 0x5d, 0x5c, 0x61, 0x66, 0x6a, 0x6f, 0x7f, 0x7f, 0x00, -+ 0x0a, 0x15, 0x1b, 0x1e, 0x21, 0x24, 0x22, 0x47, 0x56, 0x65, -+ 0x65, 0x6e, 0x81, 0x87, 0x8b, 0x98, 0x9d, 0x99, 0xa8, 0xba, -+ 0x5d, 0x5d, 0x62, 0x67, 0x6b, 0x72, 0x7f, 0x7f); -+ -+ /* Unknown command, not listed in the HX8394-F datasheet */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_UNKNOWN1, -+ 0x1f, 0x31); -+ -+ /* 5.19.17 SETPANEL (CCh) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETPANEL, -+ 0x0b); -+ -+ /* Unknown command, not listed in the HX8394-F datasheet */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_UNKNOWN3, -+ 0x02); -+ -+ /* 5.19.11 Set register bank (BDh) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETREGBANK, -+ 0x02); -+ -+ /* Unknown command, not listed in the HX8394-F datasheet */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_UNKNOWN4, -+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -+ 0xff, 0xff); -+ -+ /* 5.19.11 Set register bank (BDh) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETREGBANK, -+ 0x00); -+ -+ /* 5.19.11 Set register bank (BDh) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETREGBANK, -+ 0x01); -+ -+ /* 5.19.2 SETPOWER: Set power (B1h) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETPOWER, -+ 0x00); -+ -+ /* 5.19.11 Set register bank (BDh) */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_SETREGBANK, -+ 0x00); -+ -+ /* Unknown command, not listed in the HX8394-F datasheet */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_UNKNOWN5, -+ 0x40, 0x81, 0x50, 0x00, 0x1a, 0xfc, 0x01); -+ -+ /* Unknown command, not listed in the HX8394-F datasheet */ -+ mipi_dsi_dcs_write_seq(dsi, HX8394_CMD_UNKNOWN2, -+ 0xed); -+ -+ return 0; -+} -+ -+static const struct drm_display_mode powkiddy_x55_mode = { -+ .hdisplay = 720, -+ .hsync_start = 720 + 44, -+ .hsync_end = 720 + 44 + 20, -+ .htotal = 720 + 44 + 20 + 20, -+ .vdisplay = 1280, -+ .vsync_start = 1280 + 12, -+ .vsync_end = 1280 + 12 + 10, -+ .vtotal = 1280 + 12 + 10 + 10, -+ .clock = 63290, -+ .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, -+ .width_mm = 67, -+ .height_mm = 121, -+}; -+ -+static const struct hx8394_panel_desc powkiddy_x55_desc = { -+ .mode = &powkiddy_x55_mode, -+ .lanes = 4, -+ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | -+ MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET, -+ .format = MIPI_DSI_FMT_RGB888, -+ .init_sequence = powkiddy_x55_init_sequence, -+}; -+ - static int hx8394_enable(struct drm_panel *panel) - { - struct hx8394 *ctx = panel_to_hx8394(panel); -@@ -419,6 +555,7 @@ static void hx8394_remove(struct mipi_dsi_device *dsi) - - static const struct of_device_id hx8394_of_match[] = { - { .compatible = "hannstar,hsd060bhw4", .data = &hsd060bhw4_desc }, -+ { .compatible = "powkiddy,x55-panel", .data = &powkiddy_x55_desc }, - { /* sentinel */ } - }; - MODULE_DEVICE_TABLE(of, hx8394_of_match); --- -2.34.1 -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH V2 07/10] clk: rockchip: Mark pclk_usb as critical on rk3568 -Date: Mon, 4 Dec 2023 12:57:16 -0600 [thread overview] -Message-ID: <20231204185719.569021-8-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> - -From: Chris Morgan - -In the reference manual under "2.8.6 NIU Clock gating reliance" -it is stated that pclk_usb_niu has a dependency on hclk_usb_niu. - -While the manual does not state that this is a bi-directional -relationship it was noted that the sdmmc2 failed to operate for me in -mmc mode if the pclk_usb was not marked as critical. The parent clock -of the hclk_sdmmc2 is hclk_usb. - -Signed-off-by: Chris Morgan ---- - drivers/clk/rockchip/clk-rk3568.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/drivers/clk/rockchip/clk-rk3568.c b/drivers/clk/rockchip/clk-rk3568.c -index bfbcbb744327..c4fa2375dbfb 100644 ---- a/drivers/clk/rockchip/clk-rk3568.c -+++ b/drivers/clk/rockchip/clk-rk3568.c -@@ -1595,6 +1595,7 @@ static const char *const rk3568_cru_critical_clocks[] __initconst = { - "pclk_php", - "hclk_usb", - "hclk_vo", -+ "pclk_usb", - }; - - static const char *const rk3568_pmucru_critical_clocks[] __initconst = { --- -2.34.1 -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH V2 08/10] clk: rockchip: rk3568: Add PLL rate for 126.4MHz -Date: Mon, 4 Dec 2023 12:57:17 -0600 [thread overview] -Message-ID: <20231204185719.569021-9-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Add support for a PLL rate of 126.4MHz so that the Powkiddy X55 panel -can run at a requested 60hz. - -I have confirmed this rate fits with all the constraints -listed in the TRM for the VPLL (as an integer PLL) in Part 1 "Chapter -2 Clock & Reset Unit (CRU)." - -Signed-off-by: Chris Morgan ---- - drivers/clk/rockchip/clk-rk3568.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/drivers/clk/rockchip/clk-rk3568.c b/drivers/clk/rockchip/clk-rk3568.c -index c4fa2375dbfb..fa408fedf625 100644 ---- a/drivers/clk/rockchip/clk-rk3568.c -+++ b/drivers/clk/rockchip/clk-rk3568.c -@@ -78,6 +78,7 @@ static struct rockchip_pll_rate_table rk3568_pll_rates[] = { - RK3036_PLL_RATE(200000000, 1, 100, 3, 4, 1, 0), - RK3036_PLL_RATE(148500000, 1, 99, 4, 4, 1, 0), - RK3036_PLL_RATE(135000000, 2, 45, 4, 1, 1, 0), -+ RK3036_PLL_RATE(126400000, 1, 79, 5, 3, 1, 0), - RK3036_PLL_RATE(119000000, 3, 119, 4, 2, 1, 0), - RK3036_PLL_RATE(115200000, 1, 24, 5, 1, 1, 0), - RK3036_PLL_RATE(108000000, 2, 45, 5, 1, 1, 0), --- -2.34.1 -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan , - Krzysztof Kozlowski -Subject: [PATCH V2 09/10] dt-bindings: arm: rockchip: Add Powkiddy X55 -Date: Mon, 4 Dec 2023 12:57:18 -0600 [thread overview] -Message-ID: <20231204185719.569021-10-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> - -From: Chris Morgan - -The Powkiddy RK2023 is a handheld gaming device made by Powkiddy and -powered by the Rockchip RK3566 SoC. This device is somewhat similar -to the existing Powkiddy RK3566 devices, which have been grouped -together with a previous commit[1]. - -[1] https://lore.kernel.org/linux-rockchip/20231117202536.1387815-1-macroalpha82@gmail.com/T/#m4764997cfafaca22fe677200de96caa5fb8f0005 - -Signed-off-by: Chris Morgan -Acked-by: Krzysztof Kozlowski ---- - Documentation/devicetree/bindings/arm/rockchip.yaml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/Documentation/devicetree/bindings/arm/rockchip.yaml b/Documentation/devicetree/bindings/arm/rockchip.yaml -index 021a0e95ba62..5e22f247ee6e 100644 ---- a/Documentation/devicetree/bindings/arm/rockchip.yaml -+++ b/Documentation/devicetree/bindings/arm/rockchip.yaml -@@ -681,6 +681,7 @@ properties: - - enum: - - powkiddy,rgb30 - - powkiddy,rk2023 -+ - powkiddy,x55 - - const: rockchip,rk3566 - - - description: Radxa Compute Module 3(CM3) --- -2.34.1 -From: Chris Morgan -To: linux-rockchip@lists.infradead.org -Cc: dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org, - devicetree@vger.kernel.org, sboyd@kernel.org, - mturquette@baylibre.com, tzimmermann@suse.de, mripard@kernel.org, - maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, - airlied@gmail.com, sam@ravnborg.org, quic_jesszhan@quicinc.com, - neil.armstrong@linaro.org, javierm@redhat.com, heiko@sntech.de, - conor+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, - robh+dt@kernel.org, Chris Morgan -Subject: [PATCH V2 10/10] arm64: dts: rockchip: Add Powkiddy X55 -Date: Mon, 4 Dec 2023 12:57:19 -0600 [thread overview] -Message-ID: <20231204185719.569021-11-macroalpha82@gmail.com> (raw) -In-Reply-To: <20231204185719.569021-1-macroalpha82@gmail.com> - -From: Chris Morgan - -Add support for the Powkiddy X55. The Powkiddy RK2023 is a handheld -gaming device with a 720p 5.5 inch screen powered by the Rockchip -RK3566 SoC. It includes a Realtek 8821cs WiFi/BT module, 2 ADC -joysticks powered by 4 dedicated ADC channels, and several GPIO -face buttons. There are 2 SDMMC slots (sdmmc1 and sdmmc3), and an -8GB internal eMMC. - -Signed-off-by: Chris Morgan ---- - arch/arm64/boot/dts/rockchip/Makefile | 1 + - .../boot/dts/rockchip/rk3566-powkiddy-x55.dts | 926 ++++++++++++++++++ - 2 files changed, 927 insertions(+) - create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x55.dts - -diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile -index 9dcb65f76342..a1a06e33a299 100644 ---- a/arch/arm64/boot/dts/rockchip/Makefile -+++ b/arch/arm64/boot/dts/rockchip/Makefile -@@ -82,6 +82,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.1.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.2.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-rgb30.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-rk2023.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-x55.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-a.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-b.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-radxa-cm3-io.dtb -diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x55.dts b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x55.dts -new file mode 100644 -index 000000000000..4786b19fd017 ---- /dev/null -+++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x55.dts -@@ -0,0 +1,926 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+ -+/dts-v1/; -+ -+#include -+#include -+#include -+#include -+#include -+#include "rk3566.dtsi" -+ -+/ { -+ model = "Powkiddy x55"; -+ compatible = "powkiddy,x55", "rockchip,rk3566"; -+ -+ aliases { -+ mmc0 = &sdhci; -+ mmc1 = &sdmmc0; -+ mmc2 = &sdmmc2; -+ mmc3 = &sdmmc1; -+ }; -+ -+ chosen: chosen { -+ stdout-path = "serial2:1500000n8"; -+ }; -+ -+ adc_joystick: adc-joystick { -+ compatible = "adc-joystick"; -+ io-channels = <&saradc 0>, <&saradc 1>, -+ <&saradc 2>, <&saradc 3>; -+ poll-interval = <60>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ axis@0 { -+ reg = <0>; -+ abs-flat = <30>; -+ abs-fuzz = <20>; -+ abs-range = <15 1023>; -+ linux,code = ; -+ }; -+ -+ axis@1 { -+ reg = <1>; -+ abs-flat = <30>; -+ abs-fuzz = <20>; -+ abs-range = <1023 15>; -+ linux,code = ; -+ }; -+ -+ axis@2 { -+ reg = <2>; -+ abs-flat = <30>; -+ abs-fuzz = <20>; -+ abs-range = <15 1023>; -+ linux,code = ; -+ }; -+ -+ axis@3 { -+ reg = <3>; -+ abs-flat = <30>; -+ abs-fuzz = <20>; -+ abs-range = <1023 15>; -+ linux,code = ; -+ }; -+ }; -+ -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ power-supply = <&vcc_sys>; -+ pwms = <&pwm4 0 25000 0>; -+ }; -+ -+ battery: battery { -+ compatible = "simple-battery"; -+ charge-full-design-microamp-hours = <4000000>; -+ charge-term-current-microamp = <300000>; -+ constant-charge-current-max-microamp = <2000000>; -+ constant-charge-voltage-max-microvolt = <4300000>; -+ factory-internal-resistance-micro-ohms = <91000>; -+ voltage-max-design-microvolt = <4138000>; -+ voltage-min-design-microvolt = <3400000>; -+ -+ ocv-capacity-celsius = <20>; -+ ocv-capacity-table-0 = <4138000 100>, <4083000 95>, <4059000 90>, <4044000 85>, -+ <4030000 80>, <4020000 75>, <4006000 70>, <3972000 65>, -+ <3934000 60>, <3904000 55>, <3878000 50>, <3857000 45>, -+ <3843000 40>, <3826000 35>, <3801000 30>, <3768000 25>, -+ <3735000 20>, <3688000 15>, <3621000 10>, <3553000 5>, -+ <3400000 0>; -+ }; -+ -+ gpio_keys_control: gpio-keys-control { -+ compatible = "gpio-keys"; -+ pinctrl-0 = <&btn_pins_ctrl>; -+ pinctrl-names = "default"; -+ -+ button-a { -+ gpios = <&gpio3 RK_PD3 GPIO_ACTIVE_LOW>; -+ label = "EAST"; -+ linux,code = ; -+ }; -+ -+ button-b { -+ gpios = <&gpio3 RK_PD2 GPIO_ACTIVE_LOW>; -+ label = "SOUTH"; -+ linux,code = ; -+ }; -+ -+ button-down { -+ gpios = <&gpio4 RK_PA1 GPIO_ACTIVE_LOW>; -+ label = "DPAD-DOWN"; -+ linux,code = ; -+ }; -+ -+ button-l1 { -+ gpios = <&gpio3 RK_PD0 GPIO_ACTIVE_LOW>; -+ label = "TL"; -+ linux,code = ; -+ }; -+ -+ button-l2 { -+ gpios = <&gpio3 RK_PD1 GPIO_ACTIVE_LOW>; -+ label = "TL2"; -+ linux,code = ; -+ }; -+ -+ button-left { -+ gpios = <&gpio3 RK_PD6 GPIO_ACTIVE_LOW>; -+ label = "DPAD-LEFT"; -+ linux,code = ; -+ }; -+ -+ button-right { -+ gpios = <&gpio3 RK_PD7 GPIO_ACTIVE_LOW>; -+ label = "DPAD-RIGHT"; -+ linux,code = ; -+ }; -+ -+ button-select { -+ gpios = <&gpio4 RK_PA4 GPIO_ACTIVE_LOW>; -+ label = "SELECT"; -+ linux,code = ; -+ }; -+ -+ button-start { -+ gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_LOW>; -+ label = "START"; -+ linux,code = ; -+ }; -+ -+ button-thumbl { -+ gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_LOW>; -+ label = "THUMBL"; -+ linux,code = ; -+ }; -+ -+ button-thumbr { -+ gpios = <&gpio4 RK_PB0 GPIO_ACTIVE_LOW>; -+ label = "THUMBR"; -+ linux,code = ; -+ }; -+ -+ button-r1 { -+ gpios = <&gpio3 RK_PC6 GPIO_ACTIVE_LOW>; -+ label = "TR"; -+ linux,code = ; -+ }; -+ -+ button-r2 { -+ gpios = <&gpio3 RK_PC7 GPIO_ACTIVE_LOW>; -+ label = "TR2"; -+ linux,code = ; -+ }; -+ -+ button-up { -+ gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_LOW>; -+ label = "DPAD-UP"; -+ linux,code = ; -+ }; -+ -+ button-x { -+ gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>; -+ label = "NORTH"; -+ linux,code = ; -+ }; -+ -+ button-y { -+ gpios = <&gpio3 RK_PD4 GPIO_ACTIVE_LOW>; -+ label = "WEST"; -+ linux,code = ; -+ }; -+ }; -+ -+ gpio_keys_vol: gpio-keys-vol { -+ compatible = "gpio-keys"; -+ autorepeat; -+ pinctrl-0 = <&btn_pins_vol>; -+ pinctrl-names = "default"; -+ -+ button-voldown { -+ gpios = <&gpio4 RK_PA3 GPIO_ACTIVE_LOW>; -+ label = "VOLUMEDOWN"; -+ linux,code = ; -+ }; -+ -+ button-volup { -+ gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_LOW>; -+ label = "VOLUMEUP"; -+ linux,code = ; -+ }; -+ }; -+ -+ gpio_leds: gpio-leds { -+ compatible = "gpio-leds"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&led_pins>; -+ -+ red_led: led-0 { -+ color = ; -+ default-state = "off"; -+ gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>; -+ function = LED_FUNCTION_STATUS; -+ }; -+ -+ green_led: led-1 { -+ color = ; -+ default-state = "on"; -+ gpios = <&gpio4 RK_PB5 GPIO_ACTIVE_HIGH>; -+ function = LED_FUNCTION_POWER; -+ }; -+ -+ amber_led: led-2 { -+ color = ; -+ gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>; -+ function = LED_FUNCTION_CHARGING; -+ }; -+ -+ }; -+ -+ hdmi-con { -+ compatible = "hdmi-connector"; -+ ddc-i2c-bus = <&i2c5>; -+ type = "c"; -+ -+ port { -+ hdmi_con_in: endpoint { -+ remote-endpoint = <&hdmi_out_con>; -+ }; -+ }; -+ }; -+ -+ sdio_pwrseq: sdio-pwrseq { -+ compatible = "mmc-pwrseq-simple"; -+ clocks = <&rk817 1>; -+ clock-names = "ext_clock"; -+ pinctrl-0 = <&wifi_enable_h>; -+ pinctrl-names = "default"; -+ post-power-on-delay-ms = <200>; -+ reset-gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_LOW>; -+ }; -+ -+ /* Channels reversed for both headphones and speakers. */ -+ sound { -+ compatible = "simple-audio-card"; -+ pinctrl-0 = <&hp_det>; -+ pinctrl-names = "default"; -+ simple-audio-card,name = "rk817_ext"; -+ simple-audio-card,aux-devs = <&spk_amp>; -+ simple-audio-card,format = "i2s"; -+ simple-audio-card,hp-det-gpio = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>; -+ simple-audio-card,mclk-fs = <256>; -+ simple-audio-card,widgets = -+ "Microphone", "Mic Jack", -+ "Headphone", "Headphones", -+ "Speaker", "Internal Speakers"; -+ simple-audio-card,routing = -+ "MICL", "Mic Jack", -+ "Headphones", "HPOL", -+ "Headphones", "HPOR", -+ "Internal Speakers", "Speaker Amp OUTL", -+ "Internal Speakers", "Speaker Amp OUTR", -+ "Speaker Amp INL", "HPOL", -+ "Speaker Amp INR", "HPOR"; -+ simple-audio-card,pin-switches = "Internal Speakers"; -+ -+ simple-audio-card,codec { -+ sound-dai = <&rk817>; -+ }; -+ -+ simple-audio-card,cpu { -+ sound-dai = <&i2s1_8ch>; -+ }; -+ }; -+ -+ spk_amp: audio-amplifier { -+ compatible = "simple-audio-amplifier"; -+ enable-gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>; -+ pinctrl-0 = <&spk_amp_enable_h>; -+ pinctrl-names = "default"; -+ sound-name-prefix = "Speaker Amp"; -+ }; -+ -+ vcc5v0_host: regulator-vcc5v0-host { -+ compatible = "regulator-fixed"; -+ enable-active-high; -+ gpio = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>; -+ pinctrl-0 = <&vcc5v0_host_en>; -+ pinctrl-names = "default"; -+ regulator-name = "vcc5v0_host"; -+ vin-supply = <&dcdc_boost>; -+ }; -+ -+ vcc_lcd: regulator-vcc-lcd { -+ compatible = "regulator-fixed"; -+ enable-active-high; -+ gpio = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>; -+ pinctrl-0 = <&vcc_lcd_en>; -+ pinctrl-names = "default"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc_lcd"; -+ }; -+ -+ vcc_sys: regulator-vcc-sys { -+ compatible = "regulator-fixed"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3800000>; -+ regulator-max-microvolt = <3800000>; -+ regulator-name = "vcc_sys"; -+ }; -+ -+ vcc_wifi: regulator-vcc-wifi { -+ compatible = "regulator-fixed"; -+ gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>; -+ pinctrl-0 = <&vcc_wifi_h>; -+ pinctrl-names = "default"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc_wifi"; -+ }; -+}; -+ -+&combphy1 { -+ status = "okay"; -+}; -+ -+&cru { -+ assigned-clocks = <&pmucru CLK_RTC_32K>, <&cru PLL_GPLL>, -+ <&pmucru PLL_PPLL>, <&cru PLL_VPLL>; -+ assigned-clock-rates = <32768>, <1200000000>, -+ <200000000>, <126400000>; -+}; -+ -+&cpu0 { -+ cpu-supply = <&vdd_cpu>; -+}; -+ -+&cpu1 { -+ cpu-supply = <&vdd_cpu>; -+}; -+ -+&cpu2 { -+ cpu-supply = <&vdd_cpu>; -+}; -+ -+&cpu3 { -+ cpu-supply = <&vdd_cpu>; -+}; -+ -+&dsi_dphy0 { -+ status = "okay"; -+}; -+ -+&dsi0 { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ ports { -+ dsi0_in: port@0 { -+ reg = <0>; -+ dsi0_in_vp1: endpoint { -+ remote-endpoint = <&vp1_out_dsi0>; -+ }; -+ }; -+ -+ dsi0_out: port@1 { -+ reg = <1>; -+ mipi_out_panel: endpoint { -+ remote-endpoint = <&mipi_in_panel>; -+ }; -+ }; -+ }; -+ -+ panel: panel@0 { -+ compatible = "powkiddy,x55-panel", "himax,hx8394"; -+ reg = <0>; -+ backlight = <&backlight>; -+ iovcc-supply = <&vcc_lcd>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&lcd_rst>; -+ reset-gpios = <&gpio0 RK_PD5 GPIO_ACTIVE_LOW>; -+ rotation = <270>; -+ vcc-supply = <&vcc_lcd>; -+ -+ port { -+ mipi_in_panel: endpoint { -+ remote-endpoint = <&mipi_out_panel>; -+ }; -+ }; -+ }; -+}; -+ -+&gpu { -+ mali-supply = <&vdd_gpu>; -+ status = "okay"; -+}; -+ -+&hdmi { -+ ddc-i2c-bus = <&i2c5>; -+ pinctrl-0 = <&hdmitxm0_cec>; -+ pinctrl-names = "default"; -+ status = "okay"; -+}; -+ -+&hdmi_in { -+ hdmi_in_vp0: endpoint { -+ remote-endpoint = <&vp0_out_hdmi>; -+ }; -+}; -+ -+&hdmi_out { -+ hdmi_out_con: endpoint { -+ remote-endpoint = <&hdmi_con_in>; -+ }; -+}; -+ -+&hdmi_sound { -+ status = "okay"; -+}; -+ -+&i2c0 { -+ status = "okay"; -+ -+ rk817: pmic@20 { -+ compatible = "rockchip,rk817"; -+ reg = <0x20>; -+ assigned-clocks = <&cru I2S1_MCLKOUT_TX>; -+ assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>; -+ clock-names = "mclk"; -+ clock-output-names = "rk808-clkout1", "rk808-clkout2"; -+ clocks = <&cru I2S1_MCLKOUT_TX>; -+ interrupt-parent = <&gpio0>; -+ interrupts = ; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2s1m0_mclk>, <&pmic_int_l>; -+ wakeup-source; -+ #clock-cells = <1>; -+ #sound-dai-cells = <0>; -+ -+ vcc1-supply = <&vcc_sys>; -+ vcc2-supply = <&vcc_sys>; -+ vcc3-supply = <&vcc_sys>; -+ vcc4-supply = <&vcc_sys>; -+ vcc5-supply = <&vcc_sys>; -+ vcc6-supply = <&vcc_sys>; -+ vcc7-supply = <&vcc_sys>; -+ vcc8-supply = <&vcc_sys>; -+ vcc9-supply = <&dcdc_boost>; -+ -+ regulators { -+ vdd_logic: DCDC_REG1 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <500000>; -+ regulator-max-microvolt = <1350000>; -+ regulator-ramp-delay = <6001>; -+ regulator-initial-mode = <0x2>; -+ regulator-name = "vdd_logic"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ regulator-suspend-microvolt = <900000>; -+ }; -+ }; -+ -+ vdd_gpu: DCDC_REG2 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <500000>; -+ regulator-max-microvolt = <1350000>; -+ regulator-ramp-delay = <6001>; -+ regulator-initial-mode = <0x2>; -+ regulator-name = "vdd_gpu"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc_ddr: DCDC_REG3 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-initial-mode = <0x2>; -+ regulator-name = "vcc_ddr"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ vcc_3v3: DCDC_REG4 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-initial-mode = <0x2>; -+ regulator-name = "vcc_3v3"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; -+ }; -+ -+ vcca1v8_pmu: LDO_REG1 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "vcca1v8_pmu"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <1800000>; -+ }; -+ }; -+ -+ vdda_0v9: LDO_REG2 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <900000>; -+ regulator-max-microvolt = <900000>; -+ regulator-name = "vdda_0v9"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vdda0v9_pmu: LDO_REG3 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <900000>; -+ regulator-max-microvolt = <900000>; -+ regulator-name = "vdda0v9_pmu"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <900000>; -+ }; -+ }; -+ -+ vccio_acodec: LDO_REG4 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vccio_acodec"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vccio_sd: LDO_REG5 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vccio_sd"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc3v3_pmu: LDO_REG6 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc3v3_pmu"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; -+ }; -+ -+ vcc_1v8: LDO_REG7 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "vcc_1v8"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc1v8_dvp: LDO_REG8 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "vcc1v8_dvp"; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ vcc2v8_dvp: LDO_REG9 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc2v8_dvp"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ dcdc_boost: BOOST { -+ regulator-min-microvolt = <4700000>; -+ regulator-max-microvolt = <5400000>; -+ regulator-name = "boost"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ otg_switch: OTG_SWITCH { -+ regulator-name = "otg_switch"; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ }; -+ -+ rk817_charger: charger { -+ monitored-battery = <&battery>; -+ rockchip,resistor-sense-micro-ohms = <10000>; -+ rockchip,sleep-enter-current-microamp = <150000>; -+ rockchip,sleep-filter-current-microamp = <100000>; -+ }; -+ -+ }; -+ -+ vdd_cpu: regulator@1c { -+ compatible = "tcs,tcs4525"; -+ reg = <0x1c>; -+ fcs,suspend-voltage-selector = <1>; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <712500>; -+ regulator-max-microvolt = <1390000>; -+ regulator-name = "vdd_cpu"; -+ regulator-ramp-delay = <2300>; -+ vin-supply = <&vcc_sys>; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+}; -+ -+&i2c5 { -+ pinctrl-0 = <&i2c5m1_xfer>; -+ pinctrl-names = "default"; -+ status = "okay"; -+}; -+ -+&i2s0_8ch { -+ status = "okay"; -+}; -+ -+&i2s1_8ch { -+ pinctrl-0 = <&i2s1m0_sclktx>, <&i2s1m0_lrcktx>, <&i2s1m0_sdi0>, -+ <&i2s1m0_sdo0>; -+ pinctrl-names = "default"; -+ rockchip,trcm-sync-tx-only; -+ status = "okay"; -+}; -+ -+&pinctrl { -+ audio-amplifier { -+ spk_amp_enable_h: spk-amp-enable-h { -+ rockchip,pins = -+ <4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ gpio-control { -+ btn_pins_ctrl: btn-pins-ctrl { -+ rockchip,pins = -+ <3 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PD1 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PD2 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PD7 RK_FUNC_GPIO &pcfg_pull_up>, -+ <4 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>, -+ <4 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>, -+ <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>, -+ <4 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>, -+ <4 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, -+ <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ -+ btn_pins_vol: btn-pins-vol { -+ rockchip,pins = -+ <4 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>, -+ <4 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ gpio-lcd { -+ lcd_rst: lcd-rst { -+ rockchip,pins = -+ <0 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ gpio-leds { -+ led_pins: led-pins { -+ rockchip,pins = -+ <4 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>, -+ <4 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>, -+ <4 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ hp-detect { -+ hp_det: hp-det { -+ rockchip,pins = -+ <4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ pmic { -+ pmic_int_l: pmic-int-l { -+ rockchip,pins = -+ <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ sdio-pwrseq { -+ wifi_enable_h: wifi-enable-h { -+ rockchip,pins = -+ <0 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ usb { -+ vcc5v0_host_en: vcc5v0-host-en { -+ rockchip,pins = -+ <4 RK_PC4 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ -+ vcc5v0_otg_en: vcc5v0-otg-en { -+ rockchip,pins = -+ <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ vcc-lcd { -+ vcc_lcd_en: vcc-lcd-en { -+ rockchip,pins = -+ <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ vcc-wifi { -+ vcc_wifi_h: vcc-wifi-h { -+ rockchip,pins = -+ <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+}; -+ -+&pmu_io_domains { -+ status = "okay"; -+ pmuio1-supply = <&vcc3v3_pmu>; -+ pmuio2-supply = <&vcca1v8_pmu>; -+ vccio1-supply = <&vccio_acodec>; -+ vccio3-supply = <&vccio_sd>; -+ vccio4-supply = <&vcca1v8_pmu>; -+ vccio5-supply = <&vcc2v8_dvp>; -+ vccio6-supply = <&vcc1v8_dvp>; -+ vccio7-supply = <&vcc_3v3>; -+}; -+ -+&pwm4 { -+ status = "okay"; -+}; -+ -+&saradc { -+ vref-supply = <&vcc_1v8>; -+ status = "okay"; -+}; -+ -+&sdhci { -+ bus-width = <8>; -+ mmc-hs200-1_8v; -+ non-removable; -+ pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>, -+ <&emmc_datastrobe>, <&emmc_rstnout>; -+ pinctrl-names = "default"; -+ status = "okay"; -+}; -+ -+&sdmmc0 { -+ bus-width = <4>; -+ cap-mmc-highspeed; -+ cap-sd-highspeed; -+ disable-wp; -+ pinctrl-0 = <&sdmmc0_bus4>, <&sdmmc0_clk>, <&sdmmc0_cmd>, -+ <&sdmmc0_det>; -+ pinctrl-names = "default"; -+ sd-uhs-sdr104; -+ vqmmc-supply = <&vccio_sd>; -+ status = "okay"; -+}; -+ -+&sdmmc1 { -+ bus-width = <4>; -+ cap-sd-highspeed; -+ cap-sdio-irq; -+ keep-power-in-suspend; -+ mmc-pwrseq = <&sdio_pwrseq>; -+ non-removable; -+ pinctrl-0 = <&sdmmc1_bus4>, <&sdmmc1_cmd>, <&sdmmc1_clk>; -+ pinctrl-names = "default"; -+ vmmc-supply = <&vcc_wifi>; -+ status = "okay"; -+}; -+ -+&sdmmc2 { -+ bus-width = <4>; -+ cap-mmc-highspeed; -+ cap-sd-highspeed; -+ disable-wp; -+ pinctrl-0 = <&sdmmc2m1_bus4>, <&sdmmc2m1_cmd>, <&sdmmc2m1_clk>, -+ <&sdmmc2m1_det>; -+ pinctrl-names = "default"; -+ sd-uhs-sdr104; -+ vqmmc-supply = <&vcc2v8_dvp>; -+ status = "okay"; -+}; -+ -+&tsadc { -+ rockchip,hw-tshut-mode = <1>; -+ rockchip,hw-tshut-polarity = <0>; -+ status = "okay"; -+}; -+ -+&uart1 { -+ pinctrl-0 = <&uart1m0_xfer>, <&uart1m0_ctsn>, <&uart1m0_rtsn>; -+ pinctrl-names = "default"; -+ uart-has-rtscts; -+ status = "okay"; -+ -+ bluetooth { -+ compatible = "realtek,rtl8821cs-bt", "realtek,rtl8723bs-bt"; -+ device-wake-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>; -+ enable-gpios = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>; -+ host-wake-gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>; -+ }; -+}; -+ -+&uart2 { -+ status = "okay"; -+}; -+ -+&usb_host0_xhci { -+ phys = <&usb2phy0_otg>; -+ phy-names = "usb2-phy"; -+ status = "okay"; -+}; -+ -+&usb_host1_xhci { -+ status = "okay"; -+}; -+ -+&usb2phy0 { -+ status = "okay"; -+}; -+ -+&usb2phy0_otg { -+ status = "okay"; -+}; -+ -+&usb2phy0_host { -+ phy-supply = <&vcc5v0_host>; -+ status = "okay"; -+}; -+ -+&vop { -+ assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; -+ assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; -+ status = "okay"; -+}; -+ -+&vop_mmu { -+ status = "okay"; -+}; -+ -+&vp0 { -+ vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { -+ reg = ; -+ remote-endpoint = <&hdmi_in_vp0>; -+ }; -+}; -+ -+&vp1 { -+ vp1_out_dsi0: endpoint@ROCKCHIP_VOP2_EP_MIPI0 { -+ reg = ; -+ remote-endpoint = <&dsi0_in_vp1>; -+ }; -+}; --- -2.34.1 From 2479ac3c801af4559b842db624241b3bb274e2ba Mon Sep 17 00:00:00 2001 From: sydarn Date: Wed, 7 Feb 2024 23:06:05 +0100 Subject: [PATCH 126/167] rk2023: fix panel timings on 6.8 --- .../linux/patches/RK3566/007-rk2023-display-mode.patch | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/projects/Rockchip/packages/linux/patches/RK3566/007-rk2023-display-mode.patch b/projects/Rockchip/packages/linux/patches/RK3566/007-rk2023-display-mode.patch index 0bb84bd1b7..3d029df049 100644 --- a/projects/Rockchip/packages/linux/patches/RK3566/007-rk2023-display-mode.patch +++ b/projects/Rockchip/packages/linux/patches/RK3566/007-rk2023-display-mode.patch @@ -12,9 +12,9 @@ index 94d89ffd596..923e4df1420 100644 - .hsync_start = 640 + 40, - .hsync_end = 640 + 40 + 2, - .htotal = 640 + 40 + 2 + 80, -+ .hsync_start = 640 + 48, -+ .hsync_end = 640 + 48 + 2, -+ .htotal = 640 + 48 + 2 + 47, ++ .hsync_start = 640 + 64, ++ .hsync_end = 640 + 64 + 2, ++ .htotal = 640 + 64 + 2 + 80, .vdisplay = 480, - .vsync_start = 480 + 18, - .vsync_end = 480 + 18 + 2, @@ -23,7 +23,7 @@ index 94d89ffd596..923e4df1420 100644 + .vsync_start = 480 + 2, + .vsync_end = 480 + 2 + 4, + .vtotal = 480 + 2 + 4 + 3, -+ .clock = 21600, ++ .clock = 23040, .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, - }, + } From 4b0af3f53b2edd8314999b29cfc0327f50698fab Mon Sep 17 00:00:00 2001 From: fewtarius Date: Wed, 7 Feb 2024 22:07:27 +0000 Subject: [PATCH 127/167] Deprecate and remove stale post-update hooks. --- packages/jelos/sources/post-update | 69 ------------------------------ 1 file changed, 69 deletions(-) diff --git a/packages/jelos/sources/post-update b/packages/jelos/sources/post-update index be8bfa8ece..aa02df0b34 100644 --- a/packages/jelos/sources/post-update +++ b/packages/jelos/sources/post-update @@ -69,75 +69,6 @@ ln -sf /usr/share/locale /storage/.config/emulationstation/locale >>/var/log/con ### Add items below this line that are safe to remove after a period of time. ################################################################################ -### 20231114 - Update hosts.conf -grep "127.0.0.1" /storage/.config/hosts.conf >/dev/null 2>&1 || cp /usr/config/hosts.conf /storage/.config/ - -### 20231127 - Migrate games to overlayfs (updated 20231203) -NULL=$(cat /proc/mounts | grep -v -e "/storage/roms" 2>/dev/null | grep ${1}) -if [ ! "$?" = 0 ] -then - umount /storage/roms -fi -GAMECOUNT=$(find /storage/roms -type f | wc -l) -if [ "${GAMECOUNT}" -gt 20 ] && \ - [ ! -e "/storage/.migrated_games" ] -then - echo "Migrating games to overlayfs" >>${LOG} - tocon "Migrate games to new storage model..." - if [ -d "/storage/games-internal" ] - then - echo "Backing up games-internal" >>${LOG} - mv /storage/games-internal /storage/games-internal.backup - fi - mv /storage/roms /storage/games-internal - mkdir /storage/roms - touch /storage/.migrated_games -else - echo "Game weight too low (${GAMECOUNT}) or content already migrated." >>${LOG} -fi - -### Migration part 2 -if [ ! -e "/storage/.migrated_games2" ] -then - for GAMES in /storage/games-internal /storage/games-external - do - if [ ! -d "${GAMES}/roms" ] - then - mkdir -p "${GAMES}/roms" 2>/dev/null - fi - tocon "Migrate games to new storage model..." - mv "${GAMES}"/* "${GAMES}/roms/" - done - touch /storage/.migrated_games2 -fi - -### 20231129 - Don't default to performance. -EPP=$(get_setting system.power.epp) -if [ -z "${EPP}" ] || \ - [ "${EPP}" = "performance" ] -then - EPP="balance_performance" - set_setting system.power.epp ${EPP} -fi - -### 20231130 - Replace smb.conf for new overlay mechanism. -cp -f /usr/config/smb.conf /storage/.config - -### 20231202 - Remove stale profile bits if they exist. -for FILE in 001-deviceconfig 99-mixer -do - rm -f /storage/.config/profile.d/${FILE} 2>/dev/null -done - -### 20231203 - Disable merged storage by default. -MERGED_STORAGE=$(get_setting system.merged.storage) -if [ -z "${MERGED_STORAGE}" ] -then - set_setting system.merged.storage 0 -fi - -systemctl restart jelos-automount - ### 20240111 - Add new jslisten hotkey if [ -e "/storage/.config/jslisten_hotkeys" ] then From 1d2350ff9e7a0f0bc8691ec7c585b86003b0419f Mon Sep 17 00:00:00 2001 From: fewtarius Date: Thu, 8 Feb 2024 00:40:38 +0000 Subject: [PATCH 128/167] Improve Vita3k integration, adds a scan games script and also integrates .psvita files that it creates with the start script. --- config/emulators/psvita.conf | 4 +- .../AMD64/SUPPORTED_EMULATORS_AND_CORES.md | 2 +- .../emulators/standalone/vita3k-sa/package.mk | 7 +- .../vita3k-sa/scripts/scan_vita3k.sh | 21 + .../vita3k-sa/scripts/start_vita3k.sh | 9 +- .../vita3k-sa/sources/vita-gamelist.txt | 2055 +++++++++++++++++ packages/jelos/sources/post-update | 4 + 7 files changed, 2096 insertions(+), 6 deletions(-) create mode 100755 packages/emulators/standalone/vita3k-sa/scripts/scan_vita3k.sh mode change 100644 => 100755 packages/emulators/standalone/vita3k-sa/scripts/start_vita3k.sh create mode 100644 packages/emulators/standalone/vita3k-sa/sources/vita-gamelist.txt diff --git a/config/emulators/psvita.conf b/config/emulators/psvita.conf index 6017185235..ff5b34d217 100644 --- a/config/emulators/psvita.conf +++ b/config/emulators/psvita.conf @@ -3,8 +3,8 @@ SYSTEM_FULLNAME="PlayStation Vita" SYSTEM_MANUFACTURER="Sony" SYSTEM_RELEASE="2011" SYSTEM_HARDWARE="portable" -SYSTEM_PATH="/usr/config/vita3k/launcher/" -SYSTEM_EXTENSION=".sh" +SYSTEM_PATH="/storage/.config/vita3k/launcher/" +SYSTEM_EXTENSION=".sh .psvita" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="psvita" SYSTEM_THEME="psvita" diff --git a/documentation/PER_DEVICE_DOCUMENTATION/AMD64/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/AMD64/SUPPORTED_EMULATORS_AND_CORES.md index 58979c14dd..038c9d79f2 100644 --- a/documentation/PER_DEVICE_DOCUMENTATION/AMD64/SUPPORTED_EMULATORS_AND_CORES.md +++ b/documentation/PER_DEVICE_DOCUMENTATION/AMD64/SUPPORTED_EMULATORS_AND_CORES.md @@ -119,7 +119,7 @@ This document describes all available systems emulators and cores available for |Sony|PlayStation 2 (ps2)|2000|`ps2`|.iso .mdf .nrg .bin .img .dump .gz .cso .chd|**pcsx2:** pcsx2-sa (default)
**retroarch:** pcsx2
| |Sony|PlayStation 3 (ps3)|2006|`ps3`|.ps3 .psn|**rpcs3:** rpcs3-sa (default)
| |Sony|PlayStation Portable (psp)|2004|`psp`|.iso .cso .pbp .chd|**ppsspp:** ppsspp-sa (default)
**retroarch:** ppsspp
| -|Sony|PlayStation Vita (psvita)|2011|`launcher`|.sh|**vita3k:** vita3k-sa (default)
| +|Sony|PlayStation Vita (psvita)|2011|`launcher`|.sh .psvita|**vita3k:** vita3k-sa (default)
| |Sony|PSP Minis (pspminis)|2004|`pspminis`|.iso .cso .pbp|**ppsspp:** ppsspp-sa (default)
**retroarch:** ppsspp
| |Sun Microsystems|J2ME (j2me)|2002|`j2me`|.jar|**retroarch:** freej2me (default)
| |Various|CHIP-8 / S-CHIP / XO-CHIP (chip-8)|1978|`chip-8`|.ch8 .sc8 .xo8|**retroarch:** jaxe (default)
| diff --git a/packages/emulators/standalone/vita3k-sa/package.mk b/packages/emulators/standalone/vita3k-sa/package.mk index 2c7914e258..cc2369c1a5 100644 --- a/packages/emulators/standalone/vita3k-sa/package.mk +++ b/packages/emulators/standalone/vita3k-sa/package.mk @@ -47,6 +47,9 @@ makeinstall_target() { chmod 0755 ${INSTALL}/usr/bin/* mkdir -p ${INSTALL}/usr/config/vita3k/launcher - cp ${PKG_DIR}/scripts/start_vita3k.sh ${INSTALL}/usr/config/vita3k/launcher/Start\ Vita3K.sh - chmod 0755 ${INSTALL}/usr/config/vita3k/launcher/Start\ Vita3K.sh + cp ${PKG_DIR}/scripts/start_vita3k.sh ${INSTALL}/usr/config/vita3k/launcher/_Start\ Vita3K.sh + cp ${PKG_DIR}/scripts/scan_vita3k.sh ${INSTALL}/usr/config/vita3k/launcher/_Scan\ Vita\ Games.sh + chmod 0755 ${INSTALL}/usr/config/vita3k/launcher/*sh + + cp ${PKG_DIR}/sources/vita-gamelist.txt ${INSTALL}/usr/config/vita3k } diff --git a/packages/emulators/standalone/vita3k-sa/scripts/scan_vita3k.sh b/packages/emulators/standalone/vita3k-sa/scripts/scan_vita3k.sh new file mode 100755 index 0000000000..2ce1036c7f --- /dev/null +++ b/packages/emulators/standalone/vita3k-sa/scripts/scan_vita3k.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) + +. /etc/profile + +GAME_PATH="/storage/psvita/vita3k/ux0/app" +GAME_DATA="/storage/.config/vita3k/vita-gamelist.txt" +OUTPUT_PATH="/storage/.config/vita3k/launcher" + +cd ${GAME_PATH} +for GAME in PC* +do + FILENAME=$(grep ${GAME} ${GAME_DATA} | sed 's~'${GAME}'\t~~g') + if [ ! -e "${OUTPUT_PATH}/${FILENAME}.psvita" ] && \ + [ -n "${FILENAME}" ] + then + echo ${GAME} > ${OUTPUT_PATH}/"${FILENAME}.psvita" + fi +done diff --git a/packages/emulators/standalone/vita3k-sa/scripts/start_vita3k.sh b/packages/emulators/standalone/vita3k-sa/scripts/start_vita3k.sh old mode 100644 new mode 100755 index df601ef148..4e6bf7b9d5 --- a/packages/emulators/standalone/vita3k-sa/scripts/start_vita3k.sh +++ b/packages/emulators/standalone/vita3k-sa/scripts/start_vita3k.sh @@ -6,6 +6,9 @@ . /etc/profile jslisten set "-9 Vita3K" +OUTPUT_PATH="/storage/.config/vita3k/launcher" +GAME="${1}" + #Check if vita3k folder exists in /storage/.config/vita3k if [ ! -d "/storage/.config/vita3k" ]; then mkdir -p "/storage/.config/vita3k" @@ -20,5 +23,9 @@ if [ ! -d "/storage/roms/psvita/vita3k" ]; then mkdir -p "/storage/roms/psvita/vita3k" fi +if [ -n "${GAME}" ]; then + OPTIONS="-r $(cat "${GAME}")" +fi + #Start Vita3K -/usr/bin/Vita3K +/usr/bin/Vita3K ${OPTIONS} diff --git a/packages/emulators/standalone/vita3k-sa/sources/vita-gamelist.txt b/packages/emulators/standalone/vita3k-sa/sources/vita-gamelist.txt new file mode 100644 index 0000000000..4eb1d5bcb5 --- /dev/null +++ b/packages/emulators/standalone/vita3k-sa/sources/vita-gamelist.txt @@ -0,0 +1,2055 @@ +PCSE00965 #KILLALLZOMBIES +PCSG00891 √Letter +PCSE00963 √Letter +PCSB01019 √Letter +PCSE00890 10 Second Ninja X +PCSB00963 10 Second Ninja X +PCSE00349 1001 Spikes +PCSE00634 2013: Infected Wars +PCSE00972 2064: Read Only Memories +PCSE01169 36 Fragments of Midnight +PCSG00590 5-nin no Koi Prince: Himitsu no Keiyaku Kekkon +PCSE01168 7'scarlet +PCSH10090 7'scarlet +PCSG00876 7'scarlet +PCSE00914 99Vidas +PCSE01167 99vidas - Demo +PCSE00726 A Boy and His Blob +PCSH10075 A Certain Magical Virtual-On +PCSG00505 A Good Librarian Like a Good Shepherd -Library Party- +PCSE01095 A Hole New World +PCSB01095 A Rose in the Twilight +PCSE01046 A Rose in the Twilight +PCSB00955 A Virus Named TOM +PCSE00501 A Virus Named TOM +PCSE01389 A Winter's Daydream +PCSE00232 A-men +PCSB00056 A-men +PCSE00324 A-men 2 +PCSB00222 A-men 2 +PCSB00154 A-men Demo +PCSB00898 A.O.T. Wings of Freedom +PCSB00960 A.W. : Phoenix Festa +PCSE00871 A.W. : Phoenix Festa +PCSE00278 Aabs Animals +PCSG00591 Abunai Koi no Sousashitsu: Eternal Happiness +PCSB00792 AC® Chronicles +PCSE00700 AC® Chronicles +PCSB01101 Accel World vs. Sword Art Online +PCSE01071 Accel World vs. Sword Art Online +PCSG01016 Accel World vs. Sword Art Online +PCSE01356 Access Denied +PCSE01448 Active Neurons +PCSB01008 Active Soccer 2 DX +PCSB00858 Actual Sunlight +PCSE00695 Actual Sunlight +PCSE00582 Adventure Time: the Secret of the Nameless Kingdom +PCSE00905 Adventures of Mana +PCSB00975 Adventures of Mana +PCSG90182 Aegis of Earth Demo +PCSE00844 Aegis of Earth: Protonovus Assault +PCSG00362 Aegis of Earth: Protonovus Assault +PCSG01296 Aerial Life +PCSE00628 AeternoBlade +PCSG00483 AeternoBlade +PCSB00732 AeternoBlade Demo +PCSE00636 AeternoBlade Demo +PCSB00412 Age of Zombies +PCSE00362 Age of Zombies +PCSG01325 Ai Kiss +PCSG00940 AIR +PCSE00980 Air Race Speed +PCSG00461 Airship Q +PCSG00338 Aiyoku no Eustia: Angel’s Blessing +PCSG00780 Akai Suna Ochiru Tsuki +PCSE00927 Akiba's Beat +PCSB01066 AKIBA'S BEAT +PCSG00159 AKIBA'S TRIP 2 +PCSH00057 AKIBA'S TRIP 2 +PCSE00428 AKIBA'S TRIP UNDEAD & UNDRESSED +PCSG90191 ALIA's CARNIVAL! Sacramento Trial +PCSE00210 Alien Breed +PCSE00445 Alien Shooter +PCSB00964 Alone With You +PCSE00887 Alone With You +PCSB01457 Alphaset by POWGI +PCSH10271 Alphaset by POWGI +PCSE01493 Alphaset by POWGI +PCSB01187 Alteric +PCSG01243 Alvastia Chronicles +PCSG01086 Amaekata wa Kanojo Nari ni. +PCSG01293 Amamane +PCSG00638 Amatsumi Sora ni! Kumo no Hatate ni +PCSG01138 Amenity's Life +PCSG90299 Amenity's Life -アメニティーズ ライフ- 体験版 +PCSG00403 AMNESIA LATER×CROWD V Edition +PCSB00740 Amnesia Memories +PCSG00203 AMNESIA V Edition +PCSG00276 AMNESIA World +PCSE00647 Amnesia: Memories +PCSG00696 Angelique Retour +PCSE00322 Angry Birds Trilogy +PCSB00397 Angry Birds™ Star Wars +PCSE00294 Angry Birds™ Star Wars +PCSG00342 Anoko wa Ore Kara Hanarenai +PCSE00472 Another World - 20th Anniversary Edition +PCSE01147 Antiquia Lost +PCSG00700 Ao no Kanata Four Rhythm +PCSG90180 Ao no Kanata no Four Rhythm Trial Version +PCSG01281 Aoki Tsubasa no Chevalier +PCSG01283 Aonatsu Line +PCSG00848 Aqua Kitty - Milk Mine Defender DX +PCSB00798 Ar nosurge Plus: Ode to an Unborn Star +PCSE00707 AR Nosurge Plus: Ode to an Unborn Star +PCSG00751 Arcana Famiglia -La storia della Arcana Famiglia- Ancora +PCSE00427 Arcana Heart 3 LOVE MAX!!!!! +PCSG00328 Arcana Heart 3: LOVE MAX!!!!! +PCSB00050 Army Corps of Hell +PCSE00006 ARMY CORPS OF HELL +PCSE01379 Asdivine Dios +PCSE00968 Asdivine Hearts +PCSE01335 Asdivine Hearts II +PCSE01419 Asdivine Menace +PCSE00007 Asphalt: Injection +PCSG00116 Assassin's Creed® III Lady Liberty +PCSB00074 Assassin's Creed® III Liberation +PCSE00053 Assassin's Creed® III Liberation +PCSG90030 Assault Army +PCSG90032 Assault Gunners Trial Version +PCSG00901 AstralAir no Shiroki Towa: White Eternity +PCSG90248 AstralAir no Shiroki Towa: White Eternity Trial Version +PCSE01333 Atari Flashback Classics +PCSE00584 Atelier Ayesha Plus ~The Alchemist of Dusk~ +PCSB00700 Atelier Ayesha Plus ~The Alchemist of Dusk~ +PCSG00347 Atelier Ayesha Plus: The Alchemist of Dusk +PCSB00906 Atelier Escha & Logy Plus ~Alchemists of the Dusk Sky~ +PCSG00522 Atelier Escha & Logy Plus: Alchemists of the Dusk Sky +PCSE00826 Atelier Escha & Logy Plus: Alchemists of the Dusk Sky +PCSB01087 Atelier Firis ~The Alchemist and the Mysterious Journey~ +PCSE01044 Atelier Firis ~The Alchemist and the Mysterious Journey~ +PCSH10026 Atelier Firis ~The Alchemist and the Mysterious Journey~ +PCSG00929 Atelier Firis: The Alchemist of the Mysterious Journey +PCSG01116 Atelier Lydie & Suelle: The Alchemists and the Mysterious Paintings +PCSE00296 Atelier Meruru Plus: The Apprentice of Arland +PCSB00377 Atelier Meruru Plus: The Apprentice of Arland +PCSG00171 Atelier Meruru Plus: The Apprentice of Arland +PCSG01223 Atelier Nelke: The Alchemists and the New Earth +PCSE00466 Atelier Rorona Plus ~The Alchemist of Arland~ +PCSB00582 Atelier Rorona Plus ~The Alchemist of Arland~ +PCSG00245 Atelier Rorona Plus: The Alchemist of Arland +PCSE00998 Atelier Shallie Plus - Alchemists of the Dusk Sea +PCSG00821 Atelier Shallie Plus ~Alchemists of the Dusk Sea~ +PCSB01043 Atelier Shallie Plus ~Alchemists of the Dusk Sea~ +PCSE00892 Atelier Sophie ~The Alchemist of the Mysterious Book~ +PCSB00973 Atelier Sophie ~The Alchemist of the Mysterious Book~ +PCSG00694 Atelier Sophie: The Alchemist of the Mysterious Book +PCSH00220 Atelier Sophie: The Alchemist of the Mysterious Book +PCSH00231 Atelier Sophie: The Alchemist of the Mysterious Book +PCSE00231 Atelier Totori Plus: The Adventurer of Arland +PCSG00127 Atelier Totori Plus: The Adventurer of Arland +PCSB00291 Atelier Totori Plus: The Adventurer of Arland +PCSB00274 Atomic Ninjas +PCSE00274 Atomic Ninjas +PCSG00762 Attack on Titan +PCSE00812 Attack on Titan +PCSG01102 Attack on Titan 2 +PCSE00780 Attractio +PCSE01367 Awesome Pea +PCSE01474 Awesome Pea 2 +PCSB00779 Axiom Verge +PCSG00666 Ayakashi Gohan: Oomori! +PCSG01175 Azayaka na Irodori no Naka de, Kimi Rashiku +PCSE00861 Azkend 2: The World Beneath +PCSG00711 Baboon! +PCSE01343 Back in 1995 +PCSE00706 Back to Bed +PCSB00468 Backgammon Blitz +PCSB01092 Bad Apple Wars +PCSE01042 Bad Apple Wars +PCSB00669 BADLAND: Game of the Year Edition +PCSG00425 Bakumatsu Rock: Ultra Soul +PCSB01406 Balthazar's Dream +PCSG01123 Banbutsu Otome * Dungeons +PCSG00708 Bara ni Kakusareshi Verite +PCSG01006 Bard's Gold +PCSB00911 Baseball Riot +PCSE00790 Bastion +PCSB00353 Batman: Arkham Origins Blackgate +PCSE00444 Battalion Commander +PCSE01478 Battle Rockets +PCSG00244 Beast Tamer and Prince +PCSG00604 Beast Tamer and Prince ~Flower & Snow~ +PCSG00539 Believer! +PCSE00024 Ben 10™ Galactic Racing +PCSG01221 Beniiro Tenjou Ayakashi Kitan Futaai +PCSF00251 Bentley's Hackpack™ +PCSB01085 BERSERK and the Band of the Hawk +PCSE00377 Best of Arcade Games +PCSB00648 Best Of Arcade Games (FULL) +PCSE01495 Big Dipper +PCSE00091 Big Sky Infinity +PCSF00351 BigFest™ +PCSG00389 Binary Star +PCSB01105 Bit Dungeon Plus +PCSE00302 BIT.TRIP Presents... Runner2: Future Legend of Rhythm Alien +PCSG90096 Bitter Smile Trial +PCSG00242 Bitter smile. +PCSG00468 black butterfly psychedelia +PCSG00935 BLACK WOLVES SAGA -Weiβ und Schwarz- +PCSB00420 Blast 'Em Bunnies +PCSG00180 BLAZBLUE CHRONOPHANTASMA +PCSG00582 BLAZBLUE CHRONOPHANTASMA EXTEND +PCSB00042 BlazBlue Continuum Shift Extend +PCSG00003 BLAZBLUE CONTINUUM SHIFT EXTEND +PCSE00279 BlazBlue: ChronoPhantasma +PCSE00677 BlazBlue: Chronophantasma Extend +PCSE00018 BlazBlue: Continuum Shift EXTEND +PCSE01457 Blind Men +PCSB01250 Bloodstained: Curse of the Moon +PCSE00663 Bloxiq +PCSG00987 BLUE REFLECTION(幻に舞う少女の剣) +PCSE00864 Blue-Collar Astronaut +PCSE01019 Bodycheck +PCSG01205 Boku to Nurse no Kenshuu Nisshi +PCSG00797 Boku wa Mori Sekai no Kami Tonaru +PCSB00741 Bombing Busters +PCSE01368 Bonds of the Skies +PCSG00259 BOOLINK +PCSF00570 Borderlands 2 +PCSE00383 Borderlands 2 +PCSE00604 Boss +PCSE01349 Bouncy Bullets +PCSE00641 Breach & Clear +PCSE00225 BreakQuest: Extra Evolution +PCSB00265 BreakQuest: Extra Evolution +PCSE01429 Breeder Homegrown +PCSE00869 Bridge Constructor +PCSE00657 Broken Age +PCSE01517 Brotherhood United +PCSG00755 BROTHERS CONFLICT Precious Baby +PCSE01455 Bucket Knight +PCSG00361 Bullet Girls +PCSG00568 Bullet Girls 2 +PCSH10099 Bullet Girls Phantasia +PCSB01110 Bunny Must Die! Chelsea and the 7 devils +PCSG90261 Bunny Must Die! Chelsea and the 7devils. Trial version +PCSH10053 BURIED STARS +PCSE01135 Burly Men At Sea +PCSE00117 Burn the Rope +PCSG01197 Cafe Cuillere +PCSB00213 Call of Duty: Black Ops: Declassified +PCSG00135 Call of Duty® Black Ops: Declassified +PCSE00097 Call of Duty® Black Ops: Declassified +PCSB00232 Call of Duty® Black Ops: Declassified +PCSG00450 Captain Earth: Mind Labyrinth +PCSE00946 Castle Invasion: Throne Out +PCSB00111 CastleStorm +PCSG01179 Catherine: Full Body +PCSG90323 Catherine: Full Body Trial Verison +PCSH00099 CatsBlock Vestival +PCSB00573 Cel Damage HD +PCSE00422 Cel Damage HD +PCSG00409 Chain Chronicle V +PCSG00497 Chaos Rings I +PCSG00498 Chaos Rings II +PCSG00500 Chaos Rings III +PCSG00457 Chaos Rings III Prequel Trilogy +PCSG00499 Chaos Rings Ω +PCSE01022 Chaos;Child +PCSG00555 Chaos;Child +PCSB01075 CHAOS;CHILD +PCSG90169 Chaos;Child Demo +PCSG00995 Chaos;Child: Love Chuchu!! +PCSG00411 Chaos;Head Dual +PCSG00435 Chaos;Head Love Chu*Chu! +PCSG00434 Chaos;Head Noah +PCSG01150 Charade Maniacs +PCSE01031 Chasm +PCSB01233 Chicken Range +PCSB00598 Child of Light +PCSE00480 Child of Light +PCSG00850 Chou Ezaru wa Akai Hana: Koi wa Tsuki ni Shirube Kareru +PCSG00644 Chou Jigen Taisen Neptune VS Sega Hard Girls: Yume no Gattai Special +PCSG00234 Chou Megami Shinkou Noire: Gekishin Black Heart +PCSG00274 Chou no Doku Hana no Kusari Taishou Tsuyakoi Ibun +PCSG01066 Chouchou Jiken Rhapsodic +PCSE00044 Chronovolt +PCSB00102 Chronovolt +PCSE01281 Chronus Arc +PCSG00540 ChuSingura46+1 -忠臣蔵46+1- V +PCSG00454 Ciel Nosurge: Ushinawareta Hoshi e Sasagu Uta +PCSG00705 Citizens of Earth +PCSB00686 Citizens of Earth Demo +PCSE00562 Citizens of Earth Demo +PCSG00729 ClaDun Returns: This is Sengoku! +PCSE00999 ClaDun Returns: This is Sengoku! +PCSE01017 Cladun Returns: This is Sengoku! Demo +PCSB01067 Cladun Returns: This is Sengoku! Demo +PCSG90212 Cladun Returns: This is Sengoku! Trial Version +PCSG00415 CLANNAD +PCSA00038 Cliff Diving +PCSG00469 Clock Zero ~Shuuen no Ichibyou~ ExTime +PCSG00716 Clover Day's ~Making for Happiness.~ +PCSB00303 Coconut Dodge Revitalised +PCSE00267 Coconut Dodge Revitalised +PCSB01099 Code: Realize ~Future Blessings~ +PCSE00763 Code: Realize ~Guardian of Rebirth~ +PCSG01110 Code: Realize ~Silver Miracle~ +PCSG00805 Code: Realize ~The Future of Blessings~ +PCSE01278 Code:Realize ~Wintertide Miracles~ +PCSE01011 Collar x Malice +PCSB01061 Collar×Malice +PCSB00768 Color Guardians +PCSE00612 Color Guardians +PCSE01423 Color Slayer +PCSE00123 Colors! +PCSE00376 CONCEPTION II: Children of the Seven Stars +PCSB00547 Conception II: Children of the Seven Stars Demo +PCSE00425 Conception II: Children of the Seven Stars Demo +PCSG90087 Conception II: Children of the Seven Stars Demo +PCSG90092 Conception II: Children of the Seven Stars Demo +PCSE01406 Conga Master Go +PCSB01445 Contraptions +PCSB00822 Corpse Party BLOOD DRIVE +PCSE00708 Corpse Party BLOOD DRIVE +PCSG00298 Corpse Party: Blood Drive +PCSB00840 Corridor Z +PCSE00854 Corridor Z +PCSE01232 CosmicStarHeroine +PCSB00734 Cosmophony +PCSA00116 Counterspy +PCSG01246 Coven and Labyrinth of Galleria +PCSE00222 CRACKLE +PCSG00941 Crank In +PCSG90290 Crank In Trial Version +PCSE00291 Crazy Market +PCSE00916 Criminal Girls 2 Party Favors +PCSB00984 Criminal Girls 2 Party Favors +PCSG00681 Criminal Girls 2: Party Favors +PCSE00516 Criminal Girls: Invite Only +PCSB00636 Criminal Girls: Invite Only +PCSE00453 Crimsonland +PCSG00537 Croixleur Sigma +PCSE00689 Croixleur Sigma +PCSG00597 Cross Ange: Rondo of Angels and Dragons tr. +PCSG00365 CROSS†CHANNEL ~For all people~ +PCSB01331 Crossovers by POWGI +PCSH10175 Crossovers by POWGI +PCSE01377 Crossovers by POWGI +PCSE00806 Crypt of the NecroDancer +PCSE01464 Crypto by POWGI +PCSB01432 Crypto by POWGI +PCSH10240 Crypto by POWGI +PCSG00169 Cure Mate Club +PCSE01152 Cursed Castilla (Maldita Castilla EX) +PCSB01160 Cursed Castilla (Maldita Castilla EX) +PCSB00853 Curses 'N Chaos +PCSG01122 D.S.-Dal Segno- +PCSE01348 Daggerhood +PCSG00264 Dai-3-Ji Super Robot Taisen Z Jigoku-hen +PCSG00494 Dai-3-Ji Super Robot Taisen Z Tengoku-hen +PCSG00372 Daisenryaku Exceed II +PCSG00779 Daisenryaku Perfect: Senjou no Hasha +PCSG00504 Daisenryaku: Dai Toua Kouboushi 3 +PCSG00842 Damascus Gear Saikyou Exodus +PCSE00518 Damascus Gear: Operation Tokyo +PCSG00292 Damascus Gear: Operation Tokyo +PCSG90109 Damascus Gear: Operation Tokyo +PCSG00077 Danball Senki W Release +PCSG00807 Dance with Devils +PCSG01152 Dance with Devils My Carol +PCSG00202 Danganronpa 1&2 Reload +PCSE00399 Danganronpa 2: Goodbye Despair +PCSB00514 Danganronpa 2: Goodbye Despair +PCSE00692 Danganronpa Another Episode: Ultra Despair Girls +PCSB00788 Danganronpa Another Episode: Ultra Despair Girls +PCSG00772 Danganronpa Another Episode: Ultra Despair Girls +PCSE01100 Danganronpa V3: Killing Harmony +PCSE01105 Danganronpa V3: Killing Harmony Demo +PCSH10052 Danganronpa V3: Killing Harmony Demo version +PCSB01130 Danganronpa V3: Killing Harmony Demo version +PCSE00261 Danganronpa: Trigger Happy Havoc +PCSB00346 Danganronpa: Trigger Happy Havoc +PCSG01002 Danjon ni Deai o Motomeru no wa Machigatteiru Darou ka? Infinite Combate +PCSG01017 Daredemo Shodan ni Nareru Igo Kyoushitsu +PCSE00792 DARIUSBURST Chronicle Saviours +PCSE00919 Darkest Dungeon +PCSG00599 Date-A-Live Twin Edition: Rio Reincarnation +PCSB00540 Day D Tower Rush +PCSB00747 Day of the Tentacle Remastered +PCSE01181 Dead Ahead: Zombie Warfare +PCSA00151 Dead Nation™ +PCSB00296 DEAD OR ALIVE 5 PLUS +PCSG00167 DEAD OR ALIVE 5 PLUS +PCSG00771 Dead Or Alive Xtreme 3 Venus +PCSH00250 DEAD OR ALIVE Xtreme 3 Venus +PCSH00281 DEAD OR ALIVE Xtreme 3 Venus Free-to-Play Version +PCSE00578 Deadman's Cross +PCSE01279 Death Mark +PCSE00248 Deathmatch Village +PCSE00401 Deception IV: Blood Ties +PCSB00499 Deception IV: Blood Ties +PCSE00743 Deception IV: The Nightmare Princess +PCSB00829 Deception IV: The Nightmare Princess +PCSG00685 DEEMO ~The Last Recital~ +PCSE01041 DEEMO The Last Recital +PCSE01219 Deep Ones +PCSB01359 Deep Space Rush +PCSB01223 Defender's Quest: Valley of the Forgotten DX +PCSE00889 Delta Strike : First Assault +PCSE01005 Demetrios - The BIG Cynical Adventure +PCSE00358 Demon Gaze +PCSG00043 DEMON GAZE +PCSG00849 DEMON GAZE 2 +PCSB01150 DEMON GAZE 2 +PCSB01437 Demon's Tier+ +PCSE00639 Dengeki Bunko Fighting Climax +PCSG00341 Dengeki Bunko: Fighting Climax +PCSB00763 Dengeki Bunko: Fighting Climax +PCSG00758 Dengeki Bunko: Fighting Climax Ignition +PCSE00542 Desert Ashes +PCSG00959 DESIRE remaster ver. +PCSF00352 Destiny of Spirits +PCSA00106 Destiny of Spirits™ +PCSE01249 Devious Dungeon +PCSB01342 Devious Dungeon 2 +PCSB00953 Dex +PCSG00272 Diabolik Lovers Limited V Edition +PCSG00530 Diabolik Lovers: Dark Fate +PCSG00910 Diabolik Lovers: Lost Eden +PCSG00826 Diabolik Lovers: Lunatic Parade +PCSG00476 Diabolik Lovers: More, Blood Limited V Edition +PCSG00472 Diabolik Lovers: Vandead Carnival +PCSB00389 Die! Die! Die! +PCSE00755 Digimon Story Cyber Sleuth +PCSG00516 Digimon Story: Cyber Sleuth +PCSH00261 Digimon World: Next Order +PCSG00792 Digimon World: Next Order +PCSE00820 Dino Dini's Kick Off +PCSB00895 Dino Dini's Kick Off +PCSE00022 Disgaea 3: Absence of Detention +PCSB00098 Disgaea 3: Absence of Detention +PCSG00005 Disgaea 3:Return(魔界戦記ディスガイア3 Return) +PCSE00360 Disgaea 4: A Promise Revisited +PCSF00309 Disney Epic Mickey : Disney Epic Mickey 2: The Power of Two +PCSF00308 Disney Epic Mickey 2: The Power of Two +PCSA00110 Disney's Epic Mickey 2: The Power of Two +PCSB01165 DISTRAINT: Deluxe Edition +PCSB00373 Divekick +PCSE00208 DJMax Technika Tune +PCSG90047 DJMax Technika Tune Demo +PCSH00025 DJMax Technika Tune Demo +PCSC80021 DMM.com +PCSE00103 Doctor Who: The Eternity Clock +PCSG00775 Dogimegi Inryoku-Chan: Love & Peace +PCSG90220 Dogimegi Inryoku-Chan: Love & Peace Trial Version +PCSA00117 Doki-Doki Universe™ +PCSE00124 Dokuro +PCSB00215 Dokuro +PCSB00639 Don't Die, Mr Robot +PCSE00450 Don't Starve: Giant Edition +PCSE00327 Doodle Devil +PCSE00133 Doodle God +PCSB00556 Doodle Kingdom +PCSG01100 Doukoku Soshite... Remastered +PCSB00952 Downwell +PCSE00873 Downwell +PCSE00305 Dragon Ball Z: Battle of Z +PCSB00424 Dragon Ball Z: Battle of Z Demo +PCSG90095 Dragon Ball Z: Battle of Z Demo +PCSE00330 Dragon Ball Z: Battle of Z Demo +PCSE00217 Dragon Fantasy Book 1 +PCSE00299 Dragon Fantasy Book 2 +PCSE00952 Dragon Fantasy: Black Tome of Ice +PCSE01086 Dragon Fantasy: Volumes of Westeria +PCSE00447 Dragon Fin Soup +PCSB00621 Dragon Fin Soup +PCSG00697 Dragon Quest Builders +PCSE00912 DRAGON QUEST BUILDERS +PCSE00934 Dragon Quest Builders Demo +PCSB00999 Dragon Quest Builders Demo +PCSG90213 Dragon Quest Builders Demo +PCSH00270 Dragon Quest Builders Demo +PCSH00298 Dragon Quest Heroes II +PCSG90245 Dragon Quest Heroes II Demo +PCSE01190 Dragon Sinker +PCSE00019 Dragon's Crown +PCSG00187 Dragon's Crown +PCSB00408 Dragon's Crown +PCSH00050 Dragon's Crown +PCSG00212 Dragon's Dogma Quest +PCSE01360 Dragonfly Chronicles +PCSE01193 Dragooned +PCSG00420 DRAMAtical Murder re:code +PCSE00224 Draw Slasher +PCSG00026 DREAM C CLUB ZERO PORTABLE +PCSE01365 Dreamwalker +PCSE00841 Dreii +PCSB01097 Drive Girls +PCSE01099 Drive Girls +PCSE01363 Drowning +PCSB01404 Duck Souls+ +PCSB00437 Duke Nukem 3D: Megaton Edition +PCSE00339 Duke Nukem 3D: Megaton Edition +PCSB01474 Dull Grey +PCSE00008 Dungeon Hunter: Alliance +PCSE00944 Dungeon Punks +PCSE00693 Dungeon Travelers 2 +PCSG00407 Dungeon Travelers 2 : The Royal Library & the Monster Seal +PCSE00718 Dungeon Travelers 2 Demo +PCSG90141 Dungeon Travelers 2 Demo +PCSG00841 Dungeon Travelers 2-2 +PCSG90278 Dungeon Travelers 2-2 Trial Version +PCSB00824 Dungeon Travelers 2: The Royal Library Demo +PCSG00482 Durarara!! Relay +PCSE00332 Dustforce +PCSB01051 DYING: Reborn +PCSE00984 Dying:Reborn +PCSG00860 DYNAMIC CHORD feat.[reve parfait] V edition +PCSG00915 DYNAMIC CHORD feat.apple-polisher V edition +PCSG00862 DYNAMIC CHORD feat.KYOHSO V edition +PCSG00861 DYNAMIC CHORD feat.Liar-S V edition +PCSG90136 Dynasty Warriors 8 Empires Edit Mode Trial Version +PCSE00405 Dynasty Warriors 8: Xtreme Legends Complete Edition +PCSH00058 Dynasty Warriors Gundam Reborn +PCSE00014 Dynasty Warriors Next +PCSG00002 Dynasty Warriors Next +PCSB00108 Dynasty Warriors Next Demo Version +PCSE00069 Dynasty Warriors Next Demo Version +PCSG90006 Dynasty Warriors Next Trial Version +PCSG90018 Dynasty Warriors Next Trial Version +PCSH00004 Dynasty Warriors Next Trial Version +PCSE00995 DYNASTY WARRIORS: Godseekers +PCSH10007 Dynasty Warriors: Godseekers Trial Version +PCSG90243 Dynasty Warriors: Godseekers Trial Version +PCSB00084 EA SPORTS FIFA Football Demo +PCSB00082 EA SPORTS FIFA Football Demo +PCSB00086 EA SPORTS FIFA Football Demo +PCSE00059 EA SPORTS FIFA Football Demo +PCSB00083 EA SPORTS FIFA Football Démo +PCSE00060 EA SPORTS FIFA Football Démo +PCSE00055 EA SPORTS FIFA Soccer Demo +PCSG00039 EA SPORTS™ FIFA Football +PCSG00432 Earth Defense Force 2: PORTABLE V2 +PCSB00884 Earth Defense Force 2: Invaders from Planet Space +PCSE00710 Earth Defense Force 2: Invaders from Planet Space +PCSE00209 Earth Defense Force 2017 Portable +PCSG00291 EbiKore+ Amagami (エビコレ+ アマガミ) +PCSA00087 Ecolibrium™ +PCSG00753 Eikoku Tantei Mysteria: The Crown +PCSG01026 Eiyuu Densetsu: Akatsuki no Kiseki +PCSG00042 Eiyuu Densetsu: Zero no Kiseki Evolution +PCSG00316 Eiyuu*Senki +PCSH00246 Element4l +PCSB01325 Emerald Shores +PCSB01443 EMMA: Lost In Memories +PCSG00963 end sleep +PCSG90254 End Sleep Trail Version +PCSB00945 Energy Balance +PCSE01124 Energy Cycle +PCSE01192 Energy Invasion +PCSG01167 Enkan no Memoria: Kakera Tomoshi +PCSA00140 Entwined™ +PCSG01134 Ephemeral FANTASY ON DARK +PCSB01431 Epic Word Search Collection +PCSB01458 Epic Word Search Collection 2 +PCSF00023 Escape Plan +PCSA00004 Escape Plan™ +PCSE00095 escapeVektor +PCSE00395 Ethan: Meteor Hunter +PCSG00817 EVE burst error R +PCSG01249 EVE rebirth terror +PCSG01139 Evening Bell of Piofiore +PCSC00001 Everybody's Golf +PCSE00941 Exile's End +PCSG00679 Exist Archive +PCSB00995 Exist Archive +PCSE00883 Exist Archive: The Other Side of the Sky +PCSB01419 Explosive Jake +PCSG00196 Exstetra +PCSB00027 F1 2011 +PCSE00002 F1 2011 +PCSA00042 Facebook +PCSE01051 Factotum90 +PCSG00798 Fairune +PCSE00955 Fallen Legion +PCSH00157 Fantasy Hero ~unsigned legacy~ +PCSG00280 FANTASY HERO~unsigned legacy~ +PCSB00333 Farming Simulator +PCSE00285 Farming Simulator +PCSE00419 Farming Simulator 14 +PCSH00117 Farming Simulator 14 +PCSB00843 Farming Simulator 16 +PCSE01035 Farming Simulator 18 +PCSE01334 Fast Striker +PCSB00894 Fat City +PCSA00156 Fat Princess: Piece of Cake +PCSF00612 Fat Princess: Piece of Cake +PCSG00600 Fate/EXTELLA +PCSG01091 Fate/EXTELLA LINK +PCSE01254 Fate/EXTELLA LINK +PCSE00928 Fate/Extella: The Umbral Star +PCSG00386 Fate/hollow ataraxia +PCSG00122 Fate/Stay Night [Realta Nua] +PCSE01282 Fernz Gate +PCSE00404 Fez +PCSE00266 Fieldrunners 2 +PCSG00107 FIFA 13 WORLD CLASS SOCCER +PCSE00263 FIFA 14 +PCSG00201 FIFA 14 WORLD CLASS SOCCER +PCSG00404 FIFA 15 +PCSE00481 FIFA 15 +PCSE01431 Fifty Words by POWGI +PCSB01397 Fifty Words by POWGI +PCSH10211 Fifty Words by POWGI +PCSE01255 Fill-a-Pix: Phil's Epic Adventure +PCSB00395 FINAL FANTASY X HD Remaster +PCSG00219 FINAL FANTASY X HD Remaster +PCSB00394 Final Fantasy X-2 HD Remaster +PCSG00220 FINAL FANTASY X-2 HD Remaster +PCSE00504 Final Horizon +PCSA00037 Fireworks +PCSB00656 Flame Over +PCSE00566 Flame Over +PCSB00328 Floating Cloud God Saves the Pilgrims in HD! +PCSG01202 Floral flowlove +PCSA00114 Flower +PCSG00459 FLOWERS +PCSG00739 Flowers Le volume sur ete +PCSG01187 Flowers Le volume sur hiver +PCSB00382 Flyhunter Origins +PCSE00257 Flying Hamster HD +PCSE00039 Foosball 2012 +PCSB00160 Foosball 2012 +PCSE00797 Forma.8 +PCSE00321 Fort Defense +PCSB00472 Fort Defense North Menace +PCSG01131 Fortissimo +PCSH10065 Fortune Street: Dragon Quest & Final Fantasy 30th Anniversary +PCSB00522 Foul Play +PCSA00047 foursquare +PCSE01437 FoxyLand +PCSE01438 FoxyLand 2 +PCSE01380 Frane: Dragons' Odyssey +PCSA00147 Freedom Wars +PCSC00054 Freedom Wars +PCSD00087 FREEDOM WARS™ +PCSF00446 FREEDOM WARS™ +PCSG00519 Friend to Lover ~フレラバ~ +PCSA00050 FROBISHER SAYS!™ +PCSE00528 Frozen Synapse Prime +PCSE00229 Fruit Ninja +PCSB00273 Fruit Ninja +PCSG01260 Full Kiss +PCSB01053 Full Throttle Remastered +PCSE01261 FullBlast +PCSE00839 Funk of Titans +PCSB00421 Furmins +PCSE00111 Furmins +PCSG00227 Furuiro Meikyuu Rondo: La Roue de fortune +PCSG00922 Furuki Yoki Jidai no Boukentan +PCSB01333 Furwind +PCSG00569 Fushigi no Chronicle: Furikaerimasen Katsu Madewa +PCSG01085 Futagoza no Paradox +PCSE00495 Futuridium EP Deluxe +PCSG00493 Fuuraiki 3 +PCSG01065 Gakuen Club Himitsu no Nightclub +PCSG00654 Gakuen K -Wonderful School Days- V Edition +PCSH00249 Gakusen Toshi Asterisk Festa - Houka Kenran +PCSG00704 Gal Gunvolt +PCSE00881 Gal*Gun Double Peace +PCSG00699 Gal*Gun Double Peace +PCSB00956 Gal*Gun Double Peace +PCSG01029 Gal*Gun Double Peace Bilingual +PCSG01151 GALTIA V Edition +PCSE01440 Ganbare! Super Strikers +PCSE00958 GAROU: MARK OF THE WOLVES +PCSE00981 Geki Yaba Runner +PCSG00214 Gekijouban Madoka Magicka: The Battle Pentagram +PCSB00799 Gem Legends +PCSB00965 GemSmashers 3D +PCSG00373 Gendai Daisenryaku 2016 ~Chitsujo no Houkai·Haken Kokka Shittsui~ +PCSG00256 GENIMUS +PCSG00619 Genji Koi Emaki +PCSG00695 Genkai Tokki: Moero Crystal +PCSH00301 Genkai Tokki: Moero Crystal +PCSG00882 Genkai Tokki: Seven Pirates +PCSG01294 Gensou Rougoku no Kaleidoscope +PCSB00769 Geometry Wars 3: Dimensions +PCSB00610 Get Off My Lawn! +PCSE00421 Get Off My Lawn! +PCSG00921 Geten no Hana with Yume Akari - Aizouban +PCSG90098 Getsuei Gakuen -kou- +PCSG00991 Getsuei no Kusari: Kouran Moratorium +PCSG00794 Getsuei no Kusari: Sakuran Paranoia +PCSB01378 Ghoulboy +PCSE01340 Ghoulboy +PCSG00419 Ginsei Igo: Next Generation +PCSG01073 Gintama Rumble +PCSG00670 Girlfriend (Kari) - Kimi to Sugosu Natsuyasumi +PCSG00339 Girls und Panzer: Senshado, Kiwamemasu! +PCSG01277 Gnosia +PCSG00786 Gochuumon wa Usagi Desu ka?? +PCSG00240 GOD EATER 2 +PCSE00789 GOD EATER 2 RAGE BURST +PCSG00532 GOD EATER 2 RAGE BURST +PCSH00133 GOD EATER 2 RAGE BURST +PCSG00719 GOD EATER RESURRECTION +PCSH00199 GOD EATER RESURRECTION +PCSE00801 GOD EATER RESURRECTION +PCSF00438 God of War® Collection +PCSA00126 God of War® Collection +PCSG00831 God Wars: Future Past +PCSG00367 Goes! +PCSG00218 Golden Time Vivid Memories +PCSE00879 Grand Kingdom +PCSB01372 Grass Cutter +PCSE00487 Gravity Badgers +PCSB00525 Gravity Crash Ultra +PCSC00002 GRAVITY DAZE™ +PCSE01384 Gravity Duck +PCSB01338 Gravity Duck +PCSD00035 GRAVITY RUSH +PCSF00024 GRAVITY RUSH™ +PCSA00011 GRAVITY RUSH™ +PCSF00067 GRAVITY RUSH™ (DEMO) +PCSB00949 Green Game: Timeswapper +PCSE00547 Grim Fandango Remastered +PCSG00206 Grisaia no Kajitsu Le Fruit de la Grisaia +PCSG00620 Grisaia no kajitsu spinout +PCSG00421 Grisaia no Meikyuu Le Labyrinthe de la Grisaia +PCSG01149 Grisaia Phantom Trigger 01 & 02 +PCSG01218 Grisaia Phantom Trigger 03 & 04 +PCSE00033 Guacamelee! +PCSB00189 Guacamelee! +PCSB01416 Guard Duty +PCSG00131 GUILTY GEAR XX ΛCORE PLUS R +PCSG01013 Gun Gun Pixies +PCSG00126 Gundam Breaker +PCSG00412 Gundam Breaker 2 +PCSH00208 Gundam Breaker 3 +PCSH10042 Gundam Breaker 3 BREAK EDITION +PCSH10041 GUNDAM BREAKER 3 BREAK EDITION +PCSG00657 Gundam Conquest V +PCSE01283 GUNDEMONIUMS +PCSG01289 Gunka o Haita Neko +PCSE00340 Gunslugs +PCSB01365 Habroxia +PCSE01504 Habroxia 2 +PCSG00162 Haiyore! Nyaruko-San +PCSG00577 Hakuisei Aijou Izonshou +PCSG01275 Hakuisei Renai Shoukougun Re:Therapy +PCSE01001 Hakuoki Edo Blossoms +PCSG00217 Hakuouki Kyouka Roku +PCSG00605 Hakuouki Reimeiroku +PCSG00297 Hakuouki SSL: Sweet School Life +PCSG00930 Hakuouki Yugiroku The Great Banquet of the Members +PCSG00811 Hakuouki: Shinkai - Hana no Shou +PCSG00485 Hakuouki's Memoirs Omokagegehana +PCSE01258 Halloween Forever +PCSG00855 Hana Oboro ~Sengoku-den Ranki~ +PCSG01024 Hanasaki Work Spring! +PCSG00576 Hanayaka Nari, Wa ga Ichizoku: Gentou Nostalgie +PCSG00470 Hanayaka Nari, Wa ga Ichizoku: Modern Nostalgie +PCSG00451 Hanayamata: Yosakoi Live! +PCSE00681 Handball 16 +PCSG00992 Harukanaru Toki no Naka de 3 Ultimate +PCSG00542 Harukanaru Toki no Naka De 6 +PCSG00975 Harukanaru Toki no Naka de 6: Gentou Rondo +PCSG01157 Harukanaru Toki no Naka de Ultimate +PCSG01252 Haruoto Alice Gram: Snow Drop +PCSG00559 Harvest OverRay +PCSE00653 Hatoful Boyfriend +PCSE00776 Hatoful Boyfriend: Holiday Star +PCSG01229 Hatsujou Sprinkle +PCSE00867 Hatsune Miku Project DIVA X +PCSE00886 Hatsune Miku Project DIVA X Demo +PCSE00326 Hatsune Miku: Project DIVA f +PCSB00419 Hatsune Miku: Project DIVA f +PCSG00074 Hatsune Miku: Project DIVA f +PCSB00506 Hatsune Miku: Project DIVA f (DEMO) +PCSG00205 Hatsune Miku: Project DIVA F 2nd +PCSB00554 Hatsune Miku: Project DIVA F 2nd +PCSE00434 Hatsune Miku: Project DIVA F 2nd +PCSH00115 Hatsune Miku: Project DIVA F 2nd (DEMO) +PCSG00683 Hatsune Miku: Project Diva X +PCSB01007 Hatsune Miku: Project DIVA X +PCSH00239 Hatsune Miku: Project Diva X (DEMO) +PCSH00176 Hatsune Miku: Project DIVA X (初音未來 -Project DIVA- X) +PCSB01009 Hatsune Miku: Project DIVA X Demo +PCSG90214 Hatsune Miku: Project DIVA X Trial (DEMO) +PCSG00988 Hatsuru Kotonaki Mirai Yori +PCSG00997 Hatsuyuki Sakura +PCSA00134 HELLDIVERS™ +PCSE00666 Heroes of Loot +PCSE01256 Heroes Trials +PCSG00388 Hideboh: Tap Dance Hero +PCSG00406 High School DxD: New Fight +PCSG00517 Higurashi no Naku Koro ni Sui +PCSG00639 Himawari Pebble in the Sky +PCSH10186 Himno +PCSG00688 Himouto! Umaru-chan: Umaru Training Plan +PCSE00254 HISTORY: Legends of War: Patton +PCSB00922 Hitman GO: Definitive Edition +PCSE00846 Hitman GO: Definitive Edition +PCSG00506 Hitotsu Tobashi Ren’ai V +PCSB01340 Hoggy2 +PCSA00123 Hohokum +PCSE00533 Home - A Unique Horror Adventure +PCSB00687 Home - A Unique Horror Adventure +PCSG00926 Hoshi ori yume mirai +PCSA00009 Hot Shots Golf™: World Invitational +PCSG00200 Hotchkiss +PCSE00249 Hotline Miami +PCSB00318 Hotline Miami +PCSE00402 Hotline Miami 2: Wrong Number +PCSB00511 Hotline Miami 2: Wrong Number +PCSB00641 htoL#NiQ -The Firefly Diary- +PCSE00527 htoL#NiQ -The Firefly Diary- +PCSE00551 HTR+ Slot Car Simulation +PCSB00938 HTR+ Slot Car Simulation +PCSE00996 Hue +PCSB00246 Hungry Giraffe +PCSA00007 Hustle Kings +PCSG00518 Hyakka Ryouran Elixir: Record of Torenia Revival +PCSG00477 Hyakka Yakou +PCSE00568 Hyperdevotion Noire Goddess Black Heart +PCSE00400 Hyperdimension Neptunia PP +PCSB00515 Hyperdimension Neptunia PP +PCSG00226 Hyperdimension Neptunia Re;Birth 1 +PCSE00443 Hyperdimension Neptunia Re;Birth 1 +PCSB00626 Hyperdimension Neptunia Re;Birth2 +PCSE00661 Hyperdimension Neptunia Re;Birth3 V GENERATION +PCSG00486 Hyperdimension Neptunia Re;Birth3: V Century +PCSG00394 Hyperdimension Neptunia U: Action Unleashed +PCSB00710 HYPERDIMENSION NEPTUNIA U: Action Unleashed +PCSE00588 HYPERDIMENSION NEPTUNIA U: Action Unleashed +PCSG90077 Hyperdimension Neptunia: Producing Perfection Demo +PCSE01188 I Am The Hero +PCSG01257 I Am The Hero +PCSE01358 I and Me +PCSG00592 I DOLL U - +PCSG00337 I wanna say that I'm not your brother right now!! +PCSG00355 IA/VT -COLORFUL- +PCSE01245 Ice Cream Surfer +PCSE01177 Iconoclasts +PCSG00965 id: RebirthSession +PCSG00865 Idol Death Game TV +PCSG01094 IDOLiSH7 Twelve Fantasia! +PCSG00357 If my Heart Had Wings +PCSG01063 Ikemen Sengoku: Toki o Kakeru Koi - Aratanaru Deai +PCSG00756 Ikenie to Yuki no Setsuna +PCSE01418 Illusion of L'Phalcia +PCSA00113 Imaginstruments +PCSF00210 Imaginstruments +PCSG00602 Incognito, Falling in Love ― Snow Moon Flower Love Emaki ― +PCSE00041 INDOOR SPORTS WORLD +PCSH00278 Infinita Strada Hana +PCSG00270 Infinite Stratos 2: Ignition Hearts +PCSG00584 Infinite Stratos 2: Love and Purge +PCSB00356 Injustice: Gods Among Us Ultimate Edition +PCSE00271 Injustice: Gods Among Us Ultimate Edition +PCSE01237 InkSplosion +PCSB00157 International Snooker 2012 +PCSA00137 Invizimals: The Alliance +PCSF00415 Invizimals™ Hidden Challenges +PCSF00510 Invizimals™: The Resistance +PCSA00552 Invizimals™: The Resistance +PCSE00876 iO +PCSB01029 Iron Sea Defenders +PCSE01369 Iron Snout +PCSG01186 IS IT WRONG TO TRY TO PICK UP GIRLS IN A DUNGEON? SHOOTING +PCSG01000 ISLAND +PCSB01132 It's Spring Again +PCSG00932 Itadaki Street: Dragon Quest & Final Fantasy 30th Anniversary +PCSG01083 Iwaihime Matsuri +PCSG01297 IxSHE Tell +PCSG00300 J-Stars Victory VS +PCSE00595 J-Stars Victory Vs+ +PCSH00136 J-STARS Victory VS+ +PCSB00713 J-STARS Victory VS+ +PCSE01287 Jack N' Jill DX +PCSB01268 Jack N' Jill DX +PCSF00250 Jak 3 +PCSA00080 Jak and Daxter Collection +PCSF00248 Jak and Daxter: The Precursor Legacy +PCSF00249 Jak II +PCSB00236 JAZZ Trump's Journey +PCSE00393 Jet Car Stunts +PCSB00136 Jet Set Radio +PCSE00088 Jet Set Radio +PCSE00213 Jetpack Joyride +PCSB00244 Jetpack Joyride +PCSB00664 Jetpack Joyride Deluxe +PCSE00537 Jetpack Joyride Deluxe +PCSG00064 Jikkyou Powerful Pro Yakyuu 2012 +PCSG00134 Jikkyou Powerful Pro Yakyuu 2012 Kettei Ban +PCSG00207 Jikkyou Powerful Pro Yakyuu 2013 +PCSG00416 Jikkyou Powerful Pro Yakyuu 2014 +PCSG00748 Jikkyou Powerful Pro Yakyuu 2016 +PCSG01164 Jikkyou Powerful Pro Yakyuu 2018 +PCSG01045 Jikkyou Powerful Pro Yakyuu Championship 2017 +PCSG01219 Jikkyou Powerful Pro Yakyuu Championship 2018 +PCSG00596 Jinro Game +PCSE00478 Joe Danger +PCSE00477 Joe Danger 2: The Movie +PCSG00390 JUDAS CODE(ジューダス コード) +PCSE00594 Jungle Rumble: Freedom, Happiness, and Bananas +PCSB01400 Just a Phrase by POWGI +PCSH10213 Just a Phrase by POWGI +PCSE01436 Just a Phrase by POWGI +PCSB01362 Just Ignore Them +PCSG00529 Justy x Nasty: Maou Hajime Mashita +PCSG00635 Jyuzaengi: Engetsu Sangokuden 1+2 +PCSG00381 Kadenz fermata Akkord:fortissimo +PCSG00501 Kaeru Batake de Tsukamaete +PCSG00304 Kagero: Darkside Princess +PCSG00360 Kaihou Shoujo SIN +PCSG00172 Kajiri Kamui Kagura: Akebono no Hikari +PCSG01007 Kamaitachi no Yoru: Rinne Saisei +PCSG00675 Kamen Rider: Battride War Genesis +PCSG01106 Kamidanomi Shisugite Ore no Mirai ga Yabai. +PCSG00595 Kamigami no Asobi InFinite +PCSG00684 KanColle Kai +PCSG01268 Kannagi no Mori Satsukiame Tsuzuri +PCSG01182 Kanojo * Step +PCSG01253 Karigurashi Ren'ai +PCSG01044 Karumaruka Circle +PCSG01332 Kawaii Deathu Desu +PCSG00553 Ken Ga Kimi For V +PCSG00960 Ken ga Kimi: Momoyo Tsuzuri +PCSG00829 Kenka Bancho Otome +PCSG01042 Kenka Bancho Otome : Kanzenmuketsu no My Honey +PCSG01241 Kenka Bancho Otome 2nd Rumble!! +PCSE00485 Kick and Fennick +PCSE00113 KickBeat +PCSB01354 Kid Tripp +PCSG00040 Kidou Senshi Gundam Seed: Battle Destiny +PCSE00473 Kilka Card Gods +PCSB01477 Killer Dolls United +PCSG01132 Killers and Strawberries +PCSD00071 Killzone Mercenary +PCSC00045 Killzone®: Mercenary +PCSF00403 Killzone™ Mercenary +PCSA00107 Killzone™ Mercenary +PCSF00243 Killzone™ Mercenary +PCSG01087 Kimi no Hitomi ni Hit Me +PCSG00913 Kimi o Aogi Otome wa Hime ni +PCSG01318 Kin-iro Loveriche +PCSG01124 Kin'iro no Corda 2 ff +PCSG01212 Kin'iro no Corda 3: AnotherSky feat. Jinnan / Shiseikan / Amane Gakuen +PCSG01211 Kin'iro no Corda 3: Full Voice Special +PCSG00774 Kin'iro no Corda 4 +PCSH00275 Kin'iro no Corda 4 +PCSG01245 Kin'iro no Corda: Octave +PCSE00315 King Oddball +PCSG00742 Kiss Ato +PCSG00413 KissBell +PCSG00478 KLAP!! ~Kind Love And Punish~ +PCSG00970 KLAP!! ~Kind Love And Punish~ Fun Party +PCSB01409 Knightin'+ +PCSB00929 Knock-knock +PCSB00169 Knytt Underground +PCSE00092 Knytt Underground +PCSE01040 KOI +PCSG01299 Koisuru Otome to Shugo no Tate: Bara no Seibo +PCSG00761 Kono Aozora ni Yakusoku o +PCSG00345 Kono Uta ga Owattara: When This Song is Over +PCSG00996 Kono Yo no Hate de Koi wo Utau Shoujo YU-NO Original +PCSG01093 Konosuba - Attack of the Destroyer +PCSG01265 KonoSuba: Give Education to this Useless Goddess! +PCSG01028 KonoSuba: Judgment on this Greedy Game! +PCSG01258 Konosuba: Labyrinth of Hope and the Gathering Adventurers +PCSG01213 Koshotengai no Hashihime Noma +PCSG00273 Kud Wafter: Converted Edition +PCSG00894 Kujiragami no Tearstilla +PCSE00256 Kung Fu Rabbit +PCSE01036 Kung Fury: Street Rage +PCSG01158 Kurenai no Homura Sanada Ninpou Chou +PCSG00609 Kurogane Kaikijong +PCSG00641 Kurogane Kaikitan: Ichigoichie +PCSG90129 Kurogane Kaikitan: Senya Ichiya +PCSG01288 L'Phalcia no Genei +PCSE00567 LA-MULANA EX +PCSE00985 Lara Croft GO +PCSE00856 Last Wings +PCSE01085 League of Evil +PCSH10082 Legend of Heroes: Trails in the Sky 3rd Evolution +PCSH00178 Legend of Heroes: Trails in the Sky FC Evolution +PCSE01426 Legend of the Skyfish +PCSB01392 Legend of the Skyfish +PCSE00061 LEGO Batman 2: DC Super Heroes +PCSE00442 Lego Batman 3 Beyond Gotham +PCSE00057 Lego Harry Potter Years 5-7 +PCSE00587 Lego Jurassic World +PCSE00237 Lego Legends of Chima Laval’s Journey +PCSB00764 Lego Marvel's Avengers +PCSE00384 Lego Ninjago Nindroids +PCSE00534 Lego Ninjago Shadow Of Ronin +PCSE00791 Lego Star Wars The Force Awakens +PCSE00390 Lego The Hobbit +PCSE00067 Lego The Lord Of The Rings +PCSB00315 LEGO® MARVEL Super Heroes: Universe in Peril +PCSE00670 LEGO® MARVEL's Avengers +PCSA00138 Lemmings™ Touch +PCSG00405 Lend fleur +PCSE00216 Let's Fish ! Hooked On +PCSB00230 Let's Fish! Hooked On +PCSG00028 Let's Try Bass Fishing FISH ON NEXT +PCSB00879 Letter Quest Remastered +PCSB00845 LEVEL 22 +PCSE01010 Lichtspeer +PCSB01154 Licky The Lucky Lizard Lives Again +PCSB00336 Limbo +PCSE00268 Limbo +PCSE01285 Link-a-Pix Deluxe +PCSG01319 Link-a-Pix Deluxe +PCSE01231 Little Adventure on the Prairie +PCSG00007 Little Busters! Converted Edition (リトルバスターズ! Converted Edition) +PCSF00017 Little Deviants +PCSA00010 Little Deviants™ +PCSB01215 Little Red Lie +PCSE01218 Little Red Lie +PCSF00021 LittleBigPlanet™ PlayStation®Vita +PCSA00017 LittleBigPlanet™ PlayStation®Vita +PCSA00549 LittleBigPlanet™ PlayStation®Vita Marvel Super Hero Edition +PCSB00494 Llamasoft TxK +PCSE01187 London Detective Mysteria +PCSB00361 Lone Survivor +PCSE00301 Lone Survivor +PCSF00441 Looney Tunes™ Galactic Sports +PCSG00008 Lord of Apocalypse +PCSG90001 Lord Of Apocalypse ロードの誘い +PCSE00673 Lost Dimension +PCSG01314 LOVE CLEAR +PCSG00422 Love Live! School idol paradise Vol.1 Printemps +PCSG00423 Love Live! School idol paradise Vol.2 BiBi +PCSG00424 Love Live! School idol paradise Vol.3 lily white +PCSG01004 Love of Ren'ai Koutei of LOVE! +PCSG00667 LOVE:QUIZ - Koisuru Shoujo no Final Answer +PCSG00336 LOVELY QUEST Unlimited +PCSG00556 LOVELY×CATION 1&2 +PCSH10290 Luckslinger +PCSG01165 Lucky Dog 1 +PCSE00247 LUFTRAUSERS +PCSE00009 Lumines Electronic Symphony +PCSG00444 Luminous Arc Infinity +PCSE00857 Lumo +PCSG00475 M3: Sono Kuroki Hagane /// Mission Memento Mori +PCSE00212 Machinarium +PCSG00947 Macross Delta: Scramble +PCSE00084 Madden NFL 13 +PCSG00221 Magical Beat +PCSE00464 Magical Beat (DEMO) +PCSE00749 Mahjong Carnival +PCSG00029 Mahjong Fight Club: Shinsei Zenkoku Taisen Han +PCSG00368 Mahou Shoujo Taisen Zanbatsu +PCSG00456 Mahouka Koukou no Rettousei: Out of Order +PCSG00856 Maison de Maou +PCSG00852 Maji-Kyun! Renaissance +PCSG00652 Majin Shoujo - Chronicle 2D ACT (Japan) (En,Ja,Zh) (PSN) +PCSG00770 Majo Koi Nikki: Dragon x Caravan +PCSG01284 Making*Lovers +PCSG00130 MALICIOUS REBIRTH +PCSA00127 MALICIOUS™ REBIRTH +PCSE00736 Maliya +PCSG00340 MANGA-KA-KERU +PCSG00448 MARGINAL#4 IDOL OF SUPERNOVA +PCSG01008 MARGINAL#4 ROAD TO GALAXY +PCSG00662 Maru Goukaku! Takken Shiken - Heisei 27 Nendohan +PCSG00898 Mary Skelter: Nightmares +PCSB01059 Mary Skelter: Nightmares +PCSE01158 Mecho Tales +PCSE01264 Mecho Wars: Desert Ashes +PCSH10177 Mecho Wars: Desert Ashes +PCSB00921 MegaTagmension Blanc Neptune VS Zombies +PCSG00578 MegaTagmension Blanc + Neptune VS Zombies +PCSH00236 MegaTagmension Blanc + Neptune VS Zombies (Asia) +PCSE00832 MegaTagmension Blanc Neptune VS Zombies +PCSG00398 Meikyuu Cross Blood: Infinity Ultimate +PCSG00258 MeiQ +PCSE00918 MeiQ: Labyrinth of Death +PCSB00990 MeiQ: Labyrinth of Death +PCSG00606 MeiQ: Labyrinth of Death +PCSE01428 Mekabolt +PCSB01348 MEKORAMA +PCSG01285 MELLKISS +PCSG00733 Melty Moment +PCSG00176 Memories Off 6 Complete +PCSH10133 Memories Off Innocent Fille +PCSG01264 Memories Off Innocent Fille for Dearest +PCSB00313 Men's Room Mayhem +PCSE00252 Men's Room Mayhem +PCSE00956 Mercenary Kings +PCSH10097 METAGAL +PCSE01080 METAGAL +PCSE00078 Metal Gear Solid 2: Sons of Liberty HD Edition +PCSG00081 Metal Gear Solid 3 HD Edition +PCSE00079 Metal Gear Solid 3: Snake Eater HD Edition +PCSB00118 Metal Gear Solid HD Collection +PCSG00972 METAL MAX Xeno +PCSE00665 METAL SLUG 3 +PCSB00772 METAL SLUG 3 +PCSE00406 Metrico +PCSH10242 Metropolis: Lux Obscura +PCSE00010 Michael Jackson The Experience HD +PCSG00198 Midnight Deluxe +PCSE01194 Midnight Deluxe +PCSG01193 Mikagami Sumika no Seifuku Katsudou +PCSC00052 Miku Miku Hockey +PCSC00081 Miku Miku Hockey 2.0 +PCSB01393 Miles & Kilo +PCSE01425 Miles & Kilo +PCSB01414 Milo's Quest +PCSE01501 Mind Maze +PCSG00184 MIND≒0 +PCSE00491 Minecraft: Playstation Vita Edition +PCSG00302 Minecraft: Playstation Vita Edition +PCSB00560 Minecraft: PlayStation Vita Edition +PCSG00581 Minna de Spelunker Z +PCSC00055 Minna to Issho +PCSB00544 Minutes™ +PCSG00610 Miracle Girls Festival +PCSH10169 Mixups by POWGI +PCSB01332 Mixups by POWGI +PCSE01378 Mixups by POWGI +PCSA00002 MLB 12 The Show +PCSA00065 MLB 13: The Show +PCSA00511 MLB15 THE SHOW +PCSB00983 Mobile Suit Gundam Extreme Versus Force +PCSG00579 Mobile Suit Gundam: Battle Fortress +PCSG00738 Mobile Suit Gundam: Extreme VS Force +PCSE00915 Mobile Suit Gundam: Extreme VS-Force +PCSE01414 Mochi Mochi Boy +PCSA00001 ModNation™ Racers: Road Trip +PCSF00002 ModNation™ Racers: Road Trip +PCSG00989 Moe Moe 2-Ji Daisenryaku 3 +PCSG00065 Moe Moe Daisensou Gendai Ban Plus Plus +PCSG00378 Monobeno -pure smile- +PCSB00473 Monster Monpiece +PCSG00148 Monster Monpiece +PCSF00651 MonsterBag - +PCSE00838 MOP: Operation Cleanup +PCSB00106 Mortal Kombat +PCSE00023 Mortal Kombat +PCSG00706 Moshi, Kono Sekai ni Kami-sama ga Iru to suru Naraba. +PCSB00498 MotoGP 14 +PCSB00316 MotoGP™13 +PCSC00014 MOTORSTORM® RC +PCSF00046 MotorStorm®RC - +PCSG00247 Motto Nee, Chanto Shouyo! +Plus +PCSG00854 Moujuu-tachi to Ohime-sama +PCSB00530 MouseCraft +PCSE01002 Mr.Pumpkin Adventure +PCSB00367 Ms. Germinator +PCSB00182 MUD - FIM Motocross World Championship™ +PCSB00685 Multiplayer.it +PCSE00240 Muramasa Rebirth +PCSB00404 Muramasa Rebirth +PCSA00153 Murasaki Baby +PCSF00435 Murasaki Baby™ +PCSC00043 Muryou-ban E-Channel NEW Paint Park +PCSE01479 Mushroom Heroes +PCSH10037 Musou Stars +PCSE01184 Musynx +PCSB00979 Mutant Mudds Super Challenge +PCSB01234 Muv-Luv +PCSE01259 Muv-Luv +PCSG00776 Muv-Luv +PCSG00777 Muv-Luv Alternative +PCSG90203 Muv-Luv Alternative Total Eclipse: Teito Moyu +PCSE00530 MXGP - The Official Motocross Videogame +PCSB01463 My Aunt is a Witch +PCSE01386 My Big Sister +PCSE00982 My Name Is Mayo +PCSE00459 My Singing Monsters +PCSB00958 Mystery Chronicle: One Way Heroics +PCSG01178 NadeRevo! Nadeshiko Revolution +PCSG00664 Nanairo Reincarnation +PCSG01185 Natsuiro Kokoro Log +PCSG00650 Natsumegu +PCSB00594 NAtURAL DOCtRINE +PCSE00460 NAtURAL DOCtRINE +PCSG00030 NAX Music Player +PCSB01321 Necrosphere +PCSE01413 Need a packet? +PCSE00089 Need For Speed™ Most Wanted +PCSG00106 Need For Speed™ Most Wanted +PCSB00183 Need For Speed™ Most Wanted +PCSG00410 Nekketsu Inou Bukatsu: Trigger Kiss +PCSG01068 Neo Angelique: Tenshi no Namida +PCSG00877 Neo ATLAS 1469 +PCSB00910 Neon Chrome +PCSE01398 Neon Junctions +PCSG00951 Nep-Nep Connect: Chaos Chanpuru +PCSG00656 Net High +PCSE00070 Netflix +PCSE01236 NeuroVoider +PCSE01137 NeverEnd +PCSE00847 Neverending Nightmares +PCSB00940 Neverending Nightmares +PCSG00903 New Game! -The Challenge Stage!- +PCSH10101 New Game! -The Challenge Stage!- Chinese Version +PCSB00109 New Little King's Story +PCSE00066 New Little King's Story +PCSG01204 NG +PCSG80001 niconico +PCSE00514 Nidhogg +PCSH00254 Night of Azure / Yoru no Nai Kuni (無夜國度) +PCSG00986 Night of Azure 2 / Yoru no Nai Kuni 2 +PCSE01149 Night Trap - 25th Anniversary Edition +PCSE00895 NightCry +PCSG00557 Nights of Azure / Yoru no Nai Kuni +PCSB00705 Nihilumbra +PCSE00620 Nihilumbra +PCSG00586 Nihilumbra +PCSG00082 Nikoli no Puzzle V: Akari +PCSG00095 Nikoli no Puzzle V: Hashi o Kakero +PCSG00067 Nikoli no Puzzle V: Heyawake +PCSG00098 Nikoli no Puzzle V: Hitori ni Shitekure +PCSG00060 Nikoli no Puzzle V: Kakuro +PCSG00083 Nikoli no Puzzle V: Masyu +PCSG00097 Nikoli no Puzzle V: Number Link +PCSG00068 Nikoli no Puzzle V: Nurikabe +PCSG00096 Nikoli no Puzzle V: Shikaku ni Kire +PCSG00061 Nikoli no Puzzle V: Slither Link +PCSG00094 Nikoli no Puzzle V: Yajilin +PCSG00044 Nikoli no Sudoku V: Shugyoku no 12 Puzzle +PCSG01014 Nil Admirari's Balance Kuroyuri Enyoutan +PCSG00766 Nil Admirari's Balance Teito Illusion Kitan +PCSE00021 Ninja Gaiden Sigma Plus +PCSB00097 NINJA GAIDEN Σ PLUS +PCSG00157 NINJA GAIDEN Σ2 PLUS +PCSB00294 NINJA GAIDEN Σ2 PLUS +PCSB00903 Ninja Senki DX +PCSG01099 Ninja Usagimaru: Two Tails of Adventure +PCSG01111 Ninki Seiyuu no Tsukurikata +PCSG00397 Nisekoi: Yomeiri! +PCSA00150 No Heroes Allowed: No Puzzles Either!™ +PCSG00803 Nobunaga no Yabou 201X +PCSG00374 Nobunaga no Yabou: Souzou +PCSG00607 Nobunaga no Yabou: Souzou with Power-Up Kit +PCSG00741 Nobunaga no Yabou: Tenshouki with Power-Up Kit HD Version +PCSH00291 Nobunaga's Ambition: Souzou Sengoku Risshiden +PCSH00171 Nobunaga's Ambition: Sphere of Influence with Power-Up Kit +PCSG01107 Nora to Oujo to Noraneko Heart +PCSE01496 Norman's Great Illusion +PCSG00833 NORN9 ACT TUNE +PCSG00429 NORN9 LAST ERA +PCSB00847 NORN9 VAR COMMONS +PCSE00762 NORN9 VAR COMMONS +PCSE01173 NORTH +PCSE00686 Nova-111 +PCSE00828 Nuclear Throne +PCSE00220 Nun Attack +PCSE01004 Nurse Love Addiction +PCSB01054 Nurse Love Addiction +PCSE01318 Nurse Love Syndrome +PCSG00150 Oboro Muramasa +PCSG01021 Occultic;Nine +PCSE01097 Oceanhorn +PCSB00825 Octodad: Dadliest Catch +PCSE00623 Octodad: Dadliest Catch +PCSE00369 Oddworld: Munch's Oddysee HD +PCSE00899 Odin Sphere Leifthrasir +PCSH00218 Odin Sphere Leifthrasir +PCSB00986 Odin Sphere Leifthrasir +PCSE00341 OlliOlli +PCSE00479 OlliOlli2: Welcome to Olliwood +PCSG00550 Omega Labyrinth +PCSG00939 Omega Labyrinth Z +PCSH10044 Omega Labyrinth Z +PCSE00275 OMG HD Zombies! +PCSB01213 One Eyed Kutkh +PCSH10094 One More Dungeon +PCSG00358 ONE PIECE UNLIMITED WORLD R +PCSB00557 ONE PIECE Unlimited World Red +PCSH00034 ONE PIECE 海賊無雙2 +PCSG00743 One Piece: Burning Blood +PCSE00808 One Piece: Burning Blood +PCSG00142 One Piece: Pirate Warriors 2 +PCSG00544 One Piece: Pirate Warriors 3 +PCSE00638 ONE PIECE: PIRATE WARRIORS 3 +PCSH00205 One Tap Hero +PCSB01306 One Word by POWGI +PCSH10167 One Word by POWGI +PCSE01338 One Word by POWGI +PCSG00377 Ooedo Blacksmith +PCSA00118 OPEN ME!™ +PCSE00579 Operation Abyss: New Tokyo Legacy +PCSG00387 Operation Abyss: New Tokyo Legacy +PCSE01047 Operation Babel: New Tokyo Legacy +PCSG00514 Operation Babel: New Tokyo Legacy +PCSG00289 Ore ni Hatarakette Iwaretemo Otsu HD +PCSG00623 Ore ni Hatarakette Iwaretemo Tori +PCSF00536 Oreshika: Tainted Bloodlines +PCSC00060 Oreshika: Tainted Bloodlines +PCSA00155 Oreshika™: Tainted Bloodlines +PCSG00299 Oretachi ni Tsubasa wa Nai +PCSG01076 Oretachi no Sekai wa Owatteiru +PCSG00919 Orfleurs: Koufuku no Hanataba +PCSB00924 Organ Trail Complete Edition +PCSG00057 orgarhythm +PCSE00116 Orgarhythm +PCSG00427 Othello +PCSG00487 Otoko Yuukaku +PCSG00942 Otome Riron to Sono Shuuhen: Bon Voyage +PCSG01105 Ouka Sabaki Zan +PCSG00254 Oukaranman +PCSG00769 Ouma ga Toki: Kakuriyo no Enishi +PCSG90304 Our World is Ended +PCSG00728 Owari no Seraph: Unmei no Hajimari +PCSG00967 Owaru sekai to birthday +PCSG00496 OZMAFIA!! -vivace- +PCSB01462 Pachi Pachi +PCSA00059 Paint Park +PCSF00137 Paint Park +PCSA00111 Paint Park Plus +PCSE00489 Panda Run +PCSG01247 Panic Palette +PCSE01056 Papers, Please +PCSB01084 Papers, Please +PCSE01401 Paradox Soul +PCSE00821 Paranautical Activity +PCSG00549 Parfait +PCSE01082 Peasant Knight +PCSE01143 Penny-Punching Princess +PCSB01060 Period Cube ~Shackle of Amadeus~ +PCSG00853 Period Cube ~Shackle of Amadeus~ +PCSE01012 Period Cube ~Shackles of Amadeus~ +PCSG01031 Persona 3 Dancing in Moonlight +PCSE01274 Persona 3: Dancing in Moonlight +PCSB00245 Persona 4 Golden +PCSE00120 Persona 4 Golden +PCSG00563 Persona 4 Golden +PCSG00004 Persona 4 Golden +PCSH00021 Persona 4 The GOLDEN +PCSE00764 Persona 4: Dancing All Night +PCSB00867 Persona 4: Dancing All Night +PCSG00364 Persona 4: Dancing All Night +PCSG01030 Persona 5: Dancing in Starlight +PCSE01275 Persona 5: Dancing in Starlight +PCSB01257 Persona 5: Dancing in Starlight +PCSG00351 Phantasy Star Nova +PCSH00143 Phantasy Star Nova +PCSG90131 Phantasy Star Nova (DEMO) +PCSG90130 Phantasy Star Nova Battle (DEMO) +PCSG00141 Phantasy Star Online 2 +PCSF00718 Phineas and Ferb: Day of Doofenshmirtz +PCSG00139 PhotoKano Kiss +PCSG01071 Photon3 +PCSE01376 Pic-a-Pix Classic +PCSE01435 Pic-a-Pix Classic 2 +PCSE01253 Pic-a-Pix Color +PCSE01422 Pic-a-Pix Color 2 +PCSE01357 Pic-a-Pix Pieces +PCSE01466 Pic-a-Pix Pieces 2 +PCSE00065 Pinball Arcade +PCSA00109 Pinball Heroes: Complete +PCSF00167 Pinball Heroes: Complete +PCSE00751 Pirate Solitaire +PCSB00645 Pix The Cat +PCSE00553 Pix The Cat +PCSE00874 Pixel Hunter +PCSG00269 PixelJunk™ Monsters Ultimate HD +PCSE00307 PixelJunk™ Monsters Ultimate HD +PCSG00384 PixelJunk™ Shooter Ultimate +PCSE00064 Plants vs Zombies +PCSG00931 Plastic Memories +PCSA00069 PlayStation All-Stars Battle Royale +PCSC00032 PlayStation® All-Stars Battle Royale +PCSF00228 PlayStation® Home Arcade +PCSA00083 PlayStation® Home Arcade +PCSA00139 PlayStation®Vita Pets +PCSE00682 Pocket God vs Desert Ashes +PCSE00558 Pocket RPG +PCSG00672 POLARA +PCSE01050 POLARA +PCSG00509 Possession Magenta +PCSG00262 Power Pro Stadium +PCSG00006 Power Smash 4 +PCSE00961 Pox Nora +PCSG00905 Priministar +PCSG00491 Prince of Stride +PCSG00271 Princess Arthur +PCSG00188 Princess Strike! +PCSG00031 Pro Yakyuu Spirits 2012 +PCSG00151 Pro Yakyuu Spirits 2013 +PCSG00288 Pro Yakyuu Spirits 2014 +PCSG00541 Pro Yakyuu Spirits 2015 +PCSG01248 Pro Yakyuu Spirits 2019 +PCSG00572 Project Discovery +PCSE00311 Proteus +PCSH10091 Psychedelica of the Ashen Hawk +PCSE01166 Psychedelica of the Ashen Hawk +PCSE01164 Psychedelica of the black butterfly +PCSG00815 PsychicEmotion6 +PCSE00904 PSYCHO-PASS MANDATORY HAPPINESS +PCSB00985 PSYCHO-PASS MANDATORY HAPPINESS +PCSE00042 Puddle +PCSC00021 Puls-AR +PCSE00702 Pumped BMX + +PCSG00904 Puramai Wars V +PCSE00389 Putty Squad +PCSG00224 Puyo Puyo Tetris +PCSE00108 Puzzle by Nikoli V Slitherlink +PCSE00101 Puzzle by Nikoli V Sudoku +PCSG00045 Puzzle by Nikoli V: Sudoku +PCSE00561 Q*bert Rebooted +PCSE00143 Quell Memento +PCSG01037 Rabi Laby: Puzzle Out Stories +PCSE01111 Rabi-Ribi +PCSB00643 Race The Sun +PCSG01209 Radio Hammer Station +PCSG00958 Raging Loop +PCSG00025 Ragnarok Odyssey +PCSE00300 Ragnarok Odyssey ACE +PCSG00140 Ragnarok Odyssey ACE +PCSE00273 Rainbow Moon +PCSE00318 Rainbow Skies +PCSE01351 Random Heroes: Gold Edition +PCSF00484 Ratchet & Clank +PCSF00485 Ratchet & Clank 2 +PCSF00486 Ratchet & Clank 3 +PCSF00482 Ratchet & Clank Trilogy +PCSA00086 Ratchet & Clank: Full Frontal Assault +PCSF00191 Ratchet and Clank : QForce +PCSE00843 Ray Gigant +PCSB00928 RAYGIGANT +PCSE00277 Rayman Legends +PCSE00052 Rayman® Origins +PCSG00382 RE:VICE[D] +PCSG00933 Re:Zero - kara Hajimeru Isekai Seikatsu - Death or Kiss +PCSE00325 Real Boxing™ +PCSA00012 Reality Fighters™ +PCSG00663 Rear Pheles: Red of Another +PCSG00782 Reco Love: Gold Beach +PCSG00781 RecoLove: Blue Ocean +PCSE01434 Red Bow +PCSG90210 Red Sand Falling Moon Trial Version +PCSE01471 Reed 2 +PCSE01456 Reed Remastered +PCSG00795 Refrain no Chika Meikyuu to Majo no Ryodan +PCSG00426 Ren’ai 0 Kilometer V +PCSG00718 Renai Revenge +PCSG00990 RepKiss +PCSE00608 Resident Evil: Revelations 2 +PCSF00728 Resident Evil: Revelations 2 +PCSA00008 Resistance: Burning Skies +PCSF00142 Resistance: Burning Skies™ +PCSA00103 RESOGUN +PCSF00262 RESOGUN™ +PCSE00075 Retro City Rampage +PCSE00546 Retro City Rampage DX +PCSE01322 Revenant Dogma +PCSE01065 Revenant Saga +PCSE01229 Reverie +PCSG00414 Rewrite +PCSG01043 Rewrite Harvest festa! +PCSE01251 Riddled Corpses EX +PCSE00001 Ridge Racer +PCSG00001 RIDGE RACER +PCSB00048 RIDGE RACER +PCSG90003 Ridge Racer 2011 E3 Interactive Demo +PCSE00548 Ring Run Circus +PCSG00257 RisingStar +PCSE00850 Risk of Rain +PCSG00287 Ro-Kyu-Bu! Naisho no Shutter Chance +PCSG00352 Robotics;Notes Elite +PCSH00165 Robotics;Notes Elite +PCSG90115 Robotics;Notes Elite Demo +PCSE00761 Rocketbirds 2: Evolution +PCSE00112 Rocketbirds HBC +PCSB00571 Rogue Legacy +PCSE00449 Rogue Legacy +PCSG00616 Rollers of the Realm +PCSH00308 Romance of the Three Kingdoms XIII: Fame and Strategy +PCSG00870 Romancing SaGa 2 +PCSE01094 Romancing SaGa 2 +PCSE01337 Romancing SaGa 3 +PCSE01055 Root Double -Before Crime After Days Xtend Edition +PCSG01238 Root Letter Last Answer +PCSG90224 Rosé and the Old Castle of Twilight +PCSE00699 Roundabout +PCSE00750 Royal Defense +PCSE00753 Royal Defense Invisible Threat +PCSG00229 Rozen Maiden -Wechseln sie welt ab- +PCSG00216 Rui wa Tomo o Yobu +PCSA00490 Run Sackboy! Run! +PCSF00562 Run Sackboy! Run! +PCSE01387 Rush Rover +PCSB01464 Russian Subway Dogs +PCSG00503 Ryū ga Gotoku 0 Free app for PlayStation®Vita +PCSG00275 Ryū ga Gotoku: Ishin! Free app for PlayStation®Vita +PCSG00732 Ryuuyoku no Melodia: Diva with the Blessed Dragonol +PCSG00640 SA7 - Silent Ability Seven - +PCSG00543 Saenai Heroine no Sodatekata: 〜blessing flowers〜 +PCSG00802 SaGa: Scarlet Grace +PCSG00906 Saka Agari Hurricane Portable +PCSG90088 Saka-Ban +PCSG00646 Saki Zenkoku Hen +PCSG00908 Saki: Zenkoku-hen Plus +PCSG01231 Sakura Sakura +PCSG00129 Sakura-Sou no Pet na Kanojo +PCSB01072 Salt and Sanctuary +PCSE01023 Salt and Sanctuary +PCSG00041 Samurai & Dragons +PCSE01113 SAMURAI SHODOWN V SPECIAL +PCSG00279 Samurai Warriors 4 +PCSE00503 Samurai Warriors 4 +PCSE00827 SAMURAI WARRIORS 4 Empires +PCSE00737 SAMURAI WARRIORS 4-Ⅱ +PCSE00714 Samurai Warriors: Chronicles 3 +PCSH00152 Samurai Warriors: Chronicles 3 +PCSG00211 San Goku Shi 12 Taisenban +PCSG00210 San Goku Shi 12 with Power-Up Kit +PCSG00949 San Goku Shi 13 with Power-Up Kit +PCSG00863 Sangoku Hime 4: Tenka Ryouran - Tenmei no Koi Emaki +PCSG00183 Sangoku Rensenki: Otome no Heihou! +PCSG00785 Sangoku Rensenki: Otome no Heihou! Omoide Gaeshi - CS Edition +PCSG01194 Sanzen Sekai Yuugi: Re Multi Universe Myself +PCSC00007 Sawari Makuru! +PCSG00554 Sayonara UmiharaKawase + +PCSB00782 Sayonara UmiharaKawase + +PCSG00745 Scared Rider Xechs Rev. +PCSG01036 Scarlet Fragments ~Omoiiro no Memories~ +PCSE01355 Scintillatron4096 +PCSE01505 ScourgeBringer +PCSE00642 Scram Kitty DX +PCSG00793 SD Gundam G Generation Genesis +PCSH00241 SD GUNDAM G GENERATION GENESIS +PCSH00242 SD GUNDAM G GENERATION GENESIS +PCSE01153 Secret of Mana +PCSB01163 Secret of Mana +PCSG00168 Sei Madou Monogatari +PCSG00460 Seiken Densetsu: Rise of Mana (聖剣伝説RISE of MANA) +PCSG01127 Sen no Hatou, Tsukisome no Kouki +PCSG01104 Sengo Muramasa DX: Guren no Kettou +PCSG00132 Sengoku Hime 3: Tenka o Kirisaku Hikari to Kage +PCSG00232 Sengoku Hime 4: Souha Hyakkei, Hana Mamoru Chikai +PCSG00466 Sengoku Hime 5: Senkatatsu Haoh no Keifu +PCSG01034 Sengoku Hime 7: Sen'un Tsuranuku Guren no Ishi +PCSG00233 Sengoku Musou 2 with Moushouden & Empires HD Version +PCSG00471 Sengoku Musou Chronicle 3 +PCSG00867 Sengoku Otome: Legend Battle +PCSG00428 Senjou no Waltz +PCSB00602 SENRAN KAGURA Bon Appetit! (Hanzo x Crimson Squad) +PCSB00882 SENRAN KAGURA ESTIVAL VERSUS +PCSB00601 SENRAN KAGURA SHINOVI VERSUS +PCSG00133 Senran Kagura: Shinovi Versus +PCSE01480 Sense - A Cyberpunk Ghost Story +PCSG01210 Seven Days: Anata to Sugosu Nanokakan +PCSE00589 Severed +PCSE01125 Shakedown Hawaii +PCSE00950 Shantae: Half-Genie Hero +PCSG90111 She (That Girl) Can't Leave Me Trial Version +PCSG01177 Shikihime no Niwa +PCSG00278 Shin Gundam Musou +PCSG00380 Shin Hayarigami +PCSG00897 Shin Hayarigami 2 +PCSG00010 Shin Kamaitachi no Yoru 11 Hitome no Suspect +PCSG00452 Shin Sangoku Musou 7 Empires +PCSH00052 Shin Sangoku Musou 7 with Moushouden +PCSG00893 Shin Sangoku Musou Eiketsuden +PCSG00764 Shin Sangoku Musou Online Z +PCSG01282 Shinigami to Shoujo +PCSG00255 ShinobiAshi +PCSE00015 Shinobido 2: Revenge of Zen +PCSG00019 Shinobido 2: Revenge of Zen +PCSH00001 Shinobido 2: Revenge of Zen +PCSB00049 Shinobido 2: Revenge of Zen +PCSG00580 Shinsou-ban Mahou-tsukai to Goshujin-sama +PCSE00845 Shiren the Wanderer: The Tower of Fortune and the Dice of Fate +PCSG00944 Shiro to Kuro no Alice +PCSG01192 Shiro to Kuro no Alice -Twilight line- +PCSG00846 Shirogane x Spirits! +PCSG00822 Shitsuji ga Aruji o Erabu Toki +PCSB00743 Shovel Knight +PCSE00640 Shovel Knight +PCSE00923 Shu +PCSE00705 Shütshimi +PCSG00588 Sid Meier's Civilization Revolution 2+ +PCSG01001 Side Kicks! +PCSE00011 Silent Hill: Book of Memories +PCSB00115 Silent Hill: Book of Memories +PCSG01259 Silverio Trinity: Beyond the Horizon +PCSG00329 Simple V Series Vol.2: The Tousou Highway Full Boost: Nagoya +PCSB00161 Sine Mora +PCSE00090 Sine Mora +PCSE01240 Sir Eatsalot +PCSE00773 Siralim +PCSB00588 Skeleton Rider +PCSG00583 Skullgirls 2nd Encore +PCSE00865 Sky Force Anniversary +PCSE01054 Skylight Freerange +PCSE00862 Skylight Freerange 2: Gachduine +PCSC80009 Skype +PCSG00048 Slotter Mania V: Black Lagoon +PCSF00338 Sly 1 & 2 +PCSA00098 Sly 3: Honor Among Thieves™ +PCSF00209 Sly Cooper: Thieves in Time +PCSF00269 Sly Raccoon™ +PCSF00216 Smart as +PCSG00787 Snow White in the Mirror Realm +PCSG01254 Soi Kano: Gyutto Dakishimete +PCSG01070 Song of Heiligenstadt +PCSE00056 Sonic & All-Stars Racing Transformed +PCSB00190 Sonic & All-Stars Racing Transformed™ +PCSE00221 Sonic & All-Stars Racing Transformed™ Demo +PCSE00314 Sorcery Saga: Curse of the Great Curry God +PCSG90074 Sorcery Saga: Curse of the Great Curry God +PCSG00296 Soukai Buccaneers! +PCSC00039 SOUL SACRIFICE +PCSC00049 SOUL SACRIFICE DELTA +PCSD00079 SOUL SACRIFICE DELTA™ +PCSA00152 Soul Sacrifice™ Delta +PCSF00532 Soul Sacrifice™ Delta +PCSA00003 Sound Shapes +PCSF00076 Sound Shapes™ +PCSG00993 Sousei no Onmyouji +PCSE00295 Sparkle +PCSE01089 Spellspire +PCSG00145 Spelunker Collection +PCSE00288 Spelunky +PCSB00359 Spelunky +PCSB00789 Spider: Rite of the Shrouded Moon +PCSE00577 SpongeBob HeroPants +PCSE00068 Spy Hunter +PCSG00128 Spy Hunter™ +PCSG00714 Star Ocean Second Evolution +PCSC00008 STAR STRIKE DELTA +PCSB00254 Star Wars Pinball +PCSE01235 Stardew Valley +PCSB01226 Stardew Valley +PCSE00029 StarDrone Extreme +PCSG00917 Starry☆Sky ~Autumn Stories~ +PCSG00510 Starry☆Sky ~Spring Stories~ +PCSG00916 Starry☆Sky ~Summer Stories~ +PCSG00918 Starry☆Sky ~Winter Stories~ +PCSE01277 STAY +PCSB01254 STAY +PCSG01237 STAY +PCSB00690 Stealth Inc 2: A Game of Clones +PCSE00575 Stealth Inc 2: A Game of Clones +PCSB00317 Stealth Inc: A Clone in the Dark +PCSE00280 Stealth Inc: A Clone in the Dark +PCSG01062 Steam Prison: Nanatsu no Bitoku +PCSE01391 Steam Tactics +PCSB00542 SteamWorld Dig +PCSE00430 SteamWorld Dig +PCSE01101 SteamWorld Dig 2 +PCSE00583 SteamWorld Heist +PCSB00693 SteamWorld Heist +PCSE00644 Steins;Gate +PCSG00147 STEINS;GATE +PCSE00949 Steins;Gate 0 +PCSB01012 STEINS;GATE 0 +PCSG00673 STEINS;GATE 0 +PCSG01166 STEINS;GATE ELITE +PCSG00250 Steins;Gate Senkei Kousoku no Phenogram +PCSG00146 Steins;Gate: My Darling's Embrace(比翼恋理のだーりん) +PCSE00290 Stick it to the Man +PCSE01098 Still Time +PCSG00736 STORM LOVER 2nd V +PCSG00735 STORM LOVER V +PCSB00908 Stranger of Sword City +PCSE00818 Stranger of Sword City +PCSG00878 Stranger of Sword City +PCSG00907 Strawberry Nauts +PCSE00005 STREET FIGHTER X TEKKEN +PCSB00144 STREET FIGHTER X TEKKEN +PCSE00688 Strike Solitaire +PCSE01514 SturmFront - The Mutant War +PCSH00006 Sudoku by Nikoli V +PCSG01250 Suki to Suki to de Sankaku Ren’ai +PCSG90008 Sumioni Trial Version +PCSE00062 SUMIONI:DEMON ARTS +PCSB01013 Summon Night 6: Lost borders +PCSG00827 Summon Night 6: Lost borders +PCSH00225 Summon Night 6: Lost borders +PCSE00951 Summon Night 6: Lost Borders +PCSE00047 SunFlowers +PCSE00784 Super Blackout +PCSE01433 Super Box Land Demake +PCSG01240 Super Destronaut DX: Intruders Edition +PCSE01460 Super Destronaut: Land Wars +PCSB00362 Super Exploding Zoo +PCSE00734 Super Exploding Zoo +PCSG00069 Super Hero Generation +PCSB01193 Super Hydorah +PCSB01152 Super Life of Pixel +PCSE01077 Super Life of Pixel +PCSE00942 Super Magical +PCSE00769 Super Meat Boy! +PCSE00017 Super Monkey Ball Banana Splitz +PCSG00032 Super Monkey Ball Banana Splitz +PCSB01100 Super Mutant Alien Assault +PCSE01072 Super Mutant Alien Assault +PCSG00260 Super Robot Taisen +PCSG01128 Super Robot Taisen X +PCSH10001 Super Robot Wars V +PCSH10089 Super Robot Wars X +PCSH10088 SUPER ROBOT WARS X +PCSG00495 Super Robot Wars3 Z Jigoku Hen +PCSB01271 Super Skull Smash Go! 2 Turbo +PCSE00802 Super Star Wars +PCSA00006 Super Stardust Delta +PCSF00019 Super Stardust™ Delta +PCSE00698 Super Time Force ULTRA +PCSE01374 Super Weekend Mode +PCSE01415 Super Wiloo Demake +PCSE00717 SUPERBEAT XONiC +PCSE00898 Superdimension Neptune vs Sega Hard Girls +PCSB00305 Superfrog HD +PCSG01207 SuperZangyura +PCSE00012 Supremacy MMA: Unrestricted +PCSG00948 Suran digit +PCSB00439 Surge Deluxe +PCSE00860 Swap Quest +PCSB00923 SwapQuest +PCSG01196 sweet pool +PCSB00507 Switch Galaxy Ultra +PCSE00493 Switch Galaxy Ultra +PCSE00465 Sword Art Online -Hollow Fragment- +PCSG00868 Sword Art Online : Hollow Realization +PCSB00618 Sword Art Online Hollow Fragment +PCSE00740 Sword Art Online Lost Song +PCSH00134 SWORD ART ONLINE Lost Song +PCSG00294 Sword Art Online: Hollow Fragment +PCSB00972 SWORD ART ONLINE: HOLLOW REALIZATION +PCSE00903 SWORD ART ONLINE: HOLLOW REALIZATION +PCSB00830 Sword Art Online: Lost Song +PCSE01484 Swordbreaker The Game +PCSE01508 Synergia +PCSE01451 Syrup and the Ultimate Sweet +PCSF00064 t@g +PCSF00062 Table Football +PCSA00064 Table Ice Hockey +PCSD00047 Table Ice Hockey™ +PCSC00028 Table Play Golf +PCSB00416 Table Top Racing +PCSB00912 Tachyon Project +PCSE00836 Tachyon Project +PCSE00771 Taco Master +PCSB00458 Tadeo Jones: The game +PCSG00945 Taiheiyou no Arashi: Koukoku no Kouhai Koko ni Ari, 1942 Senkan Yamato Hankou no Gouhou +PCSG00637 Taiheiyou no Arashi: Shijousaidai no Gekisen Normandy Koubousen +PCSG00551 Taiko no Tatsujin V (太鼓の達人 Vバージョン) +PCSG00726 Taishou Mebiusline: Vitable +PCSG00869 Taishou x Alice: All in One +PCSG01141 Taishou x Alice: Heads & Tails +PCSE00034 Tales From Space: Mutant Blobs Attack +PCSB00096 Tales from Space: Mutant Blobs Attack!!! +PCSE00429 Tales of Hearts R +PCSG00125 Tales of Hearts R +PCSB00550 TALES OF HEARTS R +PCSG00163 Tales of Hearts R: Infinite Evolve +PCSG00009 Tales Of Innocence R +PCSE01468 Task Force Kampas +PCSG01203 Tayutama2 -you're the only one- +PCSA00099 Tearaway™ +PCSF00476 Tearaway™ +PCSG00547 Teikoku Kaigun Koi Bojou: Meiji Yokosuka Koushinkyoku +PCSG01064 Teikoku Kaleido: Kakumei no Rondo +PCSG01180 Tengai ni Mau, Iki na Hana +PCSG00137 Tenshi Tsuki no Shoujo +PCSE00317 Terraria +PCSB00722 Teslagrad +PCSE00814 Teslagrad +PCSE01238 TETRA's Escape +PCSB00642 Tetris® Ultimate +PCSE00521 Tetris® Ultimate +PCSE00333 The Amazing Spider-Man +PCSB00428 The Amazing Spider-Man™ +PCSB00676 The Binding of Isaac: Rebirth +PCSE00507 The Binding of Isaac: Rebirth +PCSE00735 THE BIT.TRIP +PCSE01037 The Caligula Effect +PCSG00687 The Caligula Effect +PCSE01112 The Count Lucanor +PCSE01021 The Deer God +PCSE01344 The Demon Rush: Legends Corrupt +PCSE01241 The Dreamlands: Aisling's Quest +PCSG01095 The Fruit of Grisaia: Side Episode +PCSE01305 The House in Fata Morgana +PCSG00677 The IdolM@ster Must Songs - Aka-Ban +PCSG00678 The IdolM@ster Must Songs - Ao-Ban +PCSE00441 The Keeper of 4 Elements +PCSE01224 THE KING OF FIGHTERS '97 GLOBAL MATCH +PCSG00508 The Labyrinth of Grisaia -LE EDEN DE LA GRISAIA- +PCSH10113 The Legend of Heroes AO NO KISEKI Evolution +PCSH10111 The Legend of Heroes ZERO NO KISEKI Evolution +PCSG00490 The Legend of Heroes: Trails in the Sky the Third Evolution +PCSG00195 The Legend of Heroes: Trails of Cold Steel +PCSE00786 THE LEGEND OF HEROES: TRAILS OF COLD STEEL +PCSB00866 THE LEGEND OF HEROES: TRAILS OF COLD STEEL +PCSG00354 The Legend of Heroes: Trails of Cold Steel II +PCSE00896 THE LEGEND OF HEROES: TRAILS OF COLD STEEL II +PCSG00246 The Legend of Heroes: Trails to Azure Evolution +PCSG90069 The Legend of Heroes: Zero no Kiseki Evolution Free Version +PCSE00353 The Lego Movie Videogame +PCSE01162 The Long Reach +PCSE00993 The Longest Five Minutes +PCSE01179 The Lost Child +PCSF00558 The Muppets Movie Adventures +PCSG01163 The Princess Guide +PCSG01235 The Princess, the Stray Cat, and Matters of the Heart 2 +PCSE00775 The Quiet Collection +PCSE00631 The Sun and Moon +PCSB00489 The Swapper +PCSE01388 The Tower of Beatrice +PCSB01347 The Tower of Beatrice +PCSE00436 The Treasures of Montezuma 4 +PCSE00027 The Treasures of Montezuma Blitz +PCSA00158 The Unfinished Swan +PCSE00316 The Walking Dead +PCSB00411 The Walking Dead +PCSE00556 The Walking Dead Season 2 +PCSE00352 The Wolf Among Us +PCSE00258 Thomas Was Alone +PCSE00774 Three Fourths Home (Extended Edition) +PCSE01463 Thunder Paw +PCSE01416 Thy Sword +PCSB01396 Tic-Tac-Letters by POWGI +PCSE01430 Tic-Tac-Letters by POWGI +PCSH10212 Tic-Tac-Letters by POWGI +PCSG90164 Time Avengers Demo +PCSE01186 Time Recoil +PCSG00062 TIME TRAVELERS +PCSG00966 Timepiece Ensemble +PCSE01246 Timespinner +PCSB00552 Tiny Troopers Joint Ops +PCSE00388 Titan Attacks! +PCSE00597 Titan Souls +PCSG00575 To Heart 2: Dungeon Travelers +PCSG00330 To Love-Ru Trouble Darkness: Battle Ecstasy +PCSG00689 To Love-Ru Trouble Darkness: True Princess +PCSG01089 Toaru Majutsu no Virtual-On +PCSG01015 Tokeijikake no Ley Line: Kagerou ni Samayou Majo +PCSG00087 Tokushu Houdoubu +PCSG01103 Tokyo Clanpool +PCSG90298 Tokyo Clanpool Trial +PCSG00615 Tokyo Ghoul: Jail +PCSG00631 Tokyo Onmyouji: Tengen Jibashi - Rei no Baai - V Edition +PCSE01150 TOKYO TATTOO GIRLS +PCSB01161 TOKYO TATTOO GIRLS +PCSE00924 Tokyo Twilight Ghost Hunters Daybreak: Special Gigs +PCSG00634 Tokyo Twilight Ghost Hunters: Daybreak Special Gigs +PCSE00893 Tokyo Xanadu +PCSG00608 Tokyo Xanadu +PCSB01062 Tokyo Xanadu +PCSG01048 TOKYO YAMANOTE BOYS for V MAIN DISC +PCSG01049 Tokyo Yamanote Boys for V: Fan Disc +PCSG01135 Tonari ni Kanojo no Iru Shiawase: Two Farce +PCSG01201 Tonari ni Kanojo no Iru Shiawase: Winter Guest +PCSF00011 Top Darts +PCSB00791 Top Trumps Turbo +PCSG00902 Torikago no Marriage: Hatsukoi no Tsubasa +PCSA00112 Toro's Friend Network +PCSE00671 TorqueL +PCSB00355 Total Recoil +PCSG00113 Tottemo E Mahjong +PCSG00593 Touch Battle Sensha SP +PCSE00016 Touch My Katamari +PCSB00047 Touch My Katamari +PCSE01015 TOUHOU DOUBLE FOCUS +PCSG00977 Touhou Genso Maroku W: The Devil of Decline +PCSE00990 TOUHOU Genso Wanderer +PCSG00985 Touhou Genso Wanderer TOD -RELOADED- +PCSE01104 Touhou Kobuto V: Burst Battle +PCSG00999 Touhou Koubuto V: Burst Battle +PCSG00752 Touhou Soujinengi V +PCSE00940 Toukiden 2 +PCSG00834 Toukiden 2 co-op version +PCSG00379 Toukiden: Kiwami +PCSB00574 Toukiden: Kiwami +PCSE00467 Toukiden: Kiwami +PCSG00193 Toukiden: The Age of Demons +PCSE00381 Toukiden: The Age of Demons +PCSB00918 Towerfall Ascension +PCSG00488 Trails in the Sky FC Evolution +PCSG00489 Trails In the Sky SC Evolution +PCSA00060 Treasure Park +PCSC80006 Treasure Park +PCSB00422 Treasures of Montezuma Arena +PCSG00515 Trillion : God Of Destruction +PCSB00904 Trillion: God of Destruction +PCSE00813 Trillion: God of Destruction +PCSG01023 Tsuihou Senkyo +PCSG00648 Tsuki ni Yorisou Otome no Sahou: Hidamari no Hibi +PCSG00152 Tsukiei Academy -kou- +PCSG01025 Tsukitomo. Tsukiuta 12 Memories +PCSG01019 Tsumikui: Sen no Noroi, Sen no Inori for V +PCSE01452 Twin Breaker: A Sacred Symbols Adventure +PCSE01081 Twin Robots +PCSE00397 TxK +PCSE00837 Type:Rider +PCSC00080 U-NEXT +PCSG00480 Ukiyo no Roushi +PCSB00070 ULTIMATE MARVEL VS. CAPCOM 3 +PCSG00011 ULTIMATE MARVEL VS. CAPCOM 3 +PCSE00004 ULTIMATE MARVEL VS. CAPCOM 3 +PCSE01487 Ultracore +PCSE00414 Ultratron +PCSG00912 Un:BIRTHDAY SONG: Ai o Utau Shinigami - Another Record +PCSE00822 Uncanny Valley +PCSF00220 Uncharted: Fight for Fortune™ +PCSC00005 UNCHARTED: Golden Abyss +PCSF00001 Uncharted: Golden Abyss™ +PCSF00012 Uncharted: Golden Abyss™ +PCSA00029 Uncharted: Golden Abyss™ +PCSD00001 UNCHARTED: Golden Abyss™ +PCSA00088 Uncharted™ Fight for Fortune +PCSE01144 Under Night In-Birth Exe:Late(st) +PCSG00964 UNDER NIGHT IN-BIRTH Exe:Late[st] +PCSB01157 Undertale +PCSE01116 Undertale +PCSG01112 UNDERTALE +PCSE00840 Unepic +PCSB00841 Unepic +PCSF00034 Unit 13 +PCSA00014 Unit 13™ +PCSH10310 UnMetal +PCSG00633 Uppers +PCSB00038 Urban Trial Freestyle +PCSE00051 Urban Trial Freestyle +PCSG01191 Usotsuki Hime to Moumoku Ouji +PCSG01046 Usotsuki Shangri-La +PCSG00199 Uta Kumi 575 +PCSG00651 Uta no * Prince-Sama: Music 3 +PCSG00914 Uta no * Prince-Sama: Repeat LOVE +PCSG00617 Utawarerumono: Mask of Deception +PCSG00838 Utawarerumono: Mask of Truth (うたわれるもの 二人の白皇) +PCSE01409 Utawarerumono: Prelude to the Fallen +PCSG01011 Utsusemi no Meguri +PCSE00756 VA-11 HALL-A +PCSB01166 VA-11 HALL-A +PCSE01223 VA-11 HALL-A +PCSG01072 VA-11 HALL-A +PCSE00244 Valhalla Knights 3 +PCSG00307 Valhalla Knights 3 Gold +PCSE01003 Valkyria Revolution +PCSB01011 VALKYRIE DRIVE -BHIKKHUNI- +PCSE00948 VALKYRIE DRIVE -BHIKKHUNI- +PCSG00467 Vamwolf Cross† +PCSG01159 Variable Barricade +PCSE01314 VASARA Collection +PCSB01133 Vegas Party +PCSE00712 Velocibox +PCSB00302 Velocity Ultra +PCSE00038 Velocity Ultra +PCSB00410 Velocity®2X +PCSE00374 Velocity®2X +PCSG00531 VENUS PROJECT +PCSE00621 Vertical Drop Heroes HD +PCSB00031 Virtua Tennis 4 +PCSE00003 Virtua Tennis 4 +PCSB00205 Virtue's Last Reward +PCSE00506 Vitamin Z +PCSG01115 VitaminX Destination +PCSE00913 Volgarr the Viking +PCSE00760 Volume +PCSB00810 VVVVVV +PCSG01084 Wagamama High Spec (ワガママハイスペック) +PCSE01266 Waking Violet +PCSG00768 Walpurgis no Uta +PCSG00790 Wand of Fortune R +PCSG00938 Wand of Fortune R2 +PCSE00938 Wanderjahr TryAgainOrWalkAway +PCSE01248 War Theatre +PCSE01045 Warlock's Tower +PCSG01018 Warriors All-Stars +PCSG00209 Warriors Orochi 2 Ultimate +PCSB00873 WE ARE DOOMED +NPXS10007 Welcome Park +PCSC00047 What Did I Do to Deserve This, My Lord? +PCSB00727 Whispering Willows +PCSG00249 White Album 2: Shiawase no Mukougawa +PCSE01032 Windjammers +PCSG00194 Winning Post 7 2013 +PCSG00545 Winning Post 8 2015 +PCSG00804 Winning Post 8 2016 +PCSG01174 Winning Post 8 2018 +PCSF00007 WipEout® 2048 +PCSA00015 WipEout® 2048 +PCSD00005 WipEout® 2048 +PCSE01516 Witchcrafty +PCSE01445 Without Escape +PCSG00511 Wizardry: Torawareshi Bourei no Machi +PCSG00512 Wizardry: Torawareshi Tomashii no Meikyuu +PCSE01432 Wizards of Brandel +PCSE00519 Woah Dave! +PCSE01453 Word Maze by POWGI +PCSH10228 Word Maze by POWGI +PCSB01418 Word Maze by POWGI +PCSE01286 Word Search by POWGI +PCSH10166 Word Search by POWGI +PCSB01267 Word Search by POWGI +PCSH10168 Word Sudoku by POWGI +PCSE01339 Word Sudoku by POWGI +PCSB01307 Word Sudoku by POWGI +PCSH10179 Word Wheel by POWGI +PCSB01367 Word Wheel by POWGI +PCSE01394 Word Wheel by POWGI +PCSH10180 Wordsweeper by POWGI +PCSB01366 Wordsweeper by POWGI +PCSE01395 Wordsweeper by POWGI +PCSG01088 World Election +PCSG01114 World End Syndrome +PCSG00709 World of Final Fantasy +PCSE00880 WORLD OF FINAL FANTASY +PCSG00647 World Trigger Borderless Mission +PCSG00832 World Trigger: Smash Borders +PCSB00332 WORMS REVOLUTION EXTREME +PCSE00286 WORMS REVOLUTION EXTREME +PCSB00204 WRC 3: FIA World Rally Championship +PCSB00345 WRC 4 FIA WORLD RALLY CHAMPIONSHIP +PCSE00667 WRC 5 FIA World Rally Championship +PCSE01477 Wurroom +PCSE00346 XBLAZE CODE : EMBRYO +PCSG00463 XBLAZE LOST : MEMORIES +PCSG00589 XCOM: Enemy Unknown Plus +PCSE01481 Xeno Crisis +PCSE01191 Xenon Valkyrie+ +PCSE00897 Xenoraid +PCSE00694 Xeodrifter™ +PCSG00215 Yahari Game Demo Ore no Seishun Love-Kome wa Machigatteiru. +PCSG00895 Yahari Game Demo Ore no Seishun Love-Kome wa Machigatteiru. Zoku +PCSG00800 Yaken no Rodem +PCSH00147 Yakuza 0! Companion App +PCSG01080 Yomawari: Midnight Shadows +PCSB01144 YOMAWARI: MIDNIGHT SHADOWS +PCSG01120 Yoshiwara Higanbana Kuon no Chigiri +PCSG01267 your diary + +PCSC80010 YouTube +PCSE01033 Ys Origin +PCSH10049 Ys Origins +PCSE01103 Ys VIII -Lacrimosa of DANA- +PCSH00297 Ys VIII -Lacrimosa of DANA- +PCSG00105 Ys: Memories of Celceta +PCSH00181 Ys: Memories of Celceta +PCSG00567 YU-NO: Konoyo no Hate de Koi o Utau Shoujo +PCSE01462 Yumeutsutsu Re:After +PCSG01317 Yumeutsutsu Re:After +PCSG00393 Yumeutsutsu Re:After +PCSE01461 Yumeutsutsu Re:Master +PCSG00653 Yunohana SpRING! +PCSG00909 Yunohana SpRING! ~Cherising Time~ +PCSG00502 Yuuki Yuuna wa Yuusha de Aru: Jukai no Kioku +PCSG01075 Yuukyuu no Tierblade: Fragments of Memory +PCSG00808 Yuukyuu no Tierblade: Lost Chronicle +PCSG00693 Yuusha Shisu +PCSB00390 Z-Run +PCSG90316 Zanki Zero trial version +PCSG01113 Zanki Zero: Last Beginning +PCSB00094 Zen Pinball 2 +PCSE00050 Zen Pinball 2 +PCSG00883 Zero Escape: 9 Jikan 9 nin 9 no Tobira Zennin Shibo Dos Double Pack +PCSE01006 Zero Escape: The Nonary Games +PCSE00085 Zero Escape: Virtue's Last Reward +PCSE00781 Zero Escape: Zero Time Dilemma +PCSE01088 Zero Zero Zero Zero +PCSE01371 Zeroptian Invasion +PCSG00880 Zettai Kaikyuu Gakuen: Eden with Roses and Phantasm +PCSG00611 Zettai Meikyuu: Himitsu no Oyayubi Hime +PCSE00102 Zombie Tycoon 2 : Brainhov's Revenge diff --git a/packages/jelos/sources/post-update b/packages/jelos/sources/post-update index aa02df0b34..d4933eab70 100644 --- a/packages/jelos/sources/post-update +++ b/packages/jelos/sources/post-update @@ -74,3 +74,7 @@ if [ -e "/storage/.config/jslisten_hotkeys" ] then grep BTN_VOLBRIGHT_HOTKEY /storage/.config/jslisten_hotkeys || echo -e "\nBTN_VOLBRIGHT_HOTKEY=999" >>/storage/.config/jslisten_hotkeys fi + +### 20240207 - Update Vita launchers and data. +rsync -ah --update /usr/config/vita3k/* /storage/.config/vita3k 2>/dev/null +rm -f "/storage/.config/vita3k/launcher/Start Vita3K.sh" From 7ee45d911f5f2a7fd8844e8d9bffd9a4ac6fd479 Mon Sep 17 00:00:00 2001 From: sydarn Date: Thu, 8 Feb 2024 11:16:48 +0100 Subject: [PATCH 129/167] purge gzdoom configs in rk3566 devices --- .../devices/Anbernic RG353P/050-game_configs | 14 -------------- .../quirks/devices/Powkiddy RGB30/050-game_configs | 14 -------------- .../devices/Powkiddy RK2023/050-game_configs | 14 -------------- .../quirks/devices/Powkiddy x55/050-game_configs | 14 -------------- 4 files changed, 56 deletions(-) delete mode 100755 packages/hardware/quirks/devices/Anbernic RG353P/050-game_configs delete mode 100755 packages/hardware/quirks/devices/Powkiddy RGB30/050-game_configs delete mode 100755 packages/hardware/quirks/devices/Powkiddy RK2023/050-game_configs delete mode 100755 packages/hardware/quirks/devices/Powkiddy x55/050-game_configs diff --git a/packages/hardware/quirks/devices/Anbernic RG353P/050-game_configs b/packages/hardware/quirks/devices/Anbernic RG353P/050-game_configs deleted file mode 100755 index 50b56be0c0..0000000000 --- a/packages/hardware/quirks/devices/Anbernic RG353P/050-game_configs +++ /dev/null @@ -1,14 +0,0 @@ - -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) - -. /etc/profile - -#Set up gzdoom -if [ ! -d "/storage/.config/gzdoom/" ]; then - cp -rf /usr/config/gzdoom /storage/.config/ - sed -i '/Joy10=/c\Joy10=togglemap; - /Joy9=/c\Joy9=menu_main; - /vid_defheight=/c\vid_defheight=480; - /vid_defwidth=/c\vid_defwidth=640' /storage/.config/gzdoom/gzdoom.ini -fi diff --git a/packages/hardware/quirks/devices/Powkiddy RGB30/050-game_configs b/packages/hardware/quirks/devices/Powkiddy RGB30/050-game_configs deleted file mode 100755 index 50b56be0c0..0000000000 --- a/packages/hardware/quirks/devices/Powkiddy RGB30/050-game_configs +++ /dev/null @@ -1,14 +0,0 @@ - -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) - -. /etc/profile - -#Set up gzdoom -if [ ! -d "/storage/.config/gzdoom/" ]; then - cp -rf /usr/config/gzdoom /storage/.config/ - sed -i '/Joy10=/c\Joy10=togglemap; - /Joy9=/c\Joy9=menu_main; - /vid_defheight=/c\vid_defheight=480; - /vid_defwidth=/c\vid_defwidth=640' /storage/.config/gzdoom/gzdoom.ini -fi diff --git a/packages/hardware/quirks/devices/Powkiddy RK2023/050-game_configs b/packages/hardware/quirks/devices/Powkiddy RK2023/050-game_configs deleted file mode 100755 index 50b56be0c0..0000000000 --- a/packages/hardware/quirks/devices/Powkiddy RK2023/050-game_configs +++ /dev/null @@ -1,14 +0,0 @@ - -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) - -. /etc/profile - -#Set up gzdoom -if [ ! -d "/storage/.config/gzdoom/" ]; then - cp -rf /usr/config/gzdoom /storage/.config/ - sed -i '/Joy10=/c\Joy10=togglemap; - /Joy9=/c\Joy9=menu_main; - /vid_defheight=/c\vid_defheight=480; - /vid_defwidth=/c\vid_defwidth=640' /storage/.config/gzdoom/gzdoom.ini -fi diff --git a/packages/hardware/quirks/devices/Powkiddy x55/050-game_configs b/packages/hardware/quirks/devices/Powkiddy x55/050-game_configs deleted file mode 100755 index 50b56be0c0..0000000000 --- a/packages/hardware/quirks/devices/Powkiddy x55/050-game_configs +++ /dev/null @@ -1,14 +0,0 @@ - -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) - -. /etc/profile - -#Set up gzdoom -if [ ! -d "/storage/.config/gzdoom/" ]; then - cp -rf /usr/config/gzdoom /storage/.config/ - sed -i '/Joy10=/c\Joy10=togglemap; - /Joy9=/c\Joy9=menu_main; - /vid_defheight=/c\vid_defheight=480; - /vid_defwidth=/c\vid_defwidth=640' /storage/.config/gzdoom/gzdoom.ini -fi From 8b75397d4628c718b34db9c2c3237886a61af6b1 Mon Sep 17 00:00:00 2001 From: sydarn Date: Thu, 8 Feb 2024 11:42:24 +0100 Subject: [PATCH 130/167] rk3566: fix powkiddy model names in dts --- .../RK3566/011-fix-powkiddy-model-names.patch | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 projects/Rockchip/packages/linux/patches/RK3566/011-fix-powkiddy-model-names.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566/011-fix-powkiddy-model-names.patch b/projects/Rockchip/packages/linux/patches/RK3566/011-fix-powkiddy-model-names.patch new file mode 100644 index 0000000000..d990dab2e5 --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566/011-fix-powkiddy-model-names.patch @@ -0,0 +1,26 @@ +diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts +index 0ac64f043b80..ae7627216cd6 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts ++++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts +@@ -8,7 +8,7 @@ + #include "rk3566-powkiddy-rk2023.dtsi" + + / { +- model = "RGB30"; ++ model = "Powkiddy RGB30"; + compatible = "powkiddy,rgb30", "rockchip,rk3566"; + }; + +diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts +index ba32d0793dca..691f6949a5e7 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts ++++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts +@@ -8,7 +8,7 @@ + #include "rk3566-powkiddy-rk2023.dtsi" + + / { +- model = "RK2023"; ++ model = "Powkiddy RK2023"; + compatible = "powkiddy,rk2023", "rockchip,rk3566"; + }; + From d37ccf0c0067324b34db319d52c231a82baa9afd Mon Sep 17 00:00:00 2001 From: fewtarius Date: Thu, 8 Feb 2024 11:34:15 +0000 Subject: [PATCH 131/167] Fix reversed Wii horizontal remote control. --- .../dolphin-sa/config/AMD64/WiiControllerProfiles/hremote.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/emulators/standalone/dolphin-sa/config/AMD64/WiiControllerProfiles/hremote.ini b/packages/emulators/standalone/dolphin-sa/config/AMD64/WiiControllerProfiles/hremote.ini index cbd6a07604..88ebbc2d30 100644 --- a/packages/emulators/standalone/dolphin-sa/config/AMD64/WiiControllerProfiles/hremote.ini +++ b/packages/emulators/standalone/dolphin-sa/config/AMD64/WiiControllerProfiles/hremote.ini @@ -12,8 +12,8 @@ Shake/Y = Button 4 Shake/Z = Button 4 D-Pad/Up = Axis 6- D-Pad/Down = Axis 6+ -D-Pad/Left = Axis 7- -D-Pad/Right = Axis 7+ +D-Pad/Left = Axis 7+ +D-Pad/Right = Axis 7- IR/Up = `Axis 4-` IR/Down = `Axis 4+` IR/Left = `Axis 3-` From 2ed79a74215628ba9b477658150dfe14d546258f Mon Sep 17 00:00:00 2001 From: sydarn Date: Thu, 8 Feb 2024 11:16:48 +0100 Subject: [PATCH 132/167] purge gzdoom configs in rk3566 devices --- .../devices/Anbernic RG353P/050-game_configs | 14 -------------- .../quirks/devices/Powkiddy RGB30/050-game_configs | 14 -------------- .../devices/Powkiddy RK2023/050-game_configs | 14 -------------- .../quirks/devices/Powkiddy x55/050-game_configs | 14 -------------- 4 files changed, 56 deletions(-) delete mode 100755 packages/hardware/quirks/devices/Anbernic RG353P/050-game_configs delete mode 100755 packages/hardware/quirks/devices/Powkiddy RGB30/050-game_configs delete mode 100755 packages/hardware/quirks/devices/Powkiddy RK2023/050-game_configs delete mode 100755 packages/hardware/quirks/devices/Powkiddy x55/050-game_configs diff --git a/packages/hardware/quirks/devices/Anbernic RG353P/050-game_configs b/packages/hardware/quirks/devices/Anbernic RG353P/050-game_configs deleted file mode 100755 index 50b56be0c0..0000000000 --- a/packages/hardware/quirks/devices/Anbernic RG353P/050-game_configs +++ /dev/null @@ -1,14 +0,0 @@ - -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) - -. /etc/profile - -#Set up gzdoom -if [ ! -d "/storage/.config/gzdoom/" ]; then - cp -rf /usr/config/gzdoom /storage/.config/ - sed -i '/Joy10=/c\Joy10=togglemap; - /Joy9=/c\Joy9=menu_main; - /vid_defheight=/c\vid_defheight=480; - /vid_defwidth=/c\vid_defwidth=640' /storage/.config/gzdoom/gzdoom.ini -fi diff --git a/packages/hardware/quirks/devices/Powkiddy RGB30/050-game_configs b/packages/hardware/quirks/devices/Powkiddy RGB30/050-game_configs deleted file mode 100755 index 50b56be0c0..0000000000 --- a/packages/hardware/quirks/devices/Powkiddy RGB30/050-game_configs +++ /dev/null @@ -1,14 +0,0 @@ - -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) - -. /etc/profile - -#Set up gzdoom -if [ ! -d "/storage/.config/gzdoom/" ]; then - cp -rf /usr/config/gzdoom /storage/.config/ - sed -i '/Joy10=/c\Joy10=togglemap; - /Joy9=/c\Joy9=menu_main; - /vid_defheight=/c\vid_defheight=480; - /vid_defwidth=/c\vid_defwidth=640' /storage/.config/gzdoom/gzdoom.ini -fi diff --git a/packages/hardware/quirks/devices/Powkiddy RK2023/050-game_configs b/packages/hardware/quirks/devices/Powkiddy RK2023/050-game_configs deleted file mode 100755 index 50b56be0c0..0000000000 --- a/packages/hardware/quirks/devices/Powkiddy RK2023/050-game_configs +++ /dev/null @@ -1,14 +0,0 @@ - -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) - -. /etc/profile - -#Set up gzdoom -if [ ! -d "/storage/.config/gzdoom/" ]; then - cp -rf /usr/config/gzdoom /storage/.config/ - sed -i '/Joy10=/c\Joy10=togglemap; - /Joy9=/c\Joy9=menu_main; - /vid_defheight=/c\vid_defheight=480; - /vid_defwidth=/c\vid_defwidth=640' /storage/.config/gzdoom/gzdoom.ini -fi diff --git a/packages/hardware/quirks/devices/Powkiddy x55/050-game_configs b/packages/hardware/quirks/devices/Powkiddy x55/050-game_configs deleted file mode 100755 index 50b56be0c0..0000000000 --- a/packages/hardware/quirks/devices/Powkiddy x55/050-game_configs +++ /dev/null @@ -1,14 +0,0 @@ - -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) - -. /etc/profile - -#Set up gzdoom -if [ ! -d "/storage/.config/gzdoom/" ]; then - cp -rf /usr/config/gzdoom /storage/.config/ - sed -i '/Joy10=/c\Joy10=togglemap; - /Joy9=/c\Joy9=menu_main; - /vid_defheight=/c\vid_defheight=480; - /vid_defwidth=/c\vid_defwidth=640' /storage/.config/gzdoom/gzdoom.ini -fi From 0808fcb67644000466c82f99fb810b050730745b Mon Sep 17 00:00:00 2001 From: sydarn Date: Thu, 8 Feb 2024 11:42:24 +0100 Subject: [PATCH 133/167] rk3566: fix powkiddy model names in dts --- .../RK3566/011-fix-powkiddy-model-names.patch | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 projects/Rockchip/packages/linux/patches/RK3566/011-fix-powkiddy-model-names.patch diff --git a/projects/Rockchip/packages/linux/patches/RK3566/011-fix-powkiddy-model-names.patch b/projects/Rockchip/packages/linux/patches/RK3566/011-fix-powkiddy-model-names.patch new file mode 100644 index 0000000000..d990dab2e5 --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3566/011-fix-powkiddy-model-names.patch @@ -0,0 +1,26 @@ +diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts +index 0ac64f043b80..ae7627216cd6 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts ++++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts +@@ -8,7 +8,7 @@ + #include "rk3566-powkiddy-rk2023.dtsi" + + / { +- model = "RGB30"; ++ model = "Powkiddy RGB30"; + compatible = "powkiddy,rgb30", "rockchip,rk3566"; + }; + +diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts +index ba32d0793dca..691f6949a5e7 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts ++++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dts +@@ -8,7 +8,7 @@ + #include "rk3566-powkiddy-rk2023.dtsi" + + / { +- model = "RK2023"; ++ model = "Powkiddy RK2023"; + compatible = "powkiddy,rk2023", "rockchip,rk3566"; + }; + From 3b4458caa8c08671276e71068d2ecab6d2173a81 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Thu, 8 Feb 2024 12:54:50 +0000 Subject: [PATCH 134/167] Controller-gen should only return valid controllers. --- .../emulators/tools/control-gen/control-gen.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/emulators/tools/control-gen/control-gen.cpp b/packages/emulators/tools/control-gen/control-gen.cpp index 62cfc1b1c0..3c06b15215 100644 --- a/packages/emulators/tools/control-gen/control-gen.cpp +++ b/packages/emulators/tools/control-gen/control-gen.cpp @@ -7,7 +7,9 @@ int main() { - SDL_Init(SDL_INIT_JOYSTICK); + + SDL_GameControllerAddMappingsFromFile("/storage/.config/SDL-GameControllerDB/gamecontrollerdb.txt"); + SDL_Init(SDL_INIT_JOYSTICK | SDL_INIT_GAMECONTROLLER); atexit(SDL_Quit); int num_joysticks = SDL_NumJoysticks(); @@ -18,13 +20,17 @@ int main() if (js) { SDL_JoystickGUID guid = SDL_JoystickGetGUID(js); + bool is_controller = SDL_IsGameController(i); + char guid_str[1024]; SDL_JoystickGetGUIDString(guid, guid_str, sizeof(guid_str)); - const char* name = SDL_JoystickName(js); - - printf("controlfolder=\"/storage/.config/gptokeyb\"\nESUDO=\"sudo\"\nESUDOKILL=\"-sudokill\"\nexport SDL_GAMECONTROLLERCONFIG_FILE=\"$controlfolder/gamecontrollerdb.txt\"\nSDLDBFILE=\"${SDL_GAMECONTROLLERCONFIG_FILE}\"\n[ -z \"${SDLDBFILE}\" ] && SDLDBFILE=\"${controlfolder}/gamecontrollerdb.txt\"\nSDLDBUSERFILE=\"/storage/.config/SDL-GameControllerDB/gamecontrollerdb.txt\"\nget_controls() {\nANALOGSTICKS=\"2\"\nDEVICE=\"%s\"\nparam_device=\"%s\"\n}\nGPTOKEYB=\"$controlfolder/gptokeyb $ESUDOKILL\"", - guid_str, name); + if (is_controller) + { + const char* name = SDL_JoystickName(js); + printf("controlfolder=\"/storage/.config/gptokeyb\"\nESUDO=\"sudo\"\nESUDOKILL=\"-sudokill\"\nexport SDL_GAMECONTROLLERCONFIG_FILE=\"$controlfolder/gamecontrollerdb.txt\"\nSDLDBFILE=\"${SDL_GAMECONTROLLERCONFIG_FILE}\"\n[ -z \"${SDLDBFILE}\" ] && SDLDBFILE=\"${controlfolder}/gamecontrollerdb.txt\"\nSDLDBUSERFILE=\"/storage/.config/SDL-GameControllerDB/gamecontrollerdb.txt\"\nget_controls() {\nANALOGSTICKS=\"2\"\nDEVICE=\"%s\"\nparam_device=\"%s\"\n}\nGPTOKEYB=\"$controlfolder/gptokeyb $ESUDOKILL\"", + guid_str, name); + } SDL_JoystickClose(js); } } From 598937ae365c2afdc8047711cb429149a1a8142a Mon Sep 17 00:00:00 2001 From: fewtarius Date: Thu, 8 Feb 2024 14:50:34 +0000 Subject: [PATCH 135/167] Fix vertical wii remote. --- .../config/AMD64/WiiControllerProfiles/vremote.ini | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/emulators/standalone/dolphin-sa/config/AMD64/WiiControllerProfiles/vremote.ini b/packages/emulators/standalone/dolphin-sa/config/AMD64/WiiControllerProfiles/vremote.ini index 2880a8a369..6f5adf896b 100644 --- a/packages/emulators/standalone/dolphin-sa/config/AMD64/WiiControllerProfiles/vremote.ini +++ b/packages/emulators/standalone/dolphin-sa/config/AMD64/WiiControllerProfiles/vremote.ini @@ -10,10 +10,10 @@ Buttons/Home = Button 8 Shake/X = Button 4 Shake/Y = Button 4 Shake/Z = Button 4 -D-Pad/Up = Axis 7- -D-Pad/Down = Axis 7+ -D-Pad/Left = Axis 6- -D-Pad/Right = Axis 6+ +D-Pad/Up = Axis 7+ +D-Pad/Down = Axis 7- +D-Pad/Left = Axis 6+ +D-Pad/Right = Axis 6- IR/Up = `Axis 4-` IR/Down = `Axis 4+` IR/Left = `Axis 3-` From d7bd2ebc82206cde8b368e17e38a711400a7811e Mon Sep 17 00:00:00 2001 From: sydarn Date: Thu, 8 Feb 2024 16:01:04 +0100 Subject: [PATCH 136/167] rk3566: Set function modifiers to select and start --- packages/hardware/quirks/platforms/RK3566/050-modifiers | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/hardware/quirks/platforms/RK3566/050-modifiers b/packages/hardware/quirks/platforms/RK3566/050-modifiers index 1fefd6e79a..0796f20fb4 100755 --- a/packages/hardware/quirks/platforms/RK3566/050-modifiers +++ b/packages/hardware/quirks/platforms/RK3566/050-modifiers @@ -6,5 +6,5 @@ cat </storage/.config/profile.d/050-modifiers DEVICE_KEY_VOLUMEDOWN=114 DEVICE_KEY_VOLUMEUP=115 DEVICE_FUNC_KEYA_MODIFIER="BTN_SELECT" -DEVICE_FUNC_KEYB_MODIFIER="BTN_MODE" +DEVICE_FUNC_KEYB_MODIFIER="BTN_START" EOF From 56cc433f6151c9fe3b0bc25048335eb25d5c2e4f Mon Sep 17 00:00:00 2001 From: Christophe Branchereau Date: Thu, 8 Feb 2024 16:03:36 +0100 Subject: [PATCH 137/167] usbgadget: reorder the write to gadget/UDC to avoid a condition where the script would try to bring usb0 up before it's created Signed-off-by: Christophe Branchereau --- packages/jelos/sources/scripts/usbgadget | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/jelos/sources/scripts/usbgadget b/packages/jelos/sources/scripts/usbgadget index 7dd5d22c09..9bd431f576 100755 --- a/packages/jelos/sources/scripts/usbgadget +++ b/packages/jelos/sources/scripts/usbgadget @@ -46,6 +46,7 @@ usb_start() { echo $VENDOR > gadget/strings/0x409/manufacturer echo $MACHINE > gadget/strings/0x409/product + if [ "${USB_MODE}" = mtp ] ; then echo 0x1d6b > gadget/idVendor echo 0x0100 > gadget/idProduct @@ -55,19 +56,20 @@ usb_start() { mount mtp -t functionfs /dev/ffs-umtp /usr/sbin/umtprd & sleep 1 + echo "${UDC_NAME}" > gadget/UDC elif [ "${USB_MODE}" = cdc ] ; then echo cdc > gadget/configs/c.1/strings/0x409/configuration echo 0x1d6b > gadget/idVendor echo 0x104 > gadget/idProduct ln -s gadget/functions/ecm.usb0 gadget/configs/c.1 + echo "${UDC_NAME}" > gadget/UDC ifconfig usb0 $IP up /usr/sbin/udhcpd -S /storage/.cache/usbgadget/udhcpd.conf else exit 0 fi - echo "${UDC_NAME}" > /sys/kernel/config/usb_gadget/gadget/UDC echo "USB_MODE=$(cat gadget/configs/c.1/strings/0x409/configuration)" > /storage/.cache/usbgadget/usbgadget.conf } From 47471cc4b4b0f7a9f978fb79c04e1f9e85c86555 Mon Sep 17 00:00:00 2001 From: adamg Date: Thu, 8 Feb 2024 19:54:13 +0000 Subject: [PATCH 138/167] RK3588: fix uart output and shell --- projects/Rockchip/devices/RK3588/options | 2 +- projects/Rockchip/packages/linux/package.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/Rockchip/devices/RK3588/options b/projects/Rockchip/devices/RK3588/options index 83e6145ae5..d079036579 100755 --- a/projects/Rockchip/devices/RK3588/options +++ b/projects/Rockchip/devices/RK3588/options @@ -74,7 +74,7 @@ WINDOWMANAGER="weston" # kernel serial console - EXTRA_CMDLINE="rootwait quiet loglevel=0 console=ttyUSB0,1500000 console=tty0 coherent_pool=2M ssh consoleblank=0 panic=20" + EXTRA_CMDLINE="rootwait quiet systemd.debug_shell=ttyFIQ0 earlycon=uart8250,mmio32,0xfeb50000 console=ttyFIQ0 console=tty0 coherent_pool=2M" # additional packages to install # ADDITIONAL_PACKAGES="" diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index 73e8b23122..acec5896e4 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -18,7 +18,7 @@ PKG_PATCH_DIRS+="${DEVICE}" case ${DEVICE} in RK358*) - PKG_VERSION="a7c264a8249f2058cf8ca624ee5034403412a2c1" + PKG_VERSION="eef98210c4984831d1706f884c95eec132c791e1" PKG_URL="${PKG_SITE}/rk358x-kernel.git" GET_HANDLER_SUPPORT="git" PKG_GIT_CLONE_BRANCH="main" From c79cff7994e3c643422e97772fb96f8dcba5020d Mon Sep 17 00:00:00 2001 From: brooksytech <1673861+brooksytech@users.noreply.github.com> Date: Thu, 8 Feb 2024 21:20:09 +0000 Subject: [PATCH 139/167] RK3326: Add device switch for R33S / R35S / R36S devices --- packages/apps/device-switch/package.mk | 19 + .../scripts/RK3326/device-switch | 24 + .../scripts/RK3326/device-switch.save | 20 + .../Game Console R33S/001-device_config | 1 + .../Game Console R36S/001-device_config | 15 + .../devices/Game Console R36S/002-disable-led | 15 + .../Game Console R36S/050-game-configs | 59 +++ packages/hardware/quirks/profile.d/999-export | 1 + packages/ui/emulationstation/package.mk | 2 +- projects/Rockchip/bootloader/update.sh | 10 + projects/Rockchip/devices/RK3326/options | 4 +- .../linux/patches/RK3326/000-rk3326-dts.patch | 486 +++++++++++++----- 12 files changed, 526 insertions(+), 130 deletions(-) create mode 100644 packages/apps/device-switch/package.mk create mode 100644 packages/apps/device-switch/scripts/RK3326/device-switch create mode 100644 packages/apps/device-switch/scripts/RK3326/device-switch.save create mode 100644 packages/hardware/quirks/devices/Game Console R36S/001-device_config create mode 100644 packages/hardware/quirks/devices/Game Console R36S/002-disable-led create mode 100644 packages/hardware/quirks/devices/Game Console R36S/050-game-configs diff --git a/packages/apps/device-switch/package.mk b/packages/apps/device-switch/package.mk new file mode 100644 index 0000000000..fd8bc3f21c --- /dev/null +++ b/packages/apps/device-switch/package.mk @@ -0,0 +1,19 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2024-present JELOS (https://github.com/JustEnoughLinuxOS) + +PKG_NAME="device-switch" +PKG_VERSION="" +PKG_ARCH="any" +PKG_LICENSE="mix" +PKG_DEPENDS_TARGET="toolchain" +PKG_SITE="" +PKG_URL="" +PKG_LONGDESC="Support script for switching device dtbs" +PKG_TOOLCHAIN="manual" + +makeinstall_target() { + + mkdir -p ${INSTALL}/usr/bin + cp ${PKG_DIR}/scripts/${DEVICE}/device-switch ${INSTALL}/usr/bin + chmod 0755 ${INSTALL}/usr/bin/* +} diff --git a/packages/apps/device-switch/scripts/RK3326/device-switch b/packages/apps/device-switch/scripts/RK3326/device-switch new file mode 100644 index 0000000000..969756ae05 --- /dev/null +++ b/packages/apps/device-switch/scripts/RK3326/device-switch @@ -0,0 +1,24 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2024-present JELOS (https://github.com/JustEnoughLinuxOS) + +. /etc/profile + +mount -o remount,rw /flash +case $1 in + R33S) + sed -i '/rk3326-gameconsole-r3/c\ load mmc 1:1 ${dtb_loadaddr} rk3326-gameconsole-r33s.dtb' /flash/boot.ini + rm -r /storage/remappings/* + ;; + R36S) + sed -i '/rk3326-gameconsole-r3/c\ load mmc 1:1 ${dtb_loadaddr} rk3326-gameconsole-r36s.dtb' /flash/boot.ini + rm -r /storage/remappings/* + ;; +esac + +cat </flash/device.name +$1 +EOF + +sync +reboot diff --git a/packages/apps/device-switch/scripts/RK3326/device-switch.save b/packages/apps/device-switch/scripts/RK3326/device-switch.save new file mode 100644 index 0000000000..afb5b818b1 --- /dev/null +++ b/packages/apps/device-switch/scripts/RK3326/device-switch.save @@ -0,0 +1,20 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) + +. /etc/profile + +mount -o remount,rw /flash +case $1 in + R33S) + sed -i "s#rk3566-rg353v-linux.dtb#rk3566-rg353p-linux.dtb#g" /flash/extlinux/extlinux.conf + ;; + R36S) + sed -i "s#rk3566-rg353p-linux.dtb#rk3566-rg353v-linux.dtb#g" /flash/extlinux/extlinux.conf + ;; +esac + +set_setting system.hostname ${1} + +sync +reboot diff --git a/packages/hardware/quirks/devices/Game Console R33S/001-device_config b/packages/hardware/quirks/devices/Game Console R33S/001-device_config index e326155a6a..4c9d00e3be 100644 --- a/packages/hardware/quirks/devices/Game Console R33S/001-device_config +++ b/packages/hardware/quirks/devices/Game Console R33S/001-device_config @@ -11,4 +11,5 @@ DEVICE_PLAYBACK_PATH_HP="SPK" DEVICE_BRIGHTNESS="128" DEVICE_PWR_LED_GPIO="77" DEVICE_TEMP_SENSOR="/sys/devices/virtual/thermal/thermal_zone0/temp" +DEVICE_DTB_SWITCH="true" EOF diff --git a/packages/hardware/quirks/devices/Game Console R36S/001-device_config b/packages/hardware/quirks/devices/Game Console R36S/001-device_config new file mode 100644 index 0000000000..4c9d00e3be --- /dev/null +++ b/packages/hardware/quirks/devices/Game Console R36S/001-device_config @@ -0,0 +1,15 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +cat </storage/.config/profile.d/001-device_config +# Device Features +DEVICE_VOLUMECTL="true" +DEVICE_POWER_LED="false" +DEVICE_PLAYBACK_PATH_SPK="HP" +DEVICE_PLAYBACK_PATH_HP="SPK" +DEVICE_BRIGHTNESS="128" +DEVICE_PWR_LED_GPIO="77" +DEVICE_TEMP_SENSOR="/sys/devices/virtual/thermal/thermal_zone0/temp" +DEVICE_DTB_SWITCH="true" +EOF diff --git a/packages/hardware/quirks/devices/Game Console R36S/002-disable-led b/packages/hardware/quirks/devices/Game Console R36S/002-disable-led new file mode 100644 index 0000000000..d917e34827 --- /dev/null +++ b/packages/hardware/quirks/devices/Game Console R36S/002-disable-led @@ -0,0 +1,15 @@ +#!/bin/bash + +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +. /etc/profile + +# Set export GPIO for Power LED +if [ ! -d "/sys/class/gpio/gpio${DEVICE_PWR_LED_GPIO}" ]; then + echo ${DEVICE_PWR_LED_GPIO} > /sys/class/gpio/export +fi + +#Disable blue led on R33S +echo out >/sys/class/gpio/gpio${DEVICE_PWR_LED_GPIO}/direction +echo 1 >/sys/class/gpio/gpio${DEVICE_PWR_LED_GPIO}/value diff --git a/packages/hardware/quirks/devices/Game Console R36S/050-game-configs b/packages/hardware/quirks/devices/Game Console R36S/050-game-configs new file mode 100644 index 0000000000..cd90a67759 --- /dev/null +++ b/packages/hardware/quirks/devices/Game Console R36S/050-game-configs @@ -0,0 +1,59 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) + +. /etc/profile + +#Set mupen64-plus-sa config for R36S, can use same profile as OGS +if [ ! -d "/storage/.config/mupen64plus" ]; then + mkdir -p "/storage/.config/mupen64plus/" + cp -r /usr/local/share/mupen64plus/mupen64plus.cfg* /storage/.config/mupen64plus/ +fi +if [ -f "/storage/.config/mupen64plus/mupen64plus.cfg.ogs" ]; then + rm /storage/.config/mupen64plus/mupen64plus.cfg + mv /storage/.config/mupen64plus/mupen64plus.cfg.ogs /storage/.config/mupen64plus/mupen64plus.cfg +fi + +#Set drastic-sa config for R36S (think it can use the same as RG20S) +if [ ! -d "/storage/.config/drastic" ]; then + mkdir -p "/storage/.config/drastic" + cp -r "/usr/config/drastic" "/storage/.config/" +fi +if [ -f "/storage/.config/drastic/config/drastic.cfg.rgb20s" ]; then + rm /storage/.config/drastic/config/drastic.cfg + mv /storage/.config/drastic/config/drastic.cfg.rgb20s /storage/.config/drastic/config/drastic.cfg +fi + +#Map ppsspp controls +if grep R36S -q "/storage/.config/ppsspp/PSP/SYSTEM/controls.ini" +then + exit 1 +else +cat </storage/.config/ppsspp/PSP/SYSTEM/controls.ini +#R36S +[ControlMapping] +Up = 10-19 +Down = 10-20 +Left = 10-21 +Right = 10-22 +Circle = 10-189 +Cross = 10-190 +Square = 10-188 +Triangle = 10-191 +Start = 10-197 +Select = 10-196 +L = 10-193 +R = 10-192 +An.Up = 10-4003 +An.Down = 10-4002 +An.Left = 10-4001 +An.Right = 10-4000 +Pause = 10-106 +Save State = 10-4010 +Load State = 10-4008 +RightAn.Up = 10-4007 +RightAn.Down = 10-4006 +RightAn.Left = 10-4005 +RightAn.Right = 10-4004 +EOF +fi diff --git a/packages/hardware/quirks/profile.d/999-export b/packages/hardware/quirks/profile.d/999-export index 816e5bafea..326dd49ee9 100755 --- a/packages/hardware/quirks/profile.d/999-export +++ b/packages/hardware/quirks/profile.d/999-export @@ -14,6 +14,7 @@ export SLOW_CORES \ DEVICE_BASE_TDP \ DEVICE_BRIGHTNESS \ DEVICE_BATTERY_LED_STATUS \ + DEVICE_DTB_SWITCH \ DEVICE_FAKE_JACKSENSE \ DEVICE_FUNC_KEYA_MODIFIER \ DEVICE_FUNC_KEYB_MODIFIER \ diff --git a/packages/ui/emulationstation/package.mk b/packages/ui/emulationstation/package.mk index 05b96747e0..aca61fbe34 100644 --- a/packages/ui/emulationstation/package.mk +++ b/packages/ui/emulationstation/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="emulationstation" -PKG_VERSION="b298647ee7988cf2a34fedd4442f357f63c66597" +PKG_VERSION="b862694815ebe713f1f4da6f7002f06471fadab7" PKG_GIT_CLONE_BRANCH="main" PKG_REV="1" PKG_ARCH="any" diff --git a/projects/Rockchip/bootloader/update.sh b/projects/Rockchip/bootloader/update.sh index 4a6b7a65e6..de2f71c2a4 100755 --- a/projects/Rockchip/bootloader/update.sh +++ b/projects/Rockchip/bootloader/update.sh @@ -83,6 +83,16 @@ if [ -f $SYSTEM_ROOT/usr/share/bootloader/boot.ini ]; then sed -e "s/@UUID_SYSTEM@/${UUID_SYSTEM}/" \ -e "s/@UUID_STORAGE@/${UUID_STORAGE}/" \ -i $BOOT_ROOT/boot.ini + + # Set correct R3xS dtb in boot.ini + DTB_NAME=$(cat $BOOT_ROOT/device.name) + if [ $DTB_NAME = 'R33S' ]; then + echo "Setting R33S dtb in boot.ini..." + sed -i '/rk3326-gameconsole-r3/c\ load mmc 1:1 ${dtb_loadaddr} rk3326-gameconsole-r33s.dtb' $BOOT_ROOT/boot.ini + elif [ $DTB_NAME = 'R36S' ]; then + echo "Setting R36S/R35S dtb in boot.ini..." + sed -i '/rk3326-gameconsole-r3/c\ load mmc 1:1 ${dtb_loadaddr} rk3326-gameconsole-r36s.dtb' $BOOT_ROOT/boot.ini + fi fi # update device tree diff --git a/projects/Rockchip/devices/RK3326/options b/projects/Rockchip/devices/RK3326/options index b623db4d3c..239d93d869 100644 --- a/projects/Rockchip/devices/RK3326/options +++ b/projects/Rockchip/devices/RK3326/options @@ -31,7 +31,7 @@ BOOTLOADER="u-boot" TRUST_LABEL="trust" PARTITION_TABLE="msdos" - DEVICE_DTB=("rk3326-anbernic-rg351m" "rk3326-anbernic-rg351v" "rk3326-gameconsole-r33s" "rk3326-odroid-go2" "rk3326-odroid-go2-v11" "rk3326-odroid-go3" "rk3326-powkiddy-rgb10" "rk3326-powkiddy-rgb20s" "rk3326-magicx-xu10") + DEVICE_DTB=("rk3326-anbernic-rg351m" "rk3326-anbernic-rg351v" "rk3326-gameconsole-r33s" "rk3326-gameconsole-r36s" "rk3326-odroid-go2" "rk3326-odroid-go2-v11" "rk3326-odroid-go3" "rk3326-powkiddy-rgb10" "rk3326-powkiddy-rgb20s" "rk3326-magicx-xu10") UBOOT_DTB="${DEVICE_DTB[0]}" UBOOT_CONFIG="odroidgoa_defconfig" PKG_SOC="px30" @@ -73,7 +73,7 @@ EXTRA_CMDLINE="quiet rootwait console=ttyFIQ0 console=tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20" # additional packages to install - ADDITIONAL_PACKAGES="" + ADDITIONAL_PACKAGES="device-switch" # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) # Space separated list is supported, diff --git a/projects/Rockchip/packages/linux/patches/RK3326/000-rk3326-dts.patch b/projects/Rockchip/packages/linux/patches/RK3326/000-rk3326-dts.patch index 516f3fd13e..07eae5c474 100644 --- a/projects/Rockchip/packages/linux/patches/RK3326/000-rk3326-dts.patch +++ b/projects/Rockchip/packages/linux/patches/RK3326/000-rk3326-dts.patch @@ -1,12 +1,13 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/Makefile linux/arch/arm64/boot/dts/rockchip/Makefile ---- linux.orig/arch/arm64/boot/dts/rockchip/Makefile 2024-01-29 05:07:30.179290843 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/Makefile 2024-01-29 06:17:10.562382315 +0000 -@@ -9,9 +9,14 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-ro +--- linux.orig/arch/arm64/boot/dts/rockchip/Makefile 2024-02-03 14:24:30.507369024 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/Makefile 2024-02-03 14:49:01.857898202 +0000 +@@ -9,9 +9,15 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-ro dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-rock-pi-s.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3318-a95x-z2.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-anbernic-rg351m.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-anbernic-rg351v.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-gameconsole-r33s.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-gameconsole-r36s.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-magicx-xu10.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2-v11.dtb @@ -17,8 +18,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/Makefile linux/arch/arm64/boo dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-evb.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-nanopi-r2c.dtb diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi linux/arch/arm64/boot/dts/rockchip/px30.dtsi ---- linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi 2024-01-29 05:07:30.179290843 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/px30.dtsi 2024-01-29 05:08:22.844542450 +0000 +--- linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi 2024-02-03 14:24:30.507369024 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/px30.dtsi 2024-02-03 14:25:41.221185291 +0000 @@ -114,32 +114,22 @@ compatible = "operating-points-v2"; opp-shared; @@ -117,8 +118,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi linux/arch/arm64/bo }; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts ---- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts 2024-01-29 05:07:30.179290843 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts 2024-01-29 05:08:22.844542450 +0000 +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts 2024-02-03 14:24:30.507369024 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts 2024-02-03 14:25:41.221185291 +0000 @@ -12,6 +12,25 @@ model = "Anbernic RG351M"; compatible = "anbernic,rg351m", "rockchip,rk3326"; @@ -171,7 +172,7 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts li +}; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts --- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts 1970-01-01 00:00:00.000000000 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts 2024-01-29 05:08:22.844542450 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts 2024-02-03 14:25:41.221185291 +0000 @@ -0,0 +1,124 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* @@ -299,93 +300,19 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts li +}; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r33s.dts linux/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r33s.dts --- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r33s.dts 1970-01-01 00:00:00.000000000 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r33s.dts 2024-01-29 05:08:22.844542450 +0000 -@@ -0,0 +1,646 @@ ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r33s.dts 2024-02-03 14:53:29.435899433 +0000 +@@ -0,0 +1,117 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* -+ * Copyright (c) 2019 Hardkernel Co., Ltd -+ * Copyright (c) 2020 Theobroma Systems Design und Consulting GmbH -+ * Copyright (c) 2022 Maya Matuszczyk ++ * # Copyright (C) 2024-present JELOS (https://github.com/JustEnoughLinuxOS) + */ + +/dts-v1/; -+#include -+#include -+#include -+#include -+#include "rk3326.dtsi" ++#include "rk3326-gameconsole-r3xs.dtsi" + +/ { + model = "Game Console R33S"; -+ compatible = "gameconsolec,r33s", "rockchip,rk3326"; -+ -+ aliases { -+ mmc0 = &sdio; -+ mmc1 = &sdmmc; -+ }; -+ -+ chosen { -+ stdout-path = "serial2:115200n8"; -+ }; -+ -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ power-supply = <&vcc_bl>; -+ pwms = <&pwm1 0 25000 0>; -+ brightness-levels = < -+ 0 1 2 3 4 5 6 7 -+ 8 9 10 11 12 13 14 15 -+ 16 17 18 19 20 21 22 23 -+ 24 25 26 27 28 29 30 31 -+ 32 33 34 35 36 37 38 39 -+ 40 41 42 43 44 45 46 47 -+ 48 49 50 51 52 53 54 55 -+ 56 57 58 59 60 61 62 63 -+ 64 65 66 67 68 69 70 71 -+ 72 73 74 75 76 77 78 79 -+ 80 81 82 83 84 85 86 87 -+ 88 89 90 91 92 93 94 95 -+ 96 97 98 99 100 101 102 103 -+ 104 105 106 107 108 109 110 111 -+ 112 113 114 115 116 117 118 119 -+ 120 121 122 123 124 125 126 127 -+ 128 129 130 131 132 133 134 135 -+ 136 137 138 139 140 141 142 143 -+ 144 145 146 147 148 149 150 151 -+ 152 153 154 155 156 157 158 159 -+ 160 161 162 163 164 165 166 167 -+ 168 169 170 171 172 173 174 175 -+ 176 177 178 179 180 181 182 183 -+ 184 185 186 187 188 189 190 191 -+ 192 193 194 195 196 197 198 199 -+ 200 201 202 203 204 205 206 207 -+ 208 209 210 211 212 213 214 215 -+ 216 217 218 219 220 221 222 223 -+ 224 225 226 227 228 229 230 231 -+ 232 233 234 235 236 237 238 239 -+ 240 241 242 243 244 245 246 247 -+ 248 249 250 251 252 253 254 255>; -+ default-brightness-level = <128>; -+ }; -+ -+ gpio-keys-vol { -+ compatible = "gpio-keys"; -+ autorepeat; -+ pinctrl-0 = <&btn_pins_vol>; -+ pinctrl-names = "default"; -+ -+ button-vol-down { -+ gpios = <&gpio2 RK_PA1 GPIO_ACTIVE_LOW>; -+ label = "VOLUMEDOWN"; -+ linux,code = ; -+ }; -+ -+ button-volume-up { -+ gpios = <&gpio2 RK_PA0 GPIO_ACTIVE_LOW>; -+ label = "VOLUMEUP"; -+ linux,code = ; -+ }; -+ }; ++ compatible = "gameconsole,r33s", "rockchip,rk3326"; + + builtin_gamepad: r33s_joypad { + compatible = "gpio-keys"; @@ -464,6 +391,333 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r33s.dts l + }; + }; + ++ vibrator { ++ compatible = "pwm-vibrator"; ++ pwms = <&pwm0 0 1000000 0>; ++ pwm-names = "enable"; ++ }; ++}; ++ ++&pinctrl { ++ btns { ++ btn_pins: btn-pins { ++ rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ ++ }; ++}; +diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r36s.dts linux/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r36s.dts +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r36s.dts 1970-01-01 00:00:00.000000000 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r36s.dts 2024-02-03 14:56:33.563329307 +0000 +@@ -0,0 +1,207 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * # Copyright (C) 2024-present JELOS (https://github.com/JustEnoughLinuxOS) ++ */ ++ ++/dts-v1/; ++#include "rk3326-gameconsole-r3xs.dtsi" ++ ++/ { ++ model = "Game Console R36S"; ++ compatible = "gameconsole,r35s", "gameconsole,r36s", "rockchip,rk3326"; ++ ++ joypad: odroidgo3-joypad { ++ compatible = "odroidgo3-joypad"; ++ pwms = <&pwm0 0 200000000 0>; ++ pwm-names = "enable"; ++ rumble-boost-weak = <0x0000>; ++ rumble-boost-strong = <0x0000>; ++ ++ joypad-name = "r36s_Gamepad"; ++ joypad-product = <0x1188>; ++ joypad-revision = <0x0188>; ++ ++ status = "okay"; ++ ++ /* gpio pincontrol setup */ ++ pinctrl-names = "default"; ++ pinctrl-0 = <&btn_pins>; ++ pinctrl-1 = <&pwm0_pin>; ++ ++ /* Analog mux define */ ++ io-channel-names = "amux_adc"; ++ io-channels = <&saradc 1>; ++ ++ /* adc mux channel count */ ++ amux-count = <4>; ++ /* adc mux select(a,b) gpio */ ++ amux-a-gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>; ++ amux-b-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>; ++ /* adc mux enable gpio */ ++ amux-en-gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_LOW>; ++ ++ /* adc calculate scale */ ++ button-adc-scale = <2>; ++ ++ /* adc deadzone range */ ++ button-adc-deadzone = <64>; ++ ++ /* ++ specifies fuzz value that is used to filter noise from ++ the event stream. ++ */ ++ button-adc-fuzz = <32>; ++ button-adc-flat = <32>; ++ ++ /* ++ Analog Stick data tuning value(precent) ++ p = positive direction, n = negative direction ++ report value = (real_adc_data * tuning_value) / 100 ++ */ ++ abs_x-p-tuning = <200>; ++ abs_x-n-tuning = <200>; ++ ++ abs_y-p-tuning = <200>; ++ abs_y-n-tuning = <200>; ++ ++ abs_rx-p-tuning = <200>; ++ abs_rx-n-tuning = <200>; ++ ++ abs_ry-p-tuning = <200>; ++ abs_ry-n-tuning = <200>; ++ ++ /* poll device interval (ms), adc read interval */ ++ poll-interval = <10>; ++ ++ /* required for RG36S */ ++ invert-absx; ++ invert-absy; ++ ++ /* gpio button auto repeat set value : default disable */ ++ /* ++ autorepeat; ++ */ ++ ++ /* ++ joypad driver is poll-device driver. ++ poll-device is does not support wakeup-source. ++ */ ++ sw1 { ++ gpios = <&gpio1 RK_PB4 GPIO_ACTIVE_LOW>; ++ label = "GPIO DPAD-UP"; ++ linux,code = ; // 0x220 ++ }; ++ sw2 { ++ gpios = <&gpio1 RK_PB5 GPIO_ACTIVE_LOW>; ++ label = "GPIO DPAD-DOWN"; ++ linux,code = ; // 0x221 ++ }; ++ sw3 { ++ gpios = <&gpio1 RK_PB6 GPIO_ACTIVE_LOW>; ++ label = "GPIO DPAD-LEFT"; ++ linux,code = ; // 0x222 ++ }; ++ sw4 { ++ gpios = <&gpio1 RK_PB7 GPIO_ACTIVE_LOW>; ++ label = "GPIO DPAD-RIGHT"; ++ linux,code = ; // 0x223 ++ }; ++ sw5 { ++ gpios = <&gpio1 RK_PA2 GPIO_ACTIVE_LOW>; ++ label = "GPIO KEY BTN-A"; ++ linux,code = ; // 0x131 ++ }; ++ sw6 { ++ gpios = <&gpio1 RK_PA5 GPIO_ACTIVE_LOW>; ++ label = "GPIO BTN-B"; ++ linux,code = ; // 0x130 ++ }; ++ sw7 { ++ gpios = <&gpio1 RK_PA6 GPIO_ACTIVE_LOW>; ++ label = "GPIO BTN-Y"; ++ linux,code = ; // 0x134 ++ }; ++ sw8 { ++ gpios = <&gpio1 RK_PA7 GPIO_ACTIVE_LOW>; ++ label = "GPIO BTN-X"; ++ linux,code = ; // 0x133 ++ }; ++ sw11 { ++ gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_LOW>; ++ label = "GPIO F3"; ++ linux,code = ; // 0x2c2 ++ }; ++ sw12 { ++ gpios = <&gpio2 RK_PA3 GPIO_ACTIVE_LOW>; ++ label = "GPIO F4"; ++ linux,code = ; // 0x2c3 ++ }; ++ /*sw13 { ++ gpios = <&gpio2 RK_PA4 GPIO_ACTIVE_LOW>; ++ label = "GPIO F5"; ++ linux,code = ; // 0x2c4 ++ }; ++ sw14 { ++ gpios = <&gpio2 RK_PA5 GPIO_ACTIVE_LOW>; ++ label = "GPIO F6"; ++ linux,code = ; // 0x13c ++ };*/ ++ sw15 { ++ gpios = <&gpio2 RK_PA6 GPIO_ACTIVE_LOW>; ++ label = "GPIO TOP-LEFT"; ++ linux,code = ; // 0x02 ++ }; ++ sw16 { ++ gpios = <&gpio2 RK_PA7 GPIO_ACTIVE_LOW>; ++ label = "GPIO TOP-RIGHT"; ++ linux,code = ; // 0x05 ++ }; ++ sw19 { ++ gpios = <&gpio3 RK_PB1 GPIO_ACTIVE_LOW>; ++ label = "GPIO F1"; ++ linux,code = ; ++ }; ++ sw20 { ++ gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>; ++ label = "GPIO TOP-RIGHT2"; ++ linux,code = ; ++ }; ++ sw21 { ++ gpios = <&gpio3 RK_PB2 GPIO_ACTIVE_LOW>; ++ label = "GPIO TOP-LEFT2"; ++ linux,code = ; ++ }; ++ sw22 { ++ gpios = <&gpio3 RK_PB4 GPIO_ACTIVE_LOW>; ++ label = "GPIO F2"; ++ linux,code = ; ++ }; ++ }; ++}; ++ ++&pinctrl { ++ btns { ++ btn_pins: btn-pins { ++ rockchip,pins = <1 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>; ++ ++ }; ++ ++ }; ++}; +diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r3xs.dtsi linux/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r3xs.dtsi +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r3xs.dtsi 1970-01-01 00:00:00.000000000 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r3xs.dtsi 2024-02-03 14:46:31.754519839 +0000 +@@ -0,0 +1,545 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * # Copyright (C) 2024-present JELOS (https://github.com/JustEnoughLinuxOS) ++ */ ++ ++/dts-v1/; ++#include ++#include ++#include ++#include ++#include "rk3326.dtsi" ++ ++/ { ++ model = "Game Console R33S"; ++ compatible = "gameconsolec,r33s", "rockchip,rk3326"; ++ ++ aliases { ++ mmc0 = &sdio; ++ mmc1 = &sdmmc; ++ }; ++ ++ chosen { ++ stdout-path = "serial2:115200n8"; ++ }; ++ ++ backlight: backlight { ++ compatible = "pwm-backlight"; ++ power-supply = <&vcc_bl>; ++ pwms = <&pwm1 0 25000 0>; ++ brightness-levels = < ++ 0 1 2 3 4 5 6 7 ++ 8 9 10 11 12 13 14 15 ++ 16 17 18 19 20 21 22 23 ++ 24 25 26 27 28 29 30 31 ++ 32 33 34 35 36 37 38 39 ++ 40 41 42 43 44 45 46 47 ++ 48 49 50 51 52 53 54 55 ++ 56 57 58 59 60 61 62 63 ++ 64 65 66 67 68 69 70 71 ++ 72 73 74 75 76 77 78 79 ++ 80 81 82 83 84 85 86 87 ++ 88 89 90 91 92 93 94 95 ++ 96 97 98 99 100 101 102 103 ++ 104 105 106 107 108 109 110 111 ++ 112 113 114 115 116 117 118 119 ++ 120 121 122 123 124 125 126 127 ++ 128 129 130 131 132 133 134 135 ++ 136 137 138 139 140 141 142 143 ++ 144 145 146 147 148 149 150 151 ++ 152 153 154 155 156 157 158 159 ++ 160 161 162 163 164 165 166 167 ++ 168 169 170 171 172 173 174 175 ++ 176 177 178 179 180 181 182 183 ++ 184 185 186 187 188 189 190 191 ++ 192 193 194 195 196 197 198 199 ++ 200 201 202 203 204 205 206 207 ++ 208 209 210 211 212 213 214 215 ++ 216 217 218 219 220 221 222 223 ++ 224 225 226 227 228 229 230 231 ++ 232 233 234 235 236 237 238 239 ++ 240 241 242 243 244 245 246 247 ++ 248 249 250 251 252 253 254 255>; ++ default-brightness-level = <128>; ++ }; ++ ++ gpio-keys-vol { ++ compatible = "gpio-keys"; ++ autorepeat; ++ pinctrl-0 = <&btn_pins_vol>; ++ pinctrl-names = "default"; ++ ++ button-vol-down { ++ gpios = <&gpio2 RK_PA1 GPIO_ACTIVE_LOW>; ++ label = "VOLUMEDOWN"; ++ linux,code = ; ++ }; ++ ++ button-volume-up { ++ gpios = <&gpio2 RK_PA0 GPIO_ACTIVE_LOW>; ++ label = "VOLUMEUP"; ++ linux,code = ; ++ }; ++ }; ++ + battery: battery { + compatible = "simple-battery"; + charge-full-design-microamp-hours = <3200000>; @@ -482,12 +736,6 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r33s.dts l + <3649470 20>, <3635260 15>, <3616920 10>, <3592440 5>, + <3574170 0>; + -+ }; -+ -+ vibrator { -+ compatible = "pwm-vibrator"; -+ pwms = <&pwm0 0 1000000 0>; -+ pwm-names = "enable"; + }; + + rk817-sound { @@ -896,29 +1144,13 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r33s.dts l +}; + +&pinctrl { -+ btns { -+ btn_pins: btn-pins { -+ rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>, -+ <1 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>, -+ <1 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, -+ <1 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, -+ <1 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>, -+ <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>, -+ <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>, -+ <1 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>, -+ <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, -+ <2 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ btn_pins_vol: btn-pins-vol { -+ rockchip,pins = <2 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>, -+ <2 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>; ++ btns { ++ btn_pins_vol: btn-pins-vol { ++ rockchip,pins = <2 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; + }; -+ }; -+ ++ + headphone { + hp_det: hp-det { + rockchip,pins = <2 RK_PC6 RK_FUNC_GPIO &pcfg_pull_down>; @@ -948,8 +1180,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r33s.dts l + }; +}; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts linux/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts ---- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts 1969-12-31 19:00:00.000000000 -0500 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts 2024-02-01 21:39:27.594961980 -0500 +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts 1970-01-01 00:00:00.000000000 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts 2024-02-03 14:25:41.221185291 +0000 @@ -0,0 +1,828 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* @@ -1780,8 +2012,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts linux/ + }; +}; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi ---- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi 2024-01-29 05:07:30.179290843 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi 2024-01-29 05:08:22.844542450 +0000 +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi 2024-02-03 14:24:30.507369024 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi 2024-02-03 14:25:41.221185291 +0000 @@ -25,93 +25,40 @@ compatible = "pwm-backlight"; power-supply = <&vcc_bl>; @@ -1938,8 +2170,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi linux/a #clock-cells = <1>; #sound-dai-cells = <0>; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts ---- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts 2024-01-29 05:07:30.179290843 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts 2024-01-29 05:08:22.844542450 +0000 +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts 2024-02-03 14:24:30.507369024 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts 2024-02-03 14:25:41.221185291 +0000 @@ -16,31 +16,187 @@ mmc1 = &sdio; }; @@ -2221,8 +2453,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts lin <2 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>, <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts ---- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts 2024-01-29 05:07:30.179290843 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts 2024-01-29 05:08:22.844542450 +0000 +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts 2024-02-03 14:24:30.507369024 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts 2024-02-03 14:25:41.221185291 +0000 @@ -12,30 +12,175 @@ model = "ODROID-GO Advance"; compatible = "hardkernel,rk3326-odroid-go2", "rockchip,rk3326"; @@ -2455,8 +2687,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts linux/a + }; +}; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts ---- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts 2024-01-29 05:07:30.179290843 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts 2024-01-29 05:08:22.844542450 +0000 +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts 2024-02-03 14:24:30.507369024 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts 2024-02-03 14:25:41.221185291 +0000 @@ -12,67 +12,196 @@ model = "ODROID-GO Super"; compatible = "hardkernel,rk3326-odroid-go3", "rockchip,rk3326"; @@ -2766,7 +2998,7 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts linux/a }; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts linux/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts --- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts 1970-01-01 00:00:00.000000000 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts 2024-01-29 05:08:22.844542450 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts 2024-02-03 14:25:41.221185291 +0000 @@ -0,0 +1,280 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* @@ -3050,7 +3282,7 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts lin +}; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb20s.dts linux/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb20s.dts --- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb20s.dts 1970-01-01 00:00:00.000000000 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb20s.dts 2024-01-29 20:21:55.821942737 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb20s.dts 2024-02-03 14:25:41.221185291 +0000 @@ -0,0 +1,340 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* From 143948d6b512d6801e7b0f58001d2c16fc2559b3 Mon Sep 17 00:00:00 2001 From: brooksytech <1673861+brooksytech@users.noreply.github.com> Date: Thu, 8 Feb 2024 21:57:46 +0000 Subject: [PATCH 140/167] Clean up device switch location in system settings. --- packages/ui/emulationstation/package.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ui/emulationstation/package.mk b/packages/ui/emulationstation/package.mk index aca61fbe34..0e5b4fa9b3 100644 --- a/packages/ui/emulationstation/package.mk +++ b/packages/ui/emulationstation/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="emulationstation" -PKG_VERSION="b862694815ebe713f1f4da6f7002f06471fadab7" +PKG_VERSION="c9934ae9c20c1c44fd1c8279234b7368bdea1bb0" PKG_GIT_CLONE_BRANCH="main" PKG_REV="1" PKG_ARCH="any" From 66bb1e3d3625cb963e31fc23906b8ec0a9a7cab7 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Thu, 8 Feb 2024 23:14:25 +0000 Subject: [PATCH 141/167] Disable 2S fan in sleep mode, and put the device into power saving mode since sleep is really freeze. After 8 minutes the core temp remained at 35c tested immediately after wake. Longer testing needed. --- .../AYANEO AYANEO 2S/sleep.d/post/001-fan | 7 ++++++ .../AYANEO AYANEO 2S/sleep.d/post/002-freq | 22 +++++++++++++++++++ .../AYANEO AYANEO 2S/sleep.d/pre/001-fan | 8 +++++++ .../AYANEO AYANEO 2S/sleep.d/pre/002-freq | 17 ++++++++++++++ 4 files changed, 54 insertions(+) create mode 100644 packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/post/001-fan create mode 100644 packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/post/002-freq create mode 100644 packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/pre/001-fan create mode 100644 packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/pre/002-freq diff --git a/packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/post/001-fan b/packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/post/001-fan new file mode 100644 index 0000000000..84c1f62856 --- /dev/null +++ b/packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/post/001-fan @@ -0,0 +1,7 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +. /etc/profile + +systemctl restart fancontrol diff --git a/packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/post/002-freq b/packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/post/002-freq new file mode 100644 index 0000000000..b8527a4172 --- /dev/null +++ b/packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/post/002-freq @@ -0,0 +1,22 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +### Restore previous governors before going to sleep + +. /etc/profile + +### Grab the old governors. +OLD_CPU_FREQ=$(get_setting "sleep.cpugovernor") +if [ ! -n "${OLD_CPU_FREQ}" ]; then + OLD_CPU_FREQ="schedutil" +fi + +OLD_GPU_LEVEL=$(get_setting "sleep.gpulevel") +if [ ! -n "${OLD_GPU_LEVEL}" ]; then + OLD_GPU_LEVEL="balanced" +fi + +# Restore old governors. +set_cpu_gov "${OLD_CPU_FREQ}" +gpu_performance_level "${OLD_GPU_LEVEL}" diff --git a/packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/pre/001-fan b/packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/pre/001-fan new file mode 100644 index 0000000000..df3ee2647b --- /dev/null +++ b/packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/pre/001-fan @@ -0,0 +1,8 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +. /etc/profile + +echo 1 >${DEVICE_PWM_FAN} +echo 0 >${DEVICE_FAN_INPUT} diff --git a/packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/pre/002-freq b/packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/pre/002-freq new file mode 100644 index 0000000000..44f3f67bd0 --- /dev/null +++ b/packages/hardware/quirks/devices/AYANEO AYANEO 2S/sleep.d/pre/002-freq @@ -0,0 +1,17 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +# Store current freq governors and set governors to powersave. + +. /etc/profile + +### Get the current cpu and gpu governor, save for when the device wakes from sleep. +CUR_CPU_FREQ="$(cat ${CPU_FREQ}/scaling_governor)" +CUR_GPU_LEVEL="$(get_gpu_performance_level)" +set_setting sleep.cpugovernor "${CUR_CPU_FREQ}" +set_setting sleep.gpulevel "${CUR_GPU_LEVEL}" + +### Set all governors to powersave +set_cpu_gov powersave +gpu_performance_level low From 8d93875221f04e015f9fb5d5fb42173453bc313c Mon Sep 17 00:00:00 2001 From: brooksytech <1673861+brooksytech@users.noreply.github.com> Date: Fri, 9 Feb 2024 15:45:38 +0000 Subject: [PATCH 142/167] Set default scaling governors fork RK3588 --- .../quirks/platforms/RK3399/060-game_settings | 2 +- .../quirks/platforms/RK3588/060-game_settings | 35 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 packages/hardware/quirks/platforms/RK3588/060-game_settings diff --git a/packages/hardware/quirks/platforms/RK3399/060-game_settings b/packages/hardware/quirks/platforms/RK3399/060-game_settings index fa5cd7d07b..f718e077d4 100755 --- a/packages/hardware/quirks/platforms/RK3399/060-game_settings +++ b/packages/hardware/quirks/platforms/RK3399/060-game_settings @@ -5,7 +5,7 @@ . /etc/profile.d/001-functions ### Set the default performance scaling mode for a few systems. -for SYSTEM in dreamcast n64 ports psp psx saturn pcfx cdi +for SYSTEM in dreamcast n64 ports psp psx saturn pcfx cdi ps2 gamecube do CPU_SETTING=$(get_setting ${SYSTEM}.cpugovernor) if [ -z "${CPU_SETTING}" ] diff --git a/packages/hardware/quirks/platforms/RK3588/060-game_settings b/packages/hardware/quirks/platforms/RK3588/060-game_settings new file mode 100644 index 0000000000..4d0f5b34ac --- /dev/null +++ b/packages/hardware/quirks/platforms/RK3588/060-game_settings @@ -0,0 +1,35 @@ + +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +. /etc/profile.d/001-functions + +### Set the default performance scaling mode for a few systems. +for SYSTEM in dreamcast n64 ports psp saturn ps2 gamecube +do + CPU_SETTING=$(get_setting ${SYSTEM}.cpugovernor) + if [ -z "${CPU_SETTING}" ] + then + set_setting ${SYSTEM}.cpugovernor performance + fi + GPU_SETTING=$(get_setting ${SYSTEM}.gpuperf) + if [ -z "${GPU_SETTING}" ] + then + set_setting ${SYSTEM}.gpuperf profile_peak + fi +done + +for SYSTEM in gb gbc gba snes nes sms gamegear genesis mastersystem sega32x megadrive segacd megacd +do + CPU_SETTING=$(get_setting ${SYSTEM}.cpugovernor) + if [ -z ${CPU_SETTING} ] + then + set_setting ${SYSTEM}.cpugovernor powersave + fi + GPU_SETTING=$(get_setting ${SYSTEM}.gpuperf) + if [ -z ${GPU_SETTING} ] + then + set_setting ${SYSTEM}.gpuperf low + fi +done From fef267c9aa1f8f5908336410b469f35d2e3cf6c6 Mon Sep 17 00:00:00 2001 From: adamg Date: Fri, 9 Feb 2024 08:53:28 +0000 Subject: [PATCH 143/167] Amlogic: sync Kconfig to latest version --- .../devices/S922X/linux/linux.aarch64.conf | 97 ++++++++++++++----- 1 file changed, 72 insertions(+), 25 deletions(-) diff --git a/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf b/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf index 0720aa2295..dd3b96cc81 100644 --- a/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf +++ b/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm64 6.6.15 Kernel Configuration +# Linux/arm64 6.7.4 Kernel Configuration # CONFIG_CC_VERSION_TEXT="aarch64-libreelec-linux-gnueabi-gcc-12.3.1 (GCC) 12.3.1 20240103" CONFIG_CC_IS_GCC=y @@ -321,6 +321,7 @@ CONFIG_ARCH_MESON=y # CONFIG_ARCH_NXP is not set # CONFIG_ARCH_MA35 is not set # CONFIG_ARCH_NPCM is not set +# CONFIG_ARCH_PENSANDO is not set # CONFIG_ARCH_QCOM is not set # CONFIG_ARCH_REALTEK is not set # CONFIG_ARCH_RENESAS is not set @@ -870,6 +871,7 @@ CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1 CONFIG_MIGRATION=y CONFIG_ARCH_ENABLE_THP_MIGRATION=y CONFIG_CONTIG_ALLOC=y +CONFIG_PCP_BATCH_SCALE_MAX=5 CONFIG_PHYS_ADDR_T_64BIT=y # CONFIG_KSM is not set CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 @@ -995,6 +997,7 @@ CONFIG_TCP_CONG_CDG=m CONFIG_DEFAULT_CUBIC=y # CONFIG_DEFAULT_RENO is not set CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_AO is not set # CONFIG_TCP_MD5SIG is not set CONFIG_IPV6=y # CONFIG_IPV6_ROUTER_PREF is not set @@ -1405,7 +1408,6 @@ CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" CONFIG_MAC80211_MESH=y CONFIG_MAC80211_LEDS=y -# CONFIG_MAC80211_DEBUGFS is not set # CONFIG_MAC80211_MESSAGE_TRACING is not set # CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 @@ -1558,7 +1560,6 @@ CONFIG_GENERIC_ARCH_TOPOLOGY=y # # Bus devices # -# CONFIG_BRCMSTB_GISB_ARB is not set # CONFIG_MOXTET is not set # CONFIG_VEXPRESS_CONFIG is not set # CONFIG_MHI_BUS is not set @@ -1591,6 +1592,12 @@ CONFIG_ARM_SCPI_POWER_DOMAIN=y CONFIG_MESON_SM=y CONFIG_ARM_PSCI_FW=y # CONFIG_ARM_PSCI_CHECKER is not set + +# +# Qualcomm firmware drivers +# +# end of Qualcomm firmware drivers + CONFIG_HAVE_ARM_SMCCC=y CONFIG_HAVE_ARM_SMCCC_DISCOVERY=y CONFIG_ARM_SMCCC_SOC_ID=y @@ -1608,7 +1615,6 @@ CONFIG_MTD=y # # Partition parsers # -# CONFIG_MTD_AR7_PARTS is not set # CONFIG_MTD_CMDLINE_PARTS is not set CONFIG_MTD_OF_PARTS=y # CONFIG_MTD_AFS_PARTS is not set @@ -1777,7 +1783,6 @@ CONFIG_BLK_DEV_RAM_SIZE=4096 # # 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=m # CONFIG_EEPROM_93XX46 is not set @@ -2032,6 +2037,7 @@ CONFIG_TUN=y # CONFIG_TUN_VNET_CROSS_LE is not set CONFIG_VETH=m # CONFIG_NLMON is not set +# CONFIG_NETKIT is not set # CONFIG_ARCNET is not set CONFIG_ETHERNET=y # CONFIG_NET_VENDOR_3COM is not set @@ -2293,7 +2299,6 @@ CONFIG_ATH9K_BTCOEX_SUPPORT=y CONFIG_ATH9K=m # CONFIG_ATH9K_PCI is not set # CONFIG_ATH9K_AHB is not set -# CONFIG_ATH9K_DEBUGFS is not set # CONFIG_ATH9K_DYNACK is not set # CONFIG_ATH9K_WOW is not set CONFIG_ATH9K_RFKILL=y @@ -2400,6 +2405,8 @@ CONFIG_MT7663S=m # CONFIG_MT7921S is not set # CONFIG_MT7921U is not set # CONFIG_MT7996E is not set +# CONFIG_MT7925E is not set +# CONFIG_MT7925U is not set CONFIG_WLAN_VENDOR_MICROCHIP=y # CONFIG_WILC1000_SDIO is not set # CONFIG_WILC1000_SPI is not set @@ -2970,6 +2977,7 @@ CONFIG_PINCTRL_MESON_G12A=y CONFIG_PINCTRL_MESON_A1=y CONFIG_PINCTRL_MESON_S4=y CONFIG_PINCTRL_AMLOGIC_C3=y +CONFIG_PINCTRL_AMLOGIC_T7=y # # Renesas pinctrl drivers @@ -3066,7 +3074,6 @@ CONFIG_GPIO_PCA953X=m # CONFIG_W1 is not set CONFIG_POWER_RESET=y -# CONFIG_POWER_RESET_BRCMSTB is not set CONFIG_POWER_RESET_GPIO=y CONFIG_POWER_RESET_GPIO_RESTART=y CONFIG_POWER_RESET_ODROID_GO_ULTRA_POWEROFF=y @@ -3175,12 +3182,14 @@ CONFIG_SENSORS_GPIO_FAN=m # CONFIG_SENSORS_IIO_HWMON is not set # CONFIG_SENSORS_IT87 is not set # CONFIG_SENSORS_JC42 is not set +# CONFIG_SENSORS_POWERZ is not set # CONFIG_SENSORS_POWR1220 is not set # CONFIG_SENSORS_LINEAGE is not set # CONFIG_SENSORS_LTC2945 is not set # CONFIG_SENSORS_LTC2947_I2C is not set # CONFIG_SENSORS_LTC2947_SPI is not set # CONFIG_SENSORS_LTC2990 is not set +# CONFIG_SENSORS_LTC2991 is not set # CONFIG_SENSORS_LTC2992 is not set # CONFIG_SENSORS_LTC4151 is not set # CONFIG_SENSORS_LTC4215 is not set @@ -3458,7 +3467,6 @@ CONFIG_MFD_SEC_CORE=y # CONFIG_MFD_SKY81452 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_TI_LMU is not set @@ -3532,6 +3540,7 @@ CONFIG_REGULATOR_GPIO=y # CONFIG_REGULATOR_LTC3589 is not set # CONFIG_REGULATOR_LTC3676 is not set # CONFIG_REGULATOR_MAX1586 is not set +# CONFIG_REGULATOR_MAX77503 is not set # CONFIG_REGULATOR_MAX77857 is not set # CONFIG_REGULATOR_MAX8649 is not set # CONFIG_REGULATOR_MAX8660 is not set @@ -3759,6 +3768,10 @@ CONFIG_VIDEO_MESON_GE2D=y # Microchip Technology, Inc. media platform drivers # +# +# Nuvoton media platform drivers +# + # # NVidia media platform drivers # @@ -3851,6 +3864,7 @@ CONFIG_VIDEO_CAMERA_SENSOR=y # CONFIG_VIDEO_IMX415 is not set # CONFIG_VIDEO_MT9M001 is not set # CONFIG_VIDEO_MT9M111 is not set +# CONFIG_VIDEO_MT9M114 is not set # CONFIG_VIDEO_MT9P031 is not set # CONFIG_VIDEO_MT9T112 is not set # CONFIG_VIDEO_MT9V011 is not set @@ -4322,10 +4336,12 @@ CONFIG_DRM_PANEL=y # CONFIG_DRM_PANEL_ILITEK_IL9322 is not set # CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set # CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set +# CONFIG_DRM_PANEL_ILITEK_ILI9882T is not set # CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set # CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set # CONFIG_DRM_PANEL_JADARD_JD9365DA_H3 is not set # CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set +# CONFIG_DRM_PANEL_JDI_LPM102A188A is not set # CONFIG_DRM_PANEL_JDI_R63452 is not set # CONFIG_DRM_PANEL_KHADAS_TS050 is not set # CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04 is not set @@ -4353,6 +4369,7 @@ CONFIG_DRM_PANEL=y # CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set # CONFIG_DRM_PANEL_RAYDIUM_RM67191 is not set # CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set +# CONFIG_DRM_PANEL_RAYDIUM_RM692E5 is not set # CONFIG_DRM_PANEL_RONBO_RB070D30 is not set # CONFIG_DRM_PANEL_SAMSUNG_ATNA33XC20 is not set # CONFIG_DRM_PANEL_SAMSUNG_DB7430 is not set @@ -4523,6 +4540,7 @@ CONFIG_FB_SYS_IMAGEBLIT=y CONFIG_FB_SYS_FOPS=y CONFIG_FB_DEFERRED_IO=y CONFIG_FB_DMAMEM_HELPERS=y +CONFIG_FB_IOMEM_FOPS=y CONFIG_FB_SYSMEM_HELPERS=y CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y CONFIG_FB_MODE_HELPERS=y @@ -4712,6 +4730,8 @@ CONFIG_SND_SOC_I2C_AND_SPI=y # CONFIG_SND_SOC_AW8738 is not set # CONFIG_SND_SOC_AW88395 is not set # CONFIG_SND_SOC_AW88261 is not set +# CONFIG_SND_SOC_AW87390 is not set +# CONFIG_SND_SOC_AW88399 is not set # CONFIG_SND_SOC_BD28623 is not set # CONFIG_SND_SOC_BT_SCO is not set # CONFIG_SND_SOC_CHV3_CODEC is not set @@ -4793,6 +4813,7 @@ CONFIG_SND_SOC_RK817=y # CONFIG_SND_SOC_RT5640 is not set # CONFIG_SND_SOC_RT5659 is not set # CONFIG_SND_SOC_RT9120 is not set +# CONFIG_SND_SOC_RTQ9128 is not set # CONFIG_SND_SOC_SGTL5000 is not set CONFIG_SND_SOC_SIMPLE_AMPLIFIER=y # CONFIG_SND_SOC_SIMPLE_MUX is not set @@ -5347,6 +5368,7 @@ CONFIG_TYPEC_FUSB302=m # CONFIG_TYPEC_MUX_GPIO_SBU is not set # CONFIG_TYPEC_MUX_PI3USB30532 is not set # CONFIG_TYPEC_MUX_NB7VPQ904M is not set +# CONFIG_TYPEC_MUX_PTN36502 is not set # end of USB Type-C Multiplexer/DeMultiplexer Switch support # @@ -5458,6 +5480,7 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=y # CONFIG_LEDS_TRIGGER_BACKLIGHT is not set CONFIG_LEDS_TRIGGER_CPU=y CONFIG_LEDS_TRIGGER_ACTIVITY=y +# CONFIG_LEDS_TRIGGER_GPIO is not set CONFIG_LEDS_TRIGGER_DEFAULT_ON=y # @@ -5626,7 +5649,6 @@ CONFIG_DMABUF_HEAPS_CMA=y # CONFIG_COMEDI is not set CONFIG_STAGING=y # CONFIG_PRISM2_USB is not set -# CONFIG_RTL8192U is not set # CONFIG_RTLLIB is not set # CONFIG_RTL8723BS is not set # CONFIG_R8712U is not set @@ -5669,12 +5691,6 @@ CONFIG_STAGING=y # # CONFIG_AD5933 is not set # end of Network Analyzer, Impedance Converters - -# -# Resolver to digital converters -# -# CONFIG_AD2S1210 is not set -# end of Resolver to digital converters # end of IIO staging drivers # CONFIG_FB_SM750 is not set @@ -5690,7 +5706,6 @@ CONFIG_VIDEO_MESON_VDEC=y # CONFIG_PI433 is not set # CONFIG_XIL_AXIS_FIFO is not set # CONFIG_FIELDBUS_DEV is not set -# CONFIG_QLGE is not set # CONFIG_VME_BUS is not set # CONFIG_GOLDFISH is not set # CONFIG_CHROME_PLATFORMS is not set @@ -5748,9 +5763,11 @@ CONFIG_COMMON_CLK_MESON_CPU_DYNDIV=y CONFIG_COMMON_CLK_GXBB=y CONFIG_COMMON_CLK_AXG=y CONFIG_COMMON_CLK_AXG_AUDIO=y -# CONFIG_COMMON_CLK_A1_PLL is not set -# CONFIG_COMMON_CLK_A1_PERIPHERALS is not set +CONFIG_COMMON_CLK_A1_PLL=y +CONFIG_COMMON_CLK_A1_PERIPHERALS=y CONFIG_COMMON_CLK_G12A=y +CONFIG_COMMON_CLK_S4_PLL=y +CONFIG_COMMON_CLK_S4_PERIPHERALS=y # end of Clock support for Amlogic platforms # CONFIG_XILINX_VCU is not set @@ -5826,15 +5843,11 @@ CONFIG_IOMMU_DMA=y CONFIG_MESON_CANVAS=y CONFIG_MESON_CLK_MEASURE=y CONFIG_MESON_GX_SOCINFO=y -CONFIG_MESON_GX_PM_DOMAINS=y -CONFIG_MESON_EE_PM_DOMAINS=y -CONFIG_MESON_SECURE_PM_DOMAINS=y # end of Amlogic SoC drivers # # Broadcom SoC drivers # -# CONFIG_SOC_BRCMSTB is not set # end of Broadcom SoC drivers # @@ -5875,6 +5888,34 @@ CONFIG_MESON_SECURE_PM_DOMAINS=y # end of Xilinx SoC drivers # end of SOC (System On Chip) specific Drivers +# +# PM Domains +# + +# +# Amlogic PM Domains +# +CONFIG_MESON_GX_PM_DOMAINS=y +CONFIG_MESON_EE_PM_DOMAINS=y +CONFIG_MESON_SECURE_PM_DOMAINS=y +# end of Amlogic PM Domains + +# +# Broadcom PM Domains +# +# end of Broadcom PM Domains + +# +# i.MX PM Domains +# +# end of i.MX PM Domains + +# +# Qualcomm PM Domains +# +# end of Qualcomm PM Domains +# end of PM Domains + CONFIG_PM_DEVFREQ=y # @@ -5998,6 +6039,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_HI8435 is not set # CONFIG_HX711 is not set # CONFIG_INA2XX_ADC is not set +# CONFIG_LTC2309 is not set # CONFIG_LTC2471 is not set # CONFIG_LTC2485 is not set # CONFIG_LTC2496 is not set @@ -6012,6 +6054,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_MAX9611 is not set # CONFIG_MCP320X is not set # CONFIG_MCP3422 is not set +# CONFIG_MCP3564 is not set # CONFIG_MCP3911 is not set CONFIG_MESON_SARADC=y # CONFIG_NAU7802 is not set @@ -6373,6 +6416,7 @@ CONFIG_MESON_SARADC=y # Pressure sensors # # CONFIG_ABP060MG is not set +# CONFIG_ROHM_BM1390 is not set # CONFIG_BMP280 is not set # CONFIG_DLHL60D is not set # CONFIG_DPS310 is not set @@ -6420,6 +6464,7 @@ CONFIG_MESON_SARADC=y # # CONFIG_AD2S90 is not set # CONFIG_AD2S1200 is not set +# CONFIG_AD2S1210 is not set # end of Resolver to digital converters # @@ -6633,7 +6678,6 @@ CONFIG_XFS_SUPPORT_ASCII_CI=y # CONFIG_OCFS2_FS is not set CONFIG_BTRFS_FS=m # CONFIG_BTRFS_FS_POSIX_ACL is not set -# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set # CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set # CONFIG_BTRFS_DEBUG is not set # CONFIG_BTRFS_ASSERT is not set @@ -6647,6 +6691,7 @@ CONFIG_F2FS_CHECK_FS=y # CONFIG_F2FS_FS_COMPRESSION is not set CONFIG_F2FS_IOSTAT=y # CONFIG_F2FS_UNFAIR_RWSEM is not set +# CONFIG_BCACHEFS_FS is not set CONFIG_FS_POSIX_ACL=y CONFIG_EXPORTFS=y # CONFIG_EXPORTFS_BLOCK_OPS is not set @@ -7040,7 +7085,9 @@ CONFIG_CRYPTO_DRBG_HMAC=y # CONFIG_CRYPTO_DRBG_CTR is not set CONFIG_CRYPTO_DRBG=y CONFIG_CRYPTO_JITTERENTROPY=y -# CONFIG_CRYPTO_JITTERENTROPY_TESTINTERFACE is not set +CONFIG_CRYPTO_JITTERENTROPY_MEMORY_BLOCKS=64 +CONFIG_CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE=32 +CONFIG_CRYPTO_JITTERENTROPY_OSR=1 CONFIG_CRYPTO_KDF800108_CTR=y # end of Random number generation @@ -7199,7 +7246,6 @@ CONFIG_ZSTD_DECOMPRESS=y CONFIG_XZ_DEC=y # CONFIG_XZ_DEC_X86 is not set # CONFIG_XZ_DEC_POWERPC is not set -# CONFIG_XZ_DEC_IA64 is not set # CONFIG_XZ_DEC_ARM is not set # CONFIG_XZ_DEC_ARMTHUMB is not set # CONFIG_XZ_DEC_SPARC is not set @@ -7284,6 +7330,7 @@ CONFIG_SG_POOL=y CONFIG_ARCH_STACKWALK=y CONFIG_STACKDEPOT=y CONFIG_SBITMAP=y +# CONFIG_LWQ_TEST is not set # end of Library routines CONFIG_GENERIC_IOREMAP=y From f6bdeab8e1789e67603bf67b726a4c2709b5c8bc Mon Sep 17 00:00:00 2001 From: adamg Date: Fri, 9 Feb 2024 09:26:42 +0000 Subject: [PATCH 144/167] Amlogic: cleanup Kconfig --- .../devices/S922X/linux/linux.aarch64.conf | 454 +----------------- 1 file changed, 16 insertions(+), 438 deletions(-) diff --git a/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf b/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf index dd3b96cc81..10a5ff88ea 100644 --- a/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf +++ b/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf @@ -3598,50 +3598,13 @@ CONFIG_REGULATOR_RK808=y # CONFIG_REGULATOR_TPS6524X is not set # CONFIG_REGULATOR_VCTRL is not set # CONFIG_REGULATOR_QCOM_LABIBB is not set -CONFIG_RC_CORE=y -CONFIG_BPF_LIRC_MODE2=y -CONFIG_LIRC=y -CONFIG_RC_MAP=m -CONFIG_RC_DECODERS=y -CONFIG_IR_IMON_DECODER=m -CONFIG_IR_JVC_DECODER=m -CONFIG_IR_MCE_KBD_DECODER=m -CONFIG_IR_NEC_DECODER=m -CONFIG_IR_RC5_DECODER=m -CONFIG_IR_RC6_DECODER=m -CONFIG_IR_RCMM_DECODER=m -CONFIG_IR_SANYO_DECODER=m -CONFIG_IR_SHARP_DECODER=m -CONFIG_IR_SONY_DECODER=m -CONFIG_IR_XMP_DECODER=m -CONFIG_RC_DEVICES=y -CONFIG_IR_GPIO_CIR=m -CONFIG_IR_GPIO_TX=m -# CONFIG_IR_HIX5HD2 is not set -CONFIG_IR_IGORPLUGUSB=m -CONFIG_IR_IGUANA=m -CONFIG_IR_IMON=m -CONFIG_IR_IMON_RAW=m -CONFIG_IR_MCEUSB=m -CONFIG_IR_MESON=m -# CONFIG_IR_MESON_TX is not set -CONFIG_IR_PWM_TX=m -CONFIG_IR_REDRAT3=m -# CONFIG_IR_SERIAL is not set -# CONFIG_IR_SPI is not set -CONFIG_IR_STREAMZAP=m -# CONFIG_IR_TOY is not set -CONFIG_IR_TTUSBIR=m -CONFIG_RC_ATI_REMOTE=m -# CONFIG_RC_LOOPBACK is not set -CONFIG_RC_XBOX_DVD=m +# CONFIG_RC_CORE is not set CONFIG_CEC_CORE=y CONFIG_CEC_NOTIFIER=y # # CEC support # -# CONFIG_MEDIA_CEC_RC is not set CONFIG_MEDIA_CEC_SUPPORT=y # CONFIG_CEC_CH7322 is not set CONFIG_CEC_MESON_AO=y @@ -3652,60 +3615,44 @@ CONFIG_CEC_MESON_G12A_AO=y # end of CEC support CONFIG_MEDIA_SUPPORT=y -# CONFIG_MEDIA_SUPPORT_FILTER is not set +CONFIG_MEDIA_SUPPORT_FILTER=y CONFIG_MEDIA_SUBDRV_AUTOSELECT=y # # Media device types # -CONFIG_MEDIA_CAMERA_SUPPORT=y -CONFIG_MEDIA_ANALOG_TV_SUPPORT=y -CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y -CONFIG_MEDIA_RADIO_SUPPORT=y -CONFIG_MEDIA_SDR_SUPPORT=y +# CONFIG_MEDIA_CAMERA_SUPPORT is not set +# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set +# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set +# CONFIG_MEDIA_RADIO_SUPPORT is not set +# CONFIG_MEDIA_SDR_SUPPORT is not set CONFIG_MEDIA_PLATFORM_SUPPORT=y -CONFIG_MEDIA_TEST_SUPPORT=y +# CONFIG_MEDIA_TEST_SUPPORT is not set # end of Media device types -# -# Media core support -# CONFIG_VIDEO_DEV=y CONFIG_MEDIA_CONTROLLER=y -CONFIG_DVB_CORE=y -# end of Media core support # # Video4Linux options # CONFIG_VIDEO_V4L2_I2C=y -CONFIG_VIDEO_V4L2_SUBDEV_API=y # CONFIG_VIDEO_ADV_DEBUG is not set # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set CONFIG_V4L2_MEM2MEM_DEV=y -CONFIG_V4L2_FWNODE=y -CONFIG_V4L2_ASYNC=y # end of Video4Linux options # # Media controller options # -CONFIG_MEDIA_CONTROLLER_DVB=y # end of Media controller options # -# Digital TV options +# Media drivers # -# CONFIG_DVB_MMAP is not set -CONFIG_DVB_NET=y -CONFIG_DVB_MAX_ADAPTERS=8 -# CONFIG_DVB_DYNAMIC_MINORS is not set -# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set -# CONFIG_DVB_ULE_DEBUG is not set -# end of Digital TV options # -# Media drivers +# Drivers filtered as selected at 'Filter media drivers' # # @@ -3713,11 +3660,8 @@ CONFIG_DVB_MAX_ADAPTERS=8 # # CONFIG_MEDIA_USB_SUPPORT is not set # CONFIG_MEDIA_PCI_SUPPORT is not set -# CONFIG_RADIO_ADAPTERS is not set CONFIG_MEDIA_PLATFORM_DRIVERS=y # CONFIG_V4L_PLATFORM_DRIVERS is not set -# CONFIG_SDR_PLATFORM_DRIVERS is not set -# CONFIG_DVB_PLATFORM_DRIVERS is not set CONFIG_V4L_MEM2MEM_DRIVERS=y CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m @@ -3819,13 +3763,6 @@ CONFIG_VIDEO_MESON_GE2D=y # # Xilinx media platform drivers # - -# -# MMC/SDIO DVB adapters -# -# CONFIG_SMS_SDIO_DRV is not set -# CONFIG_V4L_TEST_DRIVERS is not set -# CONFIG_DVB_TEST_DRIVERS is not set CONFIG_UVC_COMMON=m CONFIG_VIDEOBUF2_CORE=y CONFIG_VIDEOBUF2_V4L2=y @@ -3838,106 +3775,14 @@ CONFIG_VIDEOBUF2_DMA_SG=m # # Media ancillary drivers # -CONFIG_MEDIA_ATTACH=y - -# -# IR I2C driver auto-selected by 'Autoselect ancillary drivers' -# -CONFIG_VIDEO_IR_I2C=m -CONFIG_VIDEO_CAMERA_SENSOR=y -# CONFIG_VIDEO_AR0521 is not set -# CONFIG_VIDEO_HI556 is not set -# CONFIG_VIDEO_HI846 is not set -# CONFIG_VIDEO_HI847 is not set -# CONFIG_VIDEO_IMX208 is not set -# CONFIG_VIDEO_IMX214 is not set -# CONFIG_VIDEO_IMX219 is not set -# CONFIG_VIDEO_IMX258 is not set -# CONFIG_VIDEO_IMX274 is not set -# CONFIG_VIDEO_IMX290 is not set -# CONFIG_VIDEO_IMX296 is not set -# CONFIG_VIDEO_IMX319 is not set -# CONFIG_VIDEO_IMX334 is not set -# CONFIG_VIDEO_IMX335 is not set -# CONFIG_VIDEO_IMX355 is not set -# CONFIG_VIDEO_IMX412 is not set -# CONFIG_VIDEO_IMX415 is not set -# CONFIG_VIDEO_MT9M001 is not set -# CONFIG_VIDEO_MT9M111 is not set -# CONFIG_VIDEO_MT9M114 is not set -# CONFIG_VIDEO_MT9P031 is not set -# CONFIG_VIDEO_MT9T112 is not set -# CONFIG_VIDEO_MT9V011 is not set -# CONFIG_VIDEO_MT9V032 is not set -# CONFIG_VIDEO_MT9V111 is not set -# CONFIG_VIDEO_OG01A1B is not set -# CONFIG_VIDEO_OV01A10 is not set -# CONFIG_VIDEO_OV02A10 is not set -# CONFIG_VIDEO_OV08D10 is not set -# CONFIG_VIDEO_OV08X40 is not set -# CONFIG_VIDEO_OV13858 is not set -# CONFIG_VIDEO_OV13B10 is not set -# CONFIG_VIDEO_OV2640 is not set -# CONFIG_VIDEO_OV2659 is not set -# CONFIG_VIDEO_OV2680 is not set -# CONFIG_VIDEO_OV2685 is not set -# CONFIG_VIDEO_OV4689 is not set -# CONFIG_VIDEO_OV5640 is not set -# CONFIG_VIDEO_OV5645 is not set -# CONFIG_VIDEO_OV5647 is not set -# CONFIG_VIDEO_OV5648 is not set -# CONFIG_VIDEO_OV5670 is not set -# CONFIG_VIDEO_OV5675 is not set -# CONFIG_VIDEO_OV5693 is not set -# CONFIG_VIDEO_OV5695 is not set -# CONFIG_VIDEO_OV6650 is not set -# CONFIG_VIDEO_OV7251 is not set -# CONFIG_VIDEO_OV7640 is not set -# CONFIG_VIDEO_OV7670 is not set -# CONFIG_VIDEO_OV772X is not set -# CONFIG_VIDEO_OV7740 is not set -# CONFIG_VIDEO_OV8856 is not set -# CONFIG_VIDEO_OV8858 is not set -# CONFIG_VIDEO_OV8865 is not set -# CONFIG_VIDEO_OV9282 is not set -# CONFIG_VIDEO_OV9640 is not set -# CONFIG_VIDEO_OV9650 is not set -# CONFIG_VIDEO_RDACM20 is not set -# CONFIG_VIDEO_RDACM21 is not set -# CONFIG_VIDEO_RJ54N1 is not set -# CONFIG_VIDEO_S5C73M3 is not set -# CONFIG_VIDEO_S5K5BAF is not set -# CONFIG_VIDEO_S5K6A3 is not set -# CONFIG_VIDEO_ST_VGXY61 is not set -# CONFIG_VIDEO_CCS is not set -# CONFIG_VIDEO_ET8EK8 is not set - -# -# Lens drivers -# -# CONFIG_VIDEO_AD5820 is not set -# CONFIG_VIDEO_AK7375 is not set -# CONFIG_VIDEO_DW9714 is not set -# CONFIG_VIDEO_DW9719 is not set -# CONFIG_VIDEO_DW9768 is not set -# CONFIG_VIDEO_DW9807_VCM is not set -# end of Lens drivers - -# -# Flash devices -# -# CONFIG_VIDEO_ADP1653 is not set -# CONFIG_VIDEO_LM3560 is not set -# CONFIG_VIDEO_LM3646 is not set -# end of Flash devices # # Audio decoders, processors and mixers # # CONFIG_VIDEO_CS3308 is not set # CONFIG_VIDEO_CS5345 is not set -CONFIG_VIDEO_CS53L32A=m -CONFIG_VIDEO_MSP3400=m +# CONFIG_VIDEO_CS53L32A is not set +# CONFIG_VIDEO_MSP3400 is not set # CONFIG_VIDEO_SONY_BTF_MPX is not set # CONFIG_VIDEO_TDA1997X is not set # CONFIG_VIDEO_TDA7432 is not set @@ -3949,7 +3794,7 @@ CONFIG_VIDEO_MSP3400=m # CONFIG_VIDEO_UDA1342 is not set # CONFIG_VIDEO_VP27SMPX is not set # CONFIG_VIDEO_WM8739 is not set -CONFIG_VIDEO_WM8775=m +# CONFIG_VIDEO_WM8775 is not set # end of Audio decoders, processors and mixers # @@ -3974,7 +3819,7 @@ CONFIG_VIDEO_WM8775=m # CONFIG_VIDEO_MAX9286 is not set # CONFIG_VIDEO_ML86V7667 is not set # CONFIG_VIDEO_SAA7110 is not set -CONFIG_VIDEO_SAA711X=m +# CONFIG_VIDEO_SAA711X is not set # CONFIG_VIDEO_TC358743 is not set # CONFIG_VIDEO_TC358746 is not set # CONFIG_VIDEO_TVP514X is not set @@ -3990,7 +3835,7 @@ CONFIG_VIDEO_SAA711X=m # Video and audio decoders # # CONFIG_VIDEO_SAA717X is not set -CONFIG_VIDEO_CX25840=m +# CONFIG_VIDEO_CX25840 is not set # end of Video decoders # @@ -4023,7 +3868,6 @@ CONFIG_VIDEO_CX25840=m # # SDR tuner chips # -# CONFIG_SDR_MAX2175 is not set # end of SDR tuner chips # @@ -4046,221 +3890,8 @@ CONFIG_VIDEO_CX25840=m # # Media SPI Adapters # -CONFIG_CXD2880_SPI_DRV=m # CONFIG_VIDEO_GS1662 is not set # end of Media SPI Adapters - -CONFIG_MEDIA_TUNER=y - -# -# Customize TV tuners -# -CONFIG_MEDIA_TUNER_E4000=m -CONFIG_MEDIA_TUNER_FC0011=m -CONFIG_MEDIA_TUNER_FC0012=m -CONFIG_MEDIA_TUNER_FC0013=m -CONFIG_MEDIA_TUNER_FC2580=m -CONFIG_MEDIA_TUNER_IT913X=m -# CONFIG_MEDIA_TUNER_M88RS6000T is not set -CONFIG_MEDIA_TUNER_MAX2165=m -CONFIG_MEDIA_TUNER_MC44S803=y -# CONFIG_MEDIA_TUNER_MSI001 is not set -CONFIG_MEDIA_TUNER_MT2060=m -CONFIG_MEDIA_TUNER_MT2063=m -CONFIG_MEDIA_TUNER_MT20XX=y -# CONFIG_MEDIA_TUNER_MT2131 is not set -CONFIG_MEDIA_TUNER_MT2266=m -# CONFIG_MEDIA_TUNER_MXL301RF is not set -CONFIG_MEDIA_TUNER_MXL5005S=m -CONFIG_MEDIA_TUNER_MXL5007T=m -# CONFIG_MEDIA_TUNER_QM1D1B0004 is not set -CONFIG_MEDIA_TUNER_QM1D1C0042=m -CONFIG_MEDIA_TUNER_QT1010=m -CONFIG_MEDIA_TUNER_R820T=m -CONFIG_MEDIA_TUNER_SI2157=m -CONFIG_MEDIA_TUNER_SIMPLE=y -CONFIG_MEDIA_TUNER_TDA18212=m -CONFIG_MEDIA_TUNER_TDA18218=m -CONFIG_MEDIA_TUNER_TDA18250=m -CONFIG_MEDIA_TUNER_TDA18271=y -CONFIG_MEDIA_TUNER_TDA827X=y -CONFIG_MEDIA_TUNER_TDA8290=y -CONFIG_MEDIA_TUNER_TDA9887=y -CONFIG_MEDIA_TUNER_TEA5761=y -CONFIG_MEDIA_TUNER_TEA5767=y -CONFIG_MEDIA_TUNER_TUA9001=m -CONFIG_MEDIA_TUNER_XC2028=y -CONFIG_MEDIA_TUNER_XC4000=y -CONFIG_MEDIA_TUNER_XC5000=y -# end of Customize TV tuners - -# -# Customise DVB Frontends -# - -# -# Multistandard (satellite) frontends -# -CONFIG_DVB_M88DS3103=m -# CONFIG_DVB_MXL5XX is not set -CONFIG_DVB_STB0899=m -CONFIG_DVB_STB6100=m -CONFIG_DVB_STV090x=m -# CONFIG_DVB_STV0910 is not set -CONFIG_DVB_STV6110x=m -# CONFIG_DVB_STV6111 is not set - -# -# Multistandard (cable + terrestrial) frontends -# -CONFIG_DVB_DRXK=m -CONFIG_DVB_MN88472=m -CONFIG_DVB_MN88473=m -CONFIG_DVB_SI2165=m -CONFIG_DVB_TDA18271C2DD=m - -# -# DVB-S (satellite) frontends -# -# CONFIG_DVB_CX24110 is not set -CONFIG_DVB_CX24116=m -# CONFIG_DVB_CX24117 is not set -CONFIG_DVB_CX24120=m -CONFIG_DVB_CX24123=m -CONFIG_DVB_DS3000=m -# CONFIG_DVB_MB86A16 is not set -CONFIG_DVB_MT312=m -CONFIG_DVB_S5H1420=m -CONFIG_DVB_SI21XX=m -CONFIG_DVB_STB6000=m -CONFIG_DVB_STV0288=m -CONFIG_DVB_STV0299=m -CONFIG_DVB_STV0900=m -CONFIG_DVB_STV6110=m -CONFIG_DVB_TDA10071=m -CONFIG_DVB_TDA10086=m -# CONFIG_DVB_TDA8083 is not set -# CONFIG_DVB_TDA8261 is not set -CONFIG_DVB_TDA826X=m -CONFIG_DVB_TS2020=m -# CONFIG_DVB_TUA6100 is not set -CONFIG_DVB_TUNER_CX24113=m -CONFIG_DVB_TUNER_ITD1000=m -# CONFIG_DVB_VES1X93 is not set -# CONFIG_DVB_ZL10036 is not set -CONFIG_DVB_ZL10039=m - -# -# DVB-T (terrestrial) frontends -# -CONFIG_DVB_AF9013=m -# CONFIG_DVB_CX22700 is not set -CONFIG_DVB_CX22702=m -CONFIG_DVB_CXD2820R=m -CONFIG_DVB_CXD2841ER=m -CONFIG_DVB_DIB3000MB=m -CONFIG_DVB_DIB3000MC=m -CONFIG_DVB_DIB7000M=m -CONFIG_DVB_DIB7000P=m -# CONFIG_DVB_DIB9000 is not set -CONFIG_DVB_DRXD=m -CONFIG_DVB_EC100=m -# CONFIG_DVB_L64781 is not set -CONFIG_DVB_MT352=m -CONFIG_DVB_NXT6000=m -CONFIG_DVB_RTL2830=m -CONFIG_DVB_RTL2832=m -CONFIG_DVB_RTL2832_SDR=m -# CONFIG_DVB_S5H1432 is not set -CONFIG_DVB_SI2168=m -# CONFIG_DVB_SP887X is not set -# CONFIG_DVB_STV0367 is not set -CONFIG_DVB_TDA10048=m -CONFIG_DVB_TDA1004X=m -CONFIG_DVB_ZD1301_DEMOD=m -CONFIG_DVB_ZL10353=m -# CONFIG_DVB_CXD2880 is not set - -# -# DVB-C (cable) frontends -# -CONFIG_DVB_STV0297=m -# CONFIG_DVB_TDA10021 is not set -CONFIG_DVB_TDA10023=m -# CONFIG_DVB_VES1820 is not set - -# -# ATSC (North American/Korean Terrestrial/Cable DTV) frontends -# -CONFIG_DVB_AU8522=m -CONFIG_DVB_AU8522_DTV=m -CONFIG_DVB_AU8522_V4L=m -CONFIG_DVB_BCM3510=m -CONFIG_DVB_LG2160=m -CONFIG_DVB_LGDT3305=m -CONFIG_DVB_LGDT3306A=m -CONFIG_DVB_LGDT330X=m -CONFIG_DVB_MXL692=m -CONFIG_DVB_NXT200X=m -# CONFIG_DVB_OR51132 is not set -# CONFIG_DVB_OR51211 is not set -CONFIG_DVB_S5H1409=m -CONFIG_DVB_S5H1411=m - -# -# ISDB-T (terrestrial) frontends -# -CONFIG_DVB_DIB8000=m -CONFIG_DVB_MB86A20S=m -CONFIG_DVB_S921=m - -# -# ISDB-S (satellite) & ISDB-T (terrestrial) frontends -# -# CONFIG_DVB_MN88443X is not set -CONFIG_DVB_TC90522=m - -# -# Digital terrestrial only tuners/PLL -# -CONFIG_DVB_PLL=m -CONFIG_DVB_TUNER_DIB0070=m -CONFIG_DVB_TUNER_DIB0090=m - -# -# SEC control devices for DVB-S -# -CONFIG_DVB_A8293=m -CONFIG_DVB_AF9033=m -# CONFIG_DVB_ASCOT2E is not set -CONFIG_DVB_ATBM8830=m -# CONFIG_DVB_HELENE is not set -# CONFIG_DVB_HORUS3A is not set -# CONFIG_DVB_ISL6405 is not set -CONFIG_DVB_ISL6421=m -CONFIG_DVB_ISL6423=m -CONFIG_DVB_IX2505V=m -# CONFIG_DVB_LGS8GL5 is not set -CONFIG_DVB_LGS8GXX=m -# CONFIG_DVB_LNBH25 is not set -# CONFIG_DVB_LNBH29 is not set -CONFIG_DVB_LNBP21=m -CONFIG_DVB_LNBP22=m -CONFIG_DVB_M88RS2000=m -# CONFIG_DVB_TDA665x is not set -CONFIG_DVB_DRX39XYJ=m - -# -# Common Interface (EN50221) controller drivers -# -# CONFIG_DVB_CXD2099 is not set -CONFIG_DVB_SP2=m -# end of Customise DVB Frontends - -# -# Tools to develop new frontends -# -# CONFIG_DVB_DUMMY_FE is not set # end of Media ancillary drivers # @@ -5167,59 +4798,7 @@ CONFIG_USB_DWC2_DUAL_ROLE=y # # USB port drivers # -CONFIG_USB_SERIAL=m -CONFIG_USB_SERIAL_GENERIC=y -# CONFIG_USB_SERIAL_SIMPLE is not set -# CONFIG_USB_SERIAL_AIRCABLE is not set -# CONFIG_USB_SERIAL_ARK3116 is not set -# CONFIG_USB_SERIAL_BELKIN is not set -CONFIG_USB_SERIAL_CH341=m -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -CONFIG_USB_SERIAL_CP210X=m -# CONFIG_USB_SERIAL_CYPRESS_M8 is not set -# CONFIG_USB_SERIAL_EMPEG is not set -CONFIG_USB_SERIAL_FTDI_SIO=m -# CONFIG_USB_SERIAL_VISOR is not set -# CONFIG_USB_SERIAL_IPAQ is not set -# CONFIG_USB_SERIAL_IR is not set -# CONFIG_USB_SERIAL_EDGEPORT is not set -# CONFIG_USB_SERIAL_EDGEPORT_TI is not set -# CONFIG_USB_SERIAL_F81232 is not set -# CONFIG_USB_SERIAL_F8153X is not set -# CONFIG_USB_SERIAL_GARMIN is not set -# CONFIG_USB_SERIAL_IPW is not set -CONFIG_USB_SERIAL_IUU=m -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -# CONFIG_USB_SERIAL_KEYSPAN is not set -# CONFIG_USB_SERIAL_KLSI is not set -# CONFIG_USB_SERIAL_KOBIL_SCT is not set -# CONFIG_USB_SERIAL_MCT_U232 is not set -# CONFIG_USB_SERIAL_METRO is not set -# CONFIG_USB_SERIAL_MOS7720 is not set -# CONFIG_USB_SERIAL_MOS7840 is not set -# CONFIG_USB_SERIAL_MXUPORT is not set -# CONFIG_USB_SERIAL_NAVMAN is not set -CONFIG_USB_SERIAL_PL2303=m -# CONFIG_USB_SERIAL_OTI6858 is not set -# CONFIG_USB_SERIAL_QCAUX is not set -# CONFIG_USB_SERIAL_QUALCOMM is not set -# CONFIG_USB_SERIAL_SPCP8X5 is not set -# CONFIG_USB_SERIAL_SAFE is not set -# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set -# CONFIG_USB_SERIAL_SYMBOL is not set -# CONFIG_USB_SERIAL_TI is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_OPTION is not set -# CONFIG_USB_SERIAL_OMNINET is not set -# CONFIG_USB_SERIAL_OPTICON is not set -# CONFIG_USB_SERIAL_XSENS_MT is not set -# CONFIG_USB_SERIAL_WISHBONE is not set -# CONFIG_USB_SERIAL_SSU100 is not set -# CONFIG_USB_SERIAL_QT2 is not set -# CONFIG_USB_SERIAL_UPD78F0730 is not set -# CONFIG_USB_SERIAL_XR is not set -# CONFIG_USB_SERIAL_DEBUG is not set +# CONFIG_USB_SERIAL is not set # # USB Miscellaneous drivers @@ -5695,7 +5274,6 @@ CONFIG_STAGING=y # CONFIG_FB_SM750 is not set CONFIG_STAGING_MEDIA=y -# CONFIG_DVB_AV7110 is not set # CONFIG_VIDEO_MAX96712 is not set CONFIG_VIDEO_MESON_VDEC=y # CONFIG_STAGING_MEDIA_DEPRECATED is not set From 9b6c8393a343baea2f49bb24b58c79fb4b2c6af9 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Fri, 9 Feb 2024 22:18:38 +0000 Subject: [PATCH 145/167] * Rename many OS links to JELOS. * Update installer to use gptokeyb so the built-in controller can be used to install JELOS. * General package housekeeping. --- Dockerfile | 4 +-- config/noobs/os.json | 2 +- config/path | 5 +--- distributions/JELOS/options | 2 +- ...uses-of-system-directories-when-link.patch | 2 +- packages/devel/elfutils/package.mk | 10 +------ packages/devel/qt5/package.mk | 4 +-- packages/graphics/libmali-vulkan/package.mk | 2 +- packages/graphics/libmali/package.mk | 4 +-- packages/graphics/qt6/qt6base/package.mk | 2 +- packages/graphics/qt6/qt6tools/package.mk | 2 +- packages/graphics/qt6/qt6wayland/package.mk | 2 +- .../linux-firmware/kernel-firmware/package.mk | 1 + packages/kernel/linux/package.mk | 9 +++---- ...up-CC-print-multiarch-output-for-mus.patch | 8 +++--- .../ffmpeg-001-jelos.patch} | 0 .../ffmpeg/patches/rpi/ffmpeg-001-rpi.patch | 26 +++++++++---------- .../avahi/system.d/avahi-daemon.service | 2 +- .../network/bluez/system.d/bluetooth.service | 2 +- packages/network/bluez/system.d/obex.service | 2 +- .../network/connman/scripts/connman-setup | 8 +++--- .../network/connman/system.d/connman.service | 2 +- packages/network/iptables/package.mk | 4 +-- .../iptables/system.d/iptables.service | 8 +++--- packages/security/openssl/package.mk | 10 +++---- .../security/openssl/scripts/openssl-config | 4 +-- packages/sysutils/busybox/package.mk | 10 +++---- packages/sysutils/busybox/scripts/fs-resize | 2 +- packages/sysutils/busybox/scripts/init | 2 +- .../busybox/scripts/rpi-flash-firmware | 2 +- .../sleep.d.serial/99-suspend-modules.sh | 8 +++--- .../busybox/system.d/fs-resize.service | 2 +- .../system.d/rpi-flash-firmware.service | 2 +- packages/sysutils/systemd/package.mk | 4 +-- .../systemd/scripts/network-base-setup | 12 ++++----- .../systemd/system.d/debugconfig.service | 2 +- .../systemd/tmpfiles.d/z_01_openelec.conf | 4 +-- packages/sysutils/util-linux/package.mk | 4 +-- .../sysutils/util-linux/system.d/swap.service | 4 +-- .../tools/installer/config/installer.gptk | 24 +++++++++++++++++ packages/tools/installer/package.mk | 3 +-- packages/tools/installer/scripts/installer | 12 +++++++++ packages/tools/python-evdev/package.mk | 2 +- packages/tools/sound/libvorbisidec/package.mk | 2 +- packages/ui/emulationstation/package.mk | 2 +- packages/virtual/image/package.mk | 2 +- packages/virtual/toolchain/package.mk | 2 +- packages/web/curl/package.mk | 2 +- .../xorg-launch-helper/scripts/xorg-launch | 4 +-- .../xserver/xwayland/scripts/xorg-configure | 4 +-- .../xserver/xwayland/system.d/xorg.service | 2 +- scripts/build | 12 ++++----- scripts/build_compat | 22 +++------------- scripts/checkdeps | 6 ++--- scripts/clean | 8 +++--- scripts/image | 18 +++---------- scripts/unpack | 10 +++---- 57 files changed, 159 insertions(+), 163 deletions(-) rename packages/multimedia/ffmpeg/patches/{libreelec/ffmpeg-001-libreelec.patch => jelos/ffmpeg-001-jelos.patch} (100%) create mode 100644 packages/tools/installer/config/installer.gptk diff --git a/Dockerfile b/Dockerfile index 44c366a259..d425fbd79e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,8 +24,8 @@ RUN apt-get install -y \ ### Cross compiling on ARM RUN if [ "$(uname -m)" = "aarch64" ]; then apt-get install -y --no-install-recommends qemu-user-binfmt libc6-dev-amd64-cross; fi -RUN if [ ! -d /lib64 ]; then ln -sf /usr/x86_64-linux-gnu/lib64 /lib64; fi -RUN if [ ! -d /lib/x86_64-linux-gnu ]; then ln -sf /usr/x86_64-linux-gnu/lib /lib/x86_64-linux-gnu; fi +RUN if [ ! -d /lib64 ]; then ln -sf /usr/x86_64-jelos-linux-gnu/lib64 /lib64; fi +RUN if [ ! -d /lib/x86_64-jelos-linux-gnu ]; then ln -sf /usr/x86_64-jelos-linux-gnu/lib /lib/x86_64-jelos-linux-gnu; fi RUN mkdir -p /work && chown docker /work diff --git a/config/noobs/os.json b/config/noobs/os.json index 2fb08c7f63..3091853bdd 100644 --- a/config/noobs/os.json +++ b/config/noobs/os.json @@ -1,6 +1,6 @@ { "name": "@DISTRONAME@_@PROJECT@", - "version": "@LIBREELEC_VERSION@", + "version": "@OS_VERSION@", "release_date": "@RELEASE_DATE@", "kernel": "@KERNEL_VERSION@", "description": "@DESCRIPTION@", diff --git a/config/path b/config/path index 1a057aec0f..ac57af5da2 100644 --- a/config/path +++ b/config/path @@ -19,12 +19,9 @@ set -e fi [ -z "${HOST_NAME}" ] && export HOST_NAME="$(${LOCAL_CC} -dumpmachine)" -TARGET_NAME=$TARGET_GCC_ARCH-libreelec-linux-gnu${TARGET_ABI} +TARGET_NAME=$TARGET_GCC_ARCH-jelos-linux-gnu${TARGET_ABI} BUILD=${BUILD_ROOT}/${BUILD_BASE}.${DISTRONAME}-${DEVICE:-${PROJECT}}.${TARGET_ARCH} -if [ "${LIBREELEC_VERSION}" = "devel" ] ; then - BUILD=${BUILD_ROOT}/${BUILD_BASE}.${DISTRONAME}-${DEVICE:-${PROJECT}}.${TARGET_ARCH}-${OS_VERSION}-${LIBREELEC_VERSION} -fi if [ -n "$BUILD_SUFFIX" ]; then BUILD=$BUILD-$BUILD_SUFFIX diff --git a/distributions/JELOS/options b/distributions/JELOS/options index 5f2178c737..ba61f30fb0 100644 --- a/distributions/JELOS/options +++ b/distributions/JELOS/options @@ -107,7 +107,7 @@ CONTAINER_SUPPORT="${CONTAINER_SUPPORT:-no}" # Support for debug tools such as strace - DEBUG_SUPPORT="${DEBUG_SUPPORT:-yes}" + DEBUG_PACKAGES="${DEBUG_PACKAGES:-yes}" # Windowmanager to use (fluxbox / none) WINDOWMANAGER="none" diff --git a/packages/devel/binutils/patches/binutils-01-warn-for-uses-of-system-directories-when-link.patch b/packages/devel/binutils/patches/binutils-01-warn-for-uses-of-system-directories-when-link.patch index 1619cef941..7cac3adb7c 100644 --- a/packages/devel/binutils/patches/binutils-01-warn-for-uses-of-system-directories-when-link.patch +++ b/packages/devel/binutils/patches/binutils-01-warn-for-uses-of-system-directories-when-link.patch @@ -3,7 +3,7 @@ http://git.yoctoproject.org/cgit.cgi/poky/plain/meta/recipes-devtools/binutils/b just detect and skip system directories if used by mistake linker output in case of using /usr/lib path: -/data/LibreELEC.tv/build.LibreELEC-Generic.x86_64-8.0-devel/toolchain/lib/gcc/x86_64-libreelec-linux-gnu/6.2.0/../../../../x86_64-libreelec-linux-gnu/bin/ld: warning: library search path "/usr/lib" is unsafe for cross-compilation, ignore it +/data/LibreELEC.tv/build.LibreELEC-Generic.x86_64-8.0-devel/toolchain/lib/gcc/x86_64-jelos-linux-gnu/6.2.0/../../../../x86_64-jelos-linux-gnu/bin/ld: warning: library search path "/usr/lib" is unsafe for cross-compilation, ignore it From 7ab8e318659eb5d9adc758c78d084a95560b93fd Mon Sep 17 00:00:00 2001 From: Khem Raj diff --git a/packages/devel/elfutils/package.mk b/packages/devel/elfutils/package.mk index bbbb2e1174..e2ed942057 100644 --- a/packages/devel/elfutils/package.mk +++ b/packages/devel/elfutils/package.mk @@ -14,14 +14,6 @@ PKG_LONGDESC="A collection of utilities to handle ELF objects." PKG_TOOLCHAIN="autotools" PKG_BUILD_FLAGS="+pic" -if [ "${LIBREELEC_VERSION}" = "devel" ]; then - PKG_PROGRAMS="--enable-programs --program-prefix=" - PKG_PROGRAMS_LIST="readelf" -else - PKG_PROGRAMS="--disable-programs" - PKG_PROGRAMS_LIST= -fi - PKG_CONFIGURE_OPTS_HOST="utrace_cv_cc_biarch=false \ --disable-programs \ --disable-nls \ @@ -32,7 +24,7 @@ PKG_CONFIGURE_OPTS_HOST="utrace_cv_cc_biarch=false \ --without-lzma" PKG_CONFIGURE_OPTS_TARGET="utrace_cv_cc_biarch=false \ - ${PKG_PROGRAMS} \ + --disable-programs \ --disable-nls \ --disable-demangler \ --disable-debuginfod \ diff --git a/packages/devel/qt5/package.mk b/packages/devel/qt5/package.mk index f795e4e35f..9dcd5d7526 100644 --- a/packages/devel/qt5/package.mk +++ b/packages/devel/qt5/package.mk @@ -60,7 +60,7 @@ pre_configure_target() { PKG_CONFIGURE_OPTS_TARGET="-prefix /usr -sysroot ${SYSROOT_PREFIX} -hostprefix ${TOOLCHAIN} - -device linux-libreelec-g++ + -device linux-g++ -device-option CROSS_COMPILE=${TARGET_PREFIX} -fontconfig -opensource -confirm-license @@ -166,7 +166,7 @@ configure_target() { fi # Create mkspecs file - QMAKE_CONF_DIR="${PKG_BUILD}/qtbase/mkspecs/devices/linux-libreelec-g++" + QMAKE_CONF_DIR="${PKG_BUILD}/qtbase/mkspecs/devices/linux-g++" QMAKE_CONF="${QMAKE_CONF_DIR}/qmake.conf" mkdir -p ${QMAKE_CONF_DIR} diff --git a/packages/graphics/libmali-vulkan/package.mk b/packages/graphics/libmali-vulkan/package.mk index fe49113051..a2bc0d8f6c 100644 --- a/packages/graphics/libmali-vulkan/package.mk +++ b/packages/graphics/libmali-vulkan/package.mk @@ -18,7 +18,7 @@ make_target() { makeinstall_target() { mkdir -p ${INSTALL}/usr/{lib,share} tar -xvJf ${PKG_BUILD}/mali.tar.xz -C ${INSTALL} - mv ${INSTALL}/lib/${TARGET_ARCH}-linux-gnu/* ${INSTALL}/usr/lib + mv ${INSTALL}/lib/${TARGET_ARCH}-jelos-linux-gnu/* ${INSTALL}/usr/lib rm -r ${INSTALL}/lib tar -xvJf ${PKG_BUILD}/rootfs_additions.tar.xz -C ${INSTALL}/usr/share mv ${INSTALL}/usr/share/etc/vulkan/* ${INSTALL}/usr/share/vulkan/ diff --git a/packages/graphics/libmali/package.mk b/packages/graphics/libmali/package.mk index 21bd243610..d75abb9e61 100644 --- a/packages/graphics/libmali/package.mk +++ b/packages/graphics/libmali/package.mk @@ -15,9 +15,9 @@ PKG_LONGDESC="OpenGL ES user-space binary for the ARM Mali GPU family" PKG_PATCH_DIRS+="${DEVICE}" if [ "${TARGET_ARCH}" = "aarch64" ]; then - INSTARCH="aarch64-linux-gnu" + INSTARCH="aarch64-jelos-linux-gnu" elif [ "${TARGET_ARCH}" = "arm" ]; then - INSTARCH="arm-linux-gnueabihf" + INSTARCH="arm-jelos-linux-gnueabihf" fi PKG_CMAKE_OPTS_TARGET+=" -DMALI_ARCH=${INSTARCH}" diff --git a/packages/graphics/qt6/qt6base/package.mk b/packages/graphics/qt6/qt6base/package.mk index 95059d3497..7e5b3e1990 100644 --- a/packages/graphics/qt6/qt6base/package.mk +++ b/packages/graphics/qt6/qt6base/package.mk @@ -34,7 +34,7 @@ PKG_CMAKE_OPTS_HOST+=" pre_configure_target() { PKG_CMAKE_OPTS_TARGET+=" -GNinja \ - -DQT_HOST_PATH=${PKG_BUILD}/.x86_64-linux-gnu \ + -DQT_HOST_PATH=${PKG_BUILD}/.x86_64-jelos-linux-gnu \ -DFEATURE_gui=ON \ -DFEATURE_concurrent=OFF \ -DFEATURE_xml=OFF \ diff --git a/packages/graphics/qt6/qt6tools/package.mk b/packages/graphics/qt6/qt6tools/package.mk index 7474accab0..34b52fccc5 100644 --- a/packages/graphics/qt6/qt6tools/package.mk +++ b/packages/graphics/qt6/qt6tools/package.mk @@ -23,7 +23,7 @@ pre_configure_host() { pre_configure_target() { PKG_CMAKE_OPTS_TARGET+=" -GNinja \ - -DQT_HOST_PATH=${PKG_BUILD}/.x86_64-linux-gnu \ + -DQT_HOST_PATH=${PKG_BUILD}/.x86_64-jelos-linux-gnu \ -DQT_FEATURE_linguist=ON \ -DQT_FEATURE_qdbus=ON \ -DQT_DEBUG_FIND_PACKAGE=ON diff --git a/packages/graphics/qt6/qt6wayland/package.mk b/packages/graphics/qt6/qt6wayland/package.mk index fc2178e90b..84a7f9ae7d 100644 --- a/packages/graphics/qt6/qt6wayland/package.mk +++ b/packages/graphics/qt6/qt6wayland/package.mk @@ -21,7 +21,7 @@ pre_configure_host() { pre_configure_target() { PKG_CMAKE_OPTS_TARGET+=" -GNinja \ - -DQT_HOST_PATH=${PKG_BUILD}/.x86_64-linux-gnu \ + -DQT_HOST_PATH=${PKG_BUILD}/.x86_64-jelos-linux-gnu \ -DQT_DEBUG_FIND_PACKAGE=ON \ -DBUILD_WITH_PCH=OFF \ -DQT_BUILD_EXAMPLES=OFF \ diff --git a/packages/kernel/linux-firmware/kernel-firmware/package.mk b/packages/kernel/linux-firmware/kernel-firmware/package.mk index e7f40b7813..64a194ac58 100644 --- a/packages/kernel/linux-firmware/kernel-firmware/package.mk +++ b/packages/kernel/linux-firmware/kernel-firmware/package.mk @@ -8,6 +8,7 @@ PKG_SITE="https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmwar PKG_URL="https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/linux-firmware-${PKG_VERSION}.tar.gz" PKG_NEED_UNPACK="${PROJECT_DIR}/${PROJECT}/packages/${PKG_NAME} ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/packages/${PKG_NAME}" PKG_LONGDESC="kernel-firmware: kernel related firmware" +PKG_DEPENDS_HOST="toolchain" PKG_TOOLCHAIN="manual" configure_package() { diff --git a/packages/kernel/linux/package.mk b/packages/kernel/linux/package.mk index 3444e24cba..a8081a1d79 100644 --- a/packages/kernel/linux/package.mk +++ b/packages/kernel/linux/package.mk @@ -19,8 +19,8 @@ PKG_PATCH_DIRS+="${LINUX} ${DEVICE} default" PKG_KERNEL_CFG_FILE=$(kernel_config_path) || die if [ -n "${KERNEL_TOOLCHAIN}" ]; then - PKG_DEPENDS_HOST="${PKG_DEPENDS_HOST} gcc-${KERNEL_TOOLCHAIN}:host" - PKG_DEPENDS_TARGET="${PKG_DEPENDS_TARGET} gcc-${KERNEL_TOOLCHAIN}:host" + PKG_DEPENDS_HOST+=" gcc-${KERNEL_TOOLCHAIN}:host" + PKG_DEPENDS_TARGET+=" gcc-${KERNEL_TOOLCHAIN}:host" HEADERS_ARCH=${TARGET_ARCH} fi @@ -30,10 +30,9 @@ if [ "${PKG_BUILD_PERF}" != "no" ] && grep -q ^CONFIG_PERF_EVENTS= ${PKG_KERNEL_ fi if [[ "${TARGET_ARCH}" =~ i*86|x86_64 ]]; then - PKG_DEPENDS_TARGET+=" elfutils:host pciutils" - PKG_DEPENDS_UNPACK+=" intel-ucode kernel-firmware" + PKG_DEPENDS_TARGET+=" elfutils:host pciutils intel-ucode kernel-firmware" elif [ "${TARGET_ARCH}" = "arm" -a "${DEVICE}" = "iMX6" ]; then - PKG_DEPENDS_UNPACK+=" firmware-imx" + PKG_DEPENDS_TARGET+=" firmware-imx" fi if [[ "${KERNEL_TARGET}" = uImage* ]]; then diff --git a/packages/lang/Python3/patches/0029-configure.ac-fixup-CC-print-multiarch-output-for-mus.patch b/packages/lang/Python3/patches/0029-configure.ac-fixup-CC-print-multiarch-output-for-mus.patch index 5253076d90..f544b9d397 100644 --- a/packages/lang/Python3/patches/0029-configure.ac-fixup-CC-print-multiarch-output-for-mus.patch +++ b/packages/lang/Python3/patches/0029-configure.ac-fixup-CC-print-multiarch-output-for-mus.patch @@ -6,17 +6,17 @@ Subject: [PATCH] configure.ac: fixup $CC --print-multiarch output for GCC commit 6834b83784dcf0364eb820e8 (multiarch support for non-glibc linux systems), which is part of GCC 8+, changed the multiarch logic to use -$arch-linux-musl / $arch-linux-uclibc rather than $arch-linux-gnu. +$arch-linux-musl / $arch-linux-uclibc rather than $arch-jelos-linux-gnu. This then causes the python3 configure script to error out: -checking for the platform triplet based on compiler characteristics... powerpc-linux-gnu +checking for the platform triplet based on compiler characteristics... powerpc-jelos-linux-gnu configure: error: internal configure error for the platform triplet, please file a bug report http://autobuild.buildroot.net/results/cb4/cb49c539501342e45cbe5ade82e588fcdf51f05b As it requires that the --print-multiarch output (if not empty) matches the -deduced triplet (which always uses -linux-gnu). +deduced triplet (which always uses -jelos-linux-gnu). It isn't quite clear why --print-multiarch returns something for a non-multiarch toolchain on some architectures (E.G. PowerPC), but as a @@ -41,7 +41,7 @@ index ed03b27fb1..841fd6732c 100644 + [ + # GCC 8+ returns $arch-linux-{musl,uclibc} for musl/uClibc based + # toolchains confusing python. Fix that up -+ MULTIARCH=$($CC --print-multiarch 2>/dev/null | sed -E 's/-linux-(musl|uclibc)*$/-linux-gnu/') ++ MULTIARCH=$($CC --print-multiarch 2>/dev/null | sed -E 's/-linux-(musl|uclibc)*$/-jelos-linux-gnu/') + ] ) AC_SUBST([MULTIARCH]) diff --git a/packages/multimedia/ffmpeg/patches/libreelec/ffmpeg-001-libreelec.patch b/packages/multimedia/ffmpeg/patches/jelos/ffmpeg-001-jelos.patch similarity index 100% rename from packages/multimedia/ffmpeg/patches/libreelec/ffmpeg-001-libreelec.patch rename to packages/multimedia/ffmpeg/patches/jelos/ffmpeg-001-jelos.patch diff --git a/packages/multimedia/ffmpeg/patches/rpi/ffmpeg-001-rpi.patch b/packages/multimedia/ffmpeg/patches/rpi/ffmpeg-001-rpi.patch index 72cacc605c..66c5b00ce2 100644 --- a/packages/multimedia/ffmpeg/patches/rpi/ffmpeg-001-rpi.patch +++ b/packages/multimedia/ffmpeg/patches/rpi/ffmpeg-001-rpi.patch @@ -277,7 +277,7 @@ index 0000000000..b3b2d5509d +++ b/pi-util/clean_usr_libs.sh @@ -0,0 +1,26 @@ +set -e -+U=/usr/lib/arm-linux-gnueabihf ++U=/usr/lib/arm-jelos-linux-gnueabihf +rm -f $U/libavcodec.* +rm -f $U/libavdevice.* +rm -f $U/libavfilter.* @@ -285,7 +285,7 @@ index 0000000000..b3b2d5509d +rm -f $U/libavutil.* +rm -f $U/libswresample.* +rm -f $U/libswscale.* -+U=/usr/lib/arm-linux-gnueabihf/neon/vfp ++U=/usr/lib/arm-jelos-linux-gnueabihf/neon/vfp +rm -f $U/libavcodec.* +rm -f $U/libavdevice.* +rm -f $U/libavfilter.* @@ -293,7 +293,7 @@ index 0000000000..b3b2d5509d +rm -f $U/libavutil.* +rm -f $U/libswresample.* +rm -f $U/libswscale.* -+U=/usr/lib/aarch64-linux-gnu ++U=/usr/lib/aarch64-jelos-linux-gnu +rm -f $U/libavcodec.* +rm -f $U/libavdevice.* +rm -f $U/libavfilter.* @@ -325,7 +325,7 @@ index 0000000000..9e3bbfa190 +mkdir -p $OUT +cd $OUT + -+A=aarch64-linux-gnu ++A=aarch64-jelos-linux-gnu +USR_PREFIX=`pwd`/install +LIB_PREFIX=$USR_PREFIX/lib/$A +INC_PREFIX=$USR_PREFIX/include/$A @@ -900,11 +900,11 @@ index 0000000000..65576846e8 + +if [ "$MC" == "arm64" ]; then + echo "M/C aarch64" -+ A=aarch64-linux-gnu ++ A=aarch64-jelos-linux-gnu + B=arm64 +elif [ "$MC" == "armhf" ]; then + echo "M/C armv7" -+ A=arm-linux-gnueabihf ++ A=arm-jelos-linux-gnueabihf + B=armv7 + MCOPTS="--arch=armv6t2 --cpu=cortex-a7" + RPI_DEFINES=-mfpu=neon-vfpv4 @@ -32457,7 +32457,7 @@ index b3b2d5509d..01bd6a6a22 100755 +++ b/pi-util/clean_usr_libs.sh @@ -1,4 +1,20 @@ set -e -+U=/usr/include/arm-linux-gnueabihf ++U=/usr/include/arm-jelos-linux-gnueabihf +rm -rf $U/libavcodec +rm -rf $U/libavdevice +rm -rf $U/libavfilter @@ -32465,7 +32465,7 @@ index b3b2d5509d..01bd6a6a22 100755 +rm -rf $U/libavutil +rm -rf $U/libswresample +rm -rf $U/libswscale -+U=/usr/include/aarch64-linux-gnu ++U=/usr/include/aarch64-jelos-linux-gnu +rm -rf $U/libavcodec +rm -rf $U/libavdevice +rm -rf $U/libavfilter @@ -32473,7 +32473,7 @@ index b3b2d5509d..01bd6a6a22 100755 +rm -rf $U/libavutil +rm -rf $U/libswresample +rm -rf $U/libswscale - U=/usr/lib/arm-linux-gnueabihf + U=/usr/lib/arm-jelos-linux-gnueabihf rm -f $U/libavcodec.* rm -f $U/libavdevice.* @@ -32580,11 +32580,11 @@ index 082d9b5832..0a7d230f1b 100755 -if [ "$MC" == "arm64" ]; then - echo "M/C aarch64" -- A=aarch64-linux-gnu +- A=aarch64-jelos-linux-gnu - B=arm64 -elif [ "$MC" == "armhf" ]; then - echo "M/C armv7" -- A=arm-linux-gnueabihf +- A=arm-jelos-linux-gnueabihf - B=armv7 - MCOPTS="--arch=armv6t2 --cpu=cortex-a7" - RPI_DEFINES=-mfpu=neon-vfpv4 @@ -32596,13 +32596,13 @@ index 082d9b5832..0a7d230f1b 100755 +if [ "$MC" == "armv7l" ] || [ "$MC" == "aarch64" ]; then + if [ "$LB" == "32" ]; then + echo "M/C armv7" -+ A=arm-linux-gnueabihf ++ A=arm-jelos-linux-gnueabihf + B=armv7 + MCOPTS="--arch=armv6t2 --cpu=cortex-a7" + RPI_DEFINES=-mfpu=neon-vfpv4 + elif [ "$LB" == "64" ]; then + echo "M/C aarch64" -+ A=aarch64-linux-gnu ++ A=aarch64-jelos-linux-gnu + B=arm64 + else + echo "Unknown LONG_BIT name: $LB" diff --git a/packages/network/avahi/system.d/avahi-daemon.service b/packages/network/avahi/system.d/avahi-daemon.service index 63cd640cb8..3f9b1e89da 100644 --- a/packages/network/avahi/system.d/avahi-daemon.service +++ b/packages/network/avahi/system.d/avahi-daemon.service @@ -6,7 +6,7 @@ ConditionPathExists=/storage/.cache/services/avahi.conf [Service] Restart=on-failure -EnvironmentFile=-/run/libreelec/debug/avahi.conf +EnvironmentFile=-/run/jelos/debug/avahi.conf ExecStart=/usr/sbin/avahi-daemon -s $AVAHI_DEBUG ExecReload=/usr/sbin/avahi-daemon -r TimeoutStopSec=1s diff --git a/packages/network/bluez/system.d/bluetooth.service b/packages/network/bluez/system.d/bluetooth.service index 3f0ff2bf9a..2918d2a979 100644 --- a/packages/network/bluez/system.d/bluetooth.service +++ b/packages/network/bluez/system.d/bluetooth.service @@ -10,7 +10,7 @@ Type=dbus BusName=org.bluez NotifyAccess=main EnvironmentFile=/storage/.cache/services/bluez.conf -EnvironmentFile=-/run/libreelec/debug/bluez.conf +EnvironmentFile=-/run/jelos/debug/bluez.conf ExecStart=/usr/lib/bluetooth/bluetoothd $BLUEZ_ARGS $BLUEZ_DEBUG CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW CAP_FOWNER LimitNPROC=1 diff --git a/packages/network/bluez/system.d/obex.service b/packages/network/bluez/system.d/obex.service index 919d75babd..52f01a4f44 100644 --- a/packages/network/bluez/system.d/obex.service +++ b/packages/network/bluez/system.d/obex.service @@ -8,7 +8,7 @@ ConditionPathExists=/storage/.cache/services/bluez.conf [Service] EnvironmentFile=/storage/.cache/services/obexd.conf -EnvironmentFile=-/run/libreelec/debug/obexd.conf +EnvironmentFile=-/run/jelos/debug/obexd.conf ExecStartPre=/bin/sh -c 'mkdir -p $OBEXD_ROOT' ExecStart=/usr/lib/bluetooth/obexd -r $OBEXD_ROOT $OBEXD_DEBUG TimeoutStopSec=1s diff --git a/packages/network/connman/scripts/connman-setup b/packages/network/connman/scripts/connman-setup index 16bc279ad2..d0b7fc85ed 100755 --- a/packages/network/connman/scripts/connman-setup +++ b/packages/network/connman/scripts/connman-setup @@ -18,8 +18,8 @@ # switch resolv.conf management to connman and use current contents # as a fallback -if [ -f /run/libreelec/resolv.conf ]; then - cat /run/libreelec/resolv.conf > /run/connman/resolv.conf +if [ -f /run/jelos/resolv.conf ]; then + cat /run/jelos/resolv.conf > /run/connman/resolv.conf fi -rm -f /run/libreelec/resolv.conf -ln -s /run/connman/resolv.conf /run/libreelec/resolv.conf +rm -f /run/jelos/resolv.conf +ln -s /run/connman/resolv.conf /run/jelos/resolv.conf diff --git a/packages/network/connman/system.d/connman.service b/packages/network/connman/system.d/connman.service index 0ae1867505..14a0b320a2 100644 --- a/packages/network/connman/system.d/connman.service +++ b/packages/network/connman/system.d/connman.service @@ -12,7 +12,7 @@ ConditionPathExists=!/dev/.kernel_ipconfig Type=dbus BusName=net.connman Restart=on-failure -EnvironmentFile=-/run/libreelec/debug/connman.conf +EnvironmentFile=-/run/jelos/debug/connman.conf ExecStart=/bin/sh -c ". /usr/lib/connman/connman-setup; exec /usr/sbin/connmand -nr $CONNMAN_MAIN $CONNMAN_DEBUG" StandardOutput=null RestartSec=2 diff --git a/packages/network/iptables/package.mk b/packages/network/iptables/package.mk index 088c724492..d63d9bd409 100644 --- a/packages/network/iptables/package.mk +++ b/packages/network/iptables/package.mk @@ -24,8 +24,8 @@ post_makeinstall_target() { mkdir -p ${INSTALL}/etc/iptables/ cp -PR ${PKG_DIR}/config/* ${INSTALL}/etc/iptables/ - mkdir -p ${INSTALL}/usr/lib/coreelec - cp ${PKG_DIR}/scripts/iptables_helper ${INSTALL}/usr/lib/coreelec + mkdir -p ${INSTALL}/usr/lib/jelos/ + cp ${PKG_DIR}/scripts/iptables_helper ${INSTALL}/usr/lib/jelos/ } post_install() { diff --git a/packages/network/iptables/system.d/iptables.service b/packages/network/iptables/system.d/iptables.service index 5e23ef1de8..c4a6d51fbc 100644 --- a/packages/network/iptables/system.d/iptables.service +++ b/packages/network/iptables/system.d/iptables.service @@ -1,6 +1,6 @@ [Unit] Description=IPTABLES Packet Filtering -ConditionPathExists=/usr/lib/coreelec/iptables_helper +ConditionPathExists=/usr/lib/jelos/iptables_helper ConditionPathExists=|/storage/.cache/services/iptables.conf Before=network.target Wants=network.target @@ -8,9 +8,9 @@ Wants=network.target [Service] Type=oneshot EnvironmentFile=-/storage/.cache/services/iptables.conf -ExecStart=/usr/lib/coreelec/iptables_helper enable -ExecReload=/usr/lib/coreelec/iptables_helper enable -ExecStop=/usr/lib/coreelec/iptables_helper disable +ExecStart=/usr/lib/jelos/iptables_helper enable +ExecReload=/usr/lib/jelos/iptables_helper enable +ExecStop=/usr/lib/jelos/iptables_helper disable RemainAfterExit=yes [Install] diff --git a/packages/security/openssl/package.mk b/packages/security/openssl/package.mk index b3c68b73e7..d9e6af6b7b 100644 --- a/packages/security/openssl/package.mk +++ b/packages/security/openssl/package.mk @@ -90,16 +90,16 @@ post_makeinstall_target() { # give user the chance to include their own CA mkdir -p ${INSTALL}/usr/bin cp ${PKG_DIR}/scripts/openssl-config ${INSTALL}/usr/bin - ln -sf /run/libreelec/cacert.pem ${INSTALL}/etc/ssl/cacert.pem - ln -sf /run/libreelec/cacert.pem ${INSTALL}/etc/ssl/cert.pem + ln -sf /run/jelos/cacert.pem ${INSTALL}/etc/ssl/cacert.pem + ln -sf /run/jelos/cacert.pem ${INSTALL}/etc/ssl/cert.pem # backwards comatibility mkdir -p ${INSTALL}/etc/pki/tls - ln -sf /run/libreelec/cacert.pem ${INSTALL}/etc/pki/tls/cacert.pem + ln -sf /run/jelos/cacert.pem ${INSTALL}/etc/pki/tls/cacert.pem mkdir -p ${INSTALL}/etc/pki/tls/certs - ln -sf /run/libreelec/cacert.pem ${INSTALL}/etc/pki/tls/certs/ca-bundle.crt + ln -sf /run/jelos/cacert.pem ${INSTALL}/etc/pki/tls/certs/ca-bundle.crt mkdir -p ${INSTALL}/usr/lib/ssl - ln -sf /run/libreelec/cacert.pem ${INSTALL}/usr/lib/ssl/cert.pem + ln -sf /run/jelos/cacert.pem ${INSTALL}/usr/lib/ssl/cert.pem } post_install() { diff --git a/packages/security/openssl/scripts/openssl-config b/packages/security/openssl/scripts/openssl-config index fc25eded24..20ecb73cea 100755 --- a/packages/security/openssl/scripts/openssl-config +++ b/packages/security/openssl/scripts/openssl-config @@ -3,8 +3,8 @@ # SPDX-License-Identifier: GPL-2.0 # Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) -cp /etc/ssl/cacert.pem.system /run/libreelec/cacert.pem +cp /etc/ssl/cacert.pem.system /run/jelos/cacert.pem -[ -f /storage/.config/cacert.pem ] && cat /storage/.config/cacert.pem >>/run/libreelec/cacert.pem +[ -f /storage/.config/cacert.pem ] && cat /storage/.config/cacert.pem >>/run/jelos/cacert.pem exit 0 diff --git a/packages/sysutils/busybox/package.mk b/packages/sysutils/busybox/package.mk index 4d72b4a187..b838d0a728 100644 --- a/packages/sysutils/busybox/package.mk +++ b/packages/sysutils/busybox/package.mk @@ -127,14 +127,14 @@ makeinstall_target() { cp ${PKG_DIR}/scripts/pastebinit ${INSTALL}/usr/bin/ ln -sf pastebinit ${INSTALL}/usr/bin/paste - mkdir -p ${INSTALL}/usr/lib/coreelec - cp ${PKG_DIR}/scripts/functions ${INSTALL}/usr/lib/coreelec - cp ${PKG_DIR}/scripts/fs-resize ${INSTALL}/usr/lib/coreelec + mkdir -p ${INSTALL}/usr/lib/jelos/ + cp ${PKG_DIR}/scripts/functions ${INSTALL}/usr/lib/jelos/ + cp ${PKG_DIR}/scripts/fs-resize ${INSTALL}/usr/lib/jelos/ sed -e "s/@DISTRONAME@/${DISTRONAME}/g" \ - -i ${INSTALL}/usr/lib/coreelec/fs-resize + -i ${INSTALL}/usr/lib/jelos/fs-resize if listcontains "${FIRMWARE}" "rpi-eeprom"; then - cp ${PKG_DIR}/scripts/rpi-flash-firmware ${INSTALL}/usr/lib/libreelec + cp ${PKG_DIR}/scripts/rpi-flash-firmware ${INSTALL}/usr/lib/jelos/ fi mkdir -p ${INSTALL}/etc diff --git a/packages/sysutils/busybox/scripts/fs-resize b/packages/sysutils/busybox/scripts/fs-resize index 4f3d941fba..aecd49faec 100755 --- a/packages/sysutils/busybox/scripts/fs-resize +++ b/packages/sysutils/busybox/scripts/fs-resize @@ -6,7 +6,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) if [ -e /storage/.please_resize_me ] ; then - . /usr/lib/coreelec/functions + . /usr/lib/jelos/functions hidecursor diff --git a/packages/sysutils/busybox/scripts/init b/packages/sysutils/busybox/scripts/init index 45df97666a..fa3a2f8624 100755 --- a/packages/sysutils/busybox/scripts/init +++ b/packages/sysutils/busybox/scripts/init @@ -292,7 +292,7 @@ mount_sysroot() { get_project_arch() { if [ -f ${1}/etc/os-release ]; then . ${1}/etc/os-release - echo "${COREELEC_ARCH:-${LIBREELEC_ARCH}}" + echo "${COREELEC_ARCH:-${OS_ARCH}}" fi } diff --git a/packages/sysutils/busybox/scripts/rpi-flash-firmware b/packages/sysutils/busybox/scripts/rpi-flash-firmware index d519209f80..eb8237a014 100755 --- a/packages/sysutils/busybox/scripts/rpi-flash-firmware +++ b/packages/sysutils/busybox/scripts/rpi-flash-firmware @@ -5,7 +5,7 @@ FLAG_FILE="/storage/.rpi_flash_firmware" -. /usr/lib/libreelec/functions +. /usr/lib/jelos/functions hidecursor diff --git a/packages/sysutils/busybox/sleep.d.serial/99-suspend-modules.sh b/packages/sysutils/busybox/sleep.d.serial/99-suspend-modules.sh index 37545ee60a..9a81bcb140 100755 --- a/packages/sysutils/busybox/sleep.d.serial/99-suspend-modules.sh +++ b/packages/sysutils/busybox/sleep.d.serial/99-suspend-modules.sh @@ -51,7 +51,7 @@ modunload() _rmmod() { if modprobe -r "$1"; then - touch "/run/libreelec/suspend/module:$1" + touch "/run/jelos/suspend/module:$1" return 0 else logger -t suspend-modules "# could not unload '$1', usage count was $2" @@ -61,7 +61,7 @@ _rmmod() resume_modules() { - for x in /run/libreelec/suspend/module:* ; do + for x in /run/jelos/suspend/module:* ; do [ -O "${x}" ] || continue modprobe "${x##*:}" &>/dev/null && \ logger -t resume-modules "Reloaded module ${x##*:}." || \ @@ -73,8 +73,8 @@ suspend_modules() { [ -z "$SUSPEND_MODULES" ] && return 0 # clean up - rm -rf /run/libreelec/suspend - mkdir -p /run/libreelec/suspend + rm -rf /run/jelos/suspend + mkdir -p /run/jelos/suspend for x in $SUSPEND_MODULES ; do modunload $x && \ logger -t suspend-modules "Unloading kernel module $x: Done" || \ diff --git a/packages/sysutils/busybox/system.d/fs-resize.service b/packages/sysutils/busybox/system.d/fs-resize.service index 50d2026672..e33e5e20ac 100644 --- a/packages/sysutils/busybox/system.d/fs-resize.service +++ b/packages/sysutils/busybox/system.d/fs-resize.service @@ -4,7 +4,7 @@ DefaultDependencies=no [Service] Type=idle -ExecStart=/usr/lib/coreelec/fs-resize +ExecStart=/usr/lib/jelos/fs-resize StandardInput=tty-force StandardOutput=inherit StandardError=inherit diff --git a/packages/sysutils/busybox/system.d/rpi-flash-firmware.service b/packages/sysutils/busybox/system.d/rpi-flash-firmware.service index c05ea654d4..4061861b34 100644 --- a/packages/sysutils/busybox/system.d/rpi-flash-firmware.service +++ b/packages/sysutils/busybox/system.d/rpi-flash-firmware.service @@ -6,7 +6,7 @@ DefaultDependencies=no [Service] Type=idle -ExecStart=/usr/lib/libreelec/rpi-flash-firmware +ExecStart=/usr/lib/jelos/rpi-flash-firmware StandardInput=tty-force StandardOutput=inherit StandardError=inherit diff --git a/packages/sysutils/systemd/package.mk b/packages/sysutils/systemd/package.mk index 5f34601830..dcaf97782a 100644 --- a/packages/sysutils/systemd/package.mk +++ b/packages/sysutils/systemd/package.mk @@ -218,8 +218,8 @@ post_makeinstall_target() { cp ${PKG_DIR}/scripts/systemd-timesyncd-setup ${INSTALL}/usr/sbin # /etc/resolv.conf and /etc/hosts must be writable - ln -sf /run/libreelec/resolv.conf ${INSTALL}/etc/resolv.conf - ln -sf /run/libreelec/hosts ${INSTALL}/etc/hosts + ln -sf /run/jelos/resolv.conf ${INSTALL}/etc/resolv.conf + ln -sf /run/jelos/hosts ${INSTALL}/etc/hosts # provide 'halt', 'shutdown', 'reboot' & co. ln -sf /usr/bin/systemctl ${INSTALL}/usr/sbin/halt diff --git a/packages/sysutils/systemd/scripts/network-base-setup b/packages/sysutils/systemd/scripts/network-base-setup index c67965e42d..6a53dc8750 100755 --- a/packages/sysutils/systemd/scripts/network-base-setup +++ b/packages/sysutils/systemd/scripts/network-base-setup @@ -9,19 +9,19 @@ hostnamectl --transient hostname ${HOSTNAME} avahi-set-host-name ${HOSTNAME} # setup /etc/hosts -rm -f /run/libreelec/hosts +rm -f /run/jelos/hosts if [ -f /storage/.config/hosts.conf ]; then - cat /storage/.config/hosts.conf > /run/libreelec/hosts + cat /storage/.config/hosts.conf > /run/jelos/hosts fi # setup /etc/resolv.conf -rm -f /run/libreelec/resolv.conf +rm -f /run/jelos/resolv.conf if [ -f /storage/.config/resolv.conf ]; then - cat /storage/.config/resolv.conf > /run/libreelec/resolv.conf + cat /storage/.config/resolv.conf > /run/jelos/resolv.conf elif [ -f /dev/.kernel_ipconfig -a -f /proc/net/pnp ]; then - cat /proc/net/pnp > /run/libreelec/resolv.conf + cat /proc/net/pnp > /run/jelos/resolv.conf else - cat << EOF > /run/libreelec/resolv.conf + cat << EOF > /run/jelos/resolv.conf nameserver 8.8.8.8 nameserver 8.8.4.4 EOF diff --git a/packages/sysutils/systemd/system.d/debugconfig.service b/packages/sysutils/systemd/system.d/debugconfig.service index 4261d0cf44..ab67d3f5f7 100644 --- a/packages/sysutils/systemd/system.d/debugconfig.service +++ b/packages/sysutils/systemd/system.d/debugconfig.service @@ -7,7 +7,7 @@ ConditionPathExists=|/storage/.cache/debug.libreelec [Service] Type=oneshot -ExecStart=/bin/sh -c 'cp /usr/share/debugconf/*.conf /run/libreelec/debug' +ExecStart=/bin/sh -c 'cp /usr/share/debugconf/*.conf /run/jelos/debug' RemainAfterExit=yes [Install] diff --git a/packages/sysutils/systemd/tmpfiles.d/z_01_openelec.conf b/packages/sysutils/systemd/tmpfiles.d/z_01_openelec.conf index 07d11f550b..7299cb12c5 100644 --- a/packages/sysutils/systemd/tmpfiles.d/z_01_openelec.conf +++ b/packages/sysutils/systemd/tmpfiles.d/z_01_openelec.conf @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-2.0-or-later # Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv) -d /run/libreelec 0755 root root - - -d /run/libreelec/debug 0755 root root - - +d /run/jelos/ 0755 root root - - +d /run/jelos/debug 0755 root root - - diff --git a/packages/sysutils/util-linux/package.mk b/packages/sysutils/util-linux/package.mk index 751f4cab3b..6ca985139b 100644 --- a/packages/sysutils/util-linux/package.mk +++ b/packages/sysutils/util-linux/package.mk @@ -81,8 +81,8 @@ fi post_makeinstall_target() { if [ "${SWAP_SUPPORT}" = "yes" ]; then - mkdir -p ${INSTALL}/usr/lib/libreelec - cp -PR ${PKG_DIR}/scripts/mount-swap ${INSTALL}/usr/lib/libreelec + mkdir -p ${INSTALL}/usr/lib/jelos/ + cp -PR ${PKG_DIR}/scripts/mount-swap ${INSTALL}/usr/lib/jelos/ mkdir -p ${INSTALL}/etc cat ${PKG_DIR}/config/swap.conf | \ diff --git a/packages/sysutils/util-linux/system.d/swap.service b/packages/sysutils/util-linux/system.d/swap.service index 4bf0f8fb0b..a5bf1b2a70 100644 --- a/packages/sysutils/util-linux/system.d/swap.service +++ b/packages/sysutils/util-linux/system.d/swap.service @@ -13,8 +13,8 @@ ConditionKernelCommandLine=!installer [Service] Environment=HOME=/storage Type=oneshot -ExecStartPre=/usr/lib/libreelec/mount-swap create -ExecStart=/usr/lib/libreelec/mount-swap mount +ExecStartPre=/usr/lib/jelos/mount-swap create +ExecStart=/usr/lib/jelos/mount-swap mount RemainAfterExit=yes [Install] diff --git a/packages/tools/installer/config/installer.gptk b/packages/tools/installer/config/installer.gptk new file mode 100644 index 0000000000..b6095deb97 --- /dev/null +++ b/packages/tools/installer/config/installer.gptk @@ -0,0 +1,24 @@ +back = esc +start = enter +a = enter +b = esc +x = \\ +y = \\ +l1 = \\ +l2 = \\ +l3 = \\ +r1 = \\ +r2 = \\ +r3 = \\ +up = up +down = down +left = left +right = right +left_analog_up = up +left_analog_down = down +left_analog_left = left +left_analog_right = right +right_analog_up = \\ +right_analog_down = \\ +right_analog_left = \\ +right_analog_right = \\ diff --git a/packages/tools/installer/package.mk b/packages/tools/installer/package.mk index c33630564a..45d6d22c5d 100644 --- a/packages/tools/installer/package.mk +++ b/packages/tools/installer/package.mk @@ -18,8 +18,7 @@ post_install() { -i ${INSTALL}/usr/bin/installer mkdir -p ${INSTALL}/etc - find_file_path config/installer.conf - cp ${FOUND_PATH} ${INSTALL}/etc + cp ${PKG_DIR}/config/* ${INSTALL}/etc sed -e "s/@SYSTEM_SIZE@/${SYSTEM_SIZE}/g" \ -e "s/@SYSTEM_PART_START@/${SYSTEM_PART_START}/g" \ -e "s/@SYSLINUX_PARAMETERS@/${SYSLINUX_PARAMETERS}/g" \ diff --git a/packages/tools/installer/scripts/installer b/packages/tools/installer/scripts/installer index 901e9f3ffd..c772a0d71f 100755 --- a/packages/tools/installer/scripts/installer +++ b/packages/tools/installer/scripts/installer @@ -35,6 +35,16 @@ trap '' 2 # Bring in OS variables. . /etc/os-release +# Initialize controller input +/usr/bin/control-gen_init.sh +source /storage/.config/gptokeyb/control.ini +get_controls + +if [ -f "/etc/installer.gptk" ] +then + cp /etc/installer.gptk /storage/.config/gptokeyb/installer.gptk + ${GPTOKEYB} "installer" -c "/storage/.config/gptokeyb/installer.gptk" & +fi dbglg() { # Acts just like echo cmd, with automatic redirection @@ -568,5 +578,7 @@ while true; do menu_main done +kill -9 $(pidof gptokeyb) 2>/dev/null + # exit cleanly exit 0 diff --git a/packages/tools/python-evdev/package.mk b/packages/tools/python-evdev/package.mk index 22a7af34c3..b0e5f77998 100644 --- a/packages/tools/python-evdev/package.mk +++ b/packages/tools/python-evdev/package.mk @@ -33,6 +33,6 @@ makeinstall_target() { post_makeinstall_target() { for so in _ecodes _input _uinput do - mv ${INSTALL}/usr/lib/${PKG_PYTHON_VERSION}/site-packages/evdev/${so}.cpython-311-x86_64-linux-gnu.so ${INSTALL}/usr/lib/${PKG_PYTHON_VERSION}/site-packages/evdev/${so}.cpython-311-aarch64-linux-gnu.so + mv ${INSTALL}/usr/lib/${PKG_PYTHON_VERSION}/site-packages/evdev/${so}.cpython-311-x86_64-jelos-linux-gnu.so ${INSTALL}/usr/lib/${PKG_PYTHON_VERSION}/site-packages/evdev/${so}.cpython-311-aarch64-jelos-linux-gnu.so done } diff --git a/packages/tools/sound/libvorbisidec/package.mk b/packages/tools/sound/libvorbisidec/package.mk index a3ab12bbfd..d4e5aac785 100644 --- a/packages/tools/sound/libvorbisidec/package.mk +++ b/packages/tools/sound/libvorbisidec/package.mk @@ -14,7 +14,7 @@ PKG_TOOLCHAIN="make" make_target() { cd ${PKG_BUILD} -./autogen.sh HAVE_OGG=no --disable-mmx --prefix=/usr --datadir=/usr/share/ --datarootdir=/usr/share/ --host=armv8a-libreelec-linux --enable-fb --enable-freetype --with-freetype-prefix=${SYSROOT_PREFIX}/usr/ --enable-slang +./autogen.sh HAVE_OGG=no --disable-mmx --prefix=/usr --datadir=/usr/share/ --datarootdir=/usr/share/ --host=armv8a-linux --enable-fb --enable-freetype --with-freetype-prefix=${SYSROOT_PREFIX}/usr/ --enable-slang make } diff --git a/packages/ui/emulationstation/package.mk b/packages/ui/emulationstation/package.mk index 05b96747e0..b6697fdbc4 100644 --- a/packages/ui/emulationstation/package.mk +++ b/packages/ui/emulationstation/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="emulationstation" -PKG_VERSION="b298647ee7988cf2a34fedd4442f357f63c66597" +PKG_VERSION="652c75dd3cf951e3554802100e6ffeb8dc7b40c9" PKG_GIT_CLONE_BRANCH="main" PKG_REV="1" PKG_ARCH="any" diff --git a/packages/virtual/image/package.mk b/packages/virtual/image/package.mk index 8be4d05eee..791266ffc7 100644 --- a/packages/virtual/image/package.mk +++ b/packages/virtual/image/package.mk @@ -58,7 +58,7 @@ fi # Add support for containers [ "${CONTAINER_SUPPORT}" = "yes" ] && PKG_DEPENDS_TARGET+=" ${PKG_TOOLS} docker" -[ "${DEBUG_SUPPORT}" = "yes" ] && PKG_DEPENDS_TARGET+=" ${PKG_DEBUG}" +[ "${DEBUG_PACKAGES}" = "yes" ] && PKG_DEPENDS_TARGET+=" ${PKG_DEBUG}" # 32Bit package support [ "${ENABLE_32BIT}" == true ] && PKG_DEPENDS_TARGET+=" lib32" diff --git a/packages/virtual/toolchain/package.mk b/packages/virtual/toolchain/package.mk index 08a47d7d2d..2231b828b3 100644 --- a/packages/virtual/toolchain/package.mk +++ b/packages/virtual/toolchain/package.mk @@ -7,7 +7,7 @@ PKG_VERSION="" PKG_LICENSE="GPL" PKG_SITE="https://libreelec.tv" PKG_URL="" -PKG_DEPENDS_HOST="autoconf:host autoconf-archive:host automake:host bison:host configtools:host cmake:host flex:host intltool:host libtool:host ninja:host make:host meson:host p7zip:host pigz:host sed:host xmlstarlet:host xz:host nettle:host rdfind:host" +PKG_DEPENDS_HOST="autoconf:host autoconf-archive:host automake:host bison:host configtools:host cmake:host flex:host intltool:host libtool:host ninja:host make:host meson:host p7zip:host pigz:host sed:host xmlstarlet:host xz:host" PKG_DEPENDS_TARGET="toolchain:host gcc:host" PKG_SECTION="virtual" PKG_LONGDESC="LibreELEC.tv' toolchain to compile all packages" diff --git a/packages/web/curl/package.mk b/packages/web/curl/package.mk index 2f0090b7a8..d3a0174fda 100644 --- a/packages/web/curl/package.mk +++ b/packages/web/curl/package.mk @@ -62,7 +62,7 @@ PKG_CONFIGURE_OPTS_TARGET="ac_cv_lib_rtmp_RTMP_Init=yes \ --with-ssl \ --without-mbedtls \ --without-nss \ - --with-ca-bundle=/run/libreelec/cacert.pem \ + --with-ca-bundle=/run/jelos/cacert.pem \ --without-ca-path \ --without-libpsl \ --without-libssh2 \ diff --git a/packages/x11/util/xorg-launch-helper/scripts/xorg-launch b/packages/x11/util/xorg-launch-helper/scripts/xorg-launch index 9e6c719783..79f36b8358 100755 --- a/packages/x11/util/xorg-launch-helper/scripts/xorg-launch +++ b/packages/x11/util/xorg-launch-helper/scripts/xorg-launch @@ -5,7 +5,7 @@ # wait for xorg-configure@.service # max 10 seconds -ARGS_FILE="/run/libreelec/xorg-settings.conf" +ARGS_FILE="/run/jelos/xorg-settings.conf" for i in $(seq 1 40) ; do if [ -e "$ARGS_FILE" ] ; then break @@ -14,7 +14,7 @@ for i in $(seq 1 40) ; do done if [ -e "$ARGS_FILE" ] ; then - . /run/libreelec/xorg-settings.conf + . /run/jelos/xorg-settings.conf exec xorg-launch-helper $@ $XORG_ARGS else echo "" > /dev/tty1 diff --git a/packages/x11/xserver/xwayland/scripts/xorg-configure b/packages/x11/xserver/xwayland/scripts/xorg-configure index a7e9a97c35..8160c6fe38 100755 --- a/packages/x11/xserver/xwayland/scripts/xorg-configure +++ b/packages/x11/xserver/xwayland/scripts/xorg-configure @@ -105,6 +105,6 @@ logger -t Xorg "### creating needed directories and symlinks ###" ################################################################################ logger -t Xorg "### starting Xorg with '${DISPLAY} vt01 ${XORG_ARGS}' ###" - mkdir -p /run/libreelec - echo "XORG_ARGS=\"${XORG_ARGS}\"" > /run/libreelec/xorg-settings.conf + mkdir -p /run/jelos/ + echo "XORG_ARGS=\"${XORG_ARGS}\"" > /run/jelos/xorg-settings.conf diff --git a/packages/x11/xserver/xwayland/system.d/xorg.service b/packages/x11/xserver/xwayland/system.d/xorg.service index a9dbde6893..78e276669c 100644 --- a/packages/x11/xserver/xwayland/system.d/xorg.service +++ b/packages/x11/xserver/xwayland/system.d/xorg.service @@ -6,7 +6,7 @@ ConditionKernelCommandLine=!installer [Service] Type=notify -EnvironmentFile=-/run/libreelec/debug/xorg.conf +EnvironmentFile=-/run/jelos/debug/xorg.conf ExecStart=/usr/bin/xorg-launch -nolisten tcp vt01 $XORG_DEBUG Restart=always RestartSec=2 diff --git a/scripts/build b/scripts/build index ce6018842f..4eb8828b1b 100755 --- a/scripts/build +++ b/scripts/build @@ -237,18 +237,18 @@ fi # create wrapper scripts in build dir and use them for CC/CXX when # building for host and local-cc build flag is set if [ "${TARGET}" = "host" ] && flag_enabled "local-cc" "no"; then - cat > libreelec-local-cc << EOF + cat > jelos-local-cc << EOF #!/bin/sh exec ${CC} "\$@" EOF - chmod +x libreelec-local-cc - export CC=$(pwd)/libreelec-local-cc - cat > libreelec-local-cxx << EOF + chmod +x jelos-local-cc + export CC=$(pwd)/jelos-local-cc + cat > jelos-local-cxx << EOF #!/bin/sh exec ${CXX} "\$@" EOF - chmod +x libreelec-local-cxx - export CXX=$(pwd)/libreelec-local-cxx + chmod +x jelos-local-cxx + export CXX=$(pwd)/jelos-local-cxx fi # configure diff --git a/scripts/build_compat b/scripts/build_compat index 6be1240b63..1e87018c9b 100755 --- a/scripts/build_compat +++ b/scripts/build_compat @@ -58,18 +58,6 @@ else GIT_HASH=$(git rev-parse HEAD) fi -if [ "${OS_VERSION}" = "devel" ]; then - GIT_ABBREV=${GIT_HASH:0:7} - DEVEL_VERSION=${OS_VERSION} - case "${BUILD_PERIODIC}" in - nightly) OS_VERSION=nightly-$(date +%Y%m%d)-${GIT_ABBREV};; - daily) OS_VERSION=daily-$(date +%Y%j)-${GIT_ABBREV};; - weekly) OS_VERSION=weekly-$(date +%G%V)-${GIT_ABBREV};; - monthly) OS_VERSION=monthly-$(date +%Y%m)-${GIT_ABBREV};; - *) OS_VERSION=devel-$(date +%s);; - esac -fi - # Get origin url, fix git:// and git@github.com: urls if necessary ORIGIN_URL="$(git remote -v | awk '$1 == "origin" { print $2 }' | head -1 | sed 's#\.git$##;s#^git:#https:#;s#^git@github\.com:#https://github.com/#')" @@ -77,21 +65,17 @@ if [ -n "${CUSTOM_VERSION}" ]; then export OS_VERSION="${CUSTOM_VERSION}" fi -LIBREELEC_ARCH="${DEVICE:-${PROJECT}}.${TARGET_ARCH}" -TARGET_VERSION="${LIBREELEC_ARCH}-${OS_VERSION}" +OS_ARCH="${DEVICE:-${PROJECT}}.${TARGET_ARCH}" +TARGET_VERSION="${OS_ARCH}-${OS_VERSION}" if [ -n "${CUSTOM_IMAGE_NAME}" ]; then IMAGE_NAME="${CUSTOM_IMAGE_NAME}" else if [ "${DEVEL_VERSION}" = "devel" ]; then - IMAGE_NAME="${DISTRONAME}-${LIBREELEC_ARCH}-${OS_VERSION}-${OS_VERSION}" + IMAGE_NAME="${DISTRONAME}-${OS_ARCH}-${OS_VERSION}-${OS_VERSION}" else IMAGE_NAME="${DISTRONAME}-${TARGET_VERSION}" fi - - if [ -n "${UBOOT_SYSTEM}" ] && [ "${UBOOT_SYSTEM}" != "${DEVICE:-${PROJECT}}" ]; then - IMAGE_NAME="${IMAGE_NAME}" - fi fi if [ -n "${IMAGE_SUFFIX}" ]; then diff --git a/scripts/checkdeps b/scripts/checkdeps index c76bf44d8d..eeafbd7bbd 100755 --- a/scripts/checkdeps +++ b/scripts/checkdeps @@ -97,11 +97,11 @@ perl_map=( # Native aarch64 on debian host needs to support rkbin (Rockchip) and aml_encrypt_* (Amlogic) if [ "$(uname -m)" = "aarch64" ] && [ "${PROJECT}" = "Rockchip" -o "${PROJECT}" = "Amlogic" ]; then dep_map[qemu-x86_64]=qemu-user-binfmt - if [ ! -f /lib64/ld-linux-x86-64.so.2 -o ! -f /lib/x86_64-linux-gnu/libc.so.6 ]; then - echo -e "Copy from a working x86_64 system:\n\t/lib64/ld-linux-x86-64.so.2\n\t/lib/x86_64-linux-gnu/libc.so.6" + if [ ! -f /lib64/ld-linux-x86-64.so.2 -o ! -f /lib/x86_64-jelos-linux-gnu/libc.so.6 ]; then + echo -e "Copy from a working x86_64 system:\n\t/lib64/ld-linux-x86-64.so.2\n\t/lib/x86_64-jelos-linux-gnu/libc.so.6" fi file_map[/lib64/ld-linux-x86-64.so.2]="libc6:amd64" - file_map[/lib/x86_64-linux-gnu/libc.so.6]="libc6:amd64" + file_map[/lib/x86_64-jelos-linux-gnu/libc.so.6]="libc6:amd64" fi # remap or add [depend]=package needs based on host distro diff --git a/scripts/clean b/scripts/clean index a73a4a8848..481fad783f 100755 --- a/scripts/clean +++ b/scripts/clean @@ -16,15 +16,15 @@ clean_package() { # Use a wilcard here to remove all versions of the package for i in "${BUILD}/${1}-"*; do - if [ -d "${i}" -a -f "${i}/.libreelec-unpack" ]; then - . "${i}/.libreelec-unpack" + if [ -d "${i}" -a -f "${i}/.jelos-unpack" ]; then + . "${i}/.jelos-unpack" if [ "${STAMP_PKG_NAME}" = "${1}" ]; then build_msg "CLR_WARNING" "*" "$(print_color "CLR_WARNING_DIM" "Removing ${i} ...")" rm -rf "${i}" fi - elif [ -d "${i}" -a -f "${i}/.libreelec-package" ]; then + elif [ -d "${i}" -a -f "${i}/.jelos-package" ]; then # force clean if no stamp found (previous unpack failed) - . "${i}/.libreelec-package" + . "${i}/.jelos-package" if [ "${INFO_PKG_NAME}" = "${1}" ]; then build_msg "" "" "* Removing ${i} ..." rm -rf "${i}" diff --git a/scripts/image b/scripts/image index 392adc2e1b..86d9d636bd 100755 --- a/scripts/image +++ b/scripts/image @@ -60,18 +60,6 @@ else GIT_HASH=$(git rev-parse HEAD) fi -if [ "${OS_VERSION}" = "devel" ]; then - GIT_ABBREV=${GIT_HASH:0:7} - DEVEL_VERSION=${OS_VERSION} - case "${BUILD_PERIODIC}" in - nightly) OS_VERSION=nightly-$(date +%Y%m%d)-${GIT_ABBREV};; - daily) OS_VERSION=daily-$(date +%Y%j)-${GIT_ABBREV};; - weekly) OS_VERSION=weekly-$(date +%G%V)-${GIT_ABBREV};; - monthly) OS_VERSION=monthly-$(date +%Y%m)-${GIT_ABBREV};; - *) OS_VERSION=devel-$(date +%s);; - esac -fi - # Get origin url, fix git:// and git@github.com: urls if necessary ORIGIN_URL="$(git remote -v | awk '$1 == "origin" { print $2 }' | head -1 | sed 's#\.git$##;s#^git:#https:#;s#^git@github\.com:#https://github.com/#')" @@ -79,14 +67,14 @@ if [ -n "${CUSTOM_VERSION}" ]; then export OS_VERSION="${CUSTOM_VERSION}" fi -LIBREELEC_ARCH="${DEVICE:-${PROJECT}}.${TARGET_ARCH}" -TARGET_VERSION="${LIBREELEC_ARCH}-${OS_VERSION}" +OS_ARCH="${DEVICE:-${PROJECT}}.${TARGET_ARCH}" +TARGET_VERSION="${OS_ARCH}-${OS_VERSION}" if [ -n "${CUSTOM_IMAGE_NAME}" ]; then IMAGE_NAME="${CUSTOM_IMAGE_NAME}" else if [ "${DEVEL_VERSION}" = "devel" ]; then - IMAGE_NAME="${DISTRONAME}-${LIBREELEC_ARCH}-${OS_VERSION}-${OS_VERSION}" + IMAGE_NAME="${DISTRONAME}-${OS_ARCH}-${OS_VERSION}-${OS_VERSION}" else IMAGE_NAME="${DISTRONAME}-${TARGET_VERSION}" fi diff --git a/scripts/unpack b/scripts/unpack index a295f58778..9c643f13b2 100755 --- a/scripts/unpack +++ b/scripts/unpack @@ -28,15 +28,15 @@ if [ -n "${PKG_DEPENDS_UNPACK}" ]; then done fi -STAMP="${PKG_BUILD}/.libreelec-unpack" +STAMP="${PKG_BUILD}/.jelos-unpack" mkdir -p ${BUILD} # Perform a wildcard match on the package to ensure old versions are cleaned too PKG_DEEPHASH= for i in ${BUILD}/${PKG_NAME}-*; do - if [ -d ${i} -a -f "${i}/.libreelec-unpack" ] ; then - . "${i}/.libreelec-unpack" + if [ -d ${i} -a -f "${i}/.jelos-unpack" ] ; then + . "${i}/.jelos-unpack" if [ "${STAMP_PKG_NAME}" = "${PKG_NAME}" ]; then [ -z "${PKG_DEEPHASH}" ] && PKG_DEEPHASH=$(calculate_stamp) if [ ! "${PKG_DEEPHASH}" = "${STAMP_PKG_DEEPHASH}" ] ; then @@ -111,7 +111,7 @@ if [ -d "${SOURCES}/${PKG_NAME}" -o -d "${PKG_DIR}/sources" ] || pkg_call_exists fi # Add a tag to the unpacked folder before transferring into the shared build folder - echo "INFO_PKG_NAME=\"${PKG_NAME}\"" > "${PKG_UNPACK_DIR}/.intermediate/.libreelec-package" + echo "INFO_PKG_NAME=\"${PKG_NAME}\"" > "${PKG_UNPACK_DIR}/.intermediate/.jelos-package" # Restore original PKG_BUILD, and transfer the unpacked folder PKG_BUILD="${PKG_BUILD_ORIG}" @@ -209,7 +209,7 @@ fi if [ "${PKG_SECTION}" != "virtual" ]; then mkdir -p "${PKG_BUILD}" - echo "INFO_PKG_NAME=\"${PKG_NAME}\"" > "${PKG_BUILD}/.libreelec-package" + echo "INFO_PKG_NAME=\"${PKG_NAME}\"" > "${PKG_BUILD}/.jelos-package" rm -f ${STAMPS}/${PKG_NAME}/build_* From d3bf996db705d00a69178e381c756c93c27ee704 Mon Sep 17 00:00:00 2001 From: adamg Date: Thu, 8 Feb 2024 19:54:13 +0000 Subject: [PATCH 146/167] RK3588: fix uart output and shell --- projects/Rockchip/devices/RK3588/options | 2 +- projects/Rockchip/packages/linux/package.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/Rockchip/devices/RK3588/options b/projects/Rockchip/devices/RK3588/options index 83e6145ae5..d079036579 100755 --- a/projects/Rockchip/devices/RK3588/options +++ b/projects/Rockchip/devices/RK3588/options @@ -74,7 +74,7 @@ WINDOWMANAGER="weston" # kernel serial console - EXTRA_CMDLINE="rootwait quiet loglevel=0 console=ttyUSB0,1500000 console=tty0 coherent_pool=2M ssh consoleblank=0 panic=20" + EXTRA_CMDLINE="rootwait quiet systemd.debug_shell=ttyFIQ0 earlycon=uart8250,mmio32,0xfeb50000 console=ttyFIQ0 console=tty0 coherent_pool=2M" # additional packages to install # ADDITIONAL_PACKAGES="" diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index 73e8b23122..acec5896e4 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -18,7 +18,7 @@ PKG_PATCH_DIRS+="${DEVICE}" case ${DEVICE} in RK358*) - PKG_VERSION="a7c264a8249f2058cf8ca624ee5034403412a2c1" + PKG_VERSION="eef98210c4984831d1706f884c95eec132c791e1" PKG_URL="${PKG_SITE}/rk358x-kernel.git" GET_HANDLER_SUPPORT="git" PKG_GIT_CLONE_BRANCH="main" From 8d6ae9afbdb7a883f5ed04c7b759be14238aa094 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Fri, 9 Feb 2024 22:24:12 +0000 Subject: [PATCH 147/167] Fix conflict. --- packages/apps/device-switch/package.mk | 19 + .../scripts/RK3326/device-switch | 24 + .../scripts/RK3326/device-switch.save | 20 + .../Game Console R33S/001-device_config | 1 + .../Game Console R36S/001-device_config | 15 + .../devices/Game Console R36S/002-disable-led | 15 + .../Game Console R36S/050-game-configs | 59 +++ packages/hardware/quirks/profile.d/999-export | 1 + packages/ui/emulationstation/package.mk | 2 +- projects/Rockchip/bootloader/update.sh | 10 + projects/Rockchip/devices/RK3326/options | 4 +- .../linux/patches/RK3326/000-rk3326-dts.patch | 486 +++++++++++++----- 12 files changed, 526 insertions(+), 130 deletions(-) create mode 100644 packages/apps/device-switch/package.mk create mode 100644 packages/apps/device-switch/scripts/RK3326/device-switch create mode 100644 packages/apps/device-switch/scripts/RK3326/device-switch.save create mode 100644 packages/hardware/quirks/devices/Game Console R36S/001-device_config create mode 100644 packages/hardware/quirks/devices/Game Console R36S/002-disable-led create mode 100644 packages/hardware/quirks/devices/Game Console R36S/050-game-configs diff --git a/packages/apps/device-switch/package.mk b/packages/apps/device-switch/package.mk new file mode 100644 index 0000000000..fd8bc3f21c --- /dev/null +++ b/packages/apps/device-switch/package.mk @@ -0,0 +1,19 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2024-present JELOS (https://github.com/JustEnoughLinuxOS) + +PKG_NAME="device-switch" +PKG_VERSION="" +PKG_ARCH="any" +PKG_LICENSE="mix" +PKG_DEPENDS_TARGET="toolchain" +PKG_SITE="" +PKG_URL="" +PKG_LONGDESC="Support script for switching device dtbs" +PKG_TOOLCHAIN="manual" + +makeinstall_target() { + + mkdir -p ${INSTALL}/usr/bin + cp ${PKG_DIR}/scripts/${DEVICE}/device-switch ${INSTALL}/usr/bin + chmod 0755 ${INSTALL}/usr/bin/* +} diff --git a/packages/apps/device-switch/scripts/RK3326/device-switch b/packages/apps/device-switch/scripts/RK3326/device-switch new file mode 100644 index 0000000000..969756ae05 --- /dev/null +++ b/packages/apps/device-switch/scripts/RK3326/device-switch @@ -0,0 +1,24 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2024-present JELOS (https://github.com/JustEnoughLinuxOS) + +. /etc/profile + +mount -o remount,rw /flash +case $1 in + R33S) + sed -i '/rk3326-gameconsole-r3/c\ load mmc 1:1 ${dtb_loadaddr} rk3326-gameconsole-r33s.dtb' /flash/boot.ini + rm -r /storage/remappings/* + ;; + R36S) + sed -i '/rk3326-gameconsole-r3/c\ load mmc 1:1 ${dtb_loadaddr} rk3326-gameconsole-r36s.dtb' /flash/boot.ini + rm -r /storage/remappings/* + ;; +esac + +cat </flash/device.name +$1 +EOF + +sync +reboot diff --git a/packages/apps/device-switch/scripts/RK3326/device-switch.save b/packages/apps/device-switch/scripts/RK3326/device-switch.save new file mode 100644 index 0000000000..afb5b818b1 --- /dev/null +++ b/packages/apps/device-switch/scripts/RK3326/device-switch.save @@ -0,0 +1,20 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) + +. /etc/profile + +mount -o remount,rw /flash +case $1 in + R33S) + sed -i "s#rk3566-rg353v-linux.dtb#rk3566-rg353p-linux.dtb#g" /flash/extlinux/extlinux.conf + ;; + R36S) + sed -i "s#rk3566-rg353p-linux.dtb#rk3566-rg353v-linux.dtb#g" /flash/extlinux/extlinux.conf + ;; +esac + +set_setting system.hostname ${1} + +sync +reboot diff --git a/packages/hardware/quirks/devices/Game Console R33S/001-device_config b/packages/hardware/quirks/devices/Game Console R33S/001-device_config index e326155a6a..4c9d00e3be 100644 --- a/packages/hardware/quirks/devices/Game Console R33S/001-device_config +++ b/packages/hardware/quirks/devices/Game Console R33S/001-device_config @@ -11,4 +11,5 @@ DEVICE_PLAYBACK_PATH_HP="SPK" DEVICE_BRIGHTNESS="128" DEVICE_PWR_LED_GPIO="77" DEVICE_TEMP_SENSOR="/sys/devices/virtual/thermal/thermal_zone0/temp" +DEVICE_DTB_SWITCH="true" EOF diff --git a/packages/hardware/quirks/devices/Game Console R36S/001-device_config b/packages/hardware/quirks/devices/Game Console R36S/001-device_config new file mode 100644 index 0000000000..4c9d00e3be --- /dev/null +++ b/packages/hardware/quirks/devices/Game Console R36S/001-device_config @@ -0,0 +1,15 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +cat </storage/.config/profile.d/001-device_config +# Device Features +DEVICE_VOLUMECTL="true" +DEVICE_POWER_LED="false" +DEVICE_PLAYBACK_PATH_SPK="HP" +DEVICE_PLAYBACK_PATH_HP="SPK" +DEVICE_BRIGHTNESS="128" +DEVICE_PWR_LED_GPIO="77" +DEVICE_TEMP_SENSOR="/sys/devices/virtual/thermal/thermal_zone0/temp" +DEVICE_DTB_SWITCH="true" +EOF diff --git a/packages/hardware/quirks/devices/Game Console R36S/002-disable-led b/packages/hardware/quirks/devices/Game Console R36S/002-disable-led new file mode 100644 index 0000000000..d917e34827 --- /dev/null +++ b/packages/hardware/quirks/devices/Game Console R36S/002-disable-led @@ -0,0 +1,15 @@ +#!/bin/bash + +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +. /etc/profile + +# Set export GPIO for Power LED +if [ ! -d "/sys/class/gpio/gpio${DEVICE_PWR_LED_GPIO}" ]; then + echo ${DEVICE_PWR_LED_GPIO} > /sys/class/gpio/export +fi + +#Disable blue led on R33S +echo out >/sys/class/gpio/gpio${DEVICE_PWR_LED_GPIO}/direction +echo 1 >/sys/class/gpio/gpio${DEVICE_PWR_LED_GPIO}/value diff --git a/packages/hardware/quirks/devices/Game Console R36S/050-game-configs b/packages/hardware/quirks/devices/Game Console R36S/050-game-configs new file mode 100644 index 0000000000..cd90a67759 --- /dev/null +++ b/packages/hardware/quirks/devices/Game Console R36S/050-game-configs @@ -0,0 +1,59 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) + +. /etc/profile + +#Set mupen64-plus-sa config for R36S, can use same profile as OGS +if [ ! -d "/storage/.config/mupen64plus" ]; then + mkdir -p "/storage/.config/mupen64plus/" + cp -r /usr/local/share/mupen64plus/mupen64plus.cfg* /storage/.config/mupen64plus/ +fi +if [ -f "/storage/.config/mupen64plus/mupen64plus.cfg.ogs" ]; then + rm /storage/.config/mupen64plus/mupen64plus.cfg + mv /storage/.config/mupen64plus/mupen64plus.cfg.ogs /storage/.config/mupen64plus/mupen64plus.cfg +fi + +#Set drastic-sa config for R36S (think it can use the same as RG20S) +if [ ! -d "/storage/.config/drastic" ]; then + mkdir -p "/storage/.config/drastic" + cp -r "/usr/config/drastic" "/storage/.config/" +fi +if [ -f "/storage/.config/drastic/config/drastic.cfg.rgb20s" ]; then + rm /storage/.config/drastic/config/drastic.cfg + mv /storage/.config/drastic/config/drastic.cfg.rgb20s /storage/.config/drastic/config/drastic.cfg +fi + +#Map ppsspp controls +if grep R36S -q "/storage/.config/ppsspp/PSP/SYSTEM/controls.ini" +then + exit 1 +else +cat </storage/.config/ppsspp/PSP/SYSTEM/controls.ini +#R36S +[ControlMapping] +Up = 10-19 +Down = 10-20 +Left = 10-21 +Right = 10-22 +Circle = 10-189 +Cross = 10-190 +Square = 10-188 +Triangle = 10-191 +Start = 10-197 +Select = 10-196 +L = 10-193 +R = 10-192 +An.Up = 10-4003 +An.Down = 10-4002 +An.Left = 10-4001 +An.Right = 10-4000 +Pause = 10-106 +Save State = 10-4010 +Load State = 10-4008 +RightAn.Up = 10-4007 +RightAn.Down = 10-4006 +RightAn.Left = 10-4005 +RightAn.Right = 10-4004 +EOF +fi diff --git a/packages/hardware/quirks/profile.d/999-export b/packages/hardware/quirks/profile.d/999-export index 816e5bafea..326dd49ee9 100755 --- a/packages/hardware/quirks/profile.d/999-export +++ b/packages/hardware/quirks/profile.d/999-export @@ -14,6 +14,7 @@ export SLOW_CORES \ DEVICE_BASE_TDP \ DEVICE_BRIGHTNESS \ DEVICE_BATTERY_LED_STATUS \ + DEVICE_DTB_SWITCH \ DEVICE_FAKE_JACKSENSE \ DEVICE_FUNC_KEYA_MODIFIER \ DEVICE_FUNC_KEYB_MODIFIER \ diff --git a/packages/ui/emulationstation/package.mk b/packages/ui/emulationstation/package.mk index b6697fdbc4..0e5b4fa9b3 100644 --- a/packages/ui/emulationstation/package.mk +++ b/packages/ui/emulationstation/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="emulationstation" -PKG_VERSION="652c75dd3cf951e3554802100e6ffeb8dc7b40c9" +PKG_VERSION="c9934ae9c20c1c44fd1c8279234b7368bdea1bb0" PKG_GIT_CLONE_BRANCH="main" PKG_REV="1" PKG_ARCH="any" diff --git a/projects/Rockchip/bootloader/update.sh b/projects/Rockchip/bootloader/update.sh index 4a6b7a65e6..de2f71c2a4 100755 --- a/projects/Rockchip/bootloader/update.sh +++ b/projects/Rockchip/bootloader/update.sh @@ -83,6 +83,16 @@ if [ -f $SYSTEM_ROOT/usr/share/bootloader/boot.ini ]; then sed -e "s/@UUID_SYSTEM@/${UUID_SYSTEM}/" \ -e "s/@UUID_STORAGE@/${UUID_STORAGE}/" \ -i $BOOT_ROOT/boot.ini + + # Set correct R3xS dtb in boot.ini + DTB_NAME=$(cat $BOOT_ROOT/device.name) + if [ $DTB_NAME = 'R33S' ]; then + echo "Setting R33S dtb in boot.ini..." + sed -i '/rk3326-gameconsole-r3/c\ load mmc 1:1 ${dtb_loadaddr} rk3326-gameconsole-r33s.dtb' $BOOT_ROOT/boot.ini + elif [ $DTB_NAME = 'R36S' ]; then + echo "Setting R36S/R35S dtb in boot.ini..." + sed -i '/rk3326-gameconsole-r3/c\ load mmc 1:1 ${dtb_loadaddr} rk3326-gameconsole-r36s.dtb' $BOOT_ROOT/boot.ini + fi fi # update device tree diff --git a/projects/Rockchip/devices/RK3326/options b/projects/Rockchip/devices/RK3326/options index b623db4d3c..239d93d869 100644 --- a/projects/Rockchip/devices/RK3326/options +++ b/projects/Rockchip/devices/RK3326/options @@ -31,7 +31,7 @@ BOOTLOADER="u-boot" TRUST_LABEL="trust" PARTITION_TABLE="msdos" - DEVICE_DTB=("rk3326-anbernic-rg351m" "rk3326-anbernic-rg351v" "rk3326-gameconsole-r33s" "rk3326-odroid-go2" "rk3326-odroid-go2-v11" "rk3326-odroid-go3" "rk3326-powkiddy-rgb10" "rk3326-powkiddy-rgb20s" "rk3326-magicx-xu10") + DEVICE_DTB=("rk3326-anbernic-rg351m" "rk3326-anbernic-rg351v" "rk3326-gameconsole-r33s" "rk3326-gameconsole-r36s" "rk3326-odroid-go2" "rk3326-odroid-go2-v11" "rk3326-odroid-go3" "rk3326-powkiddy-rgb10" "rk3326-powkiddy-rgb20s" "rk3326-magicx-xu10") UBOOT_DTB="${DEVICE_DTB[0]}" UBOOT_CONFIG="odroidgoa_defconfig" PKG_SOC="px30" @@ -73,7 +73,7 @@ EXTRA_CMDLINE="quiet rootwait console=ttyFIQ0 console=tty0 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20" # additional packages to install - ADDITIONAL_PACKAGES="" + ADDITIONAL_PACKAGES="device-switch" # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) # Space separated list is supported, diff --git a/projects/Rockchip/packages/linux/patches/RK3326/000-rk3326-dts.patch b/projects/Rockchip/packages/linux/patches/RK3326/000-rk3326-dts.patch index 516f3fd13e..07eae5c474 100644 --- a/projects/Rockchip/packages/linux/patches/RK3326/000-rk3326-dts.patch +++ b/projects/Rockchip/packages/linux/patches/RK3326/000-rk3326-dts.patch @@ -1,12 +1,13 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/Makefile linux/arch/arm64/boot/dts/rockchip/Makefile ---- linux.orig/arch/arm64/boot/dts/rockchip/Makefile 2024-01-29 05:07:30.179290843 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/Makefile 2024-01-29 06:17:10.562382315 +0000 -@@ -9,9 +9,14 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-ro +--- linux.orig/arch/arm64/boot/dts/rockchip/Makefile 2024-02-03 14:24:30.507369024 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/Makefile 2024-02-03 14:49:01.857898202 +0000 +@@ -9,9 +9,15 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-ro dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-rock-pi-s.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3318-a95x-z2.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-anbernic-rg351m.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-anbernic-rg351v.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-gameconsole-r33s.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-gameconsole-r36s.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-magicx-xu10.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2-v11.dtb @@ -17,8 +18,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/Makefile linux/arch/arm64/boo dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-evb.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-nanopi-r2c.dtb diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi linux/arch/arm64/boot/dts/rockchip/px30.dtsi ---- linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi 2024-01-29 05:07:30.179290843 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/px30.dtsi 2024-01-29 05:08:22.844542450 +0000 +--- linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi 2024-02-03 14:24:30.507369024 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/px30.dtsi 2024-02-03 14:25:41.221185291 +0000 @@ -114,32 +114,22 @@ compatible = "operating-points-v2"; opp-shared; @@ -117,8 +118,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi linux/arch/arm64/bo }; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts ---- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts 2024-01-29 05:07:30.179290843 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts 2024-01-29 05:08:22.844542450 +0000 +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts 2024-02-03 14:24:30.507369024 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts 2024-02-03 14:25:41.221185291 +0000 @@ -12,6 +12,25 @@ model = "Anbernic RG351M"; compatible = "anbernic,rg351m", "rockchip,rk3326"; @@ -171,7 +172,7 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts li +}; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts --- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts 1970-01-01 00:00:00.000000000 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts 2024-01-29 05:08:22.844542450 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts 2024-02-03 14:25:41.221185291 +0000 @@ -0,0 +1,124 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* @@ -299,93 +300,19 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts li +}; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r33s.dts linux/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r33s.dts --- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r33s.dts 1970-01-01 00:00:00.000000000 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r33s.dts 2024-01-29 05:08:22.844542450 +0000 -@@ -0,0 +1,646 @@ ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r33s.dts 2024-02-03 14:53:29.435899433 +0000 +@@ -0,0 +1,117 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* -+ * Copyright (c) 2019 Hardkernel Co., Ltd -+ * Copyright (c) 2020 Theobroma Systems Design und Consulting GmbH -+ * Copyright (c) 2022 Maya Matuszczyk ++ * # Copyright (C) 2024-present JELOS (https://github.com/JustEnoughLinuxOS) + */ + +/dts-v1/; -+#include -+#include -+#include -+#include -+#include "rk3326.dtsi" ++#include "rk3326-gameconsole-r3xs.dtsi" + +/ { + model = "Game Console R33S"; -+ compatible = "gameconsolec,r33s", "rockchip,rk3326"; -+ -+ aliases { -+ mmc0 = &sdio; -+ mmc1 = &sdmmc; -+ }; -+ -+ chosen { -+ stdout-path = "serial2:115200n8"; -+ }; -+ -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ power-supply = <&vcc_bl>; -+ pwms = <&pwm1 0 25000 0>; -+ brightness-levels = < -+ 0 1 2 3 4 5 6 7 -+ 8 9 10 11 12 13 14 15 -+ 16 17 18 19 20 21 22 23 -+ 24 25 26 27 28 29 30 31 -+ 32 33 34 35 36 37 38 39 -+ 40 41 42 43 44 45 46 47 -+ 48 49 50 51 52 53 54 55 -+ 56 57 58 59 60 61 62 63 -+ 64 65 66 67 68 69 70 71 -+ 72 73 74 75 76 77 78 79 -+ 80 81 82 83 84 85 86 87 -+ 88 89 90 91 92 93 94 95 -+ 96 97 98 99 100 101 102 103 -+ 104 105 106 107 108 109 110 111 -+ 112 113 114 115 116 117 118 119 -+ 120 121 122 123 124 125 126 127 -+ 128 129 130 131 132 133 134 135 -+ 136 137 138 139 140 141 142 143 -+ 144 145 146 147 148 149 150 151 -+ 152 153 154 155 156 157 158 159 -+ 160 161 162 163 164 165 166 167 -+ 168 169 170 171 172 173 174 175 -+ 176 177 178 179 180 181 182 183 -+ 184 185 186 187 188 189 190 191 -+ 192 193 194 195 196 197 198 199 -+ 200 201 202 203 204 205 206 207 -+ 208 209 210 211 212 213 214 215 -+ 216 217 218 219 220 221 222 223 -+ 224 225 226 227 228 229 230 231 -+ 232 233 234 235 236 237 238 239 -+ 240 241 242 243 244 245 246 247 -+ 248 249 250 251 252 253 254 255>; -+ default-brightness-level = <128>; -+ }; -+ -+ gpio-keys-vol { -+ compatible = "gpio-keys"; -+ autorepeat; -+ pinctrl-0 = <&btn_pins_vol>; -+ pinctrl-names = "default"; -+ -+ button-vol-down { -+ gpios = <&gpio2 RK_PA1 GPIO_ACTIVE_LOW>; -+ label = "VOLUMEDOWN"; -+ linux,code = ; -+ }; -+ -+ button-volume-up { -+ gpios = <&gpio2 RK_PA0 GPIO_ACTIVE_LOW>; -+ label = "VOLUMEUP"; -+ linux,code = ; -+ }; -+ }; ++ compatible = "gameconsole,r33s", "rockchip,rk3326"; + + builtin_gamepad: r33s_joypad { + compatible = "gpio-keys"; @@ -464,6 +391,333 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r33s.dts l + }; + }; + ++ vibrator { ++ compatible = "pwm-vibrator"; ++ pwms = <&pwm0 0 1000000 0>; ++ pwm-names = "enable"; ++ }; ++}; ++ ++&pinctrl { ++ btns { ++ btn_pins: btn-pins { ++ rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ ++ }; ++}; +diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r36s.dts linux/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r36s.dts +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r36s.dts 1970-01-01 00:00:00.000000000 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r36s.dts 2024-02-03 14:56:33.563329307 +0000 +@@ -0,0 +1,207 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * # Copyright (C) 2024-present JELOS (https://github.com/JustEnoughLinuxOS) ++ */ ++ ++/dts-v1/; ++#include "rk3326-gameconsole-r3xs.dtsi" ++ ++/ { ++ model = "Game Console R36S"; ++ compatible = "gameconsole,r35s", "gameconsole,r36s", "rockchip,rk3326"; ++ ++ joypad: odroidgo3-joypad { ++ compatible = "odroidgo3-joypad"; ++ pwms = <&pwm0 0 200000000 0>; ++ pwm-names = "enable"; ++ rumble-boost-weak = <0x0000>; ++ rumble-boost-strong = <0x0000>; ++ ++ joypad-name = "r36s_Gamepad"; ++ joypad-product = <0x1188>; ++ joypad-revision = <0x0188>; ++ ++ status = "okay"; ++ ++ /* gpio pincontrol setup */ ++ pinctrl-names = "default"; ++ pinctrl-0 = <&btn_pins>; ++ pinctrl-1 = <&pwm0_pin>; ++ ++ /* Analog mux define */ ++ io-channel-names = "amux_adc"; ++ io-channels = <&saradc 1>; ++ ++ /* adc mux channel count */ ++ amux-count = <4>; ++ /* adc mux select(a,b) gpio */ ++ amux-a-gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>; ++ amux-b-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>; ++ /* adc mux enable gpio */ ++ amux-en-gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_LOW>; ++ ++ /* adc calculate scale */ ++ button-adc-scale = <2>; ++ ++ /* adc deadzone range */ ++ button-adc-deadzone = <64>; ++ ++ /* ++ specifies fuzz value that is used to filter noise from ++ the event stream. ++ */ ++ button-adc-fuzz = <32>; ++ button-adc-flat = <32>; ++ ++ /* ++ Analog Stick data tuning value(precent) ++ p = positive direction, n = negative direction ++ report value = (real_adc_data * tuning_value) / 100 ++ */ ++ abs_x-p-tuning = <200>; ++ abs_x-n-tuning = <200>; ++ ++ abs_y-p-tuning = <200>; ++ abs_y-n-tuning = <200>; ++ ++ abs_rx-p-tuning = <200>; ++ abs_rx-n-tuning = <200>; ++ ++ abs_ry-p-tuning = <200>; ++ abs_ry-n-tuning = <200>; ++ ++ /* poll device interval (ms), adc read interval */ ++ poll-interval = <10>; ++ ++ /* required for RG36S */ ++ invert-absx; ++ invert-absy; ++ ++ /* gpio button auto repeat set value : default disable */ ++ /* ++ autorepeat; ++ */ ++ ++ /* ++ joypad driver is poll-device driver. ++ poll-device is does not support wakeup-source. ++ */ ++ sw1 { ++ gpios = <&gpio1 RK_PB4 GPIO_ACTIVE_LOW>; ++ label = "GPIO DPAD-UP"; ++ linux,code = ; // 0x220 ++ }; ++ sw2 { ++ gpios = <&gpio1 RK_PB5 GPIO_ACTIVE_LOW>; ++ label = "GPIO DPAD-DOWN"; ++ linux,code = ; // 0x221 ++ }; ++ sw3 { ++ gpios = <&gpio1 RK_PB6 GPIO_ACTIVE_LOW>; ++ label = "GPIO DPAD-LEFT"; ++ linux,code = ; // 0x222 ++ }; ++ sw4 { ++ gpios = <&gpio1 RK_PB7 GPIO_ACTIVE_LOW>; ++ label = "GPIO DPAD-RIGHT"; ++ linux,code = ; // 0x223 ++ }; ++ sw5 { ++ gpios = <&gpio1 RK_PA2 GPIO_ACTIVE_LOW>; ++ label = "GPIO KEY BTN-A"; ++ linux,code = ; // 0x131 ++ }; ++ sw6 { ++ gpios = <&gpio1 RK_PA5 GPIO_ACTIVE_LOW>; ++ label = "GPIO BTN-B"; ++ linux,code = ; // 0x130 ++ }; ++ sw7 { ++ gpios = <&gpio1 RK_PA6 GPIO_ACTIVE_LOW>; ++ label = "GPIO BTN-Y"; ++ linux,code = ; // 0x134 ++ }; ++ sw8 { ++ gpios = <&gpio1 RK_PA7 GPIO_ACTIVE_LOW>; ++ label = "GPIO BTN-X"; ++ linux,code = ; // 0x133 ++ }; ++ sw11 { ++ gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_LOW>; ++ label = "GPIO F3"; ++ linux,code = ; // 0x2c2 ++ }; ++ sw12 { ++ gpios = <&gpio2 RK_PA3 GPIO_ACTIVE_LOW>; ++ label = "GPIO F4"; ++ linux,code = ; // 0x2c3 ++ }; ++ /*sw13 { ++ gpios = <&gpio2 RK_PA4 GPIO_ACTIVE_LOW>; ++ label = "GPIO F5"; ++ linux,code = ; // 0x2c4 ++ }; ++ sw14 { ++ gpios = <&gpio2 RK_PA5 GPIO_ACTIVE_LOW>; ++ label = "GPIO F6"; ++ linux,code = ; // 0x13c ++ };*/ ++ sw15 { ++ gpios = <&gpio2 RK_PA6 GPIO_ACTIVE_LOW>; ++ label = "GPIO TOP-LEFT"; ++ linux,code = ; // 0x02 ++ }; ++ sw16 { ++ gpios = <&gpio2 RK_PA7 GPIO_ACTIVE_LOW>; ++ label = "GPIO TOP-RIGHT"; ++ linux,code = ; // 0x05 ++ }; ++ sw19 { ++ gpios = <&gpio3 RK_PB1 GPIO_ACTIVE_LOW>; ++ label = "GPIO F1"; ++ linux,code = ; ++ }; ++ sw20 { ++ gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>; ++ label = "GPIO TOP-RIGHT2"; ++ linux,code = ; ++ }; ++ sw21 { ++ gpios = <&gpio3 RK_PB2 GPIO_ACTIVE_LOW>; ++ label = "GPIO TOP-LEFT2"; ++ linux,code = ; ++ }; ++ sw22 { ++ gpios = <&gpio3 RK_PB4 GPIO_ACTIVE_LOW>; ++ label = "GPIO F2"; ++ linux,code = ; ++ }; ++ }; ++}; ++ ++&pinctrl { ++ btns { ++ btn_pins: btn-pins { ++ rockchip,pins = <1 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>; ++ ++ }; ++ ++ }; ++}; +diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r3xs.dtsi linux/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r3xs.dtsi +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r3xs.dtsi 1970-01-01 00:00:00.000000000 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r3xs.dtsi 2024-02-03 14:46:31.754519839 +0000 +@@ -0,0 +1,545 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * # Copyright (C) 2024-present JELOS (https://github.com/JustEnoughLinuxOS) ++ */ ++ ++/dts-v1/; ++#include ++#include ++#include ++#include ++#include "rk3326.dtsi" ++ ++/ { ++ model = "Game Console R33S"; ++ compatible = "gameconsolec,r33s", "rockchip,rk3326"; ++ ++ aliases { ++ mmc0 = &sdio; ++ mmc1 = &sdmmc; ++ }; ++ ++ chosen { ++ stdout-path = "serial2:115200n8"; ++ }; ++ ++ backlight: backlight { ++ compatible = "pwm-backlight"; ++ power-supply = <&vcc_bl>; ++ pwms = <&pwm1 0 25000 0>; ++ brightness-levels = < ++ 0 1 2 3 4 5 6 7 ++ 8 9 10 11 12 13 14 15 ++ 16 17 18 19 20 21 22 23 ++ 24 25 26 27 28 29 30 31 ++ 32 33 34 35 36 37 38 39 ++ 40 41 42 43 44 45 46 47 ++ 48 49 50 51 52 53 54 55 ++ 56 57 58 59 60 61 62 63 ++ 64 65 66 67 68 69 70 71 ++ 72 73 74 75 76 77 78 79 ++ 80 81 82 83 84 85 86 87 ++ 88 89 90 91 92 93 94 95 ++ 96 97 98 99 100 101 102 103 ++ 104 105 106 107 108 109 110 111 ++ 112 113 114 115 116 117 118 119 ++ 120 121 122 123 124 125 126 127 ++ 128 129 130 131 132 133 134 135 ++ 136 137 138 139 140 141 142 143 ++ 144 145 146 147 148 149 150 151 ++ 152 153 154 155 156 157 158 159 ++ 160 161 162 163 164 165 166 167 ++ 168 169 170 171 172 173 174 175 ++ 176 177 178 179 180 181 182 183 ++ 184 185 186 187 188 189 190 191 ++ 192 193 194 195 196 197 198 199 ++ 200 201 202 203 204 205 206 207 ++ 208 209 210 211 212 213 214 215 ++ 216 217 218 219 220 221 222 223 ++ 224 225 226 227 228 229 230 231 ++ 232 233 234 235 236 237 238 239 ++ 240 241 242 243 244 245 246 247 ++ 248 249 250 251 252 253 254 255>; ++ default-brightness-level = <128>; ++ }; ++ ++ gpio-keys-vol { ++ compatible = "gpio-keys"; ++ autorepeat; ++ pinctrl-0 = <&btn_pins_vol>; ++ pinctrl-names = "default"; ++ ++ button-vol-down { ++ gpios = <&gpio2 RK_PA1 GPIO_ACTIVE_LOW>; ++ label = "VOLUMEDOWN"; ++ linux,code = ; ++ }; ++ ++ button-volume-up { ++ gpios = <&gpio2 RK_PA0 GPIO_ACTIVE_LOW>; ++ label = "VOLUMEUP"; ++ linux,code = ; ++ }; ++ }; ++ + battery: battery { + compatible = "simple-battery"; + charge-full-design-microamp-hours = <3200000>; @@ -482,12 +736,6 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r33s.dts l + <3649470 20>, <3635260 15>, <3616920 10>, <3592440 5>, + <3574170 0>; + -+ }; -+ -+ vibrator { -+ compatible = "pwm-vibrator"; -+ pwms = <&pwm0 0 1000000 0>; -+ pwm-names = "enable"; + }; + + rk817-sound { @@ -896,29 +1144,13 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r33s.dts l +}; + +&pinctrl { -+ btns { -+ btn_pins: btn-pins { -+ rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>, -+ <1 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>, -+ <1 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, -+ <1 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, -+ <1 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>, -+ <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>, -+ <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>, -+ <1 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>, -+ <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, -+ <2 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>, -+ <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ btn_pins_vol: btn-pins-vol { -+ rockchip,pins = <2 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>, -+ <2 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>; ++ btns { ++ btn_pins_vol: btn-pins-vol { ++ rockchip,pins = <2 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; + }; -+ }; -+ ++ + headphone { + hp_det: hp-det { + rockchip,pins = <2 RK_PC6 RK_FUNC_GPIO &pcfg_pull_down>; @@ -948,8 +1180,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r33s.dts l + }; +}; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts linux/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts ---- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts 1969-12-31 19:00:00.000000000 -0500 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts 2024-02-01 21:39:27.594961980 -0500 +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts 1970-01-01 00:00:00.000000000 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts 2024-02-03 14:25:41.221185291 +0000 @@ -0,0 +1,828 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* @@ -1780,8 +2012,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts linux/ + }; +}; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi ---- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi 2024-01-29 05:07:30.179290843 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi 2024-01-29 05:08:22.844542450 +0000 +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi 2024-02-03 14:24:30.507369024 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi 2024-02-03 14:25:41.221185291 +0000 @@ -25,93 +25,40 @@ compatible = "pwm-backlight"; power-supply = <&vcc_bl>; @@ -1938,8 +2170,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi linux/a #clock-cells = <1>; #sound-dai-cells = <0>; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts ---- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts 2024-01-29 05:07:30.179290843 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts 2024-01-29 05:08:22.844542450 +0000 +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts 2024-02-03 14:24:30.507369024 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts 2024-02-03 14:25:41.221185291 +0000 @@ -16,31 +16,187 @@ mmc1 = &sdio; }; @@ -2221,8 +2453,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts lin <2 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>, <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts ---- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts 2024-01-29 05:07:30.179290843 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts 2024-01-29 05:08:22.844542450 +0000 +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts 2024-02-03 14:24:30.507369024 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts 2024-02-03 14:25:41.221185291 +0000 @@ -12,30 +12,175 @@ model = "ODROID-GO Advance"; compatible = "hardkernel,rk3326-odroid-go2", "rockchip,rk3326"; @@ -2455,8 +2687,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts linux/a + }; +}; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts ---- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts 2024-01-29 05:07:30.179290843 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts 2024-01-29 05:08:22.844542450 +0000 +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts 2024-02-03 14:24:30.507369024 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts 2024-02-03 14:25:41.221185291 +0000 @@ -12,67 +12,196 @@ model = "ODROID-GO Super"; compatible = "hardkernel,rk3326-odroid-go3", "rockchip,rk3326"; @@ -2766,7 +2998,7 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts linux/a }; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts linux/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts --- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts 1970-01-01 00:00:00.000000000 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts 2024-01-29 05:08:22.844542450 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts 2024-02-03 14:25:41.221185291 +0000 @@ -0,0 +1,280 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* @@ -3050,7 +3282,7 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts lin +}; diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb20s.dts linux/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb20s.dts --- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb20s.dts 1970-01-01 00:00:00.000000000 +0000 -+++ linux/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb20s.dts 2024-01-29 20:21:55.821942737 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb20s.dts 2024-02-03 14:25:41.221185291 +0000 @@ -0,0 +1,340 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* From 6774aee9616404774470ea0dd1865e013ae954c5 Mon Sep 17 00:00:00 2001 From: brooksytech <1673861+brooksytech@users.noreply.github.com> Date: Fri, 9 Feb 2024 15:45:38 +0000 Subject: [PATCH 148/167] Set default scaling governors fork RK3588 --- .../quirks/platforms/RK3399/060-game_settings | 2 +- .../quirks/platforms/RK3588/060-game_settings | 35 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 packages/hardware/quirks/platforms/RK3588/060-game_settings diff --git a/packages/hardware/quirks/platforms/RK3399/060-game_settings b/packages/hardware/quirks/platforms/RK3399/060-game_settings index fa5cd7d07b..f718e077d4 100755 --- a/packages/hardware/quirks/platforms/RK3399/060-game_settings +++ b/packages/hardware/quirks/platforms/RK3399/060-game_settings @@ -5,7 +5,7 @@ . /etc/profile.d/001-functions ### Set the default performance scaling mode for a few systems. -for SYSTEM in dreamcast n64 ports psp psx saturn pcfx cdi +for SYSTEM in dreamcast n64 ports psp psx saturn pcfx cdi ps2 gamecube do CPU_SETTING=$(get_setting ${SYSTEM}.cpugovernor) if [ -z "${CPU_SETTING}" ] diff --git a/packages/hardware/quirks/platforms/RK3588/060-game_settings b/packages/hardware/quirks/platforms/RK3588/060-game_settings new file mode 100644 index 0000000000..4d0f5b34ac --- /dev/null +++ b/packages/hardware/quirks/platforms/RK3588/060-game_settings @@ -0,0 +1,35 @@ + +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +. /etc/profile.d/001-functions + +### Set the default performance scaling mode for a few systems. +for SYSTEM in dreamcast n64 ports psp saturn ps2 gamecube +do + CPU_SETTING=$(get_setting ${SYSTEM}.cpugovernor) + if [ -z "${CPU_SETTING}" ] + then + set_setting ${SYSTEM}.cpugovernor performance + fi + GPU_SETTING=$(get_setting ${SYSTEM}.gpuperf) + if [ -z "${GPU_SETTING}" ] + then + set_setting ${SYSTEM}.gpuperf profile_peak + fi +done + +for SYSTEM in gb gbc gba snes nes sms gamegear genesis mastersystem sega32x megadrive segacd megacd +do + CPU_SETTING=$(get_setting ${SYSTEM}.cpugovernor) + if [ -z ${CPU_SETTING} ] + then + set_setting ${SYSTEM}.cpugovernor powersave + fi + GPU_SETTING=$(get_setting ${SYSTEM}.gpuperf) + if [ -z ${GPU_SETTING} ] + then + set_setting ${SYSTEM}.gpuperf low + fi +done From e247800e19889492d1978dbe837afa2bfee338b5 Mon Sep 17 00:00:00 2001 From: adamg Date: Fri, 9 Feb 2024 08:53:28 +0000 Subject: [PATCH 149/167] Amlogic: sync Kconfig to latest version --- .../devices/S922X/linux/linux.aarch64.conf | 97 ++++++++++++++----- 1 file changed, 72 insertions(+), 25 deletions(-) diff --git a/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf b/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf index 0720aa2295..dd3b96cc81 100644 --- a/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf +++ b/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm64 6.6.15 Kernel Configuration +# Linux/arm64 6.7.4 Kernel Configuration # CONFIG_CC_VERSION_TEXT="aarch64-libreelec-linux-gnueabi-gcc-12.3.1 (GCC) 12.3.1 20240103" CONFIG_CC_IS_GCC=y @@ -321,6 +321,7 @@ CONFIG_ARCH_MESON=y # CONFIG_ARCH_NXP is not set # CONFIG_ARCH_MA35 is not set # CONFIG_ARCH_NPCM is not set +# CONFIG_ARCH_PENSANDO is not set # CONFIG_ARCH_QCOM is not set # CONFIG_ARCH_REALTEK is not set # CONFIG_ARCH_RENESAS is not set @@ -870,6 +871,7 @@ CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1 CONFIG_MIGRATION=y CONFIG_ARCH_ENABLE_THP_MIGRATION=y CONFIG_CONTIG_ALLOC=y +CONFIG_PCP_BATCH_SCALE_MAX=5 CONFIG_PHYS_ADDR_T_64BIT=y # CONFIG_KSM is not set CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 @@ -995,6 +997,7 @@ CONFIG_TCP_CONG_CDG=m CONFIG_DEFAULT_CUBIC=y # CONFIG_DEFAULT_RENO is not set CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_AO is not set # CONFIG_TCP_MD5SIG is not set CONFIG_IPV6=y # CONFIG_IPV6_ROUTER_PREF is not set @@ -1405,7 +1408,6 @@ CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" CONFIG_MAC80211_MESH=y CONFIG_MAC80211_LEDS=y -# CONFIG_MAC80211_DEBUGFS is not set # CONFIG_MAC80211_MESSAGE_TRACING is not set # CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 @@ -1558,7 +1560,6 @@ CONFIG_GENERIC_ARCH_TOPOLOGY=y # # Bus devices # -# CONFIG_BRCMSTB_GISB_ARB is not set # CONFIG_MOXTET is not set # CONFIG_VEXPRESS_CONFIG is not set # CONFIG_MHI_BUS is not set @@ -1591,6 +1592,12 @@ CONFIG_ARM_SCPI_POWER_DOMAIN=y CONFIG_MESON_SM=y CONFIG_ARM_PSCI_FW=y # CONFIG_ARM_PSCI_CHECKER is not set + +# +# Qualcomm firmware drivers +# +# end of Qualcomm firmware drivers + CONFIG_HAVE_ARM_SMCCC=y CONFIG_HAVE_ARM_SMCCC_DISCOVERY=y CONFIG_ARM_SMCCC_SOC_ID=y @@ -1608,7 +1615,6 @@ CONFIG_MTD=y # # Partition parsers # -# CONFIG_MTD_AR7_PARTS is not set # CONFIG_MTD_CMDLINE_PARTS is not set CONFIG_MTD_OF_PARTS=y # CONFIG_MTD_AFS_PARTS is not set @@ -1777,7 +1783,6 @@ CONFIG_BLK_DEV_RAM_SIZE=4096 # # 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=m # CONFIG_EEPROM_93XX46 is not set @@ -2032,6 +2037,7 @@ CONFIG_TUN=y # CONFIG_TUN_VNET_CROSS_LE is not set CONFIG_VETH=m # CONFIG_NLMON is not set +# CONFIG_NETKIT is not set # CONFIG_ARCNET is not set CONFIG_ETHERNET=y # CONFIG_NET_VENDOR_3COM is not set @@ -2293,7 +2299,6 @@ CONFIG_ATH9K_BTCOEX_SUPPORT=y CONFIG_ATH9K=m # CONFIG_ATH9K_PCI is not set # CONFIG_ATH9K_AHB is not set -# CONFIG_ATH9K_DEBUGFS is not set # CONFIG_ATH9K_DYNACK is not set # CONFIG_ATH9K_WOW is not set CONFIG_ATH9K_RFKILL=y @@ -2400,6 +2405,8 @@ CONFIG_MT7663S=m # CONFIG_MT7921S is not set # CONFIG_MT7921U is not set # CONFIG_MT7996E is not set +# CONFIG_MT7925E is not set +# CONFIG_MT7925U is not set CONFIG_WLAN_VENDOR_MICROCHIP=y # CONFIG_WILC1000_SDIO is not set # CONFIG_WILC1000_SPI is not set @@ -2970,6 +2977,7 @@ CONFIG_PINCTRL_MESON_G12A=y CONFIG_PINCTRL_MESON_A1=y CONFIG_PINCTRL_MESON_S4=y CONFIG_PINCTRL_AMLOGIC_C3=y +CONFIG_PINCTRL_AMLOGIC_T7=y # # Renesas pinctrl drivers @@ -3066,7 +3074,6 @@ CONFIG_GPIO_PCA953X=m # CONFIG_W1 is not set CONFIG_POWER_RESET=y -# CONFIG_POWER_RESET_BRCMSTB is not set CONFIG_POWER_RESET_GPIO=y CONFIG_POWER_RESET_GPIO_RESTART=y CONFIG_POWER_RESET_ODROID_GO_ULTRA_POWEROFF=y @@ -3175,12 +3182,14 @@ CONFIG_SENSORS_GPIO_FAN=m # CONFIG_SENSORS_IIO_HWMON is not set # CONFIG_SENSORS_IT87 is not set # CONFIG_SENSORS_JC42 is not set +# CONFIG_SENSORS_POWERZ is not set # CONFIG_SENSORS_POWR1220 is not set # CONFIG_SENSORS_LINEAGE is not set # CONFIG_SENSORS_LTC2945 is not set # CONFIG_SENSORS_LTC2947_I2C is not set # CONFIG_SENSORS_LTC2947_SPI is not set # CONFIG_SENSORS_LTC2990 is not set +# CONFIG_SENSORS_LTC2991 is not set # CONFIG_SENSORS_LTC2992 is not set # CONFIG_SENSORS_LTC4151 is not set # CONFIG_SENSORS_LTC4215 is not set @@ -3458,7 +3467,6 @@ CONFIG_MFD_SEC_CORE=y # CONFIG_MFD_SKY81452 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_TI_LMU is not set @@ -3532,6 +3540,7 @@ CONFIG_REGULATOR_GPIO=y # CONFIG_REGULATOR_LTC3589 is not set # CONFIG_REGULATOR_LTC3676 is not set # CONFIG_REGULATOR_MAX1586 is not set +# CONFIG_REGULATOR_MAX77503 is not set # CONFIG_REGULATOR_MAX77857 is not set # CONFIG_REGULATOR_MAX8649 is not set # CONFIG_REGULATOR_MAX8660 is not set @@ -3759,6 +3768,10 @@ CONFIG_VIDEO_MESON_GE2D=y # Microchip Technology, Inc. media platform drivers # +# +# Nuvoton media platform drivers +# + # # NVidia media platform drivers # @@ -3851,6 +3864,7 @@ CONFIG_VIDEO_CAMERA_SENSOR=y # CONFIG_VIDEO_IMX415 is not set # CONFIG_VIDEO_MT9M001 is not set # CONFIG_VIDEO_MT9M111 is not set +# CONFIG_VIDEO_MT9M114 is not set # CONFIG_VIDEO_MT9P031 is not set # CONFIG_VIDEO_MT9T112 is not set # CONFIG_VIDEO_MT9V011 is not set @@ -4322,10 +4336,12 @@ CONFIG_DRM_PANEL=y # CONFIG_DRM_PANEL_ILITEK_IL9322 is not set # CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set # CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set +# CONFIG_DRM_PANEL_ILITEK_ILI9882T is not set # CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set # CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set # CONFIG_DRM_PANEL_JADARD_JD9365DA_H3 is not set # CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set +# CONFIG_DRM_PANEL_JDI_LPM102A188A is not set # CONFIG_DRM_PANEL_JDI_R63452 is not set # CONFIG_DRM_PANEL_KHADAS_TS050 is not set # CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04 is not set @@ -4353,6 +4369,7 @@ CONFIG_DRM_PANEL=y # CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set # CONFIG_DRM_PANEL_RAYDIUM_RM67191 is not set # CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set +# CONFIG_DRM_PANEL_RAYDIUM_RM692E5 is not set # CONFIG_DRM_PANEL_RONBO_RB070D30 is not set # CONFIG_DRM_PANEL_SAMSUNG_ATNA33XC20 is not set # CONFIG_DRM_PANEL_SAMSUNG_DB7430 is not set @@ -4523,6 +4540,7 @@ CONFIG_FB_SYS_IMAGEBLIT=y CONFIG_FB_SYS_FOPS=y CONFIG_FB_DEFERRED_IO=y CONFIG_FB_DMAMEM_HELPERS=y +CONFIG_FB_IOMEM_FOPS=y CONFIG_FB_SYSMEM_HELPERS=y CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y CONFIG_FB_MODE_HELPERS=y @@ -4712,6 +4730,8 @@ CONFIG_SND_SOC_I2C_AND_SPI=y # CONFIG_SND_SOC_AW8738 is not set # CONFIG_SND_SOC_AW88395 is not set # CONFIG_SND_SOC_AW88261 is not set +# CONFIG_SND_SOC_AW87390 is not set +# CONFIG_SND_SOC_AW88399 is not set # CONFIG_SND_SOC_BD28623 is not set # CONFIG_SND_SOC_BT_SCO is not set # CONFIG_SND_SOC_CHV3_CODEC is not set @@ -4793,6 +4813,7 @@ CONFIG_SND_SOC_RK817=y # CONFIG_SND_SOC_RT5640 is not set # CONFIG_SND_SOC_RT5659 is not set # CONFIG_SND_SOC_RT9120 is not set +# CONFIG_SND_SOC_RTQ9128 is not set # CONFIG_SND_SOC_SGTL5000 is not set CONFIG_SND_SOC_SIMPLE_AMPLIFIER=y # CONFIG_SND_SOC_SIMPLE_MUX is not set @@ -5347,6 +5368,7 @@ CONFIG_TYPEC_FUSB302=m # CONFIG_TYPEC_MUX_GPIO_SBU is not set # CONFIG_TYPEC_MUX_PI3USB30532 is not set # CONFIG_TYPEC_MUX_NB7VPQ904M is not set +# CONFIG_TYPEC_MUX_PTN36502 is not set # end of USB Type-C Multiplexer/DeMultiplexer Switch support # @@ -5458,6 +5480,7 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=y # CONFIG_LEDS_TRIGGER_BACKLIGHT is not set CONFIG_LEDS_TRIGGER_CPU=y CONFIG_LEDS_TRIGGER_ACTIVITY=y +# CONFIG_LEDS_TRIGGER_GPIO is not set CONFIG_LEDS_TRIGGER_DEFAULT_ON=y # @@ -5626,7 +5649,6 @@ CONFIG_DMABUF_HEAPS_CMA=y # CONFIG_COMEDI is not set CONFIG_STAGING=y # CONFIG_PRISM2_USB is not set -# CONFIG_RTL8192U is not set # CONFIG_RTLLIB is not set # CONFIG_RTL8723BS is not set # CONFIG_R8712U is not set @@ -5669,12 +5691,6 @@ CONFIG_STAGING=y # # CONFIG_AD5933 is not set # end of Network Analyzer, Impedance Converters - -# -# Resolver to digital converters -# -# CONFIG_AD2S1210 is not set -# end of Resolver to digital converters # end of IIO staging drivers # CONFIG_FB_SM750 is not set @@ -5690,7 +5706,6 @@ CONFIG_VIDEO_MESON_VDEC=y # CONFIG_PI433 is not set # CONFIG_XIL_AXIS_FIFO is not set # CONFIG_FIELDBUS_DEV is not set -# CONFIG_QLGE is not set # CONFIG_VME_BUS is not set # CONFIG_GOLDFISH is not set # CONFIG_CHROME_PLATFORMS is not set @@ -5748,9 +5763,11 @@ CONFIG_COMMON_CLK_MESON_CPU_DYNDIV=y CONFIG_COMMON_CLK_GXBB=y CONFIG_COMMON_CLK_AXG=y CONFIG_COMMON_CLK_AXG_AUDIO=y -# CONFIG_COMMON_CLK_A1_PLL is not set -# CONFIG_COMMON_CLK_A1_PERIPHERALS is not set +CONFIG_COMMON_CLK_A1_PLL=y +CONFIG_COMMON_CLK_A1_PERIPHERALS=y CONFIG_COMMON_CLK_G12A=y +CONFIG_COMMON_CLK_S4_PLL=y +CONFIG_COMMON_CLK_S4_PERIPHERALS=y # end of Clock support for Amlogic platforms # CONFIG_XILINX_VCU is not set @@ -5826,15 +5843,11 @@ CONFIG_IOMMU_DMA=y CONFIG_MESON_CANVAS=y CONFIG_MESON_CLK_MEASURE=y CONFIG_MESON_GX_SOCINFO=y -CONFIG_MESON_GX_PM_DOMAINS=y -CONFIG_MESON_EE_PM_DOMAINS=y -CONFIG_MESON_SECURE_PM_DOMAINS=y # end of Amlogic SoC drivers # # Broadcom SoC drivers # -# CONFIG_SOC_BRCMSTB is not set # end of Broadcom SoC drivers # @@ -5875,6 +5888,34 @@ CONFIG_MESON_SECURE_PM_DOMAINS=y # end of Xilinx SoC drivers # end of SOC (System On Chip) specific Drivers +# +# PM Domains +# + +# +# Amlogic PM Domains +# +CONFIG_MESON_GX_PM_DOMAINS=y +CONFIG_MESON_EE_PM_DOMAINS=y +CONFIG_MESON_SECURE_PM_DOMAINS=y +# end of Amlogic PM Domains + +# +# Broadcom PM Domains +# +# end of Broadcom PM Domains + +# +# i.MX PM Domains +# +# end of i.MX PM Domains + +# +# Qualcomm PM Domains +# +# end of Qualcomm PM Domains +# end of PM Domains + CONFIG_PM_DEVFREQ=y # @@ -5998,6 +6039,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_HI8435 is not set # CONFIG_HX711 is not set # CONFIG_INA2XX_ADC is not set +# CONFIG_LTC2309 is not set # CONFIG_LTC2471 is not set # CONFIG_LTC2485 is not set # CONFIG_LTC2496 is not set @@ -6012,6 +6054,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_MAX9611 is not set # CONFIG_MCP320X is not set # CONFIG_MCP3422 is not set +# CONFIG_MCP3564 is not set # CONFIG_MCP3911 is not set CONFIG_MESON_SARADC=y # CONFIG_NAU7802 is not set @@ -6373,6 +6416,7 @@ CONFIG_MESON_SARADC=y # Pressure sensors # # CONFIG_ABP060MG is not set +# CONFIG_ROHM_BM1390 is not set # CONFIG_BMP280 is not set # CONFIG_DLHL60D is not set # CONFIG_DPS310 is not set @@ -6420,6 +6464,7 @@ CONFIG_MESON_SARADC=y # # CONFIG_AD2S90 is not set # CONFIG_AD2S1200 is not set +# CONFIG_AD2S1210 is not set # end of Resolver to digital converters # @@ -6633,7 +6678,6 @@ CONFIG_XFS_SUPPORT_ASCII_CI=y # CONFIG_OCFS2_FS is not set CONFIG_BTRFS_FS=m # CONFIG_BTRFS_FS_POSIX_ACL is not set -# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set # CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set # CONFIG_BTRFS_DEBUG is not set # CONFIG_BTRFS_ASSERT is not set @@ -6647,6 +6691,7 @@ CONFIG_F2FS_CHECK_FS=y # CONFIG_F2FS_FS_COMPRESSION is not set CONFIG_F2FS_IOSTAT=y # CONFIG_F2FS_UNFAIR_RWSEM is not set +# CONFIG_BCACHEFS_FS is not set CONFIG_FS_POSIX_ACL=y CONFIG_EXPORTFS=y # CONFIG_EXPORTFS_BLOCK_OPS is not set @@ -7040,7 +7085,9 @@ CONFIG_CRYPTO_DRBG_HMAC=y # CONFIG_CRYPTO_DRBG_CTR is not set CONFIG_CRYPTO_DRBG=y CONFIG_CRYPTO_JITTERENTROPY=y -# CONFIG_CRYPTO_JITTERENTROPY_TESTINTERFACE is not set +CONFIG_CRYPTO_JITTERENTROPY_MEMORY_BLOCKS=64 +CONFIG_CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE=32 +CONFIG_CRYPTO_JITTERENTROPY_OSR=1 CONFIG_CRYPTO_KDF800108_CTR=y # end of Random number generation @@ -7199,7 +7246,6 @@ CONFIG_ZSTD_DECOMPRESS=y CONFIG_XZ_DEC=y # CONFIG_XZ_DEC_X86 is not set # CONFIG_XZ_DEC_POWERPC is not set -# CONFIG_XZ_DEC_IA64 is not set # CONFIG_XZ_DEC_ARM is not set # CONFIG_XZ_DEC_ARMTHUMB is not set # CONFIG_XZ_DEC_SPARC is not set @@ -7284,6 +7330,7 @@ CONFIG_SG_POOL=y CONFIG_ARCH_STACKWALK=y CONFIG_STACKDEPOT=y CONFIG_SBITMAP=y +# CONFIG_LWQ_TEST is not set # end of Library routines CONFIG_GENERIC_IOREMAP=y From 15699e750aa00bcbfca0712a608da9223b1883d8 Mon Sep 17 00:00:00 2001 From: adamg Date: Fri, 9 Feb 2024 09:26:42 +0000 Subject: [PATCH 150/167] Amlogic: cleanup Kconfig --- .../devices/S922X/linux/linux.aarch64.conf | 454 +----------------- 1 file changed, 16 insertions(+), 438 deletions(-) diff --git a/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf b/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf index dd3b96cc81..10a5ff88ea 100644 --- a/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf +++ b/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf @@ -3598,50 +3598,13 @@ CONFIG_REGULATOR_RK808=y # CONFIG_REGULATOR_TPS6524X is not set # CONFIG_REGULATOR_VCTRL is not set # CONFIG_REGULATOR_QCOM_LABIBB is not set -CONFIG_RC_CORE=y -CONFIG_BPF_LIRC_MODE2=y -CONFIG_LIRC=y -CONFIG_RC_MAP=m -CONFIG_RC_DECODERS=y -CONFIG_IR_IMON_DECODER=m -CONFIG_IR_JVC_DECODER=m -CONFIG_IR_MCE_KBD_DECODER=m -CONFIG_IR_NEC_DECODER=m -CONFIG_IR_RC5_DECODER=m -CONFIG_IR_RC6_DECODER=m -CONFIG_IR_RCMM_DECODER=m -CONFIG_IR_SANYO_DECODER=m -CONFIG_IR_SHARP_DECODER=m -CONFIG_IR_SONY_DECODER=m -CONFIG_IR_XMP_DECODER=m -CONFIG_RC_DEVICES=y -CONFIG_IR_GPIO_CIR=m -CONFIG_IR_GPIO_TX=m -# CONFIG_IR_HIX5HD2 is not set -CONFIG_IR_IGORPLUGUSB=m -CONFIG_IR_IGUANA=m -CONFIG_IR_IMON=m -CONFIG_IR_IMON_RAW=m -CONFIG_IR_MCEUSB=m -CONFIG_IR_MESON=m -# CONFIG_IR_MESON_TX is not set -CONFIG_IR_PWM_TX=m -CONFIG_IR_REDRAT3=m -# CONFIG_IR_SERIAL is not set -# CONFIG_IR_SPI is not set -CONFIG_IR_STREAMZAP=m -# CONFIG_IR_TOY is not set -CONFIG_IR_TTUSBIR=m -CONFIG_RC_ATI_REMOTE=m -# CONFIG_RC_LOOPBACK is not set -CONFIG_RC_XBOX_DVD=m +# CONFIG_RC_CORE is not set CONFIG_CEC_CORE=y CONFIG_CEC_NOTIFIER=y # # CEC support # -# CONFIG_MEDIA_CEC_RC is not set CONFIG_MEDIA_CEC_SUPPORT=y # CONFIG_CEC_CH7322 is not set CONFIG_CEC_MESON_AO=y @@ -3652,60 +3615,44 @@ CONFIG_CEC_MESON_G12A_AO=y # end of CEC support CONFIG_MEDIA_SUPPORT=y -# CONFIG_MEDIA_SUPPORT_FILTER is not set +CONFIG_MEDIA_SUPPORT_FILTER=y CONFIG_MEDIA_SUBDRV_AUTOSELECT=y # # Media device types # -CONFIG_MEDIA_CAMERA_SUPPORT=y -CONFIG_MEDIA_ANALOG_TV_SUPPORT=y -CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y -CONFIG_MEDIA_RADIO_SUPPORT=y -CONFIG_MEDIA_SDR_SUPPORT=y +# CONFIG_MEDIA_CAMERA_SUPPORT is not set +# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set +# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set +# CONFIG_MEDIA_RADIO_SUPPORT is not set +# CONFIG_MEDIA_SDR_SUPPORT is not set CONFIG_MEDIA_PLATFORM_SUPPORT=y -CONFIG_MEDIA_TEST_SUPPORT=y +# CONFIG_MEDIA_TEST_SUPPORT is not set # end of Media device types -# -# Media core support -# CONFIG_VIDEO_DEV=y CONFIG_MEDIA_CONTROLLER=y -CONFIG_DVB_CORE=y -# end of Media core support # # Video4Linux options # CONFIG_VIDEO_V4L2_I2C=y -CONFIG_VIDEO_V4L2_SUBDEV_API=y # CONFIG_VIDEO_ADV_DEBUG is not set # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set CONFIG_V4L2_MEM2MEM_DEV=y -CONFIG_V4L2_FWNODE=y -CONFIG_V4L2_ASYNC=y # end of Video4Linux options # # Media controller options # -CONFIG_MEDIA_CONTROLLER_DVB=y # end of Media controller options # -# Digital TV options +# Media drivers # -# CONFIG_DVB_MMAP is not set -CONFIG_DVB_NET=y -CONFIG_DVB_MAX_ADAPTERS=8 -# CONFIG_DVB_DYNAMIC_MINORS is not set -# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set -# CONFIG_DVB_ULE_DEBUG is not set -# end of Digital TV options # -# Media drivers +# Drivers filtered as selected at 'Filter media drivers' # # @@ -3713,11 +3660,8 @@ CONFIG_DVB_MAX_ADAPTERS=8 # # CONFIG_MEDIA_USB_SUPPORT is not set # CONFIG_MEDIA_PCI_SUPPORT is not set -# CONFIG_RADIO_ADAPTERS is not set CONFIG_MEDIA_PLATFORM_DRIVERS=y # CONFIG_V4L_PLATFORM_DRIVERS is not set -# CONFIG_SDR_PLATFORM_DRIVERS is not set -# CONFIG_DVB_PLATFORM_DRIVERS is not set CONFIG_V4L_MEM2MEM_DRIVERS=y CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m @@ -3819,13 +3763,6 @@ CONFIG_VIDEO_MESON_GE2D=y # # Xilinx media platform drivers # - -# -# MMC/SDIO DVB adapters -# -# CONFIG_SMS_SDIO_DRV is not set -# CONFIG_V4L_TEST_DRIVERS is not set -# CONFIG_DVB_TEST_DRIVERS is not set CONFIG_UVC_COMMON=m CONFIG_VIDEOBUF2_CORE=y CONFIG_VIDEOBUF2_V4L2=y @@ -3838,106 +3775,14 @@ CONFIG_VIDEOBUF2_DMA_SG=m # # Media ancillary drivers # -CONFIG_MEDIA_ATTACH=y - -# -# IR I2C driver auto-selected by 'Autoselect ancillary drivers' -# -CONFIG_VIDEO_IR_I2C=m -CONFIG_VIDEO_CAMERA_SENSOR=y -# CONFIG_VIDEO_AR0521 is not set -# CONFIG_VIDEO_HI556 is not set -# CONFIG_VIDEO_HI846 is not set -# CONFIG_VIDEO_HI847 is not set -# CONFIG_VIDEO_IMX208 is not set -# CONFIG_VIDEO_IMX214 is not set -# CONFIG_VIDEO_IMX219 is not set -# CONFIG_VIDEO_IMX258 is not set -# CONFIG_VIDEO_IMX274 is not set -# CONFIG_VIDEO_IMX290 is not set -# CONFIG_VIDEO_IMX296 is not set -# CONFIG_VIDEO_IMX319 is not set -# CONFIG_VIDEO_IMX334 is not set -# CONFIG_VIDEO_IMX335 is not set -# CONFIG_VIDEO_IMX355 is not set -# CONFIG_VIDEO_IMX412 is not set -# CONFIG_VIDEO_IMX415 is not set -# CONFIG_VIDEO_MT9M001 is not set -# CONFIG_VIDEO_MT9M111 is not set -# CONFIG_VIDEO_MT9M114 is not set -# CONFIG_VIDEO_MT9P031 is not set -# CONFIG_VIDEO_MT9T112 is not set -# CONFIG_VIDEO_MT9V011 is not set -# CONFIG_VIDEO_MT9V032 is not set -# CONFIG_VIDEO_MT9V111 is not set -# CONFIG_VIDEO_OG01A1B is not set -# CONFIG_VIDEO_OV01A10 is not set -# CONFIG_VIDEO_OV02A10 is not set -# CONFIG_VIDEO_OV08D10 is not set -# CONFIG_VIDEO_OV08X40 is not set -# CONFIG_VIDEO_OV13858 is not set -# CONFIG_VIDEO_OV13B10 is not set -# CONFIG_VIDEO_OV2640 is not set -# CONFIG_VIDEO_OV2659 is not set -# CONFIG_VIDEO_OV2680 is not set -# CONFIG_VIDEO_OV2685 is not set -# CONFIG_VIDEO_OV4689 is not set -# CONFIG_VIDEO_OV5640 is not set -# CONFIG_VIDEO_OV5645 is not set -# CONFIG_VIDEO_OV5647 is not set -# CONFIG_VIDEO_OV5648 is not set -# CONFIG_VIDEO_OV5670 is not set -# CONFIG_VIDEO_OV5675 is not set -# CONFIG_VIDEO_OV5693 is not set -# CONFIG_VIDEO_OV5695 is not set -# CONFIG_VIDEO_OV6650 is not set -# CONFIG_VIDEO_OV7251 is not set -# CONFIG_VIDEO_OV7640 is not set -# CONFIG_VIDEO_OV7670 is not set -# CONFIG_VIDEO_OV772X is not set -# CONFIG_VIDEO_OV7740 is not set -# CONFIG_VIDEO_OV8856 is not set -# CONFIG_VIDEO_OV8858 is not set -# CONFIG_VIDEO_OV8865 is not set -# CONFIG_VIDEO_OV9282 is not set -# CONFIG_VIDEO_OV9640 is not set -# CONFIG_VIDEO_OV9650 is not set -# CONFIG_VIDEO_RDACM20 is not set -# CONFIG_VIDEO_RDACM21 is not set -# CONFIG_VIDEO_RJ54N1 is not set -# CONFIG_VIDEO_S5C73M3 is not set -# CONFIG_VIDEO_S5K5BAF is not set -# CONFIG_VIDEO_S5K6A3 is not set -# CONFIG_VIDEO_ST_VGXY61 is not set -# CONFIG_VIDEO_CCS is not set -# CONFIG_VIDEO_ET8EK8 is not set - -# -# Lens drivers -# -# CONFIG_VIDEO_AD5820 is not set -# CONFIG_VIDEO_AK7375 is not set -# CONFIG_VIDEO_DW9714 is not set -# CONFIG_VIDEO_DW9719 is not set -# CONFIG_VIDEO_DW9768 is not set -# CONFIG_VIDEO_DW9807_VCM is not set -# end of Lens drivers - -# -# Flash devices -# -# CONFIG_VIDEO_ADP1653 is not set -# CONFIG_VIDEO_LM3560 is not set -# CONFIG_VIDEO_LM3646 is not set -# end of Flash devices # # Audio decoders, processors and mixers # # CONFIG_VIDEO_CS3308 is not set # CONFIG_VIDEO_CS5345 is not set -CONFIG_VIDEO_CS53L32A=m -CONFIG_VIDEO_MSP3400=m +# CONFIG_VIDEO_CS53L32A is not set +# CONFIG_VIDEO_MSP3400 is not set # CONFIG_VIDEO_SONY_BTF_MPX is not set # CONFIG_VIDEO_TDA1997X is not set # CONFIG_VIDEO_TDA7432 is not set @@ -3949,7 +3794,7 @@ CONFIG_VIDEO_MSP3400=m # CONFIG_VIDEO_UDA1342 is not set # CONFIG_VIDEO_VP27SMPX is not set # CONFIG_VIDEO_WM8739 is not set -CONFIG_VIDEO_WM8775=m +# CONFIG_VIDEO_WM8775 is not set # end of Audio decoders, processors and mixers # @@ -3974,7 +3819,7 @@ CONFIG_VIDEO_WM8775=m # CONFIG_VIDEO_MAX9286 is not set # CONFIG_VIDEO_ML86V7667 is not set # CONFIG_VIDEO_SAA7110 is not set -CONFIG_VIDEO_SAA711X=m +# CONFIG_VIDEO_SAA711X is not set # CONFIG_VIDEO_TC358743 is not set # CONFIG_VIDEO_TC358746 is not set # CONFIG_VIDEO_TVP514X is not set @@ -3990,7 +3835,7 @@ CONFIG_VIDEO_SAA711X=m # Video and audio decoders # # CONFIG_VIDEO_SAA717X is not set -CONFIG_VIDEO_CX25840=m +# CONFIG_VIDEO_CX25840 is not set # end of Video decoders # @@ -4023,7 +3868,6 @@ CONFIG_VIDEO_CX25840=m # # SDR tuner chips # -# CONFIG_SDR_MAX2175 is not set # end of SDR tuner chips # @@ -4046,221 +3890,8 @@ CONFIG_VIDEO_CX25840=m # # Media SPI Adapters # -CONFIG_CXD2880_SPI_DRV=m # CONFIG_VIDEO_GS1662 is not set # end of Media SPI Adapters - -CONFIG_MEDIA_TUNER=y - -# -# Customize TV tuners -# -CONFIG_MEDIA_TUNER_E4000=m -CONFIG_MEDIA_TUNER_FC0011=m -CONFIG_MEDIA_TUNER_FC0012=m -CONFIG_MEDIA_TUNER_FC0013=m -CONFIG_MEDIA_TUNER_FC2580=m -CONFIG_MEDIA_TUNER_IT913X=m -# CONFIG_MEDIA_TUNER_M88RS6000T is not set -CONFIG_MEDIA_TUNER_MAX2165=m -CONFIG_MEDIA_TUNER_MC44S803=y -# CONFIG_MEDIA_TUNER_MSI001 is not set -CONFIG_MEDIA_TUNER_MT2060=m -CONFIG_MEDIA_TUNER_MT2063=m -CONFIG_MEDIA_TUNER_MT20XX=y -# CONFIG_MEDIA_TUNER_MT2131 is not set -CONFIG_MEDIA_TUNER_MT2266=m -# CONFIG_MEDIA_TUNER_MXL301RF is not set -CONFIG_MEDIA_TUNER_MXL5005S=m -CONFIG_MEDIA_TUNER_MXL5007T=m -# CONFIG_MEDIA_TUNER_QM1D1B0004 is not set -CONFIG_MEDIA_TUNER_QM1D1C0042=m -CONFIG_MEDIA_TUNER_QT1010=m -CONFIG_MEDIA_TUNER_R820T=m -CONFIG_MEDIA_TUNER_SI2157=m -CONFIG_MEDIA_TUNER_SIMPLE=y -CONFIG_MEDIA_TUNER_TDA18212=m -CONFIG_MEDIA_TUNER_TDA18218=m -CONFIG_MEDIA_TUNER_TDA18250=m -CONFIG_MEDIA_TUNER_TDA18271=y -CONFIG_MEDIA_TUNER_TDA827X=y -CONFIG_MEDIA_TUNER_TDA8290=y -CONFIG_MEDIA_TUNER_TDA9887=y -CONFIG_MEDIA_TUNER_TEA5761=y -CONFIG_MEDIA_TUNER_TEA5767=y -CONFIG_MEDIA_TUNER_TUA9001=m -CONFIG_MEDIA_TUNER_XC2028=y -CONFIG_MEDIA_TUNER_XC4000=y -CONFIG_MEDIA_TUNER_XC5000=y -# end of Customize TV tuners - -# -# Customise DVB Frontends -# - -# -# Multistandard (satellite) frontends -# -CONFIG_DVB_M88DS3103=m -# CONFIG_DVB_MXL5XX is not set -CONFIG_DVB_STB0899=m -CONFIG_DVB_STB6100=m -CONFIG_DVB_STV090x=m -# CONFIG_DVB_STV0910 is not set -CONFIG_DVB_STV6110x=m -# CONFIG_DVB_STV6111 is not set - -# -# Multistandard (cable + terrestrial) frontends -# -CONFIG_DVB_DRXK=m -CONFIG_DVB_MN88472=m -CONFIG_DVB_MN88473=m -CONFIG_DVB_SI2165=m -CONFIG_DVB_TDA18271C2DD=m - -# -# DVB-S (satellite) frontends -# -# CONFIG_DVB_CX24110 is not set -CONFIG_DVB_CX24116=m -# CONFIG_DVB_CX24117 is not set -CONFIG_DVB_CX24120=m -CONFIG_DVB_CX24123=m -CONFIG_DVB_DS3000=m -# CONFIG_DVB_MB86A16 is not set -CONFIG_DVB_MT312=m -CONFIG_DVB_S5H1420=m -CONFIG_DVB_SI21XX=m -CONFIG_DVB_STB6000=m -CONFIG_DVB_STV0288=m -CONFIG_DVB_STV0299=m -CONFIG_DVB_STV0900=m -CONFIG_DVB_STV6110=m -CONFIG_DVB_TDA10071=m -CONFIG_DVB_TDA10086=m -# CONFIG_DVB_TDA8083 is not set -# CONFIG_DVB_TDA8261 is not set -CONFIG_DVB_TDA826X=m -CONFIG_DVB_TS2020=m -# CONFIG_DVB_TUA6100 is not set -CONFIG_DVB_TUNER_CX24113=m -CONFIG_DVB_TUNER_ITD1000=m -# CONFIG_DVB_VES1X93 is not set -# CONFIG_DVB_ZL10036 is not set -CONFIG_DVB_ZL10039=m - -# -# DVB-T (terrestrial) frontends -# -CONFIG_DVB_AF9013=m -# CONFIG_DVB_CX22700 is not set -CONFIG_DVB_CX22702=m -CONFIG_DVB_CXD2820R=m -CONFIG_DVB_CXD2841ER=m -CONFIG_DVB_DIB3000MB=m -CONFIG_DVB_DIB3000MC=m -CONFIG_DVB_DIB7000M=m -CONFIG_DVB_DIB7000P=m -# CONFIG_DVB_DIB9000 is not set -CONFIG_DVB_DRXD=m -CONFIG_DVB_EC100=m -# CONFIG_DVB_L64781 is not set -CONFIG_DVB_MT352=m -CONFIG_DVB_NXT6000=m -CONFIG_DVB_RTL2830=m -CONFIG_DVB_RTL2832=m -CONFIG_DVB_RTL2832_SDR=m -# CONFIG_DVB_S5H1432 is not set -CONFIG_DVB_SI2168=m -# CONFIG_DVB_SP887X is not set -# CONFIG_DVB_STV0367 is not set -CONFIG_DVB_TDA10048=m -CONFIG_DVB_TDA1004X=m -CONFIG_DVB_ZD1301_DEMOD=m -CONFIG_DVB_ZL10353=m -# CONFIG_DVB_CXD2880 is not set - -# -# DVB-C (cable) frontends -# -CONFIG_DVB_STV0297=m -# CONFIG_DVB_TDA10021 is not set -CONFIG_DVB_TDA10023=m -# CONFIG_DVB_VES1820 is not set - -# -# ATSC (North American/Korean Terrestrial/Cable DTV) frontends -# -CONFIG_DVB_AU8522=m -CONFIG_DVB_AU8522_DTV=m -CONFIG_DVB_AU8522_V4L=m -CONFIG_DVB_BCM3510=m -CONFIG_DVB_LG2160=m -CONFIG_DVB_LGDT3305=m -CONFIG_DVB_LGDT3306A=m -CONFIG_DVB_LGDT330X=m -CONFIG_DVB_MXL692=m -CONFIG_DVB_NXT200X=m -# CONFIG_DVB_OR51132 is not set -# CONFIG_DVB_OR51211 is not set -CONFIG_DVB_S5H1409=m -CONFIG_DVB_S5H1411=m - -# -# ISDB-T (terrestrial) frontends -# -CONFIG_DVB_DIB8000=m -CONFIG_DVB_MB86A20S=m -CONFIG_DVB_S921=m - -# -# ISDB-S (satellite) & ISDB-T (terrestrial) frontends -# -# CONFIG_DVB_MN88443X is not set -CONFIG_DVB_TC90522=m - -# -# Digital terrestrial only tuners/PLL -# -CONFIG_DVB_PLL=m -CONFIG_DVB_TUNER_DIB0070=m -CONFIG_DVB_TUNER_DIB0090=m - -# -# SEC control devices for DVB-S -# -CONFIG_DVB_A8293=m -CONFIG_DVB_AF9033=m -# CONFIG_DVB_ASCOT2E is not set -CONFIG_DVB_ATBM8830=m -# CONFIG_DVB_HELENE is not set -# CONFIG_DVB_HORUS3A is not set -# CONFIG_DVB_ISL6405 is not set -CONFIG_DVB_ISL6421=m -CONFIG_DVB_ISL6423=m -CONFIG_DVB_IX2505V=m -# CONFIG_DVB_LGS8GL5 is not set -CONFIG_DVB_LGS8GXX=m -# CONFIG_DVB_LNBH25 is not set -# CONFIG_DVB_LNBH29 is not set -CONFIG_DVB_LNBP21=m -CONFIG_DVB_LNBP22=m -CONFIG_DVB_M88RS2000=m -# CONFIG_DVB_TDA665x is not set -CONFIG_DVB_DRX39XYJ=m - -# -# Common Interface (EN50221) controller drivers -# -# CONFIG_DVB_CXD2099 is not set -CONFIG_DVB_SP2=m -# end of Customise DVB Frontends - -# -# Tools to develop new frontends -# -# CONFIG_DVB_DUMMY_FE is not set # end of Media ancillary drivers # @@ -5167,59 +4798,7 @@ CONFIG_USB_DWC2_DUAL_ROLE=y # # USB port drivers # -CONFIG_USB_SERIAL=m -CONFIG_USB_SERIAL_GENERIC=y -# CONFIG_USB_SERIAL_SIMPLE is not set -# CONFIG_USB_SERIAL_AIRCABLE is not set -# CONFIG_USB_SERIAL_ARK3116 is not set -# CONFIG_USB_SERIAL_BELKIN is not set -CONFIG_USB_SERIAL_CH341=m -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -CONFIG_USB_SERIAL_CP210X=m -# CONFIG_USB_SERIAL_CYPRESS_M8 is not set -# CONFIG_USB_SERIAL_EMPEG is not set -CONFIG_USB_SERIAL_FTDI_SIO=m -# CONFIG_USB_SERIAL_VISOR is not set -# CONFIG_USB_SERIAL_IPAQ is not set -# CONFIG_USB_SERIAL_IR is not set -# CONFIG_USB_SERIAL_EDGEPORT is not set -# CONFIG_USB_SERIAL_EDGEPORT_TI is not set -# CONFIG_USB_SERIAL_F81232 is not set -# CONFIG_USB_SERIAL_F8153X is not set -# CONFIG_USB_SERIAL_GARMIN is not set -# CONFIG_USB_SERIAL_IPW is not set -CONFIG_USB_SERIAL_IUU=m -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -# CONFIG_USB_SERIAL_KEYSPAN is not set -# CONFIG_USB_SERIAL_KLSI is not set -# CONFIG_USB_SERIAL_KOBIL_SCT is not set -# CONFIG_USB_SERIAL_MCT_U232 is not set -# CONFIG_USB_SERIAL_METRO is not set -# CONFIG_USB_SERIAL_MOS7720 is not set -# CONFIG_USB_SERIAL_MOS7840 is not set -# CONFIG_USB_SERIAL_MXUPORT is not set -# CONFIG_USB_SERIAL_NAVMAN is not set -CONFIG_USB_SERIAL_PL2303=m -# CONFIG_USB_SERIAL_OTI6858 is not set -# CONFIG_USB_SERIAL_QCAUX is not set -# CONFIG_USB_SERIAL_QUALCOMM is not set -# CONFIG_USB_SERIAL_SPCP8X5 is not set -# CONFIG_USB_SERIAL_SAFE is not set -# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set -# CONFIG_USB_SERIAL_SYMBOL is not set -# CONFIG_USB_SERIAL_TI is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_OPTION is not set -# CONFIG_USB_SERIAL_OMNINET is not set -# CONFIG_USB_SERIAL_OPTICON is not set -# CONFIG_USB_SERIAL_XSENS_MT is not set -# CONFIG_USB_SERIAL_WISHBONE is not set -# CONFIG_USB_SERIAL_SSU100 is not set -# CONFIG_USB_SERIAL_QT2 is not set -# CONFIG_USB_SERIAL_UPD78F0730 is not set -# CONFIG_USB_SERIAL_XR is not set -# CONFIG_USB_SERIAL_DEBUG is not set +# CONFIG_USB_SERIAL is not set # # USB Miscellaneous drivers @@ -5695,7 +5274,6 @@ CONFIG_STAGING=y # CONFIG_FB_SM750 is not set CONFIG_STAGING_MEDIA=y -# CONFIG_DVB_AV7110 is not set # CONFIG_VIDEO_MAX96712 is not set CONFIG_VIDEO_MESON_VDEC=y # CONFIG_STAGING_MEDIA_DEPRECATED is not set From ea3d17a668795e6be2d297224f02ed13565a39c1 Mon Sep 17 00:00:00 2001 From: adamg Date: Fri, 9 Feb 2024 12:23:54 +0000 Subject: [PATCH 151/167] buildroot: cleanup rpi references --- Makefile | 3 - config/graphic | 10 +- config/noobs/os.json | 11 - config/noobs/partition_setup.sh | 53 - config/noobs/partitions.json | 20 - .../modprobe.d/rpi-cirrus.conf | 1 - packages/audio/rpi-cirrus-config/package.mk | 26 - .../scripts/rpi-cirrus-config | 24 - .../udev.d/90-alsa-restore.rules | 17 - packages/devel/qt5/package.mk | 5 - packages/graphics/libdrm/package.mk | 3 - .../brcmfmac_sdio-firmware-rpi/package.mk | 27 - .../scripts/rpi-btuart | 26 - .../system.d/brcmfmac_sdio-firmware.service | 13 - .../udev.d/90-rpi-add-serial.rules | 21 - .../linux-firmware/kernel-firmware/package.mk | 8 - packages/kernel/linux/package.mk | 26 - packages/multimedia/ffmpeg/package.mk | 4 - .../ffmpeg/patches/rpi/ffmpeg-001-rpi.patch | 37792 ---------------- packages/sysutils/busybox/package.mk | 6 - packages/sysutils/busybox/scripts/init | 2 - .../busybox/scripts/rpi-flash-firmware | 42 - .../system.d/rpi-flash-firmware.service | 12 - .../system.d/rpi-flash-firmware.target | 5 - projects/Amlogic/packages/linux/package.mk | 13 - projects/Rockchip/packages/linux/package.mk | 13 - scripts/image | 121 +- scripts/mkimage | 38 +- 28 files changed, 5 insertions(+), 38337 deletions(-) delete mode 100644 config/noobs/os.json delete mode 100755 config/noobs/partition_setup.sh delete mode 100644 config/noobs/partitions.json delete mode 100644 packages/audio/rpi-cirrus-config/modprobe.d/rpi-cirrus.conf delete mode 100644 packages/audio/rpi-cirrus-config/package.mk delete mode 100755 packages/audio/rpi-cirrus-config/scripts/rpi-cirrus-config delete mode 100644 packages/audio/rpi-cirrus-config/udev.d/90-alsa-restore.rules delete mode 100644 packages/kernel/linux-firmware/brcmfmac_sdio-firmware-rpi/package.mk delete mode 100755 packages/kernel/linux-firmware/brcmfmac_sdio-firmware-rpi/scripts/rpi-btuart delete mode 100644 packages/kernel/linux-firmware/brcmfmac_sdio-firmware-rpi/system.d/brcmfmac_sdio-firmware.service delete mode 100755 packages/kernel/linux-firmware/brcmfmac_sdio-firmware-rpi/udev.d/90-rpi-add-serial.rules delete mode 100644 packages/multimedia/ffmpeg/patches/rpi/ffmpeg-001-rpi.patch delete mode 100755 packages/sysutils/busybox/scripts/rpi-flash-firmware delete mode 100644 packages/sysutils/busybox/system.d/rpi-flash-firmware.service delete mode 100644 packages/sysutils/busybox/system.d/rpi-flash-firmware.target diff --git a/Makefile b/Makefile index 2c6a7b50ef..3dcc6363bb 100644 --- a/Makefile +++ b/Makefile @@ -12,9 +12,6 @@ release: image: ./scripts/image mkimage -noobs: - ./scripts/image noobs - clean: rm -rf $(BUILD_DIRS) diff --git a/config/graphic b/config/graphic index 7773e4c1f9..90679b1196 100644 --- a/config/graphic +++ b/config/graphic @@ -34,7 +34,7 @@ get_graphicdrivers() { V4L2_SUPPORT="no" if [ "${GRAPHIC_DRIVERS}" = "all" ]; then - GRAPHIC_DRIVERS="crocus i915 iris r300 r600 radeonsi nvidia nvidia-legacy nvidia-ng vmware virtio vc4" + GRAPHIC_DRIVERS="crocus i915 iris r300 r600 radeonsi nvidia nvidia-legacy nvidia-ng vmware virtio" fi if listcontains "${GRAPHIC_DRIVERS}" "crocus"; then @@ -132,14 +132,6 @@ get_graphicdrivers() { VAAPI_SUPPORT="yes" fi - if listcontains "${GRAPHIC_DRIVERS}" "vc4"; then - GALLIUM_DRIVERS+=" vc4 v3d kmsro" - VULKAN_DRIVERS_MESA+=" broadcom" - V4L2_SUPPORT="yes" - VAAPI_SUPPORT="no" - VDPAU_SUPPORT="no" - fi - if listcontains "${GRAPHIC_DRIVERS}" "virtio"; then GALLIUM_DRIVERS+=" virgl" fi diff --git a/config/noobs/os.json b/config/noobs/os.json deleted file mode 100644 index 3091853bdd..0000000000 --- a/config/noobs/os.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "@DISTRONAME@_@PROJECT@", - "version": "@OS_VERSION@", - "release_date": "@RELEASE_DATE@", - "kernel": "@KERNEL_VERSION@", - "description": "@DESCRIPTION@", - "username": "root", - "password": "@ROOT_PASSWORD@", - "supported_hex_revisions": "@NOOBS_HEX@", - "supported_models": [@NOOBS_SUPPORTED_MODELS@] -} diff --git a/config/noobs/partition_setup.sh b/config/noobs/partition_setup.sh deleted file mode 100755 index 50577f5e6b..0000000000 --- a/config/noobs/partition_setup.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh -x - -# SPDX-License-Identifier: GPL-2.0-or-later -# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv) - -MOUNTPOINT="/tmp/LibreELEC-System" - -md5sumCheck() { - ( cd $MOUNTPOINT - echo "checking MD5: $1" - md5sum -c $1.md5 - if [ "$?" = "1" ]; then - echo "#######################################################" - echo "# #" - echo "# LibreELEC failed md5 check - Installation will quit #" - echo "# #" - echo "# Your original download was probably corrupt. #" - echo "# Please visit libreelec.tv and get another copy #" - echo "# #" - echo "#######################################################" - exit 1 - fi - rm -rf $1.md5 - ) -} - -if [ -z $part1 -o -z $part2 -o -z $id1 -o -z $id2 ]; then - echo "error: part1, part2, id1 or id2 not specified" - echo "actual values:" - echo "part1:" $part1 - echo "part2:" $part2 - echo "id1 :" $id1 - echo "id2 :" $id2 - exit 1 -fi - -# create mountpoint - mkdir -p $MOUNTPOINT - -# mount needed partition - mount $part1 $MOUNTPOINT - -# check md5sum - md5sumCheck kernel.img - md5sumCheck SYSTEM - -# create bootloader configuration - echo "creating bootloader configuration..." - echo "boot=$id1 disk=$id2 quiet" > $MOUNTPOINT/cmdline.txt - -# cleanup mountpoint - umount $MOUNTPOINT - rmdir $MOUNTPOINT diff --git a/config/noobs/partitions.json b/config/noobs/partitions.json deleted file mode 100644 index 09b6dad9f6..0000000000 --- a/config/noobs/partitions.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "partitions": [ - { - "label": "System", - "filesystem_type": "FAT", - "partition_size_nominal": @SYSTEM_SIZE@, - "want_maximised": false, - "uncompressed_tarball_size": 1024, - "mkfs_options": "" - }, - { - "label": "Storage", - "filesystem_type": "ext4", - "partition_size_nominal": 1024, - "want_maximised": true, - "uncompressed_tarball_size": 10, - "mkfs_options": "" - } - ] -} diff --git a/packages/audio/rpi-cirrus-config/modprobe.d/rpi-cirrus.conf b/packages/audio/rpi-cirrus-config/modprobe.d/rpi-cirrus.conf deleted file mode 100644 index 2b3237d29f..0000000000 --- a/packages/audio/rpi-cirrus-config/modprobe.d/rpi-cirrus.conf +++ /dev/null @@ -1 +0,0 @@ -softdep arizona-spi pre: arizona-ldo1 diff --git a/packages/audio/rpi-cirrus-config/package.mk b/packages/audio/rpi-cirrus-config/package.mk deleted file mode 100644 index f0f6eccae6..0000000000 --- a/packages/audio/rpi-cirrus-config/package.mk +++ /dev/null @@ -1,26 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) - -PKG_NAME="rpi-cirrus-config" -PKG_VERSION="0.0.2" -PKG_SHA256="cc11c47f1f2b6d5e72dcdea828ba57e0dcaf74161f675a4a9f395054f5d82d31" -PKG_LICENSE="GPL" -PKG_SITE="https://github.com/HiassofT/rpi-cirrus-config" -PKG_URL="https://github.com/HiassofT/rpi-cirrus-config/archive/${PKG_VERSION}.tar.gz" -PKG_DEPENDS_TARGET="alsa-utils" -PKG_LONGDESC="Config scripts for the Wolfson/Cirrus Logic audio card" -PKG_TOOLCHAIN="manual" - -makeinstall_target() { - mkdir -p ${INSTALL}/usr/lib/udev - install -m 0755 ${PKG_DIR}/scripts/rpi-cirrus-config ${INSTALL}/usr/lib/udev/rpi-cirrus-config - - mkdir -p ${INSTALL}/usr/share/alsa/cards - cp alsa/RPiCirrus.conf ${INSTALL}/usr/share/alsa/cards - - mkdir -p ${INSTALL}/usr/lib/alsa - cp mixer-scripts/rpi-cirrus-functions.sh ${INSTALL}/usr/lib/alsa - - mkdir -p ${INSTALL}/usr/config - cp -PR ${PKG_DIR}/config/* ${INSTALL}/usr/config -} diff --git a/packages/audio/rpi-cirrus-config/scripts/rpi-cirrus-config b/packages/audio/rpi-cirrus-config/scripts/rpi-cirrus-config deleted file mode 100755 index d8bda0b07c..0000000000 --- a/packages/audio/rpi-cirrus-config/scripts/rpi-cirrus-config +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -# setup default mixer settings for Cirrus Logic Audio Card - -. /etc/profile - -if [ -f $HOME/.config/sound.conf ] ; then - alsactl restore -f $HOME/.config/sound.conf -else - if [ -r $HOME/.config/rpi-cirrus-config.sh ] ; then - progress "Setting up Cirrus Logic Audio Card with user config" - sh $HOME/.config/rpi-cirrus-config.sh - else - progress "Setting up Cirrus Logic Audio Card" - - # load helper functions and definitions - . /usr/lib/alsa/rpi-cirrus-functions.sh - - playback_to_spdif - playback_to_lineout - playback_to_headset - mixer 'Noise Gate Switch' off - fi -fi diff --git a/packages/audio/rpi-cirrus-config/udev.d/90-alsa-restore.rules b/packages/audio/rpi-cirrus-config/udev.d/90-alsa-restore.rules deleted file mode 100644 index 283dc4c8b6..0000000000 --- a/packages/audio/rpi-cirrus-config/udev.d/90-alsa-restore.rules +++ /dev/null @@ -1,17 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) - -# When a sound device is detected, restore the volume settings -SUBSYSTEM=="sound", KERNEL=="controlC*", NAME="snd/%k", ACTION=="add", GOTO="alsa_restore_go" -GOTO="alsa_restore_end" - -LABEL="alsa_restore_go" - -# Separate config-script for RPi-Cirrus card -DRIVERS=="snd-rpi-cirrus", RUN+="rpi-cirrus-config", GOTO="alsa_restore_end" - -# Default config-script for all other cards -RUN+="soundconfig %k" - -LABEL="alsa_restore_end" - diff --git a/packages/devel/qt5/package.mk b/packages/devel/qt5/package.mk index 9dcd5d7526..7ba9fb84fb 100644 --- a/packages/devel/qt5/package.mk +++ b/packages/devel/qt5/package.mk @@ -160,11 +160,6 @@ configure_target() { mkdir -p ${PKG_BUILD}/.${TARGET_NAME} cd ${PKG_BUILD}/.${TARGET_NAME} - # Avoid eglfs_brcm detection by bcm_host.h - if [ "${DEVICE}" = "RPi4" -o "${DEVICE}" = "RPi2" ]; then - sed -e "s#bcm_host.h#bcm_host2.h#" -i ${PKG_BUILD}/qtbase/src/gui/configure.json - fi - # Create mkspecs file QMAKE_CONF_DIR="${PKG_BUILD}/qtbase/mkspecs/devices/linux-g++" QMAKE_CONF="${QMAKE_CONF_DIR}/qmake.conf" diff --git a/packages/graphics/libdrm/package.mk b/packages/graphics/libdrm/package.mk index 88f646f6e8..2b8a71ea0d 100644 --- a/packages/graphics/libdrm/package.mk +++ b/packages/graphics/libdrm/package.mk @@ -37,9 +37,6 @@ listcontains "${GRAPHIC_DRIVERS}" "radeonsi" && listcontains "${GRAPHIC_DRIVERS}" "vmware" && PKG_MESON_OPTS_TARGET+=" -Dvmwgfx=enabled" || PKG_MESON_OPTS_TARGET+=" -Dvmwgfx=disabled" -listcontains "${GRAPHIC_DRIVERS}" "vc4" && - PKG_MESON_OPTS_TARGET+=" -Dvc4=enabled" || PKG_MESON_OPTS_TARGET+=" -Dvc4=disabled" - listcontains "${GRAPHIC_DRIVERS}" "freedreno" && PKG_MESON_OPTS_TARGET+=" -Dfreedreno=enabled" || PKG_MESON_OPTS_TARGET+=" -Dfreedreno=disabled" diff --git a/packages/kernel/linux-firmware/brcmfmac_sdio-firmware-rpi/package.mk b/packages/kernel/linux-firmware/brcmfmac_sdio-firmware-rpi/package.mk deleted file mode 100644 index 4d81eb6294..0000000000 --- a/packages/kernel/linux-firmware/brcmfmac_sdio-firmware-rpi/package.mk +++ /dev/null @@ -1,27 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-or-later -# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv) -# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) - -PKG_NAME="brcmfmac_sdio-firmware-rpi" -PKG_VERSION="688531da4bcf802a814d9cb0c8b6d62e3b8a3327" -PKG_SHA256="51a33d23127300dffd6ac088f372b83ab862053f5e4dc7130676ebaaa824e626" -PKG_LICENSE="GPL" -PKG_SITE="https://github.com/LibreELEC/LibreELEC.tv" -PKG_URL="https://github.com/LibreELEC/${PKG_NAME}/archive/${PKG_VERSION}.tar.gz" -PKG_DEPENDS_TARGET="toolchain kernel-firmware" -PKG_LONGDESC="Firmware for brcm bluetooth chips used on RaspberryPi devices." -PKG_TOOLCHAIN="manual" - -makeinstall_target() { - DESTDIR=${INSTALL}/$(get_kernel_overlay_dir) ./install -} - -post_makeinstall_target() { - # Install rpi btuart script to bring up Bluetooth - mkdir -p ${INSTALL}/usr/bin - cp -P ${PKG_DIR}/scripts/rpi-btuart ${INSTALL}/usr/bin -} - -post_install() { - enable_service brcmfmac_sdio-firmware.service -} diff --git a/packages/kernel/linux-firmware/brcmfmac_sdio-firmware-rpi/scripts/rpi-btuart b/packages/kernel/linux-firmware/brcmfmac_sdio-firmware-rpi/scripts/rpi-btuart deleted file mode 100755 index b9c6cee09d..0000000000 --- a/packages/kernel/linux-firmware/brcmfmac_sdio-firmware-rpi/scripts/rpi-btuart +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh - -HCIATTACH=/usr/bin/hciattach -if grep -q "Pi 4" /proc/device-tree/model; then - BDADDR= -else - SERIAL=$(cat /proc/device-tree/serial-number | cut -c9-) - B1=${SERIAL:2:2} - B2=${SERIAL:4:2} - B3=${SERIAL:6:2} - BDADDR=$(printf b8:27:eb:%02x:%02x:%02x $((0x$B1 ^ 0xaa)) $((0x$B2 ^ 0xaa)) $((0x$B3 ^ 0xaa))) -fi - -uart0="$(cat /proc/device-tree/aliases/uart0)" -serial1="$(cat /proc/device-tree/aliases/serial1)" - -if [ "$uart0" = "$serial1" ] ; then - uart0_pins="$(wc -c /proc/device-tree/soc/gpio@7e200000/uart0_pins/brcm\,pins | cut -f 1 -d ' ')" - if [ "$uart0_pins" = "16" ] ; then - $HCIATTACH /dev/serial1 bcm43xx 3000000 flow - $BDADDR - else - $HCIATTACH /dev/serial1 bcm43xx 921600 noflow - $BDADDR - fi -else - $HCIATTACH /dev/serial1 bcm43xx 460800 noflow - $BDADDR -fi diff --git a/packages/kernel/linux-firmware/brcmfmac_sdio-firmware-rpi/system.d/brcmfmac_sdio-firmware.service b/packages/kernel/linux-firmware/brcmfmac_sdio-firmware-rpi/system.d/brcmfmac_sdio-firmware.service deleted file mode 100644 index 97809c744e..0000000000 --- a/packages/kernel/linux-firmware/brcmfmac_sdio-firmware-rpi/system.d/brcmfmac_sdio-firmware.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Broadcom sdio firmware update for BCM43430A1 -ConditionFileNotEmpty=/proc/device-tree/soc/gpio@7e200000/bt_pins/brcm,pins -Requires=dev-serial1.device -After=dev-serial1.device network.target - -[Service] -Type=simple -RemainAfterExit=yes -ExecStart=/usr/bin/rpi-btuart - -[Install] -WantedBy=network.target diff --git a/packages/kernel/linux-firmware/brcmfmac_sdio-firmware-rpi/udev.d/90-rpi-add-serial.rules b/packages/kernel/linux-firmware/brcmfmac_sdio-firmware-rpi/udev.d/90-rpi-add-serial.rules deleted file mode 100755 index 334bd37d4b..0000000000 --- a/packages/kernel/linux-firmware/brcmfmac_sdio-firmware-rpi/udev.d/90-rpi-add-serial.rules +++ /dev/null @@ -1,21 +0,0 @@ -KERNEL=="ttyAMA[01]", PROGRAM="/bin/sh -c '\ - ALIASES=/proc/device-tree/aliases; \ - if [ $(cat $ALIASES/uart0) = $(cat $ALIASES/serial0) ]; then \ - echo 0;\ - elif [ $(cat $ALIASES/uart0) = $(cat $ALIASES/serial1) ]; then \ - echo 1; \ - else \ - exit 1; \ - fi\ - '", SYMLINK+="serial%c" - -KERNEL=="ttyS0", PROGRAM="/bin/sh -c '\ - ALIASES=/proc/device-tree/aliases; \ - if [ $(cat $ALIASES/uart1) = $(cat $ALIASES/serial0) ]; then \ - echo 0; \ - elif [ $(cat $ALIASES/uart1) = $(cat $ALIASES/serial1) ]; then \ - echo 1; \ - else \ - exit 1; \ - fi \ - '", SYMLINK+="serial%c" diff --git a/packages/kernel/linux-firmware/kernel-firmware/package.mk b/packages/kernel/linux-firmware/kernel-firmware/package.mk index 64a194ac58..ebc338e4b5 100644 --- a/packages/kernel/linux-firmware/kernel-firmware/package.mk +++ b/packages/kernel/linux-firmware/kernel-firmware/package.mk @@ -68,14 +68,6 @@ makeinstall_target() { PKG_KERNEL_CFG_FILE=$(kernel_config_path) || die - # The following files are RPi specific and installed by brcmfmac_sdio-firmware-rpi instead. - # They are also not required at all if the kernel is not suitably configured. - if listcontains "${FIRMWARE}" "brcmfmac_sdio-firmware-rpi" || \ - ! grep -q "^CONFIG_BRCMFMAC_SDIO=y" ${PKG_KERNEL_CFG_FILE}; then - rm -fr ${FW_TARGET_DIR}/brcm/brcmfmac43430*-sdio.* - rm -fr ${FW_TARGET_DIR}/brcm/brcmfmac43455*-sdio.* - fi - # brcm pcie firmware is only needed by x86_64 [ "${TARGET_ARCH}" != "x86_64" ] && rm -fr ${FW_TARGET_DIR}/brcm/*-pcie.* diff --git a/packages/kernel/linux/package.mk b/packages/kernel/linux/package.mk index a8081a1d79..edb340d9e5 100644 --- a/packages/kernel/linux/package.mk +++ b/packages/kernel/linux/package.mk @@ -285,32 +285,6 @@ makeinstall_target() { cp arch/${TARGET_KERNEL_ARCH}/boot/*dtb.img ${INSTALL}/usr/share/bootloader/ 2>/dev/null || : [ "${DEVICE}" = "Amlogic-ng" ] && cp arch/${TARGET_KERNEL_ARCH}/boot/dts/amlogic/*.dtb ${INSTALL}/usr/share/bootloader/device_trees 2>/dev/null || : fi - elif [ "${BOOTLOADER}" = "bcm2835-bootloader" ]; then - # RPi firmware will decompress gzipped kernels prior to booting - if [ "${TARGET_KERNEL_ARCH}" = "arm64" ]; then - pigz --best --force ${INSTALL}/.image/${KERNEL_TARGET} - mv ${INSTALL}/.image/${KERNEL_TARGET}.gz ${INSTALL}/.image/${KERNEL_TARGET} - fi - - mkdir -p ${INSTALL}/usr/share/bootloader/overlays - - # install platform dtbs, but remove upstream kernel dtbs (i.e. without downstream - # drivers and decent USB support) as these are not required by LibreELEC - for dtb in arch/${TARGET_KERNEL_ARCH}/boot/dts/*.dtb arch/${TARGET_KERNEL_ARCH}/boot/dts/*/*.dtb; do - if [ -f ${dtb} ]; then - cp -v ${dtb} ${INSTALL}/usr/share/bootloader - fi - done - rm -f ${INSTALL}/usr/share/bootloader/bcm283*.dtb - # duplicated in overlays below - safe_remove ${INSTALL}/usr/share/bootloader/overlay_map.dtb - - # install overlay dtbs - for dtb in arch/arm/boot/dts/overlays/*.dtb \ - arch/arm/boot/dts/overlays/*.dtbo; do - cp ${dtb} ${INSTALL}/usr/share/bootloader/overlays 2>/dev/null || : - done - cp -p arch/${TARGET_KERNEL_ARCH}/boot/dts/overlays/README ${INSTALL}/usr/share/bootloader/overlays fi makeinstall_host } diff --git a/packages/multimedia/ffmpeg/package.mk b/packages/multimedia/ffmpeg/package.mk index 218df9a777..60e8a169b8 100644 --- a/packages/multimedia/ffmpeg/package.mk +++ b/packages/multimedia/ffmpeg/package.mk @@ -133,9 +133,6 @@ pre_configure_target() { if [ "${FFMPEG_TESTING}" = "yes" ]; then PKG_FFMPEG_TESTING="--enable-encoder=wrapped_avframe --enable-muxer=null" - if [ "${PROJECT}" = "RPi" ]; then - PKG_FFMPEG_TESTING+=" --enable-vout-drm --enable-outdev=vout_drm" - fi else PKG_FFMPEG_TESTING="--disable-programs" fi @@ -191,7 +188,6 @@ configure_target() { ${PKG_FFMPEG_V4L2} \ ${PKG_FFMPEG_VAAPI} \ ${PKG_FFMPEG_VDPAU} \ - ${PKG_FFMPEG_RPI} \ --enable-runtime-cpudetect \ --disable-hardcoded-tables \ --disable-encoders \ diff --git a/packages/multimedia/ffmpeg/patches/rpi/ffmpeg-001-rpi.patch b/packages/multimedia/ffmpeg/patches/rpi/ffmpeg-001-rpi.patch deleted file mode 100644 index 66c5b00ce2..0000000000 --- a/packages/multimedia/ffmpeg/patches/rpi/ffmpeg-001-rpi.patch +++ /dev/null @@ -1,37792 +0,0 @@ -From 504df93cfe5416b394755e79b7b81ee0119cf09c Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 26 Apr 2021 12:34:50 +0100 -Subject: [PATCH 001/151] Add pi configs and scripts - ---- - pi-util/BUILD.txt | 59 ++++++++ - pi-util/NOTES.txt | 69 +++++++++ - pi-util/TESTMESA.txt | 82 +++++++++++ - pi-util/clean_usr_libs.sh | 26 ++++ - pi-util/conf_arm64_native.sh | 45 ++++++ - pi-util/conf_h265.2016.csv | 195 ++++++++++++++++++++++++++ - pi-util/conf_h265.2016_HEVC_v1.csv | 147 ++++++++++++++++++++ - pi-util/conf_h265.csv | 144 +++++++++++++++++++ - pi-util/conf_native.sh | 108 +++++++++++++++ - pi-util/ffconf.py | 215 +++++++++++++++++++++++++++++ - pi-util/ffperf.py | 128 +++++++++++++++++ - pi-util/genpatch.sh | 35 +++++ - pi-util/make_array.py | 23 +++ - pi-util/mkinst.sh | 5 + - pi-util/patkodi.sh | 9 ++ - pi-util/perfcmp.py | 101 ++++++++++++++ - pi-util/qem.sh | 9 ++ - pi-util/v3dusage.py | 128 +++++++++++++++++ - 18 files changed, 1528 insertions(+) - create mode 100644 pi-util/BUILD.txt - create mode 100644 pi-util/NOTES.txt - create mode 100644 pi-util/TESTMESA.txt - create mode 100755 pi-util/clean_usr_libs.sh - create mode 100644 pi-util/conf_arm64_native.sh - create mode 100644 pi-util/conf_h265.2016.csv - create mode 100644 pi-util/conf_h265.2016_HEVC_v1.csv - create mode 100644 pi-util/conf_h265.csv - create mode 100755 pi-util/conf_native.sh - create mode 100755 pi-util/ffconf.py - create mode 100755 pi-util/ffperf.py - create mode 100755 pi-util/genpatch.sh - create mode 100755 pi-util/make_array.py - create mode 100755 pi-util/mkinst.sh - create mode 100644 pi-util/patkodi.sh - create mode 100755 pi-util/perfcmp.py - create mode 100755 pi-util/qem.sh - create mode 100755 pi-util/v3dusage.py - -diff --git a/pi-util/BUILD.txt b/pi-util/BUILD.txt -new file mode 100644 -index 0000000000..b050971f63 ---- /dev/null -+++ b/pi-util/BUILD.txt -@@ -0,0 +1,59 @@ -+Building Pi FFmpeg -+================== -+ -+Current only building on a Pi is supported. -+This builds ffmpeg the way I've tested it -+ -+Get all dependencies - the current package dependencies are good enough -+ -+$ sudo apt-get build-dep ffmpeg -+ -+Configure using the pi-util/conf_native.sh script -+------------------------------------------------- -+ -+This sets the normal release options and creates an ouutput dir to build into -+The directory name will depend on system and options but will be under out/ -+ -+There are a few choices here -+ --mmal build including the legacy mmal-based decoders and zero-copy code -+ this requires appropriate libraries which currently will exist for -+ armv7 but not arm64 -+ --noshared -+ Build a static image rather than a shared library one. Static is -+ easier for testing as there is no need to worry about library -+ paths being confused and therefore running the wrong code, Shared -+ is what is needed, in most cases, when building for use by other -+ programs. -+ -+So for a static build -+--------------------- -+ -+$ pi-util/conf_native.sh --noshared -+ -+$ make -j8 -C out/ -+ -+You can now run ffmpeg directly from where it was built -+ -+For a shared build -+------------------ -+ -+$ pi-util/conf_native.sh -+ -+You will normally want an install target if shared. Note that the script has -+set this up to be generated in out//install, you don't have to worry -+about overwriting your system libs. -+ -+$ make -j8 -C out/ install -+ -+You can now set LD_LIBRARY_PATH appropriately and run ffmpeg from where it was -+built or install the image on the system - you have to be careful to get rid -+of all other ffmpeg libs or confusion may result. There is a little script -+that wipes all other versions - obviously use with care! -+ -+$ sudo pi-util/clean_usr_libs.sh -+ -+Then simply copying from the install to /usr works -+ -+$ sudo cp -r out//install/* /usr -+ -+ -diff --git a/pi-util/NOTES.txt b/pi-util/NOTES.txt -new file mode 100644 -index 0000000000..fcce72226a ---- /dev/null -+++ b/pi-util/NOTES.txt -@@ -0,0 +1,69 @@ -+Notes on the hevc_rpi decoder & associated support code -+------------------------------------------------------- -+ -+There are 3 main parts to the existing code: -+ -+1) The decoder - this is all in libavcodec as rpi_hevc*. -+ -+2) A few filters to deal with Sand frames and a small patch to -+automatically select the sand->i420 converter when required. -+ -+3) A kludge in ffmpeg.c to display the decoded video. This could & should -+be converted into a proper ffmpeg display module. -+ -+ -+Decoder -+------- -+ -+The decoder is a modified version of the existing ffmpeg hevc decoder. -+Generally it is ~100% faster than the existing ffmpeg hevc s/w decoder. -+More complex bitstreams can be up to ~200% faster but particularly easy -+streams can cut its advantage down to ~50%. This means that a Pi3+ can -+display nearly all 8-bit 1080p30 streams and with some overclocking it can -+display most lower bitrate 10-bit 1080p30 streams - this latter case is -+not helped by the requirement to downsample to 8-bit before display on a -+Pi. -+ -+It has had co-processor offload added for inter-pred and large block -+residual transform. Various parts have had optimized ARM NEON assembler -+added and the existing ARM asm sections have been profiled and -+re-optimized for A53. The main C code has been substantially reworked at -+its lower levels in an attempt to optimize it and minimize memory -+bandwidth. To some extent code paths that deal with frame types that it -+doesn't support have been pruned. -+ -+It outputs frames in Broadcom Sand format. This is a somewhat annoying -+layout that doesn't fit into ffmpegs standard frame descriptions. It has -+vertical stripes of 128 horizontal pixels (64 in 10 bit forms) with Y for -+the stripe followed by interleaved U & V, that is then followed by the Y -+for the next stripe, etc. The final stripe is always padded to -+stripe-width. This is used in an attempt to help with cache locality and -+cut down on the number of dram bank switches. It is annoying to use for -+inter-pred with conventional processing but the way the Pi QPU (which is -+used for inter-pred) works means that it has negligible downsides here and -+the improved memory performance exceeds the overhead of the increased -+complexity in the rest of the code. -+ -+Frames must be allocated out of GPU memory (as otherwise they can't be -+accessed by the co-processors). Utility functions (in rpi_zc.c) have been -+written to make this easier. As the frames are already in GPU memory they -+can be displayed by the Pi h/w without any further copying. -+ -+ -+Known non-features -+------------------ -+ -+Frame allocation should probably be done in some other way in order to fit -+into the standard framework better. -+ -+Sand frames are currently declared as software frames, there is an -+argument that they should be hardware frames but they aren't really. -+ -+There must be a better way of auto-selecting the hevc_rpi decoder over the -+normal s/w hevc decoder, but I became confused by the existing h/w -+acceleration framework and what I wanted to do didn't seem to fit in -+neatly. -+ -+Display should be a proper device rather than a kludge in ffmpeg.c -+ -+ -diff --git a/pi-util/TESTMESA.txt b/pi-util/TESTMESA.txt -new file mode 100644 -index 0000000000..92bc13a3df ---- /dev/null -+++ b/pi-util/TESTMESA.txt -@@ -0,0 +1,82 @@ -+# Setup & Build instructions for testing Argon30 mesa support (on Pi4) -+ -+# These assume that the drm_mmal test for Sand8 has been built on this Pi -+# as build relies on many of the same files -+ -+# 1st get everything required to build ffmpeg -+# If sources aren't already enabled on your Pi then enable them -+sudo su -+sed "s/#deb-src/deb-src/" /etc/apt/sources.list > /tmp/sources.list -+sed "s/#deb-src/deb-src/" /etc/apt/sources.list.d/raspi.list > /tmp/raspi.list -+mv /tmp/sources.list /etc/apt/ -+mv /tmp/raspi.list /etc/apt/sources.list.d/ -+apt update -+ -+# Get dependancies -+sudo apt build-dep ffmpeg -+ -+sudo apt install meson libepoxy-dev libxcb-dri3-dev libxcb1-dev libx11-dev libx11-xcb-dev libdrm-dev -+ -+# Enable H265 V4L2 request decoder -+sudo su -+echo dtoverlay=rpivid-v4l2 >> /boot/config.txt -+# You may also want to add more CMA if you are going to try 4k videos -+# Change the dtoverlay=vc4-fkms-v3d line in config.txt to read -+# dtoverlay=vc4-fkms-v3d,cma-512 -+reboot -+# Check it has turned up -+ls -la /dev/video* -+# This should include video19 -+# crw-rw----+ 1 root video 81, 7 Aug 4 17:25 /dev/video19 -+ -+# Currently on the Pi the linux headers from the debian distro don't match -+# the kernel that we ship and we need to update them - hopefully this step -+# will be unneeded in the future -+sudo apt install git bc bison flex libssl-dev make -+git clone --depth=1 https://github.com/raspberrypi/linux --branch rpi-5.10.y -+cd linux -+KERNEL=kernel7l -+make bcm2711_defconfig -+make headers_install -+sudo cp -r usr/include/linux /usr/include -+cd .. -+ -+# Config - this builds a staticly linked ffmpeg which is easier for testing -+pi-util/conf_native.sh --noshared -+ -+# Build (this is a bit dull) -+# If you want to poke the source the libavdevice/egl_vout.c contains the -+# output code - -+cd out/armv7-static-rel -+ -+# Check that you have actually configured V4L2 request -+grep HEVC_V4L2REQUEST config.h -+# You are hoping for -+# #define CONFIG_HEVC_V4L2REQUEST_HWACCEL 1 -+# if you get 0 then the config has failed -+ -+make -j6 -+ -+# Grab test streams -+wget http://www.jell.yfish.us/media/jellyfish-3-mbps-hd-h264.mkv -+wget http://www.jell.yfish.us/media/jellyfish-3-mbps-hd-hevc.mkv -+wget http://www.jell.yfish.us/media/jellyfish-3-mbps-hd-hevc-10bit.mkv -+ -+# Test i420 output (works currently) -+./ffmpeg -no_cvt_hw -vcodec h264_v4l2m2m -i jellyfish-3-mbps-hd-h264.mkv -f vout_egl - -+ -+# Test Sand8 output - doesn't currently work but should once you have -+# Sand8 working in drm_mmal. I can't guarantee that this will work as -+# I can't test this path with a known working format, but the debug looks -+# good. If this doesn't work & drm_mmal does with sand8 then come back to me -+# The "show_all 1" forces vout to display every frame otherwise it drops any -+# frame that would cause it to block -+./ffmpeg -no_cvt_hw -hwaccel drm -vcodec hevc -i jellyfish-3-mbps-hd-hevc.mkv -show_all 1 -f vout_egl - -+ -+# Test Sand30 - doesn't currently work -+# (Beware that when FFmpeg errors out it often leaves your teminal window -+# in a state where you need to reset it) -+./ffmpeg -no_cvt_hw -hwaccel drm -vcodec hevc -i jellyfish-3-mbps-hd-hevc-10bit.mkv -f vout_egl - -+ -+ -+ -diff --git a/pi-util/clean_usr_libs.sh b/pi-util/clean_usr_libs.sh -new file mode 100755 -index 0000000000..b3b2d5509d ---- /dev/null -+++ b/pi-util/clean_usr_libs.sh -@@ -0,0 +1,26 @@ -+set -e -+U=/usr/lib/arm-jelos-linux-gnueabihf -+rm -f $U/libavcodec.* -+rm -f $U/libavdevice.* -+rm -f $U/libavfilter.* -+rm -f $U/libavformat.* -+rm -f $U/libavutil.* -+rm -f $U/libswresample.* -+rm -f $U/libswscale.* -+U=/usr/lib/arm-jelos-linux-gnueabihf/neon/vfp -+rm -f $U/libavcodec.* -+rm -f $U/libavdevice.* -+rm -f $U/libavfilter.* -+rm -f $U/libavformat.* -+rm -f $U/libavutil.* -+rm -f $U/libswresample.* -+rm -f $U/libswscale.* -+U=/usr/lib/aarch64-jelos-linux-gnu -+rm -f $U/libavcodec.* -+rm -f $U/libavdevice.* -+rm -f $U/libavfilter.* -+rm -f $U/libavformat.* -+rm -f $U/libavutil.* -+rm -f $U/libswresample.* -+rm -f $U/libswscale.* -+ -diff --git a/pi-util/conf_arm64_native.sh b/pi-util/conf_arm64_native.sh -new file mode 100644 -index 0000000000..9e3bbfa190 ---- /dev/null -+++ b/pi-util/conf_arm64_native.sh -@@ -0,0 +1,45 @@ -+echo "Configure for ARM64 native build" -+ -+#RPI_KEEPS="-save-temps=obj" -+ -+SHARED_LIBS="--enable-shared" -+if [ "$1" == "--noshared" ]; then -+ SHARED_LIBS="--disable-shared" -+ echo Static libs -+ OUT=out/arm64-static-rel -+else -+ echo Shared libs -+ OUT=out/arm64-shared-rel -+fi -+ -+mkdir -p $OUT -+cd $OUT -+ -+A=aarch64-jelos-linux-gnu -+USR_PREFIX=`pwd`/install -+LIB_PREFIX=$USR_PREFIX/lib/$A -+INC_PREFIX=$USR_PREFIX/include/$A -+ -+../../configure \ -+ --prefix=$USR_PREFIX\ -+ --libdir=$LIB_PREFIX\ -+ --incdir=$INC_PREFIX\ -+ --disable-stripping\ -+ --disable-thumb\ -+ --disable-mmal\ -+ --enable-sand\ -+ --enable-v4l2-request\ -+ --enable-libdrm\ -+ --enable-epoxy\ -+ --enable-libudev\ -+ --enable-vout-drm\ -+ --enable-vout-egl\ -+ $SHARED_LIBS\ -+ --extra-cflags="-ggdb" -+ -+# --enable-decoder=hevc_rpi\ -+# --enable-extra-warnings\ -+# --arch=armv71\ -+ -+# gcc option for getting asm listing -+# -Wa,-ahls -diff --git a/pi-util/conf_h265.2016.csv b/pi-util/conf_h265.2016.csv -new file mode 100644 -index 0000000000..4efd5d1c67 ---- /dev/null -+++ b/pi-util/conf_h265.2016.csv -@@ -0,0 +1,195 @@ -+1,HEVC_v1/AMP_A_Samsung_7,AMP_A_Samsung_7.bin,AMP_A_Samsung_7.md5,8 -+1,HEVC_v1/AMP_B_Samsung_7,AMP_B_Samsung_7.bin,AMP_B_Samsung_7.md5,8 -+1,HEVC_v1/AMP_D_Hisilicon_3,AMP_D_Hisilicon.bit,AMP_D_Hisilicon_3.yuv.md5,8 -+1,HEVC_v1/AMP_E_Hisilicon_3,AMP_E_Hisilicon.bit,AMP_E_Hisilicon_3.yuv.md5,8 -+1,HEVC_v1/AMP_F_Hisilicon_3,AMP_F_Hisilicon_3.bit,AMP_F_Hisilicon_3.yuv.md5,8 -+1,HEVC_v1/AMVP_A_MTK_4,AMVP_A_MTK_4.bit,AMVP_A_MTK_4.md5,8 -+1,HEVC_v1/AMVP_B_MTK_4,AMVP_B_MTK_4.bit,AMVP_B_MTK_4.md5,8 -+1,HEVC_v1/AMVP_C_Samsung_7,AMVP_C_Samsung_7.bin,AMVP_C_Samsung_7.md5,8 -+1,HEVC_v1/BUMPING_A_ericsson_1,BUMPING_A_ericsson_1.bit,BUMPING_A_ericsson_1.md5,8 -+1,HEVC_v1/CAINIT_A_SHARP_4,CAINIT_A_SHARP_4.bit,CAINIT_A_SHARP_4.md5,8 -+1,HEVC_v1/CAINIT_B_SHARP_4,CAINIT_B_SHARP_4.bit,CAINIT_B_SHARP_4.md5,8 -+1,HEVC_v1/CAINIT_C_SHARP_3,CAINIT_C_SHARP_3.bit,CAINIT_C_SHARP_3.md5,8 -+1,HEVC_v1/CAINIT_D_SHARP_3,CAINIT_D_SHARP_3.bit,CAINIT_D_SHARP_3.md5,8 -+1,HEVC_v1/CAINIT_E_SHARP_3,CAINIT_E_SHARP_3.bit,CAINIT_E_SHARP_3.md5,8 -+1,HEVC_v1/CAINIT_F_SHARP_3,CAINIT_F_SHARP_3.bit,CAINIT_F_SHARP_3.md5,8 -+1,HEVC_v1/CAINIT_G_SHARP_3,CAINIT_G_SHARP_3.bit,CAINIT_G_SHARP_3.md5,8 -+1,HEVC_v1/CAINIT_H_SHARP_3,CAINIT_H_SHARP_3.bit,CAINIT_H_SHARP_3.md5,8 -+1,HEVC_v1/CIP_A_Panasonic_3,CIP_A_Panasonic_3.bit,CIP_A_Panasonic_3_yuv.md5,8 -+1,HEVC_v1/cip_B_NEC_3,cip_B_NEC_3.bit,cip_B_NEC_3.md5,8 -+1,HEVC_v1/CIP_C_Panasonic_2,CIP_C_Panasonic_2.bit,CIP_C_Panasonic_2_yuv.md5,8 -+1,HEVC_v1/CONFWIN_A_Sony_1,CONFWIN_A_Sony_1.bit,CONFWIN_A_Sony_1.md5,8 -+1,HEVC_v1/DBLK_A_MAIN10_VIXS_4,DBLK_A_MAIN10_VIXS_4.bit,DBLK_A_MAIN10_VIXS_4.md5,10 -+1,HEVC_v1/DBLK_A_SONY_3,DBLK_A_SONY_3.bit,DBLK_A_SONY_3.bit.yuv.md5,8 -+1,HEVC_v1/DBLK_B_SONY_3,DBLK_B_SONY_3.bit,DBLK_B_SONY_3.bit.yuv.md5,8 -+1,HEVC_v1/DBLK_C_SONY_3,DBLK_C_SONY_3.bit,DBLK_C_SONY_3.bit.yuv.md5,8 -+1,HEVC_v1/DBLK_D_VIXS_2,DBLK_D_VIXS_2.bit,DBLK_D_VIXS_2_yuv.md5,8 -+1,HEVC_v1/DBLK_E_VIXS_2,DBLK_E_VIXS_2.bit,DBLK_E_VIXS_2_yuv.md5,8 -+1,HEVC_v1/DBLK_F_VIXS_2,DBLK_F_VIXS_2.bit,DBLK_F_VIXS_2_yuv.md5,8 -+1,HEVC_v1/DBLK_G_VIXS_2,DBLK_G_VIXS_2.bit,DBLK_G_VIXS_2_yuv.md5,8 -+1,HEVC_v1/DELTAQP_A_BRCM_4,DELTAQP_A_BRCM_4.bit,DELTAQP_A_BRCM_4_yuv.md5,8 -+1,HEVC_v1/DELTAQP_B_SONY_3,DELTAQP_B_SONY_3.bit,DELTAQP_B_SONY_3.bit.yuv.md5,8 -+1,HEVC_v1/DELTAQP_C_SONY_3,DELTAQP_C_SONY_3.bit,DELTAQP_C_SONY_3.bit.yuv.md5,8 -+1,HEVC_v1/DSLICE_A_HHI_5,DSLICE_A_HHI_5.bin,DSLICE_A_HHI_5.md5,8 -+1,HEVC_v1/DSLICE_B_HHI_5,DSLICE_B_HHI_5.bin,DSLICE_B_HHI_5.md5,8 -+1,HEVC_v1/DSLICE_C_HHI_5,DSLICE_C_HHI_5.bin,DSLICE_C_HHI_5.md5,8 -+1,HEVC_v1/ENTP_A_QUALCOMM_1,ENTP_A_Qualcomm_1.bit,ENTP_A_Qualcomm_1.md5,8 -+1,HEVC_v1/ENTP_B_Qualcomm_1,ENTP_B_Qualcomm_1.bit,ENTP_B_Qualcomm_1.md5,8 -+1,HEVC_v1/ENTP_C_Qualcomm_1,ENTP_C_Qualcomm_1.bit,ENTP_C_Qualcomm_1.md5,8 -+1,HEVC_v1/EXT_A_ericsson_4,EXT_A_ericsson_4.bit,EXT_A_ericsson_4.md5,8 -+1,HEVC_v1/FILLER_A_Sony_1,FILLER_A_Sony_1.bit,FILLER_A_Sony_1.md5,8 -+1,HEVC_v1/HRD_A_Fujitsu_3,HRD_A_Fujitsu_3.bin,HRD_A_Fujitsu_3.md5,8 -+1,HEVC_v1/INITQP_A_Sony_1,INITQP_A_Sony_1.bit,INITQP_A_Sony_1.md5,8 -+1,HEVC_v1/INITQP_B_Main10_Sony_1,INITQP_B_Main10_Sony_1.bit,INITQP_B_Main10_Sony_1.md5,10 -+1,HEVC_v1/ipcm_A_NEC_3,ipcm_A_NEC_3.bit,ipcm_A_NEC_3.md5,8 -+1,HEVC_v1/ipcm_B_NEC_3,ipcm_B_NEC_3.bit,ipcm_B_NEC_3.md5,8 -+1,HEVC_v1/ipcm_C_NEC_3,ipcm_C_NEC_3.bit,ipcm_C_NEC_3.md5,8 -+1,HEVC_v1/ipcm_D_NEC_3,ipcm_D_NEC_3.bit,ipcm_D_NEC_3.md5,8 -+1,HEVC_v1/ipcm_E_NEC_2,ipcm_E_NEC_2.bit,ipcm_E_NEC_2.md5,8 -+1,HEVC_v1/IPRED_A_docomo_2,IPRED_A_docomo_2.bit,IPRED_A_docomo_2.md5,8 -+1,HEVC_v1/IPRED_B_Nokia_3,IPRED_B_Nokia_3.bit,IPRED_B_Nokia_3_yuv.md5,8 -+1,HEVC_v1/IPRED_C_Mitsubishi_3,IPRED_C_Mitsubishi_3.bit,IPRED_C_Mitsubishi_3_yuv.md5,8 -+1,HEVC_v1/LS_A_Orange_2,LS_A_Orange_2.bit,LS_A_Orange_2_yuv.md5,8 -+1,HEVC_v1/LS_B_Orange_4,LS_B_Orange_4.bit,LS_B_Orange_4_yuv.md5,8 -+1,HEVC_v1/LTRPSPS_A_Qualcomm_1,LTRPSPS_A_Qualcomm_1.bit,LTRPSPS_A_Qualcomm_1.md5,8 -+1,HEVC_v1/MAXBINS_A_TI_5,MAXBINS_A_TI_5.bit,MAXBINS_A_TI_5_yuv.md5,8 -+1,HEVC_v1/MAXBINS_B_TI_5,MAXBINS_B_TI_5.bit,MAXBINS_B_TI_5_yuv.md5,8 -+1,HEVC_v1/MAXBINS_C_TI_5,MAXBINS_C_TI_5.bit,MAXBINS_C_TI_5_yuv.md5,8 -+1,HEVC_v1/MERGE_A_TI_3,MERGE_A_TI_3.bit,MERGE_A_TI_3.md5,8 -+1,HEVC_v1/MERGE_B_TI_3,MERGE_B_TI_3.bit,MERGE_B_TI_3.md5,8 -+1,HEVC_v1/MERGE_C_TI_3,MERGE_C_TI_3.bit,MERGE_C_TI_3.md5,8 -+1,HEVC_v1/MERGE_D_TI_3,MERGE_D_TI_3.bit,MERGE_D_TI_3.md5,8 -+1,HEVC_v1/MERGE_E_TI_3,MERGE_E_TI_3.bit,MERGE_E_TI_3.md5,8 -+1,HEVC_v1/MERGE_F_MTK_4,MERGE_F_MTK_4.bit,MERGE_F_MTK_4.md5,8 -+1,HEVC_v1/MERGE_G_HHI_4,MERGE_G_HHI_4.bit,MERGE_G_HHI_4.md5,8 -+1,HEVC_v1/MVCLIP_A_qualcomm_3,MVCLIP_A_qualcomm_3.bit,MVCLIP_A_qualcomm_3.yuv.md5,8 -+1,HEVC_v1/MVDL1ZERO_A_docomo_4,MVDL1ZERO_A_docomo_4.bit,MVDL1ZERO_A_docomo_4.md5,8 -+1,HEVC_v1/MVEDGE_A_qualcomm_3,MVEDGE_A_qualcomm_3.bit,MVEDGE_A_qualcomm_3.yuv.md5,8 -+1,HEVC_v1/NoOutPrior_A_Qualcomm_1,NoOutPrior_A_Qualcomm_1.bit,NoOutPrior_A_Qualcomm_1.md5,8 -+1,HEVC_v1/NoOutPrior_B_Qualcomm_1,NoOutPrior_B_Qualcomm_1.bit,NoOutPrior_B_Qualcomm_1.md5,8 -+1,HEVC_v1/NUT_A_ericsson_5,NUT_A_ericsson_5.bit,NUT_A_ericsson_5.md5,8 -+1,HEVC_v1/OPFLAG_A_Qualcomm_1,OPFLAG_A_Qualcomm_1.bit,OPFLAG_A_Qualcomm_1.md5,8 -+1,HEVC_v1/OPFLAG_B_Qualcomm_1,OPFLAG_B_Qualcomm_1.bit,OPFLAG_B_Qualcomm_1.md5,8 -+1,HEVC_v1/OPFLAG_C_Qualcomm_1,OPFLAG_C_Qualcomm_1.bit,OPFLAG_C_Qualcomm_1.md5,8 -+1,HEVC_v1/PICSIZE_A_Bossen_1,PICSIZE_A_Bossen_1.bin,PICSIZE_A_Bossen_1.md5,8 -+1,HEVC_v1/PICSIZE_B_Bossen_1,PICSIZE_B_Bossen_1.bin,PICSIZE_B_Bossen_1.md5,8 -+1,HEVC_v1/PICSIZE_C_Bossen_1,PICSIZE_C_Bossen_1.bin,PICSIZE_C_Bossen_1.md5,8 -+1,HEVC_v1/PICSIZE_D_Bossen_1,PICSIZE_D_Bossen_1.bin,PICSIZE_D_Bossen_1.md5,8 -+1,HEVC_v1/PMERGE_A_TI_3,PMERGE_A_TI_3.bit,PMERGE_A_TI_3.md5,8 -+1,HEVC_v1/PMERGE_B_TI_3,PMERGE_B_TI_3.bit,PMERGE_B_TI_3.md5,8 -+1,HEVC_v1/PMERGE_C_TI_3,PMERGE_C_TI_3.bit,PMERGE_C_TI_3.md5,8 -+1,HEVC_v1/PMERGE_D_TI_3,PMERGE_D_TI_3.bit,PMERGE_D_TI_3.md5,8 -+1,HEVC_v1/PMERGE_E_TI_3,PMERGE_E_TI_3.bit,PMERGE_E_TI_3.md5,8 -+1,HEVC_v1/POC_A_Bossen_3,POC_A_Bossen_3.bin,POC_A_Bossen_3.md5,8 -+1,HEVC_v1/PPS_A_qualcomm_7,PPS_A_qualcomm_7.bit,PPS_A_qualcomm_7.yuv.md5,8 -+1,HEVC_v1/PS_B_VIDYO_3,PS_B_VIDYO_3.bit,PS_B_VIDYO_3_yuv.md5,8 -+1,HEVC_v1/RAP_A_docomo_6,RAP_A_docomo_6.bit,RAP_A_docomo_6.md5,8 -+1,HEVC_v1/RAP_B_Bossen_2,RAP_B_Bossen_2.bit,RAP_B_Bossen_2.md5,8 -+1,HEVC_v1/RPLM_A_qualcomm_4,RPLM_A_qualcomm_4.bit,RPLM_A_qualcomm_4.yuv.md5,8 -+1,HEVC_v1/RPLM_B_qualcomm_4,RPLM_B_qualcomm_4.bit,RPLM_B_qualcomm_4.yuv.md5,8 -+1,HEVC_v1/RPS_A_docomo_5,RPS_A_docomo_5.bit,RPS_A_docomo_5.md5,8 -+1,HEVC_v1/RPS_B_qualcomm_5,RPS_B_qualcomm_5.bit,RPS_B_qualcomm_5.yuv.md5,8 -+1,HEVC_v1/RPS_C_ericsson_5,RPS_C_ericsson_5.bit,RPS_C_ericsson_5.md5,8 -+1,HEVC_v1/RPS_D_ericsson_6,RPS_D_ericsson_6.bit,RPS_D_ericsson_6.md5,8 -+1,HEVC_v1/RPS_E_qualcomm_5,RPS_E_qualcomm_5.bit,RPS_E_qualcomm_5.yuv.md5,8 -+1,HEVC_v1/RPS_F_docomo_2,RPS_F_docomo_2.bit,RPS_F_docomo_2.md5,8 -+1,HEVC_v1/RQT_A_HHI_4,RQT_A_HHI_4.bit,RQT_A_HHI_4.md5,8 -+1,HEVC_v1/RQT_B_HHI_4,RQT_B_HHI_4.bit,RQT_B_HHI_4.md5,8 -+1,HEVC_v1/RQT_C_HHI_4,RQT_C_HHI_4.bit,RQT_C_HHI_4.md5,8 -+1,HEVC_v1/RQT_D_HHI_4,RQT_D_HHI_4.bit,RQT_D_HHI_4.md5,8 -+1,HEVC_v1/RQT_E_HHI_4,RQT_E_HHI_4.bit,RQT_E_HHI_4.md5,8 -+1,HEVC_v1/RQT_F_HHI_4,RQT_F_HHI_4.bit,RQT_F_HHI_4.md5,8 -+1,HEVC_v1/RQT_G_HHI_4,RQT_G_HHI_4.bit,RQT_G_HHI_4.md5,8 -+1,HEVC_v1/SAO_A_MediaTek_4,SAO_A_MediaTek_4.bit,SAO_A_MediaTek_4.md5,8 -+1,HEVC_v1/SAO_B_MediaTek_5,SAO_B_MediaTek_5.bit,SAO_B_MediaTek_5.md5,8 -+1,HEVC_v1/SAO_C_Samsung_5,SAO_C_Samsung_5.bin,SAO_C_Samsung_5.md5,8 -+1,HEVC_v1/SAO_D_Samsung_5,SAO_D_Samsung_5.bin,SAO_D_Samsung_5.md5,8 -+1,HEVC_v1/SAO_E_Canon_4,SAO_E_Canon_4.bit,SAO_E_Canon_4.md5,8 -+1,HEVC_v1/SAO_F_Canon_3,SAO_F_Canon_3.bit,SAO_F_Canon_3.md5,8 -+1,HEVC_v1/SAO_G_Canon_3,SAO_G_Canon_3.bit,SAO_G_Canon_3.md5,8 -+1,HEVC_v1/SAO_H_Parabola_1,SAO_H_Parabola_1.bit,SAO_H_Parabola_1.md5,8 -+1,HEVC_v1/SAODBLK_A_MainConcept_4,SAODBLK_A_MainConcept_4.bin,SAODBLK_A_MainConcept_4_md5.txt,8 -+1,HEVC_v1/SAODBLK_B_MainConcept_4,SAODBLK_B_MainConcept_4.bin,SAODBLK_B_MainConcept_4_md5.txt,8 -+1,HEVC_v1/SDH_A_Orange_4,SDH_A_Orange_4.bit,SDH_A_Orange_4_yuv.md5,8 -+1,HEVC_v1/SLICES_A_Rovi_3,SLICES_A_Rovi_3.bin,SLICES_A_Rovi_3.md5,8 -+1,HEVC_v1/SLIST_A_Sony_5,SLIST_A_Sony_5.bin,SLIST_A_Sony_5_yuv.md5,8 -+1,HEVC_v1/SLIST_B_Sony_9,SLIST_B_Sony_9.bin,SLIST_B_Sony_9_yuv.md5,8 -+1,HEVC_v1/SLIST_C_Sony_4,SLIST_C_Sony_4.bin,SLIST_C_Sony_4_yuv.md5,8 -+1,HEVC_v1/SLIST_D_Sony_9,str.bin,SLIST_D_Sony_9_yuv.md5,8 -+1,HEVC_v1/SLPPLP_A_VIDYO_2,SLPPLP_A_VIDYO_2.bit,SLPPLP_A_VIDYO_2_yuv.md5,8 -+1,HEVC_v1/STRUCT_A_Samsung_7,STRUCT_A_Samsung_7.bin,STRUCT_A_Samsung_7.md5,8 -+1,HEVC_v1/STRUCT_B_Samsung_7,STRUCT_B_Samsung_7.bin,STRUCT_B_Samsung_7.md5,8 -+1,HEVC_v1/TILES_A_Cisco_2,TILES_A_Cisco_2.bin,TILES_A_Cisco_2_yuv.md5,8 -+1,HEVC_v1/TILES_B_Cisco_1,TILES_B_Cisco_1.bin,TILES_B_Cisco_1_yuv.md5,8 -+1,HEVC_v1/TMVP_A_MS_3,TMVP_A_MS_3.bit,TMVP_A_MS_3.yuv.md5,8 -+1,HEVC_v1/TSCL_A_VIDYO_5,TSCL_A_VIDYO_5.bit,TSCL_A_VIDYO_5_yuv.md5,8 -+1,HEVC_v1/TSCL_B_VIDYO_4,TSCL_B_VIDYO_4.bit,TSCL_B_VIDYO_4_yuv.md5,8 -+1,HEVC_v1/TSKIP_A_MS_3,TSKIP_A_MS_3.bit,TSKIP_A_MS_3.yuv.md5,8 -+3,HEVC_v1/TSUNEQBD_A_MAIN10_Technicolor_2,TSUNEQBD_A_MAIN10_Technicolor_2.bit,TSUNEQBD_A_MAIN10_Technicolor_2_yuv.md5, # unequal bit depth,10 -+1,HEVC_v1/TUSIZE_A_Samsung_1,TUSIZE_A_Samsung_1.bin,TUSIZE_A_Samsung_1.md5,8 -+1,HEVC_v1/VPSID_A_VIDYO_2,VPSID_A_VIDYO_2.bit,VPSID_A_VIDYO_2_yuv.md5,8 -+3,HEVC_v1/VPSSPSPPS_A_MainConcept_1,VPSSPSPPS_A_MainConcept_1.bin,VPSSPSPPS_A_MainConcept_1_md5.txt, # ???,8 -+1,HEVC_v1/WP_A_MAIN10_Toshiba_3,WP_A_MAIN10_Toshiba_3.bit,WP_A_MAIN10_Toshiba_3_yuv.md5,10 -+1,HEVC_v1/WP_A_Toshiba_3,WP_A_Toshiba_3.bit,WP_A_Toshiba_3_yuv.md5,8 -+1,HEVC_v1/WP_B_Toshiba_3,WP_B_Toshiba_3.bit,WP_B_Toshiba_3_yuv.md5,8 -+1,HEVC_v1/WP_MAIN10_B_Toshiba_3,WP_MAIN10_B_Toshiba_3.bit,WP_MAIN10_B_Toshiba_3_yuv.md5,10 -+1,HEVC_v1/WPP_A_ericsson_MAIN10_2,WPP_A_ericsson_MAIN10_2.bit,WPP_A_ericsson_MAIN10_yuv.md5,10 -+1,HEVC_v1/WPP_A_ericsson_MAIN_2,WPP_A_ericsson_MAIN_2.bit,WPP_A_ericsson_MAIN_2_yuv.md5,8 -+1,HEVC_v1/WPP_B_ericsson_MAIN10_2,WPP_B_ericsson_MAIN10_2.bit,WPP_B_ericsson_MAIN10_yuv.md5,10 -+1,HEVC_v1/WPP_B_ericsson_MAIN_2,WPP_B_ericsson_MAIN_2.bit,WPP_B_ericsson_MAIN_2_yuv.md5,8 -+1,HEVC_v1/WPP_C_ericsson_MAIN10_2,WPP_C_ericsson_MAIN10_2.bit,WPP_C_ericsson_MAIN10_yuv.md5,10 -+1,HEVC_v1/WPP_C_ericsson_MAIN_2,WPP_C_ericsson_MAIN_2.bit,WPP_C_ericsson_MAIN_2_yuv.md5,8 -+1,HEVC_v1/WPP_D_ericsson_MAIN10_2,WPP_D_ericsson_MAIN10_2.bit,WPP_D_ericsson_MAIN10_yuv.md5,10 -+1,HEVC_v1/WPP_D_ericsson_MAIN_2,WPP_D_ericsson_MAIN_2.bit,WPP_D_ericsson_MAIN_2_yuv.md5,8 -+1,HEVC_v1/WPP_E_ericsson_MAIN10_2,WPP_E_ericsson_MAIN10_2.bit,WPP_E_ericsson_MAIN10_yuv.md5,10 -+1,HEVC_v1/WPP_E_ericsson_MAIN_2,WPP_E_ericsson_MAIN_2.bit,WPP_E_ericsson_MAIN_2_yuv.md5,8 -+1,HEVC_v1/WPP_F_ericsson_MAIN10_2,WPP_F_ericsson_MAIN10_2.bit,WPP_F_ericsson_MAIN10_yuv.md5,10 -+1,HEVC_v1/WPP_F_ericsson_MAIN_2,WPP_F_ericsson_MAIN_2.bit,WPP_F_ericsson_MAIN_2_yuv.md5,8 -+1,RExt/ADJUST_IPRED_ANGLE_A_RExt_Mitsubishi_2,ADJUST_IPRED_ANGLE_A_RExt_Mitsubishi_2.bit,ADJUST_IPRED_ANGLE_A_RExt_Mitsubishi_yuv_2.md5,0 -+0,RExt/Bitdepth_A_RExt_Sony_1,Bitdepth_A_RExt_Sony_1.bin,md5sum.txt,8 -+0,RExt/Bitdepth_B_RExt_Sony_1,Bitdepth_B_RExt_Sony_1.bin,md5sum.txt,8 -+0,RExt/CCP_10bit_RExt_QCOM,CCP_10bit_RExt_QCOM.bin,CCP_10bit_RExt_QCOM_md5sum.txt,10 -+0,RExt/CCP_12bit_RExt_QCOM,CCP_12bit_RExt_QCOM.bin,CCP_12bit_RExt_QCOM_md5sum.txt,8 -+0,RExt/CCP_8bit_RExt_QCOM,CCP_8bit_RExt_QCOM.bin,CCP_8bit_RExt_QCOM_md5sum.txt,8 -+1,RExt/ExplicitRdpcm_A_BBC_1,ExplicitRdpcm_A_BBC_1.bit,md5sum.txt,0 -+0,RExt/ExplicitRdpcm_B_BBC_2,ExplicitRdpcm_B_BBC_1.bit,md5sum.txt,8 -+0,RExt/EXTPREC_HIGHTHROUGHPUT_444_16_INTRA_10BIT_RExt_Sony_1,EXTPREC_HIGHTHROUGHPUT_444_16_INTRA_10BIT_RExt_Sony_1.bit,EXTPREC_HIGHTHROUGHPUT_444_16_INTRA_10BIT_RExt_Sony_1.md5,10 -+0,RExt/EXTPREC_HIGHTHROUGHPUT_444_16_INTRA_12BIT_RExt_Sony_1,EXTPREC_HIGHTHROUGHPUT_444_16_INTRA_12BIT_RExt_Sony_1.bit,EXTPREC_HIGHTHROUGHPUT_444_16_INTRA_12BIT_RExt_Sony_1.md5,8 -+0,RExt/EXTPREC_HIGHTHROUGHPUT_444_16_INTRA_16BIT_RExt_Sony_1,EXTPREC_HIGHTHROUGHPUT_444_16_INTRA_16BIT_RExt_Sony_1.bit,EXTPREC_HIGHTHROUGHPUT_444_16_INTRA_16BIT_RExt_Sony_1.md5,8 -+0,RExt/EXTPREC_HIGHTHROUGHPUT_444_16_INTRA_8BIT_RExt_Sony_1,EXTPREC_HIGHTHROUGHPUT_444_16_INTRA_8BIT_RExt_Sony_1.bit,EXTPREC_HIGHTHROUGHPUT_444_16_INTRA_8BIT_RExt_Sony_1.md5,8 -+0,RExt/EXTPREC_MAIN_444_16_INTRA_10BIT_RExt_Sony_1,EXTPREC_MAIN_444_16_INTRA_10BIT_RExt_Sony_1.bit,EXTPREC_MAIN_444_16_INTRA_10BIT_RExt_Sony_1.md5,10 -+0,RExt/EXTPREC_MAIN_444_16_INTRA_12BIT_RExt_Sony_1,EXTPREC_MAIN_444_16_INTRA_12BIT_RExt_Sony_1.bit,EXTPREC_MAIN_444_16_INTRA_12BIT_RExt_Sony_1.md5,8 -+0,RExt/EXTPREC_MAIN_444_16_INTRA_16BIT_RExt_Sony_1,EXTPREC_MAIN_444_16_INTRA_16BIT_RExt_Sony_1.bit,EXTPREC_MAIN_444_16_INTRA_16BIT_RExt_Sony_1.md5,8 -+0,RExt/EXTPREC_MAIN_444_16_INTRA_8BIT_RExt_Sony_1,EXTPREC_MAIN_444_16_INTRA_8BIT_RExt_Sony_1.bit,EXTPREC_MAIN_444_16_INTRA_8BIT_RExt_Sony_1.md5,8 -+1,RExt/GENERAL_10b_420_RExt_Sony_1,GENERAL_10b_420_RExt_Sony_1.bit,GENERAL_10b_420_RExt_Sony_1.md5,10 -+1,RExt/GENERAL_10b_422_RExt_Sony_1,GENERAL_10b_422_RExt_Sony_1.bit,GENERAL_10b_422_RExt_Sony_1.md5,0 -+1,RExt/GENERAL_10b_444_RExt_Sony_2,GENERAL_10b_444_RExt_Sony_2.bit,GENERAL_10b_444_RExt_Sony_2.md5,0 -+1,RExt/GENERAL_12b_400_RExt_Sony_1,GENERAL_12b_400_RExt_Sony_1.bit,GENERAL_12b_400_RExt_Sony_1.md5,0 -+1,RExt/GENERAL_12b_420_RExt_Sony_1,GENERAL_12b_420_RExt_Sony_1.bit,GENERAL_12b_420_RExt_Sony_1.md5,0 -+1,RExt/GENERAL_12b_422_RExt_Sony_1,GENERAL_12b_422_RExt_Sony_1.bit,GENERAL_12b_422_RExt_Sony_1.md5,0 -+1,RExt/GENERAL_12b_444_RExt_Sony_2,GENERAL_12b_444_RExt_Sony_2.bit,GENERAL_12b_444_RExt_Sony_2.md5,0 -+0,RExt/GENERAL_16b_400_RExt_Sony_1,GENERAL_16b_400_RExt_Sony_1.bit,GENERAL_16b_400_RExt_Sony_1.md5,0 -+0,RExt/GENERAL_16b_444_highThroughput_RExt_Sony_2,GENERAL_16b_444_highThroughput_RExt_Sony_2.bit,GENERAL_16b_444_highThroughput_RExt_Sony_2.md5,8 -+0,RExt/GENERAL_16b_444_RExt_Sony_2,GENERAL_16b_444_RExt_Sony_2.bit,GENERAL_16b_444_RExt_Sony_2.md5,8 -+1,RExt/GENERAL_8b_400_RExt_Sony_1,GENERAL_8b_400_RExt_Sony_1.bit,GENERAL_8b_400_RExt_Sony_1.md5,0 -+1,RExt/GENERAL_8b_420_RExt_Sony_1,GENERAL_8b_420_RExt_Sony_1.bit,GENERAL_8b_420_RExt_Sony_1.md5,8 -+1,RExt/GENERAL_8b_444_RExt_Sony_2,GENERAL_8b_444_RExt_Sony_2.bit,GENERAL_8b_444_RExt_Sony_2.md5,0 -+1,RExt/IPCM_A_RExt_NEC_2,IPCM_A_RExt_NEC_2.bit,IPCM_A_RExt_NEC_2_yuv.md5,0 -+1,RExt/IPCM_B_RExt_NEC,IPCM_B_RExt_NEC.bit,IPCM_B_RExt_NEC_yuv.md5,0 -+1,RExt/Main_422_10_A_RExt_Sony_2,Main_422_10_A_RExt_Sony_2.bin,md5sum.txt,0 -+1,RExt/Main_422_10_B_RExt_Sony_2,Main_422_10_B_RExt_Sony_2.bin,md5sum.txt,0 -+1,RExt/PERSIST_RPARAM_A_RExt_Sony_3,PERSIST_RPARAM_A_RExt_Sony_3.bit,PERSIST_RPARAM_A_RExt_Sony_3.md5,0 -+1,RExt/QMATRIX_A_RExt_Sony_1,QMATRIX_A_RExt_Sony_1.bit,QMATRIX_A_RExt_Sony_1.md5,0 -+0,RExt/SAO_A_RExt_MediaTek_1,SAO_A_RExt_MediaTek_1.bit,SAO_A_RExt_MediaTek_1.md5, # Runs out of memory - could be fixed,8 -+0,RExt/TSCTX_10bit_I_RExt_SHARP_1,TSCTX_10bit_I_RExt_SHARP_1.bin,TSCTX_10bit_I_RExt_SHARP_1.md5,10 -+0,RExt/TSCTX_10bit_RExt_SHARP_1,TSCTX_10bit_RExt_SHARP_1.bin,TSCTX_10bit_RExt_SHARP_1.md5,10 -+0,RExt/TSCTX_12bit_I_RExt_SHARP_1,TSCTX_12bit_I_RExt_SHARP_1.bin,TSCTX_12bit_I_RExt_SHARP_1.md5,8 -+0,RExt/TSCTX_12bit_RExt_SHARP_1,TSCTX_12bit_RExt_SHARP_1.bin,TSCTX_12bit_RExt_SHARP_1.md5,8 -+0,RExt/TSCTX_8bit_I_RExt_SHARP_1,TSCTX_8bit_I_RExt_SHARP_1.bin,TSCTX_8bit_I_RExt_SHARP_1.md5,8 -+0,RExt/TSCTX_8bit_RExt_SHARP_1,TSCTX_8bit_RExt_SHARP_1.bin,TSCTX_8bit_RExt_SHARP_1.md5,8 -+0,RExt/WAVETILES_RExt_Sony_2,WAVETILES_RExt_Sony_2.bit,WAVETILES_RExt_Sony_2.md5,8 -+1,local/sao_cu16_mobile_344x280,sao_cu16_mobile_344x280.265,sao_cu16_mobile_344x280.md5,8 -+1,local/dblk_cu16_mobile_344x280,dblk_cu16_mobile_344x280.265,dblk_cu16_mobile_344x280.md5,8 -+1,local/dblksao_cu16_mobile_344x280,dblksao_cu16_mobile_344x280.265,dblksao_cu16_mobile_344x280.md5,8 -+1,local/dblk_pu32_horses_832x448,dblk_pu32_horses_832x448.265,dblk_pu32_horses_832x448.md5,8 -+1,local/intra_pred_21_laps,intra_pred_21_laps.265,intra_pred_21_laps.md5,8 -diff --git a/pi-util/conf_h265.2016_HEVC_v1.csv b/pi-util/conf_h265.2016_HEVC_v1.csv -new file mode 100644 -index 0000000000..6082641271 ---- /dev/null -+++ b/pi-util/conf_h265.2016_HEVC_v1.csv -@@ -0,0 +1,147 @@ -+1,AMP_A_Samsung_7,AMP_A_Samsung_7.bin,AMP_A_Samsung_7.md5 -+1,AMP_B_Samsung_7,AMP_B_Samsung_7.bin,AMP_B_Samsung_7.md5 -+1,AMP_D_Hisilicon_3,AMP_D_Hisilicon.bit,AMP_D_Hisilicon_3.yuv.md5 -+1,AMP_E_Hisilicon_3,AMP_E_Hisilicon.bit,AMP_E_Hisilicon_3.yuv.md5 -+1,AMP_F_Hisilicon_3,AMP_F_Hisilicon_3.bit,AMP_F_Hisilicon_3.yuv.md5 -+1,AMVP_A_MTK_4,AMVP_A_MTK_4.bit,AMVP_A_MTK_4.md5 -+1,AMVP_B_MTK_4,AMVP_B_MTK_4.bit,AMVP_B_MTK_4.md5 -+1,AMVP_C_Samsung_7,AMVP_C_Samsung_7.bin,AMVP_C_Samsung_7.md5 -+1,BUMPING_A_ericsson_1,BUMPING_A_ericsson_1.bit,BUMPING_A_ericsson_1.md5 -+1,CAINIT_A_SHARP_4,CAINIT_A_SHARP_4.bit,CAINIT_A_SHARP_4.md5 -+1,CAINIT_B_SHARP_4,CAINIT_B_SHARP_4.bit,CAINIT_B_SHARP_4.md5 -+1,CAINIT_C_SHARP_3,CAINIT_C_SHARP_3.bit,CAINIT_C_SHARP_3.md5 -+1,CAINIT_D_SHARP_3,CAINIT_D_SHARP_3.bit,CAINIT_D_SHARP_3.md5 -+1,CAINIT_E_SHARP_3,CAINIT_E_SHARP_3.bit,CAINIT_E_SHARP_3.md5 -+1,CAINIT_F_SHARP_3,CAINIT_F_SHARP_3.bit,CAINIT_F_SHARP_3.md5 -+1,CAINIT_G_SHARP_3,CAINIT_G_SHARP_3.bit,CAINIT_G_SHARP_3.md5 -+1,CAINIT_H_SHARP_3,CAINIT_H_SHARP_3.bit,CAINIT_H_SHARP_3.md5 -+1,CIP_A_Panasonic_3,CIP_A_Panasonic_3.bit,CIP_A_Panasonic_3_yuv.md5 -+1,cip_B_NEC_3,cip_B_NEC_3.bit,cip_B_NEC_3.md5 -+1,CIP_C_Panasonic_2,CIP_C_Panasonic_2.bit,CIP_C_Panasonic_2_yuv.md5 -+1,CONFWIN_A_Sony_1,CONFWIN_A_Sony_1.bit,CONFWIN_A_Sony_1.md5 -+1,DBLK_A_MAIN10_VIXS_4,DBLK_A_MAIN10_VIXS_4.bit,DBLK_A_MAIN10_VIXS_4.md5 -+1,DBLK_A_SONY_3,DBLK_A_SONY_3.bit,DBLK_A_SONY_3.bit.yuv.md5 -+1,DBLK_B_SONY_3,DBLK_B_SONY_3.bit,DBLK_B_SONY_3.bit.yuv.md5 -+1,DBLK_C_SONY_3,DBLK_C_SONY_3.bit,DBLK_C_SONY_3.bit.yuv.md5 -+1,DBLK_D_VIXS_2,DBLK_D_VIXS_2.bit,DBLK_D_VIXS_2_yuv.md5 -+1,DBLK_E_VIXS_2,DBLK_E_VIXS_2.bit,DBLK_E_VIXS_2_yuv.md5 -+1,DBLK_F_VIXS_2,DBLK_F_VIXS_2.bit,DBLK_F_VIXS_2_yuv.md5 -+1,DBLK_G_VIXS_2,DBLK_G_VIXS_2.bit,DBLK_G_VIXS_2_yuv.md5 -+1,DELTAQP_A_BRCM_4,DELTAQP_A_BRCM_4.bit,DELTAQP_A_BRCM_4_yuv.md5 -+1,DELTAQP_B_SONY_3,DELTAQP_B_SONY_3.bit,DELTAQP_B_SONY_3.bit.yuv.md5 -+1,DELTAQP_C_SONY_3,DELTAQP_C_SONY_3.bit,DELTAQP_C_SONY_3.bit.yuv.md5 -+1,DSLICE_A_HHI_5,DSLICE_A_HHI_5.bin,DSLICE_A_HHI_5.md5 -+1,DSLICE_B_HHI_5,DSLICE_B_HHI_5.bin,DSLICE_B_HHI_5.md5 -+1,DSLICE_C_HHI_5,DSLICE_C_HHI_5.bin,DSLICE_C_HHI_5.md5 -+1,ENTP_A_QUALCOMM_1,ENTP_A_Qualcomm_1.bit,ENTP_A_Qualcomm_1.md5 -+1,ENTP_B_Qualcomm_1,ENTP_B_Qualcomm_1.bit,ENTP_B_Qualcomm_1.md5 -+1,ENTP_C_Qualcomm_1,ENTP_C_Qualcomm_1.bit,ENTP_C_Qualcomm_1.md5 -+1,EXT_A_ericsson_4,EXT_A_ericsson_4.bit,EXT_A_ericsson_4.md5 -+1,FILLER_A_Sony_1,FILLER_A_Sony_1.bit,FILLER_A_Sony_1.md5 -+1,HRD_A_Fujitsu_3,HRD_A_Fujitsu_3.bin,HRD_A_Fujitsu_3.md5 -+1,INITQP_A_Sony_1,INITQP_A_Sony_1.bit,INITQP_A_Sony_1.md5 -+1,INITQP_B_Main10_Sony_1,INITQP_B_Main10_Sony_1.bit,INITQP_B_Main10_Sony_1.md5 -+1,ipcm_A_NEC_3,ipcm_A_NEC_3.bit,ipcm_A_NEC_3.md5 -+1,ipcm_B_NEC_3,ipcm_B_NEC_3.bit,ipcm_B_NEC_3.md5 -+1,ipcm_C_NEC_3,ipcm_C_NEC_3.bit,ipcm_C_NEC_3.md5 -+1,ipcm_D_NEC_3,ipcm_D_NEC_3.bit,ipcm_D_NEC_3.md5 -+1,ipcm_E_NEC_2,ipcm_E_NEC_2.bit,ipcm_E_NEC_2.md5 -+1,IPRED_A_docomo_2,IPRED_A_docomo_2.bit,IPRED_A_docomo_2.md5 -+1,IPRED_B_Nokia_3,IPRED_B_Nokia_3.bit,IPRED_B_Nokia_3_yuv.md5 -+1,IPRED_C_Mitsubishi_3,IPRED_C_Mitsubishi_3.bit,IPRED_C_Mitsubishi_3_yuv.md5 -+1,LS_A_Orange_2,LS_A_Orange_2.bit,LS_A_Orange_2_yuv.md5 -+1,LS_B_Orange_4,LS_B_Orange_4.bit,LS_B_Orange_4_yuv.md5 -+1,LTRPSPS_A_Qualcomm_1,LTRPSPS_A_Qualcomm_1.bit,LTRPSPS_A_Qualcomm_1.md5 -+1,MAXBINS_A_TI_5,MAXBINS_A_TI_5.bit,MAXBINS_A_TI_5_yuv.md5 -+1,MAXBINS_B_TI_5,MAXBINS_B_TI_5.bit,MAXBINS_B_TI_5_yuv.md5 -+1,MAXBINS_C_TI_5,MAXBINS_C_TI_5.bit,MAXBINS_C_TI_5_yuv.md5 -+1,MERGE_A_TI_3,MERGE_A_TI_3.bit,MERGE_A_TI_3.md5 -+1,MERGE_B_TI_3,MERGE_B_TI_3.bit,MERGE_B_TI_3.md5 -+1,MERGE_C_TI_3,MERGE_C_TI_3.bit,MERGE_C_TI_3.md5 -+1,MERGE_D_TI_3,MERGE_D_TI_3.bit,MERGE_D_TI_3.md5 -+1,MERGE_E_TI_3,MERGE_E_TI_3.bit,MERGE_E_TI_3.md5 -+1,MERGE_F_MTK_4,MERGE_F_MTK_4.bit,MERGE_F_MTK_4.md5 -+1,MERGE_G_HHI_4,MERGE_G_HHI_4.bit,MERGE_G_HHI_4.md5 -+1,MVCLIP_A_qualcomm_3,MVCLIP_A_qualcomm_3.bit,MVCLIP_A_qualcomm_3.yuv.md5 -+1,MVDL1ZERO_A_docomo_4,MVDL1ZERO_A_docomo_4.bit,MVDL1ZERO_A_docomo_4.md5 -+1,MVEDGE_A_qualcomm_3,MVEDGE_A_qualcomm_3.bit,MVEDGE_A_qualcomm_3.yuv.md5 -+1,NoOutPrior_A_Qualcomm_1,NoOutPrior_A_Qualcomm_1.bit,NoOutPrior_A_Qualcomm_1.md5 -+1,NoOutPrior_B_Qualcomm_1,NoOutPrior_B_Qualcomm_1.bit,NoOutPrior_B_Qualcomm_1.md5 -+1,NUT_A_ericsson_5,NUT_A_ericsson_5.bit,NUT_A_ericsson_5.md5 -+1,OPFLAG_A_Qualcomm_1,OPFLAG_A_Qualcomm_1.bit,OPFLAG_A_Qualcomm_1.md5 -+1,OPFLAG_B_Qualcomm_1,OPFLAG_B_Qualcomm_1.bit,OPFLAG_B_Qualcomm_1.md5 -+1,OPFLAG_C_Qualcomm_1,OPFLAG_C_Qualcomm_1.bit,OPFLAG_C_Qualcomm_1.md5 -+1,PICSIZE_A_Bossen_1,PICSIZE_A_Bossen_1.bin,PICSIZE_A_Bossen_1.md5 -+1,PICSIZE_B_Bossen_1,PICSIZE_B_Bossen_1.bin,PICSIZE_B_Bossen_1.md5 -+1,PICSIZE_C_Bossen_1,PICSIZE_C_Bossen_1.bin,PICSIZE_C_Bossen_1.md5 -+1,PICSIZE_D_Bossen_1,PICSIZE_D_Bossen_1.bin,PICSIZE_D_Bossen_1.md5 -+1,PMERGE_A_TI_3,PMERGE_A_TI_3.bit,PMERGE_A_TI_3.md5 -+1,PMERGE_B_TI_3,PMERGE_B_TI_3.bit,PMERGE_B_TI_3.md5 -+1,PMERGE_C_TI_3,PMERGE_C_TI_3.bit,PMERGE_C_TI_3.md5 -+1,PMERGE_D_TI_3,PMERGE_D_TI_3.bit,PMERGE_D_TI_3.md5 -+1,PMERGE_E_TI_3,PMERGE_E_TI_3.bit,PMERGE_E_TI_3.md5 -+1,POC_A_Bossen_3,POC_A_Bossen_3.bin,POC_A_Bossen_3.md5 -+1,PPS_A_qualcomm_7,PPS_A_qualcomm_7.bit,PPS_A_qualcomm_7.yuv.md5 -+1,PS_B_VIDYO_3,PS_B_VIDYO_3.bit,PS_B_VIDYO_3_yuv.md5 -+1,RAP_A_docomo_6,RAP_A_docomo_6.bit,RAP_A_docomo_6.md5 -+1,RAP_B_Bossen_2,RAP_B_Bossen_2.bit,RAP_B_Bossen_2.md5 -+1,RPLM_A_qualcomm_4,RPLM_A_qualcomm_4.bit,RPLM_A_qualcomm_4.yuv.md5 -+1,RPLM_B_qualcomm_4,RPLM_B_qualcomm_4.bit,RPLM_B_qualcomm_4.yuv.md5 -+1,RPS_A_docomo_5,RPS_A_docomo_5.bit,RPS_A_docomo_5.md5 -+1,RPS_B_qualcomm_5,RPS_B_qualcomm_5.bit,RPS_B_qualcomm_5.yuv.md5 -+1,RPS_C_ericsson_5,RPS_C_ericsson_5.bit,RPS_C_ericsson_5.md5 -+1,RPS_D_ericsson_6,RPS_D_ericsson_6.bit,RPS_D_ericsson_6.md5 -+1,RPS_E_qualcomm_5,RPS_E_qualcomm_5.bit,RPS_E_qualcomm_5.yuv.md5 -+1,RPS_F_docomo_2,RPS_F_docomo_2.bit,RPS_F_docomo_2.md5 -+1,RQT_A_HHI_4,RQT_A_HHI_4.bit,RQT_A_HHI_4.md5 -+1,RQT_B_HHI_4,RQT_B_HHI_4.bit,RQT_B_HHI_4.md5 -+1,RQT_C_HHI_4,RQT_C_HHI_4.bit,RQT_C_HHI_4.md5 -+1,RQT_D_HHI_4,RQT_D_HHI_4.bit,RQT_D_HHI_4.md5 -+1,RQT_E_HHI_4,RQT_E_HHI_4.bit,RQT_E_HHI_4.md5 -+1,RQT_F_HHI_4,RQT_F_HHI_4.bit,RQT_F_HHI_4.md5 -+1,RQT_G_HHI_4,RQT_G_HHI_4.bit,RQT_G_HHI_4.md5 -+1,SAO_A_MediaTek_4,SAO_A_MediaTek_4.bit,SAO_A_MediaTek_4.md5 -+1,SAO_B_MediaTek_5,SAO_B_MediaTek_5.bit,SAO_B_MediaTek_5.md5 -+1,SAO_C_Samsung_5,SAO_C_Samsung_5.bin,SAO_C_Samsung_5.md5 -+1,SAO_D_Samsung_5,SAO_D_Samsung_5.bin,SAO_D_Samsung_5.md5 -+1,SAO_E_Canon_4,SAO_E_Canon_4.bit,SAO_E_Canon_4.md5 -+1,SAO_F_Canon_3,SAO_F_Canon_3.bit,SAO_F_Canon_3.md5 -+1,SAO_G_Canon_3,SAO_G_Canon_3.bit,SAO_G_Canon_3.md5 -+1,SAO_H_Parabola_1,SAO_H_Parabola_1.bit,SAO_H_Parabola_1.md5 -+2,SAODBLK_A_MainConcept_4,SAODBLK_A_MainConcept_4.bin,SAODBLK_A_MainConcept_4_md5.txt -+2,SAODBLK_B_MainConcept_4,SAODBLK_B_MainConcept_4.bin,SAODBLK_B_MainConcept_4_md5.txt -+1,SDH_A_Orange_4,SDH_A_Orange_4.bit,SDH_A_Orange_4_yuv.md5 -+1,SLICES_A_Rovi_3,SLICES_A_Rovi_3.bin,SLICES_A_Rovi_3.md5 -+1,SLIST_A_Sony_5,SLIST_A_Sony_5.bin,SLIST_A_Sony_5_yuv.md5 -+1,SLIST_B_Sony_9,SLIST_B_Sony_9.bin,SLIST_B_Sony_9_yuv.md5 -+1,SLIST_C_Sony_4,SLIST_C_Sony_4.bin,SLIST_C_Sony_4_yuv.md5 -+1,SLIST_D_Sony_9,str.bin,SLIST_D_Sony_9_yuv.md5 -+1,SLPPLP_A_VIDYO_2,SLPPLP_A_VIDYO_2.bit,SLPPLP_A_VIDYO_2_yuv.md5 -+1,STRUCT_A_Samsung_7,STRUCT_A_Samsung_7.bin,STRUCT_A_Samsung_7.md5 -+1,STRUCT_B_Samsung_7,STRUCT_B_Samsung_7.bin,STRUCT_B_Samsung_7.md5 -+1,TILES_A_Cisco_2,TILES_A_Cisco_2.bin,TILES_A_Cisco_2_yuv.md5 -+1,TILES_B_Cisco_1,TILES_B_Cisco_1.bin,TILES_B_Cisco_1_yuv.md5 -+1,TMVP_A_MS_3,TMVP_A_MS_3.bit,TMVP_A_MS_3.yuv.md5 -+1,TSCL_A_VIDYO_5,TSCL_A_VIDYO_5.bit,TSCL_A_VIDYO_5_yuv.md5 -+1,TSCL_B_VIDYO_4,TSCL_B_VIDYO_4.bit,TSCL_B_VIDYO_4_yuv.md5 -+1,TSKIP_A_MS_3,TSKIP_A_MS_3.bit,TSKIP_A_MS_3.yuv.md5 -+3,TSUNEQBD_A_MAIN10_Technicolor_2,TSUNEQBD_A_MAIN10_Technicolor_2.bit,TSUNEQBD_A_MAIN10_Technicolor_2_yuv.md5, # unequal bit depth -+1,TUSIZE_A_Samsung_1,TUSIZE_A_Samsung_1.bin,TUSIZE_A_Samsung_1.md5 -+1,VPSID_A_VIDYO_2,VPSID_A_VIDYO_2.bit,VPSID_A_VIDYO_2_yuv.md5 -+3,VPSSPSPPS_A_MainConcept_1,VPSSPSPPS_A_MainConcept_1.bin,VPSSPSPPS_A_MainConcept_1_md5.txt, # ??? -+1,WP_A_MAIN10_Toshiba_3,WP_A_MAIN10_Toshiba_3.bit,WP_A_MAIN10_Toshiba_3_yuv.md5 -+1,WP_A_Toshiba_3,WP_A_Toshiba_3.bit,WP_A_Toshiba_3_yuv.md5 -+1,WP_B_Toshiba_3,WP_B_Toshiba_3.bit,WP_B_Toshiba_3_yuv.md5 -+1,WP_MAIN10_B_Toshiba_3,WP_MAIN10_B_Toshiba_3.bit,WP_MAIN10_B_Toshiba_3_yuv.md5 -+1,WPP_A_ericsson_MAIN10_2,WPP_A_ericsson_MAIN10_2.bit,WPP_A_ericsson_MAIN10_yuv.md5 -+1,WPP_A_ericsson_MAIN_2,WPP_A_ericsson_MAIN_2.bit,WPP_A_ericsson_MAIN_2_yuv.md5 -+1,WPP_B_ericsson_MAIN10_2,WPP_B_ericsson_MAIN10_2.bit,WPP_B_ericsson_MAIN10_yuv.md5 -+1,WPP_B_ericsson_MAIN_2,WPP_B_ericsson_MAIN_2.bit,WPP_B_ericsson_MAIN_2_yuv.md5 -+1,WPP_C_ericsson_MAIN10_2,WPP_C_ericsson_MAIN10_2.bit,WPP_C_ericsson_MAIN10_yuv.md5 -+1,WPP_C_ericsson_MAIN_2,WPP_C_ericsson_MAIN_2.bit,WPP_C_ericsson_MAIN_2_yuv.md5 -+1,WPP_D_ericsson_MAIN10_2,WPP_D_ericsson_MAIN10_2.bit,WPP_D_ericsson_MAIN10_yuv.md5 -+1,WPP_D_ericsson_MAIN_2,WPP_D_ericsson_MAIN_2.bit,WPP_D_ericsson_MAIN_2_yuv.md5 -+1,WPP_E_ericsson_MAIN10_2,WPP_E_ericsson_MAIN10_2.bit,WPP_E_ericsson_MAIN10_yuv.md5 -+1,WPP_E_ericsson_MAIN_2,WPP_E_ericsson_MAIN_2.bit,WPP_E_ericsson_MAIN_2_yuv.md5 -+1,WPP_F_ericsson_MAIN10_2,WPP_F_ericsson_MAIN10_2.bit,WPP_F_ericsson_MAIN10_yuv.md5 -+1,WPP_F_ericsson_MAIN_2,WPP_F_ericsson_MAIN_2.bit,WPP_F_ericsson_MAIN_2_yuv.md5 -diff --git a/pi-util/conf_h265.csv b/pi-util/conf_h265.csv -new file mode 100644 -index 0000000000..fc14f2a3c2 ---- /dev/null -+++ b/pi-util/conf_h265.csv -@@ -0,0 +1,144 @@ -+1,ADJUST_IPRED_ANGLE_A_RExt_Mitsubishi_1,ADJUST_IPRED_ANGLE_A_RExt_Mitsubishi_1.bit,ADJUST_IPRED_ANGLE_A_RExt_Mitsubishi_1.md5 -+1,AMP_A_Samsung_6,AMP_A_Samsung_6.bin,AMP_A_Samsung_6.md5 -+1,AMP_B_Samsung_6,AMP_B_Samsung_6.bin,AMP_B_Samsung_6.md5 -+1,AMP_D_Hisilicon_3,AMP_D_Hisilicon.bit,AMP_D_Hisilicon_3.yuv.md5 -+1,AMP_E_Hisilicon_3,AMP_E_Hisilicon.bit,AMP_E_Hisilicon_3.yuv.md5 -+1,AMP_F_Hisilicon_3,AMP_F_Hisilicon_3.bit,AMP_F_Hisilicon_3.yuv.md5 -+1,AMVP_A_MTK_4,AMVP_A_MTK_4.bit,AMVP_A_MTK_4.md5 -+1,AMVP_B_MTK_4,AMVP_B_MTK_4.bit,AMVP_B_MTK_4.md5 -+1,AMVP_C_Samsung_6,AMVP_C_Samsung_6.bin,AMVP_C_Samsung_6.md5 -+1,BUMPING_A_ericsson_1,BUMPING_A_ericsson_1.bit,BUMPING_A_ericsson_1.md5 -+1,CAINIT_A_SHARP_4,CAINIT_A_SHARP_4.bit,CAINIT_A_SHARP_4.md5 -+1,CAINIT_B_SHARP_4,CAINIT_B_SHARP_4.bit,CAINIT_B_SHARP_4.md5 -+1,CAINIT_C_SHARP_3,CAINIT_C_SHARP_3.bit,CAINIT_C_SHARP_3.md5 -+1,CAINIT_D_SHARP_3,CAINIT_D_SHARP_3.bit,CAINIT_D_SHARP_3.md5 -+1,CAINIT_E_SHARP_3,CAINIT_E_SHARP_3.bit,CAINIT_E_SHARP_3.md5 -+1,CAINIT_F_SHARP_3,CAINIT_F_SHARP_3.bit,CAINIT_F_SHARP_3.md5 -+1,CAINIT_G_SHARP_3,CAINIT_G_SHARP_3.bit,CAINIT_G_SHARP_3.md5 -+1,CAINIT_H_SHARP_3,CAINIT_H_SHARP_3.bit,CAINIT_H_SHARP_3.md5 -+1,CIP_A_Panasonic_3,CIP_A_Panasonic_3.bit,CIP_A_Panasonic_3_yuv.md5 -+1,cip_B_NEC_3,cip_B_NEC_3.bit,cip_B_NEC_3.md5 -+1,CIP_C_Panasonic_2,CIP_C_Panasonic_2.bit,CIP_C_Panasonic_2_yuv.md5 -+1,CONFWIN_A_Sony_1,CONFWIN_A_Sony_1.bit,CONFWIN_A_Sony_1.md5 -+1,DBLK_A_MAIN10_VIXS_3,DBLK_A_MAIN10_VIXS_3.bit,DBLK_A_MAIN10_VIXS_3.md5 -+1,DBLK_A_SONY_3,DBLK_A_SONY_3.bit,DBLK_A_SONY_3.bit.yuv.md5 -+1,DBLK_B_SONY_3,DBLK_B_SONY_3.bit,DBLK_B_SONY_3.bit.yuv.md5 -+1,DBLK_C_SONY_3,DBLK_C_SONY_3.bit,DBLK_C_SONY_3.bit.yuv.md5 -+1,DBLK_D_VIXS_2,DBLK_D_VIXS_2.bit,DBLK_D_VIXS_2_yuv.md5 -+1,DBLK_E_VIXS_2,DBLK_E_VIXS_2.bit,DBLK_E_VIXS_2_yuv.md5 -+1,DBLK_F_VIXS_2,DBLK_F_VIXS_2.bit,DBLK_F_VIXS_2_yuv.md5 -+1,DBLK_G_VIXS_2,DBLK_G_VIXS_2.bit,DBLK_G_VIXS_2_yuv.md5 -+1,DELTAQP_A_BRCM_4,DELTAQP_A_BRCM_4.bit,DELTAQP_A_BRCM_4_yuv.md5 -+1,DELTAQP_B_SONY_3,DELTAQP_B_SONY_3.bit,DELTAQP_B_SONY_3.bit.yuv.md5 -+1,DELTAQP_C_SONY_3,DELTAQP_C_SONY_3.bit,DELTAQP_C_SONY_3.bit.yuv.md5 -+1,DSLICE_A_HHI_5,DSLICE_A_HHI_5.bin,DSLICE_A_HHI_5.md5 -+1,DSLICE_B_HHI_5,DSLICE_B_HHI_5.bin,DSLICE_B_HHI_5.md5 -+1,DSLICE_C_HHI_5,DSLICE_C_HHI_5.bin,DSLICE_C_HHI_5.md5 -+1,ENTP_A_QUALCOMM_1,ENTP_A_Qualcomm_1.bit,ENTP_A_Qualcomm_1.md5 -+1,ENTP_B_Qualcomm_1,ENTP_B_Qualcomm_1.bit,ENTP_B_Qualcomm_1.md5 -+1,ENTP_C_Qualcomm_1,ENTP_C_Qualcomm_1.bit,ENTP_C_Qualcomm_1.md5 -+1,EXT_A_ericsson_4,EXT_A_ericsson_4.bit,EXT_A_ericsson_4.md5 -+1,FILLER_A_Sony_1,FILLER_A_Sony_1.bit,FILLER_A_Sony_1.md5 -+1,HRD_A_Fujitsu_3,HRD_A_Fujitsu_3.bin,HRD_A_Fujitsu_3.md5 -+1,INITQP_A_Sony_1,INITQP_A_Sony_1.bit,INITQP_A_Sony_1.md5 -+1,INITQP_B_Main10_Sony_1,INITQP_B_Main10_Sony_1.bit,INITQP_B_Main10_Sony_1.md5 -+1,ipcm_A_NEC_3,ipcm_A_NEC_3.bit,ipcm_A_NEC_3.md5 -+1,ipcm_B_NEC_3,ipcm_B_NEC_3.bit,ipcm_B_NEC_3.md5 -+1,ipcm_C_NEC_3,ipcm_C_NEC_3.bit,ipcm_C_NEC_3.md5 -+1,ipcm_D_NEC_3,ipcm_D_NEC_3.bit,ipcm_D_NEC_3.md5 -+1,ipcm_E_NEC_2,ipcm_E_NEC_2.bit,ipcm_E_NEC_2.md5 -+1,IPRED_A_docomo_2,IPRED_A_docomo_2.bit,IPRED_A_docomo_2.md5 -+1,IPRED_B_Nokia_3,IPRED_B_Nokia_3.bit,IPRED_B_Nokia_3_yuv.md5 -+1,IPRED_C_Mitsubishi_3,IPRED_C_Mitsubishi_3.bit,IPRED_C_Mitsubishi_3_yuv.md5 -+1,LS_A_Orange_2,LS_A_Orange_2.bit,LS_A_Orange_2_yuv.md5 -+1,LS_B_Orange_4,LS_B_Orange_4.bit,LS_B_Orange_4_yuv.md5 -+1,LTRPSPS_A_Qualcomm_1,LTRPSPS_A_Qualcomm_1.bit,LTRPSPS_A_Qualcomm_1.md5 -+1,MAXBINS_A_TI_4,MAXBINS_A_TI_4.bit,MAXBINS_A_TI_4.md5 -+1,MAXBINS_B_TI_4,MAXBINS_B_TI_4.bit,MAXBINS_B_TI_4.md5 -+1,MAXBINS_C_TI_4,MAXBINS_C_TI_4.bit,MAXBINS_C_TI_4.md5 -+1,MERGE_A_TI_3,MERGE_A_TI_3.bit,MERGE_A_TI_3.md5 -+1,MERGE_B_TI_3,MERGE_B_TI_3.bit,MERGE_B_TI_3.md5 -+1,MERGE_C_TI_3,MERGE_C_TI_3.bit,MERGE_C_TI_3.md5 -+1,MERGE_D_TI_3,MERGE_D_TI_3.bit,MERGE_D_TI_3.md5 -+1,MERGE_E_TI_3,MERGE_E_TI_3.bit,MERGE_E_TI_3.md5 -+1,MERGE_F_MTK_4,MERGE_F_MTK_4.bit,MERGE_F_MTK_4.md5 -+1,MERGE_G_HHI_4,MERGE_G_HHI_4.bit,MERGE_G_HHI_4.md5 -+1,MVCLIP_A_qualcomm_3,MVCLIP_A_qualcomm_3.bit,MVCLIP_A_qualcomm_3.yuv.md5 -+1,MVDL1ZERO_A_docomo_4,MVDL1ZERO_A_docomo_4.bit,MVDL1ZERO_A_docomo_4.md5 -+1,MVEDGE_A_qualcomm_3,MVEDGE_A_qualcomm_3.bit,MVEDGE_A_qualcomm_3.yuv.md5 -+1,NoOutPrior_A_Qualcomm_1,NoOutPrior_A_Qualcomm_1.bit,NoOutPrior_A_Qualcomm_1.md5 -+1,NoOutPrior_B_Qualcomm_1,NoOutPrior_B_Qualcomm_1.bit,NoOutPrior_B_Qualcomm_1.md5 -+1,NUT_A_ericsson_5,NUT_A_ericsson_5.bit,NUT_A_ericsson_5.md5 -+1,OPFLAG_A_Qualcomm_1,OPFLAG_A_Qualcomm_1.bit,OPFLAG_A_Qualcomm_1.md5 -+1,OPFLAG_B_Qualcomm_1,OPFLAG_B_Qualcomm_1.bit,OPFLAG_B_Qualcomm_1.md5 -+1,OPFLAG_C_Qualcomm_1,OPFLAG_C_Qualcomm_1.bit,OPFLAG_C_Qualcomm_1.md5 -+1,PICSIZE_A_Bossen_1,PICSIZE_A_Bossen_1.bin,PICSIZE_A_Bossen_1.md5 -+1,PICSIZE_B_Bossen_1,PICSIZE_B_Bossen_1.bin,PICSIZE_B_Bossen_1.md5 -+1,PICSIZE_C_Bossen_1,PICSIZE_C_Bossen_1.bin,PICSIZE_C_Bossen_1.md5 -+1,PICSIZE_D_Bossen_1,PICSIZE_D_Bossen_1.bin,PICSIZE_D_Bossen_1.md5 -+1,PMERGE_A_TI_3,PMERGE_A_TI_3.bit,PMERGE_A_TI_3.md5 -+1,PMERGE_B_TI_3,PMERGE_B_TI_3.bit,PMERGE_B_TI_3.md5 -+1,PMERGE_C_TI_3,PMERGE_C_TI_3.bit,PMERGE_C_TI_3.md5 -+1,PMERGE_D_TI_3,PMERGE_D_TI_3.bit,PMERGE_D_TI_3.md5 -+1,PMERGE_E_TI_3,PMERGE_E_TI_3.bit,PMERGE_E_TI_3.md5 -+1,POC_A_Bossen_3,POC_A_Bossen_3.bin,POC_A_Bossen_3.md5 -+1,PPS_A_qualcomm_7,PPS_A_qualcomm_7.bit,PPS_A_qualcomm_7.yuv.md5 -+1,PS_B_VIDYO_3,PS_B_VIDYO_3.bit,PS_B_VIDYO_3_yuv.md5 -+1,RAP_A_docomo_6,RAP_A_docomo_6.bit,RAP_A_docomo_6.md5 -+1,RAP_B_Bossen_2,RAP_B_Bossen_2.bit,RAP_B_Bossen_2.md5 -+1,RPLM_A_qualcomm_4,RPLM_A_qualcomm_4.bit,RPLM_A_qualcomm_4.yuv.md5 -+1,RPLM_B_qualcomm_4,RPLM_B_qualcomm_4.bit,RPLM_B_qualcomm_4.yuv.md5 -+1,RPS_A_docomo_5,RPS_A_docomo_5.bit,RPS_A_docomo_5.md5 -+1,RPS_B_qualcomm_5,RPS_B_qualcomm_5.bit,RPS_B_qualcomm_5.yuv.md5 -+1,RPS_C_ericsson_5,RPS_C_ericsson_5.bit,RPS_C_ericsson_5.md5 -+1,RPS_D_ericsson_6,RPS_D_ericsson_6.bit,RPS_D_ericsson_6.md5 -+1,RPS_E_qualcomm_5,RPS_E_qualcomm_5.bit,RPS_E_qualcomm_5.yuv.md5 -+1,RPS_F_docomo_2,RPS_F_docomo_2.bit,RPS_F_docomo_2.md5 -+1,RQT_A_HHI_4,RQT_A_HHI_4.bit,RQT_A_HHI_4.md5 -+1,RQT_B_HHI_4,RQT_B_HHI_4.bit,RQT_B_HHI_4.md5 -+1,RQT_C_HHI_4,RQT_C_HHI_4.bit,RQT_C_HHI_4.md5 -+1,RQT_D_HHI_4,RQT_D_HHI_4.bit,RQT_D_HHI_4.md5 -+1,RQT_E_HHI_4,RQT_E_HHI_4.bit,RQT_E_HHI_4.md5 -+1,RQT_F_HHI_4,RQT_F_HHI_4.bit,RQT_F_HHI_4.md5 -+1,RQT_G_HHI_4,RQT_G_HHI_4.bit,RQT_G_HHI_4.md5 -+1,SAO_A_MediaTek_4,SAO_A_MediaTek_4.bit,SAO_A_MediaTek_4.md5 -+1,SAO_B_MediaTek_5,SAO_B_MediaTek_5.bit,SAO_B_MediaTek_5.md5 -+1,SAO_C_Samsung_5,SAO_C_Samsung_5.bin,SAO_C_Samsung_5.md5 -+1,SAO_D_Samsung_5,SAO_D_Samsung_5.bin,SAO_D_Samsung_5.md5 -+1,SAO_E_Canon_4,SAO_E_Canon_4.bit,SAO_E_Canon_4.md5 -+1,SAO_F_Canon_3,SAO_F_Canon_3.bit,SAO_F_Canon_3.md5 -+1,SAO_G_Canon_3,SAO_G_Canon_3.bit,SAO_G_Canon_3.md5 -+1,SDH_A_Orange_4,SDH_A_Orange_4.bit,SDH_A_Orange_4_yuv.md5 -+1,SLICES_A_Rovi_3,SLICES_A_Rovi_3.bin,SLICES_A_Rovi_3.md5 -+1,SLIST_A_Sony_4,str.bin,SLIST_A_Sony_4_yuv.md5 -+1,SLIST_B_Sony_8,str.bin,SLIST_B_Sony_8_yuv.md5 -+1,SLIST_C_Sony_3,str.bin,SLIST_C_Sony_3_yuv.md5 -+1,SLIST_D_Sony_9,str.bin,SLIST_D_Sony_9_yuv.md5 -+1,SLPPLP_A_VIDYO_2,SLPPLP_A_VIDYO_2.bit,SLPPLP_A_VIDYO_2_yuv.md5 -+1,STRUCT_A_Samsung_6,STRUCT_A_Samsung_6.bin,STRUCT_A_Samsung_6.md5 -+1,STRUCT_B_Samsung_6,STRUCT_B_Samsung_6.bin,STRUCT_B_Samsung_6.md5 -+1,TILES_A_Cisco_2,TILES_A_Cisco_2.bin,TILES_A_Cisco_2_yuv.md5 -+1,TILES_B_Cisco_1,TILES_B_Cisco_1.bin,TILES_B_Cisco_1_yuv.md5 -+1,TMVP_A_MS_3,TMVP_A_MS_3.bit,TMVP_A_MS_3.yuv.md5 -+1,TSCL_A_VIDYO_5,TSCL_A_VIDYO_5.bit,TSCL_A_VIDYO_5_yuv.md5 -+1,TSCL_B_VIDYO_4,TSCL_B_VIDYO_4.bit,TSCL_B_VIDYO_4_yuv.md5 -+1,TSKIP_A_MS_3,TSKIP_A_MS_3.bit,TSKIP_A_MS_3.yuv.md5 -+0,TSUNEQBD_A_MAIN10_Technicolor_2,TSUNEQBD_A_MAIN10_Technicolor_2.bit,TSUNEQBD_A_MAIN10_Technicolor_2_yuv.md5, # Y/C bit depth unmatched -+1,TUSIZE_A_Samsung_1,TUSIZE_A_Samsung_1.bin,TUSIZE_A_Samsung_1.md5 -+1,VPSID_A_VIDYO_2,VPSID_A_VIDYO_2.bit,VPSID_A_VIDYO_2_yuv.md5 -+1,WP_A_MAIN10_Toshiba_3,WP_A_MAIN10_Toshiba_3.bit,WP_A_MAIN10_Toshiba_3_yuv.md5 -+1,WP_A_Toshiba_3,WP_A_Toshiba_3.bit,WP_A_Toshiba_3_yuv.md5 -+1,WP_B_Toshiba_3,WP_B_Toshiba_3.bit,WP_B_Toshiba_3_yuv.md5 -+1,WP_MAIN10_B_Toshiba_3,WP_MAIN10_B_Toshiba_3.bit,WP_MAIN10_B_Toshiba_3_yuv.md5 -+1,WPP_A_ericsson_MAIN10_2,WPP_A_ericsson_MAIN10_2.bit,WPP_A_ericsson_MAIN10_yuv.md5 -+1,WPP_A_ericsson_MAIN_2,WPP_A_ericsson_MAIN_2.bit,WPP_A_ericsson_MAIN_2_yuv.md5 -+1,WPP_B_ericsson_MAIN10_2,WPP_B_ericsson_MAIN10_2.bit,WPP_B_ericsson_MAIN10_yuv.md5 -+1,WPP_B_ericsson_MAIN_2,WPP_B_ericsson_MAIN_2.bit,WPP_B_ericsson_MAIN_2_yuv.md5 -+1,WPP_C_ericsson_MAIN10_2,WPP_C_ericsson_MAIN10_2.bit,WPP_C_ericsson_MAIN10_yuv.md5 -+1,WPP_C_ericsson_MAIN_2,WPP_C_ericsson_MAIN_2.bit,WPP_C_ericsson_MAIN_2_yuv.md5 -+1,WPP_D_ericsson_MAIN10_2,WPP_D_ericsson_MAIN10_2.bit,WPP_D_ericsson_MAIN10_yuv.md5 -+1,WPP_D_ericsson_MAIN_2,WPP_D_ericsson_MAIN_2.bit,WPP_D_ericsson_MAIN_2_yuv.md5 -+1,WPP_E_ericsson_MAIN10_2,WPP_E_ericsson_MAIN10_2.bit,WPP_E_ericsson_MAIN10_yuv.md5 -+1,WPP_E_ericsson_MAIN_2,WPP_E_ericsson_MAIN_2.bit,WPP_E_ericsson_MAIN_2_yuv.md5 -+1,WPP_F_ericsson_MAIN10_2,WPP_F_ericsson_MAIN10_2.bit,WPP_F_ericsson_MAIN10_yuv.md5 -+1,WPP_F_ericsson_MAIN_2,WPP_F_ericsson_MAIN_2.bit,WPP_F_ericsson_MAIN_2_yuv.md5 -diff --git a/pi-util/conf_native.sh b/pi-util/conf_native.sh -new file mode 100755 -index 0000000000..65576846e8 ---- /dev/null -+++ b/pi-util/conf_native.sh -@@ -0,0 +1,108 @@ -+echo "Configure for native build" -+ -+FFSRC=`pwd` -+MC=`dpkg --print-architecture` -+BUILDBASE=$FFSRC/out -+ -+#RPI_KEEPS="-save-temps=obj" -+RPI_KEEPS="" -+ -+NOSHARED= -+MMAL= -+ -+while [ "$1" != "" ] ; do -+ case $1 in -+ --noshared) -+ NOSHARED=1 -+ ;; -+ --mmal) -+ MMAL=1 -+ ;; -+ *) -+ echo "Usage $0: [--noshared] [--mmal]" -+ exit 1 -+ ;; -+ esac -+ shift -+done -+ -+ -+MCOPTS= -+RPI_INCLUDES= -+RPI_LIBDIRS= -+RPI_DEFINES= -+RPI_EXTRALIBS= -+ -+if [ "$MC" == "arm64" ]; then -+ echo "M/C aarch64" -+ A=aarch64-jelos-linux-gnu -+ B=arm64 -+elif [ "$MC" == "armhf" ]; then -+ echo "M/C armv7" -+ A=arm-jelos-linux-gnueabihf -+ B=armv7 -+ MCOPTS="--arch=armv6t2 --cpu=cortex-a7" -+ RPI_DEFINES=-mfpu=neon-vfpv4 -+else -+ echo Unexpected architecture $MC -+ exit 1 -+fi -+ -+if [ $MMAL ]; then -+ RPI_OPT_VC=/opt/vc -+ RPI_INCLUDES="-I$RPI_OPT_VC/include -I$RPI_OPT_VC/include/interface/vcos/pthreads -I$RPI_OPT_VC/include/interface/vmcs_host/linux" -+ RPI_LIBDIRS="-L$RPI_OPT_VC/lib" -+ RPI_DEFINES="$RPI_DEFINES -D__VCCOREVER__=0x4000000" -+ RPI_EXTRALIBS="-Wl,--start-group -lbcm_host -lmmal -lmmal_util -lmmal_core -lvcos -lvcsm -lvchostif -lvchiq_arm -Wl,--end-group" -+ RPIOPTS="--enable-mmal --enable-rpi" -+else -+ RPIOPTS="--disable-mmal --enable-sand" -+fi -+ -+C=`lsb_release -sc` -+V=`cat RELEASE` -+ -+SHARED_LIBS="--enable-shared" -+if [ $NOSHARED ]; then -+ SHARED_LIBS="--disable-shared" -+ OUT=$BUILDBASE/$B-$C-$V-static-rel -+ echo Static libs -+else -+ echo Shared libs -+ OUT=$BUILDBASE/$B-$C-$V-shared-rel -+fi -+ -+USR_PREFIX=$OUT/install -+LIB_PREFIX=$USR_PREFIX/lib/$A -+INC_PREFIX=$USR_PREFIX/include/$A -+ -+echo Destination directory: $OUT -+mkdir -p $OUT -+# Nothing under here need worry git - including this .gitignore! -+echo "**" > $BUILDBASE/.gitignore -+cd $OUT -+ -+$FFSRC/configure \ -+ --prefix=$USR_PREFIX\ -+ --libdir=$LIB_PREFIX\ -+ --incdir=$INC_PREFIX\ -+ $MCOPTS\ -+ --disable-stripping\ -+ --disable-thumb\ -+ --enable-v4l2-request\ -+ --enable-libdrm\ -+ --enable-epoxy\ -+ --enable-libudev\ -+ --enable-vout-egl\ -+ --enable-vout-drm\ -+ $SHARED_LIBS\ -+ $RPIOPTS\ -+ --extra-cflags="-ggdb $RPI_KEEPS $RPI_DEFINES $RPI_INCLUDES"\ -+ --extra-cxxflags="$RPI_DEFINES $RPI_INCLUDES"\ -+ --extra-ldflags="$RPI_LIBDIRS"\ -+ --extra-libs="$RPI_EXTRALIBS"\ -+ --extra-version="rpi" -+ -+ -+# gcc option for getting asm listing -+# -Wa,-ahls -diff --git a/pi-util/ffconf.py b/pi-util/ffconf.py -new file mode 100755 -index 0000000000..657568014e ---- /dev/null -+++ b/pi-util/ffconf.py -@@ -0,0 +1,215 @@ -+#!/usr/bin/env python3 -+ -+import string -+import os -+import subprocess -+import re -+import argparse -+import sys -+import csv -+from stat import * -+ -+CODEC_HEVC_RPI = 1 -+HWACCEL_RPI = 2 -+HWACCEL_DRM = 3 -+HWACCEL_VAAPI = 4 -+ -+def testone(fileroot, srcname, es_file, md5_file, pix, dectype, vcodec, ffmpeg_exec): -+ hwaccel = "" -+ if dectype == HWACCEL_RPI: -+ hwaccel = "rpi" -+ elif dectype == HWACCEL_DRM: -+ hwaccel = "drm" -+ elif dectype == HWACCEL_VAAPI: -+ hwaccel = "vaapi" -+ -+ pix_fmt = [] -+ if pix == "8": -+ pix_fmt = ["-pix_fmt", "yuv420p"] -+ elif pix == "10": -+ pix_fmt = ["-pix_fmt", "yuv420p10le"] -+ elif pix == "12": -+ pix_fmt = ["-pix_fmt", "yuv420p12le"] -+ -+ tmp_root = "/tmp" -+ -+ names = srcname.split('/') -+ while len(names) > 1: -+ tmp_root = os.path.join(tmp_root, names[0]) -+ del names[0] -+ name = names[0] -+ -+ if not os.path.exists(tmp_root): -+ os.makedirs(tmp_root) -+ -+ dec_file = os.path.join(tmp_root, name + ".dec.md5") -+ try: -+ os.remove(dec_file) -+ except: -+ pass -+ -+ flog = open(os.path.join(tmp_root, name + ".log"), "wt") -+ -+ ffargs = [ffmpeg_exec, "-flags", "unaligned", "-hwaccel", hwaccel, "-vcodec", "hevc", "-i", os.path.join(fileroot, es_file)] + pix_fmt + ["-f", "md5", dec_file] -+ -+ # Unaligned needed for cropping conformance -+ if hwaccel: -+ rstr = subprocess.call(ffargs, stdout=flog, stderr=subprocess.STDOUT) -+ else: -+ rstr = subprocess.call( -+ [ffmpeg_exec, "-flags", "unaligned", "-vcodec", vcodec, "-i", os.path.join(fileroot, es_file), "-f", "md5", dec_file], -+ stdout=flog, stderr=subprocess.STDOUT) -+ -+ try: -+ m1 = None -+ m2 = None -+ with open(os.path.join(fileroot, md5_file)) as f: -+ for line in f: -+ m1 = re.search("[0-9a-f]{32}", line.lower()) -+ if m1: -+ break -+ -+ with open(dec_file) as f: -+ m2 = re.search("[0-9a-f]{32}", f.readline()) -+ except: -+ pass -+ -+ if m1 and m2 and m1.group() == m2.group(): -+ print("Match: " + m1.group(), file=flog) -+ rv = 0 -+ elif not m1: -+ print("****** Cannot find m1", file=flog) -+ rv = 3 -+ elif not m2: -+ print("****** Cannot find m2", file=flog) -+ rv = 2 -+ else: -+ print("****** Mismatch: " + m1.group() + " != " + m2.group(), file=flog) -+ rv = 1 -+ flog.close() -+ return rv -+ -+def scandir(root): -+ aconf = [] -+ ents = os.listdir(root) -+ ents.sort(key=str.lower) -+ for name in ents: -+ test_path = os.path.join(root, name) -+ if S_ISDIR(os.stat(test_path).st_mode): -+ files = os.listdir(test_path) -+ es_file = "?" -+ md5_file = "?" -+ for f in files: -+ (base, ext) = os.path.splitext(f) -+ if base[0] == '.': -+ pass -+ elif ext == ".bit" or ext == ".bin": -+ es_file = f -+ elif ext == ".md5" or (ext == ".txt" and (base[-4:] == "_md5" or base[-6:] == "md5sum")): -+ if md5_file == "?": -+ md5_file = f -+ elif base[-3:] == "yuv": -+ md5_file = f -+ aconf.append((1, name, es_file, md5_file)) -+ return aconf -+ -+def runtest(name, tests): -+ if not tests: -+ return True -+ for t in tests: -+ if name[0:len(t)] == t or name.find("/" + t) != -1: -+ return True -+ return False -+ -+def doconf(csva, tests, test_root, vcodec, dectype, ffmpeg_exec): -+ unx_failures = [] -+ unx_success = [] -+ failures = 0 -+ successes = 0 -+ for a in csva: -+ exp_test = int(a[0]) -+ if (exp_test and runtest(a[1], tests)): -+ name = a[1] -+ print ("==== ", name, end="") -+ sys.stdout.flush() -+ -+ rv = testone(os.path.join(test_root, name), name, a[2], a[3], a[4], dectype=dectype, vcodec=vcodec, ffmpeg_exec=ffmpeg_exec) -+ if (rv == 0): -+ successes += 1 -+ else: -+ failures += 1 -+ -+ if (rv == 0): -+ if exp_test == 2: -+ print(": * OK *") -+ unx_success.append(name) -+ else: -+ print(": ok") -+ elif exp_test == 2 and rv == 1: -+ print(": fail") -+ elif exp_test == 3 and rv == 2: -+ # Call an expected "crash" an abort -+ print(": abort") -+ else: -+ unx_failures.append(name) -+ if rv == 1: -+ print(": * FAIL *") -+ elif (rv == 2) : -+ print(": * CRASH *") -+ elif (rv == 3) : -+ print(": * MD5 MISSING *") -+ else : -+ print(": * BANG *") -+ -+ if unx_failures or unx_success: -+ print("Unexpected Failures:", unx_failures) -+ print("Unexpected Success: ", unx_success) -+ else: -+ print("All tests normal:", successes, "ok,", failures, "failed") -+ -+ -+class ConfCSVDialect(csv.Dialect): -+ delimiter = ',' -+ doublequote = True -+ lineterminator = '\n' -+ quotechar='"' -+ quoting = csv.QUOTE_MINIMAL -+ skipinitialspace = True -+ strict = True -+ -+if __name__ == '__main__': -+ -+ argp = argparse.ArgumentParser(description="FFmpeg h265 conformance tester") -+ argp.add_argument("tests", nargs='*') -+ argp.add_argument("--pi4", action='store_true', help="Force pi4 cmd line") -+ argp.add_argument("--drm", action='store_true', help="Force v4l2 drm cmd line") -+ argp.add_argument("--vaapi", action='store_true', help="Force vaapi cmd line") -+ argp.add_argument("--test_root", default="/opt/conform/h265.2016", help="Root dir for test") -+ argp.add_argument("--csvgen", action='store_true', help="Generate CSV file for dir") -+ argp.add_argument("--csv", default="pi-util/conf_h265.2016.csv", help="CSV filename") -+ argp.add_argument("--vcodec", default="hevc_rpi", help="vcodec name to use") -+ argp.add_argument("--ffmpeg", default="./ffmpeg", help="ffmpeg exec name") -+ args = argp.parse_args() -+ -+ if args.csvgen: -+ csv.writer(sys.stdout).writerows(scandir(args.test_root)) -+ exit(0) -+ -+ with open(args.csv, 'rt') as csvfile: -+ csva = [a for a in csv.reader(csvfile, ConfCSVDialect())] -+ -+ dectype = CODEC_HEVC_RPI -+ if os.path.exists("/dev/rpivid-hevcmem"): -+ dectype = HWACCEL_RPI -+ if args.drm or os.path.exists("/sys/module/rpivid_hevc"): -+ dectype = HWACCEL_DRM -+ -+ if args.pi4: -+ dectype = HWACCEL_RPI -+ elif args.drm: -+ dectype = HWACCEL_DRM -+ elif args.vaapi: -+ dectype = HWACCEL_VAAPI -+ -+ doconf(csva, args.tests, args.test_root, args.vcodec, dectype, args.ffmpeg) -+ -diff --git a/pi-util/ffperf.py b/pi-util/ffperf.py -new file mode 100755 -index 0000000000..65c5224cd8 ---- /dev/null -+++ b/pi-util/ffperf.py -@@ -0,0 +1,128 @@ -+#!/usr/bin/env python3 -+ -+import time -+import string -+import os -+import tempfile -+import subprocess -+import re -+import argparse -+import sys -+import csv -+from stat import * -+ -+class tstats: -+ close_threshold = 0.01 -+ -+ def __init__(self, stats_dict=None): -+ if stats_dict != None: -+ self.name = stats_dict["name"] -+ self.elapsed = float(stats_dict["elapsed"]) -+ self.user = float(stats_dict["user"]) -+ self.sys = float(stats_dict["sys"]) -+ -+ def times_str(self): -+ ctime = self.sys + self.user -+ return "time=%6.2f, cpu=%6.2f (%4.2f%%)" % (self.elapsed, ctime, (ctime * 100.0) / self.elapsed) -+ -+ def dict(self): -+ return {"name":self.name, "elapsed":self.elapsed, "user":self.user, "sys":self.sys} -+ -+ def is_close(self, other): -+ return abs(self.elapsed - other.elapsed) / self.elapsed < self.close_threshold -+ -+ def __lt__(self, other): -+ return self.elapsed < other.elapsed -+ def __gt__(self, other): -+ return self.elapsed > other.elapsed -+ -+ def time_file(name, prefix, ffmpeg="./ffmpeg"): -+ stats = tstats() -+ stats.name = name -+ start_time = time.clock_gettime(time.CLOCK_MONOTONIC); -+ cproc = subprocess.Popen([ffmpeg, "-no_cvt_hw", -+ "-vcodec", "hevc_rpi", -+ "-t", "30", "-i", prefix + name, -+ "-f", "vout_rpi", os.devnull], bufsize=-1, stdout=flog, stderr=flog); -+ pinfo = os.wait4(cproc.pid, 0) -+ end_time = time.clock_gettime(time.CLOCK_MONOTONIC); -+ stats.elapsed = end_time - start_time -+ stats.user = pinfo[2].ru_utime -+ stats.sys = pinfo[2].ru_stime -+ return stats -+ -+ -+def common_prefix(s1, s2): -+ for i in range(min(len(s1),len(s2))): -+ if s1[i] != s2[i]: -+ return s1[:i] -+ return s1[:i+1] -+ -+def main(): -+ global flog -+ -+ argp = argparse.ArgumentParser(description="FFmpeg performance tester", epilog=""" -+To blank the screen before starting use "xdg-screensaver activate" -+(For some reason this doesn't seem to work from within python). -+""") -+ -+ argp.add_argument("streams", nargs='*') -+ argp.add_argument("--csv_out", default="ffperf_out.csv", help="CSV output filename") -+ argp.add_argument("--csv_in", help="CSV input filename") -+ argp.add_argument("--prefix", help="Filename prefix (include terminal '/' if a directory).") -+ argp.add_argument("--repeat", default=3, type=int, help="Run repeat count") -+ argp.add_argument("--ffmpeg", default="./ffmpeg", help="FFmpeg executable") -+ -+ args = argp.parse_args() -+ -+ csv_out = csv.DictWriter(open(args.csv_out, 'w', newline=''), ["name", "elapsed", "user", "sys"]) -+ csv_out.writeheader() -+ -+ stats_in = {} -+ if args.csv_in != None: -+ with open(args.csv_in, 'r', newline='') as f_in: -+ stats_in = {x["name"]:tstats(x) for x in csv.DictReader(f_in)} -+ -+ flog = open(os.path.join(tempfile.gettempdir(), "ffperf.log"), "wt") -+ -+ streams = args.streams -+ if not streams: -+ if not stats_in: -+ print ("No source streams specified") -+ return 1 -+ prefix = "" if args.prefix == None else args.prefix -+ streams = [k for k in stats_in] -+ elif args.prefix != None: -+ prefix = args.prefix -+ else: -+ prefix = streams[0] -+ for f in streams[1:]: -+ prefix = common_prefix(prefix, f) -+ pp = prefix.rpartition(os.sep) -+ prefix = pp[0] + pp[1] -+ streams = [s[len(prefix):] for s in streams] -+ -+ for f in sorted(streams, key=lambda x : "~" * x.count(os.sep) + x.lower()): -+ print ("====", f) -+ -+ t0 = tstats({"name":f, "elapsed":999, "user":999, "sys":999}) -+ for i in range(args.repeat): -+ t = tstats.time_file(f, prefix, args.ffmpeg) -+ print ("...", t.times_str()) -+ if t0 > t: -+ t0 = t -+ -+ if t0.name in stats_in: -+ pstat = stats_in[t0.name] -+ print("---" if pstat.is_close(t0) else "<<<" if t0 < pstat else ">>>", pstat.times_str()) -+ -+ csv_out.writerow(t0.dict()) -+ -+ print () -+ -+ return 0 -+ -+ -+if __name__ == '__main__': -+ exit(main()) -+ -diff --git a/pi-util/genpatch.sh b/pi-util/genpatch.sh -new file mode 100755 -index 0000000000..0948a68a7a ---- /dev/null -+++ b/pi-util/genpatch.sh -@@ -0,0 +1,35 @@ -+set -e -+ -+NOPATCH= -+if [ "$1" == "--notag" ]; then -+ shift -+ NOPATCH=1 -+fi -+ -+if [ "$1" == "" ]; then -+ echo Usage: $0 [--notag] \ -+ echo e.g.: $0 mmal_4 -+ exit 1 -+fi -+ -+VERSION=`cat RELEASE` -+if [ "$VERSION" == "" ]; then -+ echo Can\'t find version RELEASE -+ exit 1 -+fi -+ -+PATCHFILE=../ffmpeg-$VERSION-$1.patch -+ -+if [ $NOPATCH ]; then -+ echo Not tagged -+else -+ # Only continue if we are all comitted -+ git diff --name-status --exit-code -+ -+ PATCHTAG=pi/$VERSION/$1 -+ echo Tagging: $PATCHTAG -+ -+ git tag $PATCHTAG -+fi -+echo Generating patch: $PATCHFILE -+git diff n$VERSION -- > $PATCHFILE -diff --git a/pi-util/make_array.py b/pi-util/make_array.py -new file mode 100755 -index 0000000000..67b22d2d51 ---- /dev/null -+++ b/pi-util/make_array.py -@@ -0,0 +1,23 @@ -+#!/usr/bin/env python -+ -+# Usage -+# make_array file.bin -+# Produces file.h with array of bytes. -+# -+import sys -+for file in sys.argv[1:]: -+ prefix,suffix = file.split('.') -+ assert suffix=='bin' -+ name=prefix.split('/')[-1] -+ print 'Converting',file -+ with open(prefix+'.h','wb') as out: -+ print >>out, 'static const unsigned char',name,'[] = {' -+ with open(file,'rb') as fd: -+ i = 0 -+ for byte in fd.read(): -+ print >>out, '0x%02x, ' % ord(byte), -+ i = i + 1 -+ if i % 8 == 0: -+ print >>out, ' // %04x' % (i - 8) -+ print >>out,'};' -+ -diff --git a/pi-util/mkinst.sh b/pi-util/mkinst.sh -new file mode 100755 -index 0000000000..271a39e846 ---- /dev/null -+++ b/pi-util/mkinst.sh -@@ -0,0 +1,5 @@ -+set -e -+ -+make install -+ -+cp -r install/* ../vlc/sysroot/raspian_stretch_pi1-sysroot/usr -diff --git a/pi-util/patkodi.sh b/pi-util/patkodi.sh -new file mode 100644 -index 0000000000..dcd05a606e ---- /dev/null -+++ b/pi-util/patkodi.sh -@@ -0,0 +1,9 @@ -+set -e -+KODIBASE=/home/jc/rpi/kodi/xbmc -+JOBS=-j20 -+make $JOBS -+git diff xbmc/release/4.3-kodi > $KODIBASE/tools/depends/target/ffmpeg/pfcd_hevc_optimisations.patch -+make -C $KODIBASE/tools/depends/target/ffmpeg $JOBS -+make -C $KODIBASE/build install -+ -+ -diff --git a/pi-util/perfcmp.py b/pi-util/perfcmp.py -new file mode 100755 -index 0000000000..e44cfa0c3c ---- /dev/null -+++ b/pi-util/perfcmp.py -@@ -0,0 +1,101 @@ -+#!/usr/bin/env python3 -+ -+import time -+import string -+import os -+import tempfile -+import subprocess -+import re -+import argparse -+import sys -+import csv -+from stat import * -+ -+class tstats: -+ close_threshold = 0.01 -+ -+ def __init__(self, stats_dict=None): -+ if stats_dict != None: -+ self.name = stats_dict["name"] -+ self.elapsed = float(stats_dict["elapsed"]) -+ self.user = float(stats_dict["user"]) -+ self.sys = float(stats_dict["sys"]) -+ -+ def times_str(self): -+ ctime = self.sys + self.user -+ return "time=%6.2f, cpu=%6.2f (%4.2f%%)" % (self.elapsed, ctime, (ctime * 100.0) / self.elapsed) -+ -+ def dict(self): -+ return {"name":self.name, "elapsed":self.elapsed, "user":self.user, "sys":self.sys} -+ -+ def is_close(self, other): -+ return abs(self.elapsed - other.elapsed) / self.elapsed < self.close_threshold -+ -+ def __lt__(self, other): -+ return self.elapsed < other.elapsed -+ def __gt__(self, other): -+ return self.elapsed > other.elapsed -+ -+ def time_file(name, prefix): -+ stats = tstats() -+ stats.name = name -+ start_time = time.clock_gettime(time.CLOCK_MONOTONIC); -+ cproc = subprocess.Popen(["./ffmpeg", "-t", "30", "-i", prefix + name, -+ "-f", "null", os.devnull], bufsize=-1, stdout=flog, stderr=flog); -+ pinfo = os.wait4(cproc.pid, 0) -+ end_time = time.clock_gettime(time.CLOCK_MONOTONIC); -+ stats.elapsed = end_time - start_time -+ stats.user = pinfo[2].ru_utime -+ stats.sys = pinfo[2].ru_stime -+ return stats -+ -+ -+def common_prefix(s1, s2): -+ for i in range(min(len(s1),len(s2))): -+ if s1[i] != s2[i]: -+ return s1[:i] -+ return s1[:i+1] -+ -+def main(): -+ argp = argparse.ArgumentParser(description="FFmpeg performance compare") -+ -+ argp.add_argument("stream0", help="CSV to compare") -+ argp.add_argument("stream1", nargs='?', default="ffperf_out.csv", help="CSV to compare") -+ -+ args = argp.parse_args() -+ -+ with open(args.stream0, 'r', newline='') as f_in: -+ stats0 = {x["name"]:tstats(x) for x in csv.DictReader(f_in)} -+ with open(args.stream1, 'r', newline='') as f_in: -+ stats1 = {x["name"]:tstats(x) for x in csv.DictReader(f_in)} -+ -+ print (args.stream0, "<<-->>", args.stream1) -+ print () -+ -+ for f in sorted(stats0.keys() | stats1.keys(), key=lambda x : "~" * x.count(os.sep) + x.lower()): -+ if not (f in stats0) : -+ print (" XX :", f) -+ continue -+ if not (f in stats1) : -+ print (" XX :", f) -+ continue -+ -+ s0 = stats0[f] -+ s1 = stats1[f] -+ -+ pcent = ((s0.elapsed - s1.elapsed) / s0.elapsed) * 100.0 -+ thresh = 0.3 -+ tc = 6 -+ -+ nchar = min(tc - 1, int(abs(pcent) / thresh)) -+ cc = " -- " if nchar == 0 else "<" * nchar + " " * (tc - nchar) if pcent < 0 else " " * (tc - nchar) + ">" * nchar -+ -+ print ("%6.2f %s%6.2f (%+5.2f) : %s" % -+ (s0.elapsed, cc, s1.elapsed, pcent, f)) -+ -+ return 0 -+ -+ -+if __name__ == '__main__': -+ exit(main()) -+ -diff --git a/pi-util/qem.sh b/pi-util/qem.sh -new file mode 100755 -index 0000000000..a4dbb6eacd ---- /dev/null -+++ b/pi-util/qem.sh -@@ -0,0 +1,9 @@ -+TARGET_DIR=../src/eupton_vc4dev_2012a/software/vc4/DEV/applications/tutorials/user_shader_example_tex -+QASM=python\ ../local/bin/qasm.py -+SRC_FILE=libavcodec/rpi_hevc_shader.qasm -+DST_BASE=shader -+ -+cp libavcodec/rpi_hevc_shader_cmd.h $TARGET_DIR -+$QASM -mc_c:$DST_BASE,$DST_BASE,$DST_BASE $SRC_FILE > $TARGET_DIR/$DST_BASE.c -+$QASM -mc_h:$DST_BASE,$DST_BASE,$DST_BASE $SRC_FILE > $TARGET_DIR/$DST_BASE.h -+ -diff --git a/pi-util/v3dusage.py b/pi-util/v3dusage.py -new file mode 100755 -index 0000000000..5935a11ca5 ---- /dev/null -+++ b/pi-util/v3dusage.py -@@ -0,0 +1,128 @@ -+#!/usr/bin/env python -+ -+import sys -+import argparse -+import re -+ -+def do_logparse(logname): -+ -+ rmatch = re.compile(r'^([0-9]+\.[0-9]{3}): (done )?((vpu0)|(vpu1)|(qpu1)) ([A-Z_]+) cb:([0-9a-f]+) ') -+ rqcycle = re.compile(r'^([0-9]+\.[0-9]{3}): v3d: QPU Total clock cycles for all QPUs doing vertex/coordinate shading +([0-9]+)$') -+ rqtscycle = re.compile(r'^([0-9]+\.[0-9]{3}): v3d: QPU Total clock cycles for all QPUs stalled waiting for TMUs +([0-9]+)$') -+ rl2hits = re.compile(r'^([0-9]+\.[0-9]{3}): v3d: L2C Total Level 2 cache ([a-z]+) +([0-9]+)$') -+ -+ ttotal = {'idle':0.0} -+ tstart = {} -+ qctotal = {} -+ qtstotal = {} -+ l2hits = {} -+ l2total = {} -+ time0 = None -+ idle_start = None -+ qpu_op_no = 0 -+ op_count = 0 -+ -+ with open(logname, "rt") as infile: -+ for line in infile: -+ match = rmatch.match(line) -+ if match: -+# print match.group(1), ":", match.group(2), ":", match.group(3), ":", match.group(7), ":" -+ time = float(match.group(1)) -+ unit = match.group(3) -+ opstart = not match.group(2) -+ optype = match.group(7) -+ hascb = match.group(8) != "0" -+ -+ if unit == 'qpu1': -+ unit = unit + "." + str(qpu_op_no) -+ if not opstart: -+ if hascb or optype == 'EXECUTE_SYNC': -+ qpu_op_no = 0 -+ else: -+ qpu_op_no += 1 -+ -+ # Ignore sync type -+ if optype == 'EXECUTE_SYNC': -+ continue -+ -+ if not time0: -+ time0 = time -+ -+ if opstart: -+ tstart[unit] = time; -+ elif unit in tstart: -+ op_count += 1 -+ if not unit in ttotal: -+ ttotal[unit] = 0.0 -+ ttotal[unit] += time - tstart[unit] -+ del tstart[unit] -+ -+ if not idle_start and not tstart: -+ idle_start = time -+ elif idle_start and tstart: -+ ttotal['idle'] += time - idle_start -+ idle_start = None -+ -+ match = rqcycle.match(line) -+ if match: -+ unit = "qpu1." + str(qpu_op_no) -+ if not unit in qctotal: -+ qctotal[unit] = 0 -+ qctotal[unit] += int(match.group(2)) -+ -+ match = rqtscycle.match(line) -+ if match: -+ unit = "qpu1." + str(qpu_op_no) -+ if not unit in qtstotal: -+ qtstotal[unit] = 0 -+ qtstotal[unit] += int(match.group(2)) -+ -+ match = rl2hits.match(line) -+ if match: -+ unit = "qpu1." + str(qpu_op_no) -+ if not unit in l2total: -+ l2total[unit] = 0 -+ l2hits[unit] = 0 -+ l2total[unit] += int(match.group(3)) -+ if match.group(2) == "hits": -+ l2hits[unit] += int(match.group(3)) -+ -+ -+ if not time0: -+ print "No v3d profile records found" -+ else: -+ tlogged = time - time0 -+ -+ print "Logged time:", tlogged, " Op count:", op_count -+ for unit in sorted(ttotal): -+ print b'%6s: %10.3f %7.3f%%' % (unit, ttotal[unit], ttotal[unit] * 100.0 / tlogged) -+ print -+ for unit in sorted(qctotal): -+ if not unit in qtstotal: -+ qtstotal[unit] = 0; -+ print b'%6s: Qcycles: %10d, TMU stall: %10d (%7.3f%%)' % (unit, qctotal[unit], qtstotal[unit], (qtstotal[unit] * 100.0)/qctotal[unit]) -+ if unit in l2total: -+ print b' L2Total: %10d, hits: %10d (%7.3f%%)' % (l2total[unit], l2hits[unit], (l2hits[unit] * 100.0)/l2total[unit]) -+ -+ -+ -+if __name__ == '__main__': -+ argp = argparse.ArgumentParser( -+ formatter_class=argparse.RawDescriptionHelpFormatter, -+ description="QPU/VPU perf summary from VC logging", -+ epilog = """ -+Will also summarise TMU stalls if logging requests set in qpu noflush param -+in the profiled code. -+ -+Example use: -+ vcgencmd set_logging level=0xc0 -+ -+ sudo vcdbg log msg >& t.log -+ v3dusage.py t.log -+""") -+ -+ argp.add_argument("logfile") -+ args = argp.parse_args() -+ -+ do_logparse(args.logfile) -+ - -From f3eaadb27a5bc6db07d33ce0814d796e8cee623e Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 27 Apr 2021 11:27:39 +0100 -Subject: [PATCH 002/151] Add sand pix fmts & conversion fns - ---- - configure | 3 + - libavutil/Makefile | 3 + - libavutil/arm/Makefile | 1 + - libavutil/arm/rpi_sand_neon.S | 768 ++++++++++++++++++++++++++++++++++ - libavutil/arm/rpi_sand_neon.h | 99 +++++ - libavutil/pixdesc.c | 44 ++ - libavutil/pixfmt.h | 6 + - libavutil/rpi_sand_fn_pw.h | 227 ++++++++++ - libavutil/rpi_sand_fns.c | 353 ++++++++++++++++ - libavutil/rpi_sand_fns.h | 183 ++++++++ - 10 files changed, 1687 insertions(+) - create mode 100644 libavutil/arm/rpi_sand_neon.S - create mode 100644 libavutil/arm/rpi_sand_neon.h - create mode 100644 libavutil/rpi_sand_fn_pw.h - create mode 100644 libavutil/rpi_sand_fns.c - create mode 100644 libavutil/rpi_sand_fns.h - -diff --git a/configure b/configure -index b6616f00b6..27112ced58 100755 ---- a/configure -+++ b/configure -@@ -344,6 +344,7 @@ External library support: - --enable-libvpl enable Intel oneVPL code via libvpl if libmfx is not used [no] - --enable-libnpp enable Nvidia Performance Primitives-based code [no] - --enable-mmal enable Broadcom Multi-Media Abstraction Layer (Raspberry Pi) via MMAL [no] -+ --enable-sand enable sand video formats [rpi] - --disable-nvdec disable Nvidia video decoding acceleration (via hwaccel) [autodetect] - --disable-nvenc disable Nvidia video encoding code [autodetect] - --enable-omx enable OpenMAX IL code [no] -@@ -1930,6 +1931,7 @@ FEATURE_LIST=" - omx_rpi - runtime_cpudetect - safe_bitstream_reader -+ sand - shared - small - static -@@ -2495,6 +2497,7 @@ CONFIG_EXTRA=" - rtpdec - rtpenc_chain - rv34dsp -+ sand - scene_sad - sinewin - snappy -diff --git a/libavutil/Makefile b/libavutil/Makefile -index dc9012f9a8..e33f5db099 100644 ---- a/libavutil/Makefile -+++ b/libavutil/Makefile -@@ -73,6 +73,7 @@ HEADERS = adler32.h \ - rational.h \ - replaygain.h \ - ripemd.h \ -+ rpi_sand_fns.h \ - samplefmt.h \ - sha.h \ - sha512.h \ -@@ -192,6 +193,7 @@ OBJS-$(CONFIG_MACOS_KPERF) += macos_kperf.o - OBJS-$(CONFIG_MEDIACODEC) += hwcontext_mediacodec.o - OBJS-$(CONFIG_OPENCL) += hwcontext_opencl.o - OBJS-$(CONFIG_QSV) += hwcontext_qsv.o -+OBJS-$(CONFIG_SAND) += rpi_sand_fns.o - OBJS-$(CONFIG_VAAPI) += hwcontext_vaapi.o - OBJS-$(CONFIG_VIDEOTOOLBOX) += hwcontext_videotoolbox.o - OBJS-$(CONFIG_VDPAU) += hwcontext_vdpau.o -@@ -212,6 +214,7 @@ SKIPHEADERS-$(CONFIG_D3D11VA) += hwcontext_d3d11va.h - SKIPHEADERS-$(CONFIG_DXVA2) += hwcontext_dxva2.h - SKIPHEADERS-$(CONFIG_QSV) += hwcontext_qsv.h - SKIPHEADERS-$(CONFIG_OPENCL) += hwcontext_opencl.h -+SKIPHEADERS-$(CONFIG-RPI) += rpi_sand_fn_pw.h - SKIPHEADERS-$(CONFIG_VAAPI) += hwcontext_vaapi.h - SKIPHEADERS-$(CONFIG_VIDEOTOOLBOX) += hwcontext_videotoolbox.h - SKIPHEADERS-$(CONFIG_VDPAU) += hwcontext_vdpau.h -diff --git a/libavutil/arm/Makefile b/libavutil/arm/Makefile -index 5da44b0542..b74b7c4e2f 100644 ---- a/libavutil/arm/Makefile -+++ b/libavutil/arm/Makefile -@@ -6,3 +6,4 @@ VFP-OBJS += arm/float_dsp_init_vfp.o \ - - NEON-OBJS += arm/float_dsp_init_neon.o \ - arm/float_dsp_neon.o \ -+ arm/rpi_sand_neon.o \ -diff --git a/libavutil/arm/rpi_sand_neon.S b/libavutil/arm/rpi_sand_neon.S -new file mode 100644 -index 0000000000..80890fe985 ---- /dev/null -+++ b/libavutil/arm/rpi_sand_neon.S -@@ -0,0 +1,768 @@ -+/* -+Copyright (c) 2018 Raspberry Pi (Trading) Ltd. -+All rights reserved. -+ -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are met: -+ * Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ * Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in the -+ documentation and/or other materials provided with the distribution. -+ * Neither the name of the copyright holder nor the -+ names of its contributors may be used to endorse or promote products -+ derived from this software without specific prior written permission. -+ -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY -+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ -+Authors: John Cox -+*/ -+ -+#include "libavutil/arm/asm.S" -+ -+ -+@ General notes: -+@ Having done some timing on this in sand8->y8 (Pi4) -+@ vst1 (680fps) is a bit faster than vstm (660fps) -+@ vldm (680fps) is noticably faster than vld1 (480fps) -+@ (or it might be that a mix is what is required) -+@ -+@ At least on a Pi4 it is no more expensive to have a single auto-inc register -+@ for dest address than it is to have 2 used alternately (On Pi3 Ben asserted -+@ the latter was better) -+@ -+@ vstm will bus error on unaligned access (so will vldm), vst1 is safe unless -+@ the memory is uncached. -+@ As these are Sand -> planar we can assume that src is going to be aligned but -+@ it is possible that dest isn't (converting to .yuv or other packed format). -+@ Luckily vst1 is faster than vstm :-) so all is well -+@ vst1 has alignment requirements of el size so maybe splitting vst1.32 into 4 -+@ .8 stores would let us do non-word aligned stores into uncached but it -+@ probably isn't worth it. -+ -+ -+ -+ -+@ void ff_rpi_sand128b_stripe_to_8_10( -+@ uint8_t * dest, // [r0] -+@ const uint8_t * src1, // [r1] -+@ const uint8_t * src2, // [r2] -+@ unsigned int lines); // [r3] -+ -+.macro stripe2_to_8, bit_depth -+ vpush {q4-q7} -+1: -+ vldm r1!, {q0-q7} -+ subs r3, #1 -+ vldm r2!, {q8-q15} -+ vqrshrn.u16 d0, q0, #\bit_depth - 8 -+ vqrshrn.u16 d1, q1, #\bit_depth - 8 -+ vqrshrn.u16 d2, q2, #\bit_depth - 8 -+ vqrshrn.u16 d3, q3, #\bit_depth - 8 -+ vqrshrn.u16 d4, q4, #\bit_depth - 8 -+ vqrshrn.u16 d5, q5, #\bit_depth - 8 -+ vqrshrn.u16 d6, q6, #\bit_depth - 8 -+ vqrshrn.u16 d7, q7, #\bit_depth - 8 -+ vqrshrn.u16 d8, q8, #\bit_depth - 8 -+ vqrshrn.u16 d9, q9, #\bit_depth - 8 -+ vqrshrn.u16 d10, q10, #\bit_depth - 8 -+ vqrshrn.u16 d11, q11, #\bit_depth - 8 -+ vqrshrn.u16 d12, q12, #\bit_depth - 8 -+ vqrshrn.u16 d13, q13, #\bit_depth - 8 -+ vqrshrn.u16 d14, q14, #\bit_depth - 8 -+ vqrshrn.u16 d15, q15, #\bit_depth - 8 -+ vstm r0!, {q0-q7} -+ bne 1b -+ vpop {q4-q7} -+ bx lr -+.endm -+ -+function ff_rpi_sand128b_stripe_to_8_10, export=1 -+ stripe2_to_8 10 -+endfunc -+ -+@ void ff_rpi_sand8_lines_to_planar_y8( -+@ uint8_t * dest, // [r0] -+@ unsigned int dst_stride, // [r1] -+@ const uint8_t * src, // [r2] -+@ unsigned int src_stride1, // [r3] Ignored - assumed 128 -+@ unsigned int src_stride2, // [sp, #0] -> r3 -+@ unsigned int _x, // [sp, #4] Ignored - 0 -+@ unsigned int y, // [sp, #8] (r7 in prefix) -+@ unsigned int _w, // [sp, #12] -> r6 (cur r5) -+@ unsigned int h); // [sp, #16] -> r7 -+@ -+@ Assumes that we are starting on a stripe boundary and that overreading -+@ within the stripe is OK. However it does respect the dest size for writing -+ -+function ff_rpi_sand8_lines_to_planar_y8, export=1 -+ push {r4-r8, lr} @ +24 L -+ ldr r3, [sp, #24] -+ ldr r6, [sp, #36] -+ ldr r7, [sp, #32] @ y -+ lsl r3, #7 -+ sub r1, r6 -+ add r8, r2, r7, lsl #7 -+ ldr r7, [sp, #40] -+ -+10: -+ mov r2, r8 -+ add r4, r0, #24 -+ mov r5, r6 -+ mov lr, #0 -+1: -+ vldm r2, {q8-q15} -+ add r2, r3 -+ subs r5, #128 -+ blt 2f -+ vst1.8 {d16, d17, d18, d19}, [r0]! -+ vst1.8 {d20, d21, d22, d23}, [r0]! -+ vst1.8 {d24, d25, d26, d27}, [r0]! -+ vst1.8 {d28, d29, d30, d31}, [r0]! -+ bne 1b -+11: -+ subs r7, #1 -+ add r0, r1 -+ add r8, #128 -+ bne 10b -+ -+ pop {r4-r8, pc} -+ -+@ Partial final write -+2: -+ cmp r5, #64-128 -+ blt 1f -+ vst1.8 {d16, d17, d18, d19}, [r0]! -+ vst1.8 {d20, d21, d22, d23}, [r0]! -+ beq 11b -+ vmov q8, q12 -+ vmov q9, q13 -+ sub r5, #64 -+ vmov q10, q14 -+ vmov q11, q15 -+1: -+ cmp r5, #32-128 -+ blt 1f -+ vst1.8 {d16, d17, d18, d19}, [r0]! -+ beq 11b -+ vmov q8, q10 -+ sub r5, #32 -+ vmov q9, q11 -+1: -+ cmp r5, #16-128 -+ blt 1f -+ vst1.8 {d16, d17}, [r0]! -+ beq 11b -+ sub r5, #16 -+ vmov q8, q9 -+1: -+ cmp r5, #8-128 -+ blt 1f -+ vst1.8 {d16}, [r0]! -+ beq 11b -+ sub r5, #8 -+ vmov d16, d17 -+1: -+ cmp r5, #4-128 -+ blt 1f -+ vst1.32 {d16[0]}, [r0]! -+ beq 11b -+ sub r5, #4 -+ vshr.u64 d16, #32 -+1: -+ cmp r5, #2-128 -+ blt 1f -+ vst1.16 {d16[0]}, [r0]! -+ beq 11b -+ vst1.8 {d16[2]}, [r0]! -+ b 11b -+1: -+ vst1.8 {d16[0]}, [r0]! -+ b 11b -+endfunc -+ -+@ void ff_rpi_sand8_lines_to_planar_c8( -+@ uint8_t * dst_u, // [r0] -+@ unsigned int dst_stride_u, // [r1] -+@ uint8_t * dst_v, // [r2] -+@ unsigned int dst_stride_v, // [r3] -+@ const uint8_t * src, // [sp, #0] -> r4, r5 -+@ unsigned int stride1, // [sp, #4] 128 -+@ unsigned int stride2, // [sp, #8] -> r8 -+@ unsigned int _x, // [sp, #12] 0 -+@ unsigned int y, // [sp, #16] (r7 in prefix) -+@ unsigned int _w, // [sp, #20] -> r12, r6 -+@ unsigned int h); // [sp, #24] -> r7 -+@ -+@ Assumes that we are starting on a stripe boundary and that overreading -+@ within the stripe is OK. However it does respect the dest size for writing -+ -+function ff_rpi_sand8_lines_to_planar_c8, export=1 -+ push {r4-r8, lr} @ +24 -+ -+ ldr r5, [sp, #24] -+ ldr r8, [sp, #32] -+ ldr r7, [sp, #40] -+ ldr r6, [sp, #44] -+ lsl r8, #7 -+ add r5, r5, r7, lsl #7 -+ sub r1, r1, r6 -+ sub r3, r3, r6 -+ ldr r7, [sp, #48] -+ vpush {q4-q7} -+ -+10: -+ mov r4, r5 -+ mov r12, r6 -+1: -+ subs r12, #64 -+ vldm r4, {q0-q7} -+ add r4, r8 -+ it gt -+ vldmgt r4, {q8-q15} -+ add r4, r8 -+ -+ vuzp.8 q0, q1 -+ vuzp.8 q2, q3 -+ vuzp.8 q4, q5 -+ vuzp.8 q6, q7 -+ -+ vuzp.8 q8, q9 -+ vuzp.8 q10, q11 -+ vuzp.8 q12, q13 -+ vuzp.8 q14, q15 -+ subs r12, #64 -+ -+ @ Rearrange regs so we can use vst1 with 4 regs -+ vswp q1, q2 -+ vswp q5, q6 -+ vswp q9, q10 -+ vswp q13, q14 -+ blt 2f -+ -+ vst1.8 {d0, d1, d2, d3 }, [r0]! -+ vst1.8 {d8, d9, d10, d11}, [r0]! -+ vst1.8 {d16, d17, d18, d19}, [r0]! -+ vst1.8 {d24, d25, d26, d27}, [r0]! -+ -+ vst1.8 {d4, d5, d6, d7 }, [r2]! -+ vst1.8 {d12, d13, d14, d15}, [r2]! -+ vst1.8 {d20, d21, d22, d23}, [r2]! -+ vst1.8 {d28, d29, d30, d31}, [r2]! -+ bne 1b -+11: -+ subs r7, #1 -+ add r5, #128 -+ add r0, r1 -+ add r2, r3 -+ bne 10b -+ vpop {q4-q7} -+ pop {r4-r8,pc} -+ -+2: -+ cmp r12, #64-128 -+ blt 1f -+ vst1.8 {d0, d1, d2, d3 }, [r0]! -+ vst1.8 {d8, d9, d10, d11}, [r0]! -+ vst1.8 {d4, d5, d6, d7 }, [r2]! -+ vst1.8 {d12, d13, d14, d15}, [r2]! -+ beq 11b -+ sub r12, #64 -+ vmov q0, q8 -+ vmov q1, q9 -+ vmov q2, q10 -+ vmov q3, q11 -+ vmov q4, q12 -+ vmov q5, q13 -+ vmov q6, q14 -+ vmov q7, q15 -+1: -+ cmp r12, #32-128 -+ blt 1f -+ vst1.8 {d0, d1, d2, d3 }, [r0]! -+ vst1.8 {d4, d5, d6, d7 }, [r2]! -+ beq 11b -+ sub r12, #32 -+ vmov q0, q4 -+ vmov q1, q5 -+ vmov q2, q6 -+ vmov q3, q7 -+1: -+ cmp r12, #16-128 -+ blt 1f -+ vst1.8 {d0, d1 }, [r0]! -+ vst1.8 {d4, d5 }, [r2]! -+ beq 11b -+ sub r12, #16 -+ vmov q0, q1 -+ vmov q2, q3 -+1: -+ cmp r12, #8-128 -+ blt 1f -+ vst1.8 {d0}, [r0]! -+ vst1.8 {d4}, [r2]! -+ beq 11b -+ sub r12, #8 -+ vmov d0, d1 -+ vmov d4, d5 -+1: -+ cmp r12, #4-128 -+ blt 1f -+ vst1.32 {d0[0]}, [r0]! -+ vst1.32 {d4[0]}, [r2]! -+ beq 11b -+ sub r12, #4 -+ vmov s0, s1 -+ vmov s8, s9 -+1: -+ cmp r12, #2-128 -+ blt 1f -+ vst1.16 {d0[0]}, [r0]! -+ vst1.16 {d4[0]}, [r2]! -+ beq 11b -+ vst1.8 {d0[2]}, [r0]! -+ vst1.8 {d4[2]}, [r2]! -+ b 11b -+1: -+ vst1.8 {d0[0]}, [r0]! -+ vst1.8 {d4[0]}, [r2]! -+ b 11b -+endfunc -+ -+ -+ -+@ void ff_rpi_sand30_lines_to_planar_y16( -+@ uint8_t * dest, // [r0] -+@ unsigned int dst_stride, // [r1] -+@ const uint8_t * src, // [r2] -+@ unsigned int src_stride1, // [r3] Ignored - assumed 128 -+@ unsigned int src_stride2, // [sp, #0] -> r3 -+@ unsigned int _x, // [sp, #4] Ignored - 0 -+@ unsigned int y, // [sp, #8] (r7 in prefix) -+@ unsigned int _w, // [sp, #12] -> r6 (cur r5) -+@ unsigned int h); // [sp, #16] -> r7 -+@ -+@ Assumes that we are starting on a stripe boundary and that overreading -+@ within the stripe is OK. However it does respect the dest size for writing -+ -+function ff_rpi_sand30_lines_to_planar_y16, export=1 -+ push {r4-r8, lr} @ +24 -+ ldr r3, [sp, #24] -+ ldr r6, [sp, #36] -+ ldr r7, [sp, #32] @ y -+ mov r12, #48 -+ vmov.u16 q15, #0x3ff -+ sub r3, #1 -+ lsl r3, #7 -+ sub r1, r1, r6, lsl #1 -+ add r8, r2, r7, lsl #7 -+ ldr r7, [sp, #40] -+ -+10: -+ mov r2, r8 -+ add r4, r0, #24 -+ mov r5, r6 -+ mov lr, #0 -+1: -+ vldm r2!, {q10-q13} -+ add lr, #64 -+ -+ vshr.u32 q14, q10, #20 @ Cannot vshrn.u32 #20! -+ ands lr, #127 -+ vshrn.u32 d2, q10, #10 -+ vmovn.u32 d0, q10 -+ vmovn.u32 d4, q14 -+ -+ vshr.u32 q14, q11, #20 -+ it eq -+ addeq r2, r3 -+ vshrn.u32 d3, q11, #10 -+ vmovn.u32 d1, q11 -+ vmovn.u32 d5, q14 -+ -+ subs r5, #48 -+ vand q0, q15 -+ vand q1, q15 -+ vand q2, q15 -+ -+ vshr.u32 q14, q12, #20 -+ vshrn.u32 d18, q12, #10 -+ vmovn.u32 d16, q12 -+ vmovn.u32 d20, q14 -+ -+ vshr.u32 q14, q13, #20 -+ vshrn.u32 d19, q13, #10 -+ vmovn.u32 d17, q13 -+ vmovn.u32 d21, q14 -+ -+ vand q8, q15 -+ vand q9, q15 -+ vand q10, q15 -+ blt 2f -+ -+ vst3.16 {d0, d2, d4}, [r0], r12 -+ vst3.16 {d1, d3, d5}, [r4], r12 -+ vst3.16 {d16, d18, d20}, [r0], r12 -+ vst3.16 {d17, d19, d21}, [r4], r12 -+ -+ bne 1b -+ -+11: -+ subs r7, #1 -+ add r0, r1 -+ add r8, #128 -+ bne 10b -+ -+ pop {r4-r8, pc} -+ -+@ Partial final write -+2: -+ cmp r5, #24-48 -+ blt 1f -+ vst3.16 {d0, d2, d4}, [r0], r12 -+ vst3.16 {d1, d3, d5}, [r4] -+ beq 11b -+ vmov q0, q8 -+ sub r5, #24 -+ vmov q1, q9 -+ vmov q2, q10 -+1: -+ cmp r5, #12-48 -+ blt 1f -+ vst3.16 {d0, d2, d4}, [r0]! -+ beq 11b -+ vmov d0, d1 -+ sub r5, #12 -+ vmov d2, d3 -+ vmov d4, d5 -+1: -+ cmp r5, #6-48 -+ add r4, r0, #6 @ avoid [r0]! on sequential instructions -+ blt 1f -+ vst3.16 {d0[0], d2[0], d4[0]}, [r0] -+ vst3.16 {d0[1], d2[1], d4[1]}, [r4] -+ add r0, #12 -+ beq 11b -+ vmov s0, s1 -+ sub r5, #6 -+ vmov s4, s5 -+ vmov s8, s9 -+1: -+ cmp r5, #3-48 -+ blt 1f -+ vst3.16 {d0[0], d2[0], d4[0]}, [r0]! -+ beq 11b -+ sub r5, #3 -+ vshr.u32 d0, #16 -+ vshr.u32 d2, #16 -+1: -+ cmp r5, #2-48 -+ blt 1f -+ vst2.16 {d0[0], d2[0]}, [r0]! -+ b 11b -+1: -+ vst1.16 {d0[0]}, [r0]! -+ b 11b -+ -+endfunc -+ -+ -+@ void ff_rpi_sand30_lines_to_planar_c16( -+@ uint8_t * dst_u, // [r0] -+@ unsigned int dst_stride_u, // [r1] -+@ uint8_t * dst_v, // [r2] -+@ unsigned int dst_stride_v, // [r3] -+@ const uint8_t * src, // [sp, #0] -> r4, r5 -+@ unsigned int stride1, // [sp, #4] 128 -+@ unsigned int stride2, // [sp, #8] -> r8 -+@ unsigned int _x, // [sp, #12] 0 -+@ unsigned int y, // [sp, #16] (r7 in prefix) -+@ unsigned int _w, // [sp, #20] -> r6, r9 -+@ unsigned int h); // [sp, #24] -> r7 -+@ -+@ Assumes that we are starting on a stripe boundary and that overreading -+@ within the stripe is OK. However it does respect the dest size for writing -+ -+function ff_rpi_sand30_lines_to_planar_c16, export=1 -+ push {r4-r10, lr} @ +32 -+ ldr r5, [sp, #32] -+ ldr r8, [sp, #40] -+ ldr r7, [sp, #48] -+ ldr r9, [sp, #52] -+ mov r12, #48 -+ vmov.u16 q15, #0x3ff -+ sub r8, #1 -+ lsl r8, #7 -+ add r5, r5, r7, lsl #7 -+ sub r1, r1, r9, lsl #1 -+ sub r3, r3, r9, lsl #1 -+ ldr r7, [sp, #56] -+10: -+ mov lr, #0 -+ mov r4, r5 -+ mov r6, r9 -+1: -+ vldm r4!, {q0-q3} -+ add lr, #64 -+ -+ @ N.B. unpack [0,1,2] -> (reg order) 1, 0, 2 -+ vshr.u32 q14, q0, #20 -+ vshrn.u32 d16, q0, #10 -+ vmovn.u32 d18, q0 -+ ands lr, #127 -+ vmovn.u32 d20, q14 -+ -+ vshr.u32 q14, q1, #20 -+ vshrn.u32 d17, q1, #10 -+ vmovn.u32 d19, q1 -+ vmovn.u32 d21, q14 -+ -+ vshr.u32 q14, q2, #20 -+ vshrn.u32 d22, q2, #10 -+ vmovn.u32 d24, q2 -+ vmovn.u32 d26, q14 -+ -+ vshr.u32 q14, q3, #20 -+ vshrn.u32 d23, q3, #10 -+ vmovn.u32 d25, q3 -+ add r10, r0, #24 -+ vmovn.u32 d27, q14 -+ -+ it eq -+ addeq r4, r8 -+ vuzp.16 q8, q11 -+ vuzp.16 q9, q12 -+ vuzp.16 q10, q13 -+ -+ @ q8 V0, V3,.. -> q0 -+ @ q9 U0, U3... -+ @ q10 U1, U4... -+ @ q11 U2, U5,.. -+ @ q12 V1, V4,.. -> q1 -+ @ q13 V2, V5,.. -> q2 -+ -+ subs r6, #24 -+ vand q11, q15 -+ vand q9, q15 -+ vand q10, q15 -+ vand q0, q8, q15 -+ vand q1, q12, q15 -+ vand q2, q13, q15 -+ -+ blt 2f -+ -+ vst3.16 {d18, d20, d22}, [r0], r12 -+ vst3.16 {d19, d21, d23}, [r10] -+ add r10, r2, #24 -+ vst3.16 {d0, d2, d4}, [r2], r12 -+ vst3.16 {d1, d3, d5}, [r10] -+ -+ bne 1b -+ -+11: -+ subs r7, #1 -+ add r5, #128 -+ add r0, r1 -+ add r2, r3 -+ bne 10b -+ -+ pop {r4-r10, pc} -+ -+@ Partial final write -+2: -+ cmp r6, #-12 -+ blt 1f -+ vst3.16 {d18, d20, d22}, [r0]! -+ vst3.16 {d0, d2, d4}, [r2]! -+ beq 11b -+ vmov d18, d19 -+ vmov d20, d21 -+ vmov d22, d23 -+ sub r6, #12 -+ vmov d0, d1 -+ vmov d2, d3 -+ vmov d4, d5 -+1: -+ cmp r6, #-18 -+ @ Rezip here as it makes the remaining tail handling easier -+ vzip.16 d0, d18 -+ vzip.16 d2, d20 -+ vzip.16 d4, d22 -+ blt 1f -+ vst3.16 {d0[1], d2[1], d4[1]}, [r0]! -+ vst3.16 {d0[0], d2[0], d4[0]}, [r2]! -+ vst3.16 {d0[3], d2[3], d4[3]}, [r0]! -+ vst3.16 {d0[2], d2[2], d4[2]}, [r2]! -+ beq 11b -+ vmov d0, d18 -+ vmov d2, d20 -+ sub r6, #6 -+ vmov d4, d22 -+1: -+ cmp r6, #-21 -+ blt 1f -+ vst3.16 {d0[1], d2[1], d4[1]}, [r0]! -+ vst3.16 {d0[0], d2[0], d4[0]}, [r2]! -+ beq 11b -+ vmov s4, s5 -+ sub r6, #3 -+ vmov s0, s1 -+1: -+ cmp r6, #-22 -+ blt 1f -+ vst2.16 {d0[1], d2[1]}, [r0]! -+ vst2.16 {d0[0], d2[0]}, [r2]! -+ b 11b -+1: -+ vst1.16 {d0[1]}, [r0]! -+ vst1.16 {d0[0]}, [r2]! -+ b 11b -+ -+endfunc -+ -+@ void ff_rpi_sand30_lines_to_planar_p010( -+@ uint8_t * dest, // [r0] -+@ unsigned int dst_stride, // [r1] -+@ const uint8_t * src, // [r2] -+@ unsigned int src_stride1, // [r3] Ignored - assumed 128 -+@ unsigned int src_stride2, // [sp, #0] -> r3 -+@ unsigned int _x, // [sp, #4] Ignored - 0 -+@ unsigned int y, // [sp, #8] (r7 in prefix) -+@ unsigned int _w, // [sp, #12] -> r6 (cur r5) -+@ unsigned int h); // [sp, #16] -> r7 -+@ -+@ Assumes that we are starting on a stripe boundary and that overreading -+@ within the stripe is OK. However it does respect the dest size for writing -+ -+function ff_rpi_sand30_lines_to_planar_p010, export=1 -+ push {r4-r8, lr} @ +24 -+ ldr r3, [sp, #24] -+ ldr r6, [sp, #36] -+ ldr r7, [sp, #32] @ y -+ mov r12, #48 -+ vmov.u16 q15, #0xffc0 -+ sub r3, #1 -+ lsl r3, #7 -+ sub r1, r1, r6, lsl #1 -+ add r8, r2, r7, lsl #7 -+ ldr r7, [sp, #40] -+ -+10: -+ mov r2, r8 -+ add r4, r0, #24 -+ mov r5, r6 -+ mov lr, #0 -+1: -+ vldm r2!, {q10-q13} -+ add lr, #64 -+ -+ vshl.u32 q14, q10, #6 -+ ands lr, #127 -+ vshrn.u32 d4, q10, #14 -+ vshrn.u32 d2, q10, #4 -+ vmovn.u32 d0, q14 -+ -+ vshl.u32 q14, q11, #6 -+ it eq -+ addeq r2, r3 -+ vshrn.u32 d5, q11, #14 -+ vshrn.u32 d3, q11, #4 -+ vmovn.u32 d1, q14 -+ -+ subs r5, #48 -+ vand q2, q15 -+ vand q1, q15 -+ vand q0, q15 -+ -+ vshl.u32 q14, q12, #6 -+ vshrn.u32 d20, q12, #14 -+ vshrn.u32 d18, q12, #4 -+ vmovn.u32 d16, q14 -+ -+ vshl.u32 q14, q13, #6 -+ vshrn.u32 d21, q13, #14 -+ vshrn.u32 d19, q13, #4 -+ vmovn.u32 d17, q14 -+ -+ vand q10, q15 -+ vand q9, q15 -+ vand q8, q15 -+ blt 2f -+ -+ vst3.16 {d0, d2, d4}, [r0], r12 -+ vst3.16 {d1, d3, d5}, [r4], r12 -+ vst3.16 {d16, d18, d20}, [r0], r12 -+ vst3.16 {d17, d19, d21}, [r4], r12 -+ -+ bne 1b -+ -+11: -+ subs r7, #1 -+ add r0, r1 -+ add r8, #128 -+ bne 10b -+ -+ pop {r4-r8, pc} -+ -+@ Partial final write -+2: -+ cmp r5, #24-48 -+ blt 1f -+ vst3.16 {d0, d2, d4}, [r0], r12 -+ vst3.16 {d1, d3, d5}, [r4] -+ beq 11b -+ vmov q0, q8 -+ sub r5, #24 -+ vmov q1, q9 -+ vmov q2, q10 -+1: -+ cmp r5, #12-48 -+ blt 1f -+ vst3.16 {d0, d2, d4}, [r0]! -+ beq 11b -+ vmov d0, d1 -+ sub r5, #12 -+ vmov d2, d3 -+ vmov d4, d5 -+1: -+ cmp r5, #6-48 -+ add r4, r0, #6 @ avoid [r0]! on sequential instructions -+ blt 1f -+ vst3.16 {d0[0], d2[0], d4[0]}, [r0] -+ vst3.16 {d0[1], d2[1], d4[1]}, [r4] -+ add r0, #12 -+ beq 11b -+ vmov s0, s1 -+ sub r5, #6 -+ vmov s4, s5 -+ vmov s8, s9 -+1: -+ cmp r5, #3-48 -+ blt 1f -+ vst3.16 {d0[0], d2[0], d4[0]}, [r0]! -+ beq 11b -+ sub r5, #3 -+ vshr.u32 d0, #16 -+ vshr.u32 d2, #16 -+1: -+ cmp r5, #2-48 -+ blt 1f -+ vst2.16 {d0[0], d2[0]}, [r0]! -+ b 11b -+1: -+ vst1.16 {d0[0]}, [r0]! -+ b 11b -+ -+endfunc -+ -+ -+ -diff --git a/libavutil/arm/rpi_sand_neon.h b/libavutil/arm/rpi_sand_neon.h -new file mode 100644 -index 0000000000..447f367bea ---- /dev/null -+++ b/libavutil/arm/rpi_sand_neon.h -@@ -0,0 +1,99 @@ -+/* -+Copyright (c) 2020 Raspberry Pi (Trading) Ltd. -+All rights reserved. -+ -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are met: -+ * Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ * Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in the -+ documentation and/or other materials provided with the distribution. -+ * Neither the name of the copyright holder nor the -+ names of its contributors may be used to endorse or promote products -+ derived from this software without specific prior written permission. -+ -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY -+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ -+Authors: John Cox -+*/ -+ -+#ifndef AVUTIL_ARM_SAND_NEON_H -+#define AVUTIL_ARM_SAND_NEON_H -+ -+void ff_rpi_sand128b_stripe_to_8_10( -+ uint8_t * dest, // [r0] -+ const uint8_t * src1, // [r1] -+ const uint8_t * src2, // [r2] -+ unsigned int lines); // [r3] -+ -+void ff_rpi_sand8_lines_to_planar_y8( -+ uint8_t * dest, // [r0] -+ unsigned int dst_stride, // [r1] -+ const uint8_t * src, // [r2] -+ unsigned int src_stride1, // [r3] Ignored - assumed 128 -+ unsigned int src_stride2, // [sp, #0] -> r3 -+ unsigned int _x, // [sp, #4] Ignored - 0 -+ unsigned int y, // [sp, #8] (r7 in prefix) -+ unsigned int _w, // [sp, #12] -> r6 (cur r5) -+ unsigned int h); // [sp, #16] -> r7 -+ -+void ff_rpi_sand8_lines_to_planar_c8( -+ uint8_t * dst_u, // [r0] -+ unsigned int dst_stride_u, // [r1] -+ uint8_t * dst_v, // [r2] -+ unsigned int dst_stride_v, // [r3] -+ const uint8_t * src, // [sp, #0] -> r4, r5 -+ unsigned int stride1, // [sp, #4] 128 -+ unsigned int stride2, // [sp, #8] -> r8 -+ unsigned int _x, // [sp, #12] 0 -+ unsigned int y, // [sp, #16] (r7 in prefix) -+ unsigned int _w, // [sp, #20] -> r12, r6 -+ unsigned int h); // [sp, #24] -> r7 -+ -+void ff_rpi_sand30_lines_to_planar_y16( -+ uint8_t * dest, // [r0] -+ unsigned int dst_stride, // [r1] -+ const uint8_t * src, // [r2] -+ unsigned int src_stride1, // [r3] Ignored - assumed 128 -+ unsigned int src_stride2, // [sp, #0] -> r3 -+ unsigned int _x, // [sp, #4] Ignored - 0 -+ unsigned int y, // [sp, #8] (r7 in prefix) -+ unsigned int _w, // [sp, #12] -> r6 (cur r5) -+ unsigned int h); // [sp, #16] -> r7 -+ -+void ff_rpi_sand30_lines_to_planar_c16( -+ uint8_t * dst_u, // [r0] -+ unsigned int dst_stride_u, // [r1] -+ uint8_t * dst_v, // [r2] -+ unsigned int dst_stride_v, // [r3] -+ const uint8_t * src, // [sp, #0] -> r4, r5 -+ unsigned int stride1, // [sp, #4] 128 -+ unsigned int stride2, // [sp, #8] -> r8 -+ unsigned int _x, // [sp, #12] 0 -+ unsigned int y, // [sp, #16] (r7 in prefix) -+ unsigned int _w, // [sp, #20] -> r6, r9 -+ unsigned int h); // [sp, #24] -> r7 -+ -+void ff_rpi_sand30_lines_to_planar_p010( -+ uint8_t * dest, // [r0] -+ unsigned int dst_stride, // [r1] -+ const uint8_t * src, // [r2] -+ unsigned int src_stride1, // [r3] Ignored - assumed 128 -+ unsigned int src_stride2, // [sp, #0] -> r3 -+ unsigned int _x, // [sp, #4] Ignored - 0 -+ unsigned int y, // [sp, #8] (r7 in prefix) -+ unsigned int _w, // [sp, #12] -> r6 (cur r5) -+ unsigned int h); // [sp, #16] -> r7 -+ -+#endif // AVUTIL_ARM_SAND_NEON_H -+ -diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c -index 62a2ae08d9..cb73521ea7 100644 ---- a/libavutil/pixdesc.c -+++ b/libavutil/pixdesc.c -@@ -2717,6 +2717,50 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { - .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_FLOAT | - AV_PIX_FMT_FLAG_ALPHA, - }, -+ [AV_PIX_FMT_SAND128] = { -+ .name = "sand128", -+ .nb_components = 3, -+ .log2_chroma_w = 1, -+ .log2_chroma_h = 1, -+ .comp = { -+ { 0, 1, 0, 0, 8 }, /* Y */ -+ { 1, 2, 0, 0, 8 }, /* U */ -+ { 1, 2, 1, 0, 8 }, /* V */ -+ }, -+ .flags = 0, -+ }, -+ [AV_PIX_FMT_SAND64_10] = { -+ .name = "sand64_10", -+ .nb_components = 3, -+ .log2_chroma_w = 1, -+ .log2_chroma_h = 1, -+ .comp = { -+ { 0, 2, 0, 0, 10 }, /* Y */ -+ { 1, 4, 0, 0, 10 }, /* U */ -+ { 1, 4, 2, 0, 10 }, /* V */ -+ }, -+ .flags = 0, -+ }, -+ [AV_PIX_FMT_SAND64_16] = { -+ .name = "sand64_16", -+ .nb_components = 3, -+ .log2_chroma_w = 1, -+ .log2_chroma_h = 1, -+ .comp = { -+ { 0, 2, 0, 0, 16 }, /* Y */ -+ { 1, 4, 0, 0, 16 }, /* U */ -+ { 1, 4, 2, 0, 16 }, /* V */ -+ }, -+ .flags = 0, -+ }, -+ [AV_PIX_FMT_RPI4_8] = { -+ .name = "rpi4_8", -+ .flags = AV_PIX_FMT_FLAG_HWACCEL, -+ }, -+ [AV_PIX_FMT_RPI4_10] = { -+ .name = "rpi4_10", -+ .flags = AV_PIX_FMT_FLAG_HWACCEL, -+ }, - }; - - static const char * const color_range_names[] = { -diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h -index 37c2c79e01..22f70007c3 100644 ---- a/libavutil/pixfmt.h -+++ b/libavutil/pixfmt.h -@@ -377,6 +377,12 @@ enum AVPixelFormat { - - AV_PIX_FMT_Y210BE, ///< packed YUV 4:2:2 like YUYV422, 20bpp, data in the high bits, big-endian - AV_PIX_FMT_Y210LE, ///< packed YUV 4:2:2 like YUYV422, 20bpp, data in the high bits, little-endian -+// RPI - not on ifdef so can be got at by calling progs -+ AV_PIX_FMT_SAND128, ///< 4:2:0 8-bit 128x*Y stripe, 64x*UV stripe, then next x stripe, mysterious padding -+ AV_PIX_FMT_SAND64_10, ///< 4:2:0 10-bit 64x*Y stripe, 32x*UV stripe, then next x stripe, mysterious padding -+ AV_PIX_FMT_SAND64_16, ///< 4:2:0 16-bit 64x*Y stripe, 32x*UV stripe, then next x stripe, mysterious padding -+ AV_PIX_FMT_RPI4_8, -+ AV_PIX_FMT_RPI4_10, - - AV_PIX_FMT_X2RGB10LE, ///< packed RGB 10:10:10, 30bpp, (msb)2X 10R 10G 10B(lsb), little-endian, X=unused/undefined - AV_PIX_FMT_X2RGB10BE, ///< packed RGB 10:10:10, 30bpp, (msb)2X 10R 10G 10B(lsb), big-endian, X=unused/undefined -diff --git a/libavutil/rpi_sand_fn_pw.h b/libavutil/rpi_sand_fn_pw.h -new file mode 100644 -index 0000000000..0324f6826d ---- /dev/null -+++ b/libavutil/rpi_sand_fn_pw.h -@@ -0,0 +1,227 @@ -+/* -+Copyright (c) 2018 Raspberry Pi (Trading) Ltd. -+All rights reserved. -+ -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are met: -+ * Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ * Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in the -+ documentation and/or other materials provided with the distribution. -+ * Neither the name of the copyright holder nor the -+ names of its contributors may be used to endorse or promote products -+ derived from this software without specific prior written permission. -+ -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY -+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ -+Authors: John Cox -+*/ -+ -+// * Included twice from rpi_sand_fn with different PW -+ -+#define STRCAT(x,y) x##y -+ -+#if PW == 1 -+#define pixel uint8_t -+#define FUNC(f) STRCAT(f, 8) -+#elif PW == 2 -+#define pixel uint16_t -+#define FUNC(f) STRCAT(f, 16) -+#else -+#error Unexpected PW -+#endif -+ -+// Fetches a single patch - offscreen fixup not done here -+// w <= stride1 -+// unclipped -+void FUNC(av_rpi_sand_to_planar_y)(uint8_t * dst, const unsigned int dst_stride, -+ const uint8_t * src, -+ unsigned int stride1, unsigned int stride2, -+ unsigned int _x, unsigned int y, -+ unsigned int _w, unsigned int h) -+{ -+ const unsigned int x = _x; -+ const unsigned int w = _w; -+ const unsigned int mask = stride1 - 1; -+ -+#if PW == 1 && (HAVE_SAND_ASM || HAVE_SAND_ASM64) -+ if (_x == 0) { -+ ff_rpi_sand8_lines_to_planar_y8(dst, dst_stride, -+ src, stride1, stride2, _x, y, _w, h); -+ return; -+ } -+#endif -+ -+ if ((x & ~mask) == ((x + w) & ~mask)) { -+ // All in one sand stripe -+ const uint8_t * p = src + (x & mask) + y * stride1 + (x & ~mask) * stride2; -+ for (unsigned int i = 0; i != h; ++i, dst += dst_stride, p += stride1) { -+ memcpy(dst, p, w); -+ } -+ } -+ else -+ { -+ // Two+ stripe -+ const unsigned int sstride = stride1 * stride2; -+ const uint8_t * p1 = src + (x & mask) + y * stride1 + (x & ~mask) * stride2; -+ const uint8_t * p2 = p1 + sstride - (x & mask); -+ const unsigned int w1 = stride1 - (x & mask); -+ const unsigned int w3 = (x + w) & mask; -+ const unsigned int w2 = w - (w1 + w3); -+ -+ for (unsigned int i = 0; i != h; ++i, dst += dst_stride, p1 += stride1, p2 += stride1) { -+ unsigned int j; -+ const uint8_t * p = p2; -+ uint8_t * d = dst; -+ memcpy(d, p1, w1); -+ d += w1; -+ for (j = 0; j < w2; j += stride1, d += stride1, p += sstride) { -+ memcpy(d, p, stride1); -+ } -+ memcpy(d, p, w3); -+ } -+ } -+} -+ -+// x & w in bytes but not of interleave (i.e. offset = x*2 for U&V) -+ -+void FUNC(av_rpi_sand_to_planar_c)(uint8_t * dst_u, const unsigned int dst_stride_u, -+ uint8_t * dst_v, const unsigned int dst_stride_v, -+ const uint8_t * src, -+ unsigned int stride1, unsigned int stride2, -+ unsigned int _x, unsigned int y, -+ unsigned int _w, unsigned int h) -+{ -+ const unsigned int x = _x * 2; -+ const unsigned int w = _w * 2; -+ const unsigned int mask = stride1 - 1; -+ -+#if PW == 1 && (HAVE_SAND_ASM || HAVE_SAND_ASM64) -+ if (_x == 0) { -+ ff_rpi_sand8_lines_to_planar_c8(dst_u, dst_stride_u, dst_v, dst_stride_v, -+ src, stride1, stride2, _x, y, _w, h); -+ return; -+ } -+#endif -+ -+ if ((x & ~mask) == ((x + w) & ~mask)) { -+ // All in one sand stripe -+ const uint8_t * p1 = src + (x & mask) + y * stride1 + (x & ~mask) * stride2; -+ for (unsigned int i = 0; i != h; ++i, dst_u += dst_stride_u, dst_v += dst_stride_v, p1 += stride1) { -+ pixel * du = (pixel *)dst_u; -+ pixel * dv = (pixel *)dst_v; -+ const pixel * p = (const pixel *)p1; -+ for (unsigned int k = 0; k < w; k += 2 * PW) { -+ *du++ = *p++; -+ *dv++ = *p++; -+ } -+ } -+ } -+ else -+ { -+ // Two+ stripe -+ const unsigned int sstride = stride1 * stride2; -+ const unsigned int sstride_p = (sstride - stride1) / PW; -+ -+ const uint8_t * p1 = src + (x & mask) + y * stride1 + (x & ~mask) * stride2; -+ const uint8_t * p2 = p1 + sstride - (x & mask); -+ const unsigned int w1 = stride1 - (x & mask); -+ const unsigned int w3 = (x + w) & mask; -+ const unsigned int w2 = w - (w1 + w3); -+ -+ for (unsigned int i = 0; i != h; ++i, dst_u += dst_stride_u, dst_v += dst_stride_v, p1 += stride1, p2 += stride1) { -+ unsigned int j; -+ const pixel * p = (const pixel *)p1; -+ pixel * du = (pixel *)dst_u; -+ pixel * dv = (pixel *)dst_v; -+ for (unsigned int k = 0; k < w1; k += 2 * PW) { -+ *du++ = *p++; -+ *dv++ = *p++; -+ } -+ for (j = 0, p = (const pixel *)p2; j < w2; j += stride1, p += sstride_p) { -+ for (unsigned int k = 0; k < stride1; k += 2 * PW) { -+ *du++ = *p++; -+ *dv++ = *p++; -+ } -+ } -+ for (unsigned int k = 0; k < w3; k += 2 * PW) { -+ *du++ = *p++; -+ *dv++ = *p++; -+ } -+ } -+ } -+} -+ -+void FUNC(av_rpi_planar_to_sand_c)(uint8_t * dst_c, -+ unsigned int stride1, unsigned int stride2, -+ const uint8_t * src_u, const unsigned int src_stride_u, -+ const uint8_t * src_v, const unsigned int src_stride_v, -+ unsigned int _x, unsigned int y, -+ unsigned int _w, unsigned int h) -+{ -+ const unsigned int x = _x * 2; -+ const unsigned int w = _w * 2; -+ const unsigned int mask = stride1 - 1; -+ if ((x & ~mask) == ((x + w) & ~mask)) { -+ // All in one sand stripe -+ uint8_t * p1 = dst_c + (x & mask) + y * stride1 + (x & ~mask) * stride2; -+ for (unsigned int i = 0; i != h; ++i, src_u += src_stride_u, src_v += src_stride_v, p1 += stride1) { -+ const pixel * su = (const pixel *)src_u; -+ const pixel * sv = (const pixel *)src_v; -+ pixel * p = (pixel *)p1; -+ for (unsigned int k = 0; k < w; k += 2 * PW) { -+ *p++ = *su++; -+ *p++ = *sv++; -+ } -+ } -+ } -+ else -+ { -+ // Two+ stripe -+ const unsigned int sstride = stride1 * stride2; -+ const unsigned int sstride_p = (sstride - stride1) / PW; -+ -+ const uint8_t * p1 = dst_c + (x & mask) + y * stride1 + (x & ~mask) * stride2; -+ const uint8_t * p2 = p1 + sstride - (x & mask); -+ const unsigned int w1 = stride1 - (x & mask); -+ const unsigned int w3 = (x + w) & mask; -+ const unsigned int w2 = w - (w1 + w3); -+ -+ for (unsigned int i = 0; i != h; ++i, src_u += src_stride_u, src_v += src_stride_v, p1 += stride1, p2 += stride1) { -+ unsigned int j; -+ const pixel * su = (const pixel *)src_u; -+ const pixel * sv = (const pixel *)src_v; -+ pixel * p = (pixel *)p1; -+ for (unsigned int k = 0; k < w1; k += 2 * PW) { -+ *p++ = *su++; -+ *p++ = *sv++; -+ } -+ for (j = 0, p = (pixel *)p2; j < w2; j += stride1, p += sstride_p) { -+ for (unsigned int k = 0; k < stride1; k += 2 * PW) { -+ *p++ = *su++; -+ *p++ = *sv++; -+ } -+ } -+ for (unsigned int k = 0; k < w3; k += 2 * PW) { -+ *p++ = *su++; -+ *p++ = *sv++; -+ } -+ } -+ } -+} -+ -+ -+#undef pixel -+#undef STRCAT -+#undef FUNC -+ -diff --git a/libavutil/rpi_sand_fns.c b/libavutil/rpi_sand_fns.c -new file mode 100644 -index 0000000000..ed0261b02f ---- /dev/null -+++ b/libavutil/rpi_sand_fns.c -@@ -0,0 +1,353 @@ -+/* -+Copyright (c) 2018 Raspberry Pi (Trading) Ltd. -+All rights reserved. -+ -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are met: -+ * Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ * Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in the -+ documentation and/or other materials provided with the distribution. -+ * Neither the name of the copyright holder nor the -+ names of its contributors may be used to endorse or promote products -+ derived from this software without specific prior written permission. -+ -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY -+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ -+Authors: John Cox -+*/ -+ -+#include "config.h" -+#include -+#include -+#include "rpi_sand_fns.h" -+#include "avassert.h" -+#include "frame.h" -+ -+#if ARCH_ARM && HAVE_NEON -+#include "arm/rpi_sand_neon.h" -+#define HAVE_SAND_ASM 1 -+#else -+#define HAVE_SAND_ASM 0 -+#endif -+ -+#define PW 1 -+#include "rpi_sand_fn_pw.h" -+#undef PW -+ -+#define PW 2 -+#include "rpi_sand_fn_pw.h" -+#undef PW -+ -+#if 1 -+// Simple round -+static void cpy16_to_8(uint8_t * dst, const uint8_t * _src, unsigned int n, const unsigned int shr) -+{ -+ const unsigned int rnd = (1 << shr) >> 1; -+ const uint16_t * src = (const uint16_t *)_src; -+ -+ for (; n != 0; --n) { -+ *dst++ = (*src++ + rnd) >> shr; -+ } -+} -+#else -+// Dithered variation -+static void cpy16_to_8(uint8_t * dst, const uint8_t * _src, unsigned int n, const unsigned int shr) -+{ -+ unsigned int rnd = (1 << shr) >> 1; -+ const unsigned int mask = ((1 << shr) - 1); -+ const uint16_t * src = (const uint16_t *)_src; -+ -+ for (; n != 0; --n) { -+ rnd = *src++ + (rnd & mask); -+ *dst++ = rnd >> shr; -+ } -+} -+#endif -+ -+// Fetches a single patch - offscreen fixup not done here -+// w <= stride1 -+// unclipped -+// _x & _w in pixels, strides in bytes -+void av_rpi_sand30_to_planar_y16(uint8_t * dst, const unsigned int dst_stride, -+ const uint8_t * src, -+ unsigned int stride1, unsigned int stride2, -+ unsigned int _x, unsigned int y, -+ unsigned int _w, unsigned int h) -+{ -+ const unsigned int x0 = (_x / 3) * 4; // Byte offset of the word -+ const unsigned int xskip0 = _x - (x0 >> 2) * 3; -+ const unsigned int x1 = ((_x + _w) / 3) * 4; -+ const unsigned int xrem1 = _x + _w - (x1 >> 2) * 3; -+ const unsigned int mask = stride1 - 1; -+ const uint8_t * p0 = src + (x0 & mask) + y * stride1 + (x0 & ~mask) * stride2; -+ const unsigned int slice_inc = ((stride2 - 1) * stride1) >> 2; // RHS of a stripe to LHS of next in words -+ -+#if HAVE_SAND_ASM -+ if (_x == 0) { -+ ff_rpi_sand30_lines_to_planar_y16(dst, dst_stride, src, stride1, stride2, _x, y, _w, h); -+ return; -+ } -+#endif -+ -+ if (x0 == x1) { -+ // ******************* -+ // Partial single word xfer -+ return; -+ } -+ -+ for (unsigned int i = 0; i != h; ++i, dst += dst_stride, p0 += stride1) -+ { -+ unsigned int x = x0; -+ const uint32_t * p = (const uint32_t *)p0; -+ uint16_t * d = (uint16_t *)dst; -+ -+ if (xskip0 != 0) { -+ const uint32_t p3 = *p++; -+ -+ if (xskip0 == 1) -+ *d++ = (p3 >> 10) & 0x3ff; -+ *d++ = (p3 >> 20) & 0x3ff; -+ -+ if (((x += 4) & mask) == 0) -+ p += slice_inc; -+ } -+ -+ while (x != x1) { -+ const uint32_t p3 = *p++; -+ *d++ = p3 & 0x3ff; -+ *d++ = (p3 >> 10) & 0x3ff; -+ *d++ = (p3 >> 20) & 0x3ff; -+ -+ if (((x += 4) & mask) == 0) -+ p += slice_inc; -+ } -+ -+ if (xrem1 != 0) { -+ const uint32_t p3 = *p; -+ -+ *d++ = p3 & 0x3ff; -+ if (xrem1 == 2) -+ *d++ = (p3 >> 10) & 0x3ff; -+ } -+ } -+} -+ -+ -+void av_rpi_sand30_to_planar_c16(uint8_t * dst_u, const unsigned int dst_stride_u, -+ uint8_t * dst_v, const unsigned int dst_stride_v, -+ const uint8_t * src, -+ unsigned int stride1, unsigned int stride2, -+ unsigned int _x, unsigned int y, -+ unsigned int _w, unsigned int h) -+{ -+ const unsigned int x0 = (_x / 3) * 8; // Byte offset of the word -+ const unsigned int xskip0 = _x - (x0 >> 3) * 3; -+ const unsigned int x1 = ((_x + _w) / 3) * 8; -+ const unsigned int xrem1 = _x + _w - (x1 >> 3) * 3; -+ const unsigned int mask = stride1 - 1; -+ const uint8_t * p0 = src + (x0 & mask) + y * stride1 + (x0 & ~mask) * stride2; -+ const unsigned int slice_inc = ((stride2 - 1) * stride1) >> 2; // RHS of a stripe to LHS of next in words -+ -+#if HAVE_SAND_ASM -+ if (_x == 0) { -+ ff_rpi_sand30_lines_to_planar_c16(dst_u, dst_stride_u, dst_v, dst_stride_v, -+ src, stride1, stride2, _x, y, _w, h); -+ return; -+ } -+#endif -+ -+ if (x0 == x1) { -+ // ******************* -+ // Partial single word xfer -+ return; -+ } -+ -+ for (unsigned int i = 0; i != h; ++i, dst_u += dst_stride_u, dst_v += dst_stride_v, p0 += stride1) -+ { -+ unsigned int x = x0; -+ const uint32_t * p = (const uint32_t *)p0; -+ uint16_t * du = (uint16_t *)dst_u; -+ uint16_t * dv = (uint16_t *)dst_v; -+ -+ if (xskip0 != 0) { -+ const uint32_t p3a = *p++; -+ const uint32_t p3b = *p++; -+ -+ if (xskip0 == 1) -+ { -+ *du++ = (p3a >> 20) & 0x3ff; -+ *dv++ = (p3b >> 0) & 0x3ff; -+ } -+ *du++ = (p3b >> 10) & 0x3ff; -+ *dv++ = (p3b >> 20) & 0x3ff; -+ -+ if (((x += 8) & mask) == 0) -+ p += slice_inc; -+ } -+ -+ while (x != x1) { -+ const uint32_t p3a = *p++; -+ const uint32_t p3b = *p++; -+ -+ *du++ = p3a & 0x3ff; -+ *dv++ = (p3a >> 10) & 0x3ff; -+ *du++ = (p3a >> 20) & 0x3ff; -+ *dv++ = p3b & 0x3ff; -+ *du++ = (p3b >> 10) & 0x3ff; -+ *dv++ = (p3b >> 20) & 0x3ff; -+ -+ if (((x += 8) & mask) == 0) -+ p += slice_inc; -+ } -+ -+ if (xrem1 != 0) { -+ const uint32_t p3a = *p++; -+ const uint32_t p3b = *p++; -+ -+ *du++ = p3a & 0x3ff; -+ *dv++ = (p3a >> 10) & 0x3ff; -+ if (xrem1 == 2) -+ { -+ *du++ = (p3a >> 20) & 0x3ff; -+ *dv++ = p3b & 0x3ff; -+ } -+ } -+ } -+} -+ -+ -+// w/h in pixels -+void av_rpi_sand16_to_sand8(uint8_t * dst, const unsigned int dst_stride1, const unsigned int dst_stride2, -+ const uint8_t * src, const unsigned int src_stride1, const unsigned int src_stride2, -+ unsigned int w, unsigned int h, const unsigned int shr) -+{ -+ const unsigned int n = dst_stride1 / 2; -+ unsigned int j; -+ -+ // This is true for our current layouts -+ av_assert0(dst_stride1 == src_stride1); -+ -+ // As we have the same stride1 for src & dest and src is wider than dest -+ // then if we loop on src we can always write contiguously to dest -+ // We make no effort to copy an exact width - round up to nearest src stripe -+ // as we will always have storage in dest for that -+ -+#if ARCH_ARM && HAVE_NEON -+ if (shr == 3 && src_stride1 == 128) { -+ for (j = 0; j + n < w; j += dst_stride1) { -+ uint8_t * d = dst + j * dst_stride2; -+ const uint8_t * s1 = src + j * 2 * src_stride2; -+ const uint8_t * s2 = s1 + src_stride1 * src_stride2; -+ -+ ff_rpi_sand128b_stripe_to_8_10(d, s1, s2, h); -+ } -+ } -+ else -+#endif -+ { -+ for (j = 0; j + n < w; j += dst_stride1) { -+ uint8_t * d = dst + j * dst_stride2; -+ const uint8_t * s1 = src + j * 2 * src_stride2; -+ const uint8_t * s2 = s1 + src_stride1 * src_stride2; -+ -+ for (unsigned int i = 0; i != h; ++i, s1 += src_stride1, s2 += src_stride1, d += dst_stride1) { -+ cpy16_to_8(d, s1, n, shr); -+ cpy16_to_8(d + n, s2, n, shr); -+ } -+ } -+ } -+ -+ // Fix up a trailing dest half stripe -+ if (j < w) { -+ uint8_t * d = dst + j * dst_stride2; -+ const uint8_t * s1 = src + j * 2 * src_stride2; -+ -+ for (unsigned int i = 0; i != h; ++i, s1 += src_stride1, d += dst_stride1) { -+ cpy16_to_8(d, s1, n, shr); -+ } -+ } -+} -+ -+int av_rpi_sand_to_planar_frame(AVFrame * const dst, const AVFrame * const src) -+{ -+ const int w = av_frame_cropped_width(src); -+ const int h = av_frame_cropped_height(src); -+ const int x = src->crop_left; -+ const int y = src->crop_top; -+ -+ // We will crop as part of the conversion -+ dst->crop_top = 0; -+ dst->crop_left = 0; -+ dst->crop_bottom = 0; -+ dst->crop_right = 0; -+ -+ switch (src->format){ -+ case AV_PIX_FMT_SAND128: -+ case AV_PIX_FMT_RPI4_8: -+ switch (dst->format){ -+ case AV_PIX_FMT_YUV420P: -+ av_rpi_sand_to_planar_y8(dst->data[0], dst->linesize[0], -+ src->data[0], -+ av_rpi_sand_frame_stride1(src), av_rpi_sand_frame_stride2(src), -+ x, y, w, h); -+ av_rpi_sand_to_planar_c8(dst->data[1], dst->linesize[1], -+ dst->data[2], dst->linesize[2], -+ src->data[1], -+ av_rpi_sand_frame_stride1(src), av_rpi_sand_frame_stride2(src), -+ x/2, y/2, w/2, h/2); -+ break; -+ default: -+ return -1; -+ } -+ break; -+ case AV_PIX_FMT_SAND64_10: -+ switch (dst->format){ -+ case AV_PIX_FMT_YUV420P10: -+ av_rpi_sand_to_planar_y16(dst->data[0], dst->linesize[0], -+ src->data[0], -+ av_rpi_sand_frame_stride1(src), av_rpi_sand_frame_stride2(src), -+ x*2, y, w*2, h); -+ av_rpi_sand_to_planar_c16(dst->data[1], dst->linesize[1], -+ dst->data[2], dst->linesize[2], -+ src->data[1], -+ av_rpi_sand_frame_stride1(src), av_rpi_sand_frame_stride2(src), -+ x, y/2, w, h/2); -+ break; -+ default: -+ return -1; -+ } -+ break; -+ case AV_PIX_FMT_RPI4_10: -+ switch (dst->format){ -+ case AV_PIX_FMT_YUV420P10: -+ av_rpi_sand30_to_planar_y16(dst->data[0], dst->linesize[0], -+ src->data[0], -+ av_rpi_sand_frame_stride1(src), av_rpi_sand_frame_stride2(src), -+ x, y, w, h); -+ av_rpi_sand30_to_planar_c16(dst->data[1], dst->linesize[1], -+ dst->data[2], dst->linesize[2], -+ src->data[1], -+ av_rpi_sand_frame_stride1(src), av_rpi_sand_frame_stride2(src), -+ x/2, y/2, w/2, h/2); -+ break; -+ default: -+ return -1; -+ } -+ break; -+ default: -+ return -1; -+ } -+ -+ return av_frame_copy_props(dst, src); -+} -diff --git a/libavutil/rpi_sand_fns.h b/libavutil/rpi_sand_fns.h -new file mode 100644 -index 0000000000..634b55e800 ---- /dev/null -+++ b/libavutil/rpi_sand_fns.h -@@ -0,0 +1,183 @@ -+/* -+Copyright (c) 2018 Raspberry Pi (Trading) Ltd. -+All rights reserved. -+ -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are met: -+ * Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ * Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in the -+ documentation and/or other materials provided with the distribution. -+ * Neither the name of the copyright holder nor the -+ names of its contributors may be used to endorse or promote products -+ derived from this software without specific prior written permission. -+ -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY -+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ -+Authors: John Cox -+*/ -+ -+#ifndef AVUTIL_RPI_SAND_FNS -+#define AVUTIL_RPI_SAND_FNS -+ -+#include "libavutil/frame.h" -+ -+// For all these fns _x & _w are measured as coord * PW -+// For the C fns coords are in chroma pels (so luma / 2) -+// Strides are in bytes -+ -+void av_rpi_sand_to_planar_y8(uint8_t * dst, const unsigned int dst_stride, -+ const uint8_t * src, -+ unsigned int stride1, unsigned int stride2, -+ unsigned int _x, unsigned int y, -+ unsigned int _w, unsigned int h); -+void av_rpi_sand_to_planar_y16(uint8_t * dst, const unsigned int dst_stride, -+ const uint8_t * src, -+ unsigned int stride1, unsigned int stride2, -+ unsigned int _x, unsigned int y, -+ unsigned int _w, unsigned int h); -+ -+void av_rpi_sand_to_planar_c8(uint8_t * dst_u, const unsigned int dst_stride_u, -+ uint8_t * dst_v, const unsigned int dst_stride_v, -+ const uint8_t * src, -+ unsigned int stride1, unsigned int stride2, -+ unsigned int _x, unsigned int y, -+ unsigned int _w, unsigned int h); -+void av_rpi_sand_to_planar_c16(uint8_t * dst_u, const unsigned int dst_stride_u, -+ uint8_t * dst_v, const unsigned int dst_stride_v, -+ const uint8_t * src, -+ unsigned int stride1, unsigned int stride2, -+ unsigned int _x, unsigned int y, -+ unsigned int _w, unsigned int h); -+ -+void av_rpi_planar_to_sand_c8(uint8_t * dst_c, -+ unsigned int stride1, unsigned int stride2, -+ const uint8_t * src_u, const unsigned int src_stride_u, -+ const uint8_t * src_v, const unsigned int src_stride_v, -+ unsigned int _x, unsigned int y, -+ unsigned int _w, unsigned int h); -+void av_rpi_planar_to_sand_c16(uint8_t * dst_c, -+ unsigned int stride1, unsigned int stride2, -+ const uint8_t * src_u, const unsigned int src_stride_u, -+ const uint8_t * src_v, const unsigned int src_stride_v, -+ unsigned int _x, unsigned int y, -+ unsigned int _w, unsigned int h); -+ -+void av_rpi_sand30_to_planar_y16(uint8_t * dst, const unsigned int dst_stride, -+ const uint8_t * src, -+ unsigned int stride1, unsigned int stride2, -+ unsigned int _x, unsigned int y, -+ unsigned int _w, unsigned int h); -+void av_rpi_sand30_to_planar_c16(uint8_t * dst_u, const unsigned int dst_stride_u, -+ uint8_t * dst_v, const unsigned int dst_stride_v, -+ const uint8_t * src, -+ unsigned int stride1, unsigned int stride2, -+ unsigned int _x, unsigned int y, -+ unsigned int _w, unsigned int h); -+ -+ -+// w/h in pixels -+void av_rpi_sand16_to_sand8(uint8_t * dst, const unsigned int dst_stride1, const unsigned int dst_stride2, -+ const uint8_t * src, const unsigned int src_stride1, const unsigned int src_stride2, -+ unsigned int w, unsigned int h, const unsigned int shr); -+ -+ -+// dst must contain required pixel format & allocated data buffers -+// Cropping on the src buffer will be honoured and dst crop will be set to zero -+int av_rpi_sand_to_planar_frame(AVFrame * const dst, const AVFrame * const src); -+ -+ -+static inline unsigned int av_rpi_sand_frame_stride1(const AVFrame * const frame) -+{ -+#ifdef RPI_ZC_SAND128_ONLY -+ // If we are sure we only only support 128 byte sand formats replace the -+ // var with a constant which should allow for better optimisation -+ return 128; -+#else -+ return frame->linesize[0]; -+#endif -+} -+ -+static inline unsigned int av_rpi_sand_frame_stride2(const AVFrame * const frame) -+{ -+ return frame->linesize[3]; -+} -+ -+ -+static inline int av_rpi_is_sand_format(const int format) -+{ -+ return (format >= AV_PIX_FMT_SAND128 && format <= AV_PIX_FMT_RPI4_10); -+} -+ -+static inline int av_rpi_is_sand_frame(const AVFrame * const frame) -+{ -+ return av_rpi_is_sand_format(frame->format); -+} -+ -+static inline int av_rpi_is_sand8_frame(const AVFrame * const frame) -+{ -+ return (frame->format == AV_PIX_FMT_SAND128 || frame->format == AV_PIX_FMT_RPI4_8); -+} -+ -+static inline int av_rpi_is_sand16_frame(const AVFrame * const frame) -+{ -+ return (frame->format >= AV_PIX_FMT_SAND64_10 && frame->format <= AV_PIX_FMT_SAND64_16); -+} -+ -+static inline int av_rpi_is_sand30_frame(const AVFrame * const frame) -+{ -+ return (frame->format == AV_PIX_FMT_RPI4_10); -+} -+ -+static inline int av_rpi_sand_frame_xshl(const AVFrame * const frame) -+{ -+ return av_rpi_is_sand8_frame(frame) ? 0 : 1; -+} -+ -+// If x is measured in bytes (not pixels) then this works for sand64_16 as -+// well as sand128 - but in the general case we work that out -+ -+static inline unsigned int av_rpi_sand_frame_off_y(const AVFrame * const frame, const unsigned int x_y, const unsigned int y) -+{ -+ const unsigned int stride1 = av_rpi_sand_frame_stride1(frame); -+ const unsigned int stride2 = av_rpi_sand_frame_stride2(frame); -+ const unsigned int x = x_y << av_rpi_sand_frame_xshl(frame); -+ const unsigned int x1 = x & (stride1 - 1); -+ const unsigned int x2 = x ^ x1; -+ -+ return x1 + stride1 * y + stride2 * x2; -+} -+ -+static inline unsigned int av_rpi_sand_frame_off_c(const AVFrame * const frame, const unsigned int x_c, const unsigned int y_c) -+{ -+ const unsigned int stride1 = av_rpi_sand_frame_stride1(frame); -+ const unsigned int stride2 = av_rpi_sand_frame_stride2(frame); -+ const unsigned int x = x_c << (av_rpi_sand_frame_xshl(frame) + 1); -+ const unsigned int x1 = x & (stride1 - 1); -+ const unsigned int x2 = x ^ x1; -+ -+ return x1 + stride1 * y_c + stride2 * x2; -+} -+ -+static inline uint8_t * av_rpi_sand_frame_pos_y(const AVFrame * const frame, const unsigned int x, const unsigned int y) -+{ -+ return frame->data[0] + av_rpi_sand_frame_off_y(frame, x, y); -+} -+ -+static inline uint8_t * av_rpi_sand_frame_pos_c(const AVFrame * const frame, const unsigned int x, const unsigned int y) -+{ -+ return frame->data[1] + av_rpi_sand_frame_off_c(frame, x, y); -+} -+ -+#endif -+ - -From 89b8d6ac2a886749d4594656083753e682de05a7 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 27 Apr 2021 11:36:47 +0100 -Subject: [PATCH 003/151] Add aarch64 asm sand conv functions - -Many thanks to eiler.mike@gmail.com (Michael Eiler) for these -optimizations ---- - libavutil/aarch64/Makefile | 2 + - libavutil/aarch64/rpi_sand_neon.S | 676 ++++++++++++++++++++++++++++++ - libavutil/aarch64/rpi_sand_neon.h | 55 +++ - libavutil/rpi_sand_fn_pw.h | 4 +- - libavutil/rpi_sand_fns.c | 3 + - 5 files changed, 738 insertions(+), 2 deletions(-) - create mode 100644 libavutil/aarch64/rpi_sand_neon.S - create mode 100644 libavutil/aarch64/rpi_sand_neon.h - -diff --git a/libavutil/aarch64/Makefile b/libavutil/aarch64/Makefile -index eba0151337..1b44beab39 100644 ---- a/libavutil/aarch64/Makefile -+++ b/libavutil/aarch64/Makefile -@@ -4,3 +4,5 @@ OBJS += aarch64/cpu.o \ - - NEON-OBJS += aarch64/float_dsp_neon.o \ - aarch64/tx_float_neon.o \ -+ aarch64/rpi_sand_neon.o \ -+ -diff --git a/libavutil/aarch64/rpi_sand_neon.S b/libavutil/aarch64/rpi_sand_neon.S -new file mode 100644 -index 0000000000..cdcf71ee67 ---- /dev/null -+++ b/libavutil/aarch64/rpi_sand_neon.S -@@ -0,0 +1,676 @@ -+/* -+Copyright (c) 2021 Michael Eiler -+ -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are met: -+ * Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ * Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in the -+ documentation and/or other materials provided with the distribution. -+ * Neither the name of the copyright holder nor the -+ names of its contributors may be used to endorse or promote products -+ derived from this software without specific prior written permission. -+ -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY -+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ -+Authors: Michael Eiler -+*/ -+ -+#include "asm.S" -+ -+// void ff_rpi_sand8_lines_to_planar_y8( -+// uint8_t * dest, : x0 -+// unsigned int dst_stride, : w1 -+// const uint8_t * src, : x2 -+// unsigned int src_stride1, : w3, always 128 -+// unsigned int src_stride2, : w4 -+// unsigned int _x, : w5 -+// unsigned int y, : w6 -+// unsigned int _w, : w7 -+// unsigned int h); : [sp, #0] -+ -+function ff_rpi_sand8_lines_to_planar_y8, export=1 -+ // w15 contains the number of rows we need to process -+ ldr w15, [sp, #0] -+ -+ // w8 will contain the number of blocks per row -+ // w8 = floor(_w/stride1) -+ // stride1 is assumed to always be 128 -+ mov w8, w1 -+ lsr w8, w8, #7 -+ -+ // in case the width of the image is not a multiple of 128, there will -+ // be an incomplete block at the end of every row -+ // w9 contains the number of pixels stored within this block -+ // w9 = _w - w8 * 128 -+ lsl w9, w8, #7 -+ sub w9, w7, w9 -+ -+ // this is the value we have to add to the src pointer after reading a complete block -+ // it will move the address to the start of the next block -+ // w10 = stride2 * stride1 - stride1 -+ mov w10, w4 -+ lsl w10, w10, #7 -+ sub w10, w10, #128 -+ -+ // w11 is the row offset, meaning the start offset of the first block of every collumn -+ // this will be increased with stride1 within every iteration of the row_loop -+ eor w11, w11, w11 -+ -+ // w12 = 0, processed row count -+ eor w12, w12, w12 -+row_loop: -+ // start of the first block within the current row -+ // x13 = row offset + src -+ mov x13, x2 -+ add x13, x13, x11 -+ -+ // w14 = 0, processed block count -+ eor w14, w14, w14 -+ -+ cmp w8, #0 -+ beq no_main_y8 -+ -+block_loop: -+ // copy 128 bytes (a full block) into the vector registers v0-v7 and increase the src address by 128 -+ // fortunately these aren't callee saved ones, meaning we don't need to backup them -+ ld1 { v0.16b, v1.16b, v2.16b, v3.16b}, [x13], #64 -+ ld1 { v4.16b, v5.16b, v6.16b, v7.16b}, [x13], #64 -+ -+ // write these registers back to the destination vector and increase the dst address by 128 -+ st1 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0], #64 -+ st1 { v4.16b, v5.16b, v6.16b, v7.16b }, [x0], #64 -+ -+ // move the source register to the beginning of the next block (x13 = src + block offset) -+ add x13, x13, x10 -+ // increase the block counter -+ add w14, w14, #1 -+ -+ // continue with the block_loop if we haven't copied all full blocks yet -+ cmp w8, w14 -+ bgt block_loop -+ -+ // handle the last block at the end of each row -+ // at most 127 byte values copied from src to dst -+no_main_y8: -+ eor w5, w5, w5 // i = 0 -+incomplete_block_loop_y8: -+ cmp w5, w9 -+ bge incomplete_block_loop_end_y8 -+ -+ ldrb w6, [x13] -+ strb w6, [x0] -+ add x13, x13, #1 -+ add x0, x0, #1 -+ -+ add w5, w5, #1 -+ b incomplete_block_loop_y8 -+incomplete_block_loop_end_y8: -+ -+ -+ // increase the row offset by 128 (stride1) -+ add w11, w11, #128 -+ // increment the row counter -+ add w12, w12, #1 -+ -+ // process the next row if we haven't finished yet -+ cmp w15, w12 -+ bgt row_loop -+ -+ ret -+endfunc -+ -+ -+ -+// void ff_rpi_sand8_lines_to_planar_c8( -+// uint8_t * dst_u, : x0 -+// unsigned int dst_stride_u, : w1 == width -+// uint8_t * dst_v, : x2 -+// unsigned int dst_stride_v, : w3 == width -+// const uint8_t * src, : x4 -+// unsigned int stride1, : w5 == 128 -+// unsigned int stride2, : w6 -+// unsigned int _x, : w7 -+// unsigned int y, : [sp, #0] -+// unsigned int _w, : [sp, #8] -+// unsigned int h); : [sp, #16] -+ -+function ff_rpi_sand8_lines_to_planar_c8, export=1 -+ // w7 = width -+ ldr w7, [sp, #8] -+ -+ // w15 contains the number of rows we need to process -+ // counts down -+ ldr w15, [sp, #16] -+ -+ // number of full blocks, w8 = _w / (stride1 >> 1) == _w / 64 == _w >> 6 -+ mov w8, w7 -+ lsr w8, w8, #6 -+ -+ // number of pixels in block at the end of every row -+ // w9 = _w - (w8 * 64) -+ lsl w9, w8, #6 -+ sub w9, w7, w9 -+ -+ // Skip at the end of the line to account for stride -+ sub w12, w1, w7 -+ -+ // address delta to the beginning of the next block -+ // w10 = (stride2 * stride1 - stride1) = stride2 * 128 - 128 -+ lsl w10, w6, #7 -+ sub w10, w10, #128 -+ -+ // w11 = row address start offset = 0 -+ eor w11, w11, w11 -+ -+row_loop_c8: -+ // start of the first block within the current row -+ // x13 = row offset + src -+ mov x13, x4 -+ add x13, x13, x11 -+ -+ // w14 = 0, processed block count -+ eor w14, w14, w14 -+ -+ cmp w8, #0 -+ beq no_main_c8 -+ -+block_loop_c8: -+ // load the full block -> 128 bytes, the block contains 64 interleaved U and V values -+ ld2 { v0.16b, v1.16b }, [x13], #32 -+ ld2 { v2.16b, v3.16b }, [x13], #32 -+ ld2 { v4.16b, v5.16b }, [x13], #32 -+ ld2 { v6.16b, v7.16b }, [x13], #32 -+ -+ // swap register so that we can write them out with a single instruction -+ mov v16.16b, v1.16b -+ mov v17.16b, v3.16b -+ mov v18.16b, v5.16b -+ mov v1.16b, v2.16b -+ mov v2.16b, v4.16b -+ mov v3.16b, v6.16b -+ mov v4.16b, v16.16b -+ mov v5.16b, v17.16b -+ mov v6.16b, v18.16b -+ -+ st1 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0], #64 -+ st1 { v4.16b, v5.16b, v6.16b, v7.16b }, [x2], #64 -+ -+ // increment row counter and move src to the beginning of the next block -+ add w14, w14, #1 -+ add x13, x13, x10 -+ -+ // jump to block_loop_c8 iff the block count is smaller than the number of full blocks -+ cmp w8, w14 -+ bgt block_loop_c8 -+ -+no_main_c8: -+ // handle incomplete block at the end of every row -+ eor w5, w5, w5 // point counter, this might be -+incomplete_block_loop_c8: -+ cmp w5, w9 -+ bge incomplete_block_loop_end_c8 -+ -+ ldrb w1, [x13] -+ strb w1, [x0] -+ add x13, x13, #1 -+ -+ ldrb w1, [x13] -+ strb w1, [x2] -+ add x13, x13, #1 -+ -+ add x0, x0, #1 -+ add x2, x2, #1 -+ -+ add w5, w5, #1 -+ b incomplete_block_loop_c8 -+incomplete_block_loop_end_c8: -+ -+ // increase row_offset by stride1 -+ add w11, w11, #128 -+ add x0, x0, w12, sxtw -+ add x2, x2, w12, sxtw -+ -+ // jump to row_Loop_c8 iff the row count is small than the height -+ subs w15, w15, #1 -+ bgt row_loop_c8 -+ -+ ret -+endfunc -+ -+//void ff_rpi_sand30_lines_to_planar_y16( -+// uint8_t * dest, // [x0] -+// unsigned int dst_stride, // [w1] -> assumed to be equal to _w -+// const uint8_t * src, // [x2] -+// unsigned int src_stride1, // [w3] -> 128 -+// unsigned int src_stride2, // [w4] -+// unsigned int _x, // [w5] -+// unsigned int y, // [w6] -+// unsigned int _w, // [w7] -+// unsigned int h); // [sp, #0] -+ -+function ff_rpi_sand30_lines_to_planar_y16, export=1 -+ stp x19, x20, [sp, #-48]! -+ stp x21, x22, [sp, #16] -+ stp x23, x24, [sp, #32] -+ -+ // w6 = argument h -+ ldr w6, [sp, #48] -+ -+ // slice_inc = ((stride2 - 1) * stride1) -+ mov w5, w4 -+ sub w5, w5, #1 -+ lsl w5, w5, #7 -+ -+ // total number of bytes per row = (width / 3) * 4 -+ mov w8, w7 -+ mov w9, #3 -+ udiv w8, w8, w9 -+ lsl w8, w8, #2 -+ -+ // number of full 128 byte blocks to be processed -+ mov w9, #96 -+ udiv w9, w7, w9 // = (width * 4) / (3*128) = width/96 -+ -+ // w10 = number of full integers to process (4 bytes) -+ // w11 = remaning zero to two 10bit values still to copy over -+ mov w12, #96 -+ mul w12, w9, w12 -+ sub w12, w7, w12 // width - blocks*96 = remaining points per row -+ mov w11, #3 -+ udiv w10, w12, w11 // full integers to process = w12 / 3 -+ mul w11, w10, w11 // #integers *3 -+ sub w11, w12, w11 // remaining 0-2 points = remaining points - integers*3 -+ -+ // increase w9 by one if w10+w11 is not zero, and decrease the row count by one -+ // this is to efficiently copy incomplete blocks at the end of the rows -+ // the last row is handled explicitly to avoid writing out of bounds -+ add w22, w10, w11 -+ cmp w22, #0 -+ cset w22, ne // 1 iff w10+w11 not zero, 0 otherwise -+ add w9, w9, w22 -+ sub w6, w6, #1 -+ -+ // store the number of bytes in w20 which we copy too much for every row -+ // when the width of the frame is not a multiple of 96 (128bytes storing 96 10bit values) -+ mov w20, #96*2 -+ mul w20, w20, w9 -+ sub w20, w1, w20 -+ -+ mov w23, #0 // flag to check whether the last line had already been processed -+ -+ // bitmask to clear the uppper 6bits of the result values -+ mov x19, #0x03ff03ff03ff03ff -+ dup v22.2d, x19 -+ -+ // row counter = 0 -+ eor w12, w12, w12 -+row_loop_y16: -+ cmp w12, w6 // jump to row_loop_y16_fin if we processed all rows -+ bge row_loop_y16_fin -+ -+ mov x13, x2 // row src -+ eor w14, w14, w14 // full block counter -+block_loop_y16: -+ cmp w14, w9 -+ bge block_loop_y16_fin -+ -+ // load 64 bytes -+ ld1 { v0.4s, v1.4s, v2.4s, v3.4s }, [x13], #64 -+ -+ // process v0 and v1 -+ xtn v16.4h, v0.4s -+ ushr v0.4s, v0.4s, #10 -+ xtn v17.4h, v0.4s -+ ushr v0.4s, v0.4s, #10 -+ xtn v18.4h, v0.4s -+ -+ xtn2 v16.8h, v1.4s -+ and v16.16b, v16.16b, v22.16b -+ ushr v1.4s, v1.4s, #10 -+ xtn2 v17.8h, v1.4s -+ and v17.16b, v17.16b, v22.16b -+ ushr v1.4s, v1.4s, #10 -+ xtn2 v18.8h, v1.4s -+ and v18.16b, v18.16b, v22.16b -+ -+ st3 { v16.8h, v17.8h, v18.8h }, [x0], #48 -+ -+ // process v2 and v3 -+ xtn v23.4h, v2.4s -+ ushr v2.4s, v2.4s, #10 -+ xtn v24.4h, v2.4s -+ ushr v2.4s, v2.4s, #10 -+ xtn v25.4h, v2.4s -+ -+ xtn2 v23.8h, v3.4s -+ and v23.16b, v23.16b, v22.16b -+ ushr v3.4s, v3.4s, #10 -+ xtn2 v24.8h, v3.4s -+ and v24.16b, v24.16b, v22.16b -+ ushr v3.4s, v3.4s, #10 -+ xtn2 v25.8h, v3.4s -+ and v25.16b, v25.16b, v22.16b -+ -+ st3 { v23.8h, v24.8h, v25.8h }, [x0], #48 -+ -+ // load the second half of the block -> 64 bytes into registers v4-v7 -+ ld1 { v4.4s, v5.4s, v6.4s, v7.4s }, [x13], #64 -+ -+ // process v4 and v5 -+ xtn v16.4h, v4.4s -+ ushr v4.4s, v4.4s, #10 -+ xtn v17.4h, v4.4s -+ ushr v4.4s, v4.4s, #10 -+ xtn v18.4h, v4.4s -+ -+ xtn2 v16.8h, v5.4s -+ and v16.16b, v16.16b, v22.16b -+ ushr v5.4s, v5.4s, #10 -+ xtn2 v17.8h, v5.4s -+ and v17.16b, v17.16b, v22.16b -+ ushr v5.4s, v5.4s, #10 -+ xtn2 v18.8h, v5.4s -+ and v18.16b, v18.16b, v22.16b -+ -+ st3 { v16.8h, v17.8h, v18.8h }, [x0], #48 -+ -+ // v6 and v7 -+ xtn v23.4h, v6.4s -+ ushr v6.4s, v6.4s, #10 -+ xtn v24.4h, v6.4s -+ ushr v6.4s, v6.4s, #10 -+ xtn v25.4h, v6.4s -+ -+ xtn2 v23.8h, v7.4s -+ and v23.16b, v23.16b, v22.16b -+ ushr v7.4s, v7.4s, #10 -+ xtn2 v24.8h, v7.4s -+ and v24.16b, v24.16b, v22.16b -+ ushr v7.4s, v7.4s, #10 -+ xtn2 v25.8h, v7.4s -+ and v25.16b, v25.16b, v22.16b -+ -+ st3 { v23.8h, v24.8h, v25.8h }, [x0], #48 -+ -+ add x13, x13, x5 // row src += slice_inc -+ add w14, w14, #1 -+ b block_loop_y16 -+block_loop_y16_fin: -+ -+ -+ -+ -+ add x2, x2, #128 // src += stride1 (start of the next row) -+ add x0, x0, w20, sxtw // subtract the bytes we copied too much from dst -+ add w12, w12, #1 -+ b row_loop_y16 -+row_loop_y16_fin: -+ -+ // check whether we have incomplete blocks at the end of every row -+ // in that case decrease row block count by one -+ // change height back to it's original value (meaning increase it by 1) -+ // and jump back to another iteration of row_loop_y16 -+ -+ cmp w23, #1 -+ beq row_loop_y16_fin2 // don't continue here if we already processed the last row -+ add w6, w6, #1 // increase height to the original value -+ sub w9, w9, w22 // block count - 1 or 0, depending on the remaining bytes count -+ mov w23, #1 -+ b row_loop_y16 -+row_loop_y16_fin2: -+ -+ sub x0, x0, w20, sxtw // with the last row we didn't actually move the dst ptr to far ahead, therefore readd the diference -+ -+ // now we've got to handle the last block in the last row -+ eor w12, w12, w12 // w12 = 0 = counter -+integer_loop_y16: -+ cmp w12, w10 -+ bge integer_loop_y16_fin -+ ldr w14, [x13], #4 -+ and w15, w14, #0x3ff -+ strh w15, [x0], #2 -+ lsr w14, w14, #10 -+ and w15, w14, #0x3ff -+ strh w15, [x0], #2 -+ lsr w14, w14, #10 -+ and w15, w14, #0x3ff -+ strh w15, [x0], #2 -+ add w12, w12, #1 -+ b integer_loop_y16 -+integer_loop_y16_fin: -+ -+final_values_y16: -+ // remaining point count = w11 -+ ldr w14, [x13], #4 -+ cmp w11, #0 -+ beq final_values_y16_fin -+ and w15, w14, #0x3ff -+ strh w15, [x0], #2 -+ cmp w11, #1 -+ beq final_values_y16_fin -+ lsr w14, w14, #10 -+ and w15, w14, #0x3ff -+ strh w15, [x0], #2 -+final_values_y16_fin: -+ -+ ldp x23, x24, [sp, #32] -+ ldp x21, x22, [sp, #16] -+ ldp x19, x20, [sp], #48 -+ ret -+endfunc -+ -+//void ff_rpi_sand30_lines_to_planar_c16( -+// uint8_t * dst_u, // [x0] -+// unsigned int dst_stride_u, // [w1] == _w*2 -+// uint8_t * dst_v, // [x2] -+// unsigned int dst_stride_v, // [w3] == _w*2 -+// const uint8_t * src, // [x4] -+// unsigned int stride1, // [w5] == 128 -+// unsigned int stride2, // [w6] -+// unsigned int _x, // [w7] == 0 -+// unsigned int y, // [sp, #0] == 0 -+// unsigned int _w, // [sp, #8] -> w3 -+// unsigned int h); // [sp, #16] -> w7 -+ -+.macro rpi_sand30_lines_to_planar_c16_block_half -+ ld1 { v0.4s, v1.4s, v2.4s, v3.4s }, [x13], #64 -+ -+ xtn v4.4h, v0.4s -+ ushr v0.4s, v0.4s, #10 -+ xtn v5.4h, v0.4s -+ ushr v0.4s, v0.4s, #10 -+ xtn v6.4h, v0.4s -+ xtn2 v4.8h, v1.4s -+ ushr v1.4s, v1.4s, #10 -+ xtn2 v5.8h, v1.4s -+ ushr v1.4s, v1.4s, #10 -+ xtn2 v6.8h, v1.4s -+ and v4.16b, v4.16b, v16.16b -+ and v5.16b, v5.16b, v16.16b -+ and v6.16b, v6.16b, v16.16b -+ st3 { v4.8h, v5.8h, v6.8h }, [sp], #48 -+ -+ xtn v4.4h, v2.4s -+ ushr v2.4s, v2.4s, #10 -+ xtn v5.4h, v2.4s -+ ushr v2.4s, v2.4s, #10 -+ xtn v6.4h, v2.4s -+ xtn2 v4.8h, v3.4s -+ ushr v3.4s, v3.4s, #10 -+ xtn2 v5.8h, v3.4s -+ ushr v3.4s, v3.4s, #10 -+ xtn2 v6.8h, v3.4s -+ and v4.16b, v4.16b, v16.16b -+ and v5.16b, v5.16b, v16.16b -+ and v6.16b, v6.16b, v16.16b -+ st3 { v4.8h, v5.8h, v6.8h }, [sp] -+ sub sp, sp, #48 -+.endm -+ -+function ff_rpi_sand30_lines_to_planar_c16, export=1 -+ stp x19, x20, [sp, #-48]! -+ stp x21, x22, [sp, #16] -+ stp x23, x24, [sp, #32] -+ -+ ldr w3, [sp, #48+8] // w3 = width -+ ldr w7, [sp, #48+16] // w7 = height -+ -+ // reserve space on the stack for intermediate results -+ sub sp, sp, #256 -+ -+ // number of 128byte blocks per row, w8 = width / 48 -+ mov w9, #48 -+ udiv w8, w3, w9 -+ -+ // remaining pixels (rem_pix) per row, w9 = width - w8 * 48 -+ mul w9, w8, w9 -+ sub w9, w3, w9 -+ -+ // row offset, the beginning of the next row to process -+ eor w10, w10, w10 -+ -+ // offset to the beginning of the next block, w11 = stride2 * 128 - 128 -+ lsl w11, w6, #7 -+ sub w11, w11, #128 -+ -+ // decrease the height by one and in case of remaining pixels increase the block count by one -+ sub w7, w7, #1 -+ cmp w9, #0 -+ cset w19, ne // w19 == 1 iff reamining pixels != 0 -+ add w8, w8, w19 -+ -+ // bytes we have to move dst back by at the end of every row -+ mov w21, #48*2 -+ mul w21, w21, w8 -+ sub w21, w1, w21 -+ -+ mov w20, #0 // w20 = flag, last row processed -+ -+ mov x12, #0x03ff03ff03ff03ff -+ dup v16.2d, x12 -+ -+ // iterate through rows, row counter = w12 = 0 -+ eor w12, w12, w12 -+row_loop_c16: -+ cmp w12, w7 -+ bge row_loop_c16_fin -+ -+ // address of row data = src + row_offset -+ mov x13, x4 -+ add x13, x13, x10 -+ -+ eor w14, w14, w14 -+block_loop_c16: -+ cmp w14, w8 -+ bge block_loop_c16_fin -+ -+ rpi_sand30_lines_to_planar_c16_block_half -+ -+ ld2 { v0.8h, v1.8h }, [sp], #32 -+ ld2 { v2.8h, v3.8h }, [sp], #32 -+ ld2 { v4.8h, v5.8h }, [sp] -+ sub sp, sp, #64 -+ -+ st1 { v0.8h }, [x0], #16 -+ st1 { v2.8h }, [x0], #16 -+ st1 { v4.8h }, [x0], #16 -+ st1 { v1.8h }, [x2], #16 -+ st1 { v3.8h }, [x2], #16 -+ st1 { v5.8h }, [x2], #16 -+ -+ rpi_sand30_lines_to_planar_c16_block_half -+ -+ ld2 { v0.8h, v1.8h }, [sp], #32 -+ ld2 { v2.8h, v3.8h }, [sp], #32 -+ ld2 { v4.8h, v5.8h }, [sp] -+ sub sp, sp, #64 -+ -+ st1 { v0.8h }, [x0], #16 -+ st1 { v2.8h }, [x0], #16 -+ st1 { v4.8h }, [x0], #16 -+ st1 { v1.8h }, [x2], #16 -+ st1 { v3.8h }, [x2], #16 -+ st1 { v5.8h }, [x2], #16 -+ -+ add x13, x13, x11 // offset to next block -+ add w14, w14, #1 -+ b block_loop_c16 -+block_loop_c16_fin: -+ -+ add w10, w10, #128 -+ add w12, w12, #1 -+ add x0, x0, w21, sxtw // move dst pointers back by x21 -+ add x2, x2, w21, sxtw -+ b row_loop_c16 -+row_loop_c16_fin: -+ -+ cmp w20, #1 -+ beq row_loop_c16_fin2 -+ mov w20, #1 -+ sub w8, w8, w19 // decrease block count by w19 -+ add w7, w7, #1 // increase height -+ b row_loop_c16 -+ -+row_loop_c16_fin2: -+ sub x0, x0, w21, sxtw // readd x21 in case of the last row -+ sub x2, x2, w21, sxtw // so that we can write out the few remaining pixels -+ -+ // last incomplete block to be finished -+ // read operations are fine, stride2 is more than large enough even if rem_pix is 0 -+ rpi_sand30_lines_to_planar_c16_block_half -+ ld2 { v0.8h, v1.8h }, [sp], #32 -+ ld2 { v2.8h, v3.8h }, [sp], #32 -+ ld2 { v4.8h, v5.8h }, [sp], #32 -+ rpi_sand30_lines_to_planar_c16_block_half -+ ld2 { v0.8h, v1.8h }, [sp], #32 -+ ld2 { v2.8h, v3.8h }, [sp], #32 -+ ld2 { v4.8h, v5.8h }, [sp] -+ sub sp, sp, #160 -+ -+ mov x4, sp -+ eor w20, w20, w20 -+rem_pix_c16_loop: -+ cmp w20, w9 -+ bge rem_pix_c16_fin -+ -+ ldr w22, [x4], #4 -+ str w22, [x0], #2 -+ lsr w22, w22, #16 -+ str w22, [x2], #2 -+ -+ add w20, w20, #1 -+ b rem_pix_c16_loop -+rem_pix_c16_fin: -+ -+ add sp, sp, #256 -+ -+ ldp x23, x24, [sp, #32] -+ ldp x21, x22, [sp, #16] -+ ldp x19, x20, [sp], #48 -+ ret -+endfunc -+ -+ -+ -+//void ff_rpi_sand30_lines_to_planar_p010( -+// uint8_t * dest, -+// unsigned int dst_stride, -+// const uint8_t * src, -+// unsigned int src_stride1, -+// unsigned int src_stride2, -+// unsigned int _x, -+// unsigned int y, -+// unsigned int _w, -+// unsigned int h); -+ -diff --git a/libavutil/aarch64/rpi_sand_neon.h b/libavutil/aarch64/rpi_sand_neon.h -new file mode 100644 -index 0000000000..b3aa481ea4 ---- /dev/null -+++ b/libavutil/aarch64/rpi_sand_neon.h -@@ -0,0 +1,55 @@ -+/* -+Copyright (c) 2021 Michael Eiler -+ -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are met: -+ * Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ * Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in the -+ documentation and/or other materials provided with the distribution. -+ * Neither the name of the copyright holder nor the -+ names of its contributors may be used to endorse or promote products -+ derived from this software without specific prior written permission. -+ -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY -+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ -+Authors: Michael Eiler -+*/ -+ -+#pragma once -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+void ff_rpi_sand8_lines_to_planar_y8(uint8_t * dest, unsigned int dst_stride, -+ const uint8_t * src, unsigned int src_stride1, unsigned int src_stride2, -+ unsigned int _x, unsigned int y, unsigned int _w, unsigned int h); -+ -+void ff_rpi_sand8_lines_to_planar_c8(uint8_t * dst_u, unsigned int dst_stride_u, -+ uint8_t * dst_v, unsigned int dst_stride_v, const uint8_t * src, -+ unsigned int stride1, unsigned int stride2, unsigned int _x, unsigned int y, -+ unsigned int _w, unsigned int h); -+ -+void ff_rpi_sand30_lines_to_planar_y16(uint8_t * dest, unsigned int dst_stride, -+ const uint8_t * src, unsigned int src_stride1, unsigned int src_stride2, -+ unsigned int _x, unsigned int y, unsigned int _w, unsigned int h); -+ -+void ff_rpi_sand30_lines_to_planar_c16(uint8_t * dst_u, unsigned int dst_stride_u, -+ uint8_t * dst_v, unsigned int dst_stride_v, const uint8_t * src, unsigned int stride1, -+ unsigned int stride2, unsigned int _x, unsigned int y, unsigned int _w, unsigned int h); -+ -+#ifdef __cplusplus -+} -+#endif -+ -diff --git a/libavutil/rpi_sand_fn_pw.h b/libavutil/rpi_sand_fn_pw.h -index 0324f6826d..0d5d203dc3 100644 ---- a/libavutil/rpi_sand_fn_pw.h -+++ b/libavutil/rpi_sand_fn_pw.h -@@ -54,7 +54,7 @@ void FUNC(av_rpi_sand_to_planar_y)(uint8_t * dst, const unsigned int dst_stride, - const unsigned int w = _w; - const unsigned int mask = stride1 - 1; - --#if PW == 1 && (HAVE_SAND_ASM || HAVE_SAND_ASM64) -+#if PW == 1 && HAVE_SAND_ASM - if (_x == 0) { - ff_rpi_sand8_lines_to_planar_y8(dst, dst_stride, - src, stride1, stride2, _x, y, _w, h); -@@ -106,7 +106,7 @@ void FUNC(av_rpi_sand_to_planar_c)(uint8_t * dst_u, const unsigned int dst_strid - const unsigned int w = _w * 2; - const unsigned int mask = stride1 - 1; - --#if PW == 1 && (HAVE_SAND_ASM || HAVE_SAND_ASM64) -+#if PW == 1 && HAVE_SAND_ASM - if (_x == 0) { - ff_rpi_sand8_lines_to_planar_c8(dst_u, dst_stride_u, dst_v, dst_stride_v, - src, stride1, stride2, _x, y, _w, h); -diff --git a/libavutil/rpi_sand_fns.c b/libavutil/rpi_sand_fns.c -index ed0261b02f..1f543e9357 100644 ---- a/libavutil/rpi_sand_fns.c -+++ b/libavutil/rpi_sand_fns.c -@@ -37,6 +37,9 @@ Authors: John Cox - #if ARCH_ARM && HAVE_NEON - #include "arm/rpi_sand_neon.h" - #define HAVE_SAND_ASM 1 -+#elif ARCH_AARCH64 && HAVE_NEON -+#include "aarch64/rpi_sand_neon.h" -+#define HAVE_SAND_ASM 1 - #else - #define HAVE_SAND_ASM 0 - #endif - -From 247025a42ae09d6c9c5d4128a5e4b288b7b3047c Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 27 Apr 2021 11:56:02 +0100 -Subject: [PATCH 004/151] Add raw encoding for sand - ---- - libavcodec/raw.c | 6 +++ - libavcodec/rawenc.c | 92 ++++++++++++++++++++++++++++++++++++++++++++- - 2 files changed, 96 insertions(+), 2 deletions(-) - -diff --git a/libavcodec/raw.c b/libavcodec/raw.c -index 1e5b48d1e0..1e689f9ee0 100644 ---- a/libavcodec/raw.c -+++ b/libavcodec/raw.c -@@ -295,6 +295,12 @@ static const PixelFormatTag raw_pix_fmt_tags[] = { - { AV_PIX_FMT_RGB565LE,MKTAG( 3 , 0 , 0 , 0 ) }, /* flipped RGB565LE */ - { AV_PIX_FMT_YUV444P, MKTAG('Y', 'V', '2', '4') }, /* YUV444P, swapped UV */ - -+ /* RPI (Might as well define for everything) */ -+ { AV_PIX_FMT_SAND128, MKTAG('S', 'A', 'N', 'D') }, -+ { AV_PIX_FMT_RPI4_8, MKTAG('S', 'A', 'N', 'D') }, -+ { AV_PIX_FMT_SAND64_10, MKTAG('S', 'N', 'D', 'A') }, -+ { AV_PIX_FMT_RPI4_10, MKTAG('S', 'N', 'D', 'B') }, -+ - { AV_PIX_FMT_NONE, 0 }, - }; - -diff --git a/libavcodec/rawenc.c b/libavcodec/rawenc.c -index 8c577006d9..594a77c42a 100644 ---- a/libavcodec/rawenc.c -+++ b/libavcodec/rawenc.c -@@ -24,6 +24,7 @@ - * Raw Video Encoder - */ - -+#include "config.h" - #include "avcodec.h" - #include "codec_internal.h" - #include "encode.h" -@@ -33,6 +34,10 @@ - #include "libavutil/intreadwrite.h" - #include "libavutil/imgutils.h" - #include "libavutil/internal.h" -+#include "libavutil/avassert.h" -+#if CONFIG_SAND -+#include "libavutil/rpi_sand_fns.h" -+#endif - - static av_cold int raw_encode_init(AVCodecContext *avctx) - { -@@ -46,12 +51,95 @@ static av_cold int raw_encode_init(AVCodecContext *avctx) - return 0; - } - -+#if CONFIG_SAND -+static int raw_sand8_as_yuv420(AVCodecContext *avctx, AVPacket *pkt, -+ const AVFrame *frame) -+{ -+ const int width = av_frame_cropped_width(frame); -+ const int height = av_frame_cropped_height(frame); -+ const int x0 = frame->crop_left; -+ const int y0 = frame->crop_top; -+ const int size = width * height * 3 / 2; -+ uint8_t * dst; -+ int ret; -+ -+ if ((ret = ff_get_encode_buffer(avctx, pkt, size, 0)) < 0) -+ return ret; -+ -+ dst = pkt->data; -+ -+ av_rpi_sand_to_planar_y8(dst, width, frame->data[0], frame->linesize[0], frame->linesize[3], x0, y0, width, height); -+ dst += width * height; -+ av_rpi_sand_to_planar_c8(dst, width / 2, dst + width * height / 4, width / 2, -+ frame->data[1], frame->linesize[1], av_rpi_sand_frame_stride2(frame), x0 / 2, y0 / 2, width / 2, height / 2); -+ return 0; -+} -+ -+static int raw_sand16_as_yuv420(AVCodecContext *avctx, AVPacket *pkt, -+ const AVFrame *frame) -+{ -+ const int width = av_frame_cropped_width(frame); -+ const int height = av_frame_cropped_height(frame); -+ const int x0 = frame->crop_left; -+ const int y0 = frame->crop_top; -+ const int size = width * height * 3; -+ uint8_t * dst; -+ int ret; -+ -+ if ((ret = ff_get_encode_buffer(avctx, pkt, size, 0)) < 0) -+ return ret; -+ -+ dst = pkt->data; -+ -+ av_rpi_sand_to_planar_y16(dst, width * 2, frame->data[0], frame->linesize[0], frame->linesize[3], x0 * 2, y0, width * 2, height); -+ dst += width * height * 2; -+ av_rpi_sand_to_planar_c16(dst, width, dst + width * height / 2, width, -+ frame->data[1], frame->linesize[1], av_rpi_sand_frame_stride2(frame), x0, y0 / 2, width, height / 2); -+ return 0; -+} -+ -+static int raw_sand30_as_yuv420(AVCodecContext *avctx, AVPacket *pkt, -+ const AVFrame *frame) -+{ -+ const int width = av_frame_cropped_width(frame); -+ const int height = av_frame_cropped_height(frame); -+ const int x0 = frame->crop_left; -+ const int y0 = frame->crop_top; -+ const int size = width * height * 3; -+ uint8_t * dst; -+ int ret; -+ -+ if ((ret = ff_get_encode_buffer(avctx, pkt, size, 0)) < 0) -+ return ret; -+ -+ dst = pkt->data; -+ -+ av_rpi_sand30_to_planar_y16(dst, width * 2, frame->data[0], frame->linesize[0], frame->linesize[3], x0, y0, width, height); -+ dst += width * height * 2; -+ av_rpi_sand30_to_planar_c16(dst, width, dst + width * height / 2, width, -+ frame->data[1], frame->linesize[1], av_rpi_sand_frame_stride2(frame), x0/2, y0 / 2, width/2, height / 2); -+ return 0; -+} -+#endif -+ -+ - static int raw_encode(AVCodecContext *avctx, AVPacket *pkt, - const AVFrame *frame, int *got_packet) - { -- int ret = av_image_get_buffer_size(frame->format, -- frame->width, frame->height, 1); -+ int ret; - -+#if CONFIG_SAND -+ if (av_rpi_is_sand_frame(frame)) { -+ ret = av_rpi_is_sand8_frame(frame) ? raw_sand8_as_yuv420(avctx, pkt, frame) : -+ av_rpi_is_sand16_frame(frame) ? raw_sand16_as_yuv420(avctx, pkt, frame) : -+ av_rpi_is_sand30_frame(frame) ? raw_sand30_as_yuv420(avctx, pkt, frame) : -1; -+ *got_packet = (ret == 0); -+ return ret; -+ } -+#endif -+ -+ ret = av_image_get_buffer_size(frame->format, -+ frame->width, frame->height, 1); - if (ret < 0) - return ret; - - -From ac6961f424b56563dc793b6bc002a8c04cb1bc36 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 27 Apr 2021 12:02:09 +0100 -Subject: [PATCH 005/151] Deal with the lack of trivial sand cropping - ---- - fftools/ffmpeg.c | 4 ++-- - fftools/ffmpeg_filter.c | 4 ++-- - libavutil/frame.c | 11 +++++++++++ - libavutil/frame.h | 10 ++++++++++ - 4 files changed, 25 insertions(+), 4 deletions(-) - -diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c -index d721a5e721..15e084f0b2 100644 ---- a/fftools/ffmpeg.c -+++ b/fftools/ffmpeg.c -@@ -1993,8 +1993,8 @@ static int ifilter_send_frame(InputFilter *ifilter, AVFrame *frame, int keep_ref - av_channel_layout_compare(&ifilter->ch_layout, &frame->ch_layout); - break; - case AVMEDIA_TYPE_VIDEO: -- need_reinit |= ifilter->width != frame->width || -- ifilter->height != frame->height; -+ need_reinit |= ifilter->width != av_frame_cropped_width(frame) || -+ ifilter->height != av_frame_cropped_height(frame); - break; - } - -diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c -index 1f5bbf6c4d..f888307762 100644 ---- a/fftools/ffmpeg_filter.c -+++ b/fftools/ffmpeg_filter.c -@@ -1281,8 +1281,8 @@ int ifilter_parameters_from_frame(InputFilter *ifilter, const AVFrame *frame) - - ifilter->format = frame->format; - -- ifilter->width = frame->width; -- ifilter->height = frame->height; -+ ifilter->width = av_frame_cropped_width(frame); -+ ifilter->height = av_frame_cropped_height(frame); - ifilter->sample_aspect_ratio = frame->sample_aspect_ratio; - - ifilter->sample_rate = frame->sample_rate; -diff --git a/libavutil/frame.c b/libavutil/frame.c -index 9545477acc..48621e4098 100644 ---- a/libavutil/frame.c -+++ b/libavutil/frame.c -@@ -16,6 +16,8 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -+#include "config.h" -+ - #include "channel_layout.h" - #include "avassert.h" - #include "buffer.h" -@@ -27,6 +29,9 @@ - #include "mem.h" - #include "samplefmt.h" - #include "hwcontext.h" -+#if CONFIG_SAND -+#include "rpi_sand_fns.h" -+#endif - - #if FF_API_OLD_CHANNEL_LAYOUT - #define CHECK_CHANNELS_CONSISTENCY(frame) \ -@@ -874,6 +879,12 @@ int av_frame_apply_cropping(AVFrame *frame, int flags) - (frame->crop_top + frame->crop_bottom) >= frame->height) - return AVERROR(ERANGE); - -+#if CONFIG_SAND -+ // Sand cannot be cropped - do not try -+ if (av_rpi_is_sand_format(frame->format)) -+ return 0; -+#endif -+ - desc = av_pix_fmt_desc_get(frame->format); - if (!desc) - return AVERROR_BUG; -diff --git a/libavutil/frame.h b/libavutil/frame.h -index 2580269549..3a9d323325 100644 ---- a/libavutil/frame.h -+++ b/libavutil/frame.h -@@ -957,6 +957,16 @@ int av_frame_apply_cropping(AVFrame *frame, int flags); - */ - const char *av_frame_side_data_name(enum AVFrameSideDataType type); - -+ -+static inline int av_frame_cropped_width(const AVFrame * const frame) -+{ -+ return frame->width - (frame->crop_left + frame->crop_right); -+} -+static inline int av_frame_cropped_height(const AVFrame * const frame) -+{ -+ return frame->height - (frame->crop_top + frame->crop_bottom); -+} -+ - /** - * @} - */ - -From 9a08431f7790507b0374d9585dfc736000c1bd42 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 27 Apr 2021 12:31:16 +0100 -Subject: [PATCH 006/151] Add an unsand filter - ---- - configure | 1 + - libavfilter/Makefile | 1 + - libavfilter/allfilters.c | 1 + - libavfilter/buffersrc.c | 2 +- - libavfilter/vf_unsand.c | 228 +++++++++++++++++++++++++++++++++++++++ - 5 files changed, 232 insertions(+), 1 deletion(-) - create mode 100644 libavfilter/vf_unsand.c - -diff --git a/configure b/configure -index 27112ced58..7712482bd5 100755 ---- a/configure -+++ b/configure -@@ -3754,6 +3754,7 @@ tonemap_opencl_filter_deps="opencl const_nan" - transpose_opencl_filter_deps="opencl" - transpose_vaapi_filter_deps="vaapi VAProcPipelineCaps_rotation_flags" - transpose_vulkan_filter_deps="vulkan spirv_compiler" -+unsand_filter_select="sand" - unsharp_opencl_filter_deps="opencl" - uspp_filter_deps="gpl avcodec" - vaguedenoiser_filter_deps="gpl" -diff --git a/libavfilter/Makefile b/libavfilter/Makefile -index b3d3d981dd..c14fc995a0 100644 ---- a/libavfilter/Makefile -+++ b/libavfilter/Makefile -@@ -518,6 +518,7 @@ OBJS-$(CONFIG_TRANSPOSE_VAAPI_FILTER) += vf_transpose_vaapi.o vaapi_vpp.o - OBJS-$(CONFIG_TRANSPOSE_VULKAN_FILTER) += vf_transpose_vulkan.o vulkan.o vulkan_filter.o - OBJS-$(CONFIG_TRIM_FILTER) += trim.o - OBJS-$(CONFIG_UNPREMULTIPLY_FILTER) += vf_premultiply.o framesync.o -+OBJS-$(CONFIG_UNSAND_FILTER) += vf_unsand.o - OBJS-$(CONFIG_UNSHARP_FILTER) += vf_unsharp.o - OBJS-$(CONFIG_UNSHARP_OPENCL_FILTER) += vf_unsharp_opencl.o opencl.o \ - opencl/unsharp.o -diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c -index d7db46c2af..b990a00152 100644 ---- a/libavfilter/allfilters.c -+++ b/libavfilter/allfilters.c -@@ -490,6 +490,7 @@ extern const AVFilter ff_vf_trim; - extern const AVFilter ff_vf_unpremultiply; - extern const AVFilter ff_vf_unsharp; - extern const AVFilter ff_vf_unsharp_opencl; -+extern const AVFilter ff_vf_unsand; - extern const AVFilter ff_vf_untile; - extern const AVFilter ff_vf_uspp; - extern const AVFilter ff_vf_v360; -diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c -index ba17450b93..0dbe5d2335 100644 ---- a/libavfilter/buffersrc.c -+++ b/libavfilter/buffersrc.c -@@ -201,7 +201,7 @@ FF_ENABLE_DEPRECATION_WARNINGS - - switch (ctx->outputs[0]->type) { - case AVMEDIA_TYPE_VIDEO: -- CHECK_VIDEO_PARAM_CHANGE(ctx, s, frame->width, frame->height, -+ CHECK_VIDEO_PARAM_CHANGE(ctx, s, av_frame_cropped_width(frame), av_frame_cropped_height(frame), - frame->format, frame->pts); - break; - case AVMEDIA_TYPE_AUDIO: -diff --git a/libavfilter/vf_unsand.c b/libavfilter/vf_unsand.c -new file mode 100644 -index 0000000000..7100f2fc9b ---- /dev/null -+++ b/libavfilter/vf_unsand.c -@@ -0,0 +1,228 @@ -+/* -+ * Copyright (c) 2007 Bobby Bingham -+ * -+ * This file is part of FFmpeg. -+ * -+ * FFmpeg is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * FFmpeg is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with FFmpeg; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+/** -+ * @file -+ * format and noformat video filters -+ */ -+ -+#include -+ -+#include "libavutil/internal.h" -+#include "libavutil/mem.h" -+#include "libavutil/pixdesc.h" -+#include "libavutil/opt.h" -+#include "libavutil/rpi_sand_fns.h" -+ -+#include "avfilter.h" -+#include "formats.h" -+#include "internal.h" -+#include "video.h" -+ -+typedef struct UnsandContext { -+ const AVClass *class; -+} UnsandContext; -+ -+static av_cold void uninit(AVFilterContext *ctx) -+{ -+// UnsandContext *s = ctx->priv; -+} -+ -+static av_cold int init(AVFilterContext *ctx) -+{ -+// UnsandContext *s = ctx->priv; -+ -+ return 0; -+} -+ -+ -+static int filter_frame(AVFilterLink *link, AVFrame *in) -+{ -+ AVFilterLink * const outlink = link->dst->outputs[0]; -+ AVFrame *out = NULL; -+ int rv = 0; -+ -+ if (outlink->format == in->format) { -+ // If nothing to do then do nothing -+ out = in; -+ } -+ else -+ { -+ if ((out = ff_get_video_buffer(outlink, av_frame_cropped_width(in), av_frame_cropped_height(in))) == NULL) -+ { -+ rv = AVERROR(ENOMEM); -+ goto fail; -+ } -+ if (av_rpi_sand_to_planar_frame(out, in) != 0) -+ { -+ rv = -1; -+ goto fail; -+ } -+ -+ av_frame_free(&in); -+ } -+ -+ return ff_filter_frame(outlink, out); -+ -+fail: -+ av_frame_free(&out); -+ av_frame_free(&in); -+ return rv; -+} -+ -+#if 0 -+static void dump_fmts(const AVFilterFormats * fmts) -+{ -+ int i; -+ if (fmts== NULL) { -+ printf("NULL\n"); -+ return; -+ } -+ for (i = 0; i < fmts->nb_formats; ++i) { -+ printf(" %d", fmts->formats[i]); -+ } -+ printf("\n"); -+} -+#endif -+ -+static int query_formats(AVFilterContext *ctx) -+{ -+// UnsandContext *s = ctx->priv; -+ int ret; -+ -+ // If we aren't connected at both ends then just do nothing -+ if (ctx->inputs[0] == NULL || ctx->outputs[0] == NULL) -+ return 0; -+ -+ // Our output formats depend on our input formats and we can't/don't -+ // want to convert between bit depths so we need to wait for the source -+ // to have an opinion before we do -+ if (ctx->inputs[0]->incfg.formats == NULL) -+ return AVERROR(EAGAIN); -+ -+ // Accept anything -+ if (ctx->inputs[0]->outcfg.formats == NULL && -+ (ret = ff_formats_ref(ctx->inputs[0]->incfg.formats, &ctx->inputs[0]->outcfg.formats)) < 0) -+ return ret; -+ -+ // Filter out sand formats -+ -+ // Generate a container if we don't already have one -+ if (ctx->outputs[0]->incfg.formats == NULL) -+ { -+ // Somewhat rubbish way of ensuring we have a good structure -+ const static enum AVPixelFormat out_fmts[] = {AV_PIX_FMT_YUV420P10, AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE}; -+ AVFilterFormats *formats = ff_make_format_list(out_fmts); -+ -+ if (formats == NULL) -+ return AVERROR(ENOMEM); -+ if ((ret = ff_formats_ref(formats, &ctx->outputs[0]->incfg.formats)) < 0) -+ return ret; -+ } -+ -+ // Replace old format list with new filtered list derived from what our -+ // input says it can do -+ { -+ const AVFilterFormats * const src_ff = ctx->inputs[0]->outcfg.formats; -+ AVFilterFormats * const dst_ff = ctx->outputs[0]->incfg.formats; -+ enum AVPixelFormat *dst_fmts = av_malloc(sizeof(enum AVPixelFormat) * src_ff->nb_formats); -+ int i; -+ int n = 0; -+ int seen_420p = 0; -+ int seen_420p10 = 0; -+ -+ for (i = 0; i < src_ff->nb_formats; ++i) { -+ const enum AVPixelFormat f = src_ff->formats[i]; -+ -+ switch (f){ -+ case AV_PIX_FMT_YUV420P: -+ case AV_PIX_FMT_SAND128: -+ case AV_PIX_FMT_RPI4_8: -+ if (!seen_420p) { -+ seen_420p = 1; -+ dst_fmts[n++] = AV_PIX_FMT_YUV420P; -+ } -+ break; -+ case AV_PIX_FMT_SAND64_10: -+ case AV_PIX_FMT_YUV420P10: -+ case AV_PIX_FMT_RPI4_10: -+ if (!seen_420p10) { -+ seen_420p10 = 1; -+ dst_fmts[n++] = AV_PIX_FMT_YUV420P10; -+ } -+ break; -+ default: -+ dst_fmts[n++] = f; -+ break; -+ } -+ } -+ -+ av_freep(&dst_ff->formats); -+ dst_ff->formats = dst_fmts; -+ dst_ff->nb_formats = n; -+ } -+ -+// printf("Unsand: %s calc: ", __func__); -+// dump_fmts(ctx->outputs[0]->incfg.formats); -+ -+ return 0; -+} -+ -+ -+#define OFFSET(x) offsetof(UnsandContext, x) -+static const AVOption unsand_options[] = { -+ { NULL } -+}; -+ -+ -+AVFILTER_DEFINE_CLASS(unsand); -+ -+static const AVFilterPad avfilter_vf_unsand_inputs[] = { -+ { -+ .name = "default", -+ .type = AVMEDIA_TYPE_VIDEO, -+ .filter_frame = filter_frame, -+ }, -+ { NULL } -+}; -+ -+static const AVFilterPad avfilter_vf_unsand_outputs[] = { -+ { -+ .name = "default", -+ .type = AVMEDIA_TYPE_VIDEO -+ }, -+}; -+ -+AVFilter ff_vf_unsand = { -+ .name = "unsand", -+ .description = NULL_IF_CONFIG_SMALL("Convert sand pix fmt to yuv"), -+ -+ .init = init, -+ .uninit = uninit, -+ -+ FILTER_QUERY_FUNC(query_formats), -+ -+ .priv_size = sizeof(UnsandContext), -+ .priv_class = &unsand_class, -+ -+ FILTER_INPUTS(avfilter_vf_unsand_inputs), -+ FILTER_OUTPUTS(avfilter_vf_unsand_outputs), -+}; -+ - -From 6e61007b19544c573f1c2a4c6060d3d24b8d500e Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 27 Apr 2021 12:37:07 +0100 -Subject: [PATCH 007/151] Reduce mmal compile warnings - ---- - libavcodec/mmaldec.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/libavcodec/mmaldec.c b/libavcodec/mmaldec.c -index 3092f58510..6f41b41ac4 100644 ---- a/libavcodec/mmaldec.c -+++ b/libavcodec/mmaldec.c -@@ -24,6 +24,9 @@ - * MMAL Video Decoder - */ - -+#pragma GCC diagnostic push -+// Many many redundant decls in the header files -+#pragma GCC diagnostic ignored "-Wredundant-decls" - #include - #include - #include -@@ -31,6 +34,7 @@ - #include - #include - #include -+#pragma GCC diagnostic pop - #include - - #include "avcodec.h" - -From 01aff455665e8f889330519096912ad0005add3c Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 27 Apr 2021 17:56:16 +0100 -Subject: [PATCH 008/151] Add chroma location to hevc parse - ---- - libavcodec/hevc_parser.c | 13 +++++++++++++ - libavcodec/hevcdec.c | 13 +++++++++++++ - 2 files changed, 26 insertions(+) - -diff --git a/libavcodec/hevc_parser.c b/libavcodec/hevc_parser.c -index 59f9a0ff3e..4ae7222e8b 100644 ---- a/libavcodec/hevc_parser.c -+++ b/libavcodec/hevc_parser.c -@@ -97,6 +97,19 @@ static int hevc_parse_slice_header(AVCodecParserContext *s, H2645NAL *nal, - avctx->profile = ps->sps->ptl.general_ptl.profile_idc; - avctx->level = ps->sps->ptl.general_ptl.level_idc; - -+ if (ps->sps->chroma_format_idc == 1) { -+ avctx->chroma_sample_location = ps->sps->vui.common.chroma_loc_info_present_flag ? -+ ps->sps->vui.common.chroma_sample_loc_type_top_field + 1 : -+ AVCHROMA_LOC_LEFT; -+ } -+ else if (ps->sps->chroma_format_idc == 2 || -+ ps->sps->chroma_format_idc == 3) { -+ avctx->chroma_sample_location = AVCHROMA_LOC_TOPLEFT;; -+ } -+ else { -+ avctx->chroma_sample_location = AVCHROMA_LOC_UNSPECIFIED; -+ } -+ - if (ps->vps->vps_timing_info_present_flag) { - num = ps->vps->vps_num_units_in_tick; - den = ps->vps->vps_time_scale; -diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c -index 567e8d81d4..b6cfea64d3 100644 ---- a/libavcodec/hevcdec.c -+++ b/libavcodec/hevcdec.c -@@ -347,6 +347,19 @@ static void export_stream_params(HEVCContext *s, const HEVCSPS *sps) - else - avctx->color_range = AVCOL_RANGE_MPEG; - -+ if (sps->chroma_format_idc == 1) { -+ avctx->chroma_sample_location = sps->vui.common.chroma_loc_info_present_flag ? -+ sps->vui.common.chroma_sample_loc_type_top_field + 1 : -+ AVCHROMA_LOC_LEFT; -+ } -+ else if (sps->chroma_format_idc == 2 || -+ sps->chroma_format_idc == 3) { -+ avctx->chroma_sample_location = AVCHROMA_LOC_TOPLEFT;; -+ } -+ else { -+ avctx->chroma_sample_location = AVCHROMA_LOC_UNSPECIFIED; -+ } -+ - if (sps->vui.common.colour_description_present_flag) { - avctx->color_primaries = sps->vui.common.colour_primaries; - avctx->color_trc = sps->vui.common.transfer_characteristics; - -From c80aad5d2fb373f7564e4257b1272f2decb06dd0 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 26 Sep 2022 18:20:50 +0100 -Subject: [PATCH 009/151] hwaccel: Add .abort_frame & use in hevcdec - ---- - libavcodec/avcodec.h | 11 +++++++++++ - libavcodec/hevcdec.c | 7 ++++++- - 2 files changed, 17 insertions(+), 1 deletion(-) - -diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h -index 39881a1d2b..32bc78e2be 100644 ---- a/libavcodec/avcodec.h -+++ b/libavcodec/avcodec.h -@@ -2221,6 +2221,17 @@ typedef struct AVHWAccel { - * that avctx->hwaccel_priv_data is invalid. - */ - int (*frame_params)(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx); -+ -+ /** -+ * Called if parsing fails -+ * -+ * An error has occured, end_frame will not be called -+ * start_frame & decode_slice may or may not have been called -+ * Optional -+ * -+ * @param avctx the codec context -+ */ -+ void (*abort_frame)(AVCodecContext *avctx); - } AVHWAccel; - - /** -diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c -index b6cfea64d3..8a0246fa21 100644 ---- a/libavcodec/hevcdec.c -+++ b/libavcodec/hevcdec.c -@@ -3375,8 +3375,13 @@ static int hevc_decode_frame(AVCodecContext *avctx, AVFrame *rframe, - - s->ref = NULL; - ret = decode_nal_units(s, avpkt->data, avpkt->size); -- if (ret < 0) -+ if (ret < 0) { -+ // Ensure that hwaccel knows this frame is over -+ if (s->avctx->hwaccel && s->avctx->hwaccel->abort_frame) -+ s->avctx->hwaccel->abort_frame(s->avctx); -+ - return ret; -+ } - - if (avctx->hwaccel) { - if (s->ref && (ret = avctx->hwaccel->end_frame(avctx)) < 0) { - -From 317722fd652d9a1c1700319c80fc71acf68ddde6 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 26 Sep 2022 18:26:17 +0100 -Subject: [PATCH 010/151] hwaccel: Add CAP_MT_SAFE for accels that can use - multi-thread - ---- - libavcodec/hwconfig.h | 1 + - libavcodec/pthread_frame.c | 7 +++++-- - 2 files changed, 6 insertions(+), 2 deletions(-) - -diff --git a/libavcodec/hwconfig.h b/libavcodec/hwconfig.h -index 721424912c..c43ad55245 100644 ---- a/libavcodec/hwconfig.h -+++ b/libavcodec/hwconfig.h -@@ -24,6 +24,7 @@ - - - #define HWACCEL_CAP_ASYNC_SAFE (1 << 0) -+#define HWACCEL_CAP_MT_SAFE (1 << 1) - - - typedef struct AVCodecHWConfigInternal { -diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c -index d9d5afaa82..2cc89a41f5 100644 ---- a/libavcodec/pthread_frame.c -+++ b/libavcodec/pthread_frame.c -@@ -204,7 +204,8 @@ static attribute_align_arg void *frame_worker_thread(void *arg) - - /* if the previous thread uses hwaccel then we take the lock to ensure - * the threads don't run concurrently */ -- if (avctx->hwaccel) { -+ if (avctx->hwaccel && -+ !(avctx->hwaccel->caps_internal & HWACCEL_CAP_MT_SAFE)) { - pthread_mutex_lock(&p->parent->hwaccel_mutex); - p->hwaccel_serializing = 1; - } -@@ -590,7 +591,9 @@ void ff_thread_finish_setup(AVCodecContext *avctx) { - - if (!(avctx->active_thread_type&FF_THREAD_FRAME)) return; - -- if (avctx->hwaccel && !p->hwaccel_serializing) { -+ if (avctx->hwaccel && -+ !(avctx->hwaccel->caps_internal & HWACCEL_CAP_MT_SAFE) && -+ !p->hwaccel_serializing) { - pthread_mutex_lock(&p->parent->hwaccel_mutex); - p->hwaccel_serializing = 1; - } - -From 9005b263450e154a5ec5258fda17d5998fe7896b Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 27 Apr 2021 17:59:08 +0100 -Subject: [PATCH 011/151] Weak link utils - ---- - libavcodec/weak_link.c | 102 +++++++++++++++++++++++++++++++++++++++++ - libavcodec/weak_link.h | 23 ++++++++++ - 2 files changed, 125 insertions(+) - create mode 100644 libavcodec/weak_link.c - create mode 100644 libavcodec/weak_link.h - -diff --git a/libavcodec/weak_link.c b/libavcodec/weak_link.c -new file mode 100644 -index 0000000000..f234a985b9 ---- /dev/null -+++ b/libavcodec/weak_link.c -@@ -0,0 +1,102 @@ -+#include -+#include -+#include -+#include "weak_link.h" -+ -+struct ff_weak_link_master { -+ atomic_int ref_count; /* 0 is single ref for easier atomics */ -+ pthread_rwlock_t lock; -+ void * ptr; -+}; -+ -+static inline struct ff_weak_link_master * weak_link_x(struct ff_weak_link_client * c) -+{ -+ return (struct ff_weak_link_master *)c; -+} -+ -+struct ff_weak_link_master * ff_weak_link_new(void * p) -+{ -+ struct ff_weak_link_master * w = malloc(sizeof(*w)); -+ if (!w) -+ return NULL; -+ w->ptr = p; -+ if (pthread_rwlock_init(&w->lock, NULL)) { -+ free(w); -+ return NULL; -+ } -+ return w; -+} -+ -+static void weak_link_do_unref(struct ff_weak_link_master * const w) -+{ -+ int n = atomic_fetch_sub(&w->ref_count, 1); -+ if (n) -+ return; -+ -+ pthread_rwlock_destroy(&w->lock); -+ free(w); -+} -+ -+// Unref & break link -+void ff_weak_link_break(struct ff_weak_link_master ** ppLink) -+{ -+ struct ff_weak_link_master * const w = *ppLink; -+ if (!w) -+ return; -+ -+ *ppLink = NULL; -+ pthread_rwlock_wrlock(&w->lock); -+ w->ptr = NULL; -+ pthread_rwlock_unlock(&w->lock); -+ -+ weak_link_do_unref(w); -+} -+ -+struct ff_weak_link_client* ff_weak_link_ref(struct ff_weak_link_master * w) -+{ -+ if (!w) -+ return NULL; -+ atomic_fetch_add(&w->ref_count, 1); -+ return (struct ff_weak_link_client*)w; -+} -+ -+void ff_weak_link_unref(struct ff_weak_link_client ** ppLink) -+{ -+ struct ff_weak_link_master * const w = weak_link_x(*ppLink); -+ if (!w) -+ return; -+ -+ *ppLink = NULL; -+ weak_link_do_unref(w); -+} -+ -+void * ff_weak_link_lock(struct ff_weak_link_client ** ppLink) -+{ -+ struct ff_weak_link_master * const w = weak_link_x(*ppLink); -+ -+ if (!w) -+ return NULL; -+ -+ if (pthread_rwlock_rdlock(&w->lock)) -+ goto broken; -+ -+ if (w->ptr) -+ return w->ptr; -+ -+ pthread_rwlock_unlock(&w->lock); -+ -+broken: -+ *ppLink = NULL; -+ weak_link_do_unref(w); -+ return NULL; -+} -+ -+// Ignores a NULL c (so can be on the return path of both broken & live links) -+void ff_weak_link_unlock(struct ff_weak_link_client * c) -+{ -+ struct ff_weak_link_master * const w = weak_link_x(c); -+ if (w) -+ pthread_rwlock_unlock(&w->lock); -+} -+ -+ -diff --git a/libavcodec/weak_link.h b/libavcodec/weak_link.h -new file mode 100644 -index 0000000000..415b6a27a0 ---- /dev/null -+++ b/libavcodec/weak_link.h -@@ -0,0 +1,23 @@ -+struct ff_weak_link_master; -+struct ff_weak_link_client; -+ -+struct ff_weak_link_master * ff_weak_link_new(void * p); -+void ff_weak_link_break(struct ff_weak_link_master ** ppLink); -+ -+struct ff_weak_link_client* ff_weak_link_ref(struct ff_weak_link_master * w); -+void ff_weak_link_unref(struct ff_weak_link_client ** ppLink); -+ -+// Returns NULL if link broken - in this case it will also zap -+// *ppLink and unref the weak_link. -+// Returns NULL if *ppLink is NULL (so a link once broken stays broken) -+// -+// The above does mean that there is a race if this is called simultainiously -+// by two threads using the same weak_link_client (so don't do that) -+void * ff_weak_link_lock(struct ff_weak_link_client ** ppLink); -+void ff_weak_link_unlock(struct ff_weak_link_client * c); -+ -+ -+ -+ -+ -+ - -From 824be1710ca96d97c86836fdac0e7dcd28a4b92e Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 27 Apr 2021 19:23:26 +0100 -Subject: [PATCH 012/151] Add v4l2_req V4L2 request H265 drm_prime decode - -Has the abiliy to switch between kernel API versions at runtime. This -could be removed later once teher is no chance of usage on an old -kernel. ---- - configure | 14 + - libavcodec/Makefile | 4 + - libavcodec/hevc-ctrls-v1.h | 229 +++++ - libavcodec/hevc-ctrls-v2.h | 257 +++++ - libavcodec/hevcdec.c | 10 + - libavcodec/hwaccels.h | 1 + - libavcodec/hwconfig.h | 2 + - libavcodec/v4l2_req_decode_q.c | 84 ++ - libavcodec/v4l2_req_decode_q.h | 25 + - libavcodec/v4l2_req_devscan.c | 449 +++++++++ - libavcodec/v4l2_req_devscan.h | 23 + - libavcodec/v4l2_req_dmabufs.c | 266 ++++++ - libavcodec/v4l2_req_dmabufs.h | 40 + - libavcodec/v4l2_req_hevc_v1.c | 3 + - libavcodec/v4l2_req_hevc_v2.c | 3 + - libavcodec/v4l2_req_hevc_vx.c | 1213 +++++++++++++++++++++++ - libavcodec/v4l2_req_media.c | 1596 +++++++++++++++++++++++++++++++ - libavcodec/v4l2_req_media.h | 151 +++ - libavcodec/v4l2_req_pollqueue.c | 361 +++++++ - libavcodec/v4l2_req_pollqueue.h | 18 + - libavcodec/v4l2_req_utils.h | 27 + - libavcodec/v4l2_request_hevc.c | 297 ++++++ - libavcodec/v4l2_request_hevc.h | 102 ++ - 23 files changed, 5175 insertions(+) - create mode 100644 libavcodec/hevc-ctrls-v1.h - create mode 100644 libavcodec/hevc-ctrls-v2.h - create mode 100644 libavcodec/v4l2_req_decode_q.c - create mode 100644 libavcodec/v4l2_req_decode_q.h - create mode 100644 libavcodec/v4l2_req_devscan.c - create mode 100644 libavcodec/v4l2_req_devscan.h - create mode 100644 libavcodec/v4l2_req_dmabufs.c - create mode 100644 libavcodec/v4l2_req_dmabufs.h - create mode 100644 libavcodec/v4l2_req_hevc_v1.c - create mode 100644 libavcodec/v4l2_req_hevc_v2.c - create mode 100644 libavcodec/v4l2_req_hevc_vx.c - create mode 100644 libavcodec/v4l2_req_media.c - create mode 100644 libavcodec/v4l2_req_media.h - create mode 100644 libavcodec/v4l2_req_pollqueue.c - create mode 100644 libavcodec/v4l2_req_pollqueue.h - create mode 100644 libavcodec/v4l2_req_utils.h - create mode 100644 libavcodec/v4l2_request_hevc.c - create mode 100644 libavcodec/v4l2_request_hevc.h - -diff --git a/configure b/configure -index 7712482bd5..199aa2b3d5 100755 ---- a/configure -+++ b/configure -@@ -281,6 +281,7 @@ External library support: - if openssl, gnutls or mbedtls is not used [no] - --enable-libtwolame enable MP2 encoding via libtwolame [no] - --enable-libuavs3d enable AVS3 decoding via libuavs3d [no] -+ --enable-libudev enable libudev [no] - --enable-libv4l2 enable libv4l2/v4l-utils [no] - --enable-libvidstab enable video stabilization using vid.stab [no] - --enable-libvmaf enable vmaf filter via libvmaf [no] -@@ -351,6 +352,7 @@ External library support: - --enable-omx-rpi enable OpenMAX IL code for Raspberry Pi [no] - --enable-rkmpp enable Rockchip Media Process Platform code [no] - --disable-v4l2-m2m disable V4L2 mem2mem code [autodetect] -+ --enable-v4l2-request enable V4L2 request API code [no] - --disable-vaapi disable Video Acceleration API (mainly Unix/Intel) code [autodetect] - --disable-vdpau disable Nvidia Video Decode and Presentation API for Unix code [autodetect] - --disable-videotoolbox disable VideoToolbox code [autodetect] -@@ -1858,6 +1860,7 @@ EXTERNAL_LIBRARY_LIST=" - libtheora - libtwolame - libuavs3d -+ libudev - libv4l2 - libvmaf - libvorbis -@@ -1914,6 +1917,7 @@ HWACCEL_LIBRARY_LIST=" - mmal - omx - opencl -+ v4l2_request - " - - DOCUMENT_LIST=" -@@ -3002,6 +3006,7 @@ d3d11va_deps="dxva_h ID3D11VideoDecoder ID3D11VideoContext" - dxva2_deps="dxva2api_h DXVA2_ConfigPictureDecode ole32 user32" - ffnvcodec_deps_any="libdl LoadLibrary" - nvdec_deps="ffnvcodec" -+v4l2_request_deps="linux_videodev2_h linux_media_h v4l2_timeval_to_ns libdrm libudev" - vaapi_x11_deps="xlib_x11" - videotoolbox_hwaccel_deps="videotoolbox pthreads" - videotoolbox_hwaccel_extralibs="-framework QuartzCore" -@@ -3045,6 +3050,8 @@ hevc_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_HEVC" - hevc_dxva2_hwaccel_select="hevc_decoder" - hevc_nvdec_hwaccel_deps="nvdec" - hevc_nvdec_hwaccel_select="hevc_decoder" -+hevc_v4l2request_hwaccel_deps="v4l2_request" -+hevc_v4l2request_hwaccel_select="hevc_decoder" - hevc_vaapi_hwaccel_deps="vaapi VAPictureParameterBufferHEVC" - hevc_vaapi_hwaccel_select="hevc_decoder" - hevc_vdpau_hwaccel_deps="vdpau VdpPictureInfoHEVC" -@@ -6696,6 +6703,7 @@ enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame - { check_lib libtwolame twolame.h twolame_encode_buffer_float32_interleaved -ltwolame || - die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; } - enabled libuavs3d && require_pkg_config libuavs3d "uavs3d >= 1.1.41" uavs3d.h uavs3d_decode -+enabled libudev && require_pkg_config libudev libudev libudev.h udev_new - enabled libv4l2 && require_pkg_config libv4l2 libv4l2 libv4l2.h v4l2_ioctl - enabled libvidstab && require_pkg_config libvidstab "vidstab >= 0.98" vid.stab/libvidstab.h vsMotionDetectInit - enabled libvmaf && require_pkg_config libvmaf "libvmaf >= 2.0.0" libvmaf.h vmaf_init -@@ -6798,6 +6806,10 @@ enabled rkmpp && { require_pkg_config rkmpp rockchip_mpp rockchip/r - { enabled libdrm || - die "ERROR: rkmpp requires --enable-libdrm"; } - } -+enabled v4l2_request && { enabled libdrm || -+ die "ERROR: v4l2-request requires --enable-libdrm"; } && -+ { enabled libudev || -+ die "ERROR: v4l2-request requires --enable-libudev"; } - enabled vapoursynth && require_pkg_config vapoursynth "vapoursynth-script >= 42" VSScript.h vsscript_init - - -@@ -6880,6 +6892,8 @@ if enabled v4l2_m2m; then - check_cc vp9_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VP9;" - fi - -+check_func_headers "linux/media.h linux/videodev2.h" v4l2_timeval_to_ns -+check_cc hevc_v4l2_request linux/videodev2.h "int i = V4L2_PIX_FMT_HEVC_SLICE;" - check_headers sys/videoio.h - test_code cc sys/videoio.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_sanitized struct_v4l2_frmivalenum_discrete - -diff --git a/libavcodec/Makefile b/libavcodec/Makefile -index 389253f5d0..2d440b5648 100644 ---- a/libavcodec/Makefile -+++ b/libavcodec/Makefile -@@ -170,6 +170,8 @@ OBJS-$(CONFIG_VP3DSP) += vp3dsp.o - OBJS-$(CONFIG_VP56DSP) += vp56dsp.o - OBJS-$(CONFIG_VP8DSP) += vp8dsp.o - OBJS-$(CONFIG_V4L2_M2M) += v4l2_m2m.o v4l2_context.o v4l2_buffers.o v4l2_fmt.o -+OBJS-$(CONFIG_V4L2_REQUEST) += v4l2_req_media.o v4l2_req_pollqueue.o v4l2_req_dmabufs.o\ -+ v4l2_req_devscan.o weak_link.o - OBJS-$(CONFIG_WMA_FREQS) += wma_freqs.o - OBJS-$(CONFIG_WMV2DSP) += wmv2dsp.o - -@@ -996,6 +998,8 @@ OBJS-$(CONFIG_HEVC_D3D11VA_HWACCEL) += dxva2_hevc.o - OBJS-$(CONFIG_HEVC_DXVA2_HWACCEL) += dxva2_hevc.o - OBJS-$(CONFIG_HEVC_NVDEC_HWACCEL) += nvdec_hevc.o - OBJS-$(CONFIG_HEVC_QSV_HWACCEL) += qsvdec.o -+OBJS-$(CONFIG_HEVC_V4L2REQUEST_HWACCEL) += v4l2_request_hevc.o v4l2_req_decode_q.o\ -+ v4l2_req_hevc_v1.o v4l2_req_hevc_v2.o - OBJS-$(CONFIG_HEVC_VAAPI_HWACCEL) += vaapi_hevc.o h265_profile_level.o - OBJS-$(CONFIG_HEVC_VDPAU_HWACCEL) += vdpau_hevc.o h265_profile_level.o - OBJS-$(CONFIG_MJPEG_NVDEC_HWACCEL) += nvdec_mjpeg.o -diff --git a/libavcodec/hevc-ctrls-v1.h b/libavcodec/hevc-ctrls-v1.h -new file mode 100644 -index 0000000000..72cbba0953 ---- /dev/null -+++ b/libavcodec/hevc-ctrls-v1.h -@@ -0,0 +1,229 @@ -+/* SPDX-License-Identifier: GPL-2.0 */ -+/* -+ * These are the HEVC state controls for use with stateless HEVC -+ * codec drivers. -+ * -+ * It turns out that these structs are not stable yet and will undergo -+ * more changes. So keep them private until they are stable and ready to -+ * become part of the official public API. -+ */ -+ -+#ifndef _HEVC_CTRLS_H_ -+#define _HEVC_CTRLS_H_ -+ -+#include -+ -+/* The pixel format isn't stable at the moment and will likely be renamed. */ -+#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC parsed slices */ -+ -+#define V4L2_CID_MPEG_VIDEO_HEVC_SPS (V4L2_CID_MPEG_BASE + 1008) -+#define V4L2_CID_MPEG_VIDEO_HEVC_PPS (V4L2_CID_MPEG_BASE + 1009) -+#define V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS (V4L2_CID_MPEG_BASE + 1010) -+#define V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX (V4L2_CID_MPEG_BASE + 1011) -+#define V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE (V4L2_CID_MPEG_BASE + 1015) -+#define V4L2_CID_MPEG_VIDEO_HEVC_START_CODE (V4L2_CID_MPEG_BASE + 1016) -+ -+/* enum v4l2_ctrl_type type values */ -+#define V4L2_CTRL_TYPE_HEVC_SPS 0x0120 -+#define V4L2_CTRL_TYPE_HEVC_PPS 0x0121 -+#define V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS 0x0122 -+#define V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX 0x0123 -+ -+enum v4l2_mpeg_video_hevc_decode_mode { -+ V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_SLICE_BASED, -+ V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_FRAME_BASED, -+}; -+ -+enum v4l2_mpeg_video_hevc_start_code { -+ V4L2_MPEG_VIDEO_HEVC_START_CODE_NONE, -+ V4L2_MPEG_VIDEO_HEVC_START_CODE_ANNEX_B, -+}; -+ -+#define V4L2_HEVC_SLICE_TYPE_B 0 -+#define V4L2_HEVC_SLICE_TYPE_P 1 -+#define V4L2_HEVC_SLICE_TYPE_I 2 -+ -+#define V4L2_HEVC_SPS_FLAG_SEPARATE_COLOUR_PLANE (1ULL << 0) -+#define V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED (1ULL << 1) -+#define V4L2_HEVC_SPS_FLAG_AMP_ENABLED (1ULL << 2) -+#define V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET (1ULL << 3) -+#define V4L2_HEVC_SPS_FLAG_PCM_ENABLED (1ULL << 4) -+#define V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED (1ULL << 5) -+#define V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT (1ULL << 6) -+#define V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED (1ULL << 7) -+#define V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED (1ULL << 8) -+ -+/* The controls are not stable at the moment and will likely be reworked. */ -+struct v4l2_ctrl_hevc_sps { -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: Sequence parameter set */ -+ __u16 pic_width_in_luma_samples; -+ __u16 pic_height_in_luma_samples; -+ __u8 bit_depth_luma_minus8; -+ __u8 bit_depth_chroma_minus8; -+ __u8 log2_max_pic_order_cnt_lsb_minus4; -+ __u8 sps_max_dec_pic_buffering_minus1; -+ __u8 sps_max_num_reorder_pics; -+ __u8 sps_max_latency_increase_plus1; -+ __u8 log2_min_luma_coding_block_size_minus3; -+ __u8 log2_diff_max_min_luma_coding_block_size; -+ __u8 log2_min_luma_transform_block_size_minus2; -+ __u8 log2_diff_max_min_luma_transform_block_size; -+ __u8 max_transform_hierarchy_depth_inter; -+ __u8 max_transform_hierarchy_depth_intra; -+ __u8 pcm_sample_bit_depth_luma_minus1; -+ __u8 pcm_sample_bit_depth_chroma_minus1; -+ __u8 log2_min_pcm_luma_coding_block_size_minus3; -+ __u8 log2_diff_max_min_pcm_luma_coding_block_size; -+ __u8 num_short_term_ref_pic_sets; -+ __u8 num_long_term_ref_pics_sps; -+ __u8 chroma_format_idc; -+ __u8 sps_max_sub_layers_minus1; -+ -+ __u64 flags; -+}; -+ -+#define V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT (1ULL << 0) -+#define V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT (1ULL << 1) -+#define V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED (1ULL << 2) -+#define V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT (1ULL << 3) -+#define V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED (1ULL << 4) -+#define V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED (1ULL << 5) -+#define V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED (1ULL << 6) -+#define V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT (1ULL << 7) -+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED (1ULL << 8) -+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED (1ULL << 9) -+#define V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED (1ULL << 10) -+#define V4L2_HEVC_PPS_FLAG_TILES_ENABLED (1ULL << 11) -+#define V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED (1ULL << 12) -+#define V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED (1ULL << 13) -+#define V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 14) -+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED (1ULL << 15) -+#define V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER (1ULL << 16) -+#define V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT (1ULL << 17) -+#define V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT (1ULL << 18) -+ -+struct v4l2_ctrl_hevc_pps { -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: Picture parameter set */ -+ __u8 num_extra_slice_header_bits; -+ __s8 init_qp_minus26; -+ __u8 diff_cu_qp_delta_depth; -+ __s8 pps_cb_qp_offset; -+ __s8 pps_cr_qp_offset; -+ __u8 num_tile_columns_minus1; -+ __u8 num_tile_rows_minus1; -+ __u8 column_width_minus1[20]; -+ __u8 row_height_minus1[22]; -+ __s8 pps_beta_offset_div2; -+ __s8 pps_tc_offset_div2; -+ __u8 log2_parallel_merge_level_minus2; -+ -+ __u8 padding[4]; -+ __u64 flags; -+}; -+ -+#define V4L2_HEVC_DPB_ENTRY_RPS_ST_CURR_BEFORE 0x01 -+#define V4L2_HEVC_DPB_ENTRY_RPS_ST_CURR_AFTER 0x02 -+#define V4L2_HEVC_DPB_ENTRY_RPS_LT_CURR 0x03 -+ -+#define V4L2_HEVC_DPB_ENTRIES_NUM_MAX 16 -+ -+struct v4l2_hevc_dpb_entry { -+ __u64 timestamp; -+ __u8 rps; -+ __u8 field_pic; -+ __u16 pic_order_cnt[2]; -+ __u8 padding[2]; -+}; -+ -+struct v4l2_hevc_pred_weight_table { -+ __s8 delta_luma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __s8 luma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __s8 delta_chroma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]; -+ __s8 chroma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]; -+ -+ __s8 delta_luma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __s8 luma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __s8 delta_chroma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]; -+ __s8 chroma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]; -+ -+ __u8 padding[6]; -+ -+ __u8 luma_log2_weight_denom; -+ __s8 delta_chroma_log2_weight_denom; -+}; -+ -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_LUMA (1ULL << 0) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_CHROMA (1ULL << 1) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_TEMPORAL_MVP_ENABLED (1ULL << 2) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_MVD_L1_ZERO (1ULL << 3) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_CABAC_INIT (1ULL << 4) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_COLLOCATED_FROM_L0 (1ULL << 5) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_USE_INTEGER_MV (1ULL << 6) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_DEBLOCKING_FILTER_DISABLED (1ULL << 7) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 8) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT (1ULL << 9) -+ -+struct v4l2_ctrl_hevc_slice_params { -+ __u32 bit_size; -+ __u32 data_bit_offset; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */ -+ __u32 slice_segment_addr; -+ __u32 num_entry_point_offsets; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: NAL unit header */ -+ __u8 nal_unit_type; -+ __u8 nuh_temporal_id_plus1; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */ -+ __u8 slice_type; -+ __u8 colour_plane_id; -+ __u16 slice_pic_order_cnt; -+ __u8 num_ref_idx_l0_active_minus1; -+ __u8 num_ref_idx_l1_active_minus1; -+ __u8 collocated_ref_idx; -+ __u8 five_minus_max_num_merge_cand; -+ __s8 slice_qp_delta; -+ __s8 slice_cb_qp_offset; -+ __s8 slice_cr_qp_offset; -+ __s8 slice_act_y_qp_offset; -+ __s8 slice_act_cb_qp_offset; -+ __s8 slice_act_cr_qp_offset; -+ __s8 slice_beta_offset_div2; -+ __s8 slice_tc_offset_div2; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: Picture timing SEI message */ -+ __u8 pic_struct; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */ -+ __u8 num_active_dpb_entries; -+ __u8 ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __u8 ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ -+ __u8 num_rps_poc_st_curr_before; -+ __u8 num_rps_poc_st_curr_after; -+ __u8 num_rps_poc_lt_curr; -+ -+ __u8 padding; -+ -+ __u32 entry_point_offset_minus1[256]; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */ -+ struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: Weighted prediction parameter */ -+ struct v4l2_hevc_pred_weight_table pred_weight_table; -+ -+ __u64 flags; -+}; -+ -+struct v4l2_ctrl_hevc_scaling_matrix { -+ __u8 scaling_list_4x4[6][16]; -+ __u8 scaling_list_8x8[6][64]; -+ __u8 scaling_list_16x16[6][64]; -+ __u8 scaling_list_32x32[2][64]; -+ __u8 scaling_list_dc_coef_16x16[6]; -+ __u8 scaling_list_dc_coef_32x32[2]; -+}; -+ -+#endif -diff --git a/libavcodec/hevc-ctrls-v2.h b/libavcodec/hevc-ctrls-v2.h -new file mode 100644 -index 0000000000..7cbbbf055f ---- /dev/null -+++ b/libavcodec/hevc-ctrls-v2.h -@@ -0,0 +1,257 @@ -+/* SPDX-License-Identifier: GPL-2.0 */ -+/* -+ * These are the HEVC state controls for use with stateless HEVC -+ * codec drivers. -+ * -+ * It turns out that these structs are not stable yet and will undergo -+ * more changes. So keep them private until they are stable and ready to -+ * become part of the official public API. -+ */ -+ -+#ifndef _HEVC_CTRLS_H_ -+#define _HEVC_CTRLS_H_ -+ -+#include -+ -+/* The pixel format isn't stable at the moment and will likely be renamed. */ -+#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC parsed slices */ -+ -+#define V4L2_CID_MPEG_VIDEO_HEVC_SPS (V4L2_CID_CODEC_BASE + 1008) -+#define V4L2_CID_MPEG_VIDEO_HEVC_PPS (V4L2_CID_CODEC_BASE + 1009) -+#define V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS (V4L2_CID_CODEC_BASE + 1010) -+#define V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX (V4L2_CID_CODEC_BASE + 1011) -+#define V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS (V4L2_CID_CODEC_BASE + 1012) -+#define V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE (V4L2_CID_CODEC_BASE + 1015) -+#define V4L2_CID_MPEG_VIDEO_HEVC_START_CODE (V4L2_CID_CODEC_BASE + 1016) -+ -+/* enum v4l2_ctrl_type type values */ -+#define V4L2_CTRL_TYPE_HEVC_SPS 0x0120 -+#define V4L2_CTRL_TYPE_HEVC_PPS 0x0121 -+#define V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS 0x0122 -+#define V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX 0x0123 -+#define V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS 0x0124 -+ -+enum v4l2_mpeg_video_hevc_decode_mode { -+ V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_SLICE_BASED, -+ V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_FRAME_BASED, -+}; -+ -+enum v4l2_mpeg_video_hevc_start_code { -+ V4L2_MPEG_VIDEO_HEVC_START_CODE_NONE, -+ V4L2_MPEG_VIDEO_HEVC_START_CODE_ANNEX_B, -+}; -+ -+#define V4L2_HEVC_SLICE_TYPE_B 0 -+#define V4L2_HEVC_SLICE_TYPE_P 1 -+#define V4L2_HEVC_SLICE_TYPE_I 2 -+ -+#define V4L2_HEVC_SPS_FLAG_SEPARATE_COLOUR_PLANE (1ULL << 0) -+#define V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED (1ULL << 1) -+#define V4L2_HEVC_SPS_FLAG_AMP_ENABLED (1ULL << 2) -+#define V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET (1ULL << 3) -+#define V4L2_HEVC_SPS_FLAG_PCM_ENABLED (1ULL << 4) -+#define V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED (1ULL << 5) -+#define V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT (1ULL << 6) -+#define V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED (1ULL << 7) -+#define V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED (1ULL << 8) -+ -+/* The controls are not stable at the moment and will likely be reworked. */ -+struct v4l2_ctrl_hevc_sps { -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: Sequence parameter set */ -+ __u16 pic_width_in_luma_samples; -+ __u16 pic_height_in_luma_samples; -+ __u8 bit_depth_luma_minus8; -+ __u8 bit_depth_chroma_minus8; -+ __u8 log2_max_pic_order_cnt_lsb_minus4; -+ __u8 sps_max_dec_pic_buffering_minus1; -+ __u8 sps_max_num_reorder_pics; -+ __u8 sps_max_latency_increase_plus1; -+ __u8 log2_min_luma_coding_block_size_minus3; -+ __u8 log2_diff_max_min_luma_coding_block_size; -+ __u8 log2_min_luma_transform_block_size_minus2; -+ __u8 log2_diff_max_min_luma_transform_block_size; -+ __u8 max_transform_hierarchy_depth_inter; -+ __u8 max_transform_hierarchy_depth_intra; -+ __u8 pcm_sample_bit_depth_luma_minus1; -+ __u8 pcm_sample_bit_depth_chroma_minus1; -+ __u8 log2_min_pcm_luma_coding_block_size_minus3; -+ __u8 log2_diff_max_min_pcm_luma_coding_block_size; -+ __u8 num_short_term_ref_pic_sets; -+ __u8 num_long_term_ref_pics_sps; -+ __u8 chroma_format_idc; -+ __u8 sps_max_sub_layers_minus1; -+ -+ __u64 flags; -+}; -+ -+#define V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT_ENABLED (1ULL << 0) -+#define V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT (1ULL << 1) -+#define V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED (1ULL << 2) -+#define V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT (1ULL << 3) -+#define V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED (1ULL << 4) -+#define V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED (1ULL << 5) -+#define V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED (1ULL << 6) -+#define V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT (1ULL << 7) -+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED (1ULL << 8) -+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED (1ULL << 9) -+#define V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED (1ULL << 10) -+#define V4L2_HEVC_PPS_FLAG_TILES_ENABLED (1ULL << 11) -+#define V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED (1ULL << 12) -+#define V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED (1ULL << 13) -+#define V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 14) -+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED (1ULL << 15) -+#define V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER (1ULL << 16) -+#define V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT (1ULL << 17) -+#define V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT (1ULL << 18) -+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT (1ULL << 19) -+#define V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING (1ULL << 20) -+ -+struct v4l2_ctrl_hevc_pps { -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: Picture parameter set */ -+ __u8 num_extra_slice_header_bits; -+ __u8 num_ref_idx_l0_default_active_minus1; -+ __u8 num_ref_idx_l1_default_active_minus1; -+ __s8 init_qp_minus26; -+ __u8 diff_cu_qp_delta_depth; -+ __s8 pps_cb_qp_offset; -+ __s8 pps_cr_qp_offset; -+ __u8 num_tile_columns_minus1; -+ __u8 num_tile_rows_minus1; -+ __u8 column_width_minus1[20]; -+ __u8 row_height_minus1[22]; -+ __s8 pps_beta_offset_div2; -+ __s8 pps_tc_offset_div2; -+ __u8 log2_parallel_merge_level_minus2; -+ -+ __u8 padding[4]; -+ __u64 flags; -+}; -+ -+#define V4L2_HEVC_DPB_ENTRY_RPS_ST_CURR_BEFORE 0x01 -+#define V4L2_HEVC_DPB_ENTRY_RPS_ST_CURR_AFTER 0x02 -+#define V4L2_HEVC_DPB_ENTRY_RPS_LT_CURR 0x03 -+ -+#define V4L2_HEVC_DPB_ENTRIES_NUM_MAX 16 -+ -+struct v4l2_hevc_dpb_entry { -+ __u64 timestamp; -+ __u8 rps; -+ __u8 field_pic; -+ __u16 pic_order_cnt[2]; -+ __u8 padding[2]; -+}; -+ -+struct v4l2_hevc_pred_weight_table { -+ __s8 delta_luma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __s8 luma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __s8 delta_chroma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]; -+ __s8 chroma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]; -+ -+ __s8 delta_luma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __s8 luma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __s8 delta_chroma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]; -+ __s8 chroma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]; -+ -+ __u8 padding[6]; -+ -+ __u8 luma_log2_weight_denom; -+ __s8 delta_chroma_log2_weight_denom; -+}; -+ -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_LUMA (1ULL << 0) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_CHROMA (1ULL << 1) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_TEMPORAL_MVP_ENABLED (1ULL << 2) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_MVD_L1_ZERO (1ULL << 3) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_CABAC_INIT (1ULL << 4) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_COLLOCATED_FROM_L0 (1ULL << 5) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_USE_INTEGER_MV (1ULL << 6) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_DEBLOCKING_FILTER_DISABLED (1ULL << 7) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 8) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT (1ULL << 9) -+ -+struct v4l2_ctrl_hevc_slice_params { -+ __u32 bit_size; -+ __u32 data_bit_offset; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */ -+ __u32 slice_segment_addr; -+ __u32 num_entry_point_offsets; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: NAL unit header */ -+ __u8 nal_unit_type; -+ __u8 nuh_temporal_id_plus1; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */ -+ __u8 slice_type; -+ __u8 colour_plane_id; -+ __u16 slice_pic_order_cnt; -+ __u8 num_ref_idx_l0_active_minus1; -+ __u8 num_ref_idx_l1_active_minus1; -+ __u8 collocated_ref_idx; -+ __u8 five_minus_max_num_merge_cand; -+ __s8 slice_qp_delta; -+ __s8 slice_cb_qp_offset; -+ __s8 slice_cr_qp_offset; -+ __s8 slice_act_y_qp_offset; -+ __s8 slice_act_cb_qp_offset; -+ __s8 slice_act_cr_qp_offset; -+ __s8 slice_beta_offset_div2; -+ __s8 slice_tc_offset_div2; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: Picture timing SEI message */ -+ __u8 pic_struct; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */ -+ __u8 ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __u8 ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ -+ __u8 padding[5]; -+ -+ __u32 entry_point_offset_minus1[256]; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: Weighted prediction parameter */ -+ struct v4l2_hevc_pred_weight_table pred_weight_table; -+ -+ __u64 flags; -+}; -+ -+#define V4L2_HEVC_DECODE_PARAM_FLAG_IRAP_PIC 0x1 -+#define V4L2_HEVC_DECODE_PARAM_FLAG_IDR_PIC 0x2 -+#define V4L2_HEVC_DECODE_PARAM_FLAG_NO_OUTPUT_OF_PRIOR 0x4 -+ -+struct v4l2_ctrl_hevc_decode_params { -+ __s32 pic_order_cnt_val; -+ __u8 num_active_dpb_entries; -+ struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __u8 num_poc_st_curr_before; -+ __u8 num_poc_st_curr_after; -+ __u8 num_poc_lt_curr; -+ __u8 poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __u8 poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __u8 poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __u64 flags; -+}; -+ -+/* MPEG-class control IDs specific to the Hantro driver as defined by V4L2 */ -+#define V4L2_CID_CODEC_HANTRO_BASE (V4L2_CTRL_CLASS_CODEC | 0x1200) -+/* -+ * V4L2_CID_HANTRO_HEVC_SLICE_HEADER_SKIP - -+ * the number of data (in bits) to skip in the -+ * slice segment header. -+ * If non-IDR, the bits to be skipped go from syntax element "pic_output_flag" -+ * to before syntax element "slice_temporal_mvp_enabled_flag". -+ * If IDR, the skipped bits are just "pic_output_flag" -+ * (separate_colour_plane_flag is not supported). -+ */ -+#define V4L2_CID_HANTRO_HEVC_SLICE_HEADER_SKIP (V4L2_CID_CODEC_HANTRO_BASE + 0) -+ -+struct v4l2_ctrl_hevc_scaling_matrix { -+ __u8 scaling_list_4x4[6][16]; -+ __u8 scaling_list_8x8[6][64]; -+ __u8 scaling_list_16x16[6][64]; -+ __u8 scaling_list_32x32[2][64]; -+ __u8 scaling_list_dc_coef_16x16[6]; -+ __u8 scaling_list_dc_coef_32x32[2]; -+}; -+ -+#endif -diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c -index 8a0246fa21..2867cb2e16 100644 ---- a/libavcodec/hevcdec.c -+++ b/libavcodec/hevcdec.c -@@ -416,6 +416,7 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps) - #define HWACCEL_MAX (CONFIG_HEVC_DXVA2_HWACCEL + \ - CONFIG_HEVC_D3D11VA_HWACCEL * 2 + \ - CONFIG_HEVC_NVDEC_HWACCEL + \ -+ CONFIG_HEVC_V4L2REQUEST_HWACCEL + \ - CONFIG_HEVC_VAAPI_HWACCEL + \ - CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL + \ - CONFIG_HEVC_VDPAU_HWACCEL) -@@ -442,6 +443,9 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps) - #endif - #if CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL - *fmt++ = AV_PIX_FMT_VIDEOTOOLBOX; -+#endif -+#if CONFIG_HEVC_V4L2REQUEST_HWACCEL -+ *fmt++ = AV_PIX_FMT_DRM_PRIME; - #endif - break; - case AV_PIX_FMT_YUV420P10: -@@ -463,6 +467,9 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps) - #endif - #if CONFIG_HEVC_NVDEC_HWACCEL - *fmt++ = AV_PIX_FMT_CUDA; -+#endif -+#if CONFIG_HEVC_V4L2REQUEST_HWACCEL -+ *fmt++ = AV_PIX_FMT_DRM_PRIME; - #endif - break; - case AV_PIX_FMT_YUV444P: -@@ -3749,6 +3756,9 @@ const FFCodec ff_hevc_decoder = { - #if CONFIG_HEVC_NVDEC_HWACCEL - HWACCEL_NVDEC(hevc), - #endif -+#if CONFIG_HEVC_V4L2REQUEST_HWACCEL -+ HWACCEL_V4L2REQUEST(hevc), -+#endif - #if CONFIG_HEVC_VAAPI_HWACCEL - HWACCEL_VAAPI(hevc), - #endif -diff --git a/libavcodec/hwaccels.h b/libavcodec/hwaccels.h -index aca55831f3..f32d1c4ec4 100644 ---- a/libavcodec/hwaccels.h -+++ b/libavcodec/hwaccels.h -@@ -40,6 +40,7 @@ extern const AVHWAccel ff_hevc_d3d11va_hwaccel; - extern const AVHWAccel ff_hevc_d3d11va2_hwaccel; - extern const AVHWAccel ff_hevc_dxva2_hwaccel; - extern const AVHWAccel ff_hevc_nvdec_hwaccel; -+extern const AVHWAccel ff_hevc_v4l2request_hwaccel; - extern const AVHWAccel ff_hevc_vaapi_hwaccel; - extern const AVHWAccel ff_hevc_vdpau_hwaccel; - extern const AVHWAccel ff_hevc_videotoolbox_hwaccel; -diff --git a/libavcodec/hwconfig.h b/libavcodec/hwconfig.h -index c43ad55245..b8aa383071 100644 ---- a/libavcodec/hwconfig.h -+++ b/libavcodec/hwconfig.h -@@ -71,6 +71,8 @@ typedef struct AVCodecHWConfigInternal { - HW_CONFIG_HWACCEL(1, 1, 0, D3D11, D3D11VA, ff_ ## codec ## _d3d11va2_hwaccel) - #define HWACCEL_NVDEC(codec) \ - HW_CONFIG_HWACCEL(1, 1, 0, CUDA, CUDA, ff_ ## codec ## _nvdec_hwaccel) -+#define HWACCEL_V4L2REQUEST(codec) \ -+ HW_CONFIG_HWACCEL(1, 0, 0, DRM_PRIME, DRM, ff_ ## codec ## _v4l2request_hwaccel) - #define HWACCEL_VAAPI(codec) \ - HW_CONFIG_HWACCEL(1, 1, 1, VAAPI, VAAPI, ff_ ## codec ## _vaapi_hwaccel) - #define HWACCEL_VDPAU(codec) \ -diff --git a/libavcodec/v4l2_req_decode_q.c b/libavcodec/v4l2_req_decode_q.c -new file mode 100644 -index 0000000000..5b3fb958fa ---- /dev/null -+++ b/libavcodec/v4l2_req_decode_q.c -@@ -0,0 +1,84 @@ -+#include -+#include -+#include -+ -+#include "v4l2_req_decode_q.h" -+ -+int decode_q_in_q(const req_decode_ent * const d) -+{ -+ return d->in_q; -+} -+ -+void decode_q_add(req_decode_q * const q, req_decode_ent * const d) -+{ -+ pthread_mutex_lock(&q->q_lock); -+ if (!q->head) { -+ q->head = d; -+ q->tail = d; -+ d->prev = NULL; -+ } -+ else { -+ q->tail->next = d; -+ d->prev = q->tail; -+ q->tail = d; -+ } -+ d->next = NULL; -+ d->in_q = 1; -+ pthread_mutex_unlock(&q->q_lock); -+} -+ -+// Remove entry from Q - if head wake-up anything that was waiting -+void decode_q_remove(req_decode_q * const q, req_decode_ent * const d) -+{ -+ int try_signal = 0; -+ -+ if (!d->in_q) -+ return; -+ -+ pthread_mutex_lock(&q->q_lock); -+ if (d->prev) -+ d->prev->next = d->next; -+ else { -+ try_signal = 1; // Only need to signal if we were head -+ q->head = d->next; -+ } -+ -+ if (d->next) -+ d->next->prev = d->prev; -+ else -+ q->tail = d->prev; -+ -+ // Not strictly needed but makes debug easier -+ d->next = NULL; -+ d->prev = NULL; -+ d->in_q = 0; -+ pthread_mutex_unlock(&q->q_lock); -+ -+ if (try_signal) -+ pthread_cond_broadcast(&q->q_cond); -+} -+ -+void decode_q_wait(req_decode_q * const q, req_decode_ent * const d) -+{ -+ pthread_mutex_lock(&q->q_lock); -+ -+ while (q->head != d) -+ pthread_cond_wait(&q->q_cond, &q->q_lock); -+ -+ pthread_mutex_unlock(&q->q_lock); -+} -+ -+void decode_q_uninit(req_decode_q * const q) -+{ -+ pthread_mutex_destroy(&q->q_lock); -+ pthread_cond_destroy(&q->q_cond); -+} -+ -+void decode_q_init(req_decode_q * const q) -+{ -+ memset(q, 0, sizeof(*q)); -+ pthread_mutex_init(&q->q_lock, NULL); -+ pthread_cond_init(&q->q_cond, NULL); -+} -+ -+ -diff --git a/libavcodec/v4l2_req_decode_q.h b/libavcodec/v4l2_req_decode_q.h -new file mode 100644 -index 0000000000..af7bbe1de4 ---- /dev/null -+++ b/libavcodec/v4l2_req_decode_q.h -@@ -0,0 +1,25 @@ -+#ifndef AVCODEC_V4L2_REQ_DECODE_Q_H -+#define AVCODEC_V4L2_REQ_DECODE_Q_H -+ -+typedef struct req_decode_ent { -+ struct req_decode_ent * next; -+ struct req_decode_ent * prev; -+ int in_q; -+} req_decode_ent; -+ -+typedef struct req_decode_q { -+ pthread_mutex_t q_lock; -+ pthread_cond_t q_cond; -+ req_decode_ent * head; -+ req_decode_ent * tail; -+} req_decode_q; -+ -+int decode_q_in_q(const req_decode_ent * const d); -+void decode_q_add(req_decode_q * const q, req_decode_ent * const d); -+void decode_q_remove(req_decode_q * const q, req_decode_ent * const d); -+void decode_q_wait(req_decode_q * const q, req_decode_ent * const d); -+void decode_q_uninit(req_decode_q * const q); -+void decode_q_init(req_decode_q * const q); -+ -+#endif -+ -diff --git a/libavcodec/v4l2_req_devscan.c b/libavcodec/v4l2_req_devscan.c -new file mode 100644 -index 0000000000..cfa94d55c4 ---- /dev/null -+++ b/libavcodec/v4l2_req_devscan.c -@@ -0,0 +1,449 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+ -+#include -+#include -+ -+#include "v4l2_req_devscan.h" -+#include "v4l2_req_utils.h" -+ -+struct decdev { -+ enum v4l2_buf_type src_type; -+ uint32_t src_fmt_v4l2; -+ const char * vname; -+ const char * mname; -+}; -+ -+struct devscan { -+ struct decdev env; -+ unsigned int dev_size; -+ unsigned int dev_count; -+ struct decdev *devs; -+}; -+ -+static int video_src_pixfmt_supported(uint32_t fmt) -+{ -+ return 1; -+} -+ -+static void v4l2_setup_format(struct v4l2_format *format, unsigned int type, -+ unsigned int width, unsigned int height, -+ unsigned int pixelformat) -+{ -+ unsigned int sizeimage; -+ -+ memset(format, 0, sizeof(*format)); -+ format->type = type; -+ -+ sizeimage = V4L2_TYPE_IS_OUTPUT(type) ? 4 * 1024 * 1024 : 0; -+ -+ if (V4L2_TYPE_IS_MULTIPLANAR(type)) { -+ format->fmt.pix_mp.width = width; -+ format->fmt.pix_mp.height = height; -+ format->fmt.pix_mp.plane_fmt[0].sizeimage = sizeimage; -+ format->fmt.pix_mp.pixelformat = pixelformat; -+ } else { -+ format->fmt.pix.width = width; -+ format->fmt.pix.height = height; -+ format->fmt.pix.sizeimage = sizeimage; -+ format->fmt.pix.pixelformat = pixelformat; -+ } -+} -+ -+static int v4l2_set_format(int video_fd, unsigned int type, unsigned int pixelformat, -+ unsigned int width, unsigned int height) -+{ -+ struct v4l2_format format; -+ -+ v4l2_setup_format(&format, type, width, height, pixelformat); -+ -+ return ioctl(video_fd, VIDIOC_S_FMT, &format) ? -errno : 0; -+} -+ -+static int v4l2_query_capabilities(int video_fd, unsigned int *capabilities) -+{ -+ struct v4l2_capability capability = { 0 }; -+ int rc; -+ -+ rc = ioctl(video_fd, VIDIOC_QUERYCAP, &capability); -+ if (rc < 0) -+ return -errno; -+ -+ if (capabilities != NULL) { -+ if ((capability.capabilities & V4L2_CAP_DEVICE_CAPS) != 0) -+ *capabilities = capability.device_caps; -+ else -+ *capabilities = capability.capabilities; -+ } -+ -+ return 0; -+} -+ -+static int devscan_add(struct devscan *const scan, -+ enum v4l2_buf_type src_type, -+ uint32_t src_fmt_v4l2, -+ const char * vname, -+ const char * mname) -+{ -+ struct decdev *d; -+ -+ if (scan->dev_size <= scan->dev_count) { -+ unsigned int n = !scan->dev_size ? 4 : scan->dev_size * 2; -+ d = realloc(scan->devs, n * sizeof(*d)); -+ if (!d) -+ return -ENOMEM; -+ scan->devs = d; -+ scan->dev_size = n; -+ } -+ -+ d = scan->devs + scan->dev_count; -+ d->src_type = src_type; -+ d->src_fmt_v4l2 = src_fmt_v4l2; -+ d->vname = strdup(vname); -+ if (!d->vname) -+ return -ENOMEM; -+ d->mname = strdup(mname); -+ if (!d->mname) { -+ free((char *)d->vname); -+ return -ENOMEM; -+ } -+ ++scan->dev_count; -+ return 0; -+} -+ -+void devscan_delete(struct devscan **const pScan) -+{ -+ unsigned int i; -+ struct devscan * const scan = *pScan; -+ -+ if (!scan) -+ return; -+ *pScan = NULL; -+ -+ for (i = 0; i < scan->dev_count; ++i) { -+ free((char*)scan->devs[i].mname); -+ free((char*)scan->devs[i].vname); -+ } -+ free(scan->devs); -+ free(scan); -+} -+ -+#define REQ_BUF_CAPS (\ -+ V4L2_BUF_CAP_SUPPORTS_DMABUF |\ -+ V4L2_BUF_CAP_SUPPORTS_REQUESTS |\ -+ V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF) -+ -+static void probe_formats(void * const dc, -+ struct devscan *const scan, -+ const int fd, -+ const unsigned int type_v4l2, -+ const char *const mpath, -+ const char *const vpath) -+{ -+ unsigned int i; -+ for (i = 0;; ++i) { -+ struct v4l2_fmtdesc fmtdesc = { -+ .index = i, -+ .type = type_v4l2 -+ }; -+ struct v4l2_requestbuffers rbufs = { -+ .count = 0, -+ .type = type_v4l2, -+ .memory = V4L2_MEMORY_MMAP -+ }; -+ while (ioctl(fd, VIDIOC_ENUM_FMT, &fmtdesc)) { -+ if (errno == EINTR) -+ continue; -+ if (errno != EINVAL) -+ request_err(dc, "Enum[%d] failed for type=%d\n", i, type_v4l2); -+ return; -+ } -+ if (!video_src_pixfmt_supported(fmtdesc.pixelformat)) -+ continue; -+ -+ if (v4l2_set_format(fd, type_v4l2, fmtdesc.pixelformat, 720, 480)) { -+ request_debug(dc, "Set failed for type=%d, pf=%.4s\n", type_v4l2, (char*)&fmtdesc.pixelformat); -+ continue; -+ } -+ -+ while (ioctl(fd, VIDIOC_REQBUFS, &rbufs)) { -+ if (errno != EINTR) { -+ request_debug(dc, "%s: Reqbufs failed\n", vpath); -+ continue; -+ } -+ } -+ -+ if ((rbufs.capabilities & REQ_BUF_CAPS) != REQ_BUF_CAPS) { -+ request_debug(dc, "%s: Buf caps %#x insufficient\n", vpath, rbufs.capabilities); -+ continue; -+ } -+ -+ request_debug(dc, "Adding: %s,%s pix=%#x, type=%d\n", -+ mpath, vpath, fmtdesc.pixelformat, type_v4l2); -+ devscan_add(scan, type_v4l2, fmtdesc.pixelformat, vpath, mpath); -+ } -+} -+ -+ -+static int probe_video_device(void * const dc, -+ struct udev_device *const device, -+ struct devscan *const scan, -+ const char *const mpath) -+{ -+ int ret; -+ unsigned int capabilities = 0; -+ int video_fd = -1; -+ -+ const char *path = udev_device_get_devnode(device); -+ if (!path) { -+ request_err(dc, "%s: get video device devnode failed\n", __func__); -+ ret = -EINVAL; -+ goto fail; -+ } -+ -+ video_fd = open(path, O_RDWR, 0); -+ if (video_fd == -1) { -+ ret = -errno; -+ request_err(dc, "%s: opening %s failed, %s (%d)\n", __func__, path, strerror(errno), errno); -+ goto fail; -+ } -+ -+ ret = v4l2_query_capabilities(video_fd, &capabilities); -+ if (ret < 0) { -+ request_err(dc, "%s: get video capability failed, %s (%d)\n", __func__, strerror(-ret), -ret); -+ goto fail; -+ } -+ -+ request_debug(dc, "%s: path=%s capabilities=%#x\n", __func__, path, capabilities); -+ -+ if (!(capabilities & V4L2_CAP_STREAMING)) { -+ request_debug(dc, "%s: missing required streaming capability\n", __func__); -+ ret = -EINVAL; -+ goto fail; -+ } -+ -+ if (!(capabilities & (V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_VIDEO_M2M))) { -+ request_debug(dc, "%s: missing required mem2mem capability\n", __func__); -+ ret = -EINVAL; -+ goto fail; -+ } -+ -+ /* Should check capture formats too... */ -+ if ((capabilities & V4L2_CAP_VIDEO_M2M) != 0) -+ probe_formats(dc, scan, video_fd, V4L2_BUF_TYPE_VIDEO_OUTPUT, mpath, path); -+ if ((capabilities & V4L2_CAP_VIDEO_M2M_MPLANE) != 0) -+ probe_formats(dc, scan, video_fd, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, mpath, path); -+ -+ close(video_fd); -+ return 0; -+ -+fail: -+ if (video_fd >= 0) -+ close(video_fd); -+ return ret; -+} -+ -+static int probe_media_device(void * const dc, -+ struct udev_device *const device, -+ struct devscan *const scan) -+{ -+ int ret; -+ int rv; -+ struct media_device_info device_info = { 0 }; -+ struct media_v2_topology topology = { 0 }; -+ struct media_v2_interface *interfaces = NULL; -+ struct udev *udev = udev_device_get_udev(device); -+ struct udev_device *video_device; -+ dev_t devnum; -+ int media_fd = -1; -+ -+ const char *path = udev_device_get_devnode(device); -+ if (!path) { -+ request_err(dc, "%s: get media device devnode failed\n", __func__); -+ ret = -EINVAL; -+ goto fail; -+ } -+ -+ media_fd = open(path, O_RDWR, 0); -+ if (media_fd < 0) { -+ ret = -errno; -+ request_err(dc, "%s: opening %s failed, %s (%d)\n", __func__, path, strerror(-ret), -ret); -+ goto fail; -+ } -+ -+ rv = ioctl(media_fd, MEDIA_IOC_DEVICE_INFO, &device_info); -+ if (rv < 0) { -+ ret = -errno; -+ request_err(dc, "%s: get media device info failed, %s (%d)\n", __func__, strerror(-ret), -ret); -+ goto fail; -+ } -+ -+ rv = ioctl(media_fd, MEDIA_IOC_G_TOPOLOGY, &topology); -+ if (rv < 0) { -+ ret = -errno; -+ request_err(dc, "%s: get media topology failed, %s (%d)\n", __func__, strerror(-ret), -ret); -+ goto fail; -+ } -+ -+ if (topology.num_interfaces <= 0) { -+ request_err(dc, "%s: media device has no interfaces\n", __func__); -+ ret = -EINVAL; -+ goto fail; -+ } -+ -+ interfaces = calloc(topology.num_interfaces, sizeof(*interfaces)); -+ if (!interfaces) { -+ request_err(dc, "%s: allocating media interface struct failed\n", __func__); -+ ret = -ENOMEM; -+ goto fail; -+ } -+ -+ topology.ptr_interfaces = (__u64)(uintptr_t)interfaces; -+ rv = ioctl(media_fd, MEDIA_IOC_G_TOPOLOGY, &topology); -+ if (rv < 0) { -+ ret = -errno; -+ request_err(dc, "%s: get media topology failed, %s (%d)\n", __func__, strerror(-ret), -ret); -+ goto fail; -+ } -+ -+ for (int i = 0; i < topology.num_interfaces; i++) { -+ if (interfaces[i].intf_type != MEDIA_INTF_T_V4L_VIDEO) -+ continue; -+ -+ devnum = makedev(interfaces[i].devnode.major, interfaces[i].devnode.minor); -+ video_device = udev_device_new_from_devnum(udev, 'c', devnum); -+ if (!video_device) { -+ ret = -errno; -+ request_err(dc, "%s: video_device[%d]=%p\n", __func__, i, video_device); -+ continue; -+ } -+ -+ ret = probe_video_device(dc, video_device, scan, path); -+ udev_device_unref(video_device); -+ -+ if (ret != 0) -+ goto fail; -+ } -+ -+fail: -+ free(interfaces); -+ if (media_fd != -1) -+ close(media_fd); -+ return ret; -+} -+ -+const char *decdev_media_path(const struct decdev *const dev) -+{ -+ return !dev ? NULL : dev->mname; -+} -+ -+const char *decdev_video_path(const struct decdev *const dev) -+{ -+ return !dev ? NULL : dev->vname; -+} -+ -+enum v4l2_buf_type decdev_src_type(const struct decdev *const dev) -+{ -+ return !dev ? 0 : dev->src_type; -+} -+ -+uint32_t decdev_src_pixelformat(const struct decdev *const dev) -+{ -+ return !dev ? 0 : dev->src_fmt_v4l2; -+} -+ -+ -+const struct decdev *devscan_find(struct devscan *const scan, -+ const uint32_t src_fmt_v4l2) -+{ -+ unsigned int i; -+ -+ if (scan->env.mname && scan->env.vname) -+ return &scan->env; -+ -+ if (!src_fmt_v4l2) -+ return scan->dev_count ? scan->devs + 0 : NULL; -+ -+ for (i = 0; i != scan->dev_count; ++i) { -+ if (scan->devs[i].src_fmt_v4l2 == src_fmt_v4l2) -+ return scan->devs + i; -+ } -+ return NULL; -+} -+ -+int devscan_build(void * const dc, struct devscan **pscan) -+{ -+ int ret; -+ struct udev *udev; -+ struct udev_enumerate *enumerate; -+ struct udev_list_entry *devices; -+ struct udev_list_entry *entry; -+ struct udev_device *device; -+ struct devscan * scan; -+ -+ *pscan = NULL; -+ -+ scan = calloc(1, sizeof(*scan)); -+ if (!scan) { -+ ret = -ENOMEM; -+ goto fail; -+ } -+ -+ scan->env.mname = getenv("LIBVA_V4L2_REQUEST_MEDIA_PATH"); -+ scan->env.vname = getenv("LIBVA_V4L2_REQUEST_VIDEO_PATH"); -+ if (scan->env.mname && scan->env.vname) { -+ request_info(dc, "Media/video device env overrides found: %s,%s\n", -+ scan->env.mname, scan->env.vname); -+ *pscan = scan; -+ return 0; -+ } -+ -+ udev = udev_new(); -+ if (!udev) { -+ request_err(dc, "%s: allocating udev context failed\n", __func__); -+ ret = -ENOMEM; -+ goto fail; -+ } -+ -+ enumerate = udev_enumerate_new(udev); -+ if (!enumerate) { -+ request_err(dc, "%s: allocating udev enumerator failed\n", __func__); -+ ret = -ENOMEM; -+ goto fail; -+ } -+ -+ udev_enumerate_add_match_subsystem(enumerate, "media"); -+ udev_enumerate_scan_devices(enumerate); -+ -+ devices = udev_enumerate_get_list_entry(enumerate); -+ udev_list_entry_foreach(entry, devices) { -+ const char *path = udev_list_entry_get_name(entry); -+ if (!path) -+ continue; -+ -+ device = udev_device_new_from_syspath(udev, path); -+ if (!device) -+ continue; -+ -+ probe_media_device(dc, device, scan); -+ udev_device_unref(device); -+ } -+ -+ udev_enumerate_unref(enumerate); -+ -+ *pscan = scan; -+ return 0; -+ -+fail: -+ udev_unref(udev); -+ devscan_delete(&scan); -+ return ret; -+} -+ -diff --git a/libavcodec/v4l2_req_devscan.h b/libavcodec/v4l2_req_devscan.h -new file mode 100644 -index 0000000000..956d9234f1 ---- /dev/null -+++ b/libavcodec/v4l2_req_devscan.h -@@ -0,0 +1,23 @@ -+#ifndef _DEVSCAN_H_ -+#define _DEVSCAN_H_ -+ -+#include -+ -+struct devscan; -+struct decdev; -+enum v4l2_buf_type; -+ -+/* These return pointers to data in the devscan structure and so are vaild -+ * for the lifetime of that -+ */ -+const char *decdev_media_path(const struct decdev *const dev); -+const char *decdev_video_path(const struct decdev *const dev); -+enum v4l2_buf_type decdev_src_type(const struct decdev *const dev); -+uint32_t decdev_src_pixelformat(const struct decdev *const dev); -+ -+const struct decdev *devscan_find(struct devscan *const scan, const uint32_t src_fmt_v4l2); -+ -+int devscan_build(void * const dc, struct devscan **pscan); -+void devscan_delete(struct devscan **const pScan); -+ -+#endif -diff --git a/libavcodec/v4l2_req_dmabufs.c b/libavcodec/v4l2_req_dmabufs.c -new file mode 100644 -index 0000000000..ae6c648369 ---- /dev/null -+++ b/libavcodec/v4l2_req_dmabufs.c -@@ -0,0 +1,266 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "v4l2_req_dmabufs.h" -+#include "v4l2_req_utils.h" -+ -+#define DMABUF_NAME1 "/dev/dma_heap/linux,cma" -+#define DMABUF_NAME2 "/dev/dma_heap/reserved" -+ -+#define TRACE_ALLOC 0 -+ -+struct dmabufs_ctl { -+ int fd; -+ size_t page_size; -+}; -+ -+struct dmabuf_h { -+ int fd; -+ size_t size; -+ size_t len; -+ void * mapptr; -+}; -+ -+#if TRACE_ALLOC -+static unsigned int total_bufs = 0; -+static size_t total_size = 0; -+#endif -+ -+struct dmabuf_h * dmabuf_import(int fd, size_t size) -+{ -+ struct dmabuf_h *dh; -+ -+ fd = dup(fd); -+ if (fd < 0 || size == 0) -+ return NULL; -+ -+ dh = malloc(sizeof(*dh)); -+ if (!dh) { -+ close(fd); -+ return NULL; -+ } -+ -+ *dh = (struct dmabuf_h) { -+ .fd = fd, -+ .size = size, -+ .mapptr = MAP_FAILED -+ }; -+ -+#if TRACE_ALLOC -+ ++total_bufs; -+ total_size += dh->size; -+ request_log("%s: Import: %zd, total=%zd, bufs=%d\n", __func__, dh->size, total_size, total_bufs); -+#endif -+ -+ return dh; -+} -+ -+struct dmabuf_h * dmabuf_realloc(struct dmabufs_ctl * dbsc, struct dmabuf_h * old, size_t size) -+{ -+ struct dmabuf_h * dh; -+ struct dma_heap_allocation_data data = { -+ .len = (size + dbsc->page_size - 1) & ~(dbsc->page_size - 1), -+ .fd = 0, -+ .fd_flags = O_RDWR, -+ .heap_flags = 0 -+ }; -+ -+ if (old != NULL) { -+ if (old->size == data.len) { -+ return old; -+ } -+ dmabuf_free(old); -+ } -+ -+ if (size == 0 || -+ (dh = malloc(sizeof(*dh))) == NULL) -+ return NULL; -+ -+ while (ioctl(dbsc->fd, DMA_HEAP_IOCTL_ALLOC, &data)) { -+ int err = errno; -+ request_log("Failed to alloc %" PRIu64 " from dma-heap(fd=%d): %d (%s)\n", -+ (uint64_t)data.len, -+ dbsc->fd, -+ err, -+ strerror(err)); -+ if (err == EINTR) -+ continue; -+ goto fail; -+ } -+ -+ *dh = (struct dmabuf_h){ -+ .fd = data.fd, -+ .size = (size_t)data.len, -+ .mapptr = MAP_FAILED -+ }; -+ -+#if TRACE_ALLOC -+ ++total_bufs; -+ total_size += dh->size; -+ request_log("%s: Alloc: %zd, total=%zd, bufs=%d\n", __func__, dh->size, total_size, total_bufs); -+#endif -+ -+ return dh; -+ -+fail: -+ free(dh); -+ return NULL; -+} -+ -+int dmabuf_sync(struct dmabuf_h * const dh, unsigned int flags) -+{ -+ struct dma_buf_sync sync = { -+ .flags = flags -+ }; -+ while (ioctl(dh->fd, DMA_BUF_IOCTL_SYNC, &sync) == -1) { -+ const int err = errno; -+ if (errno == EINTR) -+ continue; -+ request_log("%s: ioctl failed: flags=%#x\n", __func__, flags); -+ return -err; -+ } -+ return 0; -+} -+ -+int dmabuf_write_start(struct dmabuf_h * const dh) -+{ -+ return dmabuf_sync(dh, DMA_BUF_SYNC_START | DMA_BUF_SYNC_WRITE); -+} -+ -+int dmabuf_write_end(struct dmabuf_h * const dh) -+{ -+ return dmabuf_sync(dh, DMA_BUF_SYNC_END | DMA_BUF_SYNC_WRITE); -+} -+ -+int dmabuf_read_start(struct dmabuf_h * const dh) -+{ -+ if (!dmabuf_map(dh)) -+ return -1; -+ return dmabuf_sync(dh, DMA_BUF_SYNC_START | DMA_BUF_SYNC_READ); -+} -+ -+int dmabuf_read_end(struct dmabuf_h * const dh) -+{ -+ return dmabuf_sync(dh, DMA_BUF_SYNC_END | DMA_BUF_SYNC_READ); -+} -+ -+ -+void * dmabuf_map(struct dmabuf_h * const dh) -+{ -+ if (!dh) -+ return NULL; -+ if (dh->mapptr != MAP_FAILED) -+ return dh->mapptr; -+ dh->mapptr = mmap(NULL, dh->size, -+ PROT_READ | PROT_WRITE, -+ MAP_SHARED | MAP_POPULATE, -+ dh->fd, 0); -+ if (dh->mapptr == MAP_FAILED) { -+ request_log("%s: Map failed\n", __func__); -+ return NULL; -+ } -+ return dh->mapptr; -+} -+ -+int dmabuf_fd(const struct dmabuf_h * const dh) -+{ -+ if (!dh) -+ return -1; -+ return dh->fd; -+} -+ -+size_t dmabuf_size(const struct dmabuf_h * const dh) -+{ -+ if (!dh) -+ return 0; -+ return dh->size; -+} -+ -+size_t dmabuf_len(const struct dmabuf_h * const dh) -+{ -+ if (!dh) -+ return 0; -+ return dh->len; -+} -+ -+void dmabuf_len_set(struct dmabuf_h * const dh, const size_t len) -+{ -+ dh->len = len; -+} -+ -+ -+ -+void dmabuf_free(struct dmabuf_h * dh) -+{ -+ if (!dh) -+ return; -+ -+#if TRACE_ALLOC -+ --total_bufs; -+ total_size -= dh->size; -+ request_log("%s: Free: %zd, total=%zd, bufs=%d\n", __func__, dh->size, total_size, total_bufs); -+#endif -+ -+ if (dh->mapptr != MAP_FAILED) -+ munmap(dh->mapptr, dh->size); -+ while (close(dh->fd) == -1 && errno == EINTR) -+ /* loop */; -+ free(dh); -+} -+ -+struct dmabufs_ctl * dmabufs_ctl_new(void) -+{ -+ struct dmabufs_ctl * dbsc = malloc(sizeof(*dbsc)); -+ -+ if (!dbsc) -+ return NULL; -+ -+ while ((dbsc->fd = open(DMABUF_NAME1, O_RDWR)) == -1 && -+ errno == EINTR) -+ /* Loop */; -+ -+ if (dbsc->fd == -1) { -+ while ((dbsc->fd = open(DMABUF_NAME2, O_RDWR)) == -1 && -+ errno == EINTR) -+ /* Loop */; -+ if (dbsc->fd == -1) { -+ request_log("Unable to open either %s or %s\n", -+ DMABUF_NAME1, DMABUF_NAME2); -+ goto fail; -+ } -+ } -+ -+ dbsc->page_size = (size_t)sysconf(_SC_PAGE_SIZE); -+ -+ return dbsc; -+ -+fail: -+ free(dbsc); -+ return NULL; -+} -+ -+void dmabufs_ctl_delete(struct dmabufs_ctl ** const pDbsc) -+{ -+ struct dmabufs_ctl * const dbsc = *pDbsc; -+ -+ if (!dbsc) -+ return; -+ *pDbsc = NULL; -+ -+ while (close(dbsc->fd) == -1 && errno == EINTR) -+ /* loop */; -+ -+ free(dbsc); -+} -+ -+ -diff --git a/libavcodec/v4l2_req_dmabufs.h b/libavcodec/v4l2_req_dmabufs.h -new file mode 100644 -index 0000000000..cfb17e801d ---- /dev/null -+++ b/libavcodec/v4l2_req_dmabufs.h -@@ -0,0 +1,40 @@ -+#ifndef DMABUFS_H -+#define DMABUFS_H -+ -+#include -+ -+struct dmabufs_ctl; -+struct dmabuf_h; -+ -+struct dmabufs_ctl * dmabufs_ctl_new(void); -+void dmabufs_ctl_delete(struct dmabufs_ctl ** const pdbsc); -+ -+// Need not preserve old contents -+// On NULL return old buffer is freed -+struct dmabuf_h * dmabuf_realloc(struct dmabufs_ctl * dbsc, struct dmabuf_h *, size_t size); -+ -+static inline struct dmabuf_h * dmabuf_alloc(struct dmabufs_ctl * dbsc, size_t size) { -+ return dmabuf_realloc(dbsc, NULL, size); -+} -+/* Create from existing fd - dups(fd) */ -+struct dmabuf_h * dmabuf_import(int fd, size_t size); -+void * dmabuf_map(struct dmabuf_h * const dh); -+ -+/* flags from linux/dmabuf.h DMA_BUF_SYNC_xxx */ -+int dmabuf_sync(struct dmabuf_h * const dh, unsigned int flags); -+ -+int dmabuf_write_start(struct dmabuf_h * const dh); -+int dmabuf_write_end(struct dmabuf_h * const dh); -+int dmabuf_read_start(struct dmabuf_h * const dh); -+int dmabuf_read_end(struct dmabuf_h * const dh); -+ -+int dmabuf_fd(const struct dmabuf_h * const dh); -+/* Allocated size */ -+size_t dmabuf_size(const struct dmabuf_h * const dh); -+/* Bytes in use */ -+size_t dmabuf_len(const struct dmabuf_h * const dh); -+/* Set bytes in use */ -+void dmabuf_len_set(struct dmabuf_h * const dh, const size_t len); -+void dmabuf_free(struct dmabuf_h * dh); -+ -+#endif -diff --git a/libavcodec/v4l2_req_hevc_v1.c b/libavcodec/v4l2_req_hevc_v1.c -new file mode 100644 -index 0000000000..169b532832 ---- /dev/null -+++ b/libavcodec/v4l2_req_hevc_v1.c -@@ -0,0 +1,3 @@ -+#define HEVC_CTRLS_VERSION 1 -+#include "v4l2_req_hevc_vx.c" -+ -diff --git a/libavcodec/v4l2_req_hevc_v2.c b/libavcodec/v4l2_req_hevc_v2.c -new file mode 100644 -index 0000000000..42af98e156 ---- /dev/null -+++ b/libavcodec/v4l2_req_hevc_v2.c -@@ -0,0 +1,3 @@ -+#define HEVC_CTRLS_VERSION 2 -+#include "v4l2_req_hevc_vx.c" -+ -diff --git a/libavcodec/v4l2_req_hevc_vx.c b/libavcodec/v4l2_req_hevc_vx.c -new file mode 100644 -index 0000000000..0ae03b10c4 ---- /dev/null -+++ b/libavcodec/v4l2_req_hevc_vx.c -@@ -0,0 +1,1213 @@ -+// File included by v4l2_req_hevc_v* - not compiled on its own -+ -+#include "decode.h" -+#include "hevcdec.h" -+#include "hwconfig.h" -+#include "internal.h" -+#include "thread.h" -+ -+#include "v4l2_request_hevc.h" -+ -+#if HEVC_CTRLS_VERSION == 1 -+#include "hevc-ctrls-v1.h" -+ -+// Fixup renamed entries -+#define V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT_ENABLED V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT -+ -+#elif HEVC_CTRLS_VERSION == 2 -+#include "hevc-ctrls-v2.h" -+#else -+#error Unknown HEVC_CTRLS_VERSION -+#endif -+ -+#include "libavutil/hwcontext_drm.h" -+ -+#include -+#include -+ -+#include "v4l2_req_devscan.h" -+#include "v4l2_req_dmabufs.h" -+#include "v4l2_req_pollqueue.h" -+#include "v4l2_req_media.h" -+#include "v4l2_req_utils.h" -+ -+// Attached to buf[0] in frame -+// Pooled in hwcontext so generally create once - 1/frame -+typedef struct V4L2MediaReqDescriptor { -+ AVDRMFrameDescriptor drm; -+ -+ // Media -+ uint64_t timestamp; -+ struct qent_dst * qe_dst; -+ -+ // Decode only - should be NULL by the time we emit the frame -+ struct req_decode_ent decode_ent; -+ -+ struct media_request *req; -+ struct qent_src *qe_src; -+ -+#if HEVC_CTRLS_VERSION >= 2 -+ struct v4l2_ctrl_hevc_decode_params dec; -+#endif -+ -+ size_t num_slices; -+ size_t alloced_slices; -+ struct v4l2_ctrl_hevc_slice_params * slice_params; -+ struct slice_info * slices; -+ -+} V4L2MediaReqDescriptor; -+ -+struct slice_info { -+ const uint8_t * ptr; -+ size_t len; // bytes -+}; -+ -+// Handy container for accumulating controls before setting -+struct req_controls { -+ int has_scaling; -+ struct timeval tv; -+ struct v4l2_ctrl_hevc_sps sps; -+ struct v4l2_ctrl_hevc_pps pps; -+ struct v4l2_ctrl_hevc_scaling_matrix scaling_matrix; -+}; -+ -+//static uint8_t nalu_slice_start_code[] = { 0x00, 0x00, 0x01 }; -+ -+ -+// Get an FFmpeg format from the v4l2 format -+static enum AVPixelFormat pixel_format_from_format(const struct v4l2_format *const format) -+{ -+ switch (V4L2_TYPE_IS_MULTIPLANAR(format->type) ? -+ format->fmt.pix_mp.pixelformat : format->fmt.pix.pixelformat) { -+ case V4L2_PIX_FMT_YUV420: -+ return AV_PIX_FMT_YUV420P; -+ case V4L2_PIX_FMT_NV12: -+ return AV_PIX_FMT_NV12; -+#if CONFIG_SAND -+ case V4L2_PIX_FMT_NV12_COL128: -+ return AV_PIX_FMT_RPI4_8; -+ case V4L2_PIX_FMT_NV12_10_COL128: -+ return AV_PIX_FMT_RPI4_10; -+#endif -+ default: -+ break; -+ } -+ return AV_PIX_FMT_NONE; -+} -+ -+static inline uint64_t frame_capture_dpb(const AVFrame * const frame) -+{ -+ const V4L2MediaReqDescriptor *const rd = (V4L2MediaReqDescriptor *)frame->data[0]; -+ return rd->timestamp; -+} -+ -+static inline void frame_set_capture_dpb(AVFrame * const frame, const uint64_t dpb_stamp) -+{ -+ V4L2MediaReqDescriptor *const rd = (V4L2MediaReqDescriptor *)frame->data[0]; -+ rd->timestamp = dpb_stamp; -+} -+ -+static void fill_pred_table(const HEVCContext *h, struct v4l2_hevc_pred_weight_table *table) -+{ -+ int32_t luma_weight_denom, chroma_weight_denom; -+ const SliceHeader *sh = &h->sh; -+ -+ if (sh->slice_type == HEVC_SLICE_I || -+ (sh->slice_type == HEVC_SLICE_P && !h->ps.pps->weighted_pred_flag) || -+ (sh->slice_type == HEVC_SLICE_B && !h->ps.pps->weighted_bipred_flag)) -+ return; -+ -+ table->luma_log2_weight_denom = sh->luma_log2_weight_denom; -+ -+ if (h->ps.sps->chroma_format_idc) -+ table->delta_chroma_log2_weight_denom = sh->chroma_log2_weight_denom - sh->luma_log2_weight_denom; -+ -+ luma_weight_denom = (1 << sh->luma_log2_weight_denom); -+ chroma_weight_denom = (1 << sh->chroma_log2_weight_denom); -+ -+ for (int i = 0; i < 15 && i < sh->nb_refs[L0]; i++) { -+ table->delta_luma_weight_l0[i] = sh->luma_weight_l0[i] - luma_weight_denom; -+ table->luma_offset_l0[i] = sh->luma_offset_l0[i]; -+ table->delta_chroma_weight_l0[i][0] = sh->chroma_weight_l0[i][0] - chroma_weight_denom; -+ table->delta_chroma_weight_l0[i][1] = sh->chroma_weight_l0[i][1] - chroma_weight_denom; -+ table->chroma_offset_l0[i][0] = sh->chroma_offset_l0[i][0]; -+ table->chroma_offset_l0[i][1] = sh->chroma_offset_l0[i][1]; -+ } -+ -+ if (sh->slice_type != HEVC_SLICE_B) -+ return; -+ -+ for (int i = 0; i < 15 && i < sh->nb_refs[L1]; i++) { -+ table->delta_luma_weight_l1[i] = sh->luma_weight_l1[i] - luma_weight_denom; -+ table->luma_offset_l1[i] = sh->luma_offset_l1[i]; -+ table->delta_chroma_weight_l1[i][0] = sh->chroma_weight_l1[i][0] - chroma_weight_denom; -+ table->delta_chroma_weight_l1[i][1] = sh->chroma_weight_l1[i][1] - chroma_weight_denom; -+ table->chroma_offset_l1[i][0] = sh->chroma_offset_l1[i][0]; -+ table->chroma_offset_l1[i][1] = sh->chroma_offset_l1[i][1]; -+ } -+} -+ -+static int find_frame_rps_type(const HEVCContext *h, uint64_t timestamp) -+{ -+ const HEVCFrame *frame; -+ int i; -+ -+ for (i = 0; i < h->rps[ST_CURR_BEF].nb_refs; i++) { -+ frame = h->rps[ST_CURR_BEF].ref[i]; -+ if (frame && timestamp == frame_capture_dpb(frame->frame)) -+ return V4L2_HEVC_DPB_ENTRY_RPS_ST_CURR_BEFORE; -+ } -+ -+ for (i = 0; i < h->rps[ST_CURR_AFT].nb_refs; i++) { -+ frame = h->rps[ST_CURR_AFT].ref[i]; -+ if (frame && timestamp == frame_capture_dpb(frame->frame)) -+ return V4L2_HEVC_DPB_ENTRY_RPS_ST_CURR_AFTER; -+ } -+ -+ for (i = 0; i < h->rps[LT_CURR].nb_refs; i++) { -+ frame = h->rps[LT_CURR].ref[i]; -+ if (frame && timestamp == frame_capture_dpb(frame->frame)) -+ return V4L2_HEVC_DPB_ENTRY_RPS_LT_CURR; -+ } -+ -+ return 0; -+} -+ -+static unsigned int -+get_ref_pic_index(const HEVCContext *h, const HEVCFrame *frame, -+ const struct v4l2_hevc_dpb_entry * const entries, -+ const unsigned int num_entries) -+{ -+ uint64_t timestamp; -+ -+ if (!frame) -+ return 0; -+ -+ timestamp = frame_capture_dpb(frame->frame); -+ -+ for (unsigned int i = 0; i < num_entries; i++) { -+ if (entries[i].timestamp == timestamp) -+ return i; -+ } -+ -+ return 0; -+} -+ -+static const uint8_t * ptr_from_index(const uint8_t * b, unsigned int idx) -+{ -+ unsigned int z = 0; -+ while (idx--) { -+ if (*b++ == 0) { -+ ++z; -+ if (z >= 2 && *b == 3) { -+ ++b; -+ z = 0; -+ } -+ } -+ else { -+ z = 0; -+ } -+ } -+ return b; -+} -+ -+static int slice_add(V4L2MediaReqDescriptor * const rd) -+{ -+ if (rd->num_slices >= rd->alloced_slices) { -+ struct v4l2_ctrl_hevc_slice_params * p2; -+ struct slice_info * s2; -+ size_t n2 = rd->num_slices == 0 ? 8 : rd->num_slices * 2; -+ -+ p2 = av_realloc_array(rd->slice_params, n2, sizeof(*p2)); -+ if (p2 == NULL) -+ return AVERROR(ENOMEM); -+ rd->slice_params = p2; -+ -+ s2 = av_realloc_array(rd->slices, n2, sizeof(*s2)); -+ if (s2 == NULL) -+ return AVERROR(ENOMEM); -+ rd->slices = s2; -+ -+ rd->alloced_slices = n2; -+ } -+ ++rd->num_slices; -+ return 0; -+} -+ -+static unsigned int -+fill_dpb_entries(const HEVCContext * const h, struct v4l2_hevc_dpb_entry * const entries) -+{ -+ unsigned int i; -+ unsigned int n = 0; -+ const HEVCFrame * const pic = h->ref; -+ -+ for (i = 0; i < FF_ARRAY_ELEMS(h->DPB); i++) { -+ const HEVCFrame * const frame = &h->DPB[i]; -+ if (frame != pic && (frame->flags & (HEVC_FRAME_FLAG_LONG_REF | HEVC_FRAME_FLAG_SHORT_REF))) { -+ struct v4l2_hevc_dpb_entry * const entry = entries + n++; -+ -+ entry->timestamp = frame_capture_dpb(frame->frame); -+ entry->rps = find_frame_rps_type(h, entry->timestamp); -+ entry->field_pic = frame->frame->interlaced_frame; -+ -+ /* TODO: Interleaved: Get the POC for each field. */ -+ entry->pic_order_cnt[0] = frame->poc; -+ entry->pic_order_cnt[1] = frame->poc; -+ } -+ } -+ return n; -+} -+ -+static void fill_slice_params(const HEVCContext * const h, -+#if HEVC_CTRLS_VERSION >= 2 -+ const struct v4l2_ctrl_hevc_decode_params * const dec, -+#endif -+ struct v4l2_ctrl_hevc_slice_params *slice_params, -+ uint32_t bit_size, uint32_t bit_offset) -+{ -+ const SliceHeader * const sh = &h->sh; -+#if HEVC_CTRLS_VERSION >= 2 -+ const struct v4l2_hevc_dpb_entry *const dpb = dec->dpb; -+ const unsigned int dpb_n = dec->num_active_dpb_entries; -+#else -+ struct v4l2_hevc_dpb_entry *const dpb = slice_params->dpb; -+ unsigned int dpb_n; -+#endif -+ unsigned int i; -+ RefPicList *rpl; -+ -+ *slice_params = (struct v4l2_ctrl_hevc_slice_params) { -+ .bit_size = bit_size, -+ .data_bit_offset = bit_offset, -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */ -+ .slice_segment_addr = sh->slice_segment_addr, -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: NAL unit header */ -+ .nal_unit_type = h->nal_unit_type, -+ .nuh_temporal_id_plus1 = h->temporal_id + 1, -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */ -+ .slice_type = sh->slice_type, -+ .colour_plane_id = sh->colour_plane_id, -+ .slice_pic_order_cnt = h->ref->poc, -+ .num_ref_idx_l0_active_minus1 = sh->nb_refs[L0] ? sh->nb_refs[L0] - 1 : 0, -+ .num_ref_idx_l1_active_minus1 = sh->nb_refs[L1] ? sh->nb_refs[L1] - 1 : 0, -+ .collocated_ref_idx = sh->slice_temporal_mvp_enabled_flag ? sh->collocated_ref_idx : 0, -+ .five_minus_max_num_merge_cand = sh->slice_type == HEVC_SLICE_I ? 0 : 5 - sh->max_num_merge_cand, -+ .slice_qp_delta = sh->slice_qp_delta, -+ .slice_cb_qp_offset = sh->slice_cb_qp_offset, -+ .slice_cr_qp_offset = sh->slice_cr_qp_offset, -+ .slice_act_y_qp_offset = 0, -+ .slice_act_cb_qp_offset = 0, -+ .slice_act_cr_qp_offset = 0, -+ .slice_beta_offset_div2 = sh->beta_offset / 2, -+ .slice_tc_offset_div2 = sh->tc_offset / 2, -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: Picture timing SEI message */ -+ .pic_struct = h->sei.picture_timing.picture_struct, -+ -+#if HEVC_CTRLS_VERSION < 2 -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */ -+ .num_rps_poc_st_curr_before = h->rps[ST_CURR_BEF].nb_refs, -+ .num_rps_poc_st_curr_after = h->rps[ST_CURR_AFT].nb_refs, -+ .num_rps_poc_lt_curr = h->rps[LT_CURR].nb_refs, -+#endif -+ }; -+ -+ if (sh->slice_sample_adaptive_offset_flag[0]) -+ slice_params->flags |= V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_LUMA; -+ -+ if (sh->slice_sample_adaptive_offset_flag[1]) -+ slice_params->flags |= V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_CHROMA; -+ -+ if (sh->slice_temporal_mvp_enabled_flag) -+ slice_params->flags |= V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_TEMPORAL_MVP_ENABLED; -+ -+ if (sh->mvd_l1_zero_flag) -+ slice_params->flags |= V4L2_HEVC_SLICE_PARAMS_FLAG_MVD_L1_ZERO; -+ -+ if (sh->cabac_init_flag) -+ slice_params->flags |= V4L2_HEVC_SLICE_PARAMS_FLAG_CABAC_INIT; -+ -+ if (sh->collocated_list == L0) -+ slice_params->flags |= V4L2_HEVC_SLICE_PARAMS_FLAG_COLLOCATED_FROM_L0; -+ -+ if (sh->disable_deblocking_filter_flag) -+ slice_params->flags |= V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_DEBLOCKING_FILTER_DISABLED; -+ -+ if (sh->slice_loop_filter_across_slices_enabled_flag) -+ slice_params->flags |= V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_LOOP_FILTER_ACROSS_SLICES_ENABLED; -+ -+ if (sh->dependent_slice_segment_flag) -+ slice_params->flags |= V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT; -+ -+#if HEVC_CTRLS_VERSION < 2 -+ dpb_n = fill_dpb_entries(h, dpb); -+ slice_params->num_active_dpb_entries = dpb_n; -+#endif -+ -+ if (sh->slice_type != HEVC_SLICE_I) { -+ rpl = &h->ref->refPicList[0]; -+ for (i = 0; i < rpl->nb_refs; i++) -+ slice_params->ref_idx_l0[i] = get_ref_pic_index(h, rpl->ref[i], dpb, dpb_n); -+ } -+ -+ if (sh->slice_type == HEVC_SLICE_B) { -+ rpl = &h->ref->refPicList[1]; -+ for (i = 0; i < rpl->nb_refs; i++) -+ slice_params->ref_idx_l1[i] = get_ref_pic_index(h, rpl->ref[i], dpb, dpb_n); -+ } -+ -+ fill_pred_table(h, &slice_params->pred_weight_table); -+ -+ slice_params->num_entry_point_offsets = sh->num_entry_point_offsets; -+ if (slice_params->num_entry_point_offsets > 256) { -+ slice_params->num_entry_point_offsets = 256; -+ av_log(NULL, AV_LOG_ERROR, "%s: Currently only 256 entry points are supported, but slice has %d entry points.\n", __func__, sh->num_entry_point_offsets); -+ } -+ -+ for (i = 0; i < slice_params->num_entry_point_offsets; i++) -+ slice_params->entry_point_offset_minus1[i] = sh->entry_point_offset[i] - 1; -+} -+ -+#if HEVC_CTRLS_VERSION >= 2 -+static void -+fill_decode_params(const HEVCContext * const h, -+ struct v4l2_ctrl_hevc_decode_params * const dec) -+{ -+ unsigned int i; -+ -+ *dec = (struct v4l2_ctrl_hevc_decode_params){ -+ .pic_order_cnt_val = h->poc, -+ .num_poc_st_curr_before = h->rps[ST_CURR_BEF].nb_refs, -+ .num_poc_st_curr_after = h->rps[ST_CURR_AFT].nb_refs, -+ .num_poc_lt_curr = h->rps[LT_CURR].nb_refs, -+ }; -+ -+ dec->num_active_dpb_entries = fill_dpb_entries(h, dec->dpb); -+ -+ // The docn does seem to ask that we fit our 32 bit signed POC into -+ // a U8 so... (To be fair 16 bits would be enough) -+ // Luckily we (Pi) don't use these fields -+ for (i = 0; i != h->rps[ST_CURR_BEF].nb_refs; ++i) -+ dec->poc_st_curr_before[i] = h->rps[ST_CURR_BEF].ref[i]->poc; -+ for (i = 0; i != h->rps[ST_CURR_AFT].nb_refs; ++i) -+ dec->poc_st_curr_after[i] = h->rps[ST_CURR_AFT].ref[i]->poc; -+ for (i = 0; i != h->rps[LT_CURR].nb_refs; ++i) -+ dec->poc_lt_curr[i] = h->rps[LT_CURR].ref[i]->poc; -+ -+ if (IS_IRAP(h)) -+ dec->flags |= V4L2_HEVC_DECODE_PARAM_FLAG_IRAP_PIC; -+ if (IS_IDR(h)) -+ dec->flags |= V4L2_HEVC_DECODE_PARAM_FLAG_IDR_PIC; -+ if (h->sh.no_output_of_prior_pics_flag) -+ dec->flags |= V4L2_HEVC_DECODE_PARAM_FLAG_NO_OUTPUT_OF_PRIOR; -+ -+} -+#endif -+ -+static void fill_sps(struct v4l2_ctrl_hevc_sps *ctrl, const HEVCSPS *sps) -+{ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: Sequence parameter set */ -+ *ctrl = (struct v4l2_ctrl_hevc_sps) { -+ .chroma_format_idc = sps->chroma_format_idc, -+ .pic_width_in_luma_samples = sps->width, -+ .pic_height_in_luma_samples = sps->height, -+ .bit_depth_luma_minus8 = sps->bit_depth - 8, -+ .bit_depth_chroma_minus8 = sps->bit_depth - 8, -+ .log2_max_pic_order_cnt_lsb_minus4 = sps->log2_max_poc_lsb - 4, -+ .sps_max_dec_pic_buffering_minus1 = sps->temporal_layer[sps->max_sub_layers - 1].max_dec_pic_buffering - 1, -+ .sps_max_num_reorder_pics = sps->temporal_layer[sps->max_sub_layers - 1].num_reorder_pics, -+ .sps_max_latency_increase_plus1 = sps->temporal_layer[sps->max_sub_layers - 1].max_latency_increase + 1, -+ .log2_min_luma_coding_block_size_minus3 = sps->log2_min_cb_size - 3, -+ .log2_diff_max_min_luma_coding_block_size = sps->log2_diff_max_min_coding_block_size, -+ .log2_min_luma_transform_block_size_minus2 = sps->log2_min_tb_size - 2, -+ .log2_diff_max_min_luma_transform_block_size = sps->log2_max_trafo_size - sps->log2_min_tb_size, -+ .max_transform_hierarchy_depth_inter = sps->max_transform_hierarchy_depth_inter, -+ .max_transform_hierarchy_depth_intra = sps->max_transform_hierarchy_depth_intra, -+ .pcm_sample_bit_depth_luma_minus1 = sps->pcm.bit_depth - 1, -+ .pcm_sample_bit_depth_chroma_minus1 = sps->pcm.bit_depth_chroma - 1, -+ .log2_min_pcm_luma_coding_block_size_minus3 = sps->pcm.log2_min_pcm_cb_size - 3, -+ .log2_diff_max_min_pcm_luma_coding_block_size = sps->pcm.log2_max_pcm_cb_size - sps->pcm.log2_min_pcm_cb_size, -+ .num_short_term_ref_pic_sets = sps->nb_st_rps, -+ .num_long_term_ref_pics_sps = sps->num_long_term_ref_pics_sps, -+ .chroma_format_idc = sps->chroma_format_idc, -+ .sps_max_sub_layers_minus1 = sps->max_sub_layers - 1, -+ }; -+ -+ if (sps->separate_colour_plane_flag) -+ ctrl->flags |= V4L2_HEVC_SPS_FLAG_SEPARATE_COLOUR_PLANE; -+ -+ if (sps->scaling_list_enable_flag) -+ ctrl->flags |= V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED; -+ -+ if (sps->amp_enabled_flag) -+ ctrl->flags |= V4L2_HEVC_SPS_FLAG_AMP_ENABLED; -+ -+ if (sps->sao_enabled) -+ ctrl->flags |= V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET; -+ -+ if (sps->pcm_enabled_flag) -+ ctrl->flags |= V4L2_HEVC_SPS_FLAG_PCM_ENABLED; -+ -+ if (sps->pcm.loop_filter_disable_flag) -+ ctrl->flags |= V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED; -+ -+ if (sps->long_term_ref_pics_present_flag) -+ ctrl->flags |= V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT; -+ -+ if (sps->sps_temporal_mvp_enabled_flag) -+ ctrl->flags |= V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED; -+ -+ if (sps->sps_strong_intra_smoothing_enable_flag) -+ ctrl->flags |= V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED; -+} -+ -+static void fill_scaling_matrix(const ScalingList * const sl, -+ struct v4l2_ctrl_hevc_scaling_matrix * const sm) -+{ -+ unsigned int i; -+ -+ for (i = 0; i < 6; i++) { -+ unsigned int j; -+ -+ for (j = 0; j < 16; j++) -+ sm->scaling_list_4x4[i][j] = sl->sl[0][i][j]; -+ for (j = 0; j < 64; j++) { -+ sm->scaling_list_8x8[i][j] = sl->sl[1][i][j]; -+ sm->scaling_list_16x16[i][j] = sl->sl[2][i][j]; -+ if (i < 2) -+ sm->scaling_list_32x32[i][j] = sl->sl[3][i * 3][j]; -+ } -+ sm->scaling_list_dc_coef_16x16[i] = sl->sl_dc[0][i]; -+ if (i < 2) -+ sm->scaling_list_dc_coef_32x32[i] = sl->sl_dc[1][i * 3]; -+ } -+} -+ -+static void fill_pps(struct v4l2_ctrl_hevc_pps * const ctrl, const HEVCPPS * const pps) -+{ -+ uint64_t flags = 0; -+ -+ if (pps->dependent_slice_segments_enabled_flag) -+ flags |= V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT_ENABLED; -+ -+ if (pps->output_flag_present_flag) -+ flags |= V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT; -+ -+ if (pps->sign_data_hiding_flag) -+ flags |= V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED; -+ -+ if (pps->cabac_init_present_flag) -+ flags |= V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT; -+ -+ if (pps->constrained_intra_pred_flag) -+ flags |= V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED; -+ -+ if (pps->transform_skip_enabled_flag) -+ flags |= V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED; -+ -+ if (pps->cu_qp_delta_enabled_flag) -+ flags |= V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED; -+ -+ if (pps->pic_slice_level_chroma_qp_offsets_present_flag) -+ flags |= V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT; -+ -+ if (pps->weighted_pred_flag) -+ flags |= V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED; -+ -+ if (pps->weighted_bipred_flag) -+ flags |= V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED; -+ -+ if (pps->transquant_bypass_enable_flag) -+ flags |= V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED; -+ -+ if (pps->tiles_enabled_flag) -+ flags |= V4L2_HEVC_PPS_FLAG_TILES_ENABLED; -+ -+ if (pps->entropy_coding_sync_enabled_flag) -+ flags |= V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED; -+ -+ if (pps->loop_filter_across_tiles_enabled_flag) -+ flags |= V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED; -+ -+ if (pps->seq_loop_filter_across_slices_enabled_flag) -+ flags |= V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED; -+ -+ if (pps->deblocking_filter_override_enabled_flag) -+ flags |= V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED; -+ -+ if (pps->disable_dbf) -+ flags |= V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER; -+ -+ if (pps->lists_modification_present_flag) -+ flags |= V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT; -+ -+ if (pps->slice_header_extension_present_flag) -+ flags |= V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: Picture parameter set */ -+ *ctrl = (struct v4l2_ctrl_hevc_pps) { -+ .num_extra_slice_header_bits = pps->num_extra_slice_header_bits, -+ .init_qp_minus26 = pps->pic_init_qp_minus26, -+ .diff_cu_qp_delta_depth = pps->diff_cu_qp_delta_depth, -+ .pps_cb_qp_offset = pps->cb_qp_offset, -+ .pps_cr_qp_offset = pps->cr_qp_offset, -+ .pps_beta_offset_div2 = pps->beta_offset / 2, -+ .pps_tc_offset_div2 = pps->tc_offset / 2, -+ .log2_parallel_merge_level_minus2 = pps->log2_parallel_merge_level - 2, -+ .flags = flags -+ }; -+ -+ -+ if (pps->tiles_enabled_flag) { -+ ctrl->num_tile_columns_minus1 = pps->num_tile_columns - 1; -+ ctrl->num_tile_rows_minus1 = pps->num_tile_rows - 1; -+ -+ for (int i = 0; i < pps->num_tile_columns; i++) -+ ctrl->column_width_minus1[i] = pps->column_width[i] - 1; -+ -+ for (int i = 0; i < pps->num_tile_rows; i++) -+ ctrl->row_height_minus1[i] = pps->row_height[i] - 1; -+ } -+} -+ -+// Called before finally returning the frame to the user -+// Set corrupt flag here as this is actually the frame structure that -+// is going to the user (in MT land each thread has its own pool) -+static int frame_post_process(void *logctx, AVFrame *frame) -+{ -+ V4L2MediaReqDescriptor *rd = (V4L2MediaReqDescriptor*)frame->data[0]; -+ -+// av_log(NULL, AV_LOG_INFO, "%s\n", __func__); -+ frame->flags &= ~AV_FRAME_FLAG_CORRUPT; -+ if (rd->qe_dst) { -+ MediaBufsStatus stat = qent_dst_wait(rd->qe_dst); -+ if (stat != MEDIABUFS_STATUS_SUCCESS) { -+ av_log(logctx, AV_LOG_ERROR, "%s: Decode fail\n", __func__); -+ frame->flags |= AV_FRAME_FLAG_CORRUPT; -+ } -+ } -+ -+ return 0; -+} -+ -+static inline struct timeval cvt_dpb_to_tv(uint64_t t) -+{ -+ t /= 1000; -+ return (struct timeval){ -+ .tv_usec = t % 1000000, -+ .tv_sec = t / 1000000 -+ }; -+} -+ -+static inline uint64_t cvt_timestamp_to_dpb(const unsigned int t) -+{ -+ return (uint64_t)t * 1000; -+} -+ -+static int v4l2_request_hevc_start_frame(AVCodecContext *avctx, -+ av_unused const uint8_t *buffer, -+ av_unused uint32_t size) -+{ -+ const HEVCContext *h = avctx->priv_data; -+ V4L2MediaReqDescriptor *const rd = (V4L2MediaReqDescriptor *)h->ref->frame->data[0]; -+ V4L2RequestContextHEVC * const ctx = avctx->internal->hwaccel_priv_data; -+ -+// av_log(NULL, AV_LOG_INFO, "%s\n", __func__); -+ decode_q_add(&ctx->decode_q, &rd->decode_ent); -+ -+ rd->num_slices = 0; -+ ctx->timestamp++; -+ rd->timestamp = cvt_timestamp_to_dpb(ctx->timestamp); -+ -+ { -+ FrameDecodeData * const fdd = (FrameDecodeData*)h->ref->frame->private_ref->data; -+ fdd->post_process = frame_post_process; -+ } -+ -+ // qe_dst needs to be bound to the data buffer and only returned when that is -+ if (!rd->qe_dst) -+ { -+ if ((rd->qe_dst = mediabufs_dst_qent_alloc(ctx->mbufs, ctx->dbufs)) == NULL) { -+ av_log(avctx, AV_LOG_ERROR, "%s: Failed to get dst buffer\n", __func__); -+ return AVERROR(ENOMEM); -+ } -+ } -+ -+ ff_thread_finish_setup(avctx); // Allow next thread to enter rpi_hevc_start_frame -+ -+ return 0; -+} -+ -+// Object fd & size will be zapped by this & need setting later -+static int drm_from_format(AVDRMFrameDescriptor * const desc, const struct v4l2_format * const format) -+{ -+ AVDRMLayerDescriptor *layer = &desc->layers[0]; -+ unsigned int width; -+ unsigned int height; -+ unsigned int bpl; -+ uint32_t pixelformat; -+ -+ if (V4L2_TYPE_IS_MULTIPLANAR(format->type)) { -+ width = format->fmt.pix_mp.width; -+ height = format->fmt.pix_mp.height; -+ pixelformat = format->fmt.pix_mp.pixelformat; -+ bpl = format->fmt.pix_mp.plane_fmt[0].bytesperline; -+ } -+ else { -+ width = format->fmt.pix.width; -+ height = format->fmt.pix.height; -+ pixelformat = format->fmt.pix.pixelformat; -+ bpl = format->fmt.pix.bytesperline; -+ } -+ -+ switch (pixelformat) { -+ case V4L2_PIX_FMT_NV12: -+ layer->format = DRM_FORMAT_NV12; -+ desc->objects[0].format_modifier = DRM_FORMAT_MOD_LINEAR; -+ break; -+#if CONFIG_SAND -+ case V4L2_PIX_FMT_NV12_COL128: -+ layer->format = DRM_FORMAT_NV12; -+ desc->objects[0].format_modifier = DRM_FORMAT_MOD_BROADCOM_SAND128_COL_HEIGHT(bpl); -+ break; -+ case V4L2_PIX_FMT_NV12_10_COL128: -+ layer->format = DRM_FORMAT_P030; -+ desc->objects[0].format_modifier = DRM_FORMAT_MOD_BROADCOM_SAND128_COL_HEIGHT(bpl); -+ break; -+#endif -+#ifdef DRM_FORMAT_MOD_ALLWINNER_TILED -+ case V4L2_PIX_FMT_SUNXI_TILED_NV12: -+ layer->format = DRM_FORMAT_NV12; -+ desc->objects[0].format_modifier = DRM_FORMAT_MOD_ALLWINNER_TILED; -+ break; -+#endif -+#if defined(V4L2_PIX_FMT_NV15) && defined(DRM_FORMAT_NV15) -+ case V4L2_PIX_FMT_NV15: -+ layer->format = DRM_FORMAT_NV15; -+ desc->objects[0].format_modifier = DRM_FORMAT_MOD_LINEAR; -+ break; -+#endif -+ case V4L2_PIX_FMT_NV16: -+ layer->format = DRM_FORMAT_NV16; -+ desc->objects[0].format_modifier = DRM_FORMAT_MOD_LINEAR; -+ break; -+#if defined(V4L2_PIX_FMT_NV20) && defined(DRM_FORMAT_NV20) -+ case V4L2_PIX_FMT_NV20: -+ layer->format = DRM_FORMAT_NV20; -+ desc->objects[0].format_modifier = DRM_FORMAT_MOD_LINEAR; -+ break; -+#endif -+ default: -+ return -1; -+ } -+ -+ desc->nb_objects = 1; -+ desc->objects[0].fd = -1; -+ desc->objects[0].size = 0; -+ -+ desc->nb_layers = 1; -+ layer->nb_planes = 2; -+ -+ layer->planes[0].object_index = 0; -+ layer->planes[0].offset = 0; -+ layer->planes[0].pitch = bpl; -+#if CONFIG_SAND -+ if (pixelformat == V4L2_PIX_FMT_NV12_COL128) { -+ layer->planes[1].object_index = 0; -+ layer->planes[1].offset = height * 128; -+ layer->planes[0].pitch = width; -+ layer->planes[1].pitch = width; -+ } -+ else if (pixelformat == V4L2_PIX_FMT_NV12_10_COL128) { -+ layer->planes[1].object_index = 0; -+ layer->planes[1].offset = height * 128; -+ layer->planes[0].pitch = width * 2; // Lies but it keeps DRM import happy -+ layer->planes[1].pitch = width * 2; -+ } -+ else -+#endif -+ { -+ layer->planes[1].object_index = 0; -+ layer->planes[1].offset = layer->planes[0].pitch * height; -+ layer->planes[1].pitch = layer->planes[0].pitch; -+ } -+ -+ return 0; -+} -+ -+static int -+set_req_ctls(V4L2RequestContextHEVC *ctx, struct media_request * const mreq, -+ struct req_controls *const controls, -+#if HEVC_CTRLS_VERSION >= 2 -+ struct v4l2_ctrl_hevc_decode_params * const dec, -+#endif -+ struct v4l2_ctrl_hevc_slice_params * const slices, -+ const unsigned int slice_no, -+ const unsigned int slice_count) -+{ -+ int rv; -+ -+ struct v4l2_ext_control control[] = { -+ { -+ .id = V4L2_CID_MPEG_VIDEO_HEVC_SPS, -+ .ptr = &controls->sps, -+ .size = sizeof(controls->sps), -+ }, -+ { -+ .id = V4L2_CID_MPEG_VIDEO_HEVC_PPS, -+ .ptr = &controls->pps, -+ .size = sizeof(controls->pps), -+ }, -+#if HEVC_CTRLS_VERSION >= 2 -+ { -+ .id = V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS, -+ .ptr = dec, -+ .size = sizeof(*dec), -+ }, -+#endif -+ { -+ .id = V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS, -+ .ptr = slices + slice_no, -+ .size = sizeof(*slices) * slice_count, -+ }, -+ // Optional -+ { -+ .id = V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX, -+ .ptr = &controls->scaling_matrix, -+ .size = sizeof(controls->scaling_matrix), -+ }, -+ }; -+ -+ rv = mediabufs_ctl_set_ext_ctrls(ctx->mbufs, mreq, control, -+ controls->has_scaling ? -+ FF_ARRAY_ELEMS(control) : -+ FF_ARRAY_ELEMS(control) - 1); -+ -+ return rv; -+} -+ -+static int v4l2_request_hevc_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size) -+{ -+ const HEVCContext * const h = avctx->priv_data; -+ V4L2RequestContextHEVC * const ctx = avctx->internal->hwaccel_priv_data; -+ V4L2MediaReqDescriptor * const rd = (V4L2MediaReqDescriptor*)h->ref->frame->data[0]; -+ int bcount = get_bits_count(&h->HEVClc->gb); -+ uint32_t boff = (ptr_from_index(buffer, bcount/8 + 1) - (buffer + bcount/8 + 1)) * 8 + bcount; -+ -+ int rv; -+ struct slice_info * si; -+ -+ if ((rv = slice_add(rd)) != 0) -+ return rv; -+ -+ si = rd->slices + rd->num_slices - 1; -+ si->ptr = buffer; -+ si->len = size; -+ -+ if (ctx->multi_slice && rd->num_slices > 1) { -+ struct slice_info *const si0 = rd->slices; -+ const size_t offset = (buffer - si0->ptr); -+ boff += offset * 8; -+ size += offset; -+ si0->len = si->len + offset; -+ } -+ -+#if HEVC_CTRLS_VERSION >= 2 -+ if (rd->num_slices == 1) -+ fill_decode_params(h, &rd->dec); -+ fill_slice_params(h, &rd->dec, rd->slice_params + rd->num_slices - 1, size * 8, boff); -+#else -+ fill_slice_params(h, rd->slice_params + rd->num_slices - 1, size * 8, boff); -+#endif -+ -+ return 0; -+} -+ -+static void v4l2_request_hevc_abort_frame(AVCodecContext * const avctx) -+{ -+ const HEVCContext * const h = avctx->priv_data; -+ if (h->ref != NULL) { -+ V4L2MediaReqDescriptor *const rd = (V4L2MediaReqDescriptor *)h->ref->frame->data[0]; -+ V4L2RequestContextHEVC * const ctx = avctx->internal->hwaccel_priv_data; -+ -+ media_request_abort(&rd->req); -+ mediabufs_src_qent_abort(ctx->mbufs, &rd->qe_src); -+ -+ decode_q_remove(&ctx->decode_q, &rd->decode_ent); -+ } -+} -+ -+static int send_slice(AVCodecContext * const avctx, -+ V4L2MediaReqDescriptor * const rd, -+ struct req_controls *const controls, -+ const unsigned int i, const unsigned int j) -+{ -+ V4L2RequestContextHEVC * const ctx = avctx->internal->hwaccel_priv_data; -+ -+ struct slice_info *const si = rd->slices + i; -+ struct media_request * req = NULL; -+ struct qent_src * src = NULL; -+ MediaBufsStatus stat; -+ -+ if ((req = media_request_get(ctx->mpool)) == NULL) { -+ av_log(avctx, AV_LOG_ERROR, "%s: Failed to alloc media request\n", __func__); -+ return AVERROR(ENOMEM); -+ } -+ -+ if (set_req_ctls(ctx, req, -+ controls, -+#if HEVC_CTRLS_VERSION >= 2 -+ &rd->dec, -+#endif -+ rd->slice_params, -+ i, j - i)) { -+ av_log(avctx, AV_LOG_ERROR, "%s: Failed to set req ctls\n", __func__); -+ goto fail1; -+ } -+ -+ if ((src = mediabufs_src_qent_get(ctx->mbufs)) == NULL) { -+ av_log(avctx, AV_LOG_ERROR, "%s: Failed to get src buffer\n", __func__); -+ goto fail1; -+ } -+ -+ if (qent_src_data_copy(src, 0, si->ptr, si->len, ctx->dbufs) != 0) { -+ av_log(avctx, AV_LOG_ERROR, "%s: Failed data copy\n", __func__); -+ goto fail2; -+ } -+ -+ if (qent_src_params_set(src, &controls->tv)) { -+ av_log(avctx, AV_LOG_ERROR, "%s: Failed src param set\n", __func__); -+ goto fail2; -+ } -+ -+#warning ANNEX_B start code -+// if (ctx->start_code == V4L2_MPEG_VIDEO_HEVC_START_CODE_ANNEX_B) { -+// } -+ -+ stat = mediabufs_start_request(ctx->mbufs, &req, &src, -+ i == 0 ? rd->qe_dst : NULL, -+ j == rd->num_slices); -+ -+ if (stat != MEDIABUFS_STATUS_SUCCESS) { -+ av_log(avctx, AV_LOG_ERROR, "%s: Failed to start request\n", __func__); -+ return AVERROR_UNKNOWN; -+ } -+ return 0; -+ -+fail2: -+ mediabufs_src_qent_abort(ctx->mbufs, &src); -+fail1: -+ media_request_abort(&req); -+ return AVERROR_UNKNOWN; -+} -+ -+static int v4l2_request_hevc_end_frame(AVCodecContext *avctx) -+{ -+ const HEVCContext * const h = avctx->priv_data; -+ V4L2MediaReqDescriptor *rd = (V4L2MediaReqDescriptor*)h->ref->frame->data[0]; -+ V4L2RequestContextHEVC *ctx = avctx->internal->hwaccel_priv_data; -+ struct req_controls rc; -+ unsigned int i; -+ int rv; -+ -+ // It is possible, though maybe a bug, to get an end_frame without -+ // a previous start_frame. If we do then give up. -+ if (!decode_q_in_q(&rd->decode_ent)) { -+ av_log(avctx, AV_LOG_DEBUG, "%s: Frame not in decode Q\n", __func__); -+ return AVERROR_INVALIDDATA; -+ } -+ -+ { -+ const ScalingList *sl = h->ps.pps->scaling_list_data_present_flag ? -+ &h->ps.pps->scaling_list : -+ h->ps.sps->scaling_list_enable_flag ? -+ &h->ps.sps->scaling_list : NULL; -+ -+ -+ memset(&rc, 0, sizeof(rc)); -+ rc.tv = cvt_dpb_to_tv(rd->timestamp); -+ fill_sps(&rc.sps, h->ps.sps); -+ fill_pps(&rc.pps, h->ps.pps); -+ if (sl) { -+ rc.has_scaling = 1; -+ fill_scaling_matrix(sl, &rc.scaling_matrix); -+ } -+ } -+ -+ decode_q_wait(&ctx->decode_q, &rd->decode_ent); -+ -+ // qe_dst needs to be bound to the data buffer and only returned when that is -+ // Alloc almost certainly wants to be serialised if there is any chance of blocking -+ // so we get the next frame to be free in the thread that needs it for decode first. -+ // -+ // In our current world this probably isn't a concern but put it here anyway -+ if (!rd->qe_dst) -+ { -+ if ((rd->qe_dst = mediabufs_dst_qent_alloc(ctx->mbufs, ctx->dbufs)) == NULL) { -+ av_log(avctx, AV_LOG_ERROR, "%s: Failed to get dst buffer\n", __func__); -+ rv = AVERROR(ENOMEM); -+ goto fail; -+ } -+ } -+ -+ // Send as slices -+ if (ctx->multi_slice) -+ { -+ if ((rv = send_slice(avctx, rd, &rc, 0, rd->num_slices)) != 0) -+ goto fail; -+ } -+ else -+ { -+ for (i = 0; i != rd->num_slices; ++i) { -+ if ((rv = send_slice(avctx, rd, &rc, i, i + 1)) != 0) -+ goto fail; -+ } -+ } -+ -+ // Set the drm_prime desriptor -+ drm_from_format(&rd->drm, mediabufs_dst_fmt(ctx->mbufs)); -+ rd->drm.objects[0].fd = dmabuf_fd(qent_dst_dmabuf(rd->qe_dst, 0)); -+ rd->drm.objects[0].size = dmabuf_size(qent_dst_dmabuf(rd->qe_dst, 0)); -+ -+ decode_q_remove(&ctx->decode_q, &rd->decode_ent); -+ return 0; -+ -+fail: -+ decode_q_remove(&ctx->decode_q, &rd->decode_ent); -+ return rv; -+} -+ -+// Initial check & init -+static int -+probe(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) -+{ -+ const HEVCContext *h = avctx->priv_data; -+ const HEVCSPS * const sps = h->ps.sps; -+ struct v4l2_ctrl_hevc_sps ctrl_sps; -+ unsigned int i; -+ -+ // Check for var slice array -+ struct v4l2_query_ext_ctrl qc[] = { -+ { .id = V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS }, -+ { .id = V4L2_CID_MPEG_VIDEO_HEVC_SPS }, -+ { .id = V4L2_CID_MPEG_VIDEO_HEVC_PPS }, -+ { .id = V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX }, -+#if HEVC_CTRLS_VERSION >= 2 -+ { .id = V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS }, -+#endif -+ }; -+ // Order & size must match! -+ static const size_t ctrl_sizes[] = { -+ sizeof(struct v4l2_ctrl_hevc_slice_params), -+ sizeof(struct v4l2_ctrl_hevc_sps), -+ sizeof(struct v4l2_ctrl_hevc_pps), -+ sizeof(struct v4l2_ctrl_hevc_scaling_matrix), -+#if HEVC_CTRLS_VERSION >= 2 -+ sizeof(struct v4l2_ctrl_hevc_decode_params), -+#endif -+ }; -+ const unsigned int noof_ctrls = FF_ARRAY_ELEMS(qc); -+ -+ if (mediabufs_ctl_query_ext_ctrls(ctx->mbufs, qc, noof_ctrls)) { -+ av_log(avctx, AV_LOG_DEBUG, "Probed V%d control missing\n", HEVC_CTRLS_VERSION); -+ return AVERROR(EINVAL); -+ } -+ for (i = 0; i != noof_ctrls; ++i) { -+ if (ctrl_sizes[i] != (size_t)qc[i].elem_size) { -+ av_log(avctx, AV_LOG_DEBUG, "Probed V%d control %d size mismatch %zu != %zu\n", -+ HEVC_CTRLS_VERSION, i, ctrl_sizes[i], (size_t)qc[i].elem_size); -+ return AVERROR(EINVAL); -+ } -+ } -+ -+ fill_sps(&ctrl_sps, sps); -+ -+ if (mediabufs_set_ext_ctrl(ctx->mbufs, NULL, V4L2_CID_MPEG_VIDEO_HEVC_SPS, &ctrl_sps, sizeof(ctrl_sps))) { -+ av_log(avctx, AV_LOG_ERROR, "Failed to set initial SPS\n"); -+ return AVERROR(EINVAL); -+ } -+ -+ ctx->multi_slice = (qc[0].flags & V4L2_CTRL_FLAG_DYNAMIC_ARRAY) != 0; -+ return 0; -+} -+ -+// Final init -+static int -+set_controls(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) -+{ -+ int ret; -+ -+ struct v4l2_query_ext_ctrl querys[] = { -+ { .id = V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE, }, -+ { .id = V4L2_CID_MPEG_VIDEO_HEVC_START_CODE, }, -+ { .id = V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS, }, -+ }; -+ -+ struct v4l2_ext_control ctrls[] = { -+ { .id = V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE, }, -+ { .id = V4L2_CID_MPEG_VIDEO_HEVC_START_CODE, }, -+ }; -+ -+ mediabufs_ctl_query_ext_ctrls(ctx->mbufs, querys, FF_ARRAY_ELEMS(querys)); -+ -+ ctx->decode_mode = querys[0].default_value; -+ -+ if (ctx->decode_mode != V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_SLICE_BASED && -+ ctx->decode_mode != V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_FRAME_BASED) { -+ av_log(avctx, AV_LOG_ERROR, "%s: unsupported decode mode, %d\n", __func__, ctx->decode_mode); -+ return AVERROR(EINVAL); -+ } -+ -+ ctx->start_code = querys[1].default_value; -+ if (ctx->start_code != V4L2_MPEG_VIDEO_HEVC_START_CODE_NONE && -+ ctx->start_code != V4L2_MPEG_VIDEO_HEVC_START_CODE_ANNEX_B) { -+ av_log(avctx, AV_LOG_ERROR, "%s: unsupported start code, %d\n", __func__, ctx->start_code); -+ return AVERROR(EINVAL); -+ } -+ -+ ctx->max_slices = querys[2].elems; -+ if (ctx->max_slices > MAX_SLICES) { -+ av_log(avctx, AV_LOG_ERROR, "%s: unsupported max slices, %d\n", __func__, ctx->max_slices); -+ return AVERROR(EINVAL); -+ } -+ -+ ctrls[0].value = ctx->decode_mode; -+ ctrls[1].value = ctx->start_code; -+ -+ ret = mediabufs_ctl_set_ext_ctrls(ctx->mbufs, NULL, ctrls, FF_ARRAY_ELEMS(ctrls)); -+ return !ret ? 0 : AVERROR(-ret); -+} -+ -+static void v4l2_req_frame_free(void *opaque, uint8_t *data) -+{ -+ AVCodecContext *avctx = opaque; -+ V4L2MediaReqDescriptor * const rd = (V4L2MediaReqDescriptor*)data; -+ -+ av_log(NULL, AV_LOG_DEBUG, "%s: avctx=%p data=%p\n", __func__, avctx, data); -+ -+ qent_dst_unref(&rd->qe_dst); -+ -+ // We don't expect req or qe_src to be set -+ if (rd->req || rd->qe_src) -+ av_log(NULL, AV_LOG_ERROR, "%s: qe_src %p or req %p not NULL\n", __func__, rd->req, rd->qe_src); -+ -+ av_freep(&rd->slices); -+ av_freep(&rd->slice_params); -+ -+ av_free(rd); -+} -+ -+static AVBufferRef *v4l2_req_frame_alloc(void *opaque, int size) -+{ -+ AVCodecContext *avctx = opaque; -+// V4L2RequestContextHEVC *ctx = avctx->internal->hwaccel_priv_data; -+// V4L2MediaReqDescriptor *req; -+ AVBufferRef *ref; -+ uint8_t *data; -+// int ret; -+ -+ data = av_mallocz(size); -+ if (!data) -+ return NULL; -+ -+ av_log(avctx, AV_LOG_DEBUG, "%s: avctx=%p size=%d data=%p\n", __func__, avctx, size, data); -+ ref = av_buffer_create(data, size, v4l2_req_frame_free, avctx, 0); -+ if (!ref) { -+ av_freep(&data); -+ return NULL; -+ } -+ return ref; -+} -+ -+#if 0 -+static void v4l2_req_pool_free(void *opaque) -+{ -+ av_log(NULL, AV_LOG_DEBUG, "%s: opaque=%p\n", __func__, opaque); -+} -+ -+static void v4l2_req_hwframe_ctx_free(AVHWFramesContext *hwfc) -+{ -+ av_log(NULL, AV_LOG_DEBUG, "%s: hwfc=%p pool=%p\n", __func__, hwfc, hwfc->pool); -+ -+ av_buffer_pool_uninit(&hwfc->pool); -+} -+#endif -+ -+static int frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx) -+{ -+ V4L2RequestContextHEVC *ctx = avctx->internal->hwaccel_priv_data; -+ AVHWFramesContext *hwfc = (AVHWFramesContext*)hw_frames_ctx->data; -+ const struct v4l2_format *vfmt = mediabufs_dst_fmt(ctx->mbufs); -+ -+ hwfc->format = AV_PIX_FMT_DRM_PRIME; -+ hwfc->sw_format = pixel_format_from_format(vfmt); -+ if (V4L2_TYPE_IS_MULTIPLANAR(vfmt->type)) { -+ hwfc->width = vfmt->fmt.pix_mp.width; -+ hwfc->height = vfmt->fmt.pix_mp.height; -+ } else { -+ hwfc->width = vfmt->fmt.pix.width; -+ hwfc->height = vfmt->fmt.pix.height; -+ } -+#if 0 -+ hwfc->pool = av_buffer_pool_init2(sizeof(V4L2MediaReqDescriptor), avctx, v4l2_req_frame_alloc, v4l2_req_pool_free); -+ if (!hwfc->pool) -+ return AVERROR(ENOMEM); -+ -+ hwfc->free = v4l2_req_hwframe_ctx_free; -+ -+ hwfc->initial_pool_size = 1; -+ -+ switch (avctx->codec_id) { -+ case AV_CODEC_ID_VP9: -+ hwfc->initial_pool_size += 8; -+ break; -+ case AV_CODEC_ID_VP8: -+ hwfc->initial_pool_size += 3; -+ break; -+ default: -+ hwfc->initial_pool_size += 2; -+ } -+#endif -+ av_log(avctx, AV_LOG_DEBUG, "%s: avctx=%p ctx=%p hw_frames_ctx=%p hwfc=%p pool=%p width=%d height=%d initial_pool_size=%d\n", __func__, avctx, ctx, hw_frames_ctx, hwfc, hwfc->pool, hwfc->width, hwfc->height, hwfc->initial_pool_size); -+ -+ return 0; -+} -+ -+static int alloc_frame(AVCodecContext * avctx, AVFrame *frame) -+{ -+ int rv; -+ -+ frame->buf[0] = v4l2_req_frame_alloc(avctx, sizeof(V4L2MediaReqDescriptor)); -+ if (!frame->buf[0]) -+ return AVERROR(ENOMEM); -+ -+ frame->data[0] = frame->buf[0]->data; -+ -+ frame->hw_frames_ctx = av_buffer_ref(avctx->hw_frames_ctx); -+ -+ if ((rv = ff_attach_decode_data(frame)) != 0) { -+ av_log(avctx, AV_LOG_ERROR, "Failed to attach decode data to frame\n"); -+ av_frame_unref(frame); -+ return rv; -+ } -+ -+ return 0; -+} -+ -+const v4l2_req_decode_fns V(ff_v4l2_req_hevc) = { -+ .src_pix_fmt_v4l2 = V4L2_PIX_FMT_HEVC_SLICE, -+ .name = "V4L2 HEVC stateless V" STR(HEVC_CTRLS_VERSION), -+ .probe = probe, -+ .set_controls = set_controls, -+ -+ .start_frame = v4l2_request_hevc_start_frame, -+ .decode_slice = v4l2_request_hevc_decode_slice, -+ .end_frame = v4l2_request_hevc_end_frame, -+ .abort_frame = v4l2_request_hevc_abort_frame, -+ .frame_params = frame_params, -+ .alloc_frame = alloc_frame, -+}; -+ -diff --git a/libavcodec/v4l2_req_media.c b/libavcodec/v4l2_req_media.c -new file mode 100644 -index 0000000000..eb00ecb406 ---- /dev/null -+++ b/libavcodec/v4l2_req_media.c -@@ -0,0 +1,1596 @@ -+/* -+ * Copyright (C) 2018 Paul Kocialkowski -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the -+ * "Software"), to deal in the Software without restriction, including -+ * without limitation the rights to use, copy, modify, merge, publish, -+ * distribute, sub license, and/or sell copies of the Software, and to -+ * permit persons to whom the Software is furnished to do so, subject to -+ * the following conditions: -+ * -+ * The above copyright notice and this permission notice (including the -+ * next paragraph) shall be included in all copies or substantial portions -+ * of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR -+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+ -+#include "v4l2_req_dmabufs.h" -+#include "v4l2_req_media.h" -+#include "v4l2_req_pollqueue.h" -+#include "v4l2_req_utils.h" -+#include "weak_link.h" -+ -+ -+/* floor(log2(x)) */ -+static unsigned int log2_size(size_t x) -+{ -+ unsigned int n = 0; -+ -+ if (x & ~0xffff) { -+ n += 16; -+ x >>= 16; -+ } -+ if (x & ~0xff) { -+ n += 8; -+ x >>= 8; -+ } -+ if (x & ~0xf) { -+ n += 4; -+ x >>= 4; -+ } -+ if (x & ~3) { -+ n += 2; -+ x >>= 2; -+ } -+ return (x & ~1) ? n + 1 : n; -+} -+ -+static size_t round_up_size(const size_t x) -+{ -+ /* Admit no size < 256 */ -+ const unsigned int n = x < 256 ? 8 : log2_size(x) - 1; -+ -+ return x >= (3 << n) ? 4 << n : (3 << n); -+} -+ -+struct media_request; -+ -+struct media_pool { -+ int fd; -+ sem_t sem; -+ pthread_mutex_t lock; -+ struct media_request * free_reqs; -+ struct pollqueue * pq; -+}; -+ -+struct media_request { -+ struct media_request * next; -+ struct media_pool * mp; -+ int fd; -+ struct polltask * pt; -+}; -+ -+ -+static inline int do_trywait(sem_t *const sem) -+{ -+ while (sem_trywait(sem)) { -+ if (errno != EINTR) -+ return -errno; -+ } -+ return 0; -+} -+ -+static inline int do_wait(sem_t *const sem) -+{ -+ while (sem_wait(sem)) { -+ if (errno != EINTR) -+ return -errno; -+ } -+ return 0; -+} -+ -+static int request_buffers(int video_fd, unsigned int type, -+ enum v4l2_memory memory, unsigned int buffers_count) -+{ -+ struct v4l2_requestbuffers buffers; -+ int rc; -+ -+ memset(&buffers, 0, sizeof(buffers)); -+ buffers.type = type; -+ buffers.memory = memory; -+ buffers.count = buffers_count; -+ -+ rc = ioctl(video_fd, VIDIOC_REQBUFS, &buffers); -+ if (rc < 0) { -+ rc = -errno; -+ request_log("Unable to request %d type %d buffers: %s\n", buffers_count, type, strerror(-rc)); -+ return rc; -+ } -+ -+ return 0; -+} -+ -+ -+static int set_stream(int video_fd, unsigned int type, bool enable) -+{ -+ enum v4l2_buf_type buf_type = type; -+ int rc; -+ -+ rc = ioctl(video_fd, enable ? VIDIOC_STREAMON : VIDIOC_STREAMOFF, -+ &buf_type); -+ if (rc < 0) { -+ rc = -errno; -+ request_log("Unable to %sable stream: %s\n", -+ enable ? "en" : "dis", strerror(-rc)); -+ return rc; -+ } -+ -+ return 0; -+} -+ -+ -+ -+struct media_request * media_request_get(struct media_pool * const mp) -+{ -+ struct media_request *req = NULL; -+ -+ /* Timeout handled by poll code */ -+ if (do_wait(&mp->sem)) -+ return NULL; -+ -+ pthread_mutex_lock(&mp->lock); -+ req = mp->free_reqs; -+ if (req) { -+ mp->free_reqs = req->next; -+ req->next = NULL; -+ } -+ pthread_mutex_unlock(&mp->lock); -+ return req; -+} -+ -+int media_request_fd(const struct media_request * const req) -+{ -+ return req->fd; -+} -+ -+int media_request_start(struct media_request * const req) -+{ -+ while (ioctl(req->fd, MEDIA_REQUEST_IOC_QUEUE, NULL) == -1) -+ { -+ const int err = errno; -+ if (err == EINTR) -+ continue; -+ request_log("%s: Failed to Q media: (%d) %s\n", __func__, err, strerror(err)); -+ return -err; -+ } -+ -+ pollqueue_add_task(req->pt, 2000); -+ return 0; -+} -+ -+static void media_request_done(void *v, short revents) -+{ -+ struct media_request *const req = v; -+ struct media_pool *const mp = req->mp; -+ -+ /* ** Not sure what to do about timeout */ -+ -+ if (ioctl(req->fd, MEDIA_REQUEST_IOC_REINIT, NULL) < 0) -+ request_log("Unable to reinit media request: %s\n", -+ strerror(errno)); -+ -+ pthread_mutex_lock(&mp->lock); -+ req->next = mp->free_reqs; -+ mp->free_reqs = req; -+ pthread_mutex_unlock(&mp->lock); -+ sem_post(&mp->sem); -+} -+ -+int media_request_abort(struct media_request ** const preq) -+{ -+ struct media_request * const req = *preq; -+ -+ if (req == NULL) -+ return 0; -+ *preq = NULL; -+ -+ media_request_done(req, 0); -+ return 0; -+} -+ -+static void delete_req_chain(struct media_request * const chain) -+{ -+ struct media_request * next = chain; -+ while (next) { -+ struct media_request * const req = next; -+ next = req->next; -+ if (req->pt) -+ polltask_delete(&req->pt); -+ if (req->fd != -1) -+ close(req->fd); -+ free(req); -+ } -+} -+ -+struct media_pool * media_pool_new(const char * const media_path, -+ struct pollqueue * const pq, -+ const unsigned int n) -+{ -+ struct media_pool * const mp = calloc(1, sizeof(*mp)); -+ unsigned int i; -+ -+ if (!mp) -+ goto fail0; -+ -+ mp->pq = pq; -+ pthread_mutex_init(&mp->lock, NULL); -+ mp->fd = open(media_path, O_RDWR | O_NONBLOCK); -+ if (mp->fd == -1) { -+ request_log("Failed to open '%s': %s\n", media_path, strerror(errno)); -+ goto fail1; -+ } -+ -+ for (i = 0; i != n; ++i) { -+ struct media_request * req = malloc(sizeof(*req)); -+ if (!req) -+ goto fail4; -+ -+ *req = (struct media_request){ -+ .next = mp->free_reqs, -+ .mp = mp, -+ .fd = -1 -+ }; -+ mp->free_reqs = req; -+ -+ if (ioctl(mp->fd, MEDIA_IOC_REQUEST_ALLOC, &req->fd) == -1) { -+ request_log("Failed to alloc request %d: %s\n", i, strerror(errno)); -+ goto fail4; -+ } -+ -+ req->pt = polltask_new(pq, req->fd, POLLPRI, media_request_done, req); -+ if (!req->pt) -+ goto fail4; -+ } -+ -+ sem_init(&mp->sem, 0, n); -+ -+ return mp; -+ -+fail4: -+ delete_req_chain(mp->free_reqs); -+ close(mp->fd); -+ pthread_mutex_destroy(&mp->lock); -+fail1: -+ free(mp); -+fail0: -+ return NULL; -+} -+ -+void media_pool_delete(struct media_pool ** pMp) -+{ -+ struct media_pool * const mp = *pMp; -+ -+ if (!mp) -+ return; -+ *pMp = NULL; -+ -+ delete_req_chain(mp->free_reqs); -+ close(mp->fd); -+ sem_destroy(&mp->sem); -+ pthread_mutex_destroy(&mp->lock); -+ free(mp); -+} -+ -+ -+#define INDEX_UNSET (~(uint32_t)0) -+ -+enum qent_status { -+ QENT_NEW = 0, // Initial state - shouldn't last -+ QENT_FREE, // On free chain -+ QENT_PENDING, // User has ent -+ QENT_WAITING, // On inuse -+ QENT_DONE, // Frame rx -+ QENT_ERROR, // Error -+ QENT_IMPORT -+}; -+ -+struct qent_base { -+ atomic_int ref_count; -+ struct qent_base *next; -+ struct qent_base *prev; -+ enum qent_status status; -+ uint32_t index; -+ struct dmabuf_h *dh[VIDEO_MAX_PLANES]; -+ struct timeval timestamp; -+}; -+ -+struct qent_src { -+ struct qent_base base; -+ int fixed_size; -+}; -+ -+struct qent_dst { -+ struct qent_base base; -+ bool waiting; -+ pthread_mutex_t lock; -+ pthread_cond_t cond; -+ struct ff_weak_link_client * mbc_wl; -+}; -+ -+struct qe_list_head { -+ struct qent_base *head; -+ struct qent_base *tail; -+}; -+ -+struct buf_pool { -+ pthread_mutex_t lock; -+ sem_t free_sem; -+ enum v4l2_buf_type buf_type; -+ struct qe_list_head free; -+ struct qe_list_head inuse; -+}; -+ -+ -+static inline struct qent_dst *base_to_dst(struct qent_base *be) -+{ -+ return (struct qent_dst *)be; -+} -+ -+static inline struct qent_src *base_to_src(struct qent_base *be) -+{ -+ return (struct qent_src *)be; -+} -+ -+ -+#define QENT_BASE_INITIALIZER {\ -+ .ref_count = ATOMIC_VAR_INIT(0),\ -+ .status = QENT_NEW,\ -+ .index = INDEX_UNSET\ -+} -+ -+static void qe_base_uninit(struct qent_base *const be) -+{ -+ unsigned int i; -+ for (i = 0; i != VIDEO_MAX_PLANES; ++i) { -+ dmabuf_free(be->dh[i]); -+ be->dh[i] = NULL; -+ } -+} -+ -+static void qe_src_free(struct qent_src *const be_src) -+{ -+ if (!be_src) -+ return; -+ qe_base_uninit(&be_src->base); -+ free(be_src); -+} -+ -+static struct qent_src * qe_src_new(void) -+{ -+ struct qent_src *const be_src = malloc(sizeof(*be_src)); -+ if (!be_src) -+ return NULL; -+ *be_src = (struct qent_src){ -+ .base = QENT_BASE_INITIALIZER -+ }; -+ return be_src; -+} -+ -+static void qe_dst_free(struct qent_dst *const be_dst) -+{ -+ if (!be_dst) -+ return; -+ -+ ff_weak_link_unref(&be_dst->mbc_wl); -+ pthread_cond_destroy(&be_dst->cond); -+ pthread_mutex_destroy(&be_dst->lock); -+ qe_base_uninit(&be_dst->base); -+ free(be_dst); -+} -+ -+static struct qent_dst* qe_dst_new(struct ff_weak_link_master * const wl) -+{ -+ struct qent_dst *const be_dst = malloc(sizeof(*be_dst)); -+ if (!be_dst) -+ return NULL; -+ *be_dst = (struct qent_dst){ -+ .base = QENT_BASE_INITIALIZER, -+ .lock = PTHREAD_MUTEX_INITIALIZER, -+ .cond = PTHREAD_COND_INITIALIZER, -+ .mbc_wl = ff_weak_link_ref(wl) -+ }; -+ return be_dst; -+} -+ -+static void ql_add_tail(struct qe_list_head * const ql, struct qent_base * be) -+{ -+ if (ql->tail) -+ ql->tail->next = be; -+ else -+ ql->head = be; -+ be->prev = ql->tail; -+ be->next = NULL; -+ ql->tail = be; -+} -+ -+static struct qent_base * ql_extract(struct qe_list_head * const ql, struct qent_base * be) -+{ -+ if (!be) -+ return NULL; -+ -+ if (be->next) -+ be->next->prev = be->prev; -+ else -+ ql->tail = be->prev; -+ if (be->prev) -+ be->prev->next = be->next; -+ else -+ ql->head = be->next; -+ be->next = NULL; -+ be->prev = NULL; -+ return be; -+} -+ -+ -+static void bq_put_free(struct buf_pool *const bp, struct qent_base * be) -+{ -+ ql_add_tail(&bp->free, be); -+} -+ -+static struct qent_base * bq_get_free(struct buf_pool *const bp) -+{ -+ return ql_extract(&bp->free, bp->free.head); -+} -+ -+static struct qent_base * bq_extract_inuse(struct buf_pool *const bp, struct qent_base *const be) -+{ -+ return ql_extract(&bp->inuse, be); -+} -+ -+static struct qent_base * bq_get_inuse(struct buf_pool *const bp) -+{ -+ return ql_extract(&bp->inuse, bp->inuse.head); -+} -+ -+static void bq_free_all_free_src(struct buf_pool *const bp) -+{ -+ struct qent_base *be; -+ while ((be = bq_get_free(bp)) != NULL) -+ qe_src_free(base_to_src(be)); -+} -+ -+static void bq_free_all_inuse_src(struct buf_pool *const bp) -+{ -+ struct qent_base *be; -+ while ((be = bq_get_inuse(bp)) != NULL) -+ qe_src_free(base_to_src(be)); -+} -+ -+static void bq_free_all_free_dst(struct buf_pool *const bp) -+{ -+ struct qent_base *be; -+ while ((be = bq_get_free(bp)) != NULL) -+ qe_dst_free(base_to_dst(be)); -+} -+ -+static void queue_put_free(struct buf_pool *const bp, struct qent_base *be) -+{ -+ unsigned int i; -+ -+ pthread_mutex_lock(&bp->lock); -+ /* Clear out state vars */ -+ be->timestamp.tv_sec = 0; -+ be->timestamp.tv_usec = 0; -+ be->status = QENT_FREE; -+ for (i = 0; i < VIDEO_MAX_PLANES && be->dh[i]; ++i) -+ dmabuf_len_set(be->dh[i], 0); -+ bq_put_free(bp, be); -+ pthread_mutex_unlock(&bp->lock); -+ sem_post(&bp->free_sem); -+} -+ -+static bool queue_is_inuse(const struct buf_pool *const bp) -+{ -+ return bp->inuse.tail != NULL; -+} -+ -+static void queue_put_inuse(struct buf_pool *const bp, struct qent_base *be) -+{ -+ if (!be) -+ return; -+ pthread_mutex_lock(&bp->lock); -+ ql_add_tail(&bp->inuse, be); -+ be->status = QENT_WAITING; -+ pthread_mutex_unlock(&bp->lock); -+} -+ -+static struct qent_base *queue_get_free(struct buf_pool *const bp) -+{ -+ struct qent_base *buf; -+ -+ if (do_wait(&bp->free_sem)) -+ return NULL; -+ pthread_mutex_lock(&bp->lock); -+ buf = bq_get_free(bp); -+ pthread_mutex_unlock(&bp->lock); -+ return buf; -+} -+ -+static struct qent_base *queue_tryget_free(struct buf_pool *const bp) -+{ -+ struct qent_base *buf; -+ -+ if (do_trywait(&bp->free_sem)) -+ return NULL; -+ pthread_mutex_lock(&bp->lock); -+ buf = bq_get_free(bp); -+ pthread_mutex_unlock(&bp->lock); -+ return buf; -+} -+ -+static struct qent_base * queue_find_extract_fd(struct buf_pool *const bp, const int fd) -+{ -+ struct qent_base *be; -+ -+ pthread_mutex_lock(&bp->lock); -+ /* Expect 1st in Q, but allow anywhere */ -+ for (be = bp->inuse.head; be; be = be->next) { -+ if (dmabuf_fd(be->dh[0]) == fd) { -+ bq_extract_inuse(bp, be); -+ break; -+ } -+ } -+ pthread_mutex_unlock(&bp->lock); -+ -+ return be; -+} -+ -+static void queue_delete(struct buf_pool *const bp) -+{ -+ sem_destroy(&bp->free_sem); -+ pthread_mutex_destroy(&bp->lock); -+ free(bp); -+} -+ -+static struct buf_pool* queue_new(const int vfd) -+{ -+ struct buf_pool *bp = calloc(1, sizeof(*bp)); -+ if (!bp) -+ return NULL; -+ pthread_mutex_init(&bp->lock, NULL); -+ sem_init(&bp->free_sem, 0, 0); -+ return bp; -+} -+ -+ -+struct mediabufs_ctl { -+ atomic_int ref_count; /* 0 is single ref for easier atomics */ -+ void * dc; -+ int vfd; -+ bool stream_on; -+ bool polling; -+ bool dst_fixed; // Dst Q is fixed size -+ pthread_mutex_t lock; -+ struct buf_pool * src; -+ struct buf_pool * dst; -+ struct polltask * pt; -+ struct pollqueue * pq; -+ struct ff_weak_link_master * this_wlm; -+ -+ struct v4l2_format src_fmt; -+ struct v4l2_format dst_fmt; -+}; -+ -+static int qe_v4l2_queue(struct qent_base *const be, -+ const int vfd, struct media_request *const mreq, -+ const struct v4l2_format *const fmt, -+ const bool is_dst, const bool hold_flag) -+{ -+ struct v4l2_buffer buffer = { -+ .type = fmt->type, -+ .memory = V4L2_MEMORY_DMABUF, -+ .index = be->index -+ }; -+ struct v4l2_plane planes[VIDEO_MAX_PLANES] = {{0}}; -+ -+ if (V4L2_TYPE_IS_MULTIPLANAR(fmt->type)) { -+ unsigned int i; -+ for (i = 0; i < VIDEO_MAX_PLANES && be->dh[i]; ++i) { -+ if (is_dst) -+ dmabuf_len_set(be->dh[i], 0); -+ -+ /* *** Really need a pixdesc rather than a format so we can fill in data_offset */ -+ planes[i].length = dmabuf_size(be->dh[i]); -+ planes[i].bytesused = dmabuf_len(be->dh[i]); -+ planes[i].m.fd = dmabuf_fd(be->dh[i]); -+ } -+ buffer.m.planes = planes; -+ buffer.length = i; -+ } -+ else { -+ if (is_dst) -+ dmabuf_len_set(be->dh[0], 0); -+ -+ buffer.bytesused = dmabuf_len(be->dh[0]); -+ buffer.length = dmabuf_size(be->dh[0]); -+ buffer.m.fd = dmabuf_fd(be->dh[0]); -+ } -+ -+ if (!is_dst && mreq) { -+ buffer.flags |= V4L2_BUF_FLAG_REQUEST_FD; -+ buffer.request_fd = media_request_fd(mreq); -+ if (hold_flag) -+ buffer.flags |= V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF; -+ } -+ -+ if (is_dst) -+ be->timestamp = (struct timeval){0,0}; -+ -+ buffer.timestamp = be->timestamp; -+ -+ while (ioctl(vfd, VIDIOC_QBUF, &buffer)) { -+ const int err = errno; -+ if (err != EINTR) { -+ request_log("%s: Failed to Q buffer: err=%d (%s)\n", __func__, err, strerror(err)); -+ return -err; -+ } -+ } -+ return 0; -+} -+ -+static struct qent_base * qe_dequeue(struct buf_pool *const bp, -+ const int vfd, -+ const struct v4l2_format * const f) -+{ -+ int fd; -+ struct qent_base *be; -+ int rc; -+ const bool mp = V4L2_TYPE_IS_MULTIPLANAR(f->type); -+ struct v4l2_plane planes[VIDEO_MAX_PLANES] = {{0}}; -+ struct v4l2_buffer buffer = { -+ .type = f->type, -+ .memory = V4L2_MEMORY_DMABUF -+ }; -+ if (mp) { -+ buffer.length = f->fmt.pix_mp.num_planes; -+ buffer.m.planes = planes; -+ } -+ -+ while ((rc = ioctl(vfd, VIDIOC_DQBUF, &buffer)) != 0 && -+ errno == EINTR) -+ /* Loop */; -+ if (rc) { -+ request_log("Error DQing buffer type %d: %s\n", f->type, strerror(errno)); -+ return NULL; -+ } -+ -+ fd = mp ? planes[0].m.fd : buffer.m.fd; -+ be = queue_find_extract_fd(bp, fd); -+ if (!be) { -+ request_log("Failed to find fd %d in Q\n", fd); -+ return NULL; -+ } -+ -+ be->timestamp = buffer.timestamp; -+ be->status = (buffer.flags & V4L2_BUF_FLAG_ERROR) ? QENT_ERROR : QENT_DONE; -+ return be; -+} -+ -+static void qe_dst_done(struct qent_dst * dst_be) -+{ -+ pthread_mutex_lock(&dst_be->lock); -+ dst_be->waiting = false; -+ pthread_cond_broadcast(&dst_be->cond); -+ pthread_mutex_unlock(&dst_be->lock); -+ -+ qent_dst_unref(&dst_be); -+} -+ -+static bool qe_dst_waiting(struct qent_dst *const dst_be) -+{ -+ bool waiting; -+ pthread_mutex_lock(&dst_be->lock); -+ waiting = dst_be->waiting; -+ dst_be->waiting = true; -+ pthread_mutex_unlock(&dst_be->lock); -+ return waiting; -+} -+ -+ -+static bool mediabufs_wants_poll(const struct mediabufs_ctl *const mbc) -+{ -+ return queue_is_inuse(mbc->src) || queue_is_inuse(mbc->dst); -+} -+ -+static void mediabufs_poll_cb(void * v, short revents) -+{ -+ struct mediabufs_ctl *mbc = v; -+ struct qent_src *src_be = NULL; -+ struct qent_dst *dst_be = NULL; -+ -+ if (!revents) -+ request_err(mbc->dc, "%s: Timeout\n", __func__); -+ -+ pthread_mutex_lock(&mbc->lock); -+ mbc->polling = false; -+ -+ if ((revents & POLLOUT) != 0) -+ src_be = base_to_src(qe_dequeue(mbc->src, mbc->vfd, &mbc->src_fmt)); -+ if ((revents & POLLIN) != 0) -+ dst_be = base_to_dst(qe_dequeue(mbc->dst, mbc->vfd, &mbc->dst_fmt)); -+ -+ /* Reschedule */ -+ if (mediabufs_wants_poll(mbc)) { -+ mbc->polling = true; -+ pollqueue_add_task(mbc->pt, 2000); -+ } -+ pthread_mutex_unlock(&mbc->lock); -+ -+ if (src_be) -+ queue_put_free(mbc->src, &src_be->base); -+ if (dst_be) -+ qe_dst_done(dst_be); -+} -+ -+int qent_src_params_set(struct qent_src *const be_src, const struct timeval * timestamp) -+{ -+ struct qent_base *const be = &be_src->base; -+ -+ be->timestamp = *timestamp; -+ return 0; -+} -+ -+struct timeval qent_dst_timestamp_get(const struct qent_dst *const be_dst) -+{ -+ return be_dst->base.timestamp; -+} -+ -+static int qent_base_realloc(struct qent_base *const be, const size_t len, struct dmabufs_ctl * dbsc) -+{ -+ if (!be->dh[0] || len > dmabuf_size(be->dh[0])) { -+ size_t newsize = round_up_size(len); -+ request_log("%s: Overrun %zd > %zd; trying %zd\n", __func__, len, dmabuf_size(be->dh[0]), newsize); -+ if (!dbsc) { -+ request_log("%s: No dmbabuf_ctrl for realloc\n", __func__); -+ return -ENOMEM; -+ } -+ if ((be->dh[0] = dmabuf_realloc(dbsc, be->dh[0], newsize)) == NULL) { -+ request_log("%s: Realloc %zd failed\n", __func__, newsize); -+ return -ENOMEM; -+ } -+ } -+ return 0; -+} -+ -+int qent_src_alloc(struct qent_src *const be_src, const size_t len, struct dmabufs_ctl * dbsc) -+{ -+ struct qent_base *const be = &be_src->base; -+ return qent_base_realloc(be, len, dbsc); -+} -+ -+ -+int qent_src_data_copy(struct qent_src *const be_src, const size_t offset, const void *const src, const size_t len, struct dmabufs_ctl * dbsc) -+{ -+ void * dst; -+ struct qent_base *const be = &be_src->base; -+ int rv; -+ -+ // Realloc doesn't copy so don't alloc if offset != 0 -+ if ((rv = qent_base_realloc(be, offset + len, -+ be_src->fixed_size || offset ? NULL : dbsc)) != 0) -+ return rv; -+ -+ dmabuf_write_start(be->dh[0]); -+ dst = dmabuf_map(be->dh[0]); -+ if (!dst) -+ return -1; -+ memcpy((char*)dst + offset, src, len); -+ dmabuf_len_set(be->dh[0], len); -+ dmabuf_write_end(be->dh[0]); -+ return 0; -+} -+ -+const struct dmabuf_h * qent_dst_dmabuf(const struct qent_dst *const be_dst, unsigned int plane) -+{ -+ const struct qent_base *const be = &be_dst->base; -+ -+ return (plane >= sizeof(be->dh)/sizeof(be->dh[0])) ? NULL : be->dh[plane]; -+} -+ -+int qent_dst_dup_fd(const struct qent_dst *const be_dst, unsigned int plane) -+{ -+ return dup(dmabuf_fd(qent_dst_dmabuf(be_dst, plane))); -+} -+ -+MediaBufsStatus mediabufs_start_request(struct mediabufs_ctl *const mbc, -+ struct media_request **const pmreq, -+ struct qent_src **const psrc_be, -+ struct qent_dst *const dst_be, -+ const bool is_final) -+{ -+ struct media_request * mreq = *pmreq; -+ struct qent_src *const src_be = *psrc_be; -+ -+ // Req & src are always both "consumed" -+ *pmreq = NULL; -+ *psrc_be = NULL; -+ -+ pthread_mutex_lock(&mbc->lock); -+ -+ if (!src_be) -+ goto fail1; -+ -+ if (dst_be) { -+ if (qe_dst_waiting(dst_be)) { -+ request_info(mbc->dc, "Request buffer already waiting on start\n"); -+ goto fail1; -+ } -+ dst_be->base.timestamp = (struct timeval){0,0}; -+ if (qe_v4l2_queue(&dst_be->base, mbc->vfd, NULL, &mbc->dst_fmt, true, false)) -+ goto fail1; -+ -+ qent_dst_ref(dst_be); -+ queue_put_inuse(mbc->dst, &dst_be->base); -+ } -+ -+ if (qe_v4l2_queue(&src_be->base, mbc->vfd, mreq, &mbc->src_fmt, false, !is_final)) -+ goto fail1; -+ queue_put_inuse(mbc->src, &src_be->base); -+ -+ if (!mbc->polling && mediabufs_wants_poll(mbc)) { -+ mbc->polling = true; -+ pollqueue_add_task(mbc->pt, 2000); -+ } -+ pthread_mutex_unlock(&mbc->lock); -+ -+ if (media_request_start(mreq)) -+ return MEDIABUFS_ERROR_OPERATION_FAILED; -+ -+ return MEDIABUFS_STATUS_SUCCESS; -+ -+fail1: -+ media_request_abort(&mreq); -+ if (src_be) -+ queue_put_free(mbc->src, &src_be->base); -+ -+// *** TODO: If src Q fails this doesnt unwind properly - separate dst Q from src Q -+ if (dst_be) { -+ dst_be->base.status = QENT_ERROR; -+ qe_dst_done(dst_be); -+ } -+ pthread_mutex_unlock(&mbc->lock); -+ return MEDIABUFS_ERROR_OPERATION_FAILED; -+} -+ -+ -+static int qe_alloc_from_fmt(struct qent_base *const be, -+ struct dmabufs_ctl *const dbsc, -+ const struct v4l2_format *const fmt) -+{ -+ if (V4L2_TYPE_IS_MULTIPLANAR(fmt->type)) { -+ unsigned int i; -+ for (i = 0; i != fmt->fmt.pix_mp.num_planes; ++i) { -+ be->dh[i] = dmabuf_realloc(dbsc, be->dh[i], -+ fmt->fmt.pix_mp.plane_fmt[i].sizeimage); -+ /* On failure tidy up and die */ -+ if (!be->dh[i]) { -+ while (i--) { -+ dmabuf_free(be->dh[i]); -+ be->dh[i] = NULL; -+ } -+ return -1; -+ } -+ } -+ } -+ else { -+// be->dh[0] = dmabuf_alloc(dbsc, fmt->fmt.pix.sizeimage); -+ size_t size = fmt->fmt.pix.sizeimage; -+ be->dh[0] = dmabuf_realloc(dbsc, be->dh[0], size); -+ if (!be->dh[0]) -+ return -1; -+ } -+ return 0; -+} -+ -+static MediaBufsStatus fmt_set(struct v4l2_format *const fmt, const int fd, -+ const enum v4l2_buf_type buftype, -+ uint32_t pixfmt, -+ const unsigned int width, const unsigned int height, -+ const size_t bufsize) -+{ -+ *fmt = (struct v4l2_format){.type = buftype}; -+ -+ if (V4L2_TYPE_IS_MULTIPLANAR(buftype)) { -+ fmt->fmt.pix_mp.width = width; -+ fmt->fmt.pix_mp.height = height; -+ fmt->fmt.pix_mp.pixelformat = pixfmt; -+ if (bufsize) { -+ fmt->fmt.pix_mp.num_planes = 1; -+ fmt->fmt.pix_mp.plane_fmt[0].sizeimage = bufsize; -+ } -+ } -+ else { -+ fmt->fmt.pix.width = width; -+ fmt->fmt.pix.height = height; -+ fmt->fmt.pix.pixelformat = pixfmt; -+ fmt->fmt.pix.sizeimage = bufsize; -+ } -+ -+ while (ioctl(fd, VIDIOC_S_FMT, fmt)) -+ if (errno != EINTR) -+ return MEDIABUFS_ERROR_OPERATION_FAILED; -+ -+ // Treat anything where we don't get at least what we asked for as a fail -+ if (V4L2_TYPE_IS_MULTIPLANAR(buftype)) { -+ if (fmt->fmt.pix_mp.width < width || -+ fmt->fmt.pix_mp.height < height || -+ fmt->fmt.pix_mp.pixelformat != pixfmt) { -+ return MEDIABUFS_ERROR_UNSUPPORTED_BUFFERTYPE; -+ } -+ } -+ else { -+ if (fmt->fmt.pix.width < width || -+ fmt->fmt.pix.height < height || -+ fmt->fmt.pix.pixelformat != pixfmt) { -+ return MEDIABUFS_ERROR_UNSUPPORTED_BUFFERTYPE; -+ } -+ } -+ -+ return MEDIABUFS_STATUS_SUCCESS; -+} -+ -+static MediaBufsStatus find_fmt_flags(struct v4l2_format *const fmt, -+ const int fd, -+ const unsigned int type_v4l2, -+ const uint32_t flags_must, -+ const uint32_t flags_not, -+ const unsigned int width, -+ const unsigned int height, -+ mediabufs_dst_fmt_accept_fn *const accept_fn, -+ void *const accept_v) -+{ -+ unsigned int i; -+ -+ for (i = 0;; ++i) { -+ struct v4l2_fmtdesc fmtdesc = { -+ .index = i, -+ .type = type_v4l2 -+ }; -+ while (ioctl(fd, VIDIOC_ENUM_FMT, &fmtdesc)) { -+ if (errno != EINTR) -+ return MEDIABUFS_ERROR_UNSUPPORTED_BUFFERTYPE; -+ } -+ if ((fmtdesc.flags & flags_must) != flags_must || -+ (fmtdesc.flags & flags_not)) -+ continue; -+ if (!accept_fn(accept_v, &fmtdesc)) -+ continue; -+ -+ if (fmt_set(fmt, fd, fmtdesc.type, fmtdesc.pixelformat, -+ width, height, 0) == MEDIABUFS_STATUS_SUCCESS) -+ return MEDIABUFS_STATUS_SUCCESS; -+ } -+ return 0; -+} -+ -+ -+/* Wait for qent done */ -+ -+MediaBufsStatus qent_dst_wait(struct qent_dst *const be_dst) -+{ -+ struct qent_base *const be = &be_dst->base; -+ enum qent_status estat; -+ -+ pthread_mutex_lock(&be_dst->lock); -+ while (be_dst->waiting && -+ !pthread_cond_wait(&be_dst->cond, &be_dst->lock)) -+ /* Loop */; -+ estat = be->status; -+ pthread_mutex_unlock(&be_dst->lock); -+ -+ return estat == QENT_DONE ? MEDIABUFS_STATUS_SUCCESS : -+ estat == QENT_ERROR ? MEDIABUFS_ERROR_DECODING_ERROR : -+ MEDIABUFS_ERROR_OPERATION_FAILED; -+} -+ -+const uint8_t * qent_dst_data(struct qent_dst *const be_dst, unsigned int buf_no) -+{ -+ struct qent_base *const be = &be_dst->base; -+ return dmabuf_map(be->dh[buf_no]); -+} -+ -+MediaBufsStatus qent_dst_read_start(struct qent_dst *const be_dst) -+{ -+ struct qent_base *const be = &be_dst->base; -+ unsigned int i; -+ for (i = 0; i != VIDEO_MAX_PLANES && be->dh[i]; ++i) { -+ if (dmabuf_read_start(be->dh[i])) { -+ while (i--) -+ dmabuf_read_end(be->dh[i]); -+ return MEDIABUFS_ERROR_ALLOCATION_FAILED; -+ } -+ } -+ return MEDIABUFS_STATUS_SUCCESS; -+} -+ -+MediaBufsStatus qent_dst_read_stop(struct qent_dst *const be_dst) -+{ -+ struct qent_base *const be = &be_dst->base; -+ unsigned int i; -+ MediaBufsStatus status = MEDIABUFS_STATUS_SUCCESS; -+ -+ for (i = 0; i != VIDEO_MAX_PLANES && be->dh[i]; ++i) { -+ if (dmabuf_read_end(be->dh[i])) -+ status = MEDIABUFS_ERROR_OPERATION_FAILED; -+ } -+ return status; -+} -+ -+struct qent_dst * qent_dst_ref(struct qent_dst * const be_dst) -+{ -+ if (be_dst) -+ atomic_fetch_add(&be_dst->base.ref_count, 1); -+ return be_dst; -+} -+ -+void qent_dst_unref(struct qent_dst ** const pbe_dst) -+{ -+ struct qent_dst * const be_dst = *pbe_dst; -+ struct mediabufs_ctl * mbc; -+ if (!be_dst) -+ return; -+ *pbe_dst = NULL; -+ -+ if (atomic_fetch_sub(&be_dst->base.ref_count, 1) != 0) -+ return; -+ -+ if ((mbc = ff_weak_link_lock(&be_dst->mbc_wl)) != NULL) { -+ queue_put_free(mbc->dst, &be_dst->base); -+ ff_weak_link_unlock(be_dst->mbc_wl); -+ } -+ else { -+ qe_dst_free(be_dst); -+ } -+} -+ -+MediaBufsStatus qent_dst_import_fd(struct qent_dst *const be_dst, -+ unsigned int plane, -+ int fd, size_t size) -+{ -+ struct qent_base *const be = &be_dst->base; -+ struct dmabuf_h * dh; -+ -+ if (be->status != QENT_IMPORT || be->dh[plane]) -+ return MEDIABUFS_ERROR_OPERATION_FAILED; -+ -+ dh = dmabuf_import(fd, size); -+ if (!dh) -+ return MEDIABUFS_ERROR_ALLOCATION_FAILED; -+ -+ be->dh[plane] = dh; -+ return MEDIABUFS_STATUS_SUCCESS; -+} -+ -+// Returns noof buffers created, -ve for error -+static int create_dst_bufs(struct mediabufs_ctl *const mbc, unsigned int n, struct qent_dst * const qes[]) -+{ -+ unsigned int i; -+ -+ struct v4l2_create_buffers cbuf = { -+ .count = n, -+ .memory = V4L2_MEMORY_DMABUF, -+ .format = mbc->dst_fmt, -+ }; -+ -+ while (ioctl(mbc->vfd, VIDIOC_CREATE_BUFS, &cbuf)) { -+ const int err = -errno; -+ if (err != EINTR) { -+ request_err(mbc->dc, "%s: Failed to create V4L2 buffer\n", __func__); -+ return -err; -+ } -+ } -+ -+ if (cbuf.count != n) -+ request_warn(mbc->dc, "%s: Created %d of %d V4L2 buffers requested\n", __func__, cbuf.count, n); -+ -+ for (i = 0; i != cbuf.count; ++i) -+ qes[i]->base.index = cbuf.index + i; -+ -+ return cbuf.count; -+} -+ -+struct qent_dst* mediabufs_dst_qent_alloc(struct mediabufs_ctl *const mbc, struct dmabufs_ctl *const dbsc) -+{ -+ struct qent_dst * be_dst; -+ -+ if (mbc == NULL) { -+ be_dst = qe_dst_new(NULL); -+ if (be_dst) -+ be_dst->base.status = QENT_IMPORT; -+ return be_dst; -+ } -+ -+ if (mbc->dst_fixed) { -+ be_dst = base_to_dst(queue_get_free(mbc->dst)); -+ if (!be_dst) -+ return NULL; -+ } -+ else { -+ be_dst = base_to_dst(queue_tryget_free(mbc->dst)); -+ if (!be_dst) { -+ be_dst = qe_dst_new(mbc->this_wlm); -+ if (!be_dst) -+ return NULL; -+ -+ if (create_dst_bufs(mbc, 1, &be_dst) != 1) { -+ qe_dst_free(be_dst); -+ return NULL; -+ } -+ } -+ } -+ -+ if (qe_alloc_from_fmt(&be_dst->base, dbsc, &mbc->dst_fmt)) { -+ /* Given how create buf works we can't uncreate it on alloc failure -+ * all we can do is put it on the free Q -+ */ -+ queue_put_free(mbc->dst, &be_dst->base); -+ return NULL; -+ } -+ -+ be_dst->base.status = QENT_PENDING; -+ atomic_store(&be_dst->base.ref_count, 0); -+ return be_dst; -+} -+ -+const struct v4l2_format *mediabufs_dst_fmt(struct mediabufs_ctl *const mbc) -+{ -+ return &mbc->dst_fmt; -+} -+ -+MediaBufsStatus mediabufs_dst_fmt_set(struct mediabufs_ctl *const mbc, -+ const unsigned int width, -+ const unsigned int height, -+ mediabufs_dst_fmt_accept_fn *const accept_fn, -+ void *const accept_v) -+{ -+ MediaBufsStatus status; -+ unsigned int i; -+ const enum v4l2_buf_type buf_type = mbc->dst_fmt.type; -+ static const struct { -+ unsigned int flags_must; -+ unsigned int flags_not; -+ } trys[] = { -+ {0, V4L2_FMT_FLAG_EMULATED}, -+ {V4L2_FMT_FLAG_EMULATED, 0}, -+ }; -+ for (i = 0; i != sizeof(trys)/sizeof(trys[0]); ++i) { -+ status = find_fmt_flags(&mbc->dst_fmt, mbc->vfd, -+ buf_type, -+ trys[i].flags_must, -+ trys[i].flags_not, -+ width, height, accept_fn, accept_v); -+ if (status != MEDIABUFS_ERROR_UNSUPPORTED_BUFFERTYPE) -+ return status; -+ } -+ -+ if (status != MEDIABUFS_STATUS_SUCCESS) -+ return status; -+ -+ /* Try to create a buffer - don't alloc */ -+ return status; -+} -+ -+// ** This is a mess if we get partial alloc but without any way to remove -+// individual V4L2 Q members we are somewhat stuffed -+MediaBufsStatus mediabufs_dst_slots_create(struct mediabufs_ctl *const mbc, const unsigned int n, const bool fixed) -+{ -+ unsigned int i; -+ int a = 0; -+ unsigned int qc; -+ struct qent_dst * qes[32]; -+ -+ if (n > 32) -+ return MEDIABUFS_ERROR_ALLOCATION_FAILED; -+ -+ // Create qents first as it is hard to get rid of the V4L2 buffers on error -+ for (qc = 0; qc != n; ++qc) -+ { -+ if ((qes[qc] = qe_dst_new(mbc->this_wlm)) == NULL) -+ goto fail; -+ } -+ -+ if ((a = create_dst_bufs(mbc, n, qes)) < 0) -+ goto fail; -+ -+ for (i = 0; i != a; ++i) -+ queue_put_free(mbc->dst, &qes[i]->base); -+ -+ if (a != n) -+ goto fail; -+ -+ mbc->dst_fixed = fixed; -+ return MEDIABUFS_STATUS_SUCCESS; -+ -+fail: -+ for (i = (a < 0 ? 0 : a); i != qc; ++i) -+ qe_dst_free(qes[i]); -+ -+ return MEDIABUFS_ERROR_ALLOCATION_FAILED; -+} -+ -+struct qent_src *mediabufs_src_qent_get(struct mediabufs_ctl *const mbc) -+{ -+ struct qent_base * buf = queue_get_free(mbc->src); -+ buf->status = QENT_PENDING; -+ return base_to_src(buf); -+} -+ -+void mediabufs_src_qent_abort(struct mediabufs_ctl *const mbc, struct qent_src **const pqe_src) -+{ -+ struct qent_src *const qe_src = *pqe_src; -+ if (!qe_src) -+ return; -+ *pqe_src = NULL; -+ queue_put_free(mbc->src, &qe_src->base); -+} -+ -+/* src format must have been set up before this */ -+MediaBufsStatus mediabufs_src_pool_create(struct mediabufs_ctl *const mbc, -+ struct dmabufs_ctl * const dbsc, -+ unsigned int n) -+{ -+ unsigned int i; -+ struct v4l2_requestbuffers req = { -+ .count = n, -+ .type = mbc->src_fmt.type, -+ .memory = V4L2_MEMORY_DMABUF -+ }; -+ -+ bq_free_all_free_src(mbc->src); -+ while (ioctl(mbc->vfd, VIDIOC_REQBUFS, &req) == -1) { -+ if (errno != EINTR) { -+ request_err(mbc->dc, "%s: Failed to request src bufs\n", __func__); -+ return MEDIABUFS_ERROR_OPERATION_FAILED; -+ } -+ } -+ -+ if (n > req.count) { -+ request_info(mbc->dc, "Only allocated %d of %d src buffers requested\n", req.count, n); -+ n = req.count; -+ } -+ -+ for (i = 0; i != n; ++i) { -+ struct qent_src *const be_src = qe_src_new(); -+ if (!be_src) { -+ request_err(mbc->dc, "Failed to create src be %d\n", i); -+ goto fail; -+ } -+ if (qe_alloc_from_fmt(&be_src->base, dbsc, &mbc->src_fmt)) { -+ qe_src_free(be_src); -+ goto fail; -+ } -+ be_src->base.index = i; -+ be_src->fixed_size = !mediabufs_src_resizable(mbc); -+ -+ queue_put_free(mbc->src, &be_src->base); -+ } -+ -+ return MEDIABUFS_STATUS_SUCCESS; -+ -+fail: -+ bq_free_all_free_src(mbc->src); -+ req.count = 0; -+ while (ioctl(mbc->vfd, VIDIOC_REQBUFS, &req) == -1 && -+ errno == EINTR) -+ /* Loop */; -+ -+ return MEDIABUFS_ERROR_OPERATION_FAILED; -+} -+ -+ -+ -+/* -+ * Set stuff order: -+ * Set src fmt -+ * Set parameters (sps) on vfd -+ * Negotiate dst format (dst_fmt_set) -+ * Create src buffers -+ * Alloc a dst buffer or Create dst slots -+*/ -+MediaBufsStatus mediabufs_stream_on(struct mediabufs_ctl *const mbc) -+{ -+ if (mbc->stream_on) -+ return MEDIABUFS_STATUS_SUCCESS; -+ -+ if (set_stream(mbc->vfd, mbc->src_fmt.type, true) < 0) { -+ request_log("Failed to set stream on src type %d\n", mbc->src_fmt.type); -+ return MEDIABUFS_ERROR_OPERATION_FAILED; -+ } -+ -+ if (set_stream(mbc->vfd, mbc->dst_fmt.type, true) < 0) { -+ request_log("Failed to set stream on dst type %d\n", mbc->dst_fmt.type); -+ set_stream(mbc->vfd, mbc->src_fmt.type, false); -+ return MEDIABUFS_ERROR_OPERATION_FAILED; -+ } -+ -+ mbc->stream_on = true; -+ return MEDIABUFS_STATUS_SUCCESS; -+} -+ -+MediaBufsStatus mediabufs_stream_off(struct mediabufs_ctl *const mbc) -+{ -+ MediaBufsStatus status = MEDIABUFS_STATUS_SUCCESS; -+ -+ if (!mbc->stream_on) -+ return MEDIABUFS_STATUS_SUCCESS; -+ -+ if (set_stream(mbc->vfd, mbc->dst_fmt.type, false) < 0) { -+ request_log("Failed to set stream off dst type %d\n", mbc->dst_fmt.type); -+ status = MEDIABUFS_ERROR_OPERATION_FAILED; -+ } -+ -+ if (set_stream(mbc->vfd, mbc->src_fmt.type, false) < 0) { -+ request_log("Failed to set stream off src type %d\n", mbc->src_fmt.type); -+ status = MEDIABUFS_ERROR_OPERATION_FAILED; -+ } -+ -+ mbc->stream_on = false; -+ return status; -+} -+ -+int mediabufs_ctl_set_ext_ctrls(struct mediabufs_ctl * mbc, struct media_request * const mreq, struct v4l2_ext_control control_array[], unsigned int n) -+{ -+ struct v4l2_ext_controls controls = { -+ .controls = control_array, -+ .count = n -+ }; -+ -+ if (mreq) { -+ controls.which = V4L2_CTRL_WHICH_REQUEST_VAL; -+ controls.request_fd = media_request_fd(mreq); -+ } -+ -+ while (ioctl(mbc->vfd, VIDIOC_S_EXT_CTRLS, &controls)) -+ { -+ const int err = errno; -+ if (err != EINTR) { -+ request_err(mbc->dc, "Unable to set controls: %s\n", strerror(err)); -+ return -err; -+ } -+ } -+ -+ return 0; -+} -+ -+MediaBufsStatus mediabufs_set_ext_ctrl(struct mediabufs_ctl *const mbc, -+ struct media_request * const mreq, -+ unsigned int id, void *data, -+ unsigned int size) -+{ -+ struct v4l2_ext_control control = { -+ .id = id, -+ .ptr = data, -+ .size = size -+ }; -+ -+ int rv = mediabufs_ctl_set_ext_ctrls(mbc, mreq, &control, 1); -+ return !rv ? MEDIABUFS_STATUS_SUCCESS : MEDIABUFS_ERROR_OPERATION_FAILED; -+} -+ -+MediaBufsStatus mediabufs_src_fmt_set(struct mediabufs_ctl *const mbc, -+ enum v4l2_buf_type buf_type, -+ const uint32_t pixfmt, -+ const uint32_t width, const uint32_t height, -+ const size_t bufsize) -+{ -+ MediaBufsStatus rv = fmt_set(&mbc->src_fmt, mbc->vfd, buf_type, pixfmt, width, height, bufsize); -+ if (rv != MEDIABUFS_STATUS_SUCCESS) -+ request_err(mbc->dc, "Failed to set src buftype %d, format %#x %dx%d\n", buf_type, pixfmt, width, height); -+ -+ return rv; -+} -+ -+int mediabufs_ctl_query_ext_ctrls(struct mediabufs_ctl * mbc, struct v4l2_query_ext_ctrl ctrls[], unsigned int n) -+{ -+ int rv = 0; -+ while (n--) { -+ while (ioctl(mbc->vfd, VIDIOC_QUERY_EXT_CTRL, ctrls)) { -+ const int err = errno; -+ if (err != EINTR) { -+ // Often used for probing - errors are to be expected -+ request_debug(mbc->dc, "Failed to query ext id=%#x, err=%d\n", ctrls->id, err); -+ ctrls->type = 0; // 0 is invalid -+ rv = -err; -+ break; -+ } -+ } -+ ++ctrls; -+ } -+ return rv; -+} -+ -+int mediabufs_src_resizable(const struct mediabufs_ctl *const mbc) -+{ -+ // Single planar OUTPUT can only take exact size buffers -+ // Multiplanar will take larger than negotiated -+ return V4L2_TYPE_IS_MULTIPLANAR(mbc->src_fmt.type); -+} -+ -+static void mediabufs_ctl_delete(struct mediabufs_ctl *const mbc) -+{ -+ if (!mbc) -+ return; -+ -+ // Break the weak link first -+ ff_weak_link_break(&mbc->this_wlm); -+ -+ polltask_delete(&mbc->pt); -+ -+ mediabufs_stream_off(mbc); -+ -+ // Empty v4l2 buffer stash -+ request_buffers(mbc->vfd, mbc->src_fmt.type, V4L2_MEMORY_MMAP, 0); -+ request_buffers(mbc->vfd, mbc->dst_fmt.type, V4L2_MEMORY_MMAP, 0); -+ -+ bq_free_all_free_src(mbc->src); -+ bq_free_all_inuse_src(mbc->src); -+ bq_free_all_free_dst(mbc->dst); -+ -+ { -+ struct qent_dst *dst_be; -+ while ((dst_be = base_to_dst(bq_get_inuse(mbc->dst))) != NULL) { -+ dst_be->base.timestamp = (struct timeval){0}; -+ dst_be->base.status = QENT_ERROR; -+ qe_dst_done(dst_be); -+ } -+ } -+ -+ queue_delete(mbc->dst); -+ queue_delete(mbc->src); -+ close(mbc->vfd); -+ pthread_mutex_destroy(&mbc->lock); -+ -+ free(mbc); -+} -+ -+struct mediabufs_ctl * mediabufs_ctl_ref(struct mediabufs_ctl *const mbc) -+{ -+ atomic_fetch_add(&mbc->ref_count, 1); -+ return mbc; -+} -+ -+void mediabufs_ctl_unref(struct mediabufs_ctl **const pmbc) -+{ -+ struct mediabufs_ctl *const mbc = *pmbc; -+ int n; -+ -+ if (!mbc) -+ return; -+ *pmbc = NULL; -+ n = atomic_fetch_sub(&mbc->ref_count, 1); -+ if (n) -+ return; -+ mediabufs_ctl_delete(mbc); -+} -+ -+static int set_capabilities(struct mediabufs_ctl *const mbc) -+{ -+ struct v4l2_capability capability = { 0 }; -+ uint32_t caps; -+ -+ if (ioctl(mbc->vfd, VIDIOC_QUERYCAP, &capability)) { -+ int err = errno; -+ request_err(mbc->dc, "Failed to get capabilities: %s\n", strerror(err)); -+ return -err; -+ } -+ -+ caps = (capability.capabilities & V4L2_CAP_DEVICE_CAPS) != 0 ? -+ capability.device_caps : -+ capability.capabilities; -+ -+ if ((caps & V4L2_CAP_VIDEO_M2M_MPLANE) != 0) { -+ mbc->src_fmt.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE; -+ mbc->dst_fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; -+ } -+ else if ((caps & V4L2_CAP_VIDEO_M2M) != 0) { -+ mbc->src_fmt.type = V4L2_BUF_TYPE_VIDEO_OUTPUT; -+ mbc->dst_fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; -+ } -+ else { -+ request_err(mbc->dc, "No M2M capabilities (%#x)\n", caps); -+ return -EINVAL; -+ } -+ -+ return 0; -+} -+ -+/* One of these per context */ -+struct mediabufs_ctl * mediabufs_ctl_new(void * const dc, const char * vpath, struct pollqueue *const pq) -+{ -+ struct mediabufs_ctl *const mbc = calloc(1, sizeof(*mbc)); -+ -+ if (!mbc) -+ return NULL; -+ -+ mbc->dc = dc; -+ // Default mono planar -+ mbc->pq = pq; -+ pthread_mutex_init(&mbc->lock, NULL); -+ -+ /* Pick a default - could we scan for this? */ -+ if (vpath == NULL) -+ vpath = "/dev/media0"; -+ -+ while ((mbc->vfd = open(vpath, O_RDWR)) == -1) -+ { -+ const int err = errno; -+ if (err != EINTR) { -+ request_err(dc, "Failed to open video dev '%s': %s\n", vpath, strerror(err)); -+ goto fail0; -+ } -+ } -+ -+ if (set_capabilities(mbc)) { -+ request_err(dc, "Bad capabilities for video dev '%s'\n", vpath); -+ goto fail1; -+ } -+ -+ mbc->src = queue_new(mbc->vfd); -+ if (!mbc->src) -+ goto fail1; -+ mbc->dst = queue_new(mbc->vfd); -+ if (!mbc->dst) -+ goto fail2; -+ mbc->pt = polltask_new(pq, mbc->vfd, POLLIN | POLLOUT, mediabufs_poll_cb, mbc); -+ if (!mbc->pt) -+ goto fail3; -+ mbc->this_wlm = ff_weak_link_new(mbc); -+ if (!mbc->this_wlm) -+ goto fail4; -+ -+ /* Cannot add polltask now - polling with nothing pending -+ * generates infinite error polls -+ */ -+ return mbc; -+ -+fail4: -+ polltask_delete(&mbc->pt); -+fail3: -+ queue_delete(mbc->dst); -+fail2: -+ queue_delete(mbc->src); -+fail1: -+ close(mbc->vfd); -+fail0: -+ free(mbc); -+ request_info(dc, "%s: FAILED\n", __func__); -+ return NULL; -+} -+ -+ -+ -diff --git a/libavcodec/v4l2_req_media.h b/libavcodec/v4l2_req_media.h -new file mode 100644 -index 0000000000..2f826cfb14 ---- /dev/null -+++ b/libavcodec/v4l2_req_media.h -@@ -0,0 +1,151 @@ -+/* -+e.h -+* -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the -+ * "Software"), to deal in the Software without restriction, including -+ * without limitation the rights to use, copy, modify, merge, publish, -+ * distribute, sub license, and/or sell copies of the Software, and to -+ * permit persons to whom the Software is furnished to do so, subject to -+ * the following conditions: -+ * -+ * The above copyright notice and this permission notice (including the -+ * next paragraph) shall be included in all copies or substantial portions -+ * of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR -+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+#ifndef _MEDIA_H_ -+#define _MEDIA_H_ -+ -+#include -+#include -+ -+struct v4l2_format; -+struct v4l2_fmtdesc; -+struct v4l2_query_ext_ctrl; -+ -+struct pollqueue; -+struct media_request; -+struct media_pool; -+ -+typedef enum media_buf_status { -+ MEDIABUFS_STATUS_SUCCESS = 0, -+ MEDIABUFS_ERROR_OPERATION_FAILED, -+ MEDIABUFS_ERROR_DECODING_ERROR, -+ MEDIABUFS_ERROR_UNSUPPORTED_BUFFERTYPE, -+ MEDIABUFS_ERROR_UNSUPPORTED_RT_FORMAT, -+ MEDIABUFS_ERROR_ALLOCATION_FAILED, -+} MediaBufsStatus; -+ -+struct media_pool * media_pool_new(const char * const media_path, -+ struct pollqueue * const pq, -+ const unsigned int n); -+void media_pool_delete(struct media_pool ** pmp); -+ -+// Obtain a media request -+// Will block if none availible - has a 2sec timeout -+struct media_request * media_request_get(struct media_pool * const mp); -+int media_request_fd(const struct media_request * const req); -+ -+// Start this request -+// Request structure is returned to pool once done -+int media_request_start(struct media_request * const req); -+ -+// Return an *unstarted* media_request to the pool -+// May later be upgraded to allow for aborting a started req -+int media_request_abort(struct media_request ** const preq); -+ -+ -+struct mediabufs_ctl; -+struct qent_src; -+struct qent_dst; -+struct dmabuf_h; -+struct dmabufs_ctl; -+ -+int qent_src_params_set(struct qent_src *const be, const struct timeval * timestamp); -+struct timeval qent_dst_timestamp_get(const struct qent_dst *const be_dst); -+ -+// prealloc -+int qent_src_alloc(struct qent_src *const be_src, const size_t len, struct dmabufs_ctl * dbsc); -+// dbsc may be NULL if realloc not required -+int qent_src_data_copy(struct qent_src *const be_src, const size_t offset, const void *const src, const size_t len, struct dmabufs_ctl * dbsc); -+const struct dmabuf_h * qent_dst_dmabuf(const struct qent_dst *const be, unsigned int plane); -+int qent_dst_dup_fd(const struct qent_dst *const be, unsigned int plane); -+MediaBufsStatus qent_dst_wait(struct qent_dst *const be); -+void qent_dst_delete(struct qent_dst *const be); -+// Returns a qent_dst to its mbc free Q or deletes it if the mbc is dead -+void qent_dst_unref(struct qent_dst ** const pbe_dst); -+struct qent_dst * qent_dst_ref(struct qent_dst * const be_dst); -+ -+const uint8_t * qent_dst_data(struct qent_dst *const be, unsigned int buf_no); -+MediaBufsStatus qent_dst_read_start(struct qent_dst *const be); -+MediaBufsStatus qent_dst_read_stop(struct qent_dst *const be); -+/* Import an fd unattached to any mediabuf */ -+MediaBufsStatus qent_dst_import_fd(struct qent_dst *const be_dst, -+ unsigned int plane, -+ int fd, size_t size); -+ -+MediaBufsStatus mediabufs_start_request(struct mediabufs_ctl *const mbc, -+ struct media_request **const pmreq, -+ struct qent_src **const psrc_be, -+ struct qent_dst *const dst_be, -+ const bool is_final); -+// Get / alloc a dst buffer & associate with a slot -+// If the dst pool is empty then behaviour depends on the fixed flag passed to -+// dst_slots_create. Default is !fixed = unlimited alloc -+struct qent_dst* mediabufs_dst_qent_alloc(struct mediabufs_ctl *const mbc, -+ struct dmabufs_ctl *const dbsc); -+// Create dst slots without alloc -+// If fixed true then qent_alloc will only get slots from this pool and will -+// block until a qent has been unrefed -+MediaBufsStatus mediabufs_dst_slots_create(struct mediabufs_ctl *const mbc, const unsigned int n, const bool fixed); -+ -+MediaBufsStatus mediabufs_stream_on(struct mediabufs_ctl *const mbc); -+MediaBufsStatus mediabufs_stream_off(struct mediabufs_ctl *const mbc); -+const struct v4l2_format *mediabufs_dst_fmt(struct mediabufs_ctl *const mbc); -+ -+typedef int mediabufs_dst_fmt_accept_fn(void * v, const struct v4l2_fmtdesc *fmtdesc); -+ -+MediaBufsStatus mediabufs_dst_fmt_set(struct mediabufs_ctl *const mbc, -+ const unsigned int width, -+ const unsigned int height, -+ mediabufs_dst_fmt_accept_fn *const accept_fn, -+ void *const accept_v); -+struct qent_src *mediabufs_src_qent_get(struct mediabufs_ctl *const mbc); -+void mediabufs_src_qent_abort(struct mediabufs_ctl *const mbc, struct qent_src **const pqe_src); -+ -+int mediabufs_ctl_set_ext_ctrls(struct mediabufs_ctl * mbc, struct media_request * const mreq, -+ struct v4l2_ext_control control_array[], unsigned int n); -+MediaBufsStatus mediabufs_set_ext_ctrl(struct mediabufs_ctl *const mbc, -+ struct media_request * const mreq, -+ unsigned int id, void *data, -+ unsigned int size); -+int mediabufs_ctl_query_ext_ctrls(struct mediabufs_ctl * mbc, struct v4l2_query_ext_ctrl ctrls[], unsigned int n); -+ -+int mediabufs_src_resizable(const struct mediabufs_ctl *const mbc); -+ -+MediaBufsStatus mediabufs_src_fmt_set(struct mediabufs_ctl *const mbc, -+ enum v4l2_buf_type buf_type, -+ const uint32_t pixfmt, -+ const uint32_t width, const uint32_t height, -+ const size_t bufsize); -+ -+MediaBufsStatus mediabufs_src_pool_create(struct mediabufs_ctl *const rw, -+ struct dmabufs_ctl * const dbsc, -+ unsigned int n); -+ -+struct mediabufs_ctl * mediabufs_ctl_new(void * const dc, -+ const char *vpath, struct pollqueue *const pq); -+void mediabufs_ctl_unref(struct mediabufs_ctl **const pmbc); -+struct mediabufs_ctl * mediabufs_ctl_ref(struct mediabufs_ctl *const mbc); -+ -+ -+#endif -diff --git a/libavcodec/v4l2_req_pollqueue.c b/libavcodec/v4l2_req_pollqueue.c -new file mode 100644 -index 0000000000..cc8a5d4001 ---- /dev/null -+++ b/libavcodec/v4l2_req_pollqueue.c -@@ -0,0 +1,361 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "v4l2_req_pollqueue.h" -+#include "v4l2_req_utils.h" -+ -+ -+struct pollqueue; -+ -+enum polltask_state { -+ POLLTASK_UNQUEUED = 0, -+ POLLTASK_QUEUED, -+ POLLTASK_RUNNING, -+ POLLTASK_Q_KILL, -+ POLLTASK_RUN_KILL, -+}; -+ -+struct polltask { -+ struct polltask *next; -+ struct polltask *prev; -+ struct pollqueue *q; -+ enum polltask_state state; -+ -+ int fd; -+ short events; -+ -+ void (*fn)(void *v, short revents); -+ void * v; -+ -+ uint64_t timeout; /* CLOCK_MONOTONIC time, 0 => never */ -+ sem_t kill_sem; -+}; -+ -+struct pollqueue { -+ atomic_int ref_count; -+ pthread_mutex_t lock; -+ -+ struct polltask *head; -+ struct polltask *tail; -+ -+ bool kill; -+ bool no_prod; -+ int prod_fd; -+ struct polltask *prod_pt; -+ pthread_t worker; -+}; -+ -+struct polltask *polltask_new(struct pollqueue *const pq, -+ const int fd, const short events, -+ void (*const fn)(void *v, short revents), -+ void *const v) -+{ -+ struct polltask *pt; -+ -+ if (!events) -+ return NULL; -+ -+ pt = malloc(sizeof(*pt)); -+ if (!pt) -+ return NULL; -+ -+ *pt = (struct polltask){ -+ .next = NULL, -+ .prev = NULL, -+ .q = pollqueue_ref(pq), -+ .fd = fd, -+ .events = events, -+ .fn = fn, -+ .v = v -+ }; -+ -+ sem_init(&pt->kill_sem, 0, 0); -+ -+ return pt; -+} -+ -+static void pollqueue_rem_task(struct pollqueue *const pq, struct polltask *const pt) -+{ -+ if (pt->prev) -+ pt->prev->next = pt->next; -+ else -+ pq->head = pt->next; -+ if (pt->next) -+ pt->next->prev = pt->prev; -+ else -+ pq->tail = pt->prev; -+ pt->next = NULL; -+ pt->prev = NULL; -+} -+ -+static void polltask_free(struct polltask * const pt) -+{ -+ sem_destroy(&pt->kill_sem); -+ free(pt); -+} -+ -+static int pollqueue_prod(const struct pollqueue *const pq) -+{ -+ static const uint64_t one = 1; -+ return write(pq->prod_fd, &one, sizeof(one)); -+} -+ -+void polltask_delete(struct polltask **const ppt) -+{ -+ struct polltask *const pt = *ppt; -+ struct pollqueue * pq; -+ enum polltask_state state; -+ bool prodme; -+ -+ if (!pt) -+ return; -+ -+ pq = pt->q; -+ pthread_mutex_lock(&pq->lock); -+ state = pt->state; -+ pt->state = (state == POLLTASK_RUNNING) ? POLLTASK_RUN_KILL : POLLTASK_Q_KILL; -+ prodme = !pq->no_prod; -+ pthread_mutex_unlock(&pq->lock); -+ -+ if (state != POLLTASK_UNQUEUED) { -+ if (prodme) -+ pollqueue_prod(pq); -+ while (sem_wait(&pt->kill_sem) && errno == EINTR) -+ /* loop */; -+ } -+ -+ // Leave zapping the ref until we have DQed the PT as might well be -+ // legitimately used in it -+ *ppt = NULL; -+ polltask_free(pt); -+ pollqueue_unref(&pq); -+} -+ -+static uint64_t pollqueue_now(int timeout) -+{ -+ struct timespec now; -+ uint64_t now_ms; -+ -+ if (clock_gettime(CLOCK_MONOTONIC, &now)) -+ return 0; -+ now_ms = (now.tv_nsec / 1000000) + (uint64_t)now.tv_sec * 1000 + timeout; -+ return now_ms ? now_ms : (uint64_t)1; -+} -+ -+void pollqueue_add_task(struct polltask *const pt, const int timeout) -+{ -+ bool prodme = false; -+ struct pollqueue * const pq = pt->q; -+ -+ pthread_mutex_lock(&pq->lock); -+ if (pt->state != POLLTASK_Q_KILL && pt->state != POLLTASK_RUN_KILL) { -+ if (pq->tail) -+ pq->tail->next = pt; -+ else -+ pq->head = pt; -+ pt->prev = pq->tail; -+ pt->next = NULL; -+ pt->state = POLLTASK_QUEUED; -+ pt->timeout = timeout < 0 ? 0 : pollqueue_now(timeout); -+ pq->tail = pt; -+ prodme = !pq->no_prod; -+ } -+ pthread_mutex_unlock(&pq->lock); -+ if (prodme) -+ pollqueue_prod(pq); -+} -+ -+static void *poll_thread(void *v) -+{ -+ struct pollqueue *const pq = v; -+ struct pollfd *a = NULL; -+ size_t asize = 0; -+ -+ pthread_mutex_lock(&pq->lock); -+ do { -+ unsigned int i; -+ unsigned int n = 0; -+ struct polltask *pt; -+ struct polltask *pt_next; -+ uint64_t now = pollqueue_now(0); -+ int timeout = -1; -+ int rv; -+ -+ for (pt = pq->head; pt; pt = pt_next) { -+ int64_t t; -+ -+ pt_next = pt->next; -+ -+ if (pt->state == POLLTASK_Q_KILL) { -+ pollqueue_rem_task(pq, pt); -+ sem_post(&pt->kill_sem); -+ continue; -+ } -+ -+ if (n >= asize) { -+ asize = asize ? asize * 2 : 4; -+ a = realloc(a, asize * sizeof(*a)); -+ if (!a) { -+ request_log("Failed to realloc poll array to %zd\n", asize); -+ goto fail_locked; -+ } -+ } -+ -+ a[n++] = (struct pollfd){ -+ .fd = pt->fd, -+ .events = pt->events -+ }; -+ -+ t = (int64_t)(pt->timeout - now); -+ if (pt->timeout && t < INT_MAX && -+ (timeout < 0 || (int)t < timeout)) -+ timeout = (t < 0) ? 0 : (int)t; -+ } -+ pthread_mutex_unlock(&pq->lock); -+ -+ if ((rv = poll(a, n, timeout)) == -1) { -+ if (errno != EINTR) { -+ request_log("Poll error: %s\n", strerror(errno)); -+ goto fail_unlocked; -+ } -+ } -+ -+ pthread_mutex_lock(&pq->lock); -+ now = pollqueue_now(0); -+ -+ /* Prodding in this loop is pointless and might lead to -+ * infinite looping -+ */ -+ pq->no_prod = true; -+ for (i = 0, pt = pq->head; i < n; ++i, pt = pt_next) { -+ pt_next = pt->next; -+ -+ /* Pending? */ -+ if (a[i].revents || -+ (pt->timeout && (int64_t)(now - pt->timeout) >= 0)) { -+ pollqueue_rem_task(pq, pt); -+ if (pt->state == POLLTASK_QUEUED) -+ pt->state = POLLTASK_RUNNING; -+ if (pt->state == POLLTASK_Q_KILL) -+ pt->state = POLLTASK_RUN_KILL; -+ pthread_mutex_unlock(&pq->lock); -+ -+ /* This can add new entries to the Q but as -+ * those are added to the tail our existing -+ * chain remains intact -+ */ -+ pt->fn(pt->v, a[i].revents); -+ -+ pthread_mutex_lock(&pq->lock); -+ if (pt->state == POLLTASK_RUNNING) -+ pt->state = POLLTASK_UNQUEUED; -+ if (pt->state == POLLTASK_RUN_KILL) -+ sem_post(&pt->kill_sem); -+ } -+ } -+ pq->no_prod = false; -+ -+ } while (!pq->kill); -+ -+fail_locked: -+ pthread_mutex_unlock(&pq->lock); -+fail_unlocked: -+ free(a); -+ return NULL; -+} -+ -+static void prod_fn(void *v, short revents) -+{ -+ struct pollqueue *const pq = v; -+ char buf[8]; -+ if (revents) -+ read(pq->prod_fd, buf, 8); -+ if (!pq->kill) -+ pollqueue_add_task(pq->prod_pt, -1); -+} -+ -+struct pollqueue * pollqueue_new(void) -+{ -+ struct pollqueue *pq = malloc(sizeof(*pq)); -+ if (!pq) -+ return NULL; -+ *pq = (struct pollqueue){ -+ .ref_count = ATOMIC_VAR_INIT(0), -+ .lock = PTHREAD_MUTEX_INITIALIZER, -+ .head = NULL, -+ .tail = NULL, -+ .kill = false, -+ .prod_fd = -1 -+ }; -+ -+ pq->prod_fd = eventfd(0, EFD_NONBLOCK); -+ if (pq->prod_fd == 1) -+ goto fail1; -+ pq->prod_pt = polltask_new(pq, pq->prod_fd, POLLIN, prod_fn, pq); -+ if (!pq->prod_pt) -+ goto fail2; -+ pollqueue_add_task(pq->prod_pt, -1); -+ if (pthread_create(&pq->worker, NULL, poll_thread, pq)) -+ goto fail3; -+ // Reset ref count which will have been inced by the add_task -+ atomic_store(&pq->ref_count, 0); -+ return pq; -+ -+fail3: -+ polltask_free(pq->prod_pt); -+fail2: -+ close(pq->prod_fd); -+fail1: -+ free(pq); -+ return NULL; -+} -+ -+static void pollqueue_free(struct pollqueue *const pq) -+{ -+ void *rv; -+ -+ pthread_mutex_lock(&pq->lock); -+ pq->kill = true; -+ pollqueue_prod(pq); -+ pthread_mutex_unlock(&pq->lock); -+ -+ pthread_join(pq->worker, &rv); -+ polltask_free(pq->prod_pt); -+ pthread_mutex_destroy(&pq->lock); -+ close(pq->prod_fd); -+ free(pq); -+} -+ -+struct pollqueue * pollqueue_ref(struct pollqueue *const pq) -+{ -+ atomic_fetch_add(&pq->ref_count, 1); -+ return pq; -+} -+ -+void pollqueue_unref(struct pollqueue **const ppq) -+{ -+ struct pollqueue * const pq = *ppq; -+ -+ if (!pq) -+ return; -+ *ppq = NULL; -+ -+ if (atomic_fetch_sub(&pq->ref_count, 1) != 0) -+ return; -+ -+ pollqueue_free(pq); -+} -+ -+ -+ -diff --git a/libavcodec/v4l2_req_pollqueue.h b/libavcodec/v4l2_req_pollqueue.h -new file mode 100644 -index 0000000000..e1182cb2fc ---- /dev/null -+++ b/libavcodec/v4l2_req_pollqueue.h -@@ -0,0 +1,18 @@ -+#ifndef POLLQUEUE_H_ -+#define POLLQUEUE_H_ -+ -+struct polltask; -+struct pollqueue; -+ -+struct polltask *polltask_new(struct pollqueue *const pq, -+ const int fd, const short events, -+ void (*const fn)(void *v, short revents), -+ void *const v); -+void polltask_delete(struct polltask **const ppt); -+ -+void pollqueue_add_task(struct polltask *const pt, const int timeout); -+struct pollqueue * pollqueue_new(void); -+void pollqueue_unref(struct pollqueue **const ppq); -+struct pollqueue * pollqueue_ref(struct pollqueue *const pq); -+ -+#endif /* POLLQUEUE_H_ */ -diff --git a/libavcodec/v4l2_req_utils.h b/libavcodec/v4l2_req_utils.h -new file mode 100644 -index 0000000000..a31cc1f4ec ---- /dev/null -+++ b/libavcodec/v4l2_req_utils.h -@@ -0,0 +1,27 @@ -+#ifndef AVCODEC_V4L2_REQ_UTILS_H -+#define AVCODEC_V4L2_REQ_UTILS_H -+ -+#include -+#include "libavutil/log.h" -+ -+#define request_log(...) av_log(NULL, AV_LOG_INFO, __VA_ARGS__) -+ -+#define request_err(_ctx, ...) av_log(_ctx, AV_LOG_ERROR, __VA_ARGS__) -+#define request_warn(_ctx, ...) av_log(_ctx, AV_LOG_WARNING, __VA_ARGS__) -+#define request_info(_ctx, ...) av_log(_ctx, AV_LOG_INFO, __VA_ARGS__) -+#define request_debug(_ctx, ...) av_log(_ctx, AV_LOG_DEBUG, __VA_ARGS__) -+ -+static inline char safechar(char c) { -+ return c > 0x20 && c < 0x7f ? c : '.'; -+} -+ -+static inline const char * strfourcc(char tbuf[5], uint32_t fcc) { -+ tbuf[0] = safechar((fcc >> 0) & 0xff); -+ tbuf[1] = safechar((fcc >> 8) & 0xff); -+ tbuf[2] = safechar((fcc >> 16) & 0xff); -+ tbuf[3] = safechar((fcc >> 24) & 0xff); -+ tbuf[4] = '\0'; -+ return tbuf; -+} -+ -+#endif -diff --git a/libavcodec/v4l2_request_hevc.c b/libavcodec/v4l2_request_hevc.c -new file mode 100644 -index 0000000000..b0a5930844 ---- /dev/null -+++ b/libavcodec/v4l2_request_hevc.c -@@ -0,0 +1,297 @@ -+/* -+ * This file is part of FFmpeg. -+ * -+ * FFmpeg is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * FFmpeg is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with FFmpeg; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+ -+ -+#include "decode.h" -+#include "hevcdec.h" -+#include "hwconfig.h" -+#include "internal.h" -+ -+#include "v4l2_request_hevc.h" -+ -+#include "libavutil/hwcontext_drm.h" -+ -+#include "v4l2_req_devscan.h" -+#include "v4l2_req_dmabufs.h" -+#include "v4l2_req_pollqueue.h" -+#include "v4l2_req_media.h" -+#include "v4l2_req_utils.h" -+ -+static size_t bit_buf_size(unsigned int w, unsigned int h, unsigned int bits_minus8) -+{ -+ const size_t wxh = w * h; -+ size_t bits_alloc; -+ -+ /* Annex A gives a min compression of 2 @ lvl 3.1 -+ * (wxh <= 983040) and min 4 thereafter but avoid -+ * the odity of 983041 having a lower limit than -+ * 983040. -+ * Multiply by 3/2 for 4:2:0 -+ */ -+ bits_alloc = wxh < 983040 ? wxh * 3 / 4 : -+ wxh < 983040 * 2 ? 983040 * 3 / 4 : -+ wxh * 3 / 8; -+ /* Allow for bit depth */ -+ bits_alloc += (bits_alloc * bits_minus8) / 8; -+ /* Add a few bytes (16k) for overhead */ -+ bits_alloc += 0x4000; -+ return bits_alloc; -+} -+ -+static int v4l2_req_hevc_start_frame(AVCodecContext *avctx, -+ av_unused const uint8_t *buffer, -+ av_unused uint32_t size) -+{ -+ const V4L2RequestContextHEVC * const ctx = avctx->internal->hwaccel_priv_data; -+ return ctx->fns->start_frame(avctx, buffer, size); -+} -+ -+static int v4l2_req_hevc_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size) -+{ -+ V4L2RequestContextHEVC * const ctx = avctx->internal->hwaccel_priv_data; -+ return ctx->fns->decode_slice(avctx, buffer, size); -+} -+ -+static int v4l2_req_hevc_end_frame(AVCodecContext *avctx) -+{ -+ V4L2RequestContextHEVC *ctx = avctx->internal->hwaccel_priv_data; -+ return ctx->fns->end_frame(avctx); -+} -+ -+static void v4l2_req_hevc_abort_frame(AVCodecContext * const avctx) -+{ -+ V4L2RequestContextHEVC * const ctx = avctx->internal->hwaccel_priv_data; -+ ctx->fns->abort_frame(avctx); -+} -+ -+static int v4l2_req_hevc_frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx) -+{ -+ V4L2RequestContextHEVC * const ctx = avctx->internal->hwaccel_priv_data; -+ return ctx->fns->frame_params(avctx, hw_frames_ctx); -+} -+ -+static int v4l2_req_hevc_alloc_frame(AVCodecContext * avctx, AVFrame *frame) -+{ -+ V4L2RequestContextHEVC * const ctx = avctx->internal->hwaccel_priv_data; -+ return ctx->fns->alloc_frame(avctx, frame); -+} -+ -+ -+static int v4l2_request_hevc_uninit(AVCodecContext *avctx) -+{ -+ V4L2RequestContextHEVC * const ctx = avctx->internal->hwaccel_priv_data; -+ -+ av_log(avctx, AV_LOG_DEBUG, "<<< %s\n", __func__); -+ -+ decode_q_wait(&ctx->decode_q, NULL); // Wait for all other threads to be out of decode -+ -+ mediabufs_ctl_unref(&ctx->mbufs); -+ media_pool_delete(&ctx->mpool); -+ pollqueue_unref(&ctx->pq); -+ dmabufs_ctl_delete(&ctx->dbufs); -+ devscan_delete(&ctx->devscan); -+ -+ decode_q_uninit(&ctx->decode_q); -+ -+// if (avctx->hw_frames_ctx) { -+// AVHWFramesContext *hwfc = (AVHWFramesContext*)avctx->hw_frames_ctx->data; -+// av_buffer_pool_flush(hwfc->pool); -+// } -+ return 0; -+} -+ -+static int dst_fmt_accept_cb(void * v, const struct v4l2_fmtdesc *fmtdesc) -+{ -+ AVCodecContext *const avctx = v; -+ const HEVCContext *const h = avctx->priv_data; -+ -+ if (h->ps.sps->bit_depth == 8) { -+ if (fmtdesc->pixelformat == V4L2_PIX_FMT_NV12_COL128 || -+ fmtdesc->pixelformat == V4L2_PIX_FMT_NV12) { -+ return 1; -+ } -+ } -+ else if (h->ps.sps->bit_depth == 10) { -+ if (fmtdesc->pixelformat == V4L2_PIX_FMT_NV12_10_COL128) { -+ return 1; -+ } -+ } -+ return 0; -+} -+ -+static int v4l2_request_hevc_init(AVCodecContext *avctx) -+{ -+ const HEVCContext *h = avctx->priv_data; -+ V4L2RequestContextHEVC * const ctx = avctx->internal->hwaccel_priv_data; -+ const HEVCSPS * const sps = h->ps.sps; -+ int ret; -+ const struct decdev * decdev; -+ const uint32_t src_pix_fmt = V2(ff_v4l2_req_hevc, 1).src_pix_fmt_v4l2; // Assuming constant for all APIs but avoiding V4L2 includes -+ size_t src_size; -+ -+ av_log(avctx, AV_LOG_DEBUG, "<<< %s\n", __func__); -+ -+ if ((ret = devscan_build(avctx, &ctx->devscan)) != 0) { -+ av_log(avctx, AV_LOG_WARNING, "Failed to find any V4L2 devices\n"); -+ return (AVERROR(-ret)); -+ } -+ ret = AVERROR(ENOMEM); // Assume mem fail by default for these -+ -+ if ((decdev = devscan_find(ctx->devscan, src_pix_fmt)) == NULL) -+ { -+ av_log(avctx, AV_LOG_WARNING, "Failed to find a V4L2 device for H265\n"); -+ ret = AVERROR(ENODEV); -+ goto fail0; -+ } -+ av_log(avctx, AV_LOG_DEBUG, "Trying V4L2 devices: %s,%s\n", -+ decdev_media_path(decdev), decdev_video_path(decdev)); -+ -+ if ((ctx->dbufs = dmabufs_ctl_new()) == NULL) { -+ av_log(avctx, AV_LOG_ERROR, "Unable to open dmabufs\n"); -+ goto fail0; -+ } -+ -+ if ((ctx->pq = pollqueue_new()) == NULL) { -+ av_log(avctx, AV_LOG_ERROR, "Unable to create pollqueue\n"); -+ goto fail1; -+ } -+ -+ if ((ctx->mpool = media_pool_new(decdev_media_path(decdev), ctx->pq, 4)) == NULL) { -+ av_log(avctx, AV_LOG_ERROR, "Unable to create media pool\n"); -+ goto fail2; -+ } -+ -+ if ((ctx->mbufs = mediabufs_ctl_new(avctx, decdev_video_path(decdev), ctx->pq)) == NULL) { -+ av_log(avctx, AV_LOG_ERROR, "Unable to create media controls\n"); -+ goto fail3; -+ } -+ -+ // Ask for an initial bitbuf size of max size / 4 -+ // We will realloc if we need more -+ // Must use sps->h/w as avctx contains cropped size -+ src_size = bit_buf_size(sps->width, sps->height, sps->bit_depth - 8); -+ if (mediabufs_src_resizable(ctx->mbufs)) -+ src_size /= 4; -+ // Kludge for conformance tests which break Annex A limits -+ else if (src_size < 0x40000) -+ src_size = 0x40000; -+ -+ if (mediabufs_src_fmt_set(ctx->mbufs, decdev_src_type(decdev), src_pix_fmt, -+ sps->width, sps->height, src_size)) { -+ char tbuf1[5]; -+ av_log(avctx, AV_LOG_ERROR, "Failed to set source format: %s %dx%d\n", strfourcc(tbuf1, src_pix_fmt), sps->width, sps->height); -+ goto fail4; -+ } -+ -+ if (V2(ff_v4l2_req_hevc, 2).probe(avctx, ctx) == 0) { -+ av_log(avctx, AV_LOG_DEBUG, "HEVC API version 2 probed successfully\n"); -+ ctx->fns = &V2(ff_v4l2_req_hevc, 2); -+ } -+ else if (V2(ff_v4l2_req_hevc, 1).probe(avctx, ctx) == 0) { -+ av_log(avctx, AV_LOG_DEBUG, "HEVC API version 1 probed successfully\n"); -+ ctx->fns = &V2(ff_v4l2_req_hevc, 1); -+ } -+ else { -+ av_log(avctx, AV_LOG_ERROR, "No HEVC version probed successfully\n"); -+ ret = AVERROR(EINVAL); -+ goto fail4; -+ } -+ -+ if (mediabufs_dst_fmt_set(ctx->mbufs, sps->width, sps->height, dst_fmt_accept_cb, avctx)) { -+ char tbuf1[5]; -+ av_log(avctx, AV_LOG_ERROR, "Failed to set destination format: %s %dx%d\n", strfourcc(tbuf1, src_pix_fmt), sps->width, sps->height); -+ goto fail4; -+ } -+ -+ if (mediabufs_src_pool_create(ctx->mbufs, ctx->dbufs, 6)) { -+ av_log(avctx, AV_LOG_ERROR, "Failed to create source pool\n"); -+ goto fail4; -+ } -+ -+ { -+ unsigned int dst_slots = sps->temporal_layer[sps->max_sub_layers - 1].max_dec_pic_buffering + -+ avctx->thread_count + (avctx->extra_hw_frames > 0 ? avctx->extra_hw_frames : 6); -+ av_log(avctx, AV_LOG_DEBUG, "Slots=%d: Reordering=%d, threads=%d, hw+=%d\n", dst_slots, -+ sps->temporal_layer[sps->max_sub_layers - 1].max_dec_pic_buffering, -+ avctx->thread_count, avctx->extra_hw_frames); -+ -+ // extra_hw_frames is -1 if unset -+ if (mediabufs_dst_slots_create(ctx->mbufs, dst_slots, (avctx->extra_hw_frames > 0))) { -+ av_log(avctx, AV_LOG_ERROR, "Failed to create destination slots\n"); -+ goto fail4; -+ } -+ } -+ -+ if (mediabufs_stream_on(ctx->mbufs)) { -+ av_log(avctx, AV_LOG_ERROR, "Failed stream on\n"); -+ goto fail4; -+ } -+ -+ if ((ret = ff_decode_get_hw_frames_ctx(avctx, AV_HWDEVICE_TYPE_DRM)) != 0) { -+ av_log(avctx, AV_LOG_ERROR, "Failed to create frame ctx\n"); -+ goto fail4; -+ } -+ -+ if ((ret = ctx->fns->set_controls(avctx, ctx)) != 0) { -+ av_log(avctx, AV_LOG_ERROR, "Failed set controls\n"); -+ goto fail5; -+ } -+ -+ decode_q_init(&ctx->decode_q); -+ -+ // Set our s/w format -+ avctx->sw_pix_fmt = ((AVHWFramesContext *)avctx->hw_frames_ctx->data)->sw_format; -+ -+ av_log(avctx, AV_LOG_INFO, "Hwaccel %s; devices: %s,%s\n", -+ ctx->fns->name, -+ decdev_media_path(decdev), decdev_video_path(decdev)); -+ -+ return 0; -+ -+fail5: -+ av_buffer_unref(&avctx->hw_frames_ctx); -+fail4: -+ mediabufs_ctl_unref(&ctx->mbufs); -+fail3: -+ media_pool_delete(&ctx->mpool); -+fail2: -+ pollqueue_unref(&ctx->pq); -+fail1: -+ dmabufs_ctl_delete(&ctx->dbufs); -+fail0: -+ devscan_delete(&ctx->devscan); -+ return ret; -+} -+ -+const AVHWAccel ff_hevc_v4l2request_hwaccel = { -+ .name = "hevc_v4l2request", -+ .type = AVMEDIA_TYPE_VIDEO, -+ .id = AV_CODEC_ID_HEVC, -+ .pix_fmt = AV_PIX_FMT_DRM_PRIME, -+ .alloc_frame = v4l2_req_hevc_alloc_frame, -+ .start_frame = v4l2_req_hevc_start_frame, -+ .decode_slice = v4l2_req_hevc_decode_slice, -+ .end_frame = v4l2_req_hevc_end_frame, -+ .abort_frame = v4l2_req_hevc_abort_frame, -+ .init = v4l2_request_hevc_init, -+ .uninit = v4l2_request_hevc_uninit, -+ .priv_data_size = sizeof(V4L2RequestContextHEVC), -+ .frame_params = v4l2_req_hevc_frame_params, -+ .caps_internal = HWACCEL_CAP_ASYNC_SAFE | HWACCEL_CAP_MT_SAFE, -+}; -diff --git a/libavcodec/v4l2_request_hevc.h b/libavcodec/v4l2_request_hevc.h -new file mode 100644 -index 0000000000..f14f594564 ---- /dev/null -+++ b/libavcodec/v4l2_request_hevc.h -@@ -0,0 +1,102 @@ -+#ifndef AVCODEC_V4L2_REQUEST_HEVC_H -+#define AVCODEC_V4L2_REQUEST_HEVC_H -+ -+#include -+#include -+#include "v4l2_req_decode_q.h" -+ -+#ifndef DRM_FORMAT_NV15 -+#define DRM_FORMAT_NV15 fourcc_code('N', 'V', '1', '5') -+#endif -+ -+#ifndef DRM_FORMAT_NV20 -+#define DRM_FORMAT_NV20 fourcc_code('N', 'V', '2', '0') -+#endif -+ -+// P030 should be defined in drm_fourcc.h and hopefully will be sometime -+// in the future but until then... -+#ifndef DRM_FORMAT_P030 -+#define DRM_FORMAT_P030 fourcc_code('P', '0', '3', '0') -+#endif -+ -+#ifndef DRM_FORMAT_NV15 -+#define DRM_FORMAT_NV15 fourcc_code('N', 'V', '1', '5') -+#endif -+ -+#ifndef DRM_FORMAT_NV20 -+#define DRM_FORMAT_NV20 fourcc_code('N', 'V', '2', '0') -+#endif -+ -+#include -+#ifndef V4L2_CID_CODEC_BASE -+#define V4L2_CID_CODEC_BASE V4L2_CID_MPEG_BASE -+#endif -+ -+// V4L2_PIX_FMT_NV12_10_COL128 and V4L2_PIX_FMT_NV12_COL128 should be defined -+// in drm_fourcc.h hopefully will be sometime in the future but until then... -+#ifndef V4L2_PIX_FMT_NV12_10_COL128 -+#define V4L2_PIX_FMT_NV12_10_COL128 v4l2_fourcc('N', 'C', '3', '0') -+#endif -+ -+#ifndef V4L2_PIX_FMT_NV12_COL128 -+#define V4L2_PIX_FMT_NV12_COL128 v4l2_fourcc('N', 'C', '1', '2') /* 12 Y/CbCr 4:2:0 128 pixel wide column */ -+#endif -+ -+#ifndef V4L2_CTRL_FLAG_DYNAMIC_ARRAY -+#define V4L2_CTRL_FLAG_DYNAMIC_ARRAY 0x0800 -+#endif -+ -+#define MAX_SLICES 128 -+ -+#define VCAT(name, version) name##_v##version -+#define V2(n,v) VCAT(n, v) -+#define V(n) V2(n, HEVC_CTRLS_VERSION) -+ -+#define S2(x) #x -+#define STR(x) S2(x) -+ -+// 1 per decoder -+struct v4l2_req_decode_fns; -+ -+typedef struct V4L2RequestContextHEVC { -+// V4L2RequestContext base; -+ const struct v4l2_req_decode_fns * fns; -+ -+ unsigned int timestamp; // ?? maybe uint64_t -+ -+ int multi_slice; -+ int decode_mode; -+ int start_code; -+ int max_slices; -+ -+ req_decode_q decode_q; -+ -+ struct devscan *devscan; -+ struct dmabufs_ctl *dbufs; -+ struct pollqueue *pq; -+ struct media_pool * mpool; -+ struct mediabufs_ctl *mbufs; -+} V4L2RequestContextHEVC; -+ -+typedef struct v4l2_req_decode_fns { -+ int src_pix_fmt_v4l2; -+ const char * name; -+ -+ // Init setup -+ int (*probe)(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx); -+ int (*set_controls)(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx); -+ -+ // Passthrough of hwaccel fns -+ int (*start_frame)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); -+ int (*decode_slice)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); -+ int (*end_frame)(AVCodecContext *avctx); -+ void (*abort_frame)(AVCodecContext *avctx); -+ int (*frame_params)(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx); -+ int (*alloc_frame)(AVCodecContext * avctx, AVFrame *frame); -+} v4l2_req_decode_fns; -+ -+ -+extern const v4l2_req_decode_fns V2(ff_v4l2_req_hevc, 1); -+extern const v4l2_req_decode_fns V2(ff_v4l2_req_hevc, 2); -+ -+#endif - -From c99a0fe4d59212079de9bed222114abf95f7c989 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 27 Apr 2021 19:30:36 +0100 -Subject: [PATCH 013/151] Add no_cvt_hw option to ffmpeg - ---- - fftools/ffmpeg.c | 6 ++++-- - fftools/ffmpeg.h | 2 ++ - fftools/ffmpeg_opt.c | 3 +++ - 3 files changed, 9 insertions(+), 2 deletions(-) - -diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c -index 15e084f0b2..5dc2cd73c1 100644 ---- a/fftools/ffmpeg.c -+++ b/fftools/ffmpeg.c -@@ -2005,6 +2005,9 @@ static int ifilter_send_frame(InputFilter *ifilter, AVFrame *frame, int keep_ref - (ifilter->hw_frames_ctx && ifilter->hw_frames_ctx->data != frame->hw_frames_ctx->data)) - need_reinit = 1; - -+ if (no_cvt_hw && fg->graph) -+ need_reinit = 0; -+ - if (sd = av_frame_get_side_data(frame, AV_FRAME_DATA_DISPLAYMATRIX)) { - if (!ifilter->displaymatrix || memcmp(sd->data, ifilter->displaymatrix, sizeof(int32_t) * 9)) - need_reinit = 1; -@@ -2274,8 +2277,7 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output, int64_ - decoded_frame->top_field_first = ist->top_field_first; - - ist->frames_decoded++; -- -- if (ist->hwaccel_retrieve_data && decoded_frame->format == ist->hwaccel_pix_fmt) { -+ if (!no_cvt_hw && ist->hwaccel_retrieve_data && decoded_frame->format == ist->hwaccel_pix_fmt) { - err = ist->hwaccel_retrieve_data(ist->dec_ctx, decoded_frame); - if (err < 0) - goto fail; -diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h -index f1412f6446..8f478619b3 100644 ---- a/fftools/ffmpeg.h -+++ b/fftools/ffmpeg.h -@@ -729,6 +729,8 @@ extern enum VideoSyncMethod video_sync_method; - extern float frame_drop_threshold; - extern int do_benchmark; - extern int do_benchmark_all; -+extern int no_cvt_hw; -+extern int do_deinterlace; - extern int do_hex_dump; - extern int do_pkt_dump; - extern int copy_ts; -diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c -index 055275d813..761db36588 100644 ---- a/fftools/ffmpeg_opt.c -+++ b/fftools/ffmpeg_opt.c -@@ -71,6 +71,7 @@ enum VideoSyncMethod video_sync_method = VSYNC_AUTO; - float frame_drop_threshold = 0; - int do_benchmark = 0; - int do_benchmark_all = 0; -+int no_cvt_hw = 0; - int do_hex_dump = 0; - int do_pkt_dump = 0; - int copy_ts = 0; -@@ -1427,6 +1428,8 @@ const OptionDef options[] = { - "add timings for benchmarking" }, - { "benchmark_all", OPT_BOOL | OPT_EXPERT, { &do_benchmark_all }, - "add timings for each task" }, -+ { "no_cvt_hw", OPT_BOOL | OPT_EXPERT, { &no_cvt_hw }, -+ "do not auto-convert hw frames to sw" }, - { "progress", HAS_ARG | OPT_EXPERT, { .func_arg = opt_progress }, - "write program-readable progress information", "url" }, - { "stdin", OPT_BOOL | OPT_EXPERT, { &stdin_interaction }, - -From 27e0c78a2df53fb2337bee4c383cdb58cbbc717e Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 28 Apr 2021 10:16:39 +0100 -Subject: [PATCH 014/151] Add vout_drm - ---- - configure | 4 + - libavdevice/Makefile | 1 + - libavdevice/alldevices.c | 1 + - libavdevice/drm_vout.c | 638 +++++++++++++++++++++++++++++++++++++++ - 4 files changed, 644 insertions(+) - create mode 100644 libavdevice/drm_vout.c - -diff --git a/configure b/configure -index 199aa2b3d5..49744cab19 100755 ---- a/configure -+++ b/configure -@@ -346,6 +346,7 @@ External library support: - --enable-libnpp enable Nvidia Performance Primitives-based code [no] - --enable-mmal enable Broadcom Multi-Media Abstraction Layer (Raspberry Pi) via MMAL [no] - --enable-sand enable sand video formats [rpi] -+ --enable-vout-drm enable the vout_drm module - for internal testing only [no] - --disable-nvdec disable Nvidia video decoding acceleration (via hwaccel) [autodetect] - --disable-nvenc disable Nvidia video encoding code [autodetect] - --enable-omx enable OpenMAX IL code [no] -@@ -1940,6 +1941,7 @@ FEATURE_LIST=" - small - static - swscale_alpha -+ vout_drm - " - - # this list should be kept in linking order -@@ -3559,8 +3561,10 @@ sndio_indev_deps="sndio" - sndio_outdev_deps="sndio" - v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h" - v4l2_indev_suggest="libv4l2" -+v4l2_outdev_deps="libdrm" - v4l2_outdev_deps_any="linux_videodev2_h sys_videoio_h" - v4l2_outdev_suggest="libv4l2" -+vout_drm_outdev_deps="libdrm vout_drm" - vfwcap_indev_deps="vfw32 vfwcap_defines" - xcbgrab_indev_deps="libxcb" - xcbgrab_indev_suggest="libxcb_shm libxcb_shape libxcb_xfixes" -diff --git a/libavdevice/Makefile b/libavdevice/Makefile -index 8a62822b69..36aac30186 100644 ---- a/libavdevice/Makefile -+++ b/libavdevice/Makefile -@@ -48,6 +48,7 @@ OBJS-$(CONFIG_SNDIO_OUTDEV) += sndio_enc.o sndio.o - OBJS-$(CONFIG_V4L2_INDEV) += v4l2.o v4l2-common.o timefilter.o - OBJS-$(CONFIG_V4L2_OUTDEV) += v4l2enc.o v4l2-common.o - OBJS-$(CONFIG_VFWCAP_INDEV) += vfwcap.o -+OBJS-$(CONFIG_VOUT_DRM_OUTDEV) += drm_vout.o - OBJS-$(CONFIG_XCBGRAB_INDEV) += xcbgrab.o - OBJS-$(CONFIG_XV_OUTDEV) += xv.o - -diff --git a/libavdevice/alldevices.c b/libavdevice/alldevices.c -index 8a90fcb5d7..e2a8669f27 100644 ---- a/libavdevice/alldevices.c -+++ b/libavdevice/alldevices.c -@@ -52,6 +52,7 @@ extern const FFOutputFormat ff_sndio_muxer; - extern const AVInputFormat ff_v4l2_demuxer; - extern const FFOutputFormat ff_v4l2_muxer; - extern const AVInputFormat ff_vfwcap_demuxer; -+extern const FFOutputFormat ff_vout_drm_muxer; - extern const AVInputFormat ff_xcbgrab_demuxer; - extern const FFOutputFormat ff_xv_muxer; - -diff --git a/libavdevice/drm_vout.c b/libavdevice/drm_vout.c -new file mode 100644 -index 0000000000..cfb33ce7c3 ---- /dev/null -+++ b/libavdevice/drm_vout.c -@@ -0,0 +1,638 @@ -+/* -+ * Copyright (c) 2020 John Cox for Raspberry Pi Trading -+ * -+ * This file is part of FFmpeg. -+ * -+ * FFmpeg is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * FFmpeg is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with FFmpeg; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+ -+// *** This module is a work in progress and its utility is strictly -+// limited to testing. -+ -+#include "libavutil/opt.h" -+#include "libavutil/pixdesc.h" -+#include "libavutil/hwcontext_drm.h" -+#include "libavformat/mux.h" -+#include "avdevice.h" -+ -+#include "pthread.h" -+#include -+#include -+ -+#include -+#include -+ -+#define TRACE_ALL 0 -+ -+#define DRM_MODULE "vc4" -+ -+#define ERRSTR strerror(errno) -+ -+struct drm_setup { -+ int conId; -+ uint32_t crtcId; -+ int crtcIdx; -+ uint32_t planeId; -+ unsigned int out_fourcc; -+ struct { -+ int x, y, width, height; -+ } compose; -+}; -+ -+typedef struct drm_aux_s { -+ unsigned int fb_handle; -+ uint32_t bo_handles[AV_DRM_MAX_PLANES]; -+ AVFrame * frame; -+} drm_aux_t; -+ -+// Aux size should only need to be 2, but on a few streams (Hobbit) under FKMS -+// we get initial flicker probably due to dodgy drm timing -+#define AUX_SIZE 3 -+typedef struct drm_display_env_s -+{ -+ AVClass *class; -+ -+ int drm_fd; -+ uint32_t con_id; -+ struct drm_setup setup; -+ enum AVPixelFormat avfmt; -+ int show_all; -+ -+ unsigned int ano; -+ drm_aux_t aux[AUX_SIZE]; -+ -+ pthread_t q_thread; -+ sem_t q_sem_in; -+ sem_t q_sem_out; -+ int q_terminate; -+ AVFrame * q_next; -+ -+} drm_display_env_t; -+ -+ -+static int drm_vout_write_trailer(AVFormatContext *s) -+{ -+#if TRACE_ALL -+ av_log(s, AV_LOG_DEBUG, "%s\n", __func__); -+#endif -+ -+ return 0; -+} -+ -+static int drm_vout_write_header(AVFormatContext *s) -+{ -+ const AVCodecParameters * const par = s->streams[0]->codecpar; -+ -+#if TRACE_ALL -+ av_log(s, AV_LOG_DEBUG, "%s\n", __func__); -+#endif -+ if ( s->nb_streams > 1 -+ || par->codec_type != AVMEDIA_TYPE_VIDEO -+ || par->codec_id != AV_CODEC_ID_WRAPPED_AVFRAME) { -+ av_log(s, AV_LOG_ERROR, "Only supports one wrapped avframe stream\n"); -+ return AVERROR(EINVAL); -+ } -+ -+ return 0; -+} -+ -+static int find_plane(struct AVFormatContext * const avctx, -+ const int drmfd, const int crtcidx, const uint32_t format, -+ uint32_t * const pplane_id) -+{ -+ drmModePlaneResPtr planes; -+ drmModePlanePtr plane; -+ unsigned int i; -+ unsigned int j; -+ int ret = 0; -+ -+ planes = drmModeGetPlaneResources(drmfd); -+ if (!planes) -+ { -+ av_log(avctx, AV_LOG_WARNING, "drmModeGetPlaneResources failed: %s\n", ERRSTR); -+ return -1; -+ } -+ -+ for (i = 0; i < planes->count_planes; ++i) { -+ plane = drmModeGetPlane(drmfd, planes->planes[i]); -+ if (!planes) -+ { -+ av_log(avctx, AV_LOG_WARNING, "drmModeGetPlane failed: %s\n", ERRSTR); -+ break; -+ } -+ -+ if (!(plane->possible_crtcs & (1 << crtcidx))) { -+ drmModeFreePlane(plane); -+ continue; -+ } -+ -+ for (j = 0; j < plane->count_formats; ++j) { -+ if (plane->formats[j] == format) -+ break; -+ } -+ -+ if (j == plane->count_formats) { -+ drmModeFreePlane(plane); -+ continue; -+ } -+ -+ *pplane_id = plane->plane_id; -+ drmModeFreePlane(plane); -+ break; -+ } -+ -+ if (i == planes->count_planes) -+ ret = -1; -+ -+ drmModeFreePlaneResources(planes); -+ return ret; -+} -+ -+static void da_uninit(drm_display_env_t * const de, drm_aux_t * da) -+{ -+ if (da->fb_handle != 0) { -+ drmModeRmFB(de->drm_fd, da->fb_handle); -+ da->fb_handle = 0; -+ } -+ -+ for (unsigned int i = 0; i != AV_DRM_MAX_PLANES; ++i) { -+ if (da->bo_handles[i]) { -+ struct drm_gem_close gem_close = {.handle = da->bo_handles[i]}; -+ drmIoctl(de->drm_fd, DRM_IOCTL_GEM_CLOSE, &gem_close); -+ da->bo_handles[i] = 0; -+ } -+ } -+ av_frame_free(&da->frame); -+} -+ -+static int do_display(AVFormatContext * const s, drm_display_env_t * const de, AVFrame * frame) -+{ -+ const AVDRMFrameDescriptor *desc = (AVDRMFrameDescriptor*)frame->data[0]; -+ drm_aux_t * da = de->aux + de->ano; -+ const uint32_t format = desc->layers[0].format; -+ int ret = 0; -+ -+#if TRACE_ALL -+ av_log(s, AV_LOG_DEBUG, "<<< %s: fd=%d\n", __func__, desc->objects[0].fd); -+#endif -+ -+ if (de->setup.out_fourcc != format) { -+ if (find_plane(s, de->drm_fd, de->setup.crtcIdx, format, &de->setup.planeId)) { -+ av_frame_free(&frame); -+ av_log(s, AV_LOG_WARNING, "No plane for format: %#x\n", format); -+ return -1; -+ } -+ de->setup.out_fourcc = format; -+ } -+ -+ { -+ drmVBlank vbl = { -+ .request = { -+ .type = DRM_VBLANK_RELATIVE, -+ .sequence = 0 -+ } -+ }; -+ -+ while (drmWaitVBlank(de->drm_fd, &vbl)) { -+ if (errno != EINTR) { -+// av_log(s, AV_LOG_WARNING, "drmWaitVBlank failed: %s\n", ERRSTR); -+ break; -+ } -+ } -+ } -+ -+ da_uninit(de, da); -+ -+ { -+ uint32_t pitches[4] = {0}; -+ uint32_t offsets[4] = {0}; -+ uint64_t modifiers[4] = {0}; -+ uint32_t bo_handles[4] = {0}; -+ int i, j, n; -+ -+ da->frame = frame; -+ -+ for (i = 0; i < desc->nb_objects; ++i) { -+ if (drmPrimeFDToHandle(de->drm_fd, desc->objects[i].fd, da->bo_handles + i) != 0) { -+ av_log(s, AV_LOG_WARNING, "drmPrimeFDToHandle[%d](%d) failed: %s\n", i, desc->objects[i].fd, ERRSTR); -+ return -1; -+ } -+ } -+ -+ n = 0; -+ for (i = 0; i < desc->nb_layers; ++i) { -+ for (j = 0; j < desc->layers[i].nb_planes; ++j) { -+ const AVDRMPlaneDescriptor * const p = desc->layers[i].planes + j; -+ const AVDRMObjectDescriptor * const obj = desc->objects + p->object_index; -+ pitches[n] = p->pitch; -+ offsets[n] = p->offset; -+ modifiers[n] = obj->format_modifier; -+ bo_handles[n] = da->bo_handles[p->object_index]; -+ ++n; -+ } -+ } -+ -+#if 1 && TRACE_ALL -+ av_log(s, AV_LOG_DEBUG, "%dx%d, fmt: %x, boh=%d,%d,%d,%d, pitch=%d,%d,%d,%d," -+ " offset=%d,%d,%d,%d, mod=%llx,%llx,%llx,%llx\n", -+ av_frame_cropped_width(frame), -+ av_frame_cropped_height(frame), -+ desc->layers[0].format, -+ bo_handles[0], -+ bo_handles[1], -+ bo_handles[2], -+ bo_handles[3], -+ pitches[0], -+ pitches[1], -+ pitches[2], -+ pitches[3], -+ offsets[0], -+ offsets[1], -+ offsets[2], -+ offsets[3], -+ (long long)modifiers[0], -+ (long long)modifiers[1], -+ (long long)modifiers[2], -+ (long long)modifiers[3] -+ ); -+#endif -+ -+ if (drmModeAddFB2WithModifiers(de->drm_fd, -+ av_frame_cropped_width(frame), -+ av_frame_cropped_height(frame), -+ desc->layers[0].format, bo_handles, -+ pitches, offsets, modifiers, -+ &da->fb_handle, DRM_MODE_FB_MODIFIERS /** 0 if no mods */) != 0) { -+ av_log(s, AV_LOG_WARNING, "drmModeAddFB2WithModifiers failed: %s\n", ERRSTR); -+ return -1; -+ } -+ } -+ -+ ret = drmModeSetPlane(de->drm_fd, de->setup.planeId, de->setup.crtcId, -+ da->fb_handle, 0, -+ de->setup.compose.x, de->setup.compose.y, -+ de->setup.compose.width, -+ de->setup.compose.height, -+ 0, 0, -+ av_frame_cropped_width(frame) << 16, -+ av_frame_cropped_height(frame) << 16); -+ -+ if (ret != 0) { -+ av_log(s, AV_LOG_WARNING, "drmModeSetPlane failed: %s\n", ERRSTR); -+ } -+ -+ de->ano = de->ano + 1 >= AUX_SIZE ? 0 : de->ano + 1; -+ -+ return ret; -+} -+ -+static int do_sem_wait(sem_t * const sem, const int nowait) -+{ -+ while (nowait ? sem_trywait(sem) : sem_wait(sem)) { -+ if (errno != EINTR) -+ return -errno; -+ } -+ return 0; -+} -+ -+static void * display_thread(void * v) -+{ -+ AVFormatContext * const s = v; -+ drm_display_env_t * const de = s->priv_data; -+ int i; -+ -+#if TRACE_ALL -+ av_log(s, AV_LOG_DEBUG, "<<< %s\n", __func__); -+#endif -+ -+ sem_post(&de->q_sem_out); -+ -+ for (;;) { -+ AVFrame * frame; -+ -+ do_sem_wait(&de->q_sem_in, 0); -+ -+ if (de->q_terminate) -+ break; -+ -+ frame = de->q_next; -+ de->q_next = NULL; -+ sem_post(&de->q_sem_out); -+ -+ do_display(s, de, frame); -+ } -+ -+#if TRACE_ALL -+ av_log(s, AV_LOG_DEBUG, ">>> %s\n", __func__); -+#endif -+ -+ for (i = 0; i != AUX_SIZE; ++i) -+ da_uninit(de, de->aux + i); -+ -+ av_frame_free(&de->q_next); -+ -+ return NULL; -+} -+ -+static int drm_vout_write_packet(AVFormatContext *s, AVPacket *pkt) -+{ -+ const AVFrame * const src_frame = (AVFrame *)pkt->data; -+ AVFrame * frame; -+ drm_display_env_t * const de = s->priv_data; -+ int ret; -+ -+#if TRACE_ALL -+ av_log(s, AV_LOG_DEBUG, "%s\n", __func__); -+#endif -+ -+ if ((src_frame->flags & AV_FRAME_FLAG_CORRUPT) != 0) { -+ av_log(s, AV_LOG_WARNING, "Discard corrupt frame: fmt=%d, ts=%" PRId64 "\n", src_frame->format, src_frame->pts); -+ return 0; -+ } -+ -+ if (src_frame->format == AV_PIX_FMT_DRM_PRIME) { -+ frame = av_frame_alloc(); -+ av_frame_ref(frame, src_frame); -+ } -+ else if (src_frame->format == AV_PIX_FMT_VAAPI) { -+ frame = av_frame_alloc(); -+ frame->format = AV_PIX_FMT_DRM_PRIME; -+ if (av_hwframe_map(frame, src_frame, 0) != 0) -+ { -+ av_log(s, AV_LOG_WARNING, "Failed to map frame (format=%d) to DRM_PRiME\n", src_frame->format); -+ av_frame_free(&frame); -+ return AVERROR(EINVAL); -+ } -+ } -+ else { -+ av_log(s, AV_LOG_WARNING, "Frame (format=%d) not DRM_PRiME\n", src_frame->format); -+ return AVERROR(EINVAL); -+ } -+ -+ ret = do_sem_wait(&de->q_sem_out, !de->show_all); -+ if (ret) { -+ av_frame_free(&frame); -+ } -+ else { -+ de->q_next = frame; -+ sem_post(&de->q_sem_in); -+ } -+ -+ return 0; -+} -+ -+static int drm_vout_write_frame(AVFormatContext *s, int stream_index, AVFrame **ppframe, -+ unsigned flags) -+{ -+ av_log(s, AV_LOG_ERROR, "%s: NIF: idx=%d, flags=%#x\n", __func__, stream_index, flags); -+ return AVERROR_PATCHWELCOME; -+} -+ -+static int drm_vout_control_message(AVFormatContext *s, int type, void *data, size_t data_size) -+{ -+#if TRACE_ALL -+ av_log(s, AV_LOG_DEBUG, "%s: %d\n", __func__, type); -+#endif -+ switch(type) { -+ case AV_APP_TO_DEV_WINDOW_REPAINT: -+ return 0; -+ default: -+ break; -+ } -+ return AVERROR(ENOSYS); -+} -+ -+static int find_crtc(struct AVFormatContext * const avctx, int drmfd, struct drm_setup *s, uint32_t * const pConId) -+{ -+ int ret = -1; -+ int i; -+ drmModeRes *res = drmModeGetResources(drmfd); -+ drmModeConnector *c; -+ -+ if(!res) -+ { -+ printf( "drmModeGetResources failed: %s\n", ERRSTR); -+ return -1; -+ } -+ -+ if (res->count_crtcs <= 0) -+ { -+ printf( "drm: no crts\n"); -+ goto fail_res; -+ } -+ -+ if (!s->conId) { -+ fprintf(stderr, -+ "No connector ID specified. Choosing default from list:\n"); -+ -+ for (i = 0; i < res->count_connectors; i++) { -+ drmModeConnector *con = -+ drmModeGetConnector(drmfd, res->connectors[i]); -+ drmModeEncoder *enc = NULL; -+ drmModeCrtc *crtc = NULL; -+ -+ if (con->encoder_id) { -+ enc = drmModeGetEncoder(drmfd, con->encoder_id); -+ if (enc->crtc_id) { -+ crtc = drmModeGetCrtc(drmfd, enc->crtc_id); -+ } -+ } -+ -+ if (!s->conId && crtc) { -+ s->conId = con->connector_id; -+ s->crtcId = crtc->crtc_id; -+ } -+ -+ av_log(avctx, AV_LOG_DEBUG, "Connector %d (crtc %d): type %d, %dx%d%s\n", -+ con->connector_id, -+ crtc ? crtc->crtc_id : 0, -+ con->connector_type, -+ crtc ? crtc->width : 0, -+ crtc ? crtc->height : 0, -+ (s->conId == (int)con->connector_id ? -+ " (chosen)" : "")); -+ } -+ -+ if (!s->conId) { -+ av_log(avctx, AV_LOG_ERROR, -+ "No suitable enabled connector found.\n"); -+ return -1;; -+ } -+ } -+ -+ s->crtcIdx = -1; -+ -+ for (i = 0; i < res->count_crtcs; ++i) { -+ if (s->crtcId == res->crtcs[i]) { -+ s->crtcIdx = i; -+ break; -+ } -+ } -+ -+ if (s->crtcIdx == -1) -+ { -+ av_log(avctx, AV_LOG_WARNING, "drm: CRTC %u not found\n", s->crtcId); -+ goto fail_res; -+ } -+ -+ if (res->count_connectors <= 0) -+ { -+ av_log(avctx, AV_LOG_WARNING, "drm: no connectors\n"); -+ goto fail_res; -+ } -+ -+ c = drmModeGetConnector(drmfd, s->conId); -+ if (!c) -+ { -+ av_log(avctx, AV_LOG_WARNING, "drmModeGetConnector failed: %s\n", ERRSTR); -+ goto fail_res; -+ } -+ -+ if (!c->count_modes) -+ { -+ av_log(avctx, AV_LOG_WARNING, "connector supports no mode\n"); -+ goto fail_conn; -+ } -+ -+ { -+ drmModeCrtc *crtc = drmModeGetCrtc(drmfd, s->crtcId); -+ s->compose.x = crtc->x; -+ s->compose.y = crtc->y; -+ s->compose.width = crtc->width; -+ s->compose.height = crtc->height; -+ drmModeFreeCrtc(crtc); -+ } -+ -+ if (pConId) -+ *pConId = c->connector_id; -+ ret = 0; -+ -+fail_conn: -+ drmModeFreeConnector(c); -+ -+fail_res: -+ drmModeFreeResources(res); -+ -+ return ret; -+} -+ -+// deinit is called if init fails so no need to clean up explicity here -+static int drm_vout_init(struct AVFormatContext * s) -+{ -+ drm_display_env_t * const de = s->priv_data; -+ int rv; -+ const char * drm_module = DRM_MODULE; -+ -+ av_log(s, AV_LOG_DEBUG, "<<< %s\n", __func__); -+ -+ de->drm_fd = -1; -+ de->con_id = 0; -+ de->setup = (struct drm_setup){0}; -+ de->q_terminate = 0; -+ -+ if ((de->drm_fd = drmOpen(drm_module, NULL)) < 0) -+ { -+ rv = AVERROR(errno); -+ av_log(s, AV_LOG_ERROR, "Failed to drmOpen %s: %s\n", drm_module, av_err2str(rv)); -+ return rv; -+ } -+ -+ if (find_crtc(s, de->drm_fd, &de->setup, &de->con_id) != 0) -+ { -+ av_log(s, AV_LOG_ERROR, "failed to find valid mode\n"); -+ rv = AVERROR(EINVAL); -+ goto fail_close; -+ } -+ -+ sem_init(&de->q_sem_in, 0, 0); -+ sem_init(&de->q_sem_out, 0, 0); -+ if (pthread_create(&de->q_thread, NULL, display_thread, s)) { -+ rv = AVERROR(errno); -+ av_log(s, AV_LOG_ERROR, "Failed to creatye display thread: %s\n", av_err2str(rv)); -+ goto fail_close; -+ } -+ -+ av_log(s, AV_LOG_DEBUG, ">>> %s\n", __func__); -+ -+ return 0; -+ -+fail_close: -+ close(de->drm_fd); -+ de->drm_fd = -1; -+ av_log(s, AV_LOG_DEBUG, ">>> %s: FAIL\n", __func__); -+ -+ return rv; -+} -+ -+static void drm_vout_deinit(struct AVFormatContext * s) -+{ -+ drm_display_env_t * const de = s->priv_data; -+ -+ av_log(s, AV_LOG_DEBUG, "<<< %s\n", __func__); -+ -+ de->q_terminate = 1; -+ sem_post(&de->q_sem_in); -+ pthread_join(de->q_thread, NULL); -+ sem_destroy(&de->q_sem_in); -+ sem_destroy(&de->q_sem_out); -+ -+ for (unsigned int i = 0; i != AUX_SIZE; ++i) -+ da_uninit(de, de->aux + i); -+ -+ av_frame_free(&de->q_next); -+ -+ if (de->drm_fd >= 0) { -+ close(de->drm_fd); -+ de->drm_fd = -1; -+ } -+ -+ av_log(s, AV_LOG_DEBUG, ">>> %s\n", __func__); -+} -+ -+ -+#define OFFSET(x) offsetof(drm_display_env_t, x) -+static const AVOption options[] = { -+ { "show_all", "show all frames", OFFSET(show_all), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, AV_OPT_FLAG_ENCODING_PARAM }, -+ { NULL } -+}; -+ -+static const AVClass drm_vout_class = { -+ .class_name = "drm vid outdev", -+ .item_name = av_default_item_name, -+ .option = options, -+ .version = LIBAVUTIL_VERSION_INT, -+ .category = AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT, -+}; -+ -+FFOutputFormat ff_vout_drm_muxer = { -+ .p = { -+ .name = "vout_drm", -+ .long_name = NULL_IF_CONFIG_SMALL("Drm video output device"), -+ .audio_codec = AV_CODEC_ID_NONE, -+ .video_codec = AV_CODEC_ID_WRAPPED_AVFRAME, -+ .flags = AVFMT_NOFILE | AVFMT_VARIABLE_FPS | AVFMT_NOTIMESTAMPS, -+ .priv_class = &drm_vout_class, -+ }, -+ .priv_data_size = sizeof(drm_display_env_t), -+ .write_header = drm_vout_write_header, -+ .write_packet = drm_vout_write_packet, -+ .write_uncoded_frame = drm_vout_write_frame, -+ .write_trailer = drm_vout_write_trailer, -+ .control_message = drm_vout_control_message, -+ .init = drm_vout_init, -+ .deinit = drm_vout_deinit, -+}; -+ - -From cc536672adf4eefeaec16e9808f583c693ad7819 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 28 Apr 2021 11:34:18 +0100 -Subject: [PATCH 015/151] Add vout_egl - ---- - configure | 6 + - libavdevice/Makefile | 1 + - libavdevice/alldevices.c | 1 + - libavdevice/egl_vout.c | 811 +++++++++++++++++++++++++++++++++++++++ - 4 files changed, 819 insertions(+) - create mode 100644 libavdevice/egl_vout.c - -diff --git a/configure b/configure -index 49744cab19..b41663c794 100755 ---- a/configure -+++ b/configure -@@ -347,6 +347,7 @@ External library support: - --enable-mmal enable Broadcom Multi-Media Abstraction Layer (Raspberry Pi) via MMAL [no] - --enable-sand enable sand video formats [rpi] - --enable-vout-drm enable the vout_drm module - for internal testing only [no] -+ --enable-vout-egl enable the vout_egl module - for internal testing only [no] - --disable-nvdec disable Nvidia video decoding acceleration (via hwaccel) [autodetect] - --disable-nvenc disable Nvidia video encoding code [autodetect] - --enable-omx enable OpenMAX IL code [no] -@@ -1818,6 +1819,7 @@ EXTERNAL_LIBRARY_LIST=" - libdav1d - libdc1394 - libdrm -+ epoxy - libflite - libfontconfig - libfreetype -@@ -1942,6 +1944,7 @@ FEATURE_LIST=" - static - swscale_alpha - vout_drm -+ vout_egl - " - - # this list should be kept in linking order -@@ -3565,6 +3568,8 @@ v4l2_outdev_deps="libdrm" - v4l2_outdev_deps_any="linux_videodev2_h sys_videoio_h" - v4l2_outdev_suggest="libv4l2" - vout_drm_outdev_deps="libdrm vout_drm" -+vout_egl_outdev_deps="xlib" -+vout_egl_outdev_select="epoxy" - vfwcap_indev_deps="vfw32 vfwcap_defines" - xcbgrab_indev_deps="libxcb" - xcbgrab_indev_suggest="libxcb_shm libxcb_shape libxcb_xfixes" -@@ -6596,6 +6601,7 @@ enabled libdav1d && require_pkg_config libdav1d "dav1d >= 0.5.0" "dav1d - enabled libdavs2 && require_pkg_config libdavs2 "davs2 >= 1.6.0" davs2.h davs2_decoder_open - enabled libdc1394 && require_pkg_config libdc1394 libdc1394-2 dc1394/dc1394.h dc1394_new - enabled libdrm && require_pkg_config libdrm libdrm xf86drm.h drmGetVersion -+enabled epoxy && require_pkg_config epoxy epoxy epoxy/egl.h epoxy_egl_version - enabled libfdk_aac && { check_pkg_config libfdk_aac fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen || - { require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac && - warn "using libfdk without pkg-config"; } } -diff --git a/libavdevice/Makefile b/libavdevice/Makefile -index 36aac30186..0989cb895f 100644 ---- a/libavdevice/Makefile -+++ b/libavdevice/Makefile -@@ -49,6 +49,7 @@ OBJS-$(CONFIG_V4L2_INDEV) += v4l2.o v4l2-common.o timefilter.o - OBJS-$(CONFIG_V4L2_OUTDEV) += v4l2enc.o v4l2-common.o - OBJS-$(CONFIG_VFWCAP_INDEV) += vfwcap.o - OBJS-$(CONFIG_VOUT_DRM_OUTDEV) += drm_vout.o -+OBJS-$(CONFIG_VOUT_EGL_OUTDEV) += egl_vout.o - OBJS-$(CONFIG_XCBGRAB_INDEV) += xcbgrab.o - OBJS-$(CONFIG_XV_OUTDEV) += xv.o - -diff --git a/libavdevice/alldevices.c b/libavdevice/alldevices.c -index e2a8669f27..ffb410b92d 100644 ---- a/libavdevice/alldevices.c -+++ b/libavdevice/alldevices.c -@@ -53,6 +53,7 @@ extern const AVInputFormat ff_v4l2_demuxer; - extern const FFOutputFormat ff_v4l2_muxer; - extern const AVInputFormat ff_vfwcap_demuxer; - extern const FFOutputFormat ff_vout_drm_muxer; -+extern const FFOutputFormat ff_vout_egl_muxer; - extern const AVInputFormat ff_xcbgrab_demuxer; - extern const FFOutputFormat ff_xv_muxer; - -diff --git a/libavdevice/egl_vout.c b/libavdevice/egl_vout.c -new file mode 100644 -index 0000000000..7b9c610ace ---- /dev/null -+++ b/libavdevice/egl_vout.c -@@ -0,0 +1,811 @@ -+/* -+ * Copyright (c) 2020 John Cox for Raspberry Pi Trading -+ * -+ * This file is part of FFmpeg. -+ * -+ * FFmpeg is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * FFmpeg is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with FFmpeg; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+ -+// *** This module is a work in progress and its utility is strictly -+// limited to testing. -+// Amongst other issues it doesn't wait for the pic to be displayed before -+// returning the buffer so flikering does occur. -+ -+#include -+#include -+ -+#include "libavutil/opt.h" -+#include "libavutil/avassert.h" -+#include "libavutil/pixdesc.h" -+#include "libavutil/imgutils.h" -+#include "libavutil/hwcontext_drm.h" -+#include "libavformat/mux.h" -+#include "avdevice.h" -+ -+#include "pthread.h" -+#include -+#include -+#include -+ -+#include -+#include -+ -+#include "libavutil/rpi_sand_fns.h" -+ -+#define TRACE_ALL 0 -+ -+struct egl_setup { -+ int conId; -+ -+ Display *dpy; -+ EGLDisplay egl_dpy; -+ EGLContext ctx; -+ EGLSurface surf; -+ Window win; -+ -+ uint32_t crtcId; -+ int crtcIdx; -+ uint32_t planeId; -+ struct { -+ int x, y, width, height; -+ } compose; -+}; -+ -+typedef struct egl_aux_s { -+ int fd; -+ GLuint texture; -+ -+} egl_aux_t; -+ -+typedef struct egl_display_env_s -+{ -+ AVClass *class; -+ -+ struct egl_setup setup; -+ enum AVPixelFormat avfmt; -+ -+ int show_all; -+ int window_width, window_height; -+ int window_x, window_y; -+ int fullscreen; -+ -+ egl_aux_t aux[32]; -+ -+ pthread_t q_thread; -+ pthread_mutex_t q_lock; -+ sem_t display_start_sem; -+ sem_t q_sem; -+ int q_terminate; -+ AVFrame * q_this; -+ AVFrame * q_next; -+ -+} egl_display_env_t; -+ -+ -+/** -+ * Remove window border/decorations. -+ */ -+static void -+no_border( Display *dpy, Window w) -+{ -+ static const unsigned MWM_HINTS_DECORATIONS = (1 << 1); -+ static const int PROP_MOTIF_WM_HINTS_ELEMENTS = 5; -+ -+ typedef struct -+ { -+ unsigned long flags; -+ unsigned long functions; -+ unsigned long decorations; -+ long inputMode; -+ unsigned long status; -+ } PropMotifWmHints; -+ -+ PropMotifWmHints motif_hints; -+ Atom prop, proptype; -+ unsigned long flags = 0; -+ -+ /* setup the property */ -+ motif_hints.flags = MWM_HINTS_DECORATIONS; -+ motif_hints.decorations = flags; -+ -+ /* get the atom for the property */ -+ prop = XInternAtom( dpy, "_MOTIF_WM_HINTS", True ); -+ if (!prop) { -+ /* something went wrong! */ -+ return; -+ } -+ -+ /* not sure this is correct, seems to work, XA_WM_HINTS didn't work */ -+ proptype = prop; -+ -+ XChangeProperty( dpy, w, /* display, window */ -+ prop, proptype, /* property, type */ -+ 32, /* format: 32-bit datums */ -+ PropModeReplace, /* mode */ -+ (unsigned char *) &motif_hints, /* data */ -+ PROP_MOTIF_WM_HINTS_ELEMENTS /* nelements */ -+ ); -+} -+ -+ -+/* -+ * Create an RGB, double-buffered window. -+ * Return the window and context handles. -+ */ -+static int -+make_window(struct AVFormatContext * const s, -+ egl_display_env_t * const de, -+ Display *dpy, EGLDisplay egl_dpy, const char *name, -+ Window *winRet, EGLContext *ctxRet, EGLSurface *surfRet) -+{ -+ int scrnum = DefaultScreen( dpy ); -+ XSetWindowAttributes attr; -+ unsigned long mask; -+ Window root = RootWindow( dpy, scrnum ); -+ Window win; -+ EGLContext ctx; -+ const int fullscreen = de->fullscreen; -+ EGLConfig config; -+ int x = de->window_x; -+ int y = de->window_y; -+ int width = de->window_width ? de->window_width : 1280; -+ int height = de->window_height ? de->window_height : 720; -+ -+ -+ if (fullscreen) { -+ int scrnum = DefaultScreen(dpy); -+ -+ x = 0; y = 0; -+ width = DisplayWidth(dpy, scrnum); -+ height = DisplayHeight(dpy, scrnum); -+ } -+ -+ { -+ EGLint num_configs; -+ static const EGLint attribs[] = { -+ EGL_RED_SIZE, 1, -+ EGL_GREEN_SIZE, 1, -+ EGL_BLUE_SIZE, 1, -+ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, -+ EGL_NONE -+ }; -+ -+ if (!eglChooseConfig(egl_dpy, attribs, &config, 1, &num_configs)) { -+ av_log(s, AV_LOG_ERROR, "Error: couldn't get an EGL visual config\n"); -+ return -1; -+ } -+ } -+ -+ { -+ EGLint vid; -+ if (!eglGetConfigAttrib(egl_dpy, config, EGL_NATIVE_VISUAL_ID, &vid)) { -+ av_log(s, AV_LOG_ERROR, "Error: eglGetConfigAttrib() failed\n"); -+ return -1; -+ } -+ -+ { -+ XVisualInfo visTemplate = { -+ .visualid = vid, -+ }; -+ int num_visuals; -+ XVisualInfo *visinfo = XGetVisualInfo(dpy, VisualIDMask, -+ &visTemplate, &num_visuals); -+ -+ /* window attributes */ -+ attr.background_pixel = 0; -+ attr.border_pixel = 0; -+ attr.colormap = XCreateColormap( dpy, root, visinfo->visual, AllocNone); -+ attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; -+ /* XXX this is a bad way to get a borderless window! */ -+ mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; -+ -+ win = XCreateWindow( dpy, root, x, y, width, height, -+ 0, visinfo->depth, InputOutput, -+ visinfo->visual, mask, &attr ); -+ XFree(visinfo); -+ } -+ } -+ -+ if (fullscreen) -+ no_border(dpy, win); -+ -+ /* set hints and properties */ -+ { -+ XSizeHints sizehints; -+ sizehints.x = x; -+ sizehints.y = y; -+ sizehints.width = width; -+ sizehints.height = height; -+ sizehints.flags = USSize | USPosition; -+ XSetNormalHints(dpy, win, &sizehints); -+ XSetStandardProperties(dpy, win, name, name, -+ None, (char **)NULL, 0, &sizehints); -+ } -+ -+ eglBindAPI(EGL_OPENGL_ES_API); -+ -+ { -+ static const EGLint ctx_attribs[] = { -+ EGL_CONTEXT_CLIENT_VERSION, 2, -+ EGL_NONE -+ }; -+ ctx = eglCreateContext(egl_dpy, config, EGL_NO_CONTEXT, ctx_attribs ); -+ if (!ctx) { -+ av_log(s, AV_LOG_ERROR, "Error: eglCreateContext failed\n"); -+ return -1; -+ } -+ } -+ -+ -+ XMapWindow(dpy, win); -+ -+ { -+ EGLSurface surf = eglCreateWindowSurface(egl_dpy, config, (EGLNativeWindowType)win, NULL); -+ if (!surf) { -+ av_log(s, AV_LOG_ERROR, "Error: eglCreateWindowSurface failed\n"); -+ return -1; -+ } -+ -+ if (!eglMakeCurrent(egl_dpy, surf, surf, ctx)) { -+ av_log(s, AV_LOG_ERROR, "Error: eglCreateContext failed\n"); -+ return -1; -+ } -+ -+ *winRet = win; -+ *ctxRet = ctx; -+ *surfRet = surf; -+ } -+ -+ return 0; -+} -+ -+static GLint -+compile_shader(struct AVFormatContext * const avctx, GLenum target, const char *source) -+{ -+ GLuint s = glCreateShader(target); -+ -+ if (s == 0) { -+ av_log(avctx, AV_LOG_ERROR, "Failed to create shader\n"); -+ return 0; -+ } -+ -+ glShaderSource(s, 1, (const GLchar **) &source, NULL); -+ glCompileShader(s); -+ -+ { -+ GLint ok; -+ glGetShaderiv(s, GL_COMPILE_STATUS, &ok); -+ -+ if (!ok) { -+ GLchar *info; -+ GLint size; -+ -+ glGetShaderiv(s, GL_INFO_LOG_LENGTH, &size); -+ info = malloc(size); -+ -+ glGetShaderInfoLog(s, size, NULL, info); -+ av_log(avctx, AV_LOG_ERROR, "Failed to compile shader: %ssource:\n%s\n", info, source); -+ -+ return 0; -+ } -+ } -+ -+ return s; -+} -+ -+static GLuint link_program(struct AVFormatContext * const s, GLint vs, GLint fs) -+{ -+ GLuint prog = glCreateProgram(); -+ -+ if (prog == 0) { -+ av_log(s, AV_LOG_ERROR, "Failed to create program\n"); -+ return 0; -+ } -+ -+ glAttachShader(prog, vs); -+ glAttachShader(prog, fs); -+ glLinkProgram(prog); -+ -+ { -+ GLint ok; -+ glGetProgramiv(prog, GL_LINK_STATUS, &ok); -+ if (!ok) { -+ /* Some drivers return a size of 1 for an empty log. This is the size -+ * of a log that contains only a terminating NUL character. -+ */ -+ GLint size; -+ GLchar *info = NULL; -+ glGetProgramiv(prog, GL_INFO_LOG_LENGTH, &size); -+ if (size > 1) { -+ info = malloc(size); -+ glGetProgramInfoLog(prog, size, NULL, info); -+ } -+ -+ av_log(s, AV_LOG_ERROR, "Failed to link: %s\n", -+ (info != NULL) ? info : ""); -+ return 0; -+ } -+ } -+ -+ return prog; -+} -+ -+static int -+gl_setup(struct AVFormatContext * const s) -+{ -+ const char *vs = -+ "attribute vec4 pos;\n" -+ "varying vec2 texcoord;\n" -+ "\n" -+ "void main() {\n" -+ " gl_Position = pos;\n" -+ " texcoord.x = (pos.x + 1.0) / 2.0;\n" -+ " texcoord.y = (-pos.y + 1.0) / 2.0;\n" -+ "}\n"; -+ const char *fs = -+ "#extension GL_OES_EGL_image_external : enable\n" -+ "precision mediump float;\n" -+ "uniform samplerExternalOES s;\n" -+ "varying vec2 texcoord;\n" -+ "void main() {\n" -+ " gl_FragColor = texture2D(s, texcoord);\n" -+ "}\n"; -+ -+ GLuint vs_s; -+ GLuint fs_s; -+ GLuint prog; -+ -+ if (!(vs_s = compile_shader(s, GL_VERTEX_SHADER, vs)) || -+ !(fs_s = compile_shader(s, GL_FRAGMENT_SHADER, fs)) || -+ !(prog = link_program(s, vs_s, fs_s))) -+ return -1; -+ -+ glUseProgram(prog); -+ -+ { -+ static const float verts[] = { -+ -1, -1, -+ 1, -1, -+ 1, 1, -+ -1, 1, -+ }; -+ glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, verts); -+ } -+ -+ glEnableVertexAttribArray(0); -+ return 0; -+} -+ -+static int egl_vout_write_trailer(AVFormatContext *s) -+{ -+#if TRACE_ALL -+ av_log(s, AV_LOG_INFO, "%s\n", __func__); -+#endif -+ -+ return 0; -+} -+ -+static int egl_vout_write_header(AVFormatContext *s) -+{ -+ const AVCodecParameters * const par = s->streams[0]->codecpar; -+ -+#if TRACE_ALL -+ av_log(s, AV_LOG_INFO, "%s\n", __func__); -+#endif -+ if ( s->nb_streams > 1 -+ || par->codec_type != AVMEDIA_TYPE_VIDEO -+ || par->codec_id != AV_CODEC_ID_WRAPPED_AVFRAME) { -+ av_log(s, AV_LOG_ERROR, "Only supports one wrapped avframe stream\n"); -+ return AVERROR(EINVAL); -+ } -+ -+ return 0; -+} -+ -+ -+static int do_display(AVFormatContext * const s, egl_display_env_t * const de, AVFrame * const frame) -+{ -+ const AVDRMFrameDescriptor *desc = (AVDRMFrameDescriptor*)frame->data[0]; -+ egl_aux_t * da = NULL; -+ unsigned int i; -+ -+#if TRACE_ALL -+ av_log(s, AV_LOG_INFO, "<<< %s\n", __func__); -+#endif -+ -+ for (i = 0; i != 32; ++i) { -+ if (de->aux[i].fd == -1 || de->aux[i].fd == desc->objects[0].fd) { -+ da = de->aux + i; -+ break; -+ } -+ } -+ -+ if (da == NULL) { -+ av_log(s, AV_LOG_INFO, "%s: Out of handles\n", __func__); -+ return AVERROR(EINVAL); -+ } -+ -+ if (da->texture == 0) { -+ EGLint attribs[50]; -+ EGLint * a = attribs; -+ int i, j; -+ static const EGLint anames[] = { -+ EGL_DMA_BUF_PLANE0_FD_EXT, -+ EGL_DMA_BUF_PLANE0_OFFSET_EXT, -+ EGL_DMA_BUF_PLANE0_PITCH_EXT, -+ EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT, -+ EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT, -+ EGL_DMA_BUF_PLANE1_FD_EXT, -+ EGL_DMA_BUF_PLANE1_OFFSET_EXT, -+ EGL_DMA_BUF_PLANE1_PITCH_EXT, -+ EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT, -+ EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT, -+ EGL_DMA_BUF_PLANE2_FD_EXT, -+ EGL_DMA_BUF_PLANE2_OFFSET_EXT, -+ EGL_DMA_BUF_PLANE2_PITCH_EXT, -+ EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT, -+ EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT, -+ }; -+ const EGLint * b = anames; -+ -+ *a++ = EGL_WIDTH; -+ *a++ = av_frame_cropped_width(frame); -+ *a++ = EGL_HEIGHT; -+ *a++ = av_frame_cropped_height(frame); -+ *a++ = EGL_LINUX_DRM_FOURCC_EXT; -+ *a++ = desc->layers[0].format; -+ -+ for (i = 0; i < desc->nb_layers; ++i) { -+ for (j = 0; j < desc->layers[i].nb_planes; ++j) { -+ const AVDRMPlaneDescriptor * const p = desc->layers[i].planes + j; -+ const AVDRMObjectDescriptor * const obj = desc->objects + p->object_index; -+ *a++ = *b++; -+ *a++ = obj->fd; -+ *a++ = *b++; -+ *a++ = p->offset; -+ *a++ = *b++; -+ *a++ = p->pitch; -+ if (obj->format_modifier == 0) { -+ b += 2; -+ } -+ else { -+ *a++ = *b++; -+ *a++ = (EGLint)(obj->format_modifier & 0xFFFFFFFF); -+ *a++ = *b++; -+ *a++ = (EGLint)(obj->format_modifier >> 32); -+ } -+ } -+ } -+ -+ *a = EGL_NONE; -+ -+#if TRACE_ALL -+ for (a = attribs, i = 0; *a != EGL_NONE; a += 2, ++i) { -+ av_log(s, AV_LOG_INFO, "[%2d] %4x: %d\n", i, a[0], a[1]); -+ } -+#endif -+ { -+ const EGLImage image = eglCreateImageKHR(de->setup.egl_dpy, -+ EGL_NO_CONTEXT, -+ EGL_LINUX_DMA_BUF_EXT, -+ NULL, attribs); -+ if (!image) { -+ av_log(s, AV_LOG_ERROR, "Failed to import fd %d\n", desc->objects[0].fd); -+ return -1; -+ } -+ -+ glGenTextures(1, &da->texture); -+ glBindTexture(GL_TEXTURE_EXTERNAL_OES, da->texture); -+ glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MIN_FILTER, GL_LINEAR); -+ glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MAG_FILTER, GL_LINEAR); -+ glEGLImageTargetTexture2DOES(GL_TEXTURE_EXTERNAL_OES, image); -+ -+ eglDestroyImageKHR(de->setup.egl_dpy, image); -+ } -+ -+ da->fd = desc->objects[0].fd; -+ -+#if 0 -+ av_log(s, AV_LOG_INFO, "%dx%d, fmt: %x, boh=%d,%d,%d,%d, pitch=%d,%d,%d,%d," -+ " offset=%d,%d,%d,%d, mod=%llx,%llx,%llx,%llx\n", -+ av_frame_cropped_width(frame), -+ av_frame_cropped_height(frame), -+ desc->layers[0].format, -+ bo_plane_handles[0], -+ bo_plane_handles[1], -+ bo_plane_handles[2], -+ bo_plane_handles[3], -+ pitches[0], -+ pitches[1], -+ pitches[2], -+ pitches[3], -+ offsets[0], -+ offsets[1], -+ offsets[2], -+ offsets[3], -+ (long long)modifiers[0], -+ (long long)modifiers[1], -+ (long long)modifiers[2], -+ (long long)modifiers[3] -+ ); -+#endif -+ } -+ -+ glClearColor(0.5, 0.5, 0.5, 0.5); -+ glClear(GL_COLOR_BUFFER_BIT); -+ -+ glBindTexture(GL_TEXTURE_EXTERNAL_OES, da->texture); -+ glDrawArrays(GL_TRIANGLE_FAN, 0, 4); -+ eglSwapBuffers(de->setup.egl_dpy, de->setup.surf); -+ -+ glDeleteTextures(1, &da->texture); -+ da->texture = 0; -+ da->fd = -1; -+ -+ return 0; -+} -+ -+static void * display_thread(void * v) -+{ -+ AVFormatContext * const s = v; -+ egl_display_env_t * const de = s->priv_data; -+ -+#if TRACE_ALL -+ av_log(s, AV_LOG_INFO, "<<< %s\n", __func__); -+#endif -+ { -+ EGLint egl_major, egl_minor; -+ -+ de->setup.dpy = XOpenDisplay(NULL); -+ if (!de->setup.dpy) { -+ av_log(s, AV_LOG_ERROR, "Couldn't open X display\n"); -+ goto fail; -+ } -+ -+ de->setup.egl_dpy = eglGetDisplay(de->setup.dpy); -+ if (!de->setup.egl_dpy) { -+ av_log(s, AV_LOG_ERROR, "eglGetDisplay() failed\n"); -+ goto fail; -+ } -+ -+ if (!eglInitialize(de->setup.egl_dpy, &egl_major, &egl_minor)) { -+ av_log(s, AV_LOG_ERROR, "Error: eglInitialize() failed\n"); -+ goto fail; -+ } -+ -+ av_log(s, AV_LOG_INFO, "EGL version %d.%d\n", egl_major, egl_minor); -+ -+ if (!epoxy_has_egl_extension(de->setup.egl_dpy, "EGL_KHR_image_base")) { -+ av_log(s, AV_LOG_ERROR, "Missing EGL KHR image extension\n"); -+ goto fail; -+ } -+ } -+ -+ if (!de->window_width || !de->window_height) { -+ de->window_width = 1280; -+ de->window_height = 720; -+ } -+ if (make_window(s, de, de->setup.dpy, de->setup.egl_dpy, "ffmpeg-vout", -+ &de->setup.win, &de->setup.ctx, &de->setup.surf)) { -+ av_log(s, AV_LOG_ERROR, "%s: make_window failed\n", __func__); -+ goto fail; -+ } -+ -+ if (gl_setup(s)) { -+ av_log(s, AV_LOG_ERROR, "%s: gl_setup failed\n", __func__); -+ goto fail; -+ } -+ -+#if TRACE_ALL -+ av_log(s, AV_LOG_INFO, "--- %s: Start done\n", __func__); -+#endif -+ sem_post(&de->display_start_sem); -+ -+ for (;;) { -+ AVFrame * frame; -+ -+ while (sem_wait(&de->q_sem) != 0) { -+ av_assert0(errno == EINTR); -+ } -+ -+ if (de->q_terminate) -+ break; -+ -+ pthread_mutex_lock(&de->q_lock); -+ frame = de->q_next; -+ de->q_next = NULL; -+ pthread_mutex_unlock(&de->q_lock); -+ -+ do_display(s, de, frame); -+ -+ av_frame_free(&de->q_this); -+ de->q_this = frame; -+ } -+ -+#if TRACE_ALL -+ av_log(s, AV_LOG_INFO, ">>> %s\n", __func__); -+#endif -+ -+ return NULL; -+ -+fail: -+#if TRACE_ALL -+ av_log(s, AV_LOG_INFO, ">>> %s: FAIL\n", __func__); -+#endif -+ de->q_terminate = 1; -+ sem_post(&de->display_start_sem); -+ -+ return NULL; -+} -+ -+static int egl_vout_write_packet(AVFormatContext *s, AVPacket *pkt) -+{ -+ const AVFrame * const src_frame = (AVFrame *)pkt->data; -+ AVFrame * frame; -+ egl_display_env_t * const de = s->priv_data; -+ -+#if TRACE_ALL -+ av_log(s, AV_LOG_INFO, "%s\n", __func__); -+#endif -+ -+ if (src_frame->format == AV_PIX_FMT_DRM_PRIME) { -+ frame = av_frame_alloc(); -+ av_frame_ref(frame, src_frame); -+ } -+ else if (src_frame->format == AV_PIX_FMT_VAAPI) { -+ frame = av_frame_alloc(); -+ frame->format = AV_PIX_FMT_DRM_PRIME; -+ if (av_hwframe_map(frame, src_frame, 0) != 0) -+ { -+ av_log(s, AV_LOG_WARNING, "Failed to map frame (format=%d) to DRM_PRiME\n", src_frame->format); -+ av_frame_free(&frame); -+ return AVERROR(EINVAL); -+ } -+ } -+ else { -+ av_log(s, AV_LOG_WARNING, "Frame (format=%d) not DRM_PRiME\n", src_frame->format); -+ return AVERROR(EINVAL); -+ } -+ -+ // Really hacky sync -+ while (de->show_all && de->q_next) { -+ usleep(3000); -+ } -+ -+ pthread_mutex_lock(&de->q_lock); -+ { -+ AVFrame * const t = de->q_next; -+ de->q_next = frame; -+ frame = t; -+ } -+ pthread_mutex_unlock(&de->q_lock); -+ -+ if (frame == NULL) -+ sem_post(&de->q_sem); -+ else -+ av_frame_free(&frame); -+ -+ return 0; -+} -+ -+static int egl_vout_write_frame(AVFormatContext *s, int stream_index, AVFrame **ppframe, -+ unsigned flags) -+{ -+ av_log(s, AV_LOG_ERROR, "%s: NIF: idx=%d, flags=%#x\n", __func__, stream_index, flags); -+ return AVERROR_PATCHWELCOME; -+} -+ -+static int egl_vout_control_message(AVFormatContext *s, int type, void *data, size_t data_size) -+{ -+#if TRACE_ALL -+ av_log(s, AV_LOG_INFO, "%s: %d\n", __func__, type); -+#endif -+ switch(type) { -+ case AV_APP_TO_DEV_WINDOW_REPAINT: -+ return 0; -+ default: -+ break; -+ } -+ return AVERROR(ENOSYS); -+} -+ -+// deinit is called if init fails so no need to clean up explicity here -+static int egl_vout_init(struct AVFormatContext * s) -+{ -+ egl_display_env_t * const de = s->priv_data; -+ unsigned int i; -+ -+ av_log(s, AV_LOG_DEBUG, "<<< %s\n", __func__); -+ -+ de->setup = (struct egl_setup){0}; -+ -+ for (i = 0; i != 32; ++i) { -+ de->aux[i].fd = -1; -+ } -+ -+ de->q_terminate = 0; -+ pthread_mutex_init(&de->q_lock, NULL); -+ sem_init(&de->q_sem, 0, 0); -+ sem_init(&de->display_start_sem, 0, 0); -+ av_assert0(pthread_create(&de->q_thread, NULL, display_thread, s) == 0); -+ -+ sem_wait(&de->display_start_sem); -+ if (de->q_terminate) { -+ av_log(s, AV_LOG_ERROR, "%s: Display startup failure\n", __func__); -+ return -1; -+ } -+ -+ av_log(s, AV_LOG_DEBUG, ">>> %s\n", __func__); -+ -+ return 0; -+} -+ -+static void egl_vout_deinit(struct AVFormatContext * s) -+{ -+ egl_display_env_t * const de = s->priv_data; -+ -+ av_log(s, AV_LOG_DEBUG, "<<< %s\n", __func__); -+ -+ de->q_terminate = 1; -+ sem_post(&de->q_sem); -+ pthread_join(de->q_thread, NULL); -+ sem_destroy(&de->q_sem); -+ pthread_mutex_destroy(&de->q_lock); -+ -+ av_frame_free(&de->q_next); -+ av_frame_free(&de->q_this); -+ -+ av_log(s, AV_LOG_DEBUG, ">>> %s\n", __func__); -+} -+ -+#define OFFSET(x) offsetof(egl_display_env_t, x) -+static const AVOption options[] = { -+ { "show_all", "show all frames", OFFSET(show_all), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, AV_OPT_FLAG_ENCODING_PARAM }, -+ { "window_size", "set window forced size", OFFSET(window_width), AV_OPT_TYPE_IMAGE_SIZE, {.str = NULL}, 0, 0, AV_OPT_FLAG_ENCODING_PARAM }, -+ { "window_x", "set window x offset", OFFSET(window_x), AV_OPT_TYPE_INT, {.i64 = 0 }, -INT_MAX, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM }, -+ { "window_y", "set window y offset", OFFSET(window_y), AV_OPT_TYPE_INT, {.i64 = 0 }, -INT_MAX, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM }, -+ { "fullscreen", "set fullscreen display", OFFSET(fullscreen), AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, AV_OPT_FLAG_ENCODING_PARAM }, -+ { NULL } -+ -+}; -+ -+static const AVClass egl_vout_class = { -+ .class_name = "egl vid outdev", -+ .item_name = av_default_item_name, -+ .option = options, -+ .version = LIBAVUTIL_VERSION_INT, -+ .category = AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT, -+}; -+ -+FFOutputFormat ff_vout_egl_muxer = { -+ .p = { -+ .name = "vout_egl", -+ .long_name = NULL_IF_CONFIG_SMALL("Egl video output device"), -+ .audio_codec = AV_CODEC_ID_NONE, -+ .video_codec = AV_CODEC_ID_WRAPPED_AVFRAME, -+ .flags = AVFMT_NOFILE | AVFMT_VARIABLE_FPS | AVFMT_NOTIMESTAMPS, -+ .priv_class = &egl_vout_class, -+ }, -+ .priv_data_size = sizeof(egl_display_env_t), -+ .write_header = egl_vout_write_header, -+ .write_packet = egl_vout_write_packet, -+ .write_uncoded_frame = egl_vout_write_frame, -+ .write_trailer = egl_vout_write_trailer, -+ .control_message = egl_vout_control_message, -+ .init = egl_vout_init, -+ .deinit = egl_vout_deinit, -+}; -+ - -From 867bd7c243e66a1c1756878e20df8f35db8025ec Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 28 Apr 2021 12:51:22 +0100 -Subject: [PATCH 016/151] V4L2 stateful rework - ---- - libavcodec/Makefile | 3 +- - libavcodec/v4l2_buffers.c | 556 +++++++++++++++++++++++++++----------- - libavcodec/v4l2_buffers.h | 28 +- - libavcodec/v4l2_context.c | 536 +++++++++++++++++++++++++++--------- - libavcodec/v4l2_context.h | 20 +- - libavcodec/v4l2_m2m.c | 20 +- - libavcodec/v4l2_m2m.h | 31 +++ - libavcodec/v4l2_m2m_dec.c | 446 ++++++++++++++++++++++++++---- - 8 files changed, 1286 insertions(+), 354 deletions(-) - -diff --git a/libavcodec/Makefile b/libavcodec/Makefile -index 2d440b5648..e1aa0ba014 100644 ---- a/libavcodec/Makefile -+++ b/libavcodec/Makefile -@@ -169,7 +169,8 @@ OBJS-$(CONFIG_VIDEODSP) += videodsp.o - OBJS-$(CONFIG_VP3DSP) += vp3dsp.o - OBJS-$(CONFIG_VP56DSP) += vp56dsp.o - OBJS-$(CONFIG_VP8DSP) += vp8dsp.o --OBJS-$(CONFIG_V4L2_M2M) += v4l2_m2m.o v4l2_context.o v4l2_buffers.o v4l2_fmt.o -+OBJS-$(CONFIG_V4L2_M2M) += v4l2_m2m.o v4l2_context.o v4l2_buffers.o v4l2_fmt.o\ -+ weak_link.o - OBJS-$(CONFIG_V4L2_REQUEST) += v4l2_req_media.o v4l2_req_pollqueue.o v4l2_req_dmabufs.o\ - v4l2_req_devscan.o weak_link.o - OBJS-$(CONFIG_WMA_FREQS) += wma_freqs.o -diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c -index 3f5471067a..a003934ca1 100644 ---- a/libavcodec/v4l2_buffers.c -+++ b/libavcodec/v4l2_buffers.c -@@ -21,6 +21,7 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -+#include - #include - #include - #include -@@ -29,12 +30,14 @@ - #include - #include "libavcodec/avcodec.h" - #include "libavutil/pixdesc.h" -+#include "libavutil/hwcontext.h" - #include "v4l2_context.h" - #include "v4l2_buffers.h" - #include "v4l2_m2m.h" -+#include "weak_link.h" - - #define USEC_PER_SEC 1000000 --static AVRational v4l2_timebase = { 1, USEC_PER_SEC }; -+static const AVRational v4l2_timebase = { 1, USEC_PER_SEC }; - - static inline V4L2m2mContext *buf_to_m2mctx(V4L2Buffer *buf) - { -@@ -51,34 +54,44 @@ static inline AVCodecContext *logger(V4L2Buffer *buf) - static inline AVRational v4l2_get_timebase(V4L2Buffer *avbuf) - { - V4L2m2mContext *s = buf_to_m2mctx(avbuf); -- -- if (s->avctx->pkt_timebase.num) -- return s->avctx->pkt_timebase; -- return s->avctx->time_base; -+ const AVRational tb = s->avctx->pkt_timebase.num ? -+ s->avctx->pkt_timebase : -+ s->avctx->time_base; -+ return tb.num && tb.den ? tb : v4l2_timebase; - } - --static inline void v4l2_set_pts(V4L2Buffer *out, int64_t pts) -+static inline void v4l2_set_pts(V4L2Buffer *out, int64_t pts, int no_rescale) - { -- int64_t v4l2_pts; -- -- if (pts == AV_NOPTS_VALUE) -- pts = 0; -- - /* convert pts to v4l2 timebase */ -- v4l2_pts = av_rescale_q(pts, v4l2_get_timebase(out), v4l2_timebase); -+ const int64_t v4l2_pts = -+ no_rescale ? pts : -+ pts == AV_NOPTS_VALUE ? 0 : -+ av_rescale_q(pts, v4l2_get_timebase(out), v4l2_timebase); - out->buf.timestamp.tv_usec = v4l2_pts % USEC_PER_SEC; - out->buf.timestamp.tv_sec = v4l2_pts / USEC_PER_SEC; - } - --static inline int64_t v4l2_get_pts(V4L2Buffer *avbuf) -+static inline int64_t v4l2_get_pts(V4L2Buffer *avbuf, int no_rescale) - { -- int64_t v4l2_pts; -- - /* convert pts back to encoder timebase */ -- v4l2_pts = (int64_t)avbuf->buf.timestamp.tv_sec * USEC_PER_SEC + -+ const int64_t v4l2_pts = (int64_t)avbuf->buf.timestamp.tv_sec * USEC_PER_SEC + - avbuf->buf.timestamp.tv_usec; - -- return av_rescale_q(v4l2_pts, v4l2_timebase, v4l2_get_timebase(avbuf)); -+ return -+ no_rescale ? v4l2_pts : -+ v4l2_pts == 0 ? AV_NOPTS_VALUE : -+ av_rescale_q(v4l2_pts, v4l2_timebase, v4l2_get_timebase(avbuf)); -+} -+ -+static void set_buf_length(V4L2Buffer *out, unsigned int plane, uint32_t bytesused, uint32_t length) -+{ -+ if (V4L2_TYPE_IS_MULTIPLANAR(out->buf.type)) { -+ out->planes[plane].bytesused = bytesused; -+ out->planes[plane].length = length; -+ } else { -+ out->buf.bytesused = bytesused; -+ out->buf.length = length; -+ } - } - - static enum AVColorPrimaries v4l2_get_color_primaries(V4L2Buffer *buf) -@@ -209,68 +222,143 @@ static enum AVColorTransferCharacteristic v4l2_get_color_trc(V4L2Buffer *buf) - return AVCOL_TRC_UNSPECIFIED; - } - --static void v4l2_free_buffer(void *opaque, uint8_t *unused) -+static uint8_t * v4l2_get_drm_frame(V4L2Buffer *avbuf) - { -- V4L2Buffer* avbuf = opaque; -- V4L2m2mContext *s = buf_to_m2mctx(avbuf); -+ AVDRMFrameDescriptor *drm_desc = &avbuf->drm_frame; -+ AVDRMLayerDescriptor *layer; - -- if (atomic_fetch_sub(&avbuf->context_refcount, 1) == 1) { -- atomic_fetch_sub_explicit(&s->refcount, 1, memory_order_acq_rel); -+ /* fill the DRM frame descriptor */ -+ drm_desc->nb_objects = avbuf->num_planes; -+ drm_desc->nb_layers = 1; - -- if (s->reinit) { -- if (!atomic_load(&s->refcount)) -- sem_post(&s->refsync); -- } else { -- if (s->draining && V4L2_TYPE_IS_OUTPUT(avbuf->context->type)) { -- /* no need to queue more buffers to the driver */ -- avbuf->status = V4L2BUF_AVAILABLE; -- } -- else if (avbuf->context->streamon) -- ff_v4l2_buffer_enqueue(avbuf); -- } -+ layer = &drm_desc->layers[0]; -+ layer->nb_planes = avbuf->num_planes; -+ -+ for (int i = 0; i < avbuf->num_planes; i++) { -+ layer->planes[i].object_index = i; -+ layer->planes[i].offset = 0; -+ layer->planes[i].pitch = avbuf->plane_info[i].bytesperline; -+ } -+ -+ switch (avbuf->context->av_pix_fmt) { -+ case AV_PIX_FMT_YUYV422: -+ -+ layer->format = DRM_FORMAT_YUYV; -+ layer->nb_planes = 1; -+ -+ break; -+ -+ case AV_PIX_FMT_NV12: -+ case AV_PIX_FMT_NV21: -+ -+ layer->format = avbuf->context->av_pix_fmt == AV_PIX_FMT_NV12 ? -+ DRM_FORMAT_NV12 : DRM_FORMAT_NV21; -+ -+ if (avbuf->num_planes > 1) -+ break; -+ -+ layer->nb_planes = 2; -+ -+ layer->planes[1].object_index = 0; -+ layer->planes[1].offset = avbuf->plane_info[0].bytesperline * -+ avbuf->context->format.fmt.pix.height; -+ layer->planes[1].pitch = avbuf->plane_info[0].bytesperline; -+ break; -+ -+ case AV_PIX_FMT_YUV420P: -+ -+ layer->format = DRM_FORMAT_YUV420; -+ -+ if (avbuf->num_planes > 1) -+ break; -+ -+ layer->nb_planes = 3; -+ -+ layer->planes[1].object_index = 0; -+ layer->planes[1].offset = avbuf->plane_info[0].bytesperline * -+ avbuf->context->format.fmt.pix.height; -+ layer->planes[1].pitch = avbuf->plane_info[0].bytesperline >> 1; -+ -+ layer->planes[2].object_index = 0; -+ layer->planes[2].offset = layer->planes[1].offset + -+ ((avbuf->plane_info[0].bytesperline * -+ avbuf->context->format.fmt.pix.height) >> 2); -+ layer->planes[2].pitch = avbuf->plane_info[0].bytesperline >> 1; -+ break; - -- av_buffer_unref(&avbuf->context_ref); -+ default: -+ drm_desc->nb_layers = 0; -+ break; - } -+ -+ return (uint8_t *) drm_desc; - } - --static int v4l2_buf_increase_ref(V4L2Buffer *in) -+static void v4l2_free_bufref(void *opaque, uint8_t *data) - { -- V4L2m2mContext *s = buf_to_m2mctx(in); -+ AVBufferRef * bufref = (AVBufferRef *)data; -+ V4L2Buffer *avbuf = (V4L2Buffer *)bufref->data; -+ struct V4L2Context *ctx = ff_weak_link_lock(&avbuf->context_wl); - -- if (in->context_ref) -- atomic_fetch_add(&in->context_refcount, 1); -- else { -- in->context_ref = av_buffer_ref(s->self_ref); -- if (!in->context_ref) -- return AVERROR(ENOMEM); -+ if (ctx != NULL) { -+ // Buffer still attached to context -+ V4L2m2mContext *s = buf_to_m2mctx(avbuf); - -- in->context_refcount = 1; -- } -+ ff_mutex_lock(&ctx->lock); - -- in->status = V4L2BUF_RET_USER; -- atomic_fetch_add_explicit(&s->refcount, 1, memory_order_relaxed); -+ avbuf->status = V4L2BUF_AVAILABLE; - -- return 0; -+ if (s->draining && V4L2_TYPE_IS_OUTPUT(ctx->type)) { -+ av_log(logger(avbuf), AV_LOG_DEBUG, "%s: Buffer avail\n", ctx->name); -+ /* no need to queue more buffers to the driver */ -+ } -+ else if (ctx->streamon) { -+ av_log(logger(avbuf), AV_LOG_DEBUG, "%s: Buffer requeue\n", ctx->name); -+ avbuf->buf.timestamp.tv_sec = 0; -+ avbuf->buf.timestamp.tv_usec = 0; -+ ff_v4l2_buffer_enqueue(avbuf); // will set to IN_DRIVER -+ } -+ else { -+ av_log(logger(avbuf), AV_LOG_DEBUG, "%s: Buffer freed but streamoff\n", ctx->name); -+ } -+ -+ ff_mutex_unlock(&ctx->lock); -+ } -+ -+ ff_weak_link_unlock(avbuf->context_wl); -+ av_buffer_unref(&bufref); - } - --static int v4l2_buf_to_bufref(V4L2Buffer *in, int plane, AVBufferRef **buf) -+static int v4l2_buffer_export_drm(V4L2Buffer* avbuf) - { -- int ret; -+ struct v4l2_exportbuffer expbuf; -+ int i, ret; - -- if (plane >= in->num_planes) -- return AVERROR(EINVAL); -+ for (i = 0; i < avbuf->num_planes; i++) { -+ memset(&expbuf, 0, sizeof(expbuf)); - -- /* even though most encoders return 0 in data_offset encoding vp8 does require this value */ -- *buf = av_buffer_create((char *)in->plane_info[plane].mm_addr + in->planes[plane].data_offset, -- in->plane_info[plane].length, v4l2_free_buffer, in, 0); -- if (!*buf) -- return AVERROR(ENOMEM); -+ expbuf.index = avbuf->buf.index; -+ expbuf.type = avbuf->buf.type; -+ expbuf.plane = i; - -- ret = v4l2_buf_increase_ref(in); -- if (ret) -- av_buffer_unref(buf); -+ ret = ioctl(buf_to_m2mctx(avbuf)->fd, VIDIOC_EXPBUF, &expbuf); -+ if (ret < 0) -+ return AVERROR(errno); - -- return ret; -+ if (V4L2_TYPE_IS_MULTIPLANAR(avbuf->buf.type)) { -+ /* drm frame */ -+ avbuf->drm_frame.objects[i].size = avbuf->buf.m.planes[i].length; -+ avbuf->drm_frame.objects[i].fd = expbuf.fd; -+ avbuf->drm_frame.objects[i].format_modifier = DRM_FORMAT_MOD_LINEAR; -+ } else { -+ /* drm frame */ -+ avbuf->drm_frame.objects[0].size = avbuf->buf.length; -+ avbuf->drm_frame.objects[0].fd = expbuf.fd; -+ avbuf->drm_frame.objects[0].format_modifier = DRM_FORMAT_MOD_LINEAR; -+ } -+ } -+ -+ return 0; - } - - static int v4l2_bufref_to_buf(V4L2Buffer *out, int plane, const uint8_t* data, int size, int offset) -@@ -285,30 +373,50 @@ static int v4l2_bufref_to_buf(V4L2Buffer *out, int plane, const uint8_t* data, i - - memcpy((uint8_t*)out->plane_info[plane].mm_addr+offset, data, FFMIN(size, length-offset)); - -- if (V4L2_TYPE_IS_MULTIPLANAR(out->buf.type)) { -- out->planes[plane].bytesused = bytesused; -- out->planes[plane].length = length; -- } else { -- out->buf.bytesused = bytesused; -- out->buf.length = length; -- } -+ set_buf_length(out, plane, bytesused, length); - - return 0; - } - -+static AVBufferRef * wrap_avbuf(V4L2Buffer * const avbuf) -+{ -+ AVBufferRef * bufref = av_buffer_ref(avbuf->context->bufrefs[avbuf->buf.index]); -+ AVBufferRef * newbuf; -+ -+ if (!bufref) -+ return NULL; -+ -+ newbuf = av_buffer_create((uint8_t *)bufref, sizeof(*bufref), v4l2_free_bufref, NULL, 0); -+ if (newbuf == NULL) -+ av_buffer_unref(&bufref); -+ -+ avbuf->status = V4L2BUF_RET_USER; -+ return newbuf; -+} -+ - static int v4l2_buffer_buf_to_swframe(AVFrame *frame, V4L2Buffer *avbuf) - { -- int i, ret; -+ int i; - - frame->format = avbuf->context->av_pix_fmt; - -- for (i = 0; i < avbuf->num_planes; i++) { -- ret = v4l2_buf_to_bufref(avbuf, i, &frame->buf[i]); -- if (ret) -- return ret; -+ frame->buf[0] = wrap_avbuf(avbuf); -+ if (frame->buf[0] == NULL) -+ return AVERROR(ENOMEM); -+ -+ if (buf_to_m2mctx(avbuf)->output_drm) { -+ /* 1. get references to the actual data */ -+ frame->data[0] = (uint8_t *) v4l2_get_drm_frame(avbuf); -+ frame->format = AV_PIX_FMT_DRM_PRIME; -+ frame->hw_frames_ctx = av_buffer_ref(avbuf->context->frames_ref); -+ return 0; -+ } -+ - -+ /* 1. get references to the actual data */ -+ for (i = 0; i < avbuf->num_planes; i++) { -+ frame->data[i] = (uint8_t *)avbuf->plane_info[i].mm_addr + avbuf->planes[i].data_offset; - frame->linesize[i] = avbuf->plane_info[i].bytesperline; -- frame->data[i] = frame->buf[i]->data; - } - - /* fixup special cases */ -@@ -337,68 +445,95 @@ static int v4l2_buffer_buf_to_swframe(AVFrame *frame, V4L2Buffer *avbuf) - return 0; - } - -+static void cpy_2d(uint8_t * dst, int dst_stride, const uint8_t * src, int src_stride, int w, int h) -+{ -+ if (dst_stride == src_stride && w + 32 >= dst_stride) { -+ memcpy(dst, src, dst_stride * h); -+ } -+ else { -+ while (--h >= 0) { -+ memcpy(dst, src, w); -+ dst += dst_stride; -+ src += src_stride; -+ } -+ } -+} -+ -+static int is_chroma(const AVPixFmtDescriptor *desc, int i, int num_planes) -+{ -+ return i != 0 && !(i == num_planes - 1 && (desc->flags & AV_PIX_FMT_FLAG_ALPHA)); -+} -+ - static int v4l2_buffer_swframe_to_buf(const AVFrame *frame, V4L2Buffer *out) - { -- int i, ret; -- struct v4l2_format fmt = out->context->format; -- int pixel_format = V4L2_TYPE_IS_MULTIPLANAR(fmt.type) ? -- fmt.fmt.pix_mp.pixelformat : fmt.fmt.pix.pixelformat; -- int height = V4L2_TYPE_IS_MULTIPLANAR(fmt.type) ? -- fmt.fmt.pix_mp.height : fmt.fmt.pix.height; -- int is_planar_format = 0; -- -- switch (pixel_format) { -- case V4L2_PIX_FMT_YUV420M: -- case V4L2_PIX_FMT_YVU420M: --#ifdef V4L2_PIX_FMT_YUV422M -- case V4L2_PIX_FMT_YUV422M: --#endif --#ifdef V4L2_PIX_FMT_YVU422M -- case V4L2_PIX_FMT_YVU422M: --#endif --#ifdef V4L2_PIX_FMT_YUV444M -- case V4L2_PIX_FMT_YUV444M: --#endif --#ifdef V4L2_PIX_FMT_YVU444M -- case V4L2_PIX_FMT_YVU444M: --#endif -- case V4L2_PIX_FMT_NV12M: -- case V4L2_PIX_FMT_NV21M: -- case V4L2_PIX_FMT_NV12MT_16X16: -- case V4L2_PIX_FMT_NV12MT: -- case V4L2_PIX_FMT_NV16M: -- case V4L2_PIX_FMT_NV61M: -- is_planar_format = 1; -- } -- -- if (!is_planar_format) { -- const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(frame->format); -- int planes_nb = 0; -- int offset = 0; -- -- for (i = 0; i < desc->nb_components; i++) -- planes_nb = FFMAX(planes_nb, desc->comp[i].plane + 1); -- -- for (i = 0; i < planes_nb; i++) { -- int size, h = height; -- if (i == 1 || i == 2) { -+ int i; -+ int num_planes = 0; -+ int pel_strides[4] = {0}; -+ -+ const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(frame->format); -+ -+ if ((desc->flags & AV_PIX_FMT_FLAG_HWACCEL) != 0) { -+ av_log(NULL, AV_LOG_ERROR, "%s: HWACCEL cannot be copied\n", __func__); -+ return -1; -+ } -+ -+ for (i = 0; i != desc->nb_components; ++i) { -+ if (desc->comp[i].plane >= num_planes) -+ num_planes = desc->comp[i].plane + 1; -+ pel_strides[desc->comp[i].plane] = desc->comp[i].step; -+ } -+ -+ if (out->num_planes > 1) { -+ if (num_planes != out->num_planes) { -+ av_log(NULL, AV_LOG_ERROR, "%s: Num planes mismatch: %d != %d\n", __func__, num_planes, out->num_planes); -+ return -1; -+ } -+ for (i = 0; i != num_planes; ++i) { -+ int w = frame->width; -+ int h = frame->height; -+ if (is_chroma(desc, i, num_planes)) { -+ w = AV_CEIL_RSHIFT(w, desc->log2_chroma_w); - h = AV_CEIL_RSHIFT(h, desc->log2_chroma_h); - } -- size = frame->linesize[i] * h; -- ret = v4l2_bufref_to_buf(out, 0, frame->data[i], size, offset); -- if (ret) -- return ret; -- offset += size; -+ -+ cpy_2d(out->plane_info[i].mm_addr, out->plane_info[i].bytesperline, -+ frame->data[i], frame->linesize[i], -+ w * pel_strides[i], h); -+ set_buf_length(out, i, out->plane_info[i].bytesperline * h, out->plane_info[i].length); - } -- return 0; - } -+ else -+ { -+ unsigned int offset = 0; -+ -+ for (i = 0; i != num_planes; ++i) { -+ int w = frame->width; -+ int h = frame->height; -+ int dst_stride = out->plane_info[0].bytesperline; -+ uint8_t * const dst = (uint8_t *)out->plane_info[0].mm_addr + offset; -+ -+ if (is_chroma(desc, i, num_planes)) { -+ // Is chroma -+ dst_stride >>= desc->log2_chroma_w; -+ offset += dst_stride * (out->context->height >> desc->log2_chroma_h); -+ w = AV_CEIL_RSHIFT(w, desc->log2_chroma_w); -+ h = AV_CEIL_RSHIFT(h, desc->log2_chroma_h); -+ } -+ else { -+ // Is luma or alpha -+ offset += dst_stride * out->context->height; -+ } -+ if (offset > out->plane_info[0].length) { -+ av_log(NULL, AV_LOG_ERROR, "%s: Plane total %d > buffer size %d\n", __func__, offset, out->plane_info[0].length); -+ return -1; -+ } - -- for (i = 0; i < out->num_planes; i++) { -- ret = v4l2_bufref_to_buf(out, i, frame->buf[i]->data, frame->buf[i]->size, 0); -- if (ret) -- return ret; -+ cpy_2d(dst, dst_stride, -+ frame->data[i], frame->linesize[i], -+ w * pel_strides[i], h); -+ } -+ set_buf_length(out, 0, offset, out->plane_info[0].length); - } -- - return 0; - } - -@@ -410,14 +545,15 @@ static int v4l2_buffer_swframe_to_buf(const AVFrame *frame, V4L2Buffer *out) - - int ff_v4l2_buffer_avframe_to_buf(const AVFrame *frame, V4L2Buffer *out) - { -- v4l2_set_pts(out, frame->pts); -+ v4l2_set_pts(out, frame->pts, 0); - - return v4l2_buffer_swframe_to_buf(frame, out); - } - --int ff_v4l2_buffer_buf_to_avframe(AVFrame *frame, V4L2Buffer *avbuf) -+int ff_v4l2_buffer_buf_to_avframe(AVFrame *frame, V4L2Buffer *avbuf, int no_rescale_pts) - { - int ret; -+ V4L2Context * const ctx = avbuf->context; - - av_frame_unref(frame); - -@@ -432,13 +568,22 @@ int ff_v4l2_buffer_buf_to_avframe(AVFrame *frame, V4L2Buffer *avbuf) - frame->colorspace = v4l2_get_color_space(avbuf); - frame->color_range = v4l2_get_color_range(avbuf); - frame->color_trc = v4l2_get_color_trc(avbuf); -- frame->pts = v4l2_get_pts(avbuf); -+ frame->pts = v4l2_get_pts(avbuf, no_rescale_pts); - frame->pkt_dts = AV_NOPTS_VALUE; - - /* these values are updated also during re-init in v4l2_process_driver_event */ -- frame->height = avbuf->context->height; -- frame->width = avbuf->context->width; -- frame->sample_aspect_ratio = avbuf->context->sample_aspect_ratio; -+ frame->height = ctx->height; -+ frame->width = ctx->width; -+ frame->sample_aspect_ratio = ctx->sample_aspect_ratio; -+ -+ if (ctx->selection.height && ctx->selection.width) { -+ frame->crop_left = ctx->selection.left < frame->width ? ctx->selection.left : 0; -+ frame->crop_top = ctx->selection.top < frame->height ? ctx->selection.top : 0; -+ frame->crop_right = ctx->selection.left + ctx->selection.width < frame->width ? -+ frame->width - (ctx->selection.left + ctx->selection.width) : 0; -+ frame->crop_bottom = ctx->selection.top + ctx->selection.height < frame->height ? -+ frame->height - (ctx->selection.top + ctx->selection.height) : 0; -+ } - - /* 3. report errors upstream */ - if (avbuf->buf.flags & V4L2_BUF_FLAG_ERROR) { -@@ -451,15 +596,14 @@ int ff_v4l2_buffer_buf_to_avframe(AVFrame *frame, V4L2Buffer *avbuf) - - int ff_v4l2_buffer_buf_to_avpkt(AVPacket *pkt, V4L2Buffer *avbuf) - { -- int ret; -- - av_packet_unref(pkt); -- ret = v4l2_buf_to_bufref(avbuf, 0, &pkt->buf); -- if (ret) -- return ret; -+ -+ pkt->buf = wrap_avbuf(avbuf); -+ if (pkt->buf == NULL) -+ return AVERROR(ENOMEM); - - pkt->size = V4L2_TYPE_IS_MULTIPLANAR(avbuf->buf.type) ? avbuf->buf.m.planes[0].bytesused : avbuf->buf.bytesused; -- pkt->data = pkt->buf->data; -+ pkt->data = (uint8_t*)avbuf->plane_info[0].mm_addr + avbuf->planes[0].data_offset; - - if (avbuf->buf.flags & V4L2_BUF_FLAG_KEYFRAME) - pkt->flags |= AV_PKT_FLAG_KEY; -@@ -469,20 +613,27 @@ int ff_v4l2_buffer_buf_to_avpkt(AVPacket *pkt, V4L2Buffer *avbuf) - pkt->flags |= AV_PKT_FLAG_CORRUPT; - } - -- pkt->dts = pkt->pts = v4l2_get_pts(avbuf); -+ pkt->dts = pkt->pts = v4l2_get_pts(avbuf, 0); - - return 0; - } - --int ff_v4l2_buffer_avpkt_to_buf(const AVPacket *pkt, V4L2Buffer *out) -+int ff_v4l2_buffer_avpkt_to_buf_ext(const AVPacket *pkt, V4L2Buffer *out, -+ const void *extdata, size_t extlen, int no_rescale_pts) - { - int ret; - -- ret = v4l2_bufref_to_buf(out, 0, pkt->data, pkt->size, 0); -+ if (extlen) { -+ ret = v4l2_bufref_to_buf(out, 0, extdata, extlen, 0); -+ if (ret) -+ return ret; -+ } -+ -+ ret = v4l2_bufref_to_buf(out, 0, pkt->data, pkt->size, extlen); - if (ret) - return ret; - -- v4l2_set_pts(out, pkt->pts); -+ v4l2_set_pts(out, pkt->pts, no_rescale_pts); - - if (pkt->flags & AV_PKT_FLAG_KEY) - out->flags = V4L2_BUF_FLAG_KEYFRAME; -@@ -490,15 +641,61 @@ int ff_v4l2_buffer_avpkt_to_buf(const AVPacket *pkt, V4L2Buffer *out) - return 0; - } - --int ff_v4l2_buffer_initialize(V4L2Buffer* avbuf, int index) -+int ff_v4l2_buffer_avpkt_to_buf(const AVPacket *pkt, V4L2Buffer *out) -+{ -+ return ff_v4l2_buffer_avpkt_to_buf_ext(pkt, out, NULL, 0, 0); -+} -+ -+ -+static void v4l2_buffer_buffer_free(void *opaque, uint8_t *data) -+{ -+ V4L2Buffer * const avbuf = (V4L2Buffer *)data; -+ int i; -+ -+ for (i = 0; i != FF_ARRAY_ELEMS(avbuf->plane_info); ++i) { -+ struct V4L2Plane_info *p = avbuf->plane_info + i; -+ if (p->mm_addr != NULL) -+ munmap(p->mm_addr, p->length); -+ } -+ -+ for (i = 0; i != FF_ARRAY_ELEMS(avbuf->drm_frame.objects); ++i) { -+ if (avbuf->drm_frame.objects[i].fd != -1) -+ close(avbuf->drm_frame.objects[i].fd); -+ } -+ -+ ff_weak_link_unref(&avbuf->context_wl); -+ -+ av_free(avbuf); -+} -+ -+ -+int ff_v4l2_buffer_initialize(AVBufferRef ** pbufref, int index, V4L2Context *ctx) - { -- V4L2Context *ctx = avbuf->context; - int ret, i; -+ V4L2Buffer * const avbuf = av_mallocz(sizeof(*avbuf)); -+ AVBufferRef * bufref; -+ -+ *pbufref = NULL; -+ if (avbuf == NULL) -+ return AVERROR(ENOMEM); -+ -+ bufref = av_buffer_create((uint8_t*)avbuf, sizeof(*avbuf), v4l2_buffer_buffer_free, NULL, 0); -+ if (bufref == NULL) { -+ av_free(avbuf); -+ return AVERROR(ENOMEM); -+ } - -+ avbuf->context = ctx; - avbuf->buf.memory = V4L2_MEMORY_MMAP; - avbuf->buf.type = ctx->type; - avbuf->buf.index = index; - -+ for (i = 0; i != FF_ARRAY_ELEMS(avbuf->drm_frame.objects); ++i) { -+ avbuf->drm_frame.objects[i].fd = -1; -+ } -+ -+ avbuf->context_wl = ff_weak_link_ref(ctx->wl_master); -+ - if (V4L2_TYPE_IS_MULTIPLANAR(ctx->type)) { - avbuf->buf.length = VIDEO_MAX_PLANES; - avbuf->buf.m.planes = avbuf->planes; -@@ -506,7 +703,7 @@ int ff_v4l2_buffer_initialize(V4L2Buffer* avbuf, int index) - - ret = ioctl(buf_to_m2mctx(avbuf)->fd, VIDIOC_QUERYBUF, &avbuf->buf); - if (ret < 0) -- return AVERROR(errno); -+ goto fail; - - if (V4L2_TYPE_IS_MULTIPLANAR(ctx->type)) { - avbuf->num_planes = 0; -@@ -526,25 +723,33 @@ int ff_v4l2_buffer_initialize(V4L2Buffer* avbuf, int index) - - if (V4L2_TYPE_IS_MULTIPLANAR(ctx->type)) { - avbuf->plane_info[i].length = avbuf->buf.m.planes[i].length; -- avbuf->plane_info[i].mm_addr = mmap(NULL, avbuf->buf.m.planes[i].length, -- PROT_READ | PROT_WRITE, MAP_SHARED, -- buf_to_m2mctx(avbuf)->fd, avbuf->buf.m.planes[i].m.mem_offset); -+ -+ if ((V4L2_TYPE_IS_OUTPUT(ctx->type) && buf_to_m2mctx(avbuf)->output_drm) || -+ !buf_to_m2mctx(avbuf)->output_drm) { -+ avbuf->plane_info[i].mm_addr = mmap(NULL, avbuf->buf.m.planes[i].length, -+ PROT_READ | PROT_WRITE, MAP_SHARED, -+ buf_to_m2mctx(avbuf)->fd, avbuf->buf.m.planes[i].m.mem_offset); -+ } - } else { - avbuf->plane_info[i].length = avbuf->buf.length; -- avbuf->plane_info[i].mm_addr = mmap(NULL, avbuf->buf.length, -- PROT_READ | PROT_WRITE, MAP_SHARED, -- buf_to_m2mctx(avbuf)->fd, avbuf->buf.m.offset); -+ -+ if ((V4L2_TYPE_IS_OUTPUT(ctx->type) && buf_to_m2mctx(avbuf)->output_drm) || -+ !buf_to_m2mctx(avbuf)->output_drm) { -+ avbuf->plane_info[i].mm_addr = mmap(NULL, avbuf->buf.length, -+ PROT_READ | PROT_WRITE, MAP_SHARED, -+ buf_to_m2mctx(avbuf)->fd, avbuf->buf.m.offset); -+ } - } - -- if (avbuf->plane_info[i].mm_addr == MAP_FAILED) -- return AVERROR(ENOMEM); -+ if (avbuf->plane_info[i].mm_addr == MAP_FAILED) { -+ avbuf->plane_info[i].mm_addr = NULL; -+ ret = AVERROR(ENOMEM); -+ goto fail; -+ } - } - - avbuf->status = V4L2BUF_AVAILABLE; - -- if (V4L2_TYPE_IS_OUTPUT(ctx->type)) -- return 0; -- - if (V4L2_TYPE_IS_MULTIPLANAR(ctx->type)) { - avbuf->buf.m.planes = avbuf->planes; - avbuf->buf.length = avbuf->num_planes; -@@ -554,7 +759,20 @@ int ff_v4l2_buffer_initialize(V4L2Buffer* avbuf, int index) - avbuf->buf.length = avbuf->planes[0].length; - } - -- return ff_v4l2_buffer_enqueue(avbuf); -+ if (!V4L2_TYPE_IS_OUTPUT(ctx->type)) { -+ if (buf_to_m2mctx(avbuf)->output_drm) { -+ ret = v4l2_buffer_export_drm(avbuf); -+ if (ret) -+ goto fail; -+ } -+ } -+ -+ *pbufref = bufref; -+ return 0; -+ -+fail: -+ av_buffer_unref(&bufref); -+ return ret; - } - - int ff_v4l2_buffer_enqueue(V4L2Buffer* avbuf) -@@ -563,9 +781,27 @@ int ff_v4l2_buffer_enqueue(V4L2Buffer* avbuf) - - avbuf->buf.flags = avbuf->flags; - -+ if (avbuf->buf.timestamp.tv_sec || avbuf->buf.timestamp.tv_usec) { -+ av_log(logger(avbuf), AV_LOG_DEBUG, "--- %s pre VIDIOC_QBUF: index %d, ts=%ld.%06ld count=%d\n", -+ avbuf->context->name, avbuf->buf.index, -+ avbuf->buf.timestamp.tv_sec, avbuf->buf.timestamp.tv_usec, -+ avbuf->context->q_count); -+ } -+ - ret = ioctl(buf_to_m2mctx(avbuf)->fd, VIDIOC_QBUF, &avbuf->buf); -- if (ret < 0) -- return AVERROR(errno); -+ if (ret < 0) { -+ int err = errno; -+ av_log(logger(avbuf), AV_LOG_ERROR, "--- %s VIDIOC_QBUF: index %d FAIL err %d (%s)\n", -+ avbuf->context->name, avbuf->buf.index, -+ err, strerror(err)); -+ return AVERROR(err); -+ } -+ -+ ++avbuf->context->q_count; -+ av_log(logger(avbuf), AV_LOG_DEBUG, "--- %s VIDIOC_QBUF: index %d, ts=%ld.%06ld count=%d\n", -+ avbuf->context->name, avbuf->buf.index, -+ avbuf->buf.timestamp.tv_sec, avbuf->buf.timestamp.tv_usec, -+ avbuf->context->q_count); - - avbuf->status = V4L2BUF_IN_DRIVER; - -diff --git a/libavcodec/v4l2_buffers.h b/libavcodec/v4l2_buffers.h -index 3d2ff1b9a5..111526aee3 100644 ---- a/libavcodec/v4l2_buffers.h -+++ b/libavcodec/v4l2_buffers.h -@@ -28,27 +28,37 @@ - #include - #include - -+#include "avcodec.h" - #include "libavutil/buffer.h" - #include "libavutil/frame.h" -+#include "libavutil/hwcontext_drm.h" - #include "packet.h" - - enum V4L2Buffer_status { - V4L2BUF_AVAILABLE, - V4L2BUF_IN_DRIVER, -+ V4L2BUF_IN_USE, - V4L2BUF_RET_USER, - }; - - /** - * V4L2Buffer (wrapper for v4l2_buffer management) - */ -+struct V4L2Context; -+struct ff_weak_link_client; -+ - typedef struct V4L2Buffer { -- /* each buffer needs to have a reference to its context */ -+ /* each buffer needs to have a reference to its context -+ * The pointer is good enough for most operation but once the buffer has -+ * been passed to the user the buffer may become orphaned so for free ops -+ * the weak link must be used to ensure that the context is actually -+ * there -+ */ - struct V4L2Context *context; -+ struct ff_weak_link_client *context_wl; - -- /* This object is refcounted per-plane, so we need to keep track -- * of how many context-refs we are holding. */ -- AVBufferRef *context_ref; -- atomic_uint context_refcount; -+ /* DRM descriptor */ -+ AVDRMFrameDescriptor drm_frame; - - /* keep track of the mmap address and mmap length */ - struct V4L2Plane_info { -@@ -73,11 +83,12 @@ typedef struct V4L2Buffer { - * - * @param[in] frame The AVFRame to push the information to - * @param[in] buf The V4L2Buffer to get the information from -+ * @param[in] no_rescale_pts If non-zero do not rescale PTS - * - * @returns 0 in case of success, AVERROR(EINVAL) if the number of planes is incorrect, - * AVERROR(ENOMEM) if the AVBufferRef can't be created. - */ --int ff_v4l2_buffer_buf_to_avframe(AVFrame *frame, V4L2Buffer *buf); -+int ff_v4l2_buffer_buf_to_avframe(AVFrame *frame, V4L2Buffer *buf, int no_rescale_pts); - - /** - * Extracts the data from a V4L2Buffer to an AVPacket -@@ -101,6 +112,9 @@ int ff_v4l2_buffer_buf_to_avpkt(AVPacket *pkt, V4L2Buffer *buf); - */ - int ff_v4l2_buffer_avpkt_to_buf(const AVPacket *pkt, V4L2Buffer *out); - -+int ff_v4l2_buffer_avpkt_to_buf_ext(const AVPacket *pkt, V4L2Buffer *out, -+ const void *extdata, size_t extlen, int no_rescale_pts); -+ - /** - * Extracts the data from an AVFrame to a V4L2Buffer - * -@@ -119,7 +133,7 @@ int ff_v4l2_buffer_avframe_to_buf(const AVFrame *frame, V4L2Buffer *out); - * - * @returns 0 in case of success, a negative AVERROR code otherwise - */ --int ff_v4l2_buffer_initialize(V4L2Buffer* avbuf, int index); -+int ff_v4l2_buffer_initialize(AVBufferRef **avbuf, int index, struct V4L2Context *ctx); - - /** - * Enqueues a V4L2Buffer -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index a40be94690..be76068af3 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -27,11 +27,13 @@ - #include - #include - #include -+#include "libavutil/avassert.h" - #include "libavcodec/avcodec.h" - #include "decode.h" - #include "v4l2_buffers.h" - #include "v4l2_fmt.h" - #include "v4l2_m2m.h" -+#include "weak_link.h" - - struct v4l2_format_update { - uint32_t v4l2_fmt; -@@ -153,21 +155,99 @@ static inline void v4l2_save_to_context(V4L2Context* ctx, struct v4l2_format_upd - } - } - --static int v4l2_start_decode(V4L2Context *ctx) -+static int get_default_selection(V4L2Context * const ctx, struct v4l2_rect *r) - { -- struct v4l2_decoder_cmd cmd = { -- .cmd = V4L2_DEC_CMD_START, -- .flags = 0, -+ V4L2m2mContext * const s = ctx_to_m2mctx(ctx); -+ struct v4l2_selection selection = { -+ .type = V4L2_BUF_TYPE_VIDEO_CAPTURE, -+ .target = V4L2_SEL_TGT_COMPOSE - }; -- int ret; - -- ret = ioctl(ctx_to_m2mctx(ctx)->fd, VIDIOC_DECODER_CMD, &cmd); -- if (ret) -+ memset(r, 0, sizeof(*r)); -+ if (ioctl(s->fd, VIDIOC_G_SELECTION, &selection)) - return AVERROR(errno); - -+ *r = selection.r; - return 0; - } - -+static int do_source_change(V4L2m2mContext * const s) -+{ -+ AVCodecContext *const avctx = s->avctx; -+ -+ int ret; -+ int reinit; -+ int full_reinit; -+ struct v4l2_format cap_fmt = s->capture.format; -+ -+ s->resize_pending = 0; -+ s->capture.done = 0; -+ -+ ret = ioctl(s->fd, VIDIOC_G_FMT, &cap_fmt); -+ if (ret) { -+ av_log(avctx, AV_LOG_ERROR, "%s VIDIOC_G_FMT failed\n", s->capture.name); -+ return 0; -+ } -+ -+ s->output.sample_aspect_ratio = v4l2_get_sar(&s->output); -+ -+ get_default_selection(&s->capture, &s->capture.selection); -+ -+ reinit = v4l2_resolution_changed(&s->capture, &cap_fmt); -+ if (reinit) { -+ s->capture.height = v4l2_get_height(&cap_fmt); -+ s->capture.width = v4l2_get_width(&cap_fmt); -+ } -+ s->capture.sample_aspect_ratio = v4l2_get_sar(&s->capture); -+ -+ av_log(avctx, AV_LOG_DEBUG, "Source change: SAR: %d/%d, crop %dx%d @ %d,%d\n", -+ s->capture.sample_aspect_ratio.num, s->capture.sample_aspect_ratio.den, -+ s->capture.selection.width, s->capture.selection.height, -+ s->capture.selection.left, s->capture.selection.top); -+ -+ s->reinit = 1; -+ -+ if (reinit) { -+ if (avctx) -+ ret = ff_set_dimensions(s->avctx, s->capture.width, s->capture.height); -+ if (ret < 0) -+ av_log(avctx, AV_LOG_WARNING, "update avcodec height and width failed\n"); -+ -+ ret = ff_v4l2_m2m_codec_reinit(s); -+ if (ret) { -+ av_log(avctx, AV_LOG_ERROR, "v4l2_m2m_codec_reinit failed\n"); -+ return AVERROR(EINVAL); -+ } -+ goto reinit_run; -+ } -+ -+ /* Buffers are OK so just stream off to ack */ -+ av_log(avctx, AV_LOG_DEBUG, "%s: Parameters only\n", __func__); -+ -+ ret = ff_v4l2_context_set_status(&s->capture, VIDIOC_STREAMOFF); -+ if (ret) -+ av_log(avctx, AV_LOG_ERROR, "capture VIDIOC_STREAMOFF failed\n"); -+ s->draining = 0; -+ -+ /* reinit executed */ -+reinit_run: -+ ret = ff_v4l2_context_set_status(&s->capture, VIDIOC_STREAMON); -+ return 1; -+} -+ -+static int ctx_done(V4L2Context * const ctx) -+{ -+ int rv = 0; -+ V4L2m2mContext * const s = ctx_to_m2mctx(ctx); -+ -+ ctx->done = 1; -+ -+ if (s->resize_pending && !V4L2_TYPE_IS_OUTPUT(ctx->type)) -+ rv = do_source_change(s); -+ -+ return rv; -+} -+ - /** - * handle resolution change event and end of stream event - * returns 1 if reinit was successful, negative if it failed -@@ -175,8 +255,7 @@ static int v4l2_start_decode(V4L2Context *ctx) - */ - static int v4l2_handle_event(V4L2Context *ctx) - { -- V4L2m2mContext *s = ctx_to_m2mctx(ctx); -- struct v4l2_format cap_fmt = s->capture.format; -+ V4L2m2mContext * const s = ctx_to_m2mctx(ctx); - struct v4l2_event evt = { 0 }; - int ret; - -@@ -186,44 +265,22 @@ static int v4l2_handle_event(V4L2Context *ctx) - return 0; - } - -+ av_log(logger(ctx), AV_LOG_INFO, "Dq event %d\n", evt.type); -+ - if (evt.type == V4L2_EVENT_EOS) { -- ctx->done = 1; -+// ctx->done = 1; -+ av_log(logger(ctx), AV_LOG_TRACE, "%s VIDIOC_EVENT_EOS\n", ctx->name); - return 0; - } - - if (evt.type != V4L2_EVENT_SOURCE_CHANGE) - return 0; - -- ret = ioctl(s->fd, VIDIOC_G_FMT, &cap_fmt); -- if (ret) { -- av_log(logger(ctx), AV_LOG_ERROR, "%s VIDIOC_G_FMT\n", s->capture.name); -- return 0; -- } -- -- if (v4l2_resolution_changed(&s->capture, &cap_fmt)) { -- s->capture.height = v4l2_get_height(&cap_fmt); -- s->capture.width = v4l2_get_width(&cap_fmt); -- s->capture.sample_aspect_ratio = v4l2_get_sar(&s->capture); -- } else { -- v4l2_start_decode(ctx); -+ s->resize_pending = 1; -+ if (!ctx->done) - return 0; -- } -- -- s->reinit = 1; -- -- if (s->avctx) -- ret = ff_set_dimensions(s->avctx, s->capture.width, s->capture.height); -- if (ret < 0) -- av_log(logger(ctx), AV_LOG_WARNING, "update avcodec height and width\n"); -- -- ret = ff_v4l2_m2m_codec_reinit(s); -- if (ret) { -- av_log(logger(ctx), AV_LOG_ERROR, "v4l2_m2m_codec_reinit\n"); -- return AVERROR(EINVAL); -- } - -- /* reinit executed */ -- return 1; -+ return do_source_change(s); - } - - static int v4l2_stop_decode(V4L2Context *ctx) -@@ -266,8 +323,26 @@ static int v4l2_stop_encode(V4L2Context *ctx) - return 0; - } - -+static int count_in_driver(const V4L2Context * const ctx) -+{ -+ int i; -+ int n = 0; -+ -+ if (!ctx->bufrefs) -+ return -1; -+ -+ for (i = 0; i < ctx->num_buffers; ++i) { -+ V4L2Buffer *const avbuf = (V4L2Buffer *)ctx->bufrefs[i]->data; -+ if (avbuf->status == V4L2BUF_IN_DRIVER) -+ ++n; -+ } -+ return n; -+} -+ - static V4L2Buffer* v4l2_dequeue_v4l2buf(V4L2Context *ctx, int timeout) - { -+ V4L2m2mContext * const s = ctx_to_m2mctx(ctx); -+ const int is_capture = !V4L2_TYPE_IS_OUTPUT(ctx->type); - struct v4l2_plane planes[VIDEO_MAX_PLANES]; - struct v4l2_buffer buf = { 0 }; - V4L2Buffer *avbuf; -@@ -276,50 +351,84 @@ static V4L2Buffer* v4l2_dequeue_v4l2buf(V4L2Context *ctx, int timeout) - .fd = ctx_to_m2mctx(ctx)->fd, - }; - int i, ret; -+ int no_rx_means_done = 0; - -- if (!V4L2_TYPE_IS_OUTPUT(ctx->type) && ctx->buffers) { -+ if (is_capture && ctx->bufrefs) { - for (i = 0; i < ctx->num_buffers; i++) { -- if (ctx->buffers[i].status == V4L2BUF_IN_DRIVER) -+ avbuf = (V4L2Buffer *)ctx->bufrefs[i]->data; -+ if (avbuf->status == V4L2BUF_IN_DRIVER) - break; - } - if (i == ctx->num_buffers) -- av_log(logger(ctx), AV_LOG_WARNING, "All capture buffers returned to " -+ av_log(logger(ctx), AV_LOG_WARNING, "All capture buffers (%d) returned to " - "userspace. Increase num_capture_buffers " - "to prevent device deadlock or dropped " -- "packets/frames.\n"); -+ "packets/frames.\n", i); - } - -+#if 0 -+ // I think this is true but pointless -+ // we will get some other form of EOF signal -+ - /* if we are draining and there are no more capture buffers queued in the driver we are done */ -- if (!V4L2_TYPE_IS_OUTPUT(ctx->type) && ctx_to_m2mctx(ctx)->draining) { -+ if (is_capture && ctx_to_m2mctx(ctx)->draining) { - for (i = 0; i < ctx->num_buffers; i++) { - /* capture buffer initialization happens during decode hence - * detection happens at runtime - */ -- if (!ctx->buffers) -+ if (!ctx->bufrefs) - break; - -- if (ctx->buffers[i].status == V4L2BUF_IN_DRIVER) -+ avbuf = (V4L2Buffer *)ctx->bufrefs[i]->data; -+ if (avbuf->status == V4L2BUF_IN_DRIVER) - goto start; - } - ctx->done = 1; - return NULL; - } -+#endif - - start: -- if (V4L2_TYPE_IS_OUTPUT(ctx->type)) -- pfd.events = POLLOUT | POLLWRNORM; -- else { -+ if (is_capture) { - /* no need to listen to requests for more input while draining */ - if (ctx_to_m2mctx(ctx)->draining) - pfd.events = POLLIN | POLLRDNORM | POLLPRI; -+ } else { -+ pfd.events = POLLOUT | POLLWRNORM; - } -+ no_rx_means_done = s->resize_pending && is_capture; - - for (;;) { -- ret = poll(&pfd, 1, timeout); -+ // If we have a resize pending then all buffers should be Qed -+ // With a resize pending we should be in drain but evidence suggests -+ // that not all decoders do this so poll to clear -+ int t2 = no_rx_means_done ? 0 : timeout < 0 ? 3000 : timeout; -+ const int e = pfd.events; -+ -+ ret = poll(&pfd, 1, t2); -+ - if (ret > 0) - break; -- if (errno == EINTR) -- continue; -+ -+ if (ret < 0) { -+ int err = errno; -+ if (err == EINTR) -+ continue; -+ av_log(logger(ctx), AV_LOG_ERROR, "=== poll error %d (%s): events=%#x, cap buffers=%d\n", -+ err, strerror(err), -+ e, count_in_driver(ctx)); -+ return NULL; -+ } -+ -+ // ret == 0 (timeout) -+ if (no_rx_means_done) { -+ av_log(logger(ctx), AV_LOG_DEBUG, "Ctx done on timeout\n"); -+ ret = ctx_done(ctx); -+ if (ret > 0) -+ goto start; -+ } -+ if (timeout == -1) -+ av_log(logger(ctx), AV_LOG_ERROR, "=== poll unexpected TIMEOUT: events=%#x, cap buffers=%d\n", e, count_in_driver(ctx));; - return NULL; - } - -@@ -329,7 +438,8 @@ start: - no need to raise a warning */ - if (timeout == 0) { - for (i = 0; i < ctx->num_buffers; i++) { -- if (ctx->buffers[i].status != V4L2BUF_AVAILABLE) -+ avbuf = (V4L2Buffer *)ctx->bufrefs[i]->data; -+ if (avbuf->status != V4L2BUF_AVAILABLE) - av_log(logger(ctx), AV_LOG_WARNING, "%s POLLERR\n", ctx->name); - } - } -@@ -347,22 +457,25 @@ start: - ctx->done = 1; - return NULL; - } -- if (ret) { -- /* if re-init was successful drop the buffer (if there was one) -- * since we had to reconfigure capture (unmap all buffers) -- */ -- return NULL; -- } -+ if (ret > 0) -+ goto start; - } - - /* 2. dequeue the buffer */ - if (pfd.revents & (POLLIN | POLLRDNORM | POLLOUT | POLLWRNORM)) { - -- if (!V4L2_TYPE_IS_OUTPUT(ctx->type)) { -+ if (is_capture) { - /* there is a capture buffer ready */ - if (pfd.revents & (POLLIN | POLLRDNORM)) - goto dequeue; - -+ // CAPTURE Q drained -+ if (no_rx_means_done) { -+ if (ctx_done(ctx) > 0) -+ goto start; -+ return NULL; -+ } -+ - /* the driver is ready to accept more input; instead of waiting for the capture - * buffer to complete we return NULL so input can proceed (we are single threaded) - */ -@@ -380,37 +493,58 @@ dequeue: - buf.m.planes = planes; - } - -- ret = ioctl(ctx_to_m2mctx(ctx)->fd, VIDIOC_DQBUF, &buf); -- if (ret) { -- if (errno != EAGAIN) { -- ctx->done = 1; -- if (errno != EPIPE) -+ while ((ret = ioctl(ctx_to_m2mctx(ctx)->fd, VIDIOC_DQBUF, &buf)) == -1) { -+ const int err = errno; -+ if (err == EINTR) -+ continue; -+ if (err != EAGAIN) { -+ // EPIPE on CAPTURE can be used instead of BUF_FLAG_LAST -+ if (err != EPIPE || !is_capture) - av_log(logger(ctx), AV_LOG_DEBUG, "%s VIDIOC_DQBUF, errno (%s)\n", -- ctx->name, av_err2str(AVERROR(errno))); -+ ctx->name, av_err2str(AVERROR(err))); -+ if (ctx_done(ctx) > 0) -+ goto start; - } - return NULL; - } -+ --ctx->q_count; -+ av_log(logger(ctx), AV_LOG_DEBUG, "--- %s VIDIOC_DQBUF OK: index=%d, ts=%ld.%06ld, count=%d, dq=%d\n", -+ ctx->name, buf.index, -+ buf.timestamp.tv_sec, buf.timestamp.tv_usec, -+ ctx->q_count, ++ctx->dq_count); - -- if (ctx_to_m2mctx(ctx)->draining && !V4L2_TYPE_IS_OUTPUT(ctx->type)) { -+ avbuf = (V4L2Buffer *)ctx->bufrefs[buf.index]->data; -+ avbuf->status = V4L2BUF_AVAILABLE; -+ avbuf->buf = buf; -+ if (V4L2_TYPE_IS_MULTIPLANAR(ctx->type)) { -+ memcpy(avbuf->planes, planes, sizeof(planes)); -+ avbuf->buf.m.planes = avbuf->planes; -+ } -+ -+ if (ctx_to_m2mctx(ctx)->draining && is_capture) { - int bytesused = V4L2_TYPE_IS_MULTIPLANAR(buf.type) ? - buf.m.planes[0].bytesused : buf.bytesused; - if (bytesused == 0) { -- ctx->done = 1; -+ av_log(logger(ctx), AV_LOG_DEBUG, "Buffer empty - reQ\n"); -+ -+ // Must reQ so we don't leak -+ // May not matter if the next thing we do is release all the -+ // buffers but better to be tidy. -+ ff_v4l2_buffer_enqueue(avbuf); -+ -+ if (ctx_done(ctx) > 0) -+ goto start; - return NULL; - } - #ifdef V4L2_BUF_FLAG_LAST -- if (buf.flags & V4L2_BUF_FLAG_LAST) -- ctx->done = 1; -+ if (buf.flags & V4L2_BUF_FLAG_LAST) { -+ av_log(logger(ctx), AV_LOG_TRACE, "FLAG_LAST set\n"); -+ avbuf->status = V4L2BUF_IN_USE; // Avoid flushing this buffer -+ ctx_done(ctx); -+ } - #endif - } - -- avbuf = &ctx->buffers[buf.index]; -- avbuf->status = V4L2BUF_AVAILABLE; -- avbuf->buf = buf; -- if (V4L2_TYPE_IS_MULTIPLANAR(ctx->type)) { -- memcpy(avbuf->planes, planes, sizeof(planes)); -- avbuf->buf.m.planes = avbuf->planes; -- } - return avbuf; - } - -@@ -429,8 +563,9 @@ static V4L2Buffer* v4l2_getfree_v4l2buf(V4L2Context *ctx) - } - - for (i = 0; i < ctx->num_buffers; i++) { -- if (ctx->buffers[i].status == V4L2BUF_AVAILABLE) -- return &ctx->buffers[i]; -+ V4L2Buffer * const avbuf = (V4L2Buffer *)ctx->bufrefs[i]->data; -+ if (avbuf->status == V4L2BUF_AVAILABLE) -+ return avbuf; - } - - return NULL; -@@ -438,25 +573,45 @@ static V4L2Buffer* v4l2_getfree_v4l2buf(V4L2Context *ctx) - - static int v4l2_release_buffers(V4L2Context* ctx) - { -- struct v4l2_requestbuffers req = { -- .memory = V4L2_MEMORY_MMAP, -- .type = ctx->type, -- .count = 0, /* 0 -> unmaps buffers from the driver */ -- }; -- int i, j; -+ int i; -+ int ret = 0; -+ const int fd = ctx_to_m2mctx(ctx)->fd; - -- for (i = 0; i < ctx->num_buffers; i++) { -- V4L2Buffer *buffer = &ctx->buffers[i]; -+ // Orphan any buffers in the wild -+ ff_weak_link_break(&ctx->wl_master); -+ -+ if (ctx->bufrefs) { -+ for (i = 0; i < ctx->num_buffers; i++) -+ av_buffer_unref(ctx->bufrefs + i); -+ } -+ -+ if (fd != -1) { -+ struct v4l2_requestbuffers req = { -+ .memory = V4L2_MEMORY_MMAP, -+ .type = ctx->type, -+ .count = 0, /* 0 -> unmap all buffers from the driver */ -+ }; -+ -+ while ((ret = ioctl(fd, VIDIOC_REQBUFS, &req)) == -1) { -+ if (errno == EINTR) -+ continue; -+ -+ ret = AVERROR(errno); - -- for (j = 0; j < buffer->num_planes; j++) { -- struct V4L2Plane_info *p = &buffer->plane_info[j]; -- if (p->mm_addr && p->length) -- if (munmap(p->mm_addr, p->length) < 0) -- av_log(logger(ctx), AV_LOG_ERROR, "%s unmap plane (%s))\n", ctx->name, av_err2str(AVERROR(errno))); -+ av_log(logger(ctx), AV_LOG_ERROR, "release all %s buffers (%s)\n", -+ ctx->name, av_err2str(AVERROR(errno))); -+ -+ if (ctx_to_m2mctx(ctx)->output_drm) -+ av_log(logger(ctx), AV_LOG_ERROR, -+ "Make sure the DRM client releases all FB/GEM objects before closing the codec (ie):\n" -+ "for all buffers: \n" -+ " 1. drmModeRmFB(..)\n" -+ " 2. drmIoctl(.., DRM_IOCTL_GEM_CLOSE,... )\n"); - } - } -+ ctx->q_count = 0; - -- return ioctl(ctx_to_m2mctx(ctx)->fd, VIDIOC_REQBUFS, &req); -+ return ret; - } - - static inline int v4l2_try_raw_format(V4L2Context* ctx, enum AVPixelFormat pixfmt) -@@ -485,6 +640,8 @@ static inline int v4l2_try_raw_format(V4L2Context* ctx, enum AVPixelFormat pixfm - - static int v4l2_get_raw_format(V4L2Context* ctx, enum AVPixelFormat *p) - { -+ V4L2m2mContext* s = ctx_to_m2mctx(ctx); -+ V4L2m2mPriv *priv = s->avctx->priv_data; - enum AVPixelFormat pixfmt = ctx->av_pix_fmt; - struct v4l2_fmtdesc fdesc; - int ret; -@@ -503,6 +660,13 @@ static int v4l2_get_raw_format(V4L2Context* ctx, enum AVPixelFormat *p) - if (ret) - return AVERROR(EINVAL); - -+ if (priv->pix_fmt != AV_PIX_FMT_NONE) { -+ if (fdesc.pixelformat != ff_v4l2_format_avfmt_to_v4l2(priv->pix_fmt)) { -+ fdesc.index++; -+ continue; -+ } -+ } -+ - pixfmt = ff_v4l2_format_v4l2_to_avfmt(fdesc.pixelformat, AV_CODEC_ID_RAWVIDEO); - ret = v4l2_try_raw_format(ctx, pixfmt); - if (ret){ -@@ -555,18 +719,73 @@ static int v4l2_get_coded_format(V4L2Context* ctx, uint32_t *p) - * - *****************************************************************************/ - -+ -+static void flush_all_buffers_status(V4L2Context* const ctx) -+{ -+ int i; -+ for (i = 0; i < ctx->num_buffers; ++i) { -+ struct V4L2Buffer * const buf = (struct V4L2Buffer *)ctx->bufrefs[i]->data; -+ if (buf->status == V4L2BUF_IN_DRIVER) -+ buf->status = V4L2BUF_AVAILABLE; -+ } -+ ctx->q_count = 0; -+} -+ -+static int stuff_all_buffers(AVCodecContext * avctx, V4L2Context* ctx) -+{ -+ int i; -+ int rv; -+ -+ if (!ctx->bufrefs) { -+ rv = ff_v4l2_context_init(ctx); -+ if (rv) { -+ av_log(avctx, AV_LOG_ERROR, "can't request capture buffers\n"); -+ return rv; -+ } -+ } -+ -+ for (i = 0; i < ctx->num_buffers; ++i) { -+ struct V4L2Buffer * const buf = (struct V4L2Buffer *)ctx->bufrefs[i]->data; -+ if (buf->status == V4L2BUF_AVAILABLE) { -+ rv = ff_v4l2_buffer_enqueue(buf); -+ if (rv < 0) -+ return rv; -+ } -+ } -+ return 0; -+} -+ - int ff_v4l2_context_set_status(V4L2Context* ctx, uint32_t cmd) - { - int type = ctx->type; - int ret; -+ AVCodecContext * const avctx = logger(ctx); -+ -+ ff_mutex_lock(&ctx->lock); -+ -+ if (cmd == VIDIOC_STREAMON && !V4L2_TYPE_IS_OUTPUT(ctx->type)) -+ stuff_all_buffers(avctx, ctx); - - ret = ioctl(ctx_to_m2mctx(ctx)->fd, cmd, &type); -- if (ret < 0) -- return AVERROR(errno); -+ if (ret < 0) { -+ const int err = errno; -+ av_log(avctx, AV_LOG_ERROR, "%s set status %d (%s) failed: err=%d\n", ctx->name, -+ cmd, (cmd == VIDIOC_STREAMON) ? "ON" : "OFF", err); -+ ret = AVERROR(err); -+ } -+ else -+ { -+ if (cmd == VIDIOC_STREAMOFF) -+ flush_all_buffers_status(ctx); - -- ctx->streamon = (cmd == VIDIOC_STREAMON); -+ ctx->streamon = (cmd == VIDIOC_STREAMON); -+ av_log(avctx, AV_LOG_DEBUG, "%s set status %d (%s) OK\n", ctx->name, -+ cmd, (cmd == VIDIOC_STREAMON) ? "ON" : "OFF"); -+ } - -- return 0; -+ ff_mutex_unlock(&ctx->lock); -+ -+ return ret; - } - - int ff_v4l2_context_enqueue_frame(V4L2Context* ctx, const AVFrame* frame) -@@ -594,7 +813,8 @@ int ff_v4l2_context_enqueue_frame(V4L2Context* ctx, const AVFrame* frame) - return ff_v4l2_buffer_enqueue(avbuf); - } - --int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt) -+int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt, -+ const void * extdata, size_t extlen, int no_rescale_pts) - { - V4L2m2mContext *s = ctx_to_m2mctx(ctx); - V4L2Buffer* avbuf; -@@ -602,8 +822,9 @@ int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt) - - if (!pkt->size) { - ret = v4l2_stop_decode(ctx); -+ // Log but otherwise ignore stop failure - if (ret) -- av_log(logger(ctx), AV_LOG_ERROR, "%s stop_decode\n", ctx->name); -+ av_log(logger(ctx), AV_LOG_ERROR, "%s stop_decode failed: err=%d\n", ctx->name, ret); - s->draining = 1; - return 0; - } -@@ -612,14 +833,14 @@ int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt) - if (!avbuf) - return AVERROR(EAGAIN); - -- ret = ff_v4l2_buffer_avpkt_to_buf(pkt, avbuf); -+ ret = ff_v4l2_buffer_avpkt_to_buf_ext(pkt, avbuf, extdata, extlen, no_rescale_pts); - if (ret) - return ret; - - return ff_v4l2_buffer_enqueue(avbuf); - } - --int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* frame, int timeout) -+int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* frame, int timeout, int no_rescale_pts) - { - V4L2Buffer *avbuf; - -@@ -636,7 +857,7 @@ int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* frame, int timeout) - return AVERROR(EAGAIN); - } - -- return ff_v4l2_buffer_buf_to_avframe(frame, avbuf); -+ return ff_v4l2_buffer_buf_to_avframe(frame, avbuf, no_rescale_pts); - } - - int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt) -@@ -695,54 +916,57 @@ void ff_v4l2_context_release(V4L2Context* ctx) - { - int ret; - -- if (!ctx->buffers) -+ if (!ctx->bufrefs) - return; - - ret = v4l2_release_buffers(ctx); - if (ret) - av_log(logger(ctx), AV_LOG_WARNING, "V4L2 failed to unmap the %s buffers\n", ctx->name); - -- av_freep(&ctx->buffers); -+ av_freep(&ctx->bufrefs); -+ av_buffer_unref(&ctx->frames_ref); -+ -+ ff_mutex_destroy(&ctx->lock); - } - --int ff_v4l2_context_init(V4L2Context* ctx) -+ -+static int create_buffers(V4L2Context* const ctx, const unsigned int req_buffers) - { -- V4L2m2mContext *s = ctx_to_m2mctx(ctx); -+ V4L2m2mContext * const s = ctx_to_m2mctx(ctx); - struct v4l2_requestbuffers req; -- int ret, i; -- -- if (!v4l2_type_supported(ctx)) { -- av_log(logger(ctx), AV_LOG_ERROR, "type %i not supported\n", ctx->type); -- return AVERROR_PATCHWELCOME; -- } -- -- ret = ioctl(s->fd, VIDIOC_G_FMT, &ctx->format); -- if (ret) -- av_log(logger(ctx), AV_LOG_ERROR, "%s VIDIOC_G_FMT failed\n", ctx->name); -+ int ret; -+ int i; - - memset(&req, 0, sizeof(req)); -- req.count = ctx->num_buffers; -+ req.count = req_buffers; - req.memory = V4L2_MEMORY_MMAP; - req.type = ctx->type; -- ret = ioctl(s->fd, VIDIOC_REQBUFS, &req); -- if (ret < 0) { -- av_log(logger(ctx), AV_LOG_ERROR, "%s VIDIOC_REQBUFS failed: %s\n", ctx->name, strerror(errno)); -- return AVERROR(errno); -+ while ((ret = ioctl(s->fd, VIDIOC_REQBUFS, &req)) == -1) { -+ if (errno != EINTR) { -+ ret = AVERROR(errno); -+ av_log(logger(ctx), AV_LOG_ERROR, "%s VIDIOC_REQBUFS failed: %s\n", ctx->name, av_err2str(ret)); -+ return ret; -+ } - } - - ctx->num_buffers = req.count; -- ctx->buffers = av_mallocz(ctx->num_buffers * sizeof(V4L2Buffer)); -- if (!ctx->buffers) { -+ ctx->bufrefs = av_mallocz(ctx->num_buffers * sizeof(*ctx->bufrefs)); -+ if (!ctx->bufrefs) { - av_log(logger(ctx), AV_LOG_ERROR, "%s malloc enomem\n", ctx->name); -- return AVERROR(ENOMEM); -+ goto fail_release; - } - -- for (i = 0; i < req.count; i++) { -- ctx->buffers[i].context = ctx; -- ret = ff_v4l2_buffer_initialize(&ctx->buffers[i], i); -- if (ret < 0) { -+ ctx->wl_master = ff_weak_link_new(ctx); -+ if (!ctx->wl_master) { -+ ret = AVERROR(ENOMEM); -+ goto fail_release; -+ } -+ -+ for (i = 0; i < ctx->num_buffers; i++) { -+ ret = ff_v4l2_buffer_initialize(&ctx->bufrefs[i], i, ctx); -+ if (ret) { - av_log(logger(ctx), AV_LOG_ERROR, "%s buffer[%d] initialization (%s)\n", ctx->name, i, av_err2str(ret)); -- goto error; -+ goto fail_release; - } - } - -@@ -756,10 +980,62 @@ int ff_v4l2_context_init(V4L2Context* ctx) - - return 0; - --error: -+fail_release: - v4l2_release_buffers(ctx); -+ av_freep(&ctx->bufrefs); -+ return ret; -+} -+ -+int ff_v4l2_context_init(V4L2Context* ctx) -+{ -+ V4L2m2mContext * const s = ctx_to_m2mctx(ctx); -+ int ret; -+ -+ // It is not valid to reinit a context without a previous release -+ av_assert0(ctx->bufrefs == NULL); -+ -+ if (!v4l2_type_supported(ctx)) { -+ av_log(logger(ctx), AV_LOG_ERROR, "type %i not supported\n", ctx->type); -+ return AVERROR_PATCHWELCOME; -+ } -+ -+ ff_mutex_init(&ctx->lock, NULL); - -- av_freep(&ctx->buffers); -+ if (s->output_drm) { -+ AVHWFramesContext *hwframes; -+ -+ ctx->frames_ref = av_hwframe_ctx_alloc(s->device_ref); -+ if (!ctx->frames_ref) { -+ ret = AVERROR(ENOMEM); -+ goto fail_unlock; -+ } -+ -+ hwframes = (AVHWFramesContext*)ctx->frames_ref->data; -+ hwframes->format = AV_PIX_FMT_DRM_PRIME; -+ hwframes->sw_format = ctx->av_pix_fmt; -+ hwframes->width = ctx->width; -+ hwframes->height = ctx->height; -+ ret = av_hwframe_ctx_init(ctx->frames_ref); -+ if (ret < 0) -+ goto fail_unref_hwframes; -+ } -+ -+ ret = ioctl(s->fd, VIDIOC_G_FMT, &ctx->format); -+ if (ret) { -+ ret = AVERROR(errno); -+ av_log(logger(ctx), AV_LOG_ERROR, "%s VIDIOC_G_FMT failed: %s\n", ctx->name, av_err2str(ret)); -+ goto fail_unref_hwframes; -+ } -+ -+ ret = create_buffers(ctx, ctx->num_buffers); -+ if (ret < 0) -+ goto fail_unref_hwframes; -+ -+ return 0; - -+fail_unref_hwframes: -+ av_buffer_unref(&ctx->frames_ref); -+fail_unlock: -+ ff_mutex_destroy(&ctx->lock); - return ret; - } -diff --git a/libavcodec/v4l2_context.h b/libavcodec/v4l2_context.h -index 6f7460c89a..59009d11d1 100644 ---- a/libavcodec/v4l2_context.h -+++ b/libavcodec/v4l2_context.h -@@ -32,6 +32,8 @@ - #include "libavutil/rational.h" - #include "codec_id.h" - #include "packet.h" -+#include "libavutil/buffer.h" -+#include "libavutil/thread.h" - #include "v4l2_buffers.h" - - typedef struct V4L2Context { -@@ -71,11 +73,12 @@ typedef struct V4L2Context { - */ - int width, height; - AVRational sample_aspect_ratio; -+ struct v4l2_rect selection; - - /** -- * Indexed array of V4L2Buffers -+ * Indexed array of pointers to V4L2Buffers - */ -- V4L2Buffer *buffers; -+ AVBufferRef **bufrefs; - - /** - * Readonly after init. -@@ -93,6 +96,12 @@ typedef struct V4L2Context { - */ - int done; - -+ AVBufferRef *frames_ref; -+ int q_count; -+ int dq_count; -+ struct ff_weak_link_master *wl_master; -+ -+ AVMutex lock; - } V4L2Context; - - /** -@@ -157,9 +166,12 @@ int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt); - * @param[in] ctx The V4L2Context to dequeue from. - * @param[inout] f The AVFrame to dequeue to. - * @param[in] timeout The timeout for dequeue (-1 to block, 0 to return immediately, or milliseconds) -+ * @param[in] no_rescale_pts (0 rescale pts, 1 use pts as -+ * timestamp directly) -+ * - * @return 0 in case of success, AVERROR(EAGAIN) if no buffer was ready, another negative error in case of error. - */ --int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* f, int timeout); -+int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* f, int timeout, int no_rescale_pts); - - /** - * Enqueues a buffer to a V4L2Context from an AVPacket -@@ -171,7 +183,7 @@ int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* f, int timeout); - * @param[in] pkt A pointer to an AVPacket. - * @return 0 in case of success, a negative error otherwise. - */ --int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt); -+int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt, const void * ext_data, size_t ext_size, int no_rescale_pts); - - /** - * Enqueues a buffer to a V4L2Context from an AVFrame -diff --git a/libavcodec/v4l2_m2m.c b/libavcodec/v4l2_m2m.c -index 602efb7a16..516e6d9858 100644 ---- a/libavcodec/v4l2_m2m.c -+++ b/libavcodec/v4l2_m2m.c -@@ -216,13 +216,7 @@ int ff_v4l2_m2m_codec_reinit(V4L2m2mContext *s) - av_log(log_ctx, AV_LOG_ERROR, "capture VIDIOC_STREAMOFF\n"); - - /* 2. unmap the capture buffers (v4l2 and ffmpeg): -- * we must wait for all references to be released before being allowed -- * to queue new buffers. - */ -- av_log(log_ctx, AV_LOG_DEBUG, "waiting for user to release AVBufferRefs\n"); -- if (atomic_load(&s->refcount)) -- while(sem_wait(&s->refsync) == -1 && errno == EINTR); -- - ff_v4l2_context_release(&s->capture); - - /* 3. get the new capture format */ -@@ -259,6 +253,8 @@ static void v4l2_m2m_destroy_context(void *opaque, uint8_t *context) - av_frame_free(&s->frame); - av_packet_unref(&s->buf_pkt); - -+ av_log(s->avctx, AV_LOG_DEBUG, "V4L2 Context destroyed\n"); -+ - av_free(s); - } - -@@ -270,6 +266,11 @@ int ff_v4l2_m2m_codec_end(V4L2m2mPriv *priv) - if (!s) - return 0; - -+ av_log(s->avctx, AV_LOG_DEBUG, "V4L2 Codec end\n"); -+ -+ if (av_codec_is_decoder(s->avctx->codec)) -+ av_packet_unref(&s->buf_pkt); -+ - if (s->fd >= 0) { - ret = ff_v4l2_context_set_status(&s->output, VIDIOC_STREAMOFF); - if (ret) -@@ -282,7 +283,14 @@ int ff_v4l2_m2m_codec_end(V4L2m2mPriv *priv) - - ff_v4l2_context_release(&s->output); - -+ close(s->fd); -+ s->fd = -1; -+ - s->self_ref = NULL; -+ // This is only called on avctx close so after this point we don't have that -+ // Crash sooner if we find we are using it (can still log with avctx = NULL) -+ s->avctx = NULL; -+ priv->context = NULL; - av_buffer_unref(&priv->context_ref); - - return 0; -diff --git a/libavcodec/v4l2_m2m.h b/libavcodec/v4l2_m2m.h -index 04d86d7b92..24a9c94864 100644 ---- a/libavcodec/v4l2_m2m.h -+++ b/libavcodec/v4l2_m2m.h -@@ -30,6 +30,7 @@ - #include - - #include "libavcodec/avcodec.h" -+#include "libavutil/pixfmt.h" - #include "v4l2_context.h" - - #define container_of(ptr, type, member) ({ \ -@@ -40,6 +41,17 @@ - { "num_output_buffers", "Number of buffers in the output context",\ - OFFSET(num_output_buffers), AV_OPT_TYPE_INT, { .i64 = 16 }, 2, INT_MAX, FLAGS } - -+#define FF_V4L2_M2M_TRACK_SIZE 128 -+typedef struct V4L2m2mTrackEl { -+ int discard; // If we see this buffer its been flushed, so discard -+ int pkt_size; -+ int64_t pts; -+ int64_t reordered_opaque; -+ int64_t pkt_pos; -+ int64_t pkt_duration; -+ int64_t track_pts; -+} V4L2m2mTrackEl; -+ - typedef struct V4L2m2mContext { - char devname[PATH_MAX]; - int fd; -@@ -53,6 +65,7 @@ typedef struct V4L2m2mContext { - sem_t refsync; - atomic_uint refcount; - int reinit; -+ int resize_pending; - - /* null frame/packet received */ - int draining; -@@ -66,6 +79,23 @@ typedef struct V4L2m2mContext { - - /* reference back to V4L2m2mPriv */ - void *priv; -+ -+ AVBufferRef *device_ref; -+ -+ /* generate DRM frames */ -+ int output_drm; -+ -+ /* Frame tracking */ -+ int64_t last_pkt_dts; -+ int64_t last_opaque; -+ unsigned int track_no; -+ V4L2m2mTrackEl track_els[FF_V4L2_M2M_TRACK_SIZE]; -+ -+ /* req pkt */ -+ int req_pkt; -+ -+ /* Ext data sent */ -+ int extdata_sent; - } V4L2m2mContext; - - typedef struct V4L2m2mPriv { -@@ -76,6 +106,7 @@ typedef struct V4L2m2mPriv { - - int num_output_buffers; - int num_capture_buffers; -+ enum AVPixelFormat pix_fmt; - } V4L2m2mPriv; - - /** -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 4944d08511..7f6033ac2c 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -23,6 +23,10 @@ - - #include - #include -+ -+#include "libavutil/avassert.h" -+#include "libavutil/hwcontext.h" -+#include "libavutil/hwcontext_drm.h" - #include "libavutil/pixfmt.h" - #include "libavutil/pixdesc.h" - #include "libavutil/opt.h" -@@ -30,26 +34,51 @@ - #include "codec_internal.h" - #include "libavcodec/decode.h" - -+#include "libavcodec/hwaccels.h" -+#include "libavcodec/internal.h" -+#include "libavcodec/hwconfig.h" -+ - #include "v4l2_context.h" - #include "v4l2_m2m.h" - #include "v4l2_fmt.h" - -+static int check_output_streamon(AVCodecContext *const avctx, V4L2m2mContext *const s) -+{ -+ int ret; -+ struct v4l2_decoder_cmd cmd = { -+ .cmd = V4L2_DEC_CMD_START, -+ .flags = 0, -+ }; -+ -+ if (s->output.streamon) -+ return 0; -+ -+ ret = ff_v4l2_context_set_status(&s->output, VIDIOC_STREAMON); -+ if (ret < 0) -+ av_log(avctx, AV_LOG_ERROR, "VIDIOC_STREAMON on output context\n"); -+ -+ if (!s->capture.streamon || ret < 0) -+ return ret; -+ -+ ret = ioctl(s->fd, VIDIOC_DECODER_CMD, &cmd); -+ if (ret < 0) -+ av_log(avctx, AV_LOG_ERROR, "VIDIOC_DECODER_CMD start error: %d\n", errno); -+ else -+ av_log(avctx, AV_LOG_DEBUG, "VIDIOC_DECODER_CMD start OK\n"); -+ -+ return ret; -+} -+ - static int v4l2_try_start(AVCodecContext *avctx) - { - V4L2m2mContext *s = ((V4L2m2mPriv*)avctx->priv_data)->context; - V4L2Context *const capture = &s->capture; -- V4L2Context *const output = &s->output; - struct v4l2_selection selection = { 0 }; - int ret; - - /* 1. start the output process */ -- if (!output->streamon) { -- ret = ff_v4l2_context_set_status(output, VIDIOC_STREAMON); -- if (ret < 0) { -- av_log(avctx, AV_LOG_DEBUG, "VIDIOC_STREAMON on output context\n"); -- return ret; -- } -- } -+ if ((ret = check_output_streamon(avctx, s)) != 0) -+ return ret; - - if (capture->streamon) - return 0; -@@ -63,15 +92,29 @@ static int v4l2_try_start(AVCodecContext *avctx) - } - - /* 2.1 update the AVCodecContext */ -- avctx->pix_fmt = ff_v4l2_format_v4l2_to_avfmt(capture->format.fmt.pix_mp.pixelformat, AV_CODEC_ID_RAWVIDEO); -- capture->av_pix_fmt = avctx->pix_fmt; -+ capture->av_pix_fmt = -+ ff_v4l2_format_v4l2_to_avfmt(capture->format.fmt.pix_mp.pixelformat, AV_CODEC_ID_RAWVIDEO); -+ if (s->output_drm) { -+ avctx->pix_fmt = AV_PIX_FMT_DRM_PRIME; -+ avctx->sw_pix_fmt = capture->av_pix_fmt; -+ } -+ else -+ avctx->pix_fmt = capture->av_pix_fmt; - - /* 3. set the crop parameters */ -+#if 1 -+ selection.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; -+ selection.target = V4L2_SEL_TGT_CROP_DEFAULT; -+ ret = ioctl(s->fd, VIDIOC_G_SELECTION, &selection); -+ av_log(avctx, AV_LOG_INFO, "Post G selection ret=%d, err=%d %dx%d\n", ret, errno, selection.r.width, selection.r.height); -+#else - selection.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - selection.r.height = avctx->coded_height; - selection.r.width = avctx->coded_width; -+ av_log(avctx, AV_LOG_INFO, "Try selection %dx%d\n", avctx->coded_width, avctx->coded_height); - ret = ioctl(s->fd, VIDIOC_S_SELECTION, &selection); -- if (!ret) { -+ av_log(avctx, AV_LOG_INFO, "Post S selection ret=%d, err=%d %dx%d\n", ret, errno, selection.r.width, selection.r.height); -+ if (1) { - ret = ioctl(s->fd, VIDIOC_G_SELECTION, &selection); - if (ret) { - av_log(avctx, AV_LOG_WARNING, "VIDIOC_G_SELECTION ioctl\n"); -@@ -82,15 +125,7 @@ static int v4l2_try_start(AVCodecContext *avctx) - capture->width = selection.r.width; - } - } -- -- /* 4. init the capture context now that we have the capture format */ -- if (!capture->buffers) { -- ret = ff_v4l2_context_init(capture); -- if (ret) { -- av_log(avctx, AV_LOG_ERROR, "can't request capture buffers\n"); -- return AVERROR(ENOMEM); -- } -- } -+#endif - - /* 5. start the capture process */ - ret = ff_v4l2_context_set_status(capture, VIDIOC_STREAMON); -@@ -133,50 +168,287 @@ static int v4l2_prepare_decoder(V4L2m2mContext *s) - return 0; - } - --static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) -+static inline int64_t track_to_pts(AVCodecContext *avctx, unsigned int n) -+{ -+ return (int64_t)n; -+} -+ -+static inline unsigned int pts_to_track(AVCodecContext *avctx, const int64_t pts) -+{ -+ return (unsigned int)pts; -+} -+ -+// FFmpeg requires us to propagate a number of vars from the coded pkt into -+// the decoded frame. The only thing that tracks like that in V4L2 stateful -+// is timestamp. PTS maps to timestamp for this decode. FFmpeg makes no -+// guarantees about PTS being unique or specified for every frame so replace -+// the supplied PTS with a simple incrementing number and keep a circular -+// buffer of all the things we want preserved (including the original PTS) -+// indexed by the tracking no. -+static void -+xlat_pts_in(AVCodecContext *const avctx, V4L2m2mContext *const s, AVPacket *const avpkt) -+{ -+ int64_t track_pts; -+ -+ // Avoid 0 -+ if (++s->track_no == 0) -+ s->track_no = 1; -+ -+ track_pts = track_to_pts(avctx, s->track_no); -+ -+ av_log(avctx, AV_LOG_TRACE, "In PTS=%" PRId64 ", DTS=%" PRId64 ", track=%" PRId64 ", n=%u\n", avpkt->pts, avpkt->dts, track_pts, s->track_no); -+ s->last_pkt_dts = avpkt->dts; -+ s->track_els[s->track_no % FF_V4L2_M2M_TRACK_SIZE] = (V4L2m2mTrackEl){ -+ .discard = 0, -+ .pkt_size = avpkt->size, -+ .pts = avpkt->pts, -+ .reordered_opaque = avctx->reordered_opaque, -+ .pkt_pos = avpkt->pos, -+ .pkt_duration = avpkt->duration, -+ .track_pts = track_pts -+ }; -+ avpkt->pts = track_pts; -+} -+ -+// Returns -1 if we should discard the frame -+static int -+xlat_pts_out(AVCodecContext *const avctx, V4L2m2mContext *const s, AVFrame *const frame) -+{ -+ unsigned int n = pts_to_track(avctx, frame->pts) % FF_V4L2_M2M_TRACK_SIZE; -+ const V4L2m2mTrackEl *const t = s->track_els + n; -+ if (frame->pts == AV_NOPTS_VALUE || frame->pts != t->track_pts) -+ { -+ av_log(avctx, AV_LOG_INFO, "Tracking failure: pts=%" PRId64 ", track[%d]=%" PRId64 "\n", frame->pts, n, t->track_pts); -+ frame->pts = AV_NOPTS_VALUE; -+ frame->pkt_dts = s->last_pkt_dts; -+ frame->reordered_opaque = s->last_opaque; -+ frame->pkt_pos = -1; -+ frame->pkt_duration = 0; -+ frame->pkt_size = -1; -+ } -+ else if (!t->discard) -+ { -+ frame->pts = t->pts; -+ frame->pkt_dts = s->last_pkt_dts; -+ frame->reordered_opaque = t->reordered_opaque; -+ frame->pkt_pos = t->pkt_pos; -+ frame->pkt_duration = t->pkt_duration; -+ frame->pkt_size = t->pkt_size; -+ -+ s->last_opaque = s->track_els[n].reordered_opaque; -+ s->track_els[n].pts = AV_NOPTS_VALUE; // If we hit this again deny accurate knowledge of PTS -+ } -+ else -+ { -+ av_log(avctx, AV_LOG_DEBUG, "Discard frame (flushed): pts=%" PRId64 ", track[%d]=%" PRId64 "\n", frame->pts, n, t->track_pts); -+ return -1; -+ } -+ -+ frame->best_effort_timestamp = frame->pts; -+ frame->pkt_dts = frame->pts; // We can't emulate what s/w does in a useful manner? -+ av_log(avctx, AV_LOG_TRACE, "Out PTS=%" PRId64 ", DTS=%" PRId64 "\n", frame->pts, frame->pkt_dts); -+ return 0; -+} -+ -+static inline int stream_started(const V4L2m2mContext * const s) { -+ return s->capture.streamon && s->output.streamon; -+} -+ -+#define NQ_OK 0 -+#define NQ_Q_FULL 1 -+#define NQ_SRC_EMPTY 2 -+#define NQ_DRAINING 3 -+#define NQ_DEAD 4 -+ -+#define TRY_DQ(nq_status) ((nq_status) >= NQ_OK && (nq_status) <= NQ_DRAINING) -+ -+// AVERROR_EOF Flushing an already flushed stream -+// -ve Error (all errors except EOF are unexpected) -+// NQ_OK (0) OK -+// NQ_Q_FULL Dst full (retry if we think V4L2 Q has space now) -+// NQ_SRC_EMPTY Src empty (do not retry) -+// NQ_DRAINING At EOS, dQ dest until EOS there too -+// NQ_DEAD Not running (do not retry, do not attempt capture dQ) -+ -+static int try_enqueue_src(AVCodecContext * const avctx, V4L2m2mContext * const s) - { -- V4L2m2mContext *s = ((V4L2m2mPriv*)avctx->priv_data)->context; -- V4L2Context *const capture = &s->capture; -- V4L2Context *const output = &s->output; - int ret; - -+ // If we don't already have a coded packet - get a new one -+ // We will already have a coded pkt if the output Q was full last time we -+ // tried to Q it - if (!s->buf_pkt.size) { - ret = ff_decode_get_packet(avctx, &s->buf_pkt); -+ -+ if (ret == AVERROR(EAGAIN)) { -+ if (!stream_started(s)) { -+ av_log(avctx, AV_LOG_TRACE, "%s: receive_frame before 1st coded packet\n", __func__); -+ return NQ_DEAD; -+ } -+ return NQ_SRC_EMPTY; -+ } -+ -+ if (ret == AVERROR_EOF) { -+ // EOF - enter drain mode -+ av_log(avctx, AV_LOG_TRACE, "--- EOS req: ret=%d, size=%d, started=%d, drain=%d\n", -+ ret, s->buf_pkt.size, stream_started(s), s->draining); -+ if (!stream_started(s)) { -+ av_log(avctx, AV_LOG_DEBUG, "EOS on flushed stream\n"); -+ s->draining = 1; -+ s->capture.done = 1; -+ return AVERROR_EOF; -+ } -+ -+ if (!s->draining) { -+ // Calling enqueue with an empty pkt starts drain -+ av_assert0(s->buf_pkt.size == 0); -+ ret = ff_v4l2_context_enqueue_packet(&s->output, &s->buf_pkt, NULL, 0, 1); -+ if (ret) { -+ av_log(avctx, AV_LOG_ERROR, "Failed to start drain: ret=%d\n", ret); -+ return ret; -+ } -+ } -+ return NQ_DRAINING; -+ } -+ - if (ret < 0) { -- if (ret == AVERROR(EAGAIN)) -- return ff_v4l2_context_dequeue_frame(capture, frame, 0); -- else if (ret != AVERROR_EOF) -- return ret; -+ av_log(avctx, AV_LOG_ERROR, "Failed to get coded packet: err=%d\n", ret); -+ return ret; - } -+ -+ xlat_pts_in(avctx, s, &s->buf_pkt); - } - -- if (s->draining) -- goto dequeue; -+ if ((ret = check_output_streamon(avctx, s)) != 0) -+ return ret; - -- ret = ff_v4l2_context_enqueue_packet(output, &s->buf_pkt); -- if (ret < 0 && ret != AVERROR(EAGAIN)) -- goto fail; -+ ret = ff_v4l2_context_enqueue_packet(&s->output, &s->buf_pkt, -+ avctx->extradata, s->extdata_sent ? 0 : avctx->extradata_size, -+ 1); - -- /* if EAGAIN don't unref packet and try to enqueue in the next iteration */ -- if (ret != AVERROR(EAGAIN)) -+ if (ret == AVERROR(EAGAIN)) { -+ // Out of input buffers - keep packet -+ ret = NQ_Q_FULL; -+ } -+ else { -+ // In all other cases we are done with this packet - av_packet_unref(&s->buf_pkt); -+ s->extdata_sent = 1; - -- if (!s->draining) { -- ret = v4l2_try_start(avctx); - if (ret) { -- /* cant recover */ -- if (ret != AVERROR(ENOMEM)) -- ret = 0; -- goto fail; -+ av_log(avctx, AV_LOG_ERROR, "Packet enqueue failure: err=%d\n", ret); -+ return ret; -+ } -+ } -+ -+ // Start if we haven't -+ { -+ const int ret2 = v4l2_try_start(avctx); -+ if (ret2) { -+ av_log(avctx, AV_LOG_DEBUG, "Start failure: err=%d\n", ret2); -+ ret = (ret2 == AVERROR(ENOMEM)) ? ret2 : NQ_DEAD; -+ } -+ } -+ -+ return ret; -+} -+ -+static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) -+{ -+ V4L2m2mContext *const s = ((V4L2m2mPriv*)avctx->priv_data)->context; -+ int src_rv; -+ int dst_rv = 1; // Non-zero (done), non-negative (error) number -+ -+ do { -+ src_rv = try_enqueue_src(avctx, s); -+ -+ // If we got a frame last time and we have nothing to enqueue then -+ // return now. rv will be AVERROR(EAGAIN) indicating that we want more input -+ // This should mean that once decode starts we enter a stable state where -+ // we alternately ask for input and produce output -+ if (s->req_pkt && src_rv == NQ_SRC_EMPTY) -+ break; -+ -+ if (src_rv == NQ_Q_FULL && dst_rv == AVERROR(EAGAIN)) { -+ av_log(avctx, AV_LOG_WARNING, "Poll says src Q has space but enqueue fail"); -+ src_rv = NQ_SRC_EMPTY; // If we can't enqueue pretend that there is nothing to enqueue -+ } -+ -+ // Try to get a new frame if -+ // (a) we haven't already got one AND -+ // (b) enqueue returned a status indicating that decode should be attempted -+ if (dst_rv != 0 && TRY_DQ(src_rv)) { -+ do { -+ // Dequeue frame will unref any previous contents of frame -+ // if it returns success so we don't need an explicit unref -+ // when discarding -+ // This returns AVERROR(EAGAIN) if there isn't a frame ready yet -+ // but there is room in the input Q -+ dst_rv = ff_v4l2_context_dequeue_frame(&s->capture, frame, -1, 1); -+ -+ if (dst_rv == AVERROR_EOF && (s->draining || s->capture.done)) -+ av_log(avctx, AV_LOG_DEBUG, "Dequeue EOF: draining=%d, cap.done=%d\n", -+ s->draining, s->capture.done); -+ else if (dst_rv && dst_rv != AVERROR(EAGAIN)) -+ av_log(avctx, AV_LOG_ERROR, "Packet dequeue failure: draining=%d, cap.done=%d, err=%d\n", -+ s->draining, s->capture.done, dst_rv); -+ -+ // Go again if we got a frame that we need to discard -+ } while (dst_rv == 0 && xlat_pts_out(avctx, s, frame)); -+ } -+ -+ // Continue trying to enqueue packets if either -+ // (a) we succeeded last time OR -+ // (b) enqueue failed due to input Q full AND there is now room -+ } while (src_rv == NQ_OK || (src_rv == NQ_Q_FULL && dst_rv == AVERROR(EAGAIN)) ); -+ -+ // Ensure that the frame contains nothing if we aren't returning a frame -+ // (might happen when discarding) -+ if (dst_rv) -+ av_frame_unref(frame); -+ -+ // If we got a frame this time ask for a pkt next time -+ s->req_pkt = (dst_rv == 0); -+ -+#if 0 -+ if (dst_rv == 0) -+ { -+ static int z = 0; -+ if (++z > 50) { -+ av_log(avctx, AV_LOG_ERROR, "Streamoff and die?\n"); -+ ff_v4l2_context_set_status(&s->capture, VIDIOC_STREAMOFF); -+ return -1; - } - } -+#endif -+ -+ return dst_rv == 0 ? 0 : -+ src_rv < 0 ? src_rv : -+ dst_rv < 0 ? dst_rv : -+ AVERROR(EAGAIN); -+} -+ -+#if 0 -+#include -+static int64_t us_time(void) -+{ -+ struct timespec ts; -+ clock_gettime(CLOCK_MONOTONIC, &ts); -+ return (int64_t)ts.tv_sec * 1000000 + ts.tv_nsec / 1000; -+} - --dequeue: -- return ff_v4l2_context_dequeue_frame(capture, frame, -1); --fail: -- av_packet_unref(&s->buf_pkt); -+static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) -+{ -+ int ret; -+ const int64_t now = us_time(); -+ int64_t done; -+ av_log(avctx, AV_LOG_TRACE, "<<< %s\n", __func__); -+ ret = v4l2_receive_frame2(avctx, frame); -+ done = us_time(); -+ av_log(avctx, AV_LOG_TRACE, ">>> %s: rx time=%" PRId64 ", rv=%d\n", __func__, done - now, ret); - return ret; - } -+#endif - - static av_cold int v4l2_decode_init(AVCodecContext *avctx) - { -@@ -185,6 +457,9 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - V4L2m2mPriv *priv = avctx->priv_data; - int ret; - -+ av_log(avctx, AV_LOG_TRACE, "<<< %s\n", __func__); -+ avctx->pix_fmt = AV_PIX_FMT_DRM_PRIME; -+ - ret = ff_v4l2_m2m_create_context(priv, &s); - if (ret < 0) - return ret; -@@ -205,6 +480,28 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - capture->av_codec_id = AV_CODEC_ID_RAWVIDEO; - capture->av_pix_fmt = avctx->pix_fmt; - -+ /* the client requests the codec to generate DRM frames: -+ * - data[0] will therefore point to the returned AVDRMFrameDescriptor -+ * check the ff_v4l2_buffer_to_avframe conversion function. -+ * - the DRM frame format is passed in the DRM frame descriptor layer. -+ * check the v4l2_get_drm_frame function. -+ */ -+ switch (ff_get_format(avctx, avctx->codec->pix_fmts)) { -+ default: -+ s->output_drm = 1; -+ break; -+ } -+ -+ s->device_ref = av_hwdevice_ctx_alloc(AV_HWDEVICE_TYPE_DRM); -+ if (!s->device_ref) { -+ ret = AVERROR(ENOMEM); -+ return ret; -+ } -+ -+ ret = av_hwdevice_ctx_init(s->device_ref); -+ if (ret < 0) -+ return ret; -+ - s->avctx = avctx; - ret = ff_v4l2_m2m_codec_init(priv); - if (ret) { -@@ -217,7 +514,53 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - - static av_cold int v4l2_decode_close(AVCodecContext *avctx) - { -- return ff_v4l2_m2m_codec_end(avctx->priv_data); -+ int rv; -+ av_log(avctx, AV_LOG_TRACE, "<<< %s\n", __func__); -+ rv = ff_v4l2_m2m_codec_end(avctx->priv_data); -+ av_log(avctx, AV_LOG_TRACE, ">>> %s: rv=%d\n", __func__, rv); -+ return rv; -+} -+ -+static void v4l2_decode_flush(AVCodecContext *avctx) -+{ -+ // An alternatve and more drastic form of flush is to simply do this: -+ // v4l2_decode_close(avctx); -+ // v4l2_decode_init(avctx); -+ // The downside is that this keeps a decoder open until all the frames -+ // associated with it have been returned. This is a bit wasteful on -+ // possibly limited h/w resources and fails on a Pi for this reason unless -+ // more GPU mem is allocated than is the default. -+ -+ V4L2m2mPriv * const priv = avctx->priv_data; -+ V4L2m2mContext * const s = priv->context; -+ V4L2Context * const output = &s->output; -+ V4L2Context * const capture = &s->capture; -+ int ret, i; -+ -+ av_log(avctx, AV_LOG_TRACE, "<<< %s: streamon=%d\n", __func__, output->streamon); -+ -+ // Reflushing everything is benign, quick and avoids having to worry about -+ // states like EOS processing so don't try to optimize out (having got it -+ // wrong once) -+ -+ ret = ff_v4l2_context_set_status(output, VIDIOC_STREAMOFF); -+ if (ret < 0) -+ av_log(avctx, AV_LOG_ERROR, "VIDIOC_STREAMOFF %s error: %d\n", output->name, ret); -+ -+ // V4L2 makes no guarantees about whether decoded frames are flushed or not -+ // so mark all frames we are tracking to be discarded if they appear -+ for (i = 0; i != FF_V4L2_M2M_TRACK_SIZE; ++i) -+ s->track_els[i].discard = 1; -+ -+ // resend extradata -+ s->extdata_sent = 0; -+ // clear EOS status vars -+ s->draining = 0; -+ output->done = 0; -+ capture->done = 0; -+ -+ // Stream on will occur when we actually submit a new frame -+ av_log(avctx, AV_LOG_TRACE, ">>> %s\n", __func__); - } - - #define OFFSET(x) offsetof(V4L2m2mPriv, x) -@@ -227,9 +570,15 @@ static const AVOption options[] = { - V4L_M2M_DEFAULT_OPTS, - { "num_capture_buffers", "Number of buffers in the capture context", - OFFSET(num_capture_buffers), AV_OPT_TYPE_INT, {.i64 = 20}, 2, INT_MAX, FLAGS }, -+ { "pixel_format", "Pixel format to be used by the decoder", OFFSET(pix_fmt), AV_OPT_TYPE_PIXEL_FMT, {.i64 = AV_PIX_FMT_NONE}, AV_PIX_FMT_NONE, AV_PIX_FMT_NB, FLAGS }, - { NULL}, - }; - -+static const AVCodecHWConfigInternal *v4l2_m2m_hw_configs[] = { -+ HW_CONFIG_INTERNAL(DRM_PRIME), -+ NULL -+}; -+ - #define M2MDEC_CLASS(NAME) \ - static const AVClass v4l2_m2m_ ## NAME ## _dec_class = { \ - .class_name = #NAME "_v4l2m2m_decoder", \ -@@ -250,11 +599,16 @@ static const AVOption options[] = { - .init = v4l2_decode_init, \ - FF_CODEC_RECEIVE_FRAME_CB(v4l2_receive_frame), \ - .close = v4l2_decode_close, \ -+ .flush = v4l2_decode_flush, \ - .bsfs = bsf_name, \ - .p.capabilities = AV_CODEC_CAP_HARDWARE | AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AVOID_PROBING, \ - .caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE | \ - FF_CODEC_CAP_SETS_PKT_DTS | FF_CODEC_CAP_INIT_CLEANUP, \ - .p.wrapper_name = "v4l2m2m", \ -+ .p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_DRM_PRIME, \ -+ AV_PIX_FMT_NV12, \ -+ AV_PIX_FMT_NONE}, \ -+ .hw_configs = v4l2_m2m_hw_configs, \ - } - - M2MDEC(h264, "H.264", AV_CODEC_ID_H264, "h264_mp4toannexb"); - -From 12f8f12326b83dd3c22084f8922705d79a13d195 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 10 Jun 2021 18:46:21 +0100 -Subject: [PATCH 017/151] Fix crash in hw_device_default_name if type not found - (NONE) - ---- - fftools/ffmpeg_hw.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/fftools/ffmpeg_hw.c b/fftools/ffmpeg_hw.c -index 88fa782470..740a5e7153 100644 ---- a/fftools/ffmpeg_hw.c -+++ b/fftools/ffmpeg_hw.c -@@ -75,6 +75,8 @@ static char *hw_device_default_name(enum AVHWDeviceType type) - char *name; - size_t index_pos; - int index, index_limit = 1000; -+ if (!type_name) -+ return NULL; - index_pos = strlen(type_name); - name = av_malloc(index_pos + 4); - if (!name) - -From 7f6bce459e683bff3a0b972922fbcc808e9177a6 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 10 Jun 2021 18:59:18 +0100 -Subject: [PATCH 018/151] Allow v4l2m2m to select non-drm_prime output formats - ---- - libavcodec/v4l2_buffers.c | 2 +- - libavcodec/v4l2_m2m_dec.c | 14 ++++++++++---- - 2 files changed, 11 insertions(+), 5 deletions(-) - -diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c -index a003934ca1..1ca1128db6 100644 ---- a/libavcodec/v4l2_buffers.c -+++ b/libavcodec/v4l2_buffers.c -@@ -524,7 +524,7 @@ static int v4l2_buffer_swframe_to_buf(const AVFrame *frame, V4L2Buffer *out) - offset += dst_stride * out->context->height; - } - if (offset > out->plane_info[0].length) { -- av_log(NULL, AV_LOG_ERROR, "%s: Plane total %d > buffer size %d\n", __func__, offset, out->plane_info[0].length); -+ av_log(NULL, AV_LOG_ERROR, "%s: Plane total %u > buffer size %zu\n", __func__, offset, out->plane_info[0].length); - return -1; - } - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 7f6033ac2c..a4b5a4e7e9 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -455,10 +455,10 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - V4L2Context *capture, *output; - V4L2m2mContext *s; - V4L2m2mPriv *priv = avctx->priv_data; -+ int gf_pix_fmt; - int ret; - - av_log(avctx, AV_LOG_TRACE, "<<< %s\n", __func__); -- avctx->pix_fmt = AV_PIX_FMT_DRM_PRIME; - - ret = ff_v4l2_m2m_create_context(priv, &s); - if (ret < 0) -@@ -486,10 +486,15 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - * - the DRM frame format is passed in the DRM frame descriptor layer. - * check the v4l2_get_drm_frame function. - */ -- switch (ff_get_format(avctx, avctx->codec->pix_fmts)) { -- default: -+ -+ gf_pix_fmt = ff_get_format(avctx, avctx->codec->pix_fmts); -+ av_log(avctx, AV_LOG_DEBUG, "avctx requested=%d (%s); get_format requested=%d (%s)\n", -+ avctx->pix_fmt, av_get_pix_fmt_name(avctx->pix_fmt), gf_pix_fmt, av_get_pix_fmt_name(gf_pix_fmt)); -+ -+ s->output_drm = 0; -+ if (gf_pix_fmt == AV_PIX_FMT_DRM_PRIME || avctx->pix_fmt == AV_PIX_FMT_DRM_PRIME) { -+ avctx->pix_fmt = AV_PIX_FMT_DRM_PRIME; - s->output_drm = 1; -- break; - } - - s->device_ref = av_hwdevice_ctx_alloc(AV_HWDEVICE_TYPE_DRM); -@@ -607,6 +612,7 @@ static const AVCodecHWConfigInternal *v4l2_m2m_hw_configs[] = { - .p.wrapper_name = "v4l2m2m", \ - .p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_DRM_PRIME, \ - AV_PIX_FMT_NV12, \ -+ AV_PIX_FMT_YUV420P, \ - AV_PIX_FMT_NONE}, \ - .hw_configs = v4l2_m2m_hw_configs, \ - } - -From 9b0d964b727d98271f7f2f4dcdbcb1b41a429e2b Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 10 Jun 2021 18:59:38 +0100 -Subject: [PATCH 019/151] Fix YUV420P output from v4l2m2m - -Also put get_width get_height inlines in header as they are generally -useful. ---- - libavcodec/v4l2_buffers.c | 12 ++++++------ - libavcodec/v4l2_context.c | 22 ++++++---------------- - libavcodec/v4l2_m2m.h | 12 ++++++++++++ - 3 files changed, 24 insertions(+), 22 deletions(-) - -diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c -index 1ca1128db6..f4c11ca8d0 100644 ---- a/libavcodec/v4l2_buffers.c -+++ b/libavcodec/v4l2_buffers.c -@@ -425,17 +425,17 @@ static int v4l2_buffer_buf_to_swframe(AVFrame *frame, V4L2Buffer *avbuf) - case AV_PIX_FMT_NV21: - if (avbuf->num_planes > 1) - break; -- frame->linesize[1] = avbuf->plane_info[0].bytesperline; -- frame->data[1] = frame->buf[0]->data + avbuf->plane_info[0].bytesperline * avbuf->context->format.fmt.pix_mp.height; -+ frame->linesize[1] = frame->linesize[0]; -+ frame->data[1] = frame->data[0] + frame->linesize[0] * ff_v4l2_get_format_height(&avbuf->context->format); - break; - - case AV_PIX_FMT_YUV420P: - if (avbuf->num_planes > 1) - break; -- frame->linesize[1] = avbuf->plane_info[0].bytesperline >> 1; -- frame->linesize[2] = avbuf->plane_info[0].bytesperline >> 1; -- frame->data[1] = frame->buf[0]->data + avbuf->plane_info[0].bytesperline * avbuf->context->format.fmt.pix_mp.height; -- frame->data[2] = frame->data[1] + ((avbuf->plane_info[0].bytesperline * avbuf->context->format.fmt.pix_mp.height) >> 2); -+ frame->linesize[1] = frame->linesize[0] / 2; -+ frame->linesize[2] = frame->linesize[1]; -+ frame->data[1] = frame->data[0] + frame->linesize[0] * ff_v4l2_get_format_height(&avbuf->context->format); -+ frame->data[2] = frame->data[1] + frame->linesize[1] * ff_v4l2_get_format_height(&avbuf->context->format) / 2; - break; - - default: -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index be76068af3..6fe2586627 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -55,16 +55,6 @@ static inline AVCodecContext *logger(V4L2Context *ctx) - return ctx_to_m2mctx(ctx)->avctx; - } - --static inline unsigned int v4l2_get_width(struct v4l2_format *fmt) --{ -- return V4L2_TYPE_IS_MULTIPLANAR(fmt->type) ? fmt->fmt.pix_mp.width : fmt->fmt.pix.width; --} -- --static inline unsigned int v4l2_get_height(struct v4l2_format *fmt) --{ -- return V4L2_TYPE_IS_MULTIPLANAR(fmt->type) ? fmt->fmt.pix_mp.height : fmt->fmt.pix.height; --} -- - static AVRational v4l2_get_sar(V4L2Context *ctx) - { - struct AVRational sar = { 0, 1 }; -@@ -96,8 +86,8 @@ static inline unsigned int v4l2_resolution_changed(V4L2Context *ctx, struct v4l2 - if (ret) - av_log(logger(ctx), AV_LOG_DEBUG, "%s changed (%dx%d) -> (%dx%d)\n", - ctx->name, -- v4l2_get_width(fmt1), v4l2_get_height(fmt1), -- v4l2_get_width(fmt2), v4l2_get_height(fmt2)); -+ ff_v4l2_get_format_width(fmt1), ff_v4l2_get_format_height(fmt1), -+ ff_v4l2_get_format_width(fmt2), ff_v4l2_get_format_height(fmt2)); - - return ret; - } -@@ -195,8 +185,8 @@ static int do_source_change(V4L2m2mContext * const s) - - reinit = v4l2_resolution_changed(&s->capture, &cap_fmt); - if (reinit) { -- s->capture.height = v4l2_get_height(&cap_fmt); -- s->capture.width = v4l2_get_width(&cap_fmt); -+ s->capture.height = ff_v4l2_get_format_height(&cap_fmt); -+ s->capture.width = ff_v4l2_get_format_width(&cap_fmt); - } - s->capture.sample_aspect_ratio = v4l2_get_sar(&s->capture); - -@@ -973,8 +963,8 @@ static int create_buffers(V4L2Context* const ctx, const unsigned int req_buffers - av_log(logger(ctx), AV_LOG_DEBUG, "%s: %s %02d buffers initialized: %04ux%04u, sizeimage %08u, bytesperline %08u\n", ctx->name, - V4L2_TYPE_IS_MULTIPLANAR(ctx->type) ? av_fourcc2str(ctx->format.fmt.pix_mp.pixelformat) : av_fourcc2str(ctx->format.fmt.pix.pixelformat), - req.count, -- v4l2_get_width(&ctx->format), -- v4l2_get_height(&ctx->format), -+ ff_v4l2_get_format_width(&ctx->format), -+ ff_v4l2_get_format_height(&ctx->format), - V4L2_TYPE_IS_MULTIPLANAR(ctx->type) ? ctx->format.fmt.pix_mp.plane_fmt[0].sizeimage : ctx->format.fmt.pix.sizeimage, - V4L2_TYPE_IS_MULTIPLANAR(ctx->type) ? ctx->format.fmt.pix_mp.plane_fmt[0].bytesperline : ctx->format.fmt.pix.bytesperline); - -diff --git a/libavcodec/v4l2_m2m.h b/libavcodec/v4l2_m2m.h -index 24a9c94864..8f054f2f50 100644 ---- a/libavcodec/v4l2_m2m.h -+++ b/libavcodec/v4l2_m2m.h -@@ -160,4 +160,16 @@ int ff_v4l2_m2m_codec_reinit(V4L2m2mContext *ctx); - */ - int ff_v4l2_m2m_codec_full_reinit(V4L2m2mContext *ctx); - -+ -+static inline unsigned int ff_v4l2_get_format_width(struct v4l2_format *fmt) -+{ -+ return V4L2_TYPE_IS_MULTIPLANAR(fmt->type) ? fmt->fmt.pix_mp.width : fmt->fmt.pix.width; -+} -+ -+static inline unsigned int ff_v4l2_get_format_height(struct v4l2_format *fmt) -+{ -+ return V4L2_TYPE_IS_MULTIPLANAR(fmt->type) ? fmt->fmt.pix_mp.height : fmt->fmt.pix.height; -+} -+ -+ - #endif /* AVCODEC_V4L2_M2M_H */ - -From 14e9b4bf1b34b3d1e1e6a4fc755cc595416e7d7b Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 10 Jun 2021 19:23:44 +0100 -Subject: [PATCH 020/151] Report buffer overflows in v4l2m2m - ---- - libavcodec/v4l2_buffers.c | 14 ++++++++++---- - libavcodec/v4l2_context.c | 5 ++++- - 2 files changed, 14 insertions(+), 5 deletions(-) - -diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c -index f4c11ca8d0..de31f7ced9 100644 ---- a/libavcodec/v4l2_buffers.c -+++ b/libavcodec/v4l2_buffers.c -@@ -364,6 +364,7 @@ static int v4l2_buffer_export_drm(V4L2Buffer* avbuf) - static int v4l2_bufref_to_buf(V4L2Buffer *out, int plane, const uint8_t* data, int size, int offset) - { - unsigned int bytesused, length; -+ int rv = 0; - - if (plane >= out->num_planes) - return AVERROR(EINVAL); -@@ -371,11 +372,16 @@ static int v4l2_bufref_to_buf(V4L2Buffer *out, int plane, const uint8_t* data, i - length = out->plane_info[plane].length; - bytesused = FFMIN(size+offset, length); - -- memcpy((uint8_t*)out->plane_info[plane].mm_addr+offset, data, FFMIN(size, length-offset)); -+ if (size > length - offset) { -+ size = length - offset; -+ rv = AVERROR(ENOMEM); -+ } -+ -+ memcpy((uint8_t*)out->plane_info[plane].mm_addr+offset, data, size); - - set_buf_length(out, plane, bytesused, length); - -- return 0; -+ return rv; - } - - static AVBufferRef * wrap_avbuf(V4L2Buffer * const avbuf) -@@ -630,7 +636,7 @@ int ff_v4l2_buffer_avpkt_to_buf_ext(const AVPacket *pkt, V4L2Buffer *out, - } - - ret = v4l2_bufref_to_buf(out, 0, pkt->data, pkt->size, extlen); -- if (ret) -+ if (ret && ret != AVERROR(ENOMEM)) - return ret; - - v4l2_set_pts(out, pkt->pts, no_rescale_pts); -@@ -638,7 +644,7 @@ int ff_v4l2_buffer_avpkt_to_buf_ext(const AVPacket *pkt, V4L2Buffer *out, - if (pkt->flags & AV_PKT_FLAG_KEY) - out->flags = V4L2_BUF_FLAG_KEYFRAME; - -- return 0; -+ return ret; - } - - int ff_v4l2_buffer_avpkt_to_buf(const AVPacket *pkt, V4L2Buffer *out) -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index 6fe2586627..81aced0c2b 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -824,7 +824,10 @@ int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt, - return AVERROR(EAGAIN); - - ret = ff_v4l2_buffer_avpkt_to_buf_ext(pkt, avbuf, extdata, extlen, no_rescale_pts); -- if (ret) -+ if (ret == AVERROR(ENOMEM)) -+ av_log(logger(ctx), AV_LOG_ERROR, "Buffer overflow in %s: pkt->size=%d > buf->length=%d\n", -+ __func__, pkt->size, avbuf->planes[0].length); -+ else if (ret) - return ret; - - return ff_v4l2_buffer_enqueue(avbuf); - -From 072907a7fcf160d12972997d24fdf62641687ea4 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 14 Jun 2021 11:55:16 +0100 -Subject: [PATCH 021/151] Increase V4L2 H264 stateful coded buffer size - -Try to set a min size of frame size / 2 for bitbuffers passed to V4l2. -This fixes a few streams that have large I-frames. You would hope -Annex-A gave useful minCR so an appropriate size could be calculated -but it doesn't really. It gives good guidance for bits required over -time but the instantaneous limits are very weak so it is possible -that even this won't be enough. The correct long term solution would -be to have resizable dmabufs but that is a greter rewrite than seems -sensible now. ---- - libavcodec/v4l2_context.c | 24 +++++++++++++++++++++++- - libavcodec/v4l2_context.h | 6 ++++++ - libavcodec/v4l2_m2m_dec.c | 24 ++++++++++++++++++++++++ - 3 files changed, 53 insertions(+), 1 deletion(-) - -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index 81aced0c2b..a17ae027a6 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -902,7 +902,29 @@ int ff_v4l2_context_get_format(V4L2Context* ctx, int probe) - - int ff_v4l2_context_set_format(V4L2Context* ctx) - { -- return ioctl(ctx_to_m2mctx(ctx)->fd, VIDIOC_S_FMT, &ctx->format); -+ int ret; -+ -+ ret = ioctl(ctx_to_m2mctx(ctx)->fd, VIDIOC_S_FMT, &ctx->format); -+ if (ret != 0) -+ return ret; -+ -+ // Check returned size against min size and if smaller have another go -+ // Only worry about plane[0] as this is meant to enforce limits for -+ // encoded streams where we might know a bit more about the shape -+ // than the driver -+ if (V4L2_TYPE_IS_MULTIPLANAR(ctx->format.type)) { -+ if (ctx->min_buf_size <= ctx->format.fmt.pix_mp.plane_fmt[0].sizeimage) -+ return 0; -+ ctx->format.fmt.pix_mp.plane_fmt[0].sizeimage = ctx->min_buf_size; -+ } -+ else { -+ if (ctx->min_buf_size <= ctx->format.fmt.pix.sizeimage) -+ return 0; -+ ctx->format.fmt.pix.sizeimage = ctx->min_buf_size; -+ } -+ -+ ret = ioctl(ctx_to_m2mctx(ctx)->fd, VIDIOC_S_FMT, &ctx->format); -+ return ret; - } - - void ff_v4l2_context_release(V4L2Context* ctx) -diff --git a/libavcodec/v4l2_context.h b/libavcodec/v4l2_context.h -index 59009d11d1..37b0431400 100644 ---- a/libavcodec/v4l2_context.h -+++ b/libavcodec/v4l2_context.h -@@ -75,6 +75,12 @@ typedef struct V4L2Context { - AVRational sample_aspect_ratio; - struct v4l2_rect selection; - -+ /** -+ * If the default size of buffer is less than this then try to -+ * set to this. -+ */ -+ uint32_t min_buf_size; -+ - /** - * Indexed array of pointers to V4L2Buffers - */ -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index a4b5a4e7e9..1851acbc93 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -450,6 +450,27 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - } - #endif - -+static uint32_t max_coded_size(const AVCodecContext * const avctx) -+{ -+ uint32_t wxh = avctx->coded_width * avctx->coded_height; -+ uint32_t size; -+ -+ // Currently the only thing we try to set our own limits for is H264 -+ if (avctx->codec_id != AV_CODEC_ID_H264) -+ return 0; -+ -+ size = wxh * 3 / 2; -+ // H.264 Annex A table A-1 gives minCR which is either 2 or 4 -+ // unfortunately that doesn't yield an actually useful limit -+ // and it should be noted that frame 0 is special cased to allow -+ // a bigger number which really isn't helpful for us. So just pick -+ // frame_size / 2 -+ size /= 2; -+ // Add 64k to allow for any overheads and/or encoder hopefulness -+ // with small WxH -+ return size + (1 << 16); -+} -+ - static av_cold int v4l2_decode_init(AVCodecContext *avctx) - { - V4L2Context *capture, *output; -@@ -460,6 +481,7 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - - av_log(avctx, AV_LOG_TRACE, "<<< %s\n", __func__); - -+ av_log(avctx, AV_LOG_INFO, "level=%d\n", avctx->level); - ret = ff_v4l2_m2m_create_context(priv, &s); - if (ret < 0) - return ret; -@@ -476,9 +498,11 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - - output->av_codec_id = avctx->codec_id; - output->av_pix_fmt = AV_PIX_FMT_NONE; -+ output->min_buf_size = max_coded_size(avctx); - - capture->av_codec_id = AV_CODEC_ID_RAWVIDEO; - capture->av_pix_fmt = avctx->pix_fmt; -+ capture->min_buf_size = 0; - - /* the client requests the codec to generate DRM frames: - * - data[0] will therefore point to the returned AVDRMFrameDescriptor - -From 6087c8c054e1ff3d2e6e62d5e32705d079928b64 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 28 Jun 2021 12:13:35 +0100 -Subject: [PATCH 022/151] Fix raw video s.t. it respects any remaining cropping - -This fixes the long standing CONFWIN_A conformance test failure for drm. ---- - libavcodec/rawenc.c | 32 ++++++++--- - libavutil/hwcontext_drm.c | 112 ++++++++++++++++++++++++++++++++++++-- - 2 files changed, 130 insertions(+), 14 deletions(-) - -diff --git a/libavcodec/rawenc.c b/libavcodec/rawenc.c -index 594a77c42a..8ca0379e12 100644 ---- a/libavcodec/rawenc.c -+++ b/libavcodec/rawenc.c -@@ -124,32 +124,41 @@ static int raw_sand30_as_yuv420(AVCodecContext *avctx, AVPacket *pkt, - - - static int raw_encode(AVCodecContext *avctx, AVPacket *pkt, -- const AVFrame *frame, int *got_packet) -+ const AVFrame *src_frame, int *got_packet) - { - int ret; -+ AVFrame * frame = NULL; - - #if CONFIG_SAND -- if (av_rpi_is_sand_frame(frame)) { -- ret = av_rpi_is_sand8_frame(frame) ? raw_sand8_as_yuv420(avctx, pkt, frame) : -- av_rpi_is_sand16_frame(frame) ? raw_sand16_as_yuv420(avctx, pkt, frame) : -- av_rpi_is_sand30_frame(frame) ? raw_sand30_as_yuv420(avctx, pkt, frame) : -1; -+ if (av_rpi_is_sand_frame(src_frame)) { -+ ret = av_rpi_is_sand8_frame(src_frame) ? raw_sand8_as_yuv420(avctx, pkt, src_frame) : -+ av_rpi_is_sand16_frame(src_frame) ? raw_sand16_as_yuv420(avctx, pkt, src_frame) : -+ av_rpi_is_sand30_frame(src_frame) ? raw_sand30_as_yuv420(avctx, pkt, src_frame) : -1; - *got_packet = (ret == 0); - return ret; - } - #endif - -+ if ((frame = av_frame_clone(src_frame)) == NULL) { -+ ret = AVERROR(ENOMEM); -+ goto fail; -+ } -+ -+ if ((ret = av_frame_apply_cropping(frame, AV_FRAME_CROP_UNALIGNED)) < 0) -+ goto fail; -+ - ret = av_image_get_buffer_size(frame->format, - frame->width, frame->height, 1); - if (ret < 0) -- return ret; -+ goto fail; - - if ((ret = ff_get_encode_buffer(avctx, pkt, ret, 0)) < 0) -- return ret; -+ goto fail; - if ((ret = av_image_copy_to_buffer(pkt->data, pkt->size, - (const uint8_t **)frame->data, frame->linesize, - frame->format, - frame->width, frame->height, 1)) < 0) -- return ret; -+ goto fail; - - if(avctx->codec_tag == AV_RL32("yuv2") && ret > 0 && - frame->format == AV_PIX_FMT_YUYV422) { -@@ -165,8 +174,15 @@ static int raw_encode(AVCodecContext *avctx, AVPacket *pkt, - AV_WB64(&pkt->data[8 * x], v << 48 | v >> 16); - } - } -+ pkt->flags |= AV_PKT_FLAG_KEY; -+ av_frame_free(&frame); - *got_packet = 1; - return 0; -+ -+fail: -+ av_frame_free(&frame); -+ *got_packet = 0; -+ return ret; - } - - const FFCodec ff_rawvideo_encoder = { -diff --git a/libavutil/hwcontext_drm.c b/libavutil/hwcontext_drm.c -index 7a9fdbd263..baf18920fa 100644 ---- a/libavutil/hwcontext_drm.c -+++ b/libavutil/hwcontext_drm.c -@@ -21,6 +21,7 @@ - #include - #include - #include -+#include - - /* This was introduced in version 4.6. And may not exist all without an - * optional package. So to prevent a hard dependency on needing the Linux -@@ -31,6 +32,7 @@ - #endif - - #include -+#include - #include - - #include "avassert.h" -@@ -38,7 +40,9 @@ - #include "hwcontext_drm.h" - #include "hwcontext_internal.h" - #include "imgutils.h" -- -+#if CONFIG_SAND -+#include "libavutil/rpi_sand_fns.h" -+#endif - - static void drm_device_free(AVHWDeviceContext *hwdev) - { -@@ -53,6 +57,11 @@ static int drm_device_create(AVHWDeviceContext *hwdev, const char *device, - AVDRMDeviceContext *hwctx = hwdev->hwctx; - drmVersionPtr version; - -+ if (device == NULL) { -+ hwctx->fd = -1; -+ return 0; -+ } -+ - hwctx->fd = open(device, O_RDWR); - if (hwctx->fd < 0) - return AVERROR(errno); -@@ -139,6 +148,8 @@ static int drm_map_frame(AVHWFramesContext *hwfc, - if (flags & AV_HWFRAME_MAP_WRITE) - mmap_prot |= PROT_WRITE; - -+ if (dst->format == AV_PIX_FMT_NONE) -+ dst->format = hwfc->sw_format; - #if HAVE_LINUX_DMA_BUF_H - if (flags & AV_HWFRAME_MAP_READ) - map->sync_flags |= DMA_BUF_SYNC_READ; -@@ -185,6 +196,23 @@ static int drm_map_frame(AVHWFramesContext *hwfc, - - dst->width = src->width; - dst->height = src->height; -+ dst->crop_top = src->crop_top; -+ dst->crop_bottom = src->crop_bottom; -+ dst->crop_left = src->crop_left; -+ dst->crop_right = src->crop_right; -+ -+#if CONFIG_SAND -+ // Rework for sand frames -+ if (av_rpi_is_sand_frame(dst)) { -+ // As it stands the sand formats hold stride2 in linesize[3] -+ // linesize[0] & [1] contain stride1 which is always 128 for everything we do -+ // * Arguably this should be reworked s.t. stride2 is in linesize[0] & [1] -+ dst->linesize[3] = fourcc_mod_broadcom_param(desc->objects[0].format_modifier); -+ dst->linesize[0] = 128; -+ dst->linesize[1] = 128; -+ // *** Are we sure src->height is actually what we want ??? -+ } -+#endif - - err = ff_hwframe_map_create(src->hw_frames_ctx, dst, src, - &drm_unmap_frame, map); -@@ -212,7 +240,15 @@ static int drm_transfer_get_formats(AVHWFramesContext *ctx, - if (!pix_fmts) - return AVERROR(ENOMEM); - -- pix_fmts[0] = ctx->sw_format; -+ // **** Offer native sand too ???? -+ pix_fmts[0] = -+#if CONFIG_SAND -+ ctx->sw_format == AV_PIX_FMT_RPI4_8 || ctx->sw_format == AV_PIX_FMT_SAND128 ? -+ AV_PIX_FMT_YUV420P : -+ ctx->sw_format == AV_PIX_FMT_RPI4_10 ? -+ AV_PIX_FMT_YUV420P10LE : -+#endif -+ ctx->sw_format; - pix_fmts[1] = AV_PIX_FMT_NONE; - - *formats = pix_fmts; -@@ -231,18 +267,79 @@ static int drm_transfer_data_from(AVHWFramesContext *hwfc, - map = av_frame_alloc(); - if (!map) - return AVERROR(ENOMEM); -- map->format = dst->format; - -+ // Map to default -+ map->format = AV_PIX_FMT_NONE; - err = drm_map_frame(hwfc, map, src, AV_HWFRAME_MAP_READ); - if (err) - goto fail; - -- map->width = dst->width; -- map->height = dst->height; -+#if 0 -+ av_log(hwfc, AV_LOG_INFO, "%s: src fmt=%d (%d), dst fmt=%d (%d) s=%dx%d l=%d/%d/%d/%d, d=%dx%d l=%d/%d/%d\n", __func__, -+ hwfc->sw_format, AV_PIX_FMT_RPI4_8, dst->format, AV_PIX_FMT_YUV420P10LE, -+ map->width, map->height, -+ map->linesize[0], -+ map->linesize[1], -+ map->linesize[2], -+ map->linesize[3], -+ dst->width, dst->height, -+ dst->linesize[0], -+ dst->linesize[1], -+ dst->linesize[2]); -+#endif -+#if CONFIG_SAND -+ if (av_rpi_is_sand_frame(map)) { -+ // Preserve crop - later ffmpeg code assumes that we have in that it -+ // overwrites any crop that we create with the old values -+ const unsigned int w = FFMIN(dst->width, map->width); -+ const unsigned int h = FFMIN(dst->height, map->height); -+ -+ if (map->format == AV_PIX_FMT_RPI4_8 && dst->format == AV_PIX_FMT_YUV420P) { -+ av_rpi_sand_to_planar_y8(dst->data[0], dst->linesize[0], -+ map->data[0], -+ 128, stride2, -+ 0, 0, w, h); -+ av_rpi_sand_to_planar_c8(dst->data[1], dst->linesize[1], -+ dst->data[2], dst->linesize[2], -+ map->data[1], -+ 128, stride2, -+ 0, 0, w / 2, h / 2); -+ } -+ else if (map->format == AV_PIX_FMT_RPI4_10 && dst->format == AV_PIX_FMT_YUV420P10LE) { -+ av_rpi_sand30_to_planar_y16(dst->data[0], dst->linesize[0], -+ map->data[0], -+ 128, stride2, -+ 0, 0, w, h); -+ av_rpi_sand30_to_planar_c16(dst->data[1], dst->linesize[1], -+ dst->data[2], dst->linesize[2], -+ map->data[1], -+ 128, stride2, -+ 0, 0, w / 2, h / 2); -+ } -+ else -+ { -+ av_log(hwfc, AV_LOG_ERROR, "%s: Incompatible output pixfmt for sand\n", __func__); -+ err = AVERROR(EINVAL); -+ goto fail; -+ } -+ -+ dst->width = w; -+ dst->height = h; -+ } -+ else -+#endif -+ { -+ // Kludge mapped h/w s.t. frame_copy works -+ map->width = dst->width; -+ map->height = dst->height; -+ err = av_frame_copy(dst, map); -+ } - -- err = av_frame_copy(dst, map); - if (err) -+ { -+ av_log(hwfc, AV_LOG_ERROR, "%s: Copy fail\n", __func__); - goto fail; -+ } - - err = 0; - fail: -@@ -257,7 +354,10 @@ static int drm_transfer_data_to(AVHWFramesContext *hwfc, - int err; - - if (src->width > hwfc->width || src->height > hwfc->height) -+ { -+ av_log(hwfc, AV_LOG_ERROR, "%s: H/w mismatch: %d/%d, %d/%d\n", __func__, dst->width, hwfc->width, dst->height, hwfc->height); - return AVERROR(EINVAL); -+ } - - map = av_frame_alloc(); - if (!map) - -From 597858c11fbfbe0f54c1b68d9683025929258bc1 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Fri, 13 Aug 2021 15:38:28 +0100 -Subject: [PATCH 023/151] Set frame interlace from V4L2 buffer field - ---- - libavcodec/v4l2_buffers.c | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c -index de31f7ced9..97b8eb1db3 100644 ---- a/libavcodec/v4l2_buffers.c -+++ b/libavcodec/v4l2_buffers.c -@@ -222,6 +222,16 @@ static enum AVColorTransferCharacteristic v4l2_get_color_trc(V4L2Buffer *buf) - return AVCOL_TRC_UNSPECIFIED; - } - -+static int v4l2_buf_is_interlaced(const V4L2Buffer * const buf) -+{ -+ return V4L2_FIELD_IS_INTERLACED(buf->buf.field); -+} -+ -+static int v4l2_buf_is_top_first(const V4L2Buffer * const buf) -+{ -+ return buf->buf.field == V4L2_FIELD_INTERLACED_TB; -+} -+ - static uint8_t * v4l2_get_drm_frame(V4L2Buffer *avbuf) - { - AVDRMFrameDescriptor *drm_desc = &avbuf->drm_frame; -@@ -576,6 +586,8 @@ int ff_v4l2_buffer_buf_to_avframe(AVFrame *frame, V4L2Buffer *avbuf, int no_resc - frame->color_trc = v4l2_get_color_trc(avbuf); - frame->pts = v4l2_get_pts(avbuf, no_rescale_pts); - frame->pkt_dts = AV_NOPTS_VALUE; -+ frame->interlaced_frame = v4l2_buf_is_interlaced(avbuf); -+ frame->top_field_first = v4l2_buf_is_top_first(avbuf); - - /* these values are updated also during re-init in v4l2_process_driver_event */ - frame->height = ctx->height; - -From 05906e2086b5087d615485ec9a09b1493dbb32e1 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Fri, 13 Aug 2021 16:11:53 +0100 -Subject: [PATCH 024/151] Fix V4L2 stateful to avoid crash if flush before - start - ---- - libavcodec/v4l2_context.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index a17ae027a6..eb901e8fab 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -713,6 +713,10 @@ static int v4l2_get_coded_format(V4L2Context* ctx, uint32_t *p) - static void flush_all_buffers_status(V4L2Context* const ctx) - { - int i; -+ -+ if (!ctx->bufrefs) -+ return; -+ - for (i = 0; i < ctx->num_buffers; ++i) { - struct V4L2Buffer * const buf = (struct V4L2Buffer *)ctx->bufrefs[i]->data; - if (buf->status == V4L2BUF_IN_DRIVER) - -From 7157b6032e759078a7d751e5dd5762970f3d1e8c Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 9 Sep 2021 17:44:13 +0100 -Subject: [PATCH 025/151] Copy properties from frame to v4l2 buffer - -Now copies all the properties in ff_v4l2_buffer_avframe_to_buf that -ff_v4l2_buffer_buf_to_avframe copies ---- - libavcodec/v4l2_buffers.c | 126 ++++++++++++++++++++++++++++++++++++++ - 1 file changed, 126 insertions(+) - -diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c -index 97b8eb1db3..126d2a17f4 100644 ---- a/libavcodec/v4l2_buffers.c -+++ b/libavcodec/v4l2_buffers.c -@@ -128,6 +128,105 @@ static enum AVColorPrimaries v4l2_get_color_primaries(V4L2Buffer *buf) - return AVCOL_PRI_UNSPECIFIED; - } - -+static void v4l2_set_color(V4L2Buffer *buf, -+ const enum AVColorPrimaries avcp, -+ const enum AVColorSpace avcs, -+ const enum AVColorTransferCharacteristic avxc) -+{ -+ enum v4l2_ycbcr_encoding ycbcr = V4L2_YCBCR_ENC_DEFAULT; -+ enum v4l2_colorspace cs = V4L2_COLORSPACE_DEFAULT; -+ enum v4l2_xfer_func xfer = V4L2_XFER_FUNC_DEFAULT; -+ -+ switch (avcp) { -+ case AVCOL_PRI_BT709: -+ cs = V4L2_COLORSPACE_REC709; -+ ycbcr = V4L2_YCBCR_ENC_709; -+ break; -+ case AVCOL_PRI_BT470M: -+ cs = V4L2_COLORSPACE_470_SYSTEM_M; -+ ycbcr = V4L2_YCBCR_ENC_601; -+ break; -+ case AVCOL_PRI_BT470BG: -+ cs = V4L2_COLORSPACE_470_SYSTEM_BG; -+ break; -+ case AVCOL_PRI_SMPTE170M: -+ cs = V4L2_COLORSPACE_SMPTE170M; -+ break; -+ case AVCOL_PRI_SMPTE240M: -+ cs = V4L2_COLORSPACE_SMPTE240M; -+ break; -+ case AVCOL_PRI_BT2020: -+ cs = V4L2_COLORSPACE_BT2020; -+ break; -+ case AVCOL_PRI_SMPTE428: -+ case AVCOL_PRI_SMPTE431: -+ case AVCOL_PRI_SMPTE432: -+ case AVCOL_PRI_EBU3213: -+ case AVCOL_PRI_RESERVED: -+ case AVCOL_PRI_FILM: -+ case AVCOL_PRI_UNSPECIFIED: -+ default: -+ break; -+ } -+ -+ switch (avcs) { -+ case AVCOL_SPC_RGB: -+ cs = V4L2_COLORSPACE_SRGB; -+ break; -+ case AVCOL_SPC_BT709: -+ cs = V4L2_COLORSPACE_REC709; -+ break; -+ case AVCOL_SPC_FCC: -+ cs = V4L2_COLORSPACE_470_SYSTEM_M; -+ break; -+ case AVCOL_SPC_BT470BG: -+ cs = V4L2_COLORSPACE_470_SYSTEM_BG; -+ break; -+ case AVCOL_SPC_SMPTE170M: -+ cs = V4L2_COLORSPACE_SMPTE170M; -+ break; -+ case AVCOL_SPC_SMPTE240M: -+ cs = V4L2_COLORSPACE_SMPTE240M; -+ break; -+ case AVCOL_SPC_BT2020_CL: -+ cs = V4L2_COLORSPACE_BT2020; -+ ycbcr = V4L2_YCBCR_ENC_BT2020_CONST_LUM; -+ break; -+ case AVCOL_SPC_BT2020_NCL: -+ cs = V4L2_COLORSPACE_BT2020; -+ break; -+ default: -+ break; -+ } -+ -+ switch (xfer) { -+ case AVCOL_TRC_BT709: -+ xfer = V4L2_XFER_FUNC_709; -+ break; -+ case AVCOL_TRC_IEC61966_2_1: -+ xfer = V4L2_XFER_FUNC_SRGB; -+ break; -+ case AVCOL_TRC_SMPTE240M: -+ xfer = V4L2_XFER_FUNC_SMPTE240M; -+ break; -+ case AVCOL_TRC_SMPTE2084: -+ xfer = V4L2_XFER_FUNC_SMPTE2084; -+ break; -+ default: -+ break; -+ } -+ -+ if (V4L2_TYPE_IS_MULTIPLANAR(buf->buf.type)) { -+ buf->context->format.fmt.pix_mp.colorspace = cs; -+ buf->context->format.fmt.pix_mp.ycbcr_enc = ycbcr; -+ buf->context->format.fmt.pix_mp.xfer_func = xfer; -+ } else { -+ buf->context->format.fmt.pix.colorspace = cs; -+ buf->context->format.fmt.pix.ycbcr_enc = ycbcr; -+ buf->context->format.fmt.pix.xfer_func = xfer; -+ } -+} -+ - static enum AVColorRange v4l2_get_color_range(V4L2Buffer *buf) - { - enum v4l2_quantization qt; -@@ -146,6 +245,20 @@ static enum AVColorRange v4l2_get_color_range(V4L2Buffer *buf) - return AVCOL_RANGE_UNSPECIFIED; - } - -+static void v4l2_set_color_range(V4L2Buffer *buf, const enum AVColorRange avcr) -+{ -+ const enum v4l2_quantization q = -+ avcr == AVCOL_RANGE_MPEG ? V4L2_QUANTIZATION_LIM_RANGE : -+ avcr == AVCOL_RANGE_JPEG ? V4L2_QUANTIZATION_FULL_RANGE : -+ V4L2_QUANTIZATION_DEFAULT; -+ -+ if (V4L2_TYPE_IS_MULTIPLANAR(buf->buf.type)) { -+ buf->context->format.fmt.pix_mp.quantization = q; -+ } else { -+ buf->context->format.fmt.pix.quantization = q; -+ } -+} -+ - static enum AVColorSpace v4l2_get_color_space(V4L2Buffer *buf) - { - enum v4l2_ycbcr_encoding ycbcr; -@@ -232,6 +345,12 @@ static int v4l2_buf_is_top_first(const V4L2Buffer * const buf) - return buf->buf.field == V4L2_FIELD_INTERLACED_TB; - } - -+static void v4l2_set_interlace(V4L2Buffer * const buf, const int is_interlaced, const int is_tff) -+{ -+ buf->buf.field = !is_interlaced ? V4L2_FIELD_NONE : -+ is_tff ? V4L2_FIELD_INTERLACED_TB : V4L2_FIELD_INTERLACED_BT; -+} -+ - static uint8_t * v4l2_get_drm_frame(V4L2Buffer *avbuf) - { - AVDRMFrameDescriptor *drm_desc = &avbuf->drm_frame; -@@ -561,7 +680,14 @@ static int v4l2_buffer_swframe_to_buf(const AVFrame *frame, V4L2Buffer *out) - - int ff_v4l2_buffer_avframe_to_buf(const AVFrame *frame, V4L2Buffer *out) - { -+ out->buf.flags = frame->key_frame ? (out->buf.flags & ~V4L2_BUF_FLAG_KEYFRAME) : (out->buf.flags | V4L2_BUF_FLAG_KEYFRAME); -+ // Beware that colour info is held in format rather than the actual -+ // v4l2 buffer struct so this may not be as useful as you might hope -+ v4l2_set_color(out, frame->color_primaries, frame->colorspace, frame->color_trc); -+ v4l2_set_color_range(out, frame->color_range); -+ // PTS & interlace are buffer vars - v4l2_set_pts(out, frame->pts, 0); -+ v4l2_set_interlace(out, frame->interlaced_frame, frame->top_field_first); - - return v4l2_buffer_swframe_to_buf(frame, out); - } - -From 15415ab226f966fd12e70d79fde3cb80f3d09144 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 17 Nov 2021 16:49:01 +0000 -Subject: [PATCH 026/151] ffmpeg: Do not inc DTS on no decode output - -V4L2 H264 decode has long latency and sometimes spits out a long stream -of output without input. In this case incrementing DTS is wrong. There -may be cases where the condition as written is correct so only "fix" in -the cases which cause problems ---- - fftools/ffmpeg.c | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c -index 5dc2cd73c1..ba0c1898cf 100644 ---- a/fftools/ffmpeg.c -+++ b/fftools/ffmpeg.c -@@ -2609,7 +2609,12 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eo - case AVMEDIA_TYPE_VIDEO: - ret = decode_video (ist, repeating ? NULL : avpkt, &got_output, &duration_pts, !pkt, - &decode_failed); -- if (!repeating || !pkt || got_output) { -+ // Pi: Do not inc dts if no_cvt_hw set -+ // V4L2 H264 decode has long latency and sometimes spits out a long -+ // stream of output without input. In this case incrementing DTS is wrong. -+ // There may be cases where the condition as written is correct so only -+ // "fix" in the cases which cause problems -+ if (!repeating || !pkt || (got_output && !no_cvt_hw)) { - if (pkt && pkt->duration) { - duration_dts = av_rescale_q(pkt->duration, ist->st->time_base, AV_TIME_BASE_Q); - } else if(ist->dec_ctx->framerate.num != 0 && ist->dec_ctx->framerate.den != 0) { - -From 7bf6c062ed8a1e635aa5722c0072724f236daf00 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 17 Nov 2021 17:32:59 +0000 -Subject: [PATCH 027/151] v4l2_m2m_dec: Adjust timebase if H264 - -Adjust AVCodecContext time_base if H264 in the same way that the -software decoder does. ---- - libavcodec/v4l2_m2m_dec.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 1851acbc93..aa1e5c1597 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -481,6 +481,16 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - - av_log(avctx, AV_LOG_TRACE, "<<< %s\n", __func__); - -+ if (avctx->codec_id == AV_CODEC_ID_H264) { -+ if (avctx->ticks_per_frame == 1) { -+ if(avctx->time_base.den < INT_MAX/2) { -+ avctx->time_base.den *= 2; -+ } else -+ avctx->time_base.num /= 2; -+ } -+ avctx->ticks_per_frame = 2; -+ } -+ - av_log(avctx, AV_LOG_INFO, "level=%d\n", avctx->level); - ret = ff_v4l2_m2m_create_context(priv, &s); - if (ret < 0) - -From 3cd23a761397ae75ed032c1687da5d6b76ddaaaa Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 17 Nov 2021 17:38:27 +0000 -Subject: [PATCH 028/151] v4l2_m2m_dec: Produce best guess PTSs if none - supplied - -Filter scheduling gets confused by missing PTSs and makes poor guesses -more often than not. Try to generate plausible timestamps where we are -missing them. ---- - libavcodec/v4l2_m2m.h | 12 ++++++++ - libavcodec/v4l2_m2m_dec.c | 64 +++++++++++++++++++++++++++++++++++++-- - 2 files changed, 74 insertions(+), 2 deletions(-) - -diff --git a/libavcodec/v4l2_m2m.h b/libavcodec/v4l2_m2m.h -index 8f054f2f50..82feb0afdb 100644 ---- a/libavcodec/v4l2_m2m.h -+++ b/libavcodec/v4l2_m2m.h -@@ -52,6 +52,16 @@ typedef struct V4L2m2mTrackEl { - int64_t track_pts; - } V4L2m2mTrackEl; - -+typedef struct pts_stats_s -+{ -+ void * logctx; -+ const char * name; // For debug -+ unsigned int last_count; -+ unsigned int last_interval; -+ int64_t last_pts; -+ int64_t guess; -+} pts_stats_t; -+ - typedef struct V4L2m2mContext { - char devname[PATH_MAX]; - int fd; -@@ -91,6 +101,8 @@ typedef struct V4L2m2mContext { - unsigned int track_no; - V4L2m2mTrackEl track_els[FF_V4L2_M2M_TRACK_SIZE]; - -+ pts_stats_t pts_stat; -+ - /* req pkt */ - int req_pkt; - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index aa1e5c1597..a5a2afbd27 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -42,6 +42,62 @@ - #include "v4l2_m2m.h" - #include "v4l2_fmt.h" - -+// Pick 64 for max last count - that is >1sec at 60fps -+#define STATS_LAST_COUNT_MAX 64 -+#define STATS_INTERVAL_MAX (1 << 30) -+ -+static int64_t pts_stats_guess(const pts_stats_t * const stats) -+{ -+ if (stats->last_pts == AV_NOPTS_VALUE || -+ stats->last_interval == 0 || -+ stats->last_count >= STATS_LAST_COUNT_MAX) -+ return AV_NOPTS_VALUE; -+ return stats->last_pts + (int64_t)(stats->last_count - 1) * (int64_t)stats->last_interval; -+} -+ -+static void pts_stats_add(pts_stats_t * const stats, int64_t pts) -+{ -+ if (pts == AV_NOPTS_VALUE || pts == stats->last_pts) { -+ if (stats->last_count < STATS_LAST_COUNT_MAX) -+ ++stats->last_count; -+ return; -+ } -+ -+ if (stats->last_pts != AV_NOPTS_VALUE) { -+ const int64_t interval = pts - stats->last_pts; -+ -+ if (interval < 0 || interval >= STATS_INTERVAL_MAX || -+ stats->last_count >= STATS_LAST_COUNT_MAX) { -+ if (stats->last_interval != 0) -+ av_log(stats->logctx, AV_LOG_DEBUG, "%s: %s: Bad interval: %" PRId64 "/%d\n", -+ __func__, stats->name, interval, stats->last_count); -+ stats->last_interval = 0; -+ } -+ else { -+ const int64_t frame_time = interval / (int64_t)stats->last_count; -+ -+ if (frame_time != stats->last_interval) -+ av_log(stats->logctx, AV_LOG_DEBUG, "%s: %s: New interval: %u->%" PRId64 "/%d=%" PRId64 "\n", -+ __func__, stats->name, stats->last_interval, interval, stats->last_count, frame_time); -+ stats->last_interval = frame_time; -+ } -+ } -+ -+ stats->last_pts = pts; -+ stats->last_count = 1; -+} -+ -+static void pts_stats_init(pts_stats_t * const stats, void * logctx, const char * name) -+{ -+ *stats = (pts_stats_t){ -+ .logctx = logctx, -+ .name = name, -+ .last_count = 1, -+ .last_interval = 0, -+ .last_pts = AV_NOPTS_VALUE -+ }; -+} -+ - static int check_output_streamon(AVCodecContext *const avctx, V4L2m2mContext *const s) - { - int ret; -@@ -244,9 +300,11 @@ xlat_pts_out(AVCodecContext *const avctx, V4L2m2mContext *const s, AVFrame *cons - return -1; - } - -- frame->best_effort_timestamp = frame->pts; -+ pts_stats_add(&s->pts_stat, frame->pts); -+ -+ frame->best_effort_timestamp = pts_stats_guess(&s->pts_stat); - frame->pkt_dts = frame->pts; // We can't emulate what s/w does in a useful manner? -- av_log(avctx, AV_LOG_TRACE, "Out PTS=%" PRId64 ", DTS=%" PRId64 "\n", frame->pts, frame->pkt_dts); -+ av_log(avctx, AV_LOG_TRACE, "Out PTS=%" PRId64 "/%"PRId64", DTS=%" PRId64 "\n", frame->pts, frame->best_effort_timestamp, frame->pkt_dts); - return 0; - } - -@@ -496,6 +554,8 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - if (ret < 0) - return ret; - -+ pts_stats_init(&s->pts_stat, avctx, "decoder"); -+ - capture = &s->capture; - output = &s->output; - - -From ee8be1e900f98212b6c4940980cc7a80becfc07c Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 17 Nov 2021 17:59:27 +0000 -Subject: [PATCH 029/151] v4l2_m2m_dec: Try harder to get an initial frame - -If the input Q is full then wait on a short timeout for a capture frame -rather than stuffing yet still another frame into the input if we could -do that first. This attempts to restrict the sometimes daft initial -buffering that ends up confusing the rest of the system. ---- - libavcodec/v4l2_context.c | 2 +- - libavcodec/v4l2_m2m_dec.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index eb901e8fab..ee5dc7b8d4 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -381,7 +381,7 @@ static V4L2Buffer* v4l2_dequeue_v4l2buf(V4L2Context *ctx, int timeout) - start: - if (is_capture) { - /* no need to listen to requests for more input while draining */ -- if (ctx_to_m2mctx(ctx)->draining) -+ if (ctx_to_m2mctx(ctx)->draining || timeout > 0) - pfd.events = POLLIN | POLLRDNORM | POLLPRI; - } else { - pfd.events = POLLOUT | POLLWRNORM; -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index a5a2afbd27..b49f470c0a 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -442,7 +442,7 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - // when discarding - // This returns AVERROR(EAGAIN) if there isn't a frame ready yet - // but there is room in the input Q -- dst_rv = ff_v4l2_context_dequeue_frame(&s->capture, frame, -1, 1); -+ dst_rv = ff_v4l2_context_dequeue_frame(&s->capture, frame, src_rv == NQ_Q_FULL ? 100 : -1, 1); - - if (dst_rv == AVERROR_EOF && (s->draining || s->capture.done)) - av_log(avctx, AV_LOG_DEBUG, "Dequeue EOF: draining=%d, cap.done=%d\n", - -From 72da14331c2160a12b69d666d493e0e74c5e8914 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 17 Nov 2021 18:04:56 +0000 -Subject: [PATCH 030/151] Add a V4L2 M2M deinterlace filter - -Add a V4L2 deinterlace filter that will accept DRMPRIME frames. - -Multiple people have contributed to this: -Jernej Skrabec -Alex Bee -popcornmix -John Cox - -There is an unknown delay through the filter of typically one or three -fields which translates to 1 or 2 frames. Frames that are delayed are -lost at end of stream as the V4L2 filter has no flush control. ---- - libavcodec/v4l2_context.c | 4 +- - libavfilter/Makefile | 1 + - libavfilter/allfilters.c | 1 + - libavfilter/vf_deinterlace_v4l2m2m.c | 1269 ++++++++++++++++++++++++++ - 4 files changed, 1273 insertions(+), 2 deletions(-) - create mode 100644 libavfilter/vf_deinterlace_v4l2m2m.c - -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index ee5dc7b8d4..440dfaaba5 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -498,10 +498,10 @@ dequeue: - return NULL; - } - --ctx->q_count; -- av_log(logger(ctx), AV_LOG_DEBUG, "--- %s VIDIOC_DQBUF OK: index=%d, ts=%ld.%06ld, count=%d, dq=%d\n", -+ av_log(logger(ctx), AV_LOG_DEBUG, "--- %s VIDIOC_DQBUF OK: index=%d, ts=%ld.%06ld, count=%d, dq=%d field=%d\n", - ctx->name, buf.index, - buf.timestamp.tv_sec, buf.timestamp.tv_usec, -- ctx->q_count, ++ctx->dq_count); -+ ctx->q_count, ++ctx->dq_count, buf.field); - - avbuf = (V4L2Buffer *)ctx->bufrefs[buf.index]->data; - avbuf->status = V4L2BUF_AVAILABLE; -diff --git a/libavfilter/Makefile b/libavfilter/Makefile -index c14fc995a0..0e7b5856bd 100644 ---- a/libavfilter/Makefile -+++ b/libavfilter/Makefile -@@ -262,6 +262,7 @@ OBJS-$(CONFIG_DEFLATE_FILTER) += vf_neighbor.o - OBJS-$(CONFIG_DEFLICKER_FILTER) += vf_deflicker.o - OBJS-$(CONFIG_DEINTERLACE_QSV_FILTER) += vf_vpp_qsv.o - OBJS-$(CONFIG_DEINTERLACE_VAAPI_FILTER) += vf_deinterlace_vaapi.o vaapi_vpp.o -+OBJS-$(CONFIG_DEINTERLACE_V4L2M2M_FILTER) += vf_deinterlace_v4l2m2m.o - OBJS-$(CONFIG_DEJUDDER_FILTER) += vf_dejudder.o - OBJS-$(CONFIG_DELOGO_FILTER) += vf_delogo.o - OBJS-$(CONFIG_DENOISE_VAAPI_FILTER) += vf_misc_vaapi.o vaapi_vpp.o -diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c -index b990a00152..357ff61ca8 100644 ---- a/libavfilter/allfilters.c -+++ b/libavfilter/allfilters.c -@@ -248,6 +248,7 @@ extern const AVFilter ff_vf_derain; - extern const AVFilter ff_vf_deshake; - extern const AVFilter ff_vf_deshake_opencl; - extern const AVFilter ff_vf_despill; -+extern const AVFilter ff_vf_deinterlace_v4l2m2m; - extern const AVFilter ff_vf_detelecine; - extern const AVFilter ff_vf_dilation; - extern const AVFilter ff_vf_dilation_opencl; -diff --git a/libavfilter/vf_deinterlace_v4l2m2m.c b/libavfilter/vf_deinterlace_v4l2m2m.c -new file mode 100644 -index 0000000000..1a933b7e0a ---- /dev/null -+++ b/libavfilter/vf_deinterlace_v4l2m2m.c -@@ -0,0 +1,1269 @@ -+/* -+ * This file is part of FFmpeg. -+ * -+ * FFmpeg is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * FFmpeg is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with FFmpeg; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+/** -+ * @file -+ * deinterlace video filter - V4L2 M2M -+ */ -+ -+#include -+ -+#include -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "libavutil/avassert.h" -+#include "libavutil/avstring.h" -+#include "libavutil/common.h" -+#include "libavutil/hwcontext.h" -+#include "libavutil/hwcontext_drm.h" -+#include "libavutil/internal.h" -+#include "libavutil/mathematics.h" -+#include "libavutil/opt.h" -+#include "libavutil/pixdesc.h" -+#include "libavutil/time.h" -+ -+#define FF_INTERNAL_FIELDS 1 -+#include "framequeue.h" -+#include "filters.h" -+#include "avfilter.h" -+#include "formats.h" -+#include "internal.h" -+#include "video.h" -+ -+typedef struct V4L2Queue V4L2Queue; -+typedef struct DeintV4L2M2MContextShared DeintV4L2M2MContextShared; -+ -+typedef struct V4L2PlaneInfo { -+ int bytesperline; -+ size_t length; -+} V4L2PlaneInfo; -+ -+typedef struct V4L2Buffer { -+ int enqueued; -+ int reenqueue; -+ int fd; -+ struct v4l2_buffer buffer; -+ AVFrame frame; -+ struct v4l2_plane planes[VIDEO_MAX_PLANES]; -+ int num_planes; -+ V4L2PlaneInfo plane_info[VIDEO_MAX_PLANES]; -+ AVDRMFrameDescriptor drm_frame; -+ V4L2Queue *q; -+} V4L2Buffer; -+ -+typedef struct V4L2Queue { -+ struct v4l2_format format; -+ int num_buffers; -+ V4L2Buffer *buffers; -+ DeintV4L2M2MContextShared *ctx; -+} V4L2Queue; -+ -+typedef struct pts_stats_s -+{ -+ void * logctx; -+ const char * name; // For debug -+ unsigned int last_count; -+ unsigned int last_interval; -+ int64_t last_pts; -+} pts_stats_t; -+ -+#define PTS_TRACK_SIZE 32 -+typedef struct pts_track_el_s -+{ -+ uint32_t n; -+ unsigned int interval; -+ AVFrame * props; -+} pts_track_el_t; -+ -+typedef struct pts_track_s -+{ -+ uint32_t n; -+ uint32_t last_n; -+ int got_2; -+ void * logctx; -+ pts_stats_t stats; -+ pts_track_el_t a[PTS_TRACK_SIZE]; -+} pts_track_t; -+ -+typedef struct DeintV4L2M2MContextShared { -+ void * logctx; // For logging - will be NULL when done -+ -+ int fd; -+ int done; -+ int width; -+ int height; -+ int orig_width; -+ int orig_height; -+ atomic_uint refcount; -+ -+ AVBufferRef *hw_frames_ctx; -+ -+ unsigned int field_order; -+ -+ pts_track_t track; -+ -+ V4L2Queue output; -+ V4L2Queue capture; -+} DeintV4L2M2MContextShared; -+ -+typedef struct DeintV4L2M2MContext { -+ const AVClass *class; -+ -+ DeintV4L2M2MContextShared *shared; -+} DeintV4L2M2MContext; -+ -+static unsigned int pts_stats_interval(const pts_stats_t * const stats) -+{ -+ return stats->last_interval; -+} -+ -+// Pick 64 for max last count - that is >1sec at 60fps -+#define STATS_LAST_COUNT_MAX 64 -+#define STATS_INTERVAL_MAX (1 << 30) -+static void pts_stats_add(pts_stats_t * const stats, int64_t pts) -+{ -+ if (pts == AV_NOPTS_VALUE || pts == stats->last_pts) { -+ if (stats->last_count < STATS_LAST_COUNT_MAX) -+ ++stats->last_count; -+ return; -+ } -+ -+ if (stats->last_pts != AV_NOPTS_VALUE) { -+ const int64_t interval = pts - stats->last_pts; -+ -+ if (interval < 0 || interval >= STATS_INTERVAL_MAX || -+ stats->last_count >= STATS_LAST_COUNT_MAX) { -+ if (stats->last_interval != 0) -+ av_log(stats->logctx, AV_LOG_DEBUG, "%s: %s: Bad interval: %" PRId64 "/%d\n", -+ __func__, stats->name, interval, stats->last_count); -+ stats->last_interval = 0; -+ } -+ else { -+ const int64_t frame_time = interval / (int64_t)stats->last_count; -+ -+ if (frame_time != stats->last_interval) -+ av_log(stats->logctx, AV_LOG_DEBUG, "%s: %s: New interval: %u->%" PRId64 "/%d=%" PRId64 "\n", -+ __func__, stats->name, stats->last_interval, interval, stats->last_count, frame_time); -+ stats->last_interval = frame_time; -+ } -+ } -+ -+ stats->last_pts = pts; -+ stats->last_count = 1; -+} -+ -+static void pts_stats_init(pts_stats_t * const stats, void * logctx, const char * name) -+{ -+ *stats = (pts_stats_t){ -+ .logctx = logctx, -+ .name = name, -+ .last_count = 1, -+ .last_interval = 0, -+ .last_pts = AV_NOPTS_VALUE -+ }; -+} -+ -+static inline uint32_t pts_track_next_n(pts_track_t * const trk) -+{ -+ if (++trk->n == 0) -+ trk->n = 1; -+ return trk->n; -+} -+ -+static int pts_track_get_frame(pts_track_t * const trk, const struct timeval tv, AVFrame * const dst) -+{ -+ uint32_t n = (uint32_t)(tv.tv_usec / 2 + tv.tv_sec * 500000); -+ pts_track_el_t * t; -+ -+ // As a first guess assume that n==0 means last frame -+ if (n == 0) { -+ n = trk->last_n; -+ if (n == 0) -+ goto fail; -+ } -+ -+ t = trk->a + (n & (PTS_TRACK_SIZE - 1)); -+ -+ if (t->n != n) { -+ av_log(trk->logctx, AV_LOG_ERROR, "%s: track failure: got %u, expected %u\n", __func__, n, trk->n); -+ goto fail; -+ } -+ -+ // 1st frame is simple - just believe it -+ if (n != trk->last_n) { -+ trk->last_n = n; -+ trk->got_2 = 0; -+ return av_frame_copy_props(dst, t->props); -+ } -+ -+ // Only believe in a single interpolated frame -+ if (trk->got_2) -+ goto fail; -+ trk->got_2 = 1; -+ -+ av_frame_copy_props(dst, t->props); -+ -+ -+ // If we can't guess - don't -+ if (t->interval == 0) { -+ dst->best_effort_timestamp = AV_NOPTS_VALUE; -+ dst->pts = AV_NOPTS_VALUE; -+ dst->pkt_dts = AV_NOPTS_VALUE; -+ } -+ else { -+ if (dst->best_effort_timestamp != AV_NOPTS_VALUE) -+ dst->best_effort_timestamp += t->interval / 2; -+ if (dst->pts != AV_NOPTS_VALUE) -+ dst->pts += t->interval / 2; -+ if (dst->pkt_dts != AV_NOPTS_VALUE) -+ dst->pkt_dts += t->interval / 2; -+ } -+ -+ return 0; -+ -+fail: -+ trk->last_n = 0; -+ trk->got_2 = 0; -+ dst->pts = AV_NOPTS_VALUE; -+ dst->pkt_dts = AV_NOPTS_VALUE; -+ return 0; -+} -+ -+static struct timeval pts_track_add_frame(pts_track_t * const trk, const AVFrame * const src) -+{ -+ const uint32_t n = pts_track_next_n(trk); -+ pts_track_el_t * const t = trk->a + (n & (PTS_TRACK_SIZE - 1)); -+ -+ pts_stats_add(&trk->stats, src->pts); -+ -+ t->n = n; -+ t->interval = pts_stats_interval(&trk->stats); // guess that next interval is the same as the last -+ av_frame_unref(t->props); -+ av_frame_copy_props(t->props, src); -+ -+ // We now know what the previous interval was, rather than having to guess, -+ // so set it. There is a better than decent chance that this is before -+ // we use it. -+ if (t->interval != 0) { -+ pts_track_el_t * const prev_t = trk->a + ((n - 1) & (PTS_TRACK_SIZE - 1)); -+ prev_t->interval = t->interval; -+ } -+ -+ // In case deinterlace interpolates frames use every other usec -+ return (struct timeval){.tv_sec = n / 500000, .tv_usec = (n % 500000) * 2}; -+} -+ -+static void pts_track_uninit(pts_track_t * const trk) -+{ -+ unsigned int i; -+ for (i = 0; i != PTS_TRACK_SIZE; ++i) { -+ trk->a[i].n = 0; -+ av_frame_free(&trk->a[i].props); -+ } -+} -+ -+static int pts_track_init(pts_track_t * const trk, void *logctx) -+{ -+ unsigned int i; -+ trk->n = 1; -+ pts_stats_init(&trk->stats, logctx, "track"); -+ for (i = 0; i != PTS_TRACK_SIZE; ++i) { -+ trk->a[i].n = 0; -+ if ((trk->a[i].props = av_frame_alloc()) == NULL) { -+ pts_track_uninit(trk); -+ return AVERROR(ENOMEM); -+ } -+ } -+ return 0; -+} -+ -+static int deint_v4l2m2m_prepare_context(DeintV4L2M2MContextShared *ctx) -+{ -+ struct v4l2_capability cap; -+ int ret; -+ -+ memset(&cap, 0, sizeof(cap)); -+ ret = ioctl(ctx->fd, VIDIOC_QUERYCAP, &cap); -+ if (ret < 0) -+ return ret; -+ -+ if (!(cap.capabilities & V4L2_CAP_STREAMING)) -+ return AVERROR(EINVAL); -+ -+ if (cap.capabilities & V4L2_CAP_VIDEO_M2M) { -+ ctx->capture.format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; -+ ctx->output.format.type = V4L2_BUF_TYPE_VIDEO_OUTPUT; -+ -+ return 0; -+ } -+ -+ if (cap.capabilities & V4L2_CAP_VIDEO_M2M_MPLANE) { -+ ctx->capture.format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; -+ ctx->output.format.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE; -+ -+ return 0; -+ } -+ -+ return AVERROR(EINVAL); -+} -+ -+static int deint_v4l2m2m_try_format(V4L2Queue *queue) -+{ -+ struct v4l2_format *fmt = &queue->format; -+ DeintV4L2M2MContextShared *ctx = queue->ctx; -+ int ret, field; -+ -+ ret = ioctl(ctx->fd, VIDIOC_G_FMT, fmt); -+ if (ret) -+ av_log(ctx->logctx, AV_LOG_ERROR, "VIDIOC_G_FMT failed: %d\n", ret); -+ -+ if (V4L2_TYPE_IS_OUTPUT(fmt->type)) -+ field = V4L2_FIELD_INTERLACED_TB; -+ else -+ field = V4L2_FIELD_NONE; -+ -+ if (V4L2_TYPE_IS_MULTIPLANAR(fmt->type)) { -+ fmt->fmt.pix_mp.pixelformat = V4L2_PIX_FMT_YUV420; -+ fmt->fmt.pix_mp.field = field; -+ fmt->fmt.pix_mp.width = ctx->width; -+ fmt->fmt.pix_mp.height = ctx->height; -+ } else { -+ fmt->fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420; -+ fmt->fmt.pix.field = field; -+ fmt->fmt.pix.width = ctx->width; -+ fmt->fmt.pix.height = ctx->height; -+ } -+ -+ av_log(ctx->logctx, AV_LOG_DEBUG, "%s: Trying format for type %d, wxh: %dx%d, fmt: %08x, size %u bpl %u pre\n", __func__, -+ fmt->type, fmt->fmt.pix_mp.width, fmt->fmt.pix_mp.height, -+ fmt->fmt.pix_mp.pixelformat, -+ fmt->fmt.pix_mp.plane_fmt[0].sizeimage, fmt->fmt.pix_mp.plane_fmt[0].bytesperline); -+ -+ ret = ioctl(ctx->fd, VIDIOC_TRY_FMT, fmt); -+ if (ret) -+ return AVERROR(EINVAL); -+ -+ av_log(ctx->logctx, AV_LOG_DEBUG, "%s: Trying format for type %d, wxh: %dx%d, fmt: %08x, size %u bpl %u post\n", __func__, -+ fmt->type, fmt->fmt.pix_mp.width, fmt->fmt.pix_mp.height, -+ fmt->fmt.pix_mp.pixelformat, -+ fmt->fmt.pix_mp.plane_fmt[0].sizeimage, fmt->fmt.pix_mp.plane_fmt[0].bytesperline); -+ -+ if (V4L2_TYPE_IS_MULTIPLANAR(fmt->type)) { -+ if (fmt->fmt.pix_mp.pixelformat != V4L2_PIX_FMT_YUV420 || -+ fmt->fmt.pix_mp.field != field) { -+ av_log(ctx->logctx, AV_LOG_DEBUG, "format not supported for type %d\n", fmt->type); -+ -+ return AVERROR(EINVAL); -+ } -+ } else { -+ if (fmt->fmt.pix.pixelformat != V4L2_PIX_FMT_YUV420 || -+ fmt->fmt.pix.field != field) { -+ av_log(ctx->logctx, AV_LOG_DEBUG, "format not supported for type %d\n", fmt->type); -+ -+ return AVERROR(EINVAL); -+ } -+ } -+ -+ return 0; -+} -+ -+static int deint_v4l2m2m_set_format(V4L2Queue *queue, uint32_t field, int width, int height, int pitch, int ysize) -+{ -+ struct v4l2_format *fmt = &queue->format; -+ DeintV4L2M2MContextShared *ctx = queue->ctx; -+ int ret; -+ -+ struct v4l2_selection sel = { -+ .type = fmt->type, -+ .target = V4L2_TYPE_IS_OUTPUT(fmt->type) ? V4L2_SEL_TGT_CROP_BOUNDS : V4L2_SEL_TGT_COMPOSE_BOUNDS, -+ }; -+ -+ if (V4L2_TYPE_IS_MULTIPLANAR(fmt->type)) { -+ fmt->fmt.pix_mp.field = field; -+ fmt->fmt.pix_mp.width = width; -+ fmt->fmt.pix_mp.height = ysize / pitch; -+ fmt->fmt.pix_mp.plane_fmt[0].bytesperline = pitch; -+ fmt->fmt.pix_mp.plane_fmt[0].sizeimage = ysize + (ysize >> 1); -+ } else { -+ fmt->fmt.pix.field = field; -+ fmt->fmt.pix.width = width; -+ fmt->fmt.pix.height = height; -+ fmt->fmt.pix.sizeimage = 0; -+ fmt->fmt.pix.bytesperline = 0; -+ } -+ -+ ret = ioctl(ctx->fd, VIDIOC_S_FMT, fmt); -+ if (ret) -+ av_log(ctx->logctx, AV_LOG_ERROR, "VIDIOC_S_FMT failed: %d\n", ret); -+ -+ ret = ioctl(ctx->fd, VIDIOC_G_SELECTION, &sel); -+ if (ret) -+ av_log(ctx->logctx, AV_LOG_ERROR, "VIDIOC_G_SELECTION failed: %d\n", ret); -+ -+ sel.r.width = width; -+ sel.r.height = height; -+ sel.r.left = 0; -+ sel.r.top = 0; -+ sel.target = V4L2_TYPE_IS_OUTPUT(fmt->type) ? V4L2_SEL_TGT_CROP : V4L2_SEL_TGT_COMPOSE, -+ sel.flags = V4L2_SEL_FLAG_LE; -+ -+ ret = ioctl(ctx->fd, VIDIOC_S_SELECTION, &sel); -+ if (ret) -+ av_log(ctx->logctx, AV_LOG_ERROR, "VIDIOC_S_SELECTION failed: %d\n", ret); -+ -+ return ret; -+} -+ -+static int deint_v4l2m2m_probe_device(DeintV4L2M2MContextShared *ctx, char *node) -+{ -+ int ret; -+ -+ ctx->fd = open(node, O_RDWR | O_NONBLOCK, 0); -+ if (ctx->fd < 0) -+ return AVERROR(errno); -+ -+ ret = deint_v4l2m2m_prepare_context(ctx); -+ if (ret) -+ goto fail; -+ -+ ret = deint_v4l2m2m_try_format(&ctx->capture); -+ if (ret) -+ goto fail; -+ -+ ret = deint_v4l2m2m_try_format(&ctx->output); -+ if (ret) -+ goto fail; -+ -+ return 0; -+ -+fail: -+ close(ctx->fd); -+ ctx->fd = -1; -+ -+ return ret; -+} -+ -+static int deint_v4l2m2m_find_device(DeintV4L2M2MContextShared *ctx) -+{ -+ int ret = AVERROR(EINVAL); -+ struct dirent *entry; -+ char node[PATH_MAX]; -+ DIR *dirp; -+ -+ dirp = opendir("/dev"); -+ if (!dirp) -+ return AVERROR(errno); -+ -+ for (entry = readdir(dirp); entry; entry = readdir(dirp)) { -+ -+ if (strncmp(entry->d_name, "video", 5)) -+ continue; -+ -+ snprintf(node, sizeof(node), "/dev/%s", entry->d_name); -+ av_log(ctx->logctx, AV_LOG_DEBUG, "probing device %s\n", node); -+ ret = deint_v4l2m2m_probe_device(ctx, node); -+ if (!ret) -+ break; -+ } -+ -+ closedir(dirp); -+ -+ if (ret) { -+ av_log(ctx->logctx, AV_LOG_ERROR, "Could not find a valid device\n"); -+ ctx->fd = -1; -+ -+ return ret; -+ } -+ -+ av_log(ctx->logctx, AV_LOG_INFO, "Using device %s\n", node); -+ -+ return 0; -+} -+ -+static int deint_v4l2m2m_enqueue_buffer(V4L2Buffer *buf) -+{ -+ int ret; -+ -+ ret = ioctl(buf->q->ctx->fd, VIDIOC_QBUF, &buf->buffer); -+ if (ret < 0) -+ return AVERROR(errno); -+ -+ buf->enqueued = 1; -+ -+ return 0; -+} -+ -+static int v4l2_buffer_export_drm(V4L2Buffer* avbuf) -+{ -+ struct v4l2_exportbuffer expbuf; -+ int i, ret; -+ -+ for (i = 0; i < avbuf->num_planes; i++) { -+ memset(&expbuf, 0, sizeof(expbuf)); -+ -+ expbuf.index = avbuf->buffer.index; -+ expbuf.type = avbuf->buffer.type; -+ expbuf.plane = i; -+ -+ ret = ioctl(avbuf->q->ctx->fd, VIDIOC_EXPBUF, &expbuf); -+ if (ret < 0) -+ return AVERROR(errno); -+ -+ avbuf->fd = expbuf.fd; -+ -+ if (V4L2_TYPE_IS_MULTIPLANAR(avbuf->buffer.type)) { -+ /* drm frame */ -+ avbuf->drm_frame.objects[i].size = avbuf->buffer.m.planes[i].length; -+ avbuf->drm_frame.objects[i].fd = expbuf.fd; -+ avbuf->drm_frame.objects[i].format_modifier = DRM_FORMAT_MOD_LINEAR; -+ } else { -+ /* drm frame */ -+ avbuf->drm_frame.objects[0].size = avbuf->buffer.length; -+ avbuf->drm_frame.objects[0].fd = expbuf.fd; -+ avbuf->drm_frame.objects[0].format_modifier = DRM_FORMAT_MOD_LINEAR; -+ } -+ } -+ -+ return 0; -+} -+ -+static int deint_v4l2m2m_allocate_buffers(V4L2Queue *queue) -+{ -+ struct v4l2_format *fmt = &queue->format; -+ DeintV4L2M2MContextShared *ctx = queue->ctx; -+ struct v4l2_requestbuffers req; -+ int ret, i, j, multiplanar; -+ uint32_t memory; -+ -+ memory = V4L2_TYPE_IS_OUTPUT(fmt->type) ? -+ V4L2_MEMORY_DMABUF : V4L2_MEMORY_MMAP; -+ -+ multiplanar = V4L2_TYPE_IS_MULTIPLANAR(fmt->type); -+ -+ memset(&req, 0, sizeof(req)); -+ req.count = queue->num_buffers; -+ req.memory = memory; -+ req.type = fmt->type; -+ -+ ret = ioctl(ctx->fd, VIDIOC_REQBUFS, &req); -+ if (ret < 0) { -+ av_log(ctx->logctx, AV_LOG_ERROR, "VIDIOC_REQBUFS failed: %s\n", strerror(errno)); -+ -+ return AVERROR(errno); -+ } -+ -+ queue->num_buffers = req.count; -+ queue->buffers = av_mallocz(queue->num_buffers * sizeof(V4L2Buffer)); -+ if (!queue->buffers) { -+ av_log(ctx->logctx, AV_LOG_ERROR, "malloc enomem\n"); -+ -+ return AVERROR(ENOMEM); -+ } -+ -+ for (i = 0; i < queue->num_buffers; i++) { -+ V4L2Buffer *buf = &queue->buffers[i]; -+ -+ buf->enqueued = 0; -+ buf->fd = -1; -+ buf->q = queue; -+ -+ buf->buffer.type = fmt->type; -+ buf->buffer.memory = memory; -+ buf->buffer.index = i; -+ -+ if (multiplanar) { -+ buf->buffer.length = VIDEO_MAX_PLANES; -+ buf->buffer.m.planes = buf->planes; -+ } -+ -+ ret = ioctl(ctx->fd, VIDIOC_QUERYBUF, &buf->buffer); -+ if (ret < 0) { -+ ret = AVERROR(errno); -+ -+ goto fail; -+ } -+ -+ if (multiplanar) -+ buf->num_planes = buf->buffer.length; -+ else -+ buf->num_planes = 1; -+ -+ for (j = 0; j < buf->num_planes; j++) { -+ V4L2PlaneInfo *info = &buf->plane_info[j]; -+ -+ if (multiplanar) { -+ info->bytesperline = fmt->fmt.pix_mp.plane_fmt[j].bytesperline; -+ info->length = buf->buffer.m.planes[j].length; -+ } else { -+ info->bytesperline = fmt->fmt.pix.bytesperline; -+ info->length = buf->buffer.length; -+ } -+ } -+ -+ if (!V4L2_TYPE_IS_OUTPUT(fmt->type)) { -+ ret = deint_v4l2m2m_enqueue_buffer(buf); -+ if (ret) -+ goto fail; -+ -+ ret = v4l2_buffer_export_drm(buf); -+ if (ret) -+ goto fail; -+ } -+ } -+ -+ return 0; -+ -+fail: -+ for (i = 0; i < queue->num_buffers; i++) -+ if (queue->buffers[i].fd >= 0) -+ close(queue->buffers[i].fd); -+ av_free(queue->buffers); -+ queue->buffers = NULL; -+ -+ return ret; -+} -+ -+static int deint_v4l2m2m_streamon(V4L2Queue *queue) -+{ -+ DeintV4L2M2MContextShared * const ctx = queue->ctx; -+ int type = queue->format.type; -+ int ret; -+ -+ ret = ioctl(ctx->fd, VIDIOC_STREAMON, &type); -+ av_log(ctx->logctx, AV_LOG_DEBUG, "%s: type:%d ret:%d errno:%d\n", __func__, type, ret, AVERROR(errno)); -+ if (ret < 0) -+ return AVERROR(errno); -+ -+ return 0; -+} -+ -+static int deint_v4l2m2m_streamoff(V4L2Queue *queue) -+{ -+ DeintV4L2M2MContextShared * const ctx = queue->ctx; -+ int type = queue->format.type; -+ int ret; -+ -+ ret = ioctl(ctx->fd, VIDIOC_STREAMOFF, &type); -+ av_log(ctx->logctx, AV_LOG_DEBUG, "%s: type:%d ret:%d errno:%d\n", __func__, type, ret, AVERROR(errno)); -+ if (ret < 0) -+ return AVERROR(errno); -+ -+ return 0; -+} -+ -+// timeout in ms -+static V4L2Buffer* deint_v4l2m2m_dequeue_buffer(V4L2Queue *queue, int timeout) -+{ -+ struct v4l2_plane planes[VIDEO_MAX_PLANES]; -+ DeintV4L2M2MContextShared *ctx = queue->ctx; -+ struct v4l2_buffer buf = { 0 }; -+ V4L2Buffer* avbuf = NULL; -+ struct pollfd pfd; -+ short events; -+ int ret; -+ -+ if (V4L2_TYPE_IS_OUTPUT(queue->format.type)) -+ events = POLLOUT | POLLWRNORM; -+ else -+ events = POLLIN | POLLRDNORM; -+ -+ pfd.events = events; -+ pfd.fd = ctx->fd; -+ -+ for (;;) { -+ ret = poll(&pfd, 1, timeout); -+ if (ret > 0) -+ break; -+ if (errno == EINTR) -+ continue; -+ return NULL; -+ } -+ -+ if (pfd.revents & POLLERR) -+ return NULL; -+ -+ if (pfd.revents & events) { -+ memset(&buf, 0, sizeof(buf)); -+ buf.memory = V4L2_MEMORY_MMAP; -+ buf.type = queue->format.type; -+ if (V4L2_TYPE_IS_MULTIPLANAR(queue->format.type)) { -+ memset(planes, 0, sizeof(planes)); -+ buf.length = VIDEO_MAX_PLANES; -+ buf.m.planes = planes; -+ } -+ -+ ret = ioctl(ctx->fd, VIDIOC_DQBUF, &buf); -+ if (ret) { -+ if (errno != EAGAIN) -+ av_log(ctx->logctx, AV_LOG_DEBUG, "VIDIOC_DQBUF, errno (%s)\n", -+ av_err2str(AVERROR(errno))); -+ return NULL; -+ } -+ -+ avbuf = &queue->buffers[buf.index]; -+ avbuf->enqueued = 0; -+ avbuf->buffer = buf; -+ if (V4L2_TYPE_IS_MULTIPLANAR(queue->format.type)) { -+ memcpy(avbuf->planes, planes, sizeof(planes)); -+ avbuf->buffer.m.planes = avbuf->planes; -+ } -+ return avbuf; -+ } -+ -+ return NULL; -+} -+ -+static V4L2Buffer *deint_v4l2m2m_find_free_buf(V4L2Queue *queue) -+{ -+ int i; -+ V4L2Buffer *buf = NULL; -+ -+ for (i = 0; i < queue->num_buffers; i++) -+ if (!queue->buffers[i].enqueued) { -+ buf = &queue->buffers[i]; -+ break; -+ } -+ return buf; -+} -+ -+static void deint_v4l2m2m_unref_queued(V4L2Queue *queue) -+{ -+ int i; -+ V4L2Buffer *buf = NULL; -+ -+ if (!queue || !queue->buffers) -+ return; -+ for (i = 0; i < queue->num_buffers; i++) { -+ buf = &queue->buffers[i]; -+ if (queue->buffers[i].enqueued) -+ av_frame_unref(&buf->frame); -+ } -+} -+ -+static void recycle_q(V4L2Queue * const queue) -+{ -+ V4L2Buffer* avbuf; -+ while (avbuf = deint_v4l2m2m_dequeue_buffer(queue, 0), avbuf) { -+ av_frame_unref(&avbuf->frame); -+ } -+} -+ -+static int count_enqueued(V4L2Queue *queue) -+{ -+ int i; -+ int n = 0; -+ -+ if (queue->buffers == NULL) -+ return 0; -+ -+ for (i = 0; i < queue->num_buffers; i++) -+ if (queue->buffers[i].enqueued) -+ ++n; -+ return n; -+} -+ -+static int deint_v4l2m2m_enqueue_frame(V4L2Queue * const queue, AVFrame * const frame) -+{ -+ DeintV4L2M2MContextShared *const ctx = queue->ctx; -+ AVDRMFrameDescriptor *drm_desc = (AVDRMFrameDescriptor *)frame->data[0]; -+ V4L2Buffer *buf; -+ int i; -+ -+ if (V4L2_TYPE_IS_OUTPUT(queue->format.type)) -+ recycle_q(queue); -+ -+ buf = deint_v4l2m2m_find_free_buf(queue); -+ if (!buf) { -+ av_log(ctx->logctx, AV_LOG_ERROR, "%s: error %d finding free buf\n", __func__, 0); -+ return AVERROR(EAGAIN); -+ } -+ if (V4L2_TYPE_IS_MULTIPLANAR(buf->buffer.type)) -+ for (i = 0; i < drm_desc->nb_objects; i++) -+ buf->buffer.m.planes[i].m.fd = drm_desc->objects[i].fd; -+ else -+ buf->buffer.m.fd = drm_desc->objects[0].fd; -+ -+ buf->buffer.field = !frame->interlaced_frame ? V4L2_FIELD_NONE : -+ frame->top_field_first ? V4L2_FIELD_INTERLACED_TB : -+ V4L2_FIELD_INTERLACED_BT; -+ -+ if (ctx->field_order != buf->buffer.field) { -+ av_log(ctx->logctx, AV_LOG_DEBUG, "%s: Field changed: %d->%d\n", __func__, ctx->field_order, buf->buffer.field); -+ ctx->field_order = buf->buffer.field; -+ } -+ -+ buf->buffer.timestamp = pts_track_add_frame(&ctx->track, frame); -+ -+ buf->drm_frame.objects[0].fd = drm_desc->objects[0].fd; -+ -+ av_frame_move_ref(&buf->frame, frame); -+ -+ return deint_v4l2m2m_enqueue_buffer(buf); -+} -+ -+static void deint_v4l2m2m_destroy_context(DeintV4L2M2MContextShared *ctx) -+{ -+ if (atomic_fetch_sub(&ctx->refcount, 1) == 1) { -+ V4L2Queue *capture = &ctx->capture; -+ V4L2Queue *output = &ctx->output; -+ int i; -+ -+ av_log(NULL, AV_LOG_DEBUG, "%s - destroying context\n", __func__); -+ -+ if (ctx->fd >= 0) { -+ deint_v4l2m2m_streamoff(capture); -+ deint_v4l2m2m_streamoff(output); -+ } -+ -+ if (capture->buffers) -+ for (i = 0; i < capture->num_buffers; i++) { -+ capture->buffers[i].q = NULL; -+ if (capture->buffers[i].fd >= 0) -+ close(capture->buffers[i].fd); -+ } -+ -+ deint_v4l2m2m_unref_queued(output); -+ -+ av_buffer_unref(&ctx->hw_frames_ctx); -+ -+ if (capture->buffers) -+ av_free(capture->buffers); -+ -+ if (output->buffers) -+ av_free(output->buffers); -+ -+ if (ctx->fd >= 0) { -+ close(ctx->fd); -+ ctx->fd = -1; -+ } -+ -+ av_free(ctx); -+ } -+} -+ -+static void v4l2_free_buffer(void *opaque, uint8_t *unused) -+{ -+ V4L2Buffer *buf = opaque; -+ DeintV4L2M2MContextShared *ctx = buf->q->ctx; -+ -+ if (!ctx->done) -+ deint_v4l2m2m_enqueue_buffer(buf); -+ -+ deint_v4l2m2m_destroy_context(ctx); -+} -+ -+static uint8_t * v4l2_get_drm_frame(V4L2Buffer *avbuf, int height) -+{ -+ int av_pix_fmt = AV_PIX_FMT_YUV420P; -+ AVDRMFrameDescriptor *drm_desc = &avbuf->drm_frame; -+ AVDRMLayerDescriptor *layer; -+ -+ /* fill the DRM frame descriptor */ -+ drm_desc->nb_objects = avbuf->num_planes; -+ drm_desc->nb_layers = 1; -+ -+ layer = &drm_desc->layers[0]; -+ layer->nb_planes = avbuf->num_planes; -+ -+ for (int i = 0; i < avbuf->num_planes; i++) { -+ layer->planes[i].object_index = i; -+ layer->planes[i].offset = 0; -+ layer->planes[i].pitch = avbuf->plane_info[i].bytesperline; -+ } -+ -+ switch (av_pix_fmt) { -+ case AV_PIX_FMT_YUYV422: -+ -+ layer->format = DRM_FORMAT_YUYV; -+ layer->nb_planes = 1; -+ -+ break; -+ -+ case AV_PIX_FMT_NV12: -+ case AV_PIX_FMT_NV21: -+ -+ layer->format = av_pix_fmt == AV_PIX_FMT_NV12 ? -+ DRM_FORMAT_NV12 : DRM_FORMAT_NV21; -+ -+ if (avbuf->num_planes > 1) -+ break; -+ -+ layer->nb_planes = 2; -+ -+ layer->planes[1].object_index = 0; -+ layer->planes[1].offset = avbuf->plane_info[0].bytesperline * -+ height; -+ layer->planes[1].pitch = avbuf->plane_info[0].bytesperline; -+ break; -+ -+ case AV_PIX_FMT_YUV420P: -+ -+ layer->format = DRM_FORMAT_YUV420; -+ -+ if (avbuf->num_planes > 1) -+ break; -+ -+ layer->nb_planes = 3; -+ -+ layer->planes[1].object_index = 0; -+ layer->planes[1].offset = avbuf->plane_info[0].bytesperline * -+ height; -+ layer->planes[1].pitch = avbuf->plane_info[0].bytesperline >> 1; -+ -+ layer->planes[2].object_index = 0; -+ layer->planes[2].offset = layer->planes[1].offset + -+ ((avbuf->plane_info[0].bytesperline * -+ height) >> 2); -+ layer->planes[2].pitch = avbuf->plane_info[0].bytesperline >> 1; -+ break; -+ -+ default: -+ drm_desc->nb_layers = 0; -+ break; -+ } -+ -+ return (uint8_t *) drm_desc; -+} -+ -+// timeout in ms -+static int deint_v4l2m2m_dequeue_frame(V4L2Queue *queue, AVFrame* frame, int timeout) -+{ -+ DeintV4L2M2MContextShared *ctx = queue->ctx; -+ V4L2Buffer* avbuf; -+ -+ av_log(ctx->logctx, AV_LOG_TRACE, "<<< %s\n", __func__); -+ -+ avbuf = deint_v4l2m2m_dequeue_buffer(queue, timeout); -+ if (!avbuf) { -+ av_log(ctx->logctx, AV_LOG_DEBUG, "%s: No buffer to dequeue (timeout=%d)\n", __func__, timeout); -+ return AVERROR(EAGAIN); -+ } -+ -+ // Fill in PTS and anciliary info from src frame -+ // we will want to overwrite some fields as only the pts/dts -+ // fields are updated with new timing in this fn -+ pts_track_get_frame(&ctx->track, avbuf->buffer.timestamp, frame); -+ -+ frame->buf[0] = av_buffer_create((uint8_t *) &avbuf->drm_frame, -+ sizeof(avbuf->drm_frame), v4l2_free_buffer, -+ avbuf, AV_BUFFER_FLAG_READONLY); -+ if (!frame->buf[0]) { -+ av_log(ctx->logctx, AV_LOG_ERROR, "%s: error %d creating buffer\n", __func__, 0); -+ return AVERROR(ENOMEM); -+ } -+ -+ atomic_fetch_add(&ctx->refcount, 1); -+ -+ frame->data[0] = (uint8_t *)v4l2_get_drm_frame(avbuf, ctx->orig_height); -+ frame->format = AV_PIX_FMT_DRM_PRIME; -+ if (ctx->hw_frames_ctx) -+ frame->hw_frames_ctx = av_buffer_ref(ctx->hw_frames_ctx); -+ frame->height = ctx->height; -+ frame->width = ctx->width; -+ -+ // Not interlaced now -+ frame->interlaced_frame = 0; -+ frame->top_field_first = 0; -+ // Pkt duration halved -+ frame->pkt_duration /= 2; -+ -+ if (avbuf->buffer.flags & V4L2_BUF_FLAG_ERROR) { -+ av_log(ctx->logctx, AV_LOG_ERROR, "driver decode error\n"); -+ frame->decode_error_flags |= FF_DECODE_ERROR_INVALID_BITSTREAM; -+ } -+ -+ av_log(ctx->logctx, AV_LOG_TRACE, ">>> %s: PTS=%"PRId64"\n", __func__, frame->pts); -+ return 0; -+} -+ -+static int deint_v4l2m2m_config_props(AVFilterLink *outlink) -+{ -+ AVFilterLink *inlink = outlink->src->inputs[0]; -+ AVFilterContext *avctx = outlink->src; -+ DeintV4L2M2MContext *priv = avctx->priv; -+ DeintV4L2M2MContextShared *ctx = priv->shared; -+ int ret; -+ -+ ctx->height = avctx->inputs[0]->h; -+ ctx->width = avctx->inputs[0]->w; -+ -+ av_log(priv, AV_LOG_DEBUG, "%s: %dx%d\n", __func__, ctx->width, ctx->height); -+ -+ outlink->time_base = inlink->time_base; -+ outlink->w = inlink->w; -+ outlink->h = inlink->h; -+ outlink->sample_aspect_ratio = inlink->sample_aspect_ratio; -+ outlink->format = inlink->format; -+ outlink->frame_rate = (AVRational) {1, 0}; // Deny knowledge of frame rate -+ -+ ret = deint_v4l2m2m_find_device(ctx); -+ if (ret) -+ return ret; -+ -+ if (inlink->hw_frames_ctx) { -+ ctx->hw_frames_ctx = av_buffer_ref(inlink->hw_frames_ctx); -+ if (!ctx->hw_frames_ctx) -+ return AVERROR(ENOMEM); -+ } -+ return 0; -+} -+ -+static int deint_v4l2m2m_filter_frame(AVFilterLink *link, AVFrame *in) -+{ -+ AVFilterContext *avctx = link->dst; -+ DeintV4L2M2MContext *priv = avctx->priv; -+ DeintV4L2M2MContextShared *ctx = priv->shared; -+ V4L2Queue *capture = &ctx->capture; -+ V4L2Queue *output = &ctx->output; -+ int ret; -+ -+ av_log(priv, AV_LOG_DEBUG, "<<< %s: input pts: %"PRId64" (%"PRId64") field :%d interlaced: %d aspect:%d/%d\n", -+ __func__, in->pts, AV_NOPTS_VALUE, in->top_field_first, in->interlaced_frame, in->sample_aspect_ratio.num, in->sample_aspect_ratio.den); -+ av_log(priv, AV_LOG_DEBUG, "--- %s: in status in %d/ot %d; out status in %d/out %d\n", __func__, -+ avctx->inputs[0]->status_in, avctx->inputs[0]->status_out, avctx->outputs[0]->status_in, avctx->outputs[0]->status_out); -+ -+ if (ctx->field_order == V4L2_FIELD_ANY) { -+ AVDRMFrameDescriptor *drm_desc = (AVDRMFrameDescriptor *)in->data[0]; -+ ctx->orig_width = drm_desc->layers[0].planes[0].pitch; -+ ctx->orig_height = drm_desc->layers[0].planes[1].offset / ctx->orig_width; -+ -+ av_log(priv, AV_LOG_DEBUG, "%s: %dx%d (%td,%td)\n", __func__, ctx->width, ctx->height, -+ drm_desc->layers[0].planes[0].pitch, drm_desc->layers[0].planes[1].offset); -+ -+ if (in->top_field_first) -+ ctx->field_order = V4L2_FIELD_INTERLACED_TB; -+ else -+ ctx->field_order = V4L2_FIELD_INTERLACED_BT; -+ -+ ret = deint_v4l2m2m_set_format(output, ctx->field_order, ctx->width, ctx->height, ctx->orig_width, drm_desc->layers[0].planes[1].offset); -+ if (ret) -+ return ret; -+ -+ ret = deint_v4l2m2m_set_format(capture, V4L2_FIELD_NONE, ctx->width, ctx->height, ctx->orig_width, drm_desc->layers[0].planes[1].offset); -+ if (ret) -+ return ret; -+ -+ ret = deint_v4l2m2m_allocate_buffers(capture); -+ if (ret) -+ return ret; -+ -+ ret = deint_v4l2m2m_streamon(capture); -+ if (ret) -+ return ret; -+ -+ ret = deint_v4l2m2m_allocate_buffers(output); -+ if (ret) -+ return ret; -+ -+ ret = deint_v4l2m2m_streamon(output); -+ if (ret) -+ return ret; -+ } -+ -+ ret = deint_v4l2m2m_enqueue_frame(output, in); -+ -+ av_log(priv, AV_LOG_TRACE, ">>> %s: %s\n", __func__, av_err2str(ret)); -+ return ret; -+} -+ -+static int deint_v4l2m2m_activate(AVFilterContext *avctx) -+{ -+ DeintV4L2M2MContext * const priv = avctx->priv; -+ DeintV4L2M2MContextShared *const s = priv->shared; -+ AVFilterLink * const outlink = avctx->outputs[0]; -+ AVFilterLink * const inlink = avctx->inputs[0]; -+ int n = 0; -+ int cn = 99; -+ int instatus = 0; -+ int64_t inpts = 0; -+ int did_something = 0; -+ -+ av_log(priv, AV_LOG_TRACE, "<<< %s\n", __func__); -+ -+ FF_FILTER_FORWARD_STATUS_BACK_ALL(outlink, avctx); -+ -+ ff_inlink_acknowledge_status(inlink, &instatus, &inpts); -+ -+ if (!ff_outlink_frame_wanted(outlink)) { -+ av_log(priv, AV_LOG_TRACE, "%s: Not wanted out\n", __func__); -+ } -+ else if (s->field_order != V4L2_FIELD_ANY) // Can't DQ if no setup! -+ { -+ AVFrame * frame = av_frame_alloc(); -+ int rv; -+ -+again: -+ recycle_q(&s->output); -+ n = count_enqueued(&s->output); -+ -+ if (frame == NULL) { -+ av_log(priv, AV_LOG_ERROR, "%s: error allocating frame\n", __func__); -+ return AVERROR(ENOMEM); -+ } -+ -+ rv = deint_v4l2m2m_dequeue_frame(&s->capture, frame, n > 4 ? 300 : 0); -+ if (rv != 0) { -+ av_frame_free(&frame); -+ if (rv != AVERROR(EAGAIN)) { -+ av_log(priv, AV_LOG_ERROR, ">>> %s: DQ fail: %s\n", __func__, av_err2str(rv)); -+ return rv; -+ } -+ } -+ else { -+ frame->interlaced_frame = 0; -+ // frame is always consumed by filter_frame - even on error despite -+ // a somewhat confusing comment in the header -+ rv = ff_filter_frame(outlink, frame); -+ -+ if (instatus != 0) { -+ av_log(priv, AV_LOG_TRACE, "%s: eof loop\n", __func__); -+ goto again; -+ } -+ -+ av_log(priv, AV_LOG_TRACE, "%s: Filtered: %s\n", __func__, av_err2str(rv)); -+ did_something = 1; -+ } -+ -+ cn = count_enqueued(&s->capture); -+ } -+ -+ if (instatus != 0) { -+ ff_outlink_set_status(outlink, instatus, inpts); -+ av_log(priv, AV_LOG_TRACE, ">>> %s: Status done: %s\n", __func__, av_err2str(instatus)); -+ return 0; -+ } -+ -+ { -+ AVFrame * frame; -+ int rv; -+ -+ recycle_q(&s->output); -+ n = count_enqueued(&s->output); -+ -+ while (n < 6) { -+ if ((rv = ff_inlink_consume_frame(inlink, &frame)) < 0) { -+ av_log(priv, AV_LOG_ERROR, "%s: consume in failed: %s\n", __func__, av_err2str(rv)); -+ return rv; -+ } -+ -+ if (frame == NULL) { -+ av_log(priv, AV_LOG_TRACE, "%s: No frame\n", __func__); -+ break; -+ } -+ -+ deint_v4l2m2m_filter_frame(inlink, frame); -+ av_log(priv, AV_LOG_TRACE, "%s: Q frame\n", __func__); -+ ++n; -+ } -+ } -+ -+ if (n < 6) { -+ ff_inlink_request_frame(inlink); -+ did_something = 1; -+ av_log(priv, AV_LOG_TRACE, "%s: req frame\n", __func__); -+ } -+ -+ if (n > 4 && ff_outlink_frame_wanted(outlink)) { -+ ff_filter_set_ready(avctx, 1); -+ did_something = 1; -+ av_log(priv, AV_LOG_TRACE, "%s: ready\n", __func__); -+ } -+ -+ av_log(priv, AV_LOG_TRACE, ">>> %s: OK (n=%d, cn=%d)\n", __func__, n, cn); -+ return did_something ? 0 : FFERROR_NOT_READY; -+} -+ -+static av_cold int deint_v4l2m2m_init(AVFilterContext *avctx) -+{ -+ DeintV4L2M2MContext * const priv = avctx->priv; -+ DeintV4L2M2MContextShared * const ctx = av_mallocz(sizeof(DeintV4L2M2MContextShared)); -+ -+ if (!ctx) { -+ av_log(priv, AV_LOG_ERROR, "%s: error %d allocating context\n", __func__, 0); -+ return AVERROR(ENOMEM); -+ } -+ priv->shared = ctx; -+ ctx->logctx = priv; -+ ctx->fd = -1; -+ ctx->output.ctx = ctx; -+ ctx->output.num_buffers = 8; -+ ctx->capture.ctx = ctx; -+ ctx->capture.num_buffers = 12; -+ ctx->done = 0; -+ ctx->field_order = V4L2_FIELD_ANY; -+ -+ pts_track_init(&ctx->track, priv); -+ -+ atomic_init(&ctx->refcount, 1); -+ -+ return 0; -+} -+ -+static void deint_v4l2m2m_uninit(AVFilterContext *avctx) -+{ -+ DeintV4L2M2MContext *priv = avctx->priv; -+ DeintV4L2M2MContextShared *ctx = priv->shared; -+ -+ ctx->done = 1; -+ ctx->logctx = NULL; // Log to NULL works, log to missing crashes -+ pts_track_uninit(&ctx->track); -+ deint_v4l2m2m_destroy_context(ctx); -+} -+ -+static const AVOption deinterlace_v4l2m2m_options[] = { -+ { NULL }, -+}; -+ -+AVFILTER_DEFINE_CLASS(deinterlace_v4l2m2m); -+ -+static const AVFilterPad deint_v4l2m2m_inputs[] = { -+ { -+ .name = "default", -+ .type = AVMEDIA_TYPE_VIDEO, -+ }, -+}; -+ -+static const AVFilterPad deint_v4l2m2m_outputs[] = { -+ { -+ .name = "default", -+ .type = AVMEDIA_TYPE_VIDEO, -+ .config_props = deint_v4l2m2m_config_props, -+ }, -+}; -+ -+AVFilter ff_vf_deinterlace_v4l2m2m = { -+ .name = "deinterlace_v4l2m2m", -+ .description = NULL_IF_CONFIG_SMALL("V4L2 M2M deinterlacer"), -+ .priv_size = sizeof(DeintV4L2M2MContext), -+ .init = &deint_v4l2m2m_init, -+ .uninit = &deint_v4l2m2m_uninit, -+ FILTER_INPUTS(deint_v4l2m2m_inputs), -+ FILTER_OUTPUTS(deint_v4l2m2m_outputs), -+ FILTER_SINGLE_SAMPLEFMT(AV_PIX_FMT_DRM_PRIME), -+ .priv_class = &deinterlace_v4l2m2m_class, -+ .activate = deint_v4l2m2m_activate, -+}; - -From 0fb00e51d1ca40eed22bfc66b7f309fdc56229bc Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 2 Dec 2021 17:49:55 +0000 -Subject: [PATCH 031/151] Put no_pts_rescale in context which makes more sense - than an arg - ---- - libavcodec/v4l2_buffers.c | 28 ++++++++++++++-------------- - libavcodec/v4l2_buffers.h | 5 ++--- - libavcodec/v4l2_context.c | 8 ++++---- - libavcodec/v4l2_context.h | 13 +++++++++---- - libavcodec/v4l2_m2m_dec.c | 9 +++++---- - 5 files changed, 34 insertions(+), 29 deletions(-) - -diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c -index 126d2a17f4..22da6bd722 100644 ---- a/libavcodec/v4l2_buffers.c -+++ b/libavcodec/v4l2_buffers.c -@@ -39,7 +39,7 @@ - #define USEC_PER_SEC 1000000 - static const AVRational v4l2_timebase = { 1, USEC_PER_SEC }; - --static inline V4L2m2mContext *buf_to_m2mctx(V4L2Buffer *buf) -+static inline V4L2m2mContext *buf_to_m2mctx(const V4L2Buffer * const buf) - { - return V4L2_TYPE_IS_OUTPUT(buf->context->type) ? - container_of(buf->context, V4L2m2mContext, output) : -@@ -51,34 +51,34 @@ static inline AVCodecContext *logger(V4L2Buffer *buf) - return buf_to_m2mctx(buf)->avctx; - } - --static inline AVRational v4l2_get_timebase(V4L2Buffer *avbuf) -+static inline AVRational v4l2_get_timebase(const V4L2Buffer * const avbuf) - { -- V4L2m2mContext *s = buf_to_m2mctx(avbuf); -+ const V4L2m2mContext *s = buf_to_m2mctx(avbuf); - const AVRational tb = s->avctx->pkt_timebase.num ? - s->avctx->pkt_timebase : - s->avctx->time_base; - return tb.num && tb.den ? tb : v4l2_timebase; - } - --static inline void v4l2_set_pts(V4L2Buffer *out, int64_t pts, int no_rescale) -+static inline void v4l2_set_pts(V4L2Buffer * const out, const int64_t pts) - { - /* convert pts to v4l2 timebase */ - const int64_t v4l2_pts = -- no_rescale ? pts : -+ out->context->no_pts_rescale ? pts : - pts == AV_NOPTS_VALUE ? 0 : - av_rescale_q(pts, v4l2_get_timebase(out), v4l2_timebase); - out->buf.timestamp.tv_usec = v4l2_pts % USEC_PER_SEC; - out->buf.timestamp.tv_sec = v4l2_pts / USEC_PER_SEC; - } - --static inline int64_t v4l2_get_pts(V4L2Buffer *avbuf, int no_rescale) -+static inline int64_t v4l2_get_pts(const V4L2Buffer * const avbuf) - { - /* convert pts back to encoder timebase */ - const int64_t v4l2_pts = (int64_t)avbuf->buf.timestamp.tv_sec * USEC_PER_SEC + - avbuf->buf.timestamp.tv_usec; - - return -- no_rescale ? v4l2_pts : -+ avbuf->context->no_pts_rescale ? v4l2_pts : - v4l2_pts == 0 ? AV_NOPTS_VALUE : - av_rescale_q(v4l2_pts, v4l2_timebase, v4l2_get_timebase(avbuf)); - } -@@ -686,13 +686,13 @@ int ff_v4l2_buffer_avframe_to_buf(const AVFrame *frame, V4L2Buffer *out) - v4l2_set_color(out, frame->color_primaries, frame->colorspace, frame->color_trc); - v4l2_set_color_range(out, frame->color_range); - // PTS & interlace are buffer vars -- v4l2_set_pts(out, frame->pts, 0); -+ v4l2_set_pts(out, frame->pts); - v4l2_set_interlace(out, frame->interlaced_frame, frame->top_field_first); - - return v4l2_buffer_swframe_to_buf(frame, out); - } - --int ff_v4l2_buffer_buf_to_avframe(AVFrame *frame, V4L2Buffer *avbuf, int no_rescale_pts) -+int ff_v4l2_buffer_buf_to_avframe(AVFrame *frame, V4L2Buffer *avbuf) - { - int ret; - V4L2Context * const ctx = avbuf->context; -@@ -710,7 +710,7 @@ int ff_v4l2_buffer_buf_to_avframe(AVFrame *frame, V4L2Buffer *avbuf, int no_resc - frame->colorspace = v4l2_get_color_space(avbuf); - frame->color_range = v4l2_get_color_range(avbuf); - frame->color_trc = v4l2_get_color_trc(avbuf); -- frame->pts = v4l2_get_pts(avbuf, no_rescale_pts); -+ frame->pts = v4l2_get_pts(avbuf); - frame->pkt_dts = AV_NOPTS_VALUE; - frame->interlaced_frame = v4l2_buf_is_interlaced(avbuf); - frame->top_field_first = v4l2_buf_is_top_first(avbuf); -@@ -757,13 +757,13 @@ int ff_v4l2_buffer_buf_to_avpkt(AVPacket *pkt, V4L2Buffer *avbuf) - pkt->flags |= AV_PKT_FLAG_CORRUPT; - } - -- pkt->dts = pkt->pts = v4l2_get_pts(avbuf, 0); -+ pkt->dts = pkt->pts = v4l2_get_pts(avbuf); - - return 0; - } - - int ff_v4l2_buffer_avpkt_to_buf_ext(const AVPacket *pkt, V4L2Buffer *out, -- const void *extdata, size_t extlen, int no_rescale_pts) -+ const void *extdata, size_t extlen) - { - int ret; - -@@ -777,7 +777,7 @@ int ff_v4l2_buffer_avpkt_to_buf_ext(const AVPacket *pkt, V4L2Buffer *out, - if (ret && ret != AVERROR(ENOMEM)) - return ret; - -- v4l2_set_pts(out, pkt->pts, no_rescale_pts); -+ v4l2_set_pts(out, pkt->pts); - - if (pkt->flags & AV_PKT_FLAG_KEY) - out->flags = V4L2_BUF_FLAG_KEYFRAME; -@@ -787,7 +787,7 @@ int ff_v4l2_buffer_avpkt_to_buf_ext(const AVPacket *pkt, V4L2Buffer *out, - - int ff_v4l2_buffer_avpkt_to_buf(const AVPacket *pkt, V4L2Buffer *out) - { -- return ff_v4l2_buffer_avpkt_to_buf_ext(pkt, out, NULL, 0, 0); -+ return ff_v4l2_buffer_avpkt_to_buf_ext(pkt, out, NULL, 0); - } - - -diff --git a/libavcodec/v4l2_buffers.h b/libavcodec/v4l2_buffers.h -index 111526aee3..641e0e147b 100644 ---- a/libavcodec/v4l2_buffers.h -+++ b/libavcodec/v4l2_buffers.h -@@ -83,12 +83,11 @@ typedef struct V4L2Buffer { - * - * @param[in] frame The AVFRame to push the information to - * @param[in] buf The V4L2Buffer to get the information from -- * @param[in] no_rescale_pts If non-zero do not rescale PTS - * - * @returns 0 in case of success, AVERROR(EINVAL) if the number of planes is incorrect, - * AVERROR(ENOMEM) if the AVBufferRef can't be created. - */ --int ff_v4l2_buffer_buf_to_avframe(AVFrame *frame, V4L2Buffer *buf, int no_rescale_pts); -+int ff_v4l2_buffer_buf_to_avframe(AVFrame *frame, V4L2Buffer *buf); - - /** - * Extracts the data from a V4L2Buffer to an AVPacket -@@ -113,7 +112,7 @@ int ff_v4l2_buffer_buf_to_avpkt(AVPacket *pkt, V4L2Buffer *buf); - int ff_v4l2_buffer_avpkt_to_buf(const AVPacket *pkt, V4L2Buffer *out); - - int ff_v4l2_buffer_avpkt_to_buf_ext(const AVPacket *pkt, V4L2Buffer *out, -- const void *extdata, size_t extlen, int no_rescale_pts); -+ const void *extdata, size_t extlen); - - /** - * Extracts the data from an AVFrame to a V4L2Buffer -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index 440dfaaba5..64540a37b3 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -808,7 +808,7 @@ int ff_v4l2_context_enqueue_frame(V4L2Context* ctx, const AVFrame* frame) - } - - int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt, -- const void * extdata, size_t extlen, int no_rescale_pts) -+ const void * extdata, size_t extlen) - { - V4L2m2mContext *s = ctx_to_m2mctx(ctx); - V4L2Buffer* avbuf; -@@ -827,7 +827,7 @@ int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt, - if (!avbuf) - return AVERROR(EAGAIN); - -- ret = ff_v4l2_buffer_avpkt_to_buf_ext(pkt, avbuf, extdata, extlen, no_rescale_pts); -+ ret = ff_v4l2_buffer_avpkt_to_buf_ext(pkt, avbuf, extdata, extlen); - if (ret == AVERROR(ENOMEM)) - av_log(logger(ctx), AV_LOG_ERROR, "Buffer overflow in %s: pkt->size=%d > buf->length=%d\n", - __func__, pkt->size, avbuf->planes[0].length); -@@ -837,7 +837,7 @@ int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt, - return ff_v4l2_buffer_enqueue(avbuf); - } - --int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* frame, int timeout, int no_rescale_pts) -+int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* frame, int timeout) - { - V4L2Buffer *avbuf; - -@@ -854,7 +854,7 @@ int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* frame, int timeout, - return AVERROR(EAGAIN); - } - -- return ff_v4l2_buffer_buf_to_avframe(frame, avbuf, no_rescale_pts); -+ return ff_v4l2_buffer_buf_to_avframe(frame, avbuf); - } - - int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt) -diff --git a/libavcodec/v4l2_context.h b/libavcodec/v4l2_context.h -index 37b0431400..4cc164886c 100644 ---- a/libavcodec/v4l2_context.h -+++ b/libavcodec/v4l2_context.h -@@ -102,6 +102,13 @@ typedef struct V4L2Context { - */ - int done; - -+ /** -+ * PTS rescale not wanted -+ * If the PTS is just a dummy frame count then rescale is -+ * actively harmful -+ */ -+ int no_pts_rescale; -+ - AVBufferRef *frames_ref; - int q_count; - int dq_count; -@@ -172,12 +179,10 @@ int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt); - * @param[in] ctx The V4L2Context to dequeue from. - * @param[inout] f The AVFrame to dequeue to. - * @param[in] timeout The timeout for dequeue (-1 to block, 0 to return immediately, or milliseconds) -- * @param[in] no_rescale_pts (0 rescale pts, 1 use pts as -- * timestamp directly) - * - * @return 0 in case of success, AVERROR(EAGAIN) if no buffer was ready, another negative error in case of error. - */ --int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* f, int timeout, int no_rescale_pts); -+int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* f, int timeout); - - /** - * Enqueues a buffer to a V4L2Context from an AVPacket -@@ -189,7 +194,7 @@ int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* f, int timeout, int - * @param[in] pkt A pointer to an AVPacket. - * @return 0 in case of success, a negative error otherwise. - */ --int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt, const void * ext_data, size_t ext_size, int no_rescale_pts); -+int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt, const void * ext_data, size_t ext_size); - - /** - * Enqueues a buffer to a V4L2Context from an AVFrame -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index b49f470c0a..36754b314a 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -360,7 +360,7 @@ static int try_enqueue_src(AVCodecContext * const avctx, V4L2m2mContext * const - if (!s->draining) { - // Calling enqueue with an empty pkt starts drain - av_assert0(s->buf_pkt.size == 0); -- ret = ff_v4l2_context_enqueue_packet(&s->output, &s->buf_pkt, NULL, 0, 1); -+ ret = ff_v4l2_context_enqueue_packet(&s->output, &s->buf_pkt, NULL, 0); - if (ret) { - av_log(avctx, AV_LOG_ERROR, "Failed to start drain: ret=%d\n", ret); - return ret; -@@ -381,8 +381,7 @@ static int try_enqueue_src(AVCodecContext * const avctx, V4L2m2mContext * const - return ret; - - ret = ff_v4l2_context_enqueue_packet(&s->output, &s->buf_pkt, -- avctx->extradata, s->extdata_sent ? 0 : avctx->extradata_size, -- 1); -+ avctx->extradata, s->extdata_sent ? 0 : avctx->extradata_size); - - if (ret == AVERROR(EAGAIN)) { - // Out of input buffers - keep packet -@@ -442,7 +441,7 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - // when discarding - // This returns AVERROR(EAGAIN) if there isn't a frame ready yet - // but there is room in the input Q -- dst_rv = ff_v4l2_context_dequeue_frame(&s->capture, frame, src_rv == NQ_Q_FULL ? 100 : -1, 1); -+ dst_rv = ff_v4l2_context_dequeue_frame(&s->capture, frame, src_rv == NQ_Q_FULL ? 100 : -1); - - if (dst_rv == AVERROR_EOF && (s->draining || s->capture.done)) - av_log(avctx, AV_LOG_DEBUG, "Dequeue EOF: draining=%d, cap.done=%d\n", -@@ -569,10 +568,12 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - output->av_codec_id = avctx->codec_id; - output->av_pix_fmt = AV_PIX_FMT_NONE; - output->min_buf_size = max_coded_size(avctx); -+ output->no_pts_rescale = 1; - - capture->av_codec_id = AV_CODEC_ID_RAWVIDEO; - capture->av_pix_fmt = avctx->pix_fmt; - capture->min_buf_size = 0; -+ capture->no_pts_rescale = 1; - - /* the client requests the codec to generate DRM frames: - * - data[0] will therefore point to the returned AVDRMFrameDescriptor - -From 5e36908e6f2f06b68e85873cbcd421c0973f6409 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 8 Dec 2021 15:00:37 +0000 -Subject: [PATCH 032/151] Use bitbuf min size for all streams - ---- - libavcodec/v4l2_m2m_dec.c | 5 +---- - 1 file changed, 1 insertion(+), 4 deletions(-) - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 36754b314a..48a6810d18 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -507,15 +507,12 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - } - #endif - -+// This heuristic is for H264 but use for everything - static uint32_t max_coded_size(const AVCodecContext * const avctx) - { - uint32_t wxh = avctx->coded_width * avctx->coded_height; - uint32_t size; - -- // Currently the only thing we try to set our own limits for is H264 -- if (avctx->codec_id != AV_CODEC_ID_H264) -- return 0; -- - size = wxh * 3 / 2; - // H.264 Annex A table A-1 gives minCR which is either 2 or 4 - // unfortunately that doesn't yield an actually useful limit - -From 5fcbcd31761eea31dc0157793f558eaaadfe2ac3 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Fri, 3 Dec 2021 12:54:18 +0000 -Subject: [PATCH 033/151] Track pending frames in v4l2 stateful - -Track which frames are pending decode in the v4l2 stateful decoder. -This relies on DTS & PTS having some relationship to reality, so -any use of this code must cope with the results being wrong. - -Also moves the xlat state vars out of the main context and into their -own structure. ---- - libavcodec/v4l2_m2m.h | 15 ++++-- - libavcodec/v4l2_m2m_dec.c | 100 +++++++++++++++++++++++++++++--------- - 2 files changed, 89 insertions(+), 26 deletions(-) - -diff --git a/libavcodec/v4l2_m2m.h b/libavcodec/v4l2_m2m.h -index 82feb0afdb..3f86809623 100644 ---- a/libavcodec/v4l2_m2m.h -+++ b/libavcodec/v4l2_m2m.h -@@ -44,8 +44,10 @@ - #define FF_V4L2_M2M_TRACK_SIZE 128 - typedef struct V4L2m2mTrackEl { - int discard; // If we see this buffer its been flushed, so discard -+ int pending; - int pkt_size; - int64_t pts; -+ int64_t dts; - int64_t reordered_opaque; - int64_t pkt_pos; - int64_t pkt_duration; -@@ -62,6 +64,14 @@ typedef struct pts_stats_s - int64_t guess; - } pts_stats_t; - -+typedef struct xlat_track_s { -+ unsigned int track_no; -+ int64_t last_pts; -+ int64_t last_pkt_dts; -+ int64_t last_opaque; -+ V4L2m2mTrackEl track_els[FF_V4L2_M2M_TRACK_SIZE]; -+} xlat_track_t; -+ - typedef struct V4L2m2mContext { - char devname[PATH_MAX]; - int fd; -@@ -96,10 +106,7 @@ typedef struct V4L2m2mContext { - int output_drm; - - /* Frame tracking */ -- int64_t last_pkt_dts; -- int64_t last_opaque; -- unsigned int track_no; -- V4L2m2mTrackEl track_els[FF_V4L2_M2M_TRACK_SIZE]; -+ xlat_track_t xlat; - - pts_stats_t pts_stat; - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 48a6810d18..d8ebb466cd 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -242,22 +242,24 @@ static inline unsigned int pts_to_track(AVCodecContext *avctx, const int64_t pts - // buffer of all the things we want preserved (including the original PTS) - // indexed by the tracking no. - static void --xlat_pts_in(AVCodecContext *const avctx, V4L2m2mContext *const s, AVPacket *const avpkt) -+xlat_pts_in(AVCodecContext *const avctx, xlat_track_t *const x, AVPacket *const avpkt) - { - int64_t track_pts; - - // Avoid 0 -- if (++s->track_no == 0) -- s->track_no = 1; -+ if (++x->track_no == 0) -+ x->track_no = 1; - -- track_pts = track_to_pts(avctx, s->track_no); -+ track_pts = track_to_pts(avctx, x->track_no); - -- av_log(avctx, AV_LOG_TRACE, "In PTS=%" PRId64 ", DTS=%" PRId64 ", track=%" PRId64 ", n=%u\n", avpkt->pts, avpkt->dts, track_pts, s->track_no); -- s->last_pkt_dts = avpkt->dts; -- s->track_els[s->track_no % FF_V4L2_M2M_TRACK_SIZE] = (V4L2m2mTrackEl){ -+ av_log(avctx, AV_LOG_TRACE, "In PTS=%" PRId64 ", DTS=%" PRId64 ", track=%" PRId64 ", n=%u\n", avpkt->pts, avpkt->dts, track_pts, x->track_no); -+ x->last_pkt_dts = avpkt->dts; -+ x->track_els[x->track_no % FF_V4L2_M2M_TRACK_SIZE] = (V4L2m2mTrackEl){ - .discard = 0, -+ .pending = 1, - .pkt_size = avpkt->size, - .pts = avpkt->pts, -+ .dts = avpkt->dts, - .reordered_opaque = avctx->reordered_opaque, - .pkt_pos = avpkt->pos, - .pkt_duration = avpkt->duration, -@@ -268,31 +270,36 @@ xlat_pts_in(AVCodecContext *const avctx, V4L2m2mContext *const s, AVPacket *cons - - // Returns -1 if we should discard the frame - static int --xlat_pts_out(AVCodecContext *const avctx, V4L2m2mContext *const s, AVFrame *const frame) -+xlat_pts_out(AVCodecContext *const avctx, -+ xlat_track_t * const x, -+ pts_stats_t * const ps, -+ AVFrame *const frame) - { - unsigned int n = pts_to_track(avctx, frame->pts) % FF_V4L2_M2M_TRACK_SIZE; -- const V4L2m2mTrackEl *const t = s->track_els + n; -+ V4L2m2mTrackEl *const t = x->track_els + n; - if (frame->pts == AV_NOPTS_VALUE || frame->pts != t->track_pts) - { - av_log(avctx, AV_LOG_INFO, "Tracking failure: pts=%" PRId64 ", track[%d]=%" PRId64 "\n", frame->pts, n, t->track_pts); - frame->pts = AV_NOPTS_VALUE; -- frame->pkt_dts = s->last_pkt_dts; -- frame->reordered_opaque = s->last_opaque; -+ frame->pkt_dts = x->last_pkt_dts; -+ frame->reordered_opaque = x->last_opaque; - frame->pkt_pos = -1; - frame->pkt_duration = 0; - frame->pkt_size = -1; - } - else if (!t->discard) - { -- frame->pts = t->pts; -- frame->pkt_dts = s->last_pkt_dts; -+ frame->pts = t->pending ? t->pts : AV_NOPTS_VALUE; -+ frame->pkt_dts = x->last_pkt_dts; - frame->reordered_opaque = t->reordered_opaque; - frame->pkt_pos = t->pkt_pos; - frame->pkt_duration = t->pkt_duration; - frame->pkt_size = t->pkt_size; - -- s->last_opaque = s->track_els[n].reordered_opaque; -- s->track_els[n].pts = AV_NOPTS_VALUE; // If we hit this again deny accurate knowledge of PTS -+ x->last_opaque = x->track_els[n].reordered_opaque; -+ if (frame->pts != AV_NOPTS_VALUE) -+ x->last_pts = frame->pts; -+ t->pending = 0; - } - else - { -@@ -300,14 +307,62 @@ xlat_pts_out(AVCodecContext *const avctx, V4L2m2mContext *const s, AVFrame *cons - return -1; - } - -- pts_stats_add(&s->pts_stat, frame->pts); -+ pts_stats_add(ps, frame->pts); - -- frame->best_effort_timestamp = pts_stats_guess(&s->pts_stat); -+ frame->best_effort_timestamp = pts_stats_guess(ps); - frame->pkt_dts = frame->pts; // We can't emulate what s/w does in a useful manner? - av_log(avctx, AV_LOG_TRACE, "Out PTS=%" PRId64 "/%"PRId64", DTS=%" PRId64 "\n", frame->pts, frame->best_effort_timestamp, frame->pkt_dts); - return 0; - } - -+static void -+xlat_flush(xlat_track_t * const x) -+{ -+ unsigned int i; -+ for (i = 0; i != FF_V4L2_M2M_TRACK_SIZE; ++i) { -+ x->track_els[i].pending = 0; -+ x->track_els[i].discard = 1; -+ } -+ x->last_pts = AV_NOPTS_VALUE; -+} -+ -+static void -+xlat_init(xlat_track_t * const x) -+{ -+ memset(x, 0, sizeof(*x)); -+ x->last_pts = AV_NOPTS_VALUE; -+} -+ -+static int -+xlat_pending(const xlat_track_t * const x) -+{ -+ unsigned int n = x->track_no % FF_V4L2_M2M_TRACK_SIZE; -+ unsigned int i; -+ int r = 0; -+ int64_t now = AV_NOPTS_VALUE; -+ -+ for (i = 0; i < 32; ++i, n = (n - 1) % FF_V4L2_M2M_TRACK_SIZE) { -+ const V4L2m2mTrackEl * const t = x->track_els + n; -+ -+ if (!t->pending) -+ continue; -+ -+ if (now == AV_NOPTS_VALUE) -+ now = t->dts; -+ -+ if (t->pts == AV_NOPTS_VALUE || -+ ((now == AV_NOPTS_VALUE || t->pts <= now) && -+ (x->last_pts == AV_NOPTS_VALUE || t->pts > x->last_pts))) -+ ++r; -+ } -+ -+ // If we never get any ideas about PTS vs DTS allow a lot more buffer -+ if (now == AV_NOPTS_VALUE) -+ r -= 16; -+ -+ return r; -+} -+ - static inline int stream_started(const V4L2m2mContext * const s) { - return s->capture.streamon && s->output.streamon; - } -@@ -374,7 +429,7 @@ static int try_enqueue_src(AVCodecContext * const avctx, V4L2m2mContext * const - return ret; - } - -- xlat_pts_in(avctx, s, &s->buf_pkt); -+ xlat_pts_in(avctx, &s->xlat, &s->buf_pkt); - } - - if ((ret = check_output_streamon(avctx, s)) != 0) -@@ -417,6 +472,7 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - int dst_rv = 1; // Non-zero (done), non-negative (error) number - - do { -+ av_log(avctx, AV_LOG_INFO, "Pending=%d\n", xlat_pending(&s->xlat)); - src_rv = try_enqueue_src(avctx, s); - - // If we got a frame last time and we have nothing to enqueue then -@@ -451,7 +507,7 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - s->draining, s->capture.done, dst_rv); - - // Go again if we got a frame that we need to discard -- } while (dst_rv == 0 && xlat_pts_out(avctx, s, frame)); -+ } while (dst_rv == 0 && xlat_pts_out(avctx, &s->xlat, &s->pts_stat, frame)); - } - - // Continue trying to enqueue packets if either -@@ -550,6 +606,7 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - if (ret < 0) - return ret; - -+ xlat_init(&s->xlat); - pts_stats_init(&s->pts_stat, avctx, "decoder"); - - capture = &s->capture; -@@ -632,7 +689,7 @@ static void v4l2_decode_flush(AVCodecContext *avctx) - V4L2m2mContext * const s = priv->context; - V4L2Context * const output = &s->output; - V4L2Context * const capture = &s->capture; -- int ret, i; -+ int ret; - - av_log(avctx, AV_LOG_TRACE, "<<< %s: streamon=%d\n", __func__, output->streamon); - -@@ -646,8 +703,7 @@ static void v4l2_decode_flush(AVCodecContext *avctx) - - // V4L2 makes no guarantees about whether decoded frames are flushed or not - // so mark all frames we are tracking to be discarded if they appear -- for (i = 0; i != FF_V4L2_M2M_TRACK_SIZE; ++i) -- s->track_els[i].discard = 1; -+ xlat_flush(&s->xlat); - - // resend extradata - s->extdata_sent = 0; - -From 6fae7b3f42c8e9e431a59323c0faa6c88fe951d9 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 15 Dec 2021 17:58:21 +0000 -Subject: [PATCH 034/151] Use pending tracking to reduce v4l2 latency - -If there are more than 5 pending decodes outstanding then add a small -timeout to the capture poll to reduce the rate at which frames are -added. ---- - libavcodec/v4l2_m2m_dec.c | 58 ++++++++++++++++++++++++--------------- - 1 file changed, 36 insertions(+), 22 deletions(-) - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index d8ebb466cd..7e7e4729d0 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -370,16 +370,19 @@ static inline int stream_started(const V4L2m2mContext * const s) { - #define NQ_OK 0 - #define NQ_Q_FULL 1 - #define NQ_SRC_EMPTY 2 --#define NQ_DRAINING 3 --#define NQ_DEAD 4 -+#define NQ_NONE 3 -+#define NQ_DRAINING 4 -+#define NQ_DEAD 5 - - #define TRY_DQ(nq_status) ((nq_status) >= NQ_OK && (nq_status) <= NQ_DRAINING) -+#define RETRY_NQ(nq_status) ((nq_status) == NQ_Q_FULL || (nq_status) == NQ_NONE) - - // AVERROR_EOF Flushing an already flushed stream - // -ve Error (all errors except EOF are unexpected) - // NQ_OK (0) OK - // NQ_Q_FULL Dst full (retry if we think V4L2 Q has space now) - // NQ_SRC_EMPTY Src empty (do not retry) -+// NQ_NONE Enqueue not attempted - // NQ_DRAINING At EOS, dQ dest until EOS there too - // NQ_DEAD Not running (do not retry, do not attempt capture dQ) - -@@ -468,23 +471,28 @@ static int try_enqueue_src(AVCodecContext * const avctx, V4L2m2mContext * const - static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - { - V4L2m2mContext *const s = ((V4L2m2mPriv*)avctx->priv_data)->context; -- int src_rv; -+ int src_rv = NQ_NONE; - int dst_rv = 1; // Non-zero (done), non-negative (error) number -+ unsigned int i = 0; - - do { -- av_log(avctx, AV_LOG_INFO, "Pending=%d\n", xlat_pending(&s->xlat)); -- src_rv = try_enqueue_src(avctx, s); -- -- // If we got a frame last time and we have nothing to enqueue then -- // return now. rv will be AVERROR(EAGAIN) indicating that we want more input -- // This should mean that once decode starts we enter a stable state where -- // we alternately ask for input and produce output -- if (s->req_pkt && src_rv == NQ_SRC_EMPTY) -- break; -- -- if (src_rv == NQ_Q_FULL && dst_rv == AVERROR(EAGAIN)) { -- av_log(avctx, AV_LOG_WARNING, "Poll says src Q has space but enqueue fail"); -- src_rv = NQ_SRC_EMPTY; // If we can't enqueue pretend that there is nothing to enqueue -+ const int pending = xlat_pending(&s->xlat); -+ const int prefer_dq = (pending > 5); -+ -+ // Enqueue another pkt for decode if -+ // (a) We don't have a lot of stuff in the buffer already OR -+ // (b) ... we (think we) do but we've failed to get a frame already OR -+ // (c) We've dequeued a lot of frames without asking for input -+ if (!prefer_dq || i != 0 || s->req_pkt > 2) { -+ src_rv = try_enqueue_src(avctx, s); -+ -+ // If we got a frame last time or we've already tried to get a frame and -+ // we have nothing to enqueue then return now. rv will be AVERROR(EAGAIN) -+ // indicating that we want more input. -+ // This should mean that once decode starts we enter a stable state where -+ // we alternately ask for input and produce output -+ if ((i != 0 || s->req_pkt) && src_rv == NQ_SRC_EMPTY) -+ break; - } - - // Try to get a new frame if -@@ -495,9 +503,9 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - // Dequeue frame will unref any previous contents of frame - // if it returns success so we don't need an explicit unref - // when discarding -- // This returns AVERROR(EAGAIN) if there isn't a frame ready yet -- // but there is room in the input Q -- dst_rv = ff_v4l2_context_dequeue_frame(&s->capture, frame, src_rv == NQ_Q_FULL ? 100 : -1); -+ // This returns AVERROR(EAGAIN) on timeout or if -+ // there is room in the input Q and timeout == -1 -+ dst_rv = ff_v4l2_context_dequeue_frame(&s->capture, frame, prefer_dq ? 5 : -1); - - if (dst_rv == AVERROR_EOF && (s->draining || s->capture.done)) - av_log(avctx, AV_LOG_DEBUG, "Dequeue EOF: draining=%d, cap.done=%d\n", -@@ -510,10 +518,16 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - } while (dst_rv == 0 && xlat_pts_out(avctx, &s->xlat, &s->pts_stat, frame)); - } - -+ ++i; -+ if (i >= 256) { -+ av_log(avctx, AV_LOG_ERROR, "Unexpectedly large retry count: %d\n", i); -+ src_rv = AVERROR(EIO); -+ } -+ - // Continue trying to enqueue packets if either - // (a) we succeeded last time OR -- // (b) enqueue failed due to input Q full AND there is now room -- } while (src_rv == NQ_OK || (src_rv == NQ_Q_FULL && dst_rv == AVERROR(EAGAIN)) ); -+ // (b) we didn't ret a frame and we can retry the input -+ } while (src_rv == NQ_OK || (dst_rv == AVERROR(EAGAIN) && RETRY_NQ(src_rv))); - - // Ensure that the frame contains nothing if we aren't returning a frame - // (might happen when discarding) -@@ -521,7 +535,7 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - av_frame_unref(frame); - - // If we got a frame this time ask for a pkt next time -- s->req_pkt = (dst_rv == 0); -+ s->req_pkt = (dst_rv == 0) ? s->req_pkt + 1 : 0; - - #if 0 - if (dst_rv == 0) - -From 175abd2eb961a3718a660e1f9eda08b37b01b309 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 15 Dec 2021 12:23:54 +0000 -Subject: [PATCH 035/151] Allow logger() to take const ctx - ---- - libavcodec/v4l2_buffers.c | 2 +- - libavcodec/v4l2_context.c | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c -index 22da6bd722..39c0094aec 100644 ---- a/libavcodec/v4l2_buffers.c -+++ b/libavcodec/v4l2_buffers.c -@@ -46,7 +46,7 @@ static inline V4L2m2mContext *buf_to_m2mctx(const V4L2Buffer * const buf) - container_of(buf->context, V4L2m2mContext, capture); - } - --static inline AVCodecContext *logger(V4L2Buffer *buf) -+static inline AVCodecContext *logger(const V4L2Buffer * const buf) - { - return buf_to_m2mctx(buf)->avctx; - } -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index 64540a37b3..d3df48aed4 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -43,14 +43,14 @@ struct v4l2_format_update { - int update_avfmt; - }; - --static inline V4L2m2mContext *ctx_to_m2mctx(V4L2Context *ctx) -+static inline V4L2m2mContext *ctx_to_m2mctx(const V4L2Context *ctx) - { - return V4L2_TYPE_IS_OUTPUT(ctx->type) ? - container_of(ctx, V4L2m2mContext, output) : - container_of(ctx, V4L2m2mContext, capture); - } - --static inline AVCodecContext *logger(V4L2Context *ctx) -+static inline AVCodecContext *logger(const V4L2Context *ctx) - { - return ctx_to_m2mctx(ctx)->avctx; - } - -From 21d4f3f644c45084c621cb5aa577169bf5c15017 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 15 Dec 2021 13:00:27 +0000 -Subject: [PATCH 036/151] Track numbere of bufs qed with an atomic - -Safer and faster than counting status ---- - libavcodec/v4l2_buffers.c | 6 +++--- - libavcodec/v4l2_context.c | 3 ++- - libavcodec/v4l2_context.h | 3 +-- - 3 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c -index 39c0094aec..2cf7be6632 100644 ---- a/libavcodec/v4l2_buffers.c -+++ b/libavcodec/v4l2_buffers.c -@@ -922,6 +922,7 @@ fail: - int ff_v4l2_buffer_enqueue(V4L2Buffer* avbuf) - { - int ret; -+ int qc; - - avbuf->buf.flags = avbuf->flags; - -@@ -941,11 +942,10 @@ int ff_v4l2_buffer_enqueue(V4L2Buffer* avbuf) - return AVERROR(err); - } - -- ++avbuf->context->q_count; -+ qc = atomic_fetch_add(&avbuf->context->q_count, 1) + 1; - av_log(logger(avbuf), AV_LOG_DEBUG, "--- %s VIDIOC_QBUF: index %d, ts=%ld.%06ld count=%d\n", - avbuf->context->name, avbuf->buf.index, -- avbuf->buf.timestamp.tv_sec, avbuf->buf.timestamp.tv_usec, -- avbuf->context->q_count); -+ avbuf->buf.timestamp.tv_sec, avbuf->buf.timestamp.tv_usec, qc); - - avbuf->status = V4L2BUF_IN_DRIVER; - -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index d3df48aed4..268a057e53 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -599,7 +599,7 @@ static int v4l2_release_buffers(V4L2Context* ctx) - " 2. drmIoctl(.., DRM_IOCTL_GEM_CLOSE,... )\n"); - } - } -- ctx->q_count = 0; -+ atomic_store(&ctx->q_count, 0); - - return ret; - } -@@ -1019,6 +1019,7 @@ int ff_v4l2_context_init(V4L2Context* ctx) - } - - ff_mutex_init(&ctx->lock, NULL); -+ atomic_init(&ctx->q_count, 0); - - if (s->output_drm) { - AVHWFramesContext *hwframes; -diff --git a/libavcodec/v4l2_context.h b/libavcodec/v4l2_context.h -index 4cc164886c..a4176448d5 100644 ---- a/libavcodec/v4l2_context.h -+++ b/libavcodec/v4l2_context.h -@@ -110,8 +110,7 @@ typedef struct V4L2Context { - int no_pts_rescale; - - AVBufferRef *frames_ref; -- int q_count; -- int dq_count; -+ atomic_int q_count; - struct ff_weak_link_master *wl_master; - - AVMutex lock; - -From b2fa4ab3d63924597b8c3659123b145a786a2c13 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 9 Dec 2021 12:01:25 +0000 -Subject: [PATCH 037/151] Clear pkt_buf on flush - ---- - libavcodec/v4l2_m2m_dec.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 7e7e4729d0..09ec496351 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -715,6 +715,9 @@ static void v4l2_decode_flush(AVCodecContext *avctx) - if (ret < 0) - av_log(avctx, AV_LOG_ERROR, "VIDIOC_STREAMOFF %s error: %d\n", output->name, ret); - -+ // Clear any buffered input packet -+ av_packet_unref(&s->buf_pkt); -+ - // V4L2 makes no guarantees about whether decoded frames are flushed or not - // so mark all frames we are tracking to be discarded if they appear - xlat_flush(&s->xlat); - -From 16cf94cb5e1d11f4c3a6b8a43557383ce78112e0 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 15 Dec 2021 12:52:56 +0000 -Subject: [PATCH 038/151] Rework v4l2 buffer dequeue - ---- - libavcodec/v4l2_context.c | 543 ++++++++++++++++++-------------------- - libavcodec/v4l2_context.h | 2 + - libavcodec/v4l2_m2m.c | 1 - - libavcodec/v4l2_m2m.h | 16 +- - libavcodec/v4l2_m2m_dec.c | 138 ++++------ - 5 files changed, 327 insertions(+), 373 deletions(-) - -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index 268a057e53..d765181645 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -73,19 +73,27 @@ static AVRational v4l2_get_sar(V4L2Context *ctx) - return sar; - } - --static inline unsigned int v4l2_resolution_changed(V4L2Context *ctx, struct v4l2_format *fmt2) -+static inline int ctx_buffers_alloced(const V4L2Context * const ctx) - { -- struct v4l2_format *fmt1 = &ctx->format; -- int ret = V4L2_TYPE_IS_MULTIPLANAR(ctx->type) ? -- fmt1->fmt.pix_mp.width != fmt2->fmt.pix_mp.width || -- fmt1->fmt.pix_mp.height != fmt2->fmt.pix_mp.height -- : -- fmt1->fmt.pix.width != fmt2->fmt.pix.width || -- fmt1->fmt.pix.height != fmt2->fmt.pix.height; -+ return ctx->bufrefs != NULL; -+} -+ -+// Width/Height changed or we don't have an alloc in the first place? -+static int ctx_resolution_changed(const V4L2Context *ctx, const struct v4l2_format *fmt2) -+{ -+ const struct v4l2_format *fmt1 = &ctx->format; -+ int ret = !ctx_buffers_alloced(ctx) || -+ (V4L2_TYPE_IS_MULTIPLANAR(ctx->type) ? -+ fmt1->fmt.pix_mp.width != fmt2->fmt.pix_mp.width || -+ fmt1->fmt.pix_mp.height != fmt2->fmt.pix_mp.height -+ : -+ fmt1->fmt.pix.width != fmt2->fmt.pix.width || -+ fmt1->fmt.pix.height != fmt2->fmt.pix.height); - - if (ret) -- av_log(logger(ctx), AV_LOG_DEBUG, "%s changed (%dx%d) -> (%dx%d)\n", -+ av_log(logger(ctx), AV_LOG_DEBUG, "V4L2 %s changed: alloc=%d (%dx%d) -> (%dx%d)\n", - ctx->name, -+ ctx_buffers_alloced(ctx), - ff_v4l2_get_format_width(fmt1), ff_v4l2_get_format_height(fmt1), - ff_v4l2_get_format_width(fmt2), ff_v4l2_get_format_height(fmt2)); - -@@ -167,10 +175,8 @@ static int do_source_change(V4L2m2mContext * const s) - - int ret; - int reinit; -- int full_reinit; - struct v4l2_format cap_fmt = s->capture.format; - -- s->resize_pending = 0; - s->capture.done = 0; - - ret = ioctl(s->fd, VIDIOC_G_FMT, &cap_fmt); -@@ -179,15 +185,21 @@ static int do_source_change(V4L2m2mContext * const s) - return 0; - } - -- s->output.sample_aspect_ratio = v4l2_get_sar(&s->output); -- - get_default_selection(&s->capture, &s->capture.selection); - -- reinit = v4l2_resolution_changed(&s->capture, &cap_fmt); -+ reinit = ctx_resolution_changed(&s->capture, &cap_fmt); -+ s->capture.format = cap_fmt; - if (reinit) { - s->capture.height = ff_v4l2_get_format_height(&cap_fmt); - s->capture.width = ff_v4l2_get_format_width(&cap_fmt); - } -+ -+ // If we don't support selection (or it is bust) and we obviously have HD then kludge -+ if ((s->capture.selection.width == 0 || s->capture.selection.height == 0) && -+ (s->capture.height == 1088 && s->capture.width == 1920)) { -+ s->capture.selection = (struct v4l2_rect){.width = 1920, .height = 1080}; -+ } -+ - s->capture.sample_aspect_ratio = v4l2_get_sar(&s->capture); - - av_log(avctx, AV_LOG_DEBUG, "Source change: SAR: %d/%d, crop %dx%d @ %d,%d\n", -@@ -195,11 +207,11 @@ static int do_source_change(V4L2m2mContext * const s) - s->capture.selection.width, s->capture.selection.height, - s->capture.selection.left, s->capture.selection.top); - -- s->reinit = 1; -- - if (reinit) { - if (avctx) -- ret = ff_set_dimensions(s->avctx, s->capture.width, s->capture.height); -+ ret = ff_set_dimensions(s->avctx, -+ s->capture.selection.width != 0 ? s->capture.selection.width : s->capture.width, -+ s->capture.selection.height != 0 ? s->capture.selection.height : s->capture.height); - if (ret < 0) - av_log(avctx, AV_LOG_WARNING, "update avcodec height and width failed\n"); - -@@ -208,11 +220,22 @@ static int do_source_change(V4L2m2mContext * const s) - av_log(avctx, AV_LOG_ERROR, "v4l2_m2m_codec_reinit failed\n"); - return AVERROR(EINVAL); - } -+ -+ // Update pixel format - should only actually do something on initial change -+ s->capture.av_pix_fmt = -+ ff_v4l2_format_v4l2_to_avfmt(ff_v4l2_get_format_pixelformat(&s->capture.format), AV_CODEC_ID_RAWVIDEO); -+ if (s->output_drm) { -+ avctx->pix_fmt = AV_PIX_FMT_DRM_PRIME; -+ avctx->sw_pix_fmt = s->capture.av_pix_fmt; -+ } -+ else -+ avctx->pix_fmt = s->capture.av_pix_fmt; -+ - goto reinit_run; - } - - /* Buffers are OK so just stream off to ack */ -- av_log(avctx, AV_LOG_DEBUG, "%s: Parameters only\n", __func__); -+ av_log(avctx, AV_LOG_DEBUG, "%s: Parameters only - restart decode\n", __func__); - - ret = ff_v4l2_context_set_status(&s->capture, VIDIOC_STREAMOFF); - if (ret) -@@ -225,54 +248,6 @@ reinit_run: - return 1; - } - --static int ctx_done(V4L2Context * const ctx) --{ -- int rv = 0; -- V4L2m2mContext * const s = ctx_to_m2mctx(ctx); -- -- ctx->done = 1; -- -- if (s->resize_pending && !V4L2_TYPE_IS_OUTPUT(ctx->type)) -- rv = do_source_change(s); -- -- return rv; --} -- --/** -- * handle resolution change event and end of stream event -- * returns 1 if reinit was successful, negative if it failed -- * returns 0 if reinit was not executed -- */ --static int v4l2_handle_event(V4L2Context *ctx) --{ -- V4L2m2mContext * const s = ctx_to_m2mctx(ctx); -- struct v4l2_event evt = { 0 }; -- int ret; -- -- ret = ioctl(s->fd, VIDIOC_DQEVENT, &evt); -- if (ret < 0) { -- av_log(logger(ctx), AV_LOG_ERROR, "%s VIDIOC_DQEVENT\n", ctx->name); -- return 0; -- } -- -- av_log(logger(ctx), AV_LOG_INFO, "Dq event %d\n", evt.type); -- -- if (evt.type == V4L2_EVENT_EOS) { --// ctx->done = 1; -- av_log(logger(ctx), AV_LOG_TRACE, "%s VIDIOC_EVENT_EOS\n", ctx->name); -- return 0; -- } -- -- if (evt.type != V4L2_EVENT_SOURCE_CHANGE) -- return 0; -- -- s->resize_pending = 1; -- if (!ctx->done) -- return 0; -- -- return do_source_change(s); --} -- - static int v4l2_stop_decode(V4L2Context *ctx) - { - struct v4l2_decoder_cmd cmd = { -@@ -313,243 +288,252 @@ static int v4l2_stop_encode(V4L2Context *ctx) - return 0; - } - --static int count_in_driver(const V4L2Context * const ctx) -+// DQ a buffer -+// Amalgamates all the various ways there are of signalling EOS/Event to -+// generate a consistant EPIPE. -+// -+// Sets ctx->flag_last if next dq would produce EPIPE (i.e. stream has stopped) -+// -+// Returns: -+// 0 Success -+// AVERROR(EPIPE) Nothing more to read -+// * AVERROR(..) -+ -+ static int -+dq_buf(V4L2Context * const ctx, V4L2Buffer ** const ppavbuf) - { -- int i; -- int n = 0; -+ V4L2m2mContext * const m = ctx_to_m2mctx(ctx); -+ AVCodecContext * const avctx = m->avctx; -+ V4L2Buffer * avbuf; -+ const int is_mp = V4L2_TYPE_IS_MULTIPLANAR(ctx->type); - -- if (!ctx->bufrefs) -- return -1; -- -- for (i = 0; i < ctx->num_buffers; ++i) { -- V4L2Buffer *const avbuf = (V4L2Buffer *)ctx->bufrefs[i]->data; -- if (avbuf->status == V4L2BUF_IN_DRIVER) -- ++n; -- } -- return n; --} -+ struct v4l2_plane planes[VIDEO_MAX_PLANES] = {{0}}; - --static V4L2Buffer* v4l2_dequeue_v4l2buf(V4L2Context *ctx, int timeout) --{ -- V4L2m2mContext * const s = ctx_to_m2mctx(ctx); -- const int is_capture = !V4L2_TYPE_IS_OUTPUT(ctx->type); -- struct v4l2_plane planes[VIDEO_MAX_PLANES]; -- struct v4l2_buffer buf = { 0 }; -- V4L2Buffer *avbuf; -- struct pollfd pfd = { -- .events = POLLIN | POLLRDNORM | POLLPRI | POLLOUT | POLLWRNORM, /* default blocking capture */ -- .fd = ctx_to_m2mctx(ctx)->fd, -+ struct v4l2_buffer buf = { -+ .type = ctx->type, -+ .memory = V4L2_MEMORY_MMAP, - }; -- int i, ret; -- int no_rx_means_done = 0; -- -- if (is_capture && ctx->bufrefs) { -- for (i = 0; i < ctx->num_buffers; i++) { -- avbuf = (V4L2Buffer *)ctx->bufrefs[i]->data; -- if (avbuf->status == V4L2BUF_IN_DRIVER) -- break; -- } -- if (i == ctx->num_buffers) -- av_log(logger(ctx), AV_LOG_WARNING, "All capture buffers (%d) returned to " -- "userspace. Increase num_capture_buffers " -- "to prevent device deadlock or dropped " -- "packets/frames.\n", i); -+ -+ *ppavbuf = NULL; -+ -+ if (ctx->flag_last) -+ return AVERROR(EPIPE); -+ -+ if (is_mp) { -+ buf.length = VIDEO_MAX_PLANES; -+ buf.m.planes = planes; - } - --#if 0 -- // I think this is true but pointless -- // we will get some other form of EOF signal -- -- /* if we are draining and there are no more capture buffers queued in the driver we are done */ -- if (is_capture && ctx_to_m2mctx(ctx)->draining) { -- for (i = 0; i < ctx->num_buffers; i++) { -- /* capture buffer initialization happens during decode hence -- * detection happens at runtime -- */ -- if (!ctx->bufrefs) -- break; -- -- avbuf = (V4L2Buffer *)ctx->bufrefs[i]->data; -- if (avbuf->status == V4L2BUF_IN_DRIVER) -- goto start; -+ while (ioctl(m->fd, VIDIOC_DQBUF, &buf) != 0) { -+ const int err = errno; -+ av_assert0(AVERROR(err) < 0); -+ if (err != EINTR) { -+ av_log(avctx, AV_LOG_DEBUG, "%s VIDIOC_DQBUF, errno (%s)\n", -+ ctx->name, av_err2str(AVERROR(err))); -+ -+ if (err == EPIPE) -+ ctx->flag_last = 1; -+ -+ return AVERROR(err); - } -- ctx->done = 1; -- return NULL; - } --#endif -- --start: -- if (is_capture) { -- /* no need to listen to requests for more input while draining */ -- if (ctx_to_m2mctx(ctx)->draining || timeout > 0) -- pfd.events = POLLIN | POLLRDNORM | POLLPRI; -- } else { -- pfd.events = POLLOUT | POLLWRNORM; -+ atomic_fetch_sub(&ctx->q_count, 1); -+ -+ avbuf = (V4L2Buffer *)ctx->bufrefs[buf.index]->data; -+ avbuf->status = V4L2BUF_AVAILABLE; -+ avbuf->buf = buf; -+ if (is_mp) { -+ memcpy(avbuf->planes, planes, sizeof(planes)); -+ avbuf->buf.m.planes = avbuf->planes; - } -- no_rx_means_done = s->resize_pending && is_capture; - -- for (;;) { -- // If we have a resize pending then all buffers should be Qed -- // With a resize pending we should be in drain but evidence suggests -- // that not all decoders do this so poll to clear -- int t2 = no_rx_means_done ? 0 : timeout < 0 ? 3000 : timeout; -- const int e = pfd.events; -- -- ret = poll(&pfd, 1, t2); -+ if (V4L2_TYPE_IS_CAPTURE(ctx->type)) { -+ // Zero length cap buffer return == EOS -+ if ((is_mp ? buf.m.planes[0].bytesused : buf.bytesused) == 0) { -+ av_log(avctx, AV_LOG_DEBUG, "Buffer empty - reQ\n"); - -- if (ret > 0) -- break; -+ // Must reQ so we don't leak -+ // May not matter if the next thing we do is release all the -+ // buffers but better to be tidy. -+ ff_v4l2_buffer_enqueue(avbuf); - -- if (ret < 0) { -- int err = errno; -- if (err == EINTR) -- continue; -- av_log(logger(ctx), AV_LOG_ERROR, "=== poll error %d (%s): events=%#x, cap buffers=%d\n", -- err, strerror(err), -- e, count_in_driver(ctx)); -- return NULL; -+ ctx->flag_last = 1; -+ return AVERROR(EPIPE); - } - -- // ret == 0 (timeout) -- if (no_rx_means_done) { -- av_log(logger(ctx), AV_LOG_DEBUG, "Ctx done on timeout\n"); -- ret = ctx_done(ctx); -- if (ret > 0) -- goto start; -- } -- if (timeout == -1) -- av_log(logger(ctx), AV_LOG_ERROR, "=== poll unexpected TIMEOUT: events=%#x, cap buffers=%d\n", e, count_in_driver(ctx));; -- return NULL; -+#ifdef V4L2_BUF_FLAG_LAST -+ // If flag_last set then this contains data but is the last frame -+ // so remember that but return OK -+ if ((buf.flags & V4L2_BUF_FLAG_LAST) != 0) -+ ctx->flag_last = 1; -+#endif - } - -- /* 0. handle errors */ -- if (pfd.revents & POLLERR) { -- /* if we are trying to get free buffers but none have been queued yet -- no need to raise a warning */ -- if (timeout == 0) { -- for (i = 0; i < ctx->num_buffers; i++) { -- avbuf = (V4L2Buffer *)ctx->bufrefs[i]->data; -- if (avbuf->status != V4L2BUF_AVAILABLE) -- av_log(logger(ctx), AV_LOG_WARNING, "%s POLLERR\n", ctx->name); -- } -- } -- else -- av_log(logger(ctx), AV_LOG_WARNING, "%s POLLERR\n", ctx->name); -+ *ppavbuf = avbuf; -+ return 0; -+} - -- return NULL; -- } -+/** -+ * handle resolution change event and end of stream event -+ * Expects to be called after the stream has stopped -+ * -+ * returns 1 if reinit was successful, negative if it failed -+ * returns 0 if reinit was not executed -+ */ -+static int -+get_event(V4L2m2mContext * const m) -+{ -+ AVCodecContext * const avctx = m->avctx; -+ struct v4l2_event evt = { 0 }; - -- /* 1. handle resolution changes */ -- if (pfd.revents & POLLPRI) { -- ret = v4l2_handle_event(ctx); -- if (ret < 0) { -- /* if re-init failed, abort */ -- ctx->done = 1; -- return NULL; -+ while (ioctl(m->fd, VIDIOC_DQEVENT, &evt) != 0) { -+ const int rv = AVERROR(errno); -+ if (rv == AVERROR(EINTR)) -+ continue; -+ if (rv == AVERROR(EAGAIN)) { -+ av_log(avctx, AV_LOG_WARNING, "V4L2 failed to get expected event - assume EOS\n"); -+ return AVERROR_EOF; - } -- if (ret > 0) -- goto start; -+ av_log(avctx, AV_LOG_ERROR, "V4L2 VIDIOC_DQEVENT: %s\n", av_err2str(rv)); -+ return rv; -+ } -+ -+ av_log(avctx, AV_LOG_DEBUG, "Dq event %d\n", evt.type); -+ -+ if (evt.type == V4L2_EVENT_EOS) { -+ av_log(avctx, AV_LOG_TRACE, "V4L2 VIDIOC_EVENT_EOS\n"); -+ return AVERROR_EOF; - } - -- /* 2. dequeue the buffer */ -- if (pfd.revents & (POLLIN | POLLRDNORM | POLLOUT | POLLWRNORM)) { -+ if (evt.type == V4L2_EVENT_SOURCE_CHANGE) -+ return do_source_change(m); - -- if (is_capture) { -- /* there is a capture buffer ready */ -- if (pfd.revents & (POLLIN | POLLRDNORM)) -- goto dequeue; -+ return 0; -+} - -- // CAPTURE Q drained -- if (no_rx_means_done) { -- if (ctx_done(ctx) > 0) -- goto start; -- return NULL; -- } - -- /* the driver is ready to accept more input; instead of waiting for the capture -- * buffer to complete we return NULL so input can proceed (we are single threaded) -- */ -- if (pfd.revents & (POLLOUT | POLLWRNORM)) -- return NULL; -+// Get a buffer -+// If output then just gets the buffer in the expected way -+// If capture then runs the capture state m/c to deal with res change etc. -+// If return value == 0 then *ppavbuf != NULL -+ -+static int -+get_qbuf(V4L2Context * const ctx, V4L2Buffer ** const ppavbuf, const int timeout) -+{ -+ V4L2m2mContext * const m = ctx_to_m2mctx(ctx); -+ AVCodecContext * const avctx = m->avctx; -+ const int is_cap = V4L2_TYPE_IS_CAPTURE(ctx->type); -+ -+ const unsigned int poll_cap = (POLLIN | POLLRDNORM); -+ const unsigned int poll_out = (POLLOUT | POLLWRNORM); -+ const unsigned int poll_event = POLLPRI; -+ -+ *ppavbuf = NULL; -+ -+ for (;;) { -+ struct pollfd pfd = { -+ .fd = m->fd, -+ // If capture && stream not started then assume we are waiting for the initial event -+ .events = !is_cap ? poll_out : -+ !ff_v4l2_ctx_eos(ctx) && ctx->streamon ? poll_cap : -+ poll_event, -+ }; -+ int ret; -+ -+ if (ctx->done) { -+ av_log(avctx, AV_LOG_TRACE, "V4L2 %s already done\n", ctx->name); -+ return AVERROR_EOF; - } - --dequeue: -- memset(&buf, 0, sizeof(buf)); -- buf.memory = V4L2_MEMORY_MMAP; -- buf.type = ctx->type; -- if (V4L2_TYPE_IS_MULTIPLANAR(ctx->type)) { -- memset(planes, 0, sizeof(planes)); -- buf.length = VIDEO_MAX_PLANES; -- buf.m.planes = planes; -+ // If capture && timeout == -1 then also wait for rx buffer free -+ if (is_cap && timeout == -1 && m->output.streamon && !m->draining) -+ pfd.events |= poll_out; -+ -+ // If nothing Qed all we will get is POLLERR - avoid that -+ if ((pfd.events == poll_out && atomic_load(&m->output.q_count) == 0) || -+ (pfd.events == poll_cap && atomic_load(&m->capture.q_count) == 0) || -+ (pfd.events == (poll_cap | poll_out) && atomic_load(&m->capture.q_count) == 0 && atomic_load(&m->output.q_count) == 0)) { -+ av_log(avctx, AV_LOG_TRACE, "V4L2 poll %s empty\n", ctx->name); -+ return AVERROR(EAGAIN); - } - -- while ((ret = ioctl(ctx_to_m2mctx(ctx)->fd, VIDIOC_DQBUF, &buf)) == -1) { -- const int err = errno; -- if (err == EINTR) -+ // Timeout kludged s.t. "forever" eventually gives up & produces logging -+ // If waiting for an event when we have seen a last_frame then we expect -+ // it to be ready already so force a short timeout -+ ret = poll(&pfd, 1, -+ ff_v4l2_ctx_eos(ctx) ? 10 : -+ timeout == -1 ? 3000 : timeout); -+ if (ret < 0) { -+ ret = AVERROR(errno); // Remember errno before logging etc. -+ av_assert0(ret < 0); -+ } -+ -+ av_log(avctx, AV_LOG_TRACE, "V4L2 poll %s ret=%d, timeout=%d, events=%#x, revents=%#x\n", -+ ctx->name, ret, timeout, pfd.events, pfd.revents); -+ -+ if (ret < 0) { -+ if (ret == AVERROR(EINTR)) - continue; -- if (err != EAGAIN) { -- // EPIPE on CAPTURE can be used instead of BUF_FLAG_LAST -- if (err != EPIPE || !is_capture) -- av_log(logger(ctx), AV_LOG_DEBUG, "%s VIDIOC_DQBUF, errno (%s)\n", -- ctx->name, av_err2str(AVERROR(err))); -- if (ctx_done(ctx) > 0) -- goto start; -+ av_log(avctx, AV_LOG_ERROR, "V4L2 %s poll error %d (%s)\n", ctx->name, AVUNERROR(ret), av_err2str(ret)); -+ return ret; -+ } -+ -+ if (ret == 0) { -+ if (timeout == -1) -+ av_log(avctx, AV_LOG_ERROR, "V4L2 %s poll unexpected timeout: events=%#x\n", ctx->name, pfd.events); -+ if (ff_v4l2_ctx_eos(ctx)) { -+ av_log(avctx, AV_LOG_WARNING, "V4L2 %s poll event timeout\n", ctx->name); -+ ret = get_event(m); -+ if (ret < 0) { -+ ctx->done = 1; -+ return ret; -+ } - } -- return NULL; -+ return AVERROR(EAGAIN); - } -- --ctx->q_count; -- av_log(logger(ctx), AV_LOG_DEBUG, "--- %s VIDIOC_DQBUF OK: index=%d, ts=%ld.%06ld, count=%d, dq=%d field=%d\n", -- ctx->name, buf.index, -- buf.timestamp.tv_sec, buf.timestamp.tv_usec, -- ctx->q_count, ++ctx->dq_count, buf.field); -- -- avbuf = (V4L2Buffer *)ctx->bufrefs[buf.index]->data; -- avbuf->status = V4L2BUF_AVAILABLE; -- avbuf->buf = buf; -- if (V4L2_TYPE_IS_MULTIPLANAR(ctx->type)) { -- memcpy(avbuf->planes, planes, sizeof(planes)); -- avbuf->buf.m.planes = avbuf->planes; -+ -+ if ((pfd.revents & POLLERR) != 0) { -+ av_log(avctx, AV_LOG_WARNING, "V4L2 %s POLLERR\n", ctx->name); -+ return AVERROR_UNKNOWN; - } - -- if (ctx_to_m2mctx(ctx)->draining && is_capture) { -- int bytesused = V4L2_TYPE_IS_MULTIPLANAR(buf.type) ? -- buf.m.planes[0].bytesused : buf.bytesused; -- if (bytesused == 0) { -- av_log(logger(ctx), AV_LOG_DEBUG, "Buffer empty - reQ\n"); -+ if ((pfd.revents & poll_event) != 0) { -+ ret = get_event(m); -+ if (ret < 0) { -+ ctx->done = 1; -+ return ret; -+ } -+ continue; -+ } - -- // Must reQ so we don't leak -- // May not matter if the next thing we do is release all the -- // buffers but better to be tidy. -- ff_v4l2_buffer_enqueue(avbuf); -+ if ((pfd.revents & poll_cap) != 0) { -+ ret = dq_buf(ctx, ppavbuf); -+ if (ret == AVERROR(EPIPE)) -+ continue; -+ return ret; -+ } - -- if (ctx_done(ctx) > 0) -- goto start; -- return NULL; -- } --#ifdef V4L2_BUF_FLAG_LAST -- if (buf.flags & V4L2_BUF_FLAG_LAST) { -- av_log(logger(ctx), AV_LOG_TRACE, "FLAG_LAST set\n"); -- avbuf->status = V4L2BUF_IN_USE; // Avoid flushing this buffer -- ctx_done(ctx); -- } --#endif -+ if ((pfd.revents & poll_out) != 0) { -+ if (is_cap) -+ return AVERROR(EAGAIN); -+ return dq_buf(ctx, ppavbuf); - } - -- return avbuf; -+ av_log(avctx, AV_LOG_ERROR, "V4L2 poll unexpected events=%#x, revents=%#x\n", pfd.events, pfd.revents); -+ return AVERROR_UNKNOWN; - } -- -- return NULL; - } - - static V4L2Buffer* v4l2_getfree_v4l2buf(V4L2Context *ctx) - { -- int timeout = 0; /* return when no more buffers to dequeue */ - int i; - - /* get back as many output buffers as possible */ - if (V4L2_TYPE_IS_OUTPUT(ctx->type)) { -- do { -- } while (v4l2_dequeue_v4l2buf(ctx, timeout)); -+ V4L2Buffer * avbuf; -+ do { -+ get_qbuf(ctx, &avbuf, 0); -+ } while (avbuf); - } - - for (i = 0; i < ctx->num_buffers; i++) { -@@ -722,7 +706,7 @@ static void flush_all_buffers_status(V4L2Context* const ctx) - if (buf->status == V4L2BUF_IN_DRIVER) - buf->status = V4L2BUF_AVAILABLE; - } -- ctx->q_count = 0; -+ atomic_store(&ctx->q_count, 0); - } - - static int stuff_all_buffers(AVCodecContext * avctx, V4L2Context* ctx) -@@ -755,6 +739,10 @@ int ff_v4l2_context_set_status(V4L2Context* ctx, uint32_t cmd) - int ret; - AVCodecContext * const avctx = logger(ctx); - -+ // Avoid doing anything if there is nothing we can do -+ if (cmd == VIDIOC_STREAMOFF && !ctx_buffers_alloced(ctx) && !ctx->streamon) -+ return 0; -+ - ff_mutex_lock(&ctx->lock); - - if (cmd == VIDIOC_STREAMON && !V4L2_TYPE_IS_OUTPUT(ctx->type)) -@@ -777,6 +765,9 @@ int ff_v4l2_context_set_status(V4L2Context* ctx, uint32_t cmd) - cmd, (cmd == VIDIOC_STREAMON) ? "ON" : "OFF"); - } - -+ // Both stream off & on effectively clear flag_last -+ ctx->flag_last = 0; -+ - ff_mutex_unlock(&ctx->lock); - - return ret; -@@ -840,19 +831,10 @@ int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt, - int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* frame, int timeout) - { - V4L2Buffer *avbuf; -+ int rv; - -- /* -- * timeout=-1 blocks until: -- * 1. decoded frame available -- * 2. an input buffer is ready to be dequeued -- */ -- avbuf = v4l2_dequeue_v4l2buf(ctx, timeout); -- if (!avbuf) { -- if (ctx->done) -- return AVERROR_EOF; -- -- return AVERROR(EAGAIN); -- } -+ if ((rv = get_qbuf(ctx, &avbuf, timeout)) != 0) -+ return rv; - - return ff_v4l2_buffer_buf_to_avframe(frame, avbuf); - } -@@ -860,19 +842,10 @@ int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* frame, int timeout) - int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt) - { - V4L2Buffer *avbuf; -+ int rv; - -- /* -- * blocks until: -- * 1. encoded packet available -- * 2. an input buffer ready to be dequeued -- */ -- avbuf = v4l2_dequeue_v4l2buf(ctx, -1); -- if (!avbuf) { -- if (ctx->done) -- return AVERROR_EOF; -- -- return AVERROR(EAGAIN); -- } -+ if ((rv = get_qbuf(ctx, &avbuf, -1)) != 0) -+ return rv; - - return ff_v4l2_buffer_buf_to_avpkt(pkt, avbuf); - } -@@ -956,6 +929,8 @@ static int create_buffers(V4L2Context* const ctx, const unsigned int req_buffers - int ret; - int i; - -+ av_assert0(ctx->bufrefs == NULL); -+ - memset(&req, 0, sizeof(req)); - req.count = req_buffers; - req.memory = V4L2_MEMORY_MMAP; -@@ -1033,8 +1008,8 @@ int ff_v4l2_context_init(V4L2Context* ctx) - hwframes = (AVHWFramesContext*)ctx->frames_ref->data; - hwframes->format = AV_PIX_FMT_DRM_PRIME; - hwframes->sw_format = ctx->av_pix_fmt; -- hwframes->width = ctx->width; -- hwframes->height = ctx->height; -+ hwframes->width = ctx->width != 0 ? ctx->width : s->avctx->width; -+ hwframes->height = ctx->height != 0 ? ctx->height : s->avctx->height; - ret = av_hwframe_ctx_init(ctx->frames_ref); - if (ret < 0) - goto fail_unref_hwframes; -diff --git a/libavcodec/v4l2_context.h b/libavcodec/v4l2_context.h -index a4176448d5..565858a1ed 100644 ---- a/libavcodec/v4l2_context.h -+++ b/libavcodec/v4l2_context.h -@@ -102,6 +102,8 @@ typedef struct V4L2Context { - */ - int done; - -+ int flag_last; -+ - /** - * PTS rescale not wanted - * If the PTS is just a dummy frame count then rescale is -diff --git a/libavcodec/v4l2_m2m.c b/libavcodec/v4l2_m2m.c -index 516e6d9858..e26bd74c3e 100644 ---- a/libavcodec/v4l2_m2m.c -+++ b/libavcodec/v4l2_m2m.c -@@ -235,7 +235,6 @@ int ff_v4l2_m2m_codec_reinit(V4L2m2mContext *s) - - /* 5. complete reinit */ - s->draining = 0; -- s->reinit = 0; - - return 0; - } -diff --git a/libavcodec/v4l2_m2m.h b/libavcodec/v4l2_m2m.h -index 3f86809623..d71f6b721c 100644 ---- a/libavcodec/v4l2_m2m.h -+++ b/libavcodec/v4l2_m2m.h -@@ -84,8 +84,6 @@ typedef struct V4L2m2mContext { - AVCodecContext *avctx; - sem_t refsync; - atomic_uint refcount; -- int reinit; -- int resize_pending; - - /* null frame/packet received */ - int draining; -@@ -180,15 +178,25 @@ int ff_v4l2_m2m_codec_reinit(V4L2m2mContext *ctx); - int ff_v4l2_m2m_codec_full_reinit(V4L2m2mContext *ctx); - - --static inline unsigned int ff_v4l2_get_format_width(struct v4l2_format *fmt) -+static inline unsigned int ff_v4l2_get_format_width(const struct v4l2_format * const fmt) - { - return V4L2_TYPE_IS_MULTIPLANAR(fmt->type) ? fmt->fmt.pix_mp.width : fmt->fmt.pix.width; - } - --static inline unsigned int ff_v4l2_get_format_height(struct v4l2_format *fmt) -+static inline unsigned int ff_v4l2_get_format_height(const struct v4l2_format * const fmt) - { - return V4L2_TYPE_IS_MULTIPLANAR(fmt->type) ? fmt->fmt.pix_mp.height : fmt->fmt.pix.height; - } - -+static inline uint32_t ff_v4l2_get_format_pixelformat(const struct v4l2_format * const fmt) -+{ -+ return V4L2_TYPE_IS_MULTIPLANAR(fmt->type) ? fmt->fmt.pix_mp.pixelformat : fmt->fmt.pix.pixelformat; -+} -+ -+static inline int ff_v4l2_ctx_eos(const V4L2Context * const ctx) -+{ -+ return ctx->flag_last; -+} -+ - - #endif /* AVCODEC_V4L2_M2M_H */ -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 09ec496351..e4b6569ba5 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -113,9 +113,6 @@ static int check_output_streamon(AVCodecContext *const avctx, V4L2m2mContext *co - if (ret < 0) - av_log(avctx, AV_LOG_ERROR, "VIDIOC_STREAMON on output context\n"); - -- if (!s->capture.streamon || ret < 0) -- return ret; -- - ret = ioctl(s->fd, VIDIOC_DECODER_CMD, &cmd); - if (ret < 0) - av_log(avctx, AV_LOG_ERROR, "VIDIOC_DECODER_CMD start error: %d\n", errno); -@@ -127,69 +124,12 @@ static int check_output_streamon(AVCodecContext *const avctx, V4L2m2mContext *co - - static int v4l2_try_start(AVCodecContext *avctx) - { -- V4L2m2mContext *s = ((V4L2m2mPriv*)avctx->priv_data)->context; -- V4L2Context *const capture = &s->capture; -- struct v4l2_selection selection = { 0 }; -+ V4L2m2mContext * const s = ((V4L2m2mPriv*)avctx->priv_data)->context; - int ret; - - /* 1. start the output process */ - if ((ret = check_output_streamon(avctx, s)) != 0) - return ret; -- -- if (capture->streamon) -- return 0; -- -- /* 2. get the capture format */ -- capture->format.type = capture->type; -- ret = ioctl(s->fd, VIDIOC_G_FMT, &capture->format); -- if (ret) { -- av_log(avctx, AV_LOG_WARNING, "VIDIOC_G_FMT ioctl\n"); -- return ret; -- } -- -- /* 2.1 update the AVCodecContext */ -- capture->av_pix_fmt = -- ff_v4l2_format_v4l2_to_avfmt(capture->format.fmt.pix_mp.pixelformat, AV_CODEC_ID_RAWVIDEO); -- if (s->output_drm) { -- avctx->pix_fmt = AV_PIX_FMT_DRM_PRIME; -- avctx->sw_pix_fmt = capture->av_pix_fmt; -- } -- else -- avctx->pix_fmt = capture->av_pix_fmt; -- -- /* 3. set the crop parameters */ --#if 1 -- selection.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; -- selection.target = V4L2_SEL_TGT_CROP_DEFAULT; -- ret = ioctl(s->fd, VIDIOC_G_SELECTION, &selection); -- av_log(avctx, AV_LOG_INFO, "Post G selection ret=%d, err=%d %dx%d\n", ret, errno, selection.r.width, selection.r.height); --#else -- selection.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; -- selection.r.height = avctx->coded_height; -- selection.r.width = avctx->coded_width; -- av_log(avctx, AV_LOG_INFO, "Try selection %dx%d\n", avctx->coded_width, avctx->coded_height); -- ret = ioctl(s->fd, VIDIOC_S_SELECTION, &selection); -- av_log(avctx, AV_LOG_INFO, "Post S selection ret=%d, err=%d %dx%d\n", ret, errno, selection.r.width, selection.r.height); -- if (1) { -- ret = ioctl(s->fd, VIDIOC_G_SELECTION, &selection); -- if (ret) { -- av_log(avctx, AV_LOG_WARNING, "VIDIOC_G_SELECTION ioctl\n"); -- } else { -- av_log(avctx, AV_LOG_DEBUG, "crop output %dx%d\n", selection.r.width, selection.r.height); -- /* update the size of the resulting frame */ -- capture->height = selection.r.height; -- capture->width = selection.r.width; -- } -- } --#endif -- -- /* 5. start the capture process */ -- ret = ff_v4l2_context_set_status(capture, VIDIOC_STREAMON); -- if (ret) { -- av_log(avctx, AV_LOG_DEBUG, "VIDIOC_STREAMON, on capture context\n"); -- return ret; -- } -- - return 0; - } - -@@ -364,7 +304,7 @@ xlat_pending(const xlat_track_t * const x) - } - - static inline int stream_started(const V4L2m2mContext * const s) { -- return s->capture.streamon && s->output.streamon; -+ return s->output.streamon; - } - - #define NQ_OK 0 -@@ -377,6 +317,9 @@ static inline int stream_started(const V4L2m2mContext * const s) { - #define TRY_DQ(nq_status) ((nq_status) >= NQ_OK && (nq_status) <= NQ_DRAINING) - #define RETRY_NQ(nq_status) ((nq_status) == NQ_Q_FULL || (nq_status) == NQ_NONE) - -+// do_not_get If true then no new packet will be got but status will -+// be set appropriately -+ - // AVERROR_EOF Flushing an already flushed stream - // -ve Error (all errors except EOF are unexpected) - // NQ_OK (0) OK -@@ -386,14 +329,14 @@ static inline int stream_started(const V4L2m2mContext * const s) { - // NQ_DRAINING At EOS, dQ dest until EOS there too - // NQ_DEAD Not running (do not retry, do not attempt capture dQ) - --static int try_enqueue_src(AVCodecContext * const avctx, V4L2m2mContext * const s) -+static int try_enqueue_src(AVCodecContext * const avctx, V4L2m2mContext * const s, const int do_not_get) - { - int ret; - - // If we don't already have a coded packet - get a new one - // We will already have a coded pkt if the output Q was full last time we - // tried to Q it -- if (!s->buf_pkt.size) { -+ if (!s->buf_pkt.size && !do_not_get) { - ret = ff_decode_get_packet(avctx, &s->buf_pkt); - - if (ret == AVERROR(EAGAIN)) { -@@ -435,6 +378,17 @@ static int try_enqueue_src(AVCodecContext * const avctx, V4L2m2mContext * const - xlat_pts_in(avctx, &s->xlat, &s->buf_pkt); - } - -+ if (s->draining) { -+ if (s->buf_pkt.size) { -+ av_log(avctx, AV_LOG_WARNING, "Unexpected input whilst draining\n"); -+ av_packet_unref(&s->buf_pkt); -+ } -+ return NQ_DRAINING; -+ } -+ -+ if (!s->buf_pkt.size) -+ return NQ_NONE; -+ - if ((ret = check_output_streamon(avctx, s)) != 0) - return ret; - -@@ -471,7 +425,7 @@ static int try_enqueue_src(AVCodecContext * const avctx, V4L2m2mContext * const - static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - { - V4L2m2mContext *const s = ((V4L2m2mPriv*)avctx->priv_data)->context; -- int src_rv = NQ_NONE; -+ int src_rv; - int dst_rv = 1; // Non-zero (done), non-negative (error) number - unsigned int i = 0; - -@@ -483,31 +437,40 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - // (a) We don't have a lot of stuff in the buffer already OR - // (b) ... we (think we) do but we've failed to get a frame already OR - // (c) We've dequeued a lot of frames without asking for input -- if (!prefer_dq || i != 0 || s->req_pkt > 2) { -- src_rv = try_enqueue_src(avctx, s); -- -- // If we got a frame last time or we've already tried to get a frame and -- // we have nothing to enqueue then return now. rv will be AVERROR(EAGAIN) -- // indicating that we want more input. -- // This should mean that once decode starts we enter a stable state where -- // we alternately ask for input and produce output -- if ((i != 0 || s->req_pkt) && src_rv == NQ_SRC_EMPTY) -- break; -- } -+ src_rv = try_enqueue_src(avctx, s, !(!prefer_dq || i != 0 || s->req_pkt > 2)); -+ -+ // If we got a frame last time or we've already tried to get a frame and -+ // we have nothing to enqueue then return now. rv will be AVERROR(EAGAIN) -+ // indicating that we want more input. -+ // This should mean that once decode starts we enter a stable state where -+ // we alternately ask for input and produce output -+ if ((i != 0 || s->req_pkt) && src_rv == NQ_SRC_EMPTY) -+ break; - - // Try to get a new frame if - // (a) we haven't already got one AND - // (b) enqueue returned a status indicating that decode should be attempted - if (dst_rv != 0 && TRY_DQ(src_rv)) { -+ // Pick a timeout depending on state -+ const int t = -+ src_rv == NQ_DRAINING ? 300 : -+ prefer_dq ? 5 : -+ src_rv == NQ_Q_FULL ? -1 : 0; -+ - do { - // Dequeue frame will unref any previous contents of frame - // if it returns success so we don't need an explicit unref - // when discarding - // This returns AVERROR(EAGAIN) on timeout or if - // there is room in the input Q and timeout == -1 -- dst_rv = ff_v4l2_context_dequeue_frame(&s->capture, frame, prefer_dq ? 5 : -1); -+ dst_rv = ff_v4l2_context_dequeue_frame(&s->capture, frame, t); - -- if (dst_rv == AVERROR_EOF && (s->draining || s->capture.done)) -+ if (dst_rv == AVERROR(EAGAIN) && src_rv == NQ_DRAINING) { -+ av_log(avctx, AV_LOG_WARNING, "Timeout in drain - assume EOF"); -+ dst_rv = AVERROR_EOF; -+ s->capture.done = 1; -+ } -+ else if (dst_rv == AVERROR_EOF && (s->draining || s->capture.done)) - av_log(avctx, AV_LOG_DEBUG, "Dequeue EOF: draining=%d, cap.done=%d\n", - s->draining, s->capture.done); - else if (dst_rv && dst_rv != AVERROR(EAGAIN)) -@@ -630,8 +593,10 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - * by the v4l2 driver; this event will trigger a full pipeline reconfig and - * the proper values will be retrieved from the kernel driver. - */ -- output->height = capture->height = avctx->coded_height; -- output->width = capture->width = avctx->coded_width; -+// output->height = capture->height = avctx->coded_height; -+// output->width = capture->width = avctx->coded_width; -+ output->height = capture->height = 0; -+ output->width = capture->width = 0; - - output->av_codec_id = avctx->codec_id; - output->av_pix_fmt = AV_PIX_FMT_NONE; -@@ -703,7 +668,6 @@ static void v4l2_decode_flush(AVCodecContext *avctx) - V4L2m2mContext * const s = priv->context; - V4L2Context * const output = &s->output; - V4L2Context * const capture = &s->capture; -- int ret; - - av_log(avctx, AV_LOG_TRACE, "<<< %s: streamon=%d\n", __func__, output->streamon); - -@@ -711,13 +675,19 @@ static void v4l2_decode_flush(AVCodecContext *avctx) - // states like EOS processing so don't try to optimize out (having got it - // wrong once) - -- ret = ff_v4l2_context_set_status(output, VIDIOC_STREAMOFF); -- if (ret < 0) -- av_log(avctx, AV_LOG_ERROR, "VIDIOC_STREAMOFF %s error: %d\n", output->name, ret); -+ ff_v4l2_context_set_status(output, VIDIOC_STREAMOFF); - - // Clear any buffered input packet - av_packet_unref(&s->buf_pkt); - -+ // Clear a pending EOS -+ if (ff_v4l2_ctx_eos(capture)) { -+ // Arguably we could delay this but this is easy and doesn't require -+ // thought or extra vars -+ ff_v4l2_context_set_status(capture, VIDIOC_STREAMOFF); -+ ff_v4l2_context_set_status(capture, VIDIOC_STREAMON); -+ } -+ - // V4L2 makes no guarantees about whether decoded frames are flushed or not - // so mark all frames we are tracking to be discarded if they appear - xlat_flush(&s->xlat); - -From a2519f7a512edde7433aced70de4464e21805693 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 9 Dec 2021 18:51:00 +0000 -Subject: [PATCH 039/151] Honor result of ff_get_format if possible - ---- - libavcodec/v4l2_m2m_dec.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index e4b6569ba5..c9655bcc3b 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -615,15 +615,19 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - * check the v4l2_get_drm_frame function. - */ - -+ avctx->sw_pix_fmt = avctx->pix_fmt; - gf_pix_fmt = ff_get_format(avctx, avctx->codec->pix_fmts); - av_log(avctx, AV_LOG_DEBUG, "avctx requested=%d (%s); get_format requested=%d (%s)\n", - avctx->pix_fmt, av_get_pix_fmt_name(avctx->pix_fmt), gf_pix_fmt, av_get_pix_fmt_name(gf_pix_fmt)); - -- s->output_drm = 0; - if (gf_pix_fmt == AV_PIX_FMT_DRM_PRIME || avctx->pix_fmt == AV_PIX_FMT_DRM_PRIME) { - avctx->pix_fmt = AV_PIX_FMT_DRM_PRIME; - s->output_drm = 1; - } -+ else { -+ capture->av_pix_fmt = gf_pix_fmt; -+ s->output_drm = 0; -+ } - - s->device_ref = av_hwdevice_ctx_alloc(AV_HWDEVICE_TYPE_DRM); - if (!s->device_ref) { - -From a1cd1cb98e48c631392b385ccac5ab7b09bb5ee9 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 14 Dec 2021 16:11:10 +0000 -Subject: [PATCH 040/151] Add an always-reinit quirk - ---- - libavcodec/v4l2_context.c | 7 +++++-- - libavcodec/v4l2_m2m.h | 5 +++++ - libavcodec/v4l2_m2m_dec.c | 33 ++++++++++++++++++++++++++++++++- - 3 files changed, 42 insertions(+), 3 deletions(-) - -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index d765181645..c11b5e6863 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -188,6 +188,9 @@ static int do_source_change(V4L2m2mContext * const s) - get_default_selection(&s->capture, &s->capture.selection); - - reinit = ctx_resolution_changed(&s->capture, &cap_fmt); -+ if ((s->quirks & FF_V4L2_QUIRK_REINIT_ALWAYS) != 0) -+ reinit = 1; -+ - s->capture.format = cap_fmt; - if (reinit) { - s->capture.height = ff_v4l2_get_format_height(&cap_fmt); -@@ -202,10 +205,10 @@ static int do_source_change(V4L2m2mContext * const s) - - s->capture.sample_aspect_ratio = v4l2_get_sar(&s->capture); - -- av_log(avctx, AV_LOG_DEBUG, "Source change: SAR: %d/%d, crop %dx%d @ %d,%d\n", -+ av_log(avctx, AV_LOG_DEBUG, "Source change: SAR: %d/%d, crop %dx%d @ %d,%d, reinit=%d\n", - s->capture.sample_aspect_ratio.num, s->capture.sample_aspect_ratio.den, - s->capture.selection.width, s->capture.selection.height, -- s->capture.selection.left, s->capture.selection.top); -+ s->capture.selection.left, s->capture.selection.top, reinit); - - if (reinit) { - if (avctx) -diff --git a/libavcodec/v4l2_m2m.h b/libavcodec/v4l2_m2m.h -index d71f6b721c..f1923bb26d 100644 ---- a/libavcodec/v4l2_m2m.h -+++ b/libavcodec/v4l2_m2m.h -@@ -113,6 +113,11 @@ typedef struct V4L2m2mContext { - - /* Ext data sent */ - int extdata_sent; -+ -+#define FF_V4L2_QUIRK_REINIT_ALWAYS 1 -+ /* Quirks */ -+ unsigned int quirks; -+ - } V4L2m2mContext; - - typedef struct V4L2m2mPriv { -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index c9655bcc3b..e2b10f5e3a 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -540,6 +540,34 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - } - #endif - -+static int -+get_quirks(AVCodecContext * const avctx, V4L2m2mContext * const s) -+{ -+ struct v4l2_capability cap; -+ -+ memset(&cap, 0, sizeof(cap)); -+ while (ioctl(s->fd, VIDIOC_QUERYCAP, &cap) != 0) { -+ int err = errno; -+ if (err == EINTR) -+ continue; -+ av_log(avctx, AV_LOG_ERROR, "V4L2: Failed to get capabilities: %s\n", strerror(err)); -+ return AVERROR(err); -+ } -+ -+ // Could be made table driven if we have a few more but right now there -+ // seems no point -+ -+ // Meson (amlogic) always gives a resolution changed event after output -+ // streamon and userspace must (re)allocate capture buffers and streamon -+ // capture to clear the event even if the capture buffers were the right -+ // size in the first place. -+ if (strcmp(cap.driver, "meson-vdec") == 0) -+ s->quirks |= FF_V4L2_QUIRK_REINIT_ALWAYS; -+ -+ av_log(avctx, AV_LOG_DEBUG, "Driver '%s': Quirks=%#x\n", cap.driver, s->quirks); -+ return 0; -+} -+ - // This heuristic is for H264 but use for everything - static uint32_t max_coded_size(const AVCodecContext * const avctx) - { -@@ -646,7 +674,10 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - return ret; - } - -- return v4l2_prepare_decoder(s); -+ if ((ret = v4l2_prepare_decoder(s)) < 0) -+ return ret; -+ -+ return get_quirks(avctx, s); - } - - static av_cold int v4l2_decode_close(AVCodecContext *avctx) - -From 2470968adf0d28bbaf310e782720dd00d57d7bf6 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 4 Jan 2022 16:58:31 +0000 -Subject: [PATCH 041/151] v4l2_buffers: rework flags for keyframe - -Previously flags could become confused and keyframe info could be lost. -This fixes that and removes the duplicate flags field in V4L2Buffer. ---- - libavcodec/v4l2_buffers.c | 15 ++++++++++----- - libavcodec/v4l2_buffers.h | 1 - - libavcodec/v4l2_context.c | 18 +++++++++++++++++- - 3 files changed, 27 insertions(+), 7 deletions(-) - -diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c -index 2cf7be6632..62d1c26053 100644 ---- a/libavcodec/v4l2_buffers.c -+++ b/libavcodec/v4l2_buffers.c -@@ -680,7 +680,9 @@ static int v4l2_buffer_swframe_to_buf(const AVFrame *frame, V4L2Buffer *out) - - int ff_v4l2_buffer_avframe_to_buf(const AVFrame *frame, V4L2Buffer *out) - { -- out->buf.flags = frame->key_frame ? (out->buf.flags & ~V4L2_BUF_FLAG_KEYFRAME) : (out->buf.flags | V4L2_BUF_FLAG_KEYFRAME); -+ out->buf.flags = frame->key_frame ? -+ (out->buf.flags | V4L2_BUF_FLAG_KEYFRAME) : -+ (out->buf.flags & ~V4L2_BUF_FLAG_KEYFRAME); - // Beware that colour info is held in format rather than the actual - // v4l2 buffer struct so this may not be as useful as you might hope - v4l2_set_color(out, frame->color_primaries, frame->colorspace, frame->color_trc); -@@ -706,6 +708,10 @@ int ff_v4l2_buffer_buf_to_avframe(AVFrame *frame, V4L2Buffer *avbuf) - - /* 2. get frame information */ - frame->key_frame = !!(avbuf->buf.flags & V4L2_BUF_FLAG_KEYFRAME); -+ frame->pict_type = frame->key_frame ? AV_PICTURE_TYPE_I : -+ (avbuf->buf.flags & V4L2_BUF_FLAG_PFRAME) != 0 ? AV_PICTURE_TYPE_P : -+ (avbuf->buf.flags & V4L2_BUF_FLAG_BFRAME) != 0 ? AV_PICTURE_TYPE_B : -+ AV_PICTURE_TYPE_NONE; - frame->color_primaries = v4l2_get_color_primaries(avbuf); - frame->colorspace = v4l2_get_color_space(avbuf); - frame->color_range = v4l2_get_color_range(avbuf); -@@ -779,8 +785,9 @@ int ff_v4l2_buffer_avpkt_to_buf_ext(const AVPacket *pkt, V4L2Buffer *out, - - v4l2_set_pts(out, pkt->pts); - -- if (pkt->flags & AV_PKT_FLAG_KEY) -- out->flags = V4L2_BUF_FLAG_KEYFRAME; -+ out->buf.flags = (pkt->flags & AV_PKT_FLAG_KEY) != 0 ? -+ (out->buf.flags | V4L2_BUF_FLAG_KEYFRAME) : -+ (out->buf.flags & ~V4L2_BUF_FLAG_KEYFRAME); - - return ret; - } -@@ -924,8 +931,6 @@ int ff_v4l2_buffer_enqueue(V4L2Buffer* avbuf) - int ret; - int qc; - -- avbuf->buf.flags = avbuf->flags; -- - if (avbuf->buf.timestamp.tv_sec || avbuf->buf.timestamp.tv_usec) { - av_log(logger(avbuf), AV_LOG_DEBUG, "--- %s pre VIDIOC_QBUF: index %d, ts=%ld.%06ld count=%d\n", - avbuf->context->name, avbuf->buf.index, -diff --git a/libavcodec/v4l2_buffers.h b/libavcodec/v4l2_buffers.h -index 641e0e147b..3b7ca4d99e 100644 ---- a/libavcodec/v4l2_buffers.h -+++ b/libavcodec/v4l2_buffers.h -@@ -73,7 +73,6 @@ typedef struct V4L2Buffer { - struct v4l2_buffer buf; - struct v4l2_plane planes[VIDEO_MAX_PLANES]; - -- int flags; - enum V4L2Buffer_status status; - - } V4L2Buffer; -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index c11b5e6863..53b522d43e 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -527,6 +527,22 @@ get_qbuf(V4L2Context * const ctx, V4L2Buffer ** const ppavbuf, const int timeout - } - } - -+// Clear out flags and timestamps that should should be set by the user -+// Returns the passed avbuf -+static V4L2Buffer * -+clean_v4l2_buffer(V4L2Buffer * const avbuf) -+{ -+ struct v4l2_buffer *const buf = &avbuf->buf; -+ -+ buf->flags = 0; -+ buf->field = V4L2_FIELD_ANY; -+ buf->timestamp = (struct timeval){0}; -+ buf->timecode = (struct v4l2_timecode){0}; -+ buf->sequence = 0; -+ -+ return avbuf; -+} -+ - static V4L2Buffer* v4l2_getfree_v4l2buf(V4L2Context *ctx) - { - int i; -@@ -542,7 +558,7 @@ static V4L2Buffer* v4l2_getfree_v4l2buf(V4L2Context *ctx) - for (i = 0; i < ctx->num_buffers; i++) { - V4L2Buffer * const avbuf = (V4L2Buffer *)ctx->bufrefs[i]->data; - if (avbuf->status == V4L2BUF_AVAILABLE) -- return avbuf; -+ return clean_v4l2_buffer(avbuf); - } - - return NULL; - -From 5dc38f5d088beea4da57e82969643cc831c40cf0 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 22 Mar 2022 11:44:30 +0000 -Subject: [PATCH 042/151] v4l2m2m: Rework decode to wait for missing buffer, - add dynamic pending - -Previously receive_frame exited with EAGAIN if no capture buffer -availble in the Q. Now it waits in the hope that another thread will -post one. - -The prefer dQ logic is now dynamic to help with cases where PTS/DTS -lies. If it looks like we are never getting a frame then the -threshold is increased. It then slowly decays over time to cope with -false alarms. ---- - libavcodec/v4l2_buffers.c | 6 +++-- - libavcodec/v4l2_context.c | 7 +++-- - libavcodec/v4l2_context.h | 3 +++ - libavcodec/v4l2_m2m.h | 2 ++ - libavcodec/v4l2_m2m_dec.c | 57 +++++++++++++++++++++++++++++++++++++-- - 5 files changed, 69 insertions(+), 6 deletions(-) - -diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c -index 62d1c26053..8c4f18dbed 100644 ---- a/libavcodec/v4l2_buffers.c -+++ b/libavcodec/v4l2_buffers.c -@@ -947,12 +947,14 @@ int ff_v4l2_buffer_enqueue(V4L2Buffer* avbuf) - return AVERROR(err); - } - -+ // Lock not wanted - if called from buffer free then lock already obtained - qc = atomic_fetch_add(&avbuf->context->q_count, 1) + 1; -+ avbuf->status = V4L2BUF_IN_DRIVER; -+ pthread_cond_broadcast(&avbuf->context->cond); -+ - av_log(logger(avbuf), AV_LOG_DEBUG, "--- %s VIDIOC_QBUF: index %d, ts=%ld.%06ld count=%d\n", - avbuf->context->name, avbuf->buf.index, - avbuf->buf.timestamp.tv_sec, avbuf->buf.timestamp.tv_usec, qc); - -- avbuf->status = V4L2BUF_IN_DRIVER; -- - return 0; - } -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index 53b522d43e..7ddb759810 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -300,6 +300,7 @@ static int v4l2_stop_encode(V4L2Context *ctx) - // Returns: - // 0 Success - // AVERROR(EPIPE) Nothing more to read -+// AVERROR(ENOSPC) No buffers in Q to put result in - // * AVERROR(..) - - static int -@@ -457,7 +458,7 @@ get_qbuf(V4L2Context * const ctx, V4L2Buffer ** const ppavbuf, const int timeout - (pfd.events == poll_cap && atomic_load(&m->capture.q_count) == 0) || - (pfd.events == (poll_cap | poll_out) && atomic_load(&m->capture.q_count) == 0 && atomic_load(&m->output.q_count) == 0)) { - av_log(avctx, AV_LOG_TRACE, "V4L2 poll %s empty\n", ctx->name); -- return AVERROR(EAGAIN); -+ return AVERROR(ENOSPC); - } - - // Timeout kludged s.t. "forever" eventually gives up & produces logging -@@ -864,7 +865,7 @@ int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt) - int rv; - - if ((rv = get_qbuf(ctx, &avbuf, -1)) != 0) -- return rv; -+ return rv == AVERROR(ENOSPC) ? AVERROR(EAGAIN) : rv; // Caller not currently expecting ENOSPC - - return ff_v4l2_buffer_buf_to_avpkt(pkt, avbuf); - } -@@ -938,6 +939,7 @@ void ff_v4l2_context_release(V4L2Context* ctx) - av_buffer_unref(&ctx->frames_ref); - - ff_mutex_destroy(&ctx->lock); -+ pthread_cond_destroy(&ctx->cond); - } - - -@@ -1013,6 +1015,7 @@ int ff_v4l2_context_init(V4L2Context* ctx) - } - - ff_mutex_init(&ctx->lock, NULL); -+ pthread_cond_init(&ctx->cond, NULL); - atomic_init(&ctx->q_count, 0); - - if (s->output_drm) { -diff --git a/libavcodec/v4l2_context.h b/libavcodec/v4l2_context.h -index 565858a1ed..0efff58f18 100644 ---- a/libavcodec/v4l2_context.h -+++ b/libavcodec/v4l2_context.h -@@ -116,6 +116,7 @@ typedef struct V4L2Context { - struct ff_weak_link_master *wl_master; - - AVMutex lock; -+ pthread_cond_t cond; - } V4L2Context; - - /** -@@ -182,6 +183,8 @@ int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt); - * @param[in] timeout The timeout for dequeue (-1 to block, 0 to return immediately, or milliseconds) - * - * @return 0 in case of success, AVERROR(EAGAIN) if no buffer was ready, another negative error in case of error. -+ * AVERROR(ENOSPC) if no buffer availible to put -+ * the frame in - */ - int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* f, int timeout); - -diff --git a/libavcodec/v4l2_m2m.h b/libavcodec/v4l2_m2m.h -index f1923bb26d..9a20447030 100644 ---- a/libavcodec/v4l2_m2m.h -+++ b/libavcodec/v4l2_m2m.h -@@ -105,6 +105,8 @@ typedef struct V4L2m2mContext { - - /* Frame tracking */ - xlat_track_t xlat; -+ int pending_hw; -+ int pending_n; - - pts_stats_t pts_stat; - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index e2b10f5e3a..2e30449dfc 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -251,7 +251,8 @@ xlat_pts_out(AVCodecContext *const avctx, - - frame->best_effort_timestamp = pts_stats_guess(ps); - frame->pkt_dts = frame->pts; // We can't emulate what s/w does in a useful manner? -- av_log(avctx, AV_LOG_TRACE, "Out PTS=%" PRId64 "/%"PRId64", DTS=%" PRId64 "\n", frame->pts, frame->best_effort_timestamp, frame->pkt_dts); -+ av_log(avctx, AV_LOG_TRACE, "Out PTS=%" PRId64 "/%"PRId64", DTS=%" PRId64 ", track=%"PRId64", n=%d\n", -+ frame->pts, frame->best_effort_timestamp, frame->pkt_dts, t->track_pts, n); - return 0; - } - -@@ -422,6 +423,36 @@ static int try_enqueue_src(AVCodecContext * const avctx, V4L2m2mContext * const - return ret; - } - -+static int qbuf_wait(AVCodecContext * const avctx, V4L2Context * const ctx) -+{ -+ int rv = 0; -+ -+ ff_mutex_lock(&ctx->lock); -+ -+ while (atomic_load(&ctx->q_count) == 0 && ctx->streamon) { -+ if (pthread_cond_wait(&ctx->cond, &ctx->lock) != 0) { -+ rv = AVERROR(errno); -+ av_log(avctx, AV_LOG_ERROR, "Cond wait failure: %s\n", av_err2str(rv)); -+ break; -+ } -+ } -+ -+ ff_mutex_unlock(&ctx->lock); -+ return rv; -+} -+ -+// Number of frames over what xlat_pending returns that we keep *16 -+// This is a min value - if it appears to be too small the threshold should -+// adjust dynamically. -+#define PENDING_HW_MIN (3 * 16) -+// Offset to use when setting dynamically -+// Set to %16 == 15 to avoid the threshold changing immediately as we relax -+#define PENDING_HW_OFFSET (PENDING_HW_MIN - 1) -+// Number of consecutive times we've failed to get a frame when we prefer it -+// before we increase the prefer threshold (5ms * N = max expected decode -+// time) -+#define PENDING_N_THRESHOLD 6 -+ - static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - { - V4L2m2mContext *const s = ((V4L2m2mPriv*)avctx->priv_data)->context; -@@ -431,7 +462,7 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - - do { - const int pending = xlat_pending(&s->xlat); -- const int prefer_dq = (pending > 5); -+ const int prefer_dq = (pending > s->pending_hw / 16); - - // Enqueue another pkt for decode if - // (a) We don't have a lot of stuff in the buffer already OR -@@ -465,6 +496,27 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - // there is room in the input Q and timeout == -1 - dst_rv = ff_v4l2_context_dequeue_frame(&s->capture, frame, t); - -+ // Failure due to no buffer in Q? -+ if (dst_rv == AVERROR(ENOSPC)) { -+ // Wait & retry -+ if ((dst_rv = qbuf_wait(avctx, &s->capture)) == 0) { -+ dst_rv = ff_v4l2_context_dequeue_frame(&s->capture, frame, t); -+ } -+ } -+ -+ // Adjust dynamic pending threshold -+ if (dst_rv == 0) { -+ if (--s->pending_hw < PENDING_HW_MIN) -+ s->pending_hw = PENDING_HW_MIN; -+ s->pending_n = 0; -+ } -+ else if (dst_rv == AVERROR(EAGAIN)) { -+ if (prefer_dq && ++s->pending_n > PENDING_N_THRESHOLD) { -+ s->pending_hw = pending * 16 + PENDING_HW_OFFSET; -+ s->pending_n = 0; -+ } -+ } -+ - if (dst_rv == AVERROR(EAGAIN) && src_rv == NQ_DRAINING) { - av_log(avctx, AV_LOG_WARNING, "Timeout in drain - assume EOF"); - dst_rv = AVERROR_EOF; -@@ -613,6 +665,7 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - - xlat_init(&s->xlat); - pts_stats_init(&s->pts_stat, avctx, "decoder"); -+ s->pending_hw = PENDING_HW_MIN; - - capture = &s->capture; - output = &s->output; - -From 33765b769b4301e03f31b65e225fcdb0eff4c0e4 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Fri, 25 Mar 2022 15:37:58 +0000 -Subject: [PATCH 043/151] v4l2_m2m2_dec: Avoid loop if unable to resize buffers - -If source change signals a buffer size that cannot be honored give up -rather than looping indefinitely. This happens on Pi if (say) a -2560x1440 h264 stream is presented to the decode. ---- - libavcodec/v4l2_context.c | 13 +++++++++++-- - 1 file changed, 11 insertions(+), 2 deletions(-) - -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index 7ddb759810..007a58c8f1 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -205,8 +205,9 @@ static int do_source_change(V4L2m2mContext * const s) - - s->capture.sample_aspect_ratio = v4l2_get_sar(&s->capture); - -- av_log(avctx, AV_LOG_DEBUG, "Source change: SAR: %d/%d, crop %dx%d @ %d,%d, reinit=%d\n", -+ av_log(avctx, AV_LOG_DEBUG, "Source change: SAR: %d/%d, wxh %dx%d crop %dx%d @ %d,%d, reinit=%d\n", - s->capture.sample_aspect_ratio.num, s->capture.sample_aspect_ratio.den, -+ s->capture.width, s->capture.height, - s->capture.selection.width, s->capture.selection.height, - s->capture.selection.left, s->capture.selection.top, reinit); - -@@ -224,9 +225,17 @@ static int do_source_change(V4L2m2mContext * const s) - return AVERROR(EINVAL); - } - -+ if (s->capture.width > ff_v4l2_get_format_width(&s->capture.format) || -+ s->capture.height > ff_v4l2_get_format_height(&s->capture.format)) { -+ av_log(avctx, AV_LOG_ERROR, "Format post reinit too small: wanted %dx%d > got %dx%d\n", -+ s->capture.width, s->capture.height, -+ ff_v4l2_get_format_width(&s->capture.format), ff_v4l2_get_format_height(&s->capture.format)); -+ return AVERROR(EINVAL); -+ } -+ - // Update pixel format - should only actually do something on initial change - s->capture.av_pix_fmt = -- ff_v4l2_format_v4l2_to_avfmt(ff_v4l2_get_format_pixelformat(&s->capture.format), AV_CODEC_ID_RAWVIDEO); -+ ff_v4l2_format_v4l2_to_avfmt(ff_v4l2_get_format_pixelformat(&s->capture.format), AV_CODEC_ID_RAWVIDEO); - if (s->output_drm) { - avctx->pix_fmt = AV_PIX_FMT_DRM_PRIME; - avctx->sw_pix_fmt = s->capture.av_pix_fmt; - -From bb7ad2392ce83149a1ba40ecacb36e051b6bf785 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Fri, 25 Mar 2022 18:14:40 +0000 -Subject: [PATCH 044/151] v4l2dec: Improve size/format validation on init - ---- - libavcodec/v4l2_m2m_dec.c | 84 ++++++++++++++++++++++++++++++++-- - libavcodec/v4l2_request_hevc.c | 11 +++++ - 2 files changed, 92 insertions(+), 3 deletions(-) - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 2e30449dfc..8dcadf461b 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -592,6 +592,76 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - } - #endif - -+static int -+check_size(AVCodecContext * const avctx, V4L2m2mContext * const s) -+{ -+ unsigned int i; -+ const uint32_t fcc = ff_v4l2_get_format_pixelformat(&s->capture.format); -+ const uint32_t w = avctx->coded_width; -+ const uint32_t h = avctx->coded_height; -+ -+ if (w == 0 || h == 0 || fcc == 0) { -+ av_log(avctx, AV_LOG_TRACE, "%s: Size %dx%d or fcc %s empty\n", __func__, w, h, av_fourcc2str(fcc)); -+ return 0; -+ } -+ -+ for (i = 0;; ++i) { -+ struct v4l2_frmsizeenum fs = { -+ .index = i, -+ .pixel_format = fcc, -+ }; -+ -+ while (ioctl(s->fd, VIDIOC_ENUM_FRAMESIZES, &fs) != 0) { -+ const int err = AVERROR(errno); -+ if (err == AVERROR(EINTR)) -+ continue; -+ if (i == 0 && err == AVERROR(ENOTTY)) { -+ av_log(avctx, AV_LOG_DEBUG, "Framesize enum not supported\n"); -+ return 0; -+ } -+ if (err != AVERROR(EINVAL)) { -+ av_log(avctx, AV_LOG_ERROR, "Failed to enum framesizes: %s", av_err2str(err)); -+ return err; -+ } -+ av_log(avctx, AV_LOG_WARNING, "Failed to find Size=%dx%d, fmt=%s in frame size enums\n", -+ w, h, av_fourcc2str(fcc)); -+ return err; -+ } -+ -+ switch (fs.type) { -+ case V4L2_FRMSIZE_TYPE_DISCRETE: -+ av_log(avctx, AV_LOG_TRACE, "%s[%d]: Discrete: %dx%d\n", __func__, i, -+ fs.discrete.width,fs.discrete.height); -+ if (w == fs.discrete.width && h == fs.discrete.height) -+ return 0; -+ break; -+ case V4L2_FRMSIZE_TYPE_STEPWISE: -+ av_log(avctx, AV_LOG_TRACE, "%s[%d]: Stepwise: Min: %dx%d Max: %dx%d, Step: %dx%d\n", __func__, i, -+ fs.stepwise.min_width, fs.stepwise.min_height, -+ fs.stepwise.max_width, fs.stepwise.max_height, -+ fs.stepwise.step_width,fs.stepwise.step_height); -+ if (w >= fs.stepwise.min_width && w <= fs.stepwise.max_width && -+ h >= fs.stepwise.min_height && h <= fs.stepwise.max_height && -+ (w - fs.stepwise.min_width) % fs.stepwise.step_width == 0 && -+ (h - fs.stepwise.min_height) % fs.stepwise.step_height == 0) -+ return 0; -+ break; -+ case V4L2_FRMSIZE_TYPE_CONTINUOUS: -+ av_log(avctx, AV_LOG_TRACE, "%s[%d]: Continuous: Min: %dx%d Max: %dx%d, Step: %dx%d\n", __func__, i, -+ fs.stepwise.min_width, fs.stepwise.min_height, -+ fs.stepwise.max_width, fs.stepwise.max_height, -+ fs.stepwise.step_width,fs.stepwise.step_height); -+ if (w >= fs.stepwise.min_width && w <= fs.stepwise.max_width && -+ h >= fs.stepwise.min_height && h <= fs.stepwise.max_height) -+ return 0; -+ break; -+ default: -+ av_log(avctx, AV_LOG_ERROR, "Unexpected framesize enum: %d", fs.type); -+ return AVERROR(EINVAL); -+ } -+ } -+} -+ - static int - get_quirks(AVCodecContext * const avctx, V4L2m2mContext * const s) - { -@@ -698,8 +768,10 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - - avctx->sw_pix_fmt = avctx->pix_fmt; - gf_pix_fmt = ff_get_format(avctx, avctx->codec->pix_fmts); -- av_log(avctx, AV_LOG_DEBUG, "avctx requested=%d (%s); get_format requested=%d (%s)\n", -- avctx->pix_fmt, av_get_pix_fmt_name(avctx->pix_fmt), gf_pix_fmt, av_get_pix_fmt_name(gf_pix_fmt)); -+ av_log(avctx, AV_LOG_DEBUG, "avctx requested=%d (%s) %dx%d; get_format requested=%d (%s)\n", -+ avctx->pix_fmt, av_get_pix_fmt_name(avctx->pix_fmt), -+ avctx->coded_width, avctx->coded_height, -+ gf_pix_fmt, av_get_pix_fmt_name(gf_pix_fmt)); - - if (gf_pix_fmt == AV_PIX_FMT_DRM_PRIME || avctx->pix_fmt == AV_PIX_FMT_DRM_PRIME) { - avctx->pix_fmt = AV_PIX_FMT_DRM_PRIME; -@@ -730,7 +802,13 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - if ((ret = v4l2_prepare_decoder(s)) < 0) - return ret; - -- return get_quirks(avctx, s); -+ if ((ret = get_quirks(avctx, s)) != 0) -+ return ret; -+ -+ if ((ret = check_size(avctx, s)) != 0) -+ return ret; -+ -+ return 0; - } - - static av_cold int v4l2_decode_close(AVCodecContext *avctx) -diff --git a/libavcodec/v4l2_request_hevc.c b/libavcodec/v4l2_request_hevc.c -index b0a5930844..76ab0916cd 100644 ---- a/libavcodec/v4l2_request_hevc.c -+++ b/libavcodec/v4l2_request_hevc.c -@@ -147,6 +147,17 @@ static int v4l2_request_hevc_init(AVCodecContext *avctx) - - av_log(avctx, AV_LOG_DEBUG, "<<< %s\n", __func__); - -+ // Give up immediately if this is something that we have no code to deal with -+ if (h->ps.sps->chroma_format_idc != 1) { -+ av_log(avctx, AV_LOG_WARNING, "chroma_format_idc(%d) != 1: Not implemented\n", h->ps.sps->chroma_format_idc); -+ return AVERROR_PATCHWELCOME; -+ } -+ if (!(h->ps.sps->bit_depth == 10 || h->ps.sps->bit_depth == 8) || -+ h->ps.sps->bit_depth != h->ps.sps->bit_depth_chroma) { -+ av_log(avctx, AV_LOG_WARNING, "Bit depth Y:%d C:%d: Not implemented\n", h->ps.sps->bit_depth, h->ps.sps->bit_depth_chroma); -+ return AVERROR_PATCHWELCOME; -+ } -+ - if ((ret = devscan_build(avctx, &ctx->devscan)) != 0) { - av_log(avctx, AV_LOG_WARNING, "Failed to find any V4L2 devices\n"); - return (AVERROR(-ret)); - -From 4646b558c0e45f506578a5a452820f55983abc82 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 13 Apr 2022 16:05:56 +0000 -Subject: [PATCH 045/151] v4l2 stateless hevc: Add another API variation for - linux 5.18 - -This is probably going to be a short lived variation and may end up -being reverted if no release using it ever ends up in the wild. ---- - libavcodec/Makefile | 2 +- - libavcodec/hevc-ctrls-v3.h | 255 +++++++++++++++++++++++++++++++++ - libavcodec/v4l2_req_hevc_v3.c | 3 + - libavcodec/v4l2_req_hevc_vx.c | 17 +++ - libavcodec/v4l2_req_media.c | 15 +- - libavcodec/v4l2_req_media.h | 3 + - libavcodec/v4l2_request_hevc.c | 6 +- - libavcodec/v4l2_request_hevc.h | 1 + - 8 files changed, 295 insertions(+), 7 deletions(-) - create mode 100644 libavcodec/hevc-ctrls-v3.h - create mode 100644 libavcodec/v4l2_req_hevc_v3.c - -diff --git a/libavcodec/Makefile b/libavcodec/Makefile -index e1aa0ba014..2b3c16185d 100644 ---- a/libavcodec/Makefile -+++ b/libavcodec/Makefile -@@ -1000,7 +1000,7 @@ OBJS-$(CONFIG_HEVC_DXVA2_HWACCEL) += dxva2_hevc.o - OBJS-$(CONFIG_HEVC_NVDEC_HWACCEL) += nvdec_hevc.o - OBJS-$(CONFIG_HEVC_QSV_HWACCEL) += qsvdec.o - OBJS-$(CONFIG_HEVC_V4L2REQUEST_HWACCEL) += v4l2_request_hevc.o v4l2_req_decode_q.o\ -- v4l2_req_hevc_v1.o v4l2_req_hevc_v2.o -+ v4l2_req_hevc_v1.o v4l2_req_hevc_v2.o v4l2_req_hevc_v3.o - OBJS-$(CONFIG_HEVC_VAAPI_HWACCEL) += vaapi_hevc.o h265_profile_level.o - OBJS-$(CONFIG_HEVC_VDPAU_HWACCEL) += vdpau_hevc.o h265_profile_level.o - OBJS-$(CONFIG_MJPEG_NVDEC_HWACCEL) += nvdec_mjpeg.o -diff --git a/libavcodec/hevc-ctrls-v3.h b/libavcodec/hevc-ctrls-v3.h -new file mode 100644 -index 0000000000..4e35bd583d ---- /dev/null -+++ b/libavcodec/hevc-ctrls-v3.h -@@ -0,0 +1,255 @@ -+/* SPDX-License-Identifier: GPL-2.0 */ -+/* -+ * These are the HEVC state controls for use with stateless HEVC -+ * codec drivers. -+ * -+ * It turns out that these structs are not stable yet and will undergo -+ * more changes. So keep them private until they are stable and ready to -+ * become part of the official public API. -+ */ -+ -+#ifndef _HEVC_CTRLS_H_ -+#define _HEVC_CTRLS_H_ -+ -+#include -+ -+/* The pixel format isn't stable at the moment and will likely be renamed. */ -+#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC parsed slices */ -+ -+#define V4L2_CID_MPEG_VIDEO_HEVC_SPS (V4L2_CID_CODEC_BASE + 1008) -+#define V4L2_CID_MPEG_VIDEO_HEVC_PPS (V4L2_CID_CODEC_BASE + 1009) -+#define V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS (V4L2_CID_CODEC_BASE + 1010) -+#define V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX (V4L2_CID_CODEC_BASE + 1011) -+#define V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS (V4L2_CID_CODEC_BASE + 1012) -+#define V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE (V4L2_CID_CODEC_BASE + 1015) -+#define V4L2_CID_MPEG_VIDEO_HEVC_START_CODE (V4L2_CID_CODEC_BASE + 1016) -+ -+/* enum v4l2_ctrl_type type values */ -+#define V4L2_CTRL_TYPE_HEVC_SPS 0x0120 -+#define V4L2_CTRL_TYPE_HEVC_PPS 0x0121 -+#define V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS 0x0122 -+#define V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX 0x0123 -+#define V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS 0x0124 -+ -+enum v4l2_mpeg_video_hevc_decode_mode { -+ V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_SLICE_BASED, -+ V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_FRAME_BASED, -+}; -+ -+enum v4l2_mpeg_video_hevc_start_code { -+ V4L2_MPEG_VIDEO_HEVC_START_CODE_NONE, -+ V4L2_MPEG_VIDEO_HEVC_START_CODE_ANNEX_B, -+}; -+ -+#define V4L2_HEVC_SLICE_TYPE_B 0 -+#define V4L2_HEVC_SLICE_TYPE_P 1 -+#define V4L2_HEVC_SLICE_TYPE_I 2 -+ -+#define V4L2_HEVC_SPS_FLAG_SEPARATE_COLOUR_PLANE (1ULL << 0) -+#define V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED (1ULL << 1) -+#define V4L2_HEVC_SPS_FLAG_AMP_ENABLED (1ULL << 2) -+#define V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET (1ULL << 3) -+#define V4L2_HEVC_SPS_FLAG_PCM_ENABLED (1ULL << 4) -+#define V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED (1ULL << 5) -+#define V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT (1ULL << 6) -+#define V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED (1ULL << 7) -+#define V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED (1ULL << 8) -+ -+/* The controls are not stable at the moment and will likely be reworked. */ -+struct v4l2_ctrl_hevc_sps { -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: Sequence parameter set */ -+ __u16 pic_width_in_luma_samples; -+ __u16 pic_height_in_luma_samples; -+ __u8 bit_depth_luma_minus8; -+ __u8 bit_depth_chroma_minus8; -+ __u8 log2_max_pic_order_cnt_lsb_minus4; -+ __u8 sps_max_dec_pic_buffering_minus1; -+ __u8 sps_max_num_reorder_pics; -+ __u8 sps_max_latency_increase_plus1; -+ __u8 log2_min_luma_coding_block_size_minus3; -+ __u8 log2_diff_max_min_luma_coding_block_size; -+ __u8 log2_min_luma_transform_block_size_minus2; -+ __u8 log2_diff_max_min_luma_transform_block_size; -+ __u8 max_transform_hierarchy_depth_inter; -+ __u8 max_transform_hierarchy_depth_intra; -+ __u8 pcm_sample_bit_depth_luma_minus1; -+ __u8 pcm_sample_bit_depth_chroma_minus1; -+ __u8 log2_min_pcm_luma_coding_block_size_minus3; -+ __u8 log2_diff_max_min_pcm_luma_coding_block_size; -+ __u8 num_short_term_ref_pic_sets; -+ __u8 num_long_term_ref_pics_sps; -+ __u8 chroma_format_idc; -+ __u8 sps_max_sub_layers_minus1; -+ -+ __u64 flags; -+}; -+ -+#define V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT_ENABLED (1ULL << 0) -+#define V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT (1ULL << 1) -+#define V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED (1ULL << 2) -+#define V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT (1ULL << 3) -+#define V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED (1ULL << 4) -+#define V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED (1ULL << 5) -+#define V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED (1ULL << 6) -+#define V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT (1ULL << 7) -+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED (1ULL << 8) -+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED (1ULL << 9) -+#define V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED (1ULL << 10) -+#define V4L2_HEVC_PPS_FLAG_TILES_ENABLED (1ULL << 11) -+#define V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED (1ULL << 12) -+#define V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED (1ULL << 13) -+#define V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 14) -+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED (1ULL << 15) -+#define V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER (1ULL << 16) -+#define V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT (1ULL << 17) -+#define V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT (1ULL << 18) -+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT (1ULL << 19) -+#define V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING (1ULL << 20) -+ -+struct v4l2_ctrl_hevc_pps { -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: Picture parameter set */ -+ __u8 num_extra_slice_header_bits; -+ __u8 num_ref_idx_l0_default_active_minus1; -+ __u8 num_ref_idx_l1_default_active_minus1; -+ __s8 init_qp_minus26; -+ __u8 diff_cu_qp_delta_depth; -+ __s8 pps_cb_qp_offset; -+ __s8 pps_cr_qp_offset; -+ __u8 num_tile_columns_minus1; -+ __u8 num_tile_rows_minus1; -+ __u8 column_width_minus1[20]; -+ __u8 row_height_minus1[22]; -+ __s8 pps_beta_offset_div2; -+ __s8 pps_tc_offset_div2; -+ __u8 log2_parallel_merge_level_minus2; -+ -+ __u8 padding[4]; -+ __u64 flags; -+}; -+ -+#define V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE 0x01 -+ -+#define V4L2_HEVC_DPB_ENTRIES_NUM_MAX 16 -+ -+struct v4l2_hevc_dpb_entry { -+ __u64 timestamp; -+ __u8 flags; -+ __u8 field_pic; -+ __u16 pic_order_cnt[2]; -+ __u8 padding[2]; -+}; -+ -+struct v4l2_hevc_pred_weight_table { -+ __s8 delta_luma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __s8 luma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __s8 delta_chroma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]; -+ __s8 chroma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]; -+ -+ __s8 delta_luma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __s8 luma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __s8 delta_chroma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]; -+ __s8 chroma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]; -+ -+ __u8 padding[6]; -+ -+ __u8 luma_log2_weight_denom; -+ __s8 delta_chroma_log2_weight_denom; -+}; -+ -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_LUMA (1ULL << 0) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_CHROMA (1ULL << 1) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_TEMPORAL_MVP_ENABLED (1ULL << 2) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_MVD_L1_ZERO (1ULL << 3) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_CABAC_INIT (1ULL << 4) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_COLLOCATED_FROM_L0 (1ULL << 5) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_USE_INTEGER_MV (1ULL << 6) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_DEBLOCKING_FILTER_DISABLED (1ULL << 7) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 8) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT (1ULL << 9) -+ -+struct v4l2_ctrl_hevc_slice_params { -+ __u32 bit_size; -+ __u32 data_bit_offset; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */ -+ __u32 slice_segment_addr; -+ __u32 num_entry_point_offsets; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: NAL unit header */ -+ __u8 nal_unit_type; -+ __u8 nuh_temporal_id_plus1; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */ -+ __u8 slice_type; -+ __u8 colour_plane_id; -+ __u16 slice_pic_order_cnt; -+ __u8 num_ref_idx_l0_active_minus1; -+ __u8 num_ref_idx_l1_active_minus1; -+ __u8 collocated_ref_idx; -+ __u8 five_minus_max_num_merge_cand; -+ __s8 slice_qp_delta; -+ __s8 slice_cb_qp_offset; -+ __s8 slice_cr_qp_offset; -+ __s8 slice_act_y_qp_offset; -+ __s8 slice_act_cb_qp_offset; -+ __s8 slice_act_cr_qp_offset; -+ __s8 slice_beta_offset_div2; -+ __s8 slice_tc_offset_div2; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: Picture timing SEI message */ -+ __u8 pic_struct; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */ -+ __u8 ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __u8 ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ -+ __u8 padding[5]; -+ -+ __u32 entry_point_offset_minus1[256]; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: Weighted prediction parameter */ -+ struct v4l2_hevc_pred_weight_table pred_weight_table; -+ -+ __u64 flags; -+}; -+ -+#define V4L2_HEVC_DECODE_PARAM_FLAG_IRAP_PIC 0x1 -+#define V4L2_HEVC_DECODE_PARAM_FLAG_IDR_PIC 0x2 -+#define V4L2_HEVC_DECODE_PARAM_FLAG_NO_OUTPUT_OF_PRIOR 0x4 -+ -+struct v4l2_ctrl_hevc_decode_params { -+ __s32 pic_order_cnt_val; -+ __u8 num_active_dpb_entries; -+ struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __u8 num_poc_st_curr_before; -+ __u8 num_poc_st_curr_after; -+ __u8 num_poc_lt_curr; -+ __u8 poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __u8 poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __u8 poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __u64 flags; -+}; -+ -+struct v4l2_ctrl_hevc_scaling_matrix { -+ __u8 scaling_list_4x4[6][16]; -+ __u8 scaling_list_8x8[6][64]; -+ __u8 scaling_list_16x16[6][64]; -+ __u8 scaling_list_32x32[2][64]; -+ __u8 scaling_list_dc_coef_16x16[6]; -+ __u8 scaling_list_dc_coef_32x32[2]; -+}; -+ -+/* MPEG-class control IDs specific to the Hantro driver as defined by V4L2 */ -+#define V4L2_CID_CODEC_HANTRO_BASE (V4L2_CTRL_CLASS_CODEC | 0x1200) -+/* -+ * V4L2_CID_HANTRO_HEVC_SLICE_HEADER_SKIP - -+ * the number of data (in bits) to skip in the -+ * slice segment header. -+ * If non-IDR, the bits to be skipped go from syntax element "pic_output_flag" -+ * to before syntax element "slice_temporal_mvp_enabled_flag". -+ * If IDR, the skipped bits are just "pic_output_flag" -+ * (separate_colour_plane_flag is not supported). -+ */ -+#define V4L2_CID_HANTRO_HEVC_SLICE_HEADER_SKIP (V4L2_CID_CODEC_HANTRO_BASE + 0) -+ -+#endif -diff --git a/libavcodec/v4l2_req_hevc_v3.c b/libavcodec/v4l2_req_hevc_v3.c -new file mode 100644 -index 0000000000..dcc8d95632 ---- /dev/null -+++ b/libavcodec/v4l2_req_hevc_v3.c -@@ -0,0 +1,3 @@ -+#define HEVC_CTRLS_VERSION 3 -+#include "v4l2_req_hevc_vx.c" -+ -diff --git a/libavcodec/v4l2_req_hevc_vx.c b/libavcodec/v4l2_req_hevc_vx.c -index 0ae03b10c4..611fa21cc3 100644 ---- a/libavcodec/v4l2_req_hevc_vx.c -+++ b/libavcodec/v4l2_req_hevc_vx.c -@@ -16,6 +16,8 @@ - - #elif HEVC_CTRLS_VERSION == 2 - #include "hevc-ctrls-v2.h" -+#elif HEVC_CTRLS_VERSION == 3 -+#include "hevc-ctrls-v3.h" - #else - #error Unknown HEVC_CTRLS_VERSION - #endif -@@ -147,6 +149,7 @@ static void fill_pred_table(const HEVCContext *h, struct v4l2_hevc_pred_weight_t - } - } - -+#if HEVC_CTRLS_VERSION <= 2 - static int find_frame_rps_type(const HEVCContext *h, uint64_t timestamp) - { - const HEVCFrame *frame; -@@ -172,6 +175,7 @@ static int find_frame_rps_type(const HEVCContext *h, uint64_t timestamp) - - return 0; - } -+#endif - - static unsigned int - get_ref_pic_index(const HEVCContext *h, const HEVCFrame *frame, -@@ -247,7 +251,12 @@ fill_dpb_entries(const HEVCContext * const h, struct v4l2_hevc_dpb_entry * const - struct v4l2_hevc_dpb_entry * const entry = entries + n++; - - entry->timestamp = frame_capture_dpb(frame->frame); -+#if HEVC_CTRLS_VERSION <= 2 - entry->rps = find_frame_rps_type(h, entry->timestamp); -+#else -+ entry->flags = (frame->flags & HEVC_FRAME_FLAG_LONG_REF) == 0 ? 0 : -+ V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE; -+#endif - entry->field_pic = frame->frame->interlaced_frame; - - /* TODO: Interleaved: Get the POC for each field. */ -@@ -1011,6 +1020,14 @@ probe(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) - }; - const unsigned int noof_ctrls = FF_ARRAY_ELEMS(qc); - -+#if HEVC_CTRLS_VERSION == 2 -+ if (mediabufs_ctl_driver_version(ctx->mbufs) >= MEDIABUFS_DRIVER_VERSION(5, 18, 0)) -+ return AVERROR(EINVAL); -+#elif HEVC_CTRLS_VERSION == 3 -+ if (mediabufs_ctl_driver_version(ctx->mbufs) < MEDIABUFS_DRIVER_VERSION(5, 18, 0)) -+ return AVERROR(EINVAL); -+#endif -+ - if (mediabufs_ctl_query_ext_ctrls(ctx->mbufs, qc, noof_ctrls)) { - av_log(avctx, AV_LOG_DEBUG, "Probed V%d control missing\n", HEVC_CTRLS_VERSION); - return AVERROR(EINVAL); -diff --git a/libavcodec/v4l2_req_media.c b/libavcodec/v4l2_req_media.c -index eb00ecb406..980b306b8a 100644 ---- a/libavcodec/v4l2_req_media.c -+++ b/libavcodec/v4l2_req_media.c -@@ -604,6 +604,7 @@ struct mediabufs_ctl { - - struct v4l2_format src_fmt; - struct v4l2_format dst_fmt; -+ struct v4l2_capability capability; - }; - - static int qe_v4l2_queue(struct qent_base *const be, -@@ -1498,20 +1499,24 @@ void mediabufs_ctl_unref(struct mediabufs_ctl **const pmbc) - mediabufs_ctl_delete(mbc); - } - -+unsigned int mediabufs_ctl_driver_version(struct mediabufs_ctl *const mbc) -+{ -+ return mbc->capability.version; -+} -+ - static int set_capabilities(struct mediabufs_ctl *const mbc) - { -- struct v4l2_capability capability = { 0 }; - uint32_t caps; - -- if (ioctl(mbc->vfd, VIDIOC_QUERYCAP, &capability)) { -+ if (ioctl(mbc->vfd, VIDIOC_QUERYCAP, &mbc->capability)) { - int err = errno; - request_err(mbc->dc, "Failed to get capabilities: %s\n", strerror(err)); - return -err; - } - -- caps = (capability.capabilities & V4L2_CAP_DEVICE_CAPS) != 0 ? -- capability.device_caps : -- capability.capabilities; -+ caps = (mbc->capability.capabilities & V4L2_CAP_DEVICE_CAPS) != 0 ? -+ mbc->capability.device_caps : -+ mbc->capability.capabilities; - - if ((caps & V4L2_CAP_VIDEO_M2M_MPLANE) != 0) { - mbc->src_fmt.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE; -diff --git a/libavcodec/v4l2_req_media.h b/libavcodec/v4l2_req_media.h -index 2f826cfb14..0307a831de 100644 ---- a/libavcodec/v4l2_req_media.h -+++ b/libavcodec/v4l2_req_media.h -@@ -142,6 +142,9 @@ MediaBufsStatus mediabufs_src_pool_create(struct mediabufs_ctl *const rw, - struct dmabufs_ctl * const dbsc, - unsigned int n); - -+#define MEDIABUFS_DRIVER_VERSION(a, b, c) (((a) << 16) | ((b) << 8) | (c)) -+unsigned int mediabufs_ctl_driver_version(struct mediabufs_ctl *const mbc); -+ - struct mediabufs_ctl * mediabufs_ctl_new(void * const dc, - const char *vpath, struct pollqueue *const pq); - void mediabufs_ctl_unref(struct mediabufs_ctl **const pmbc); -diff --git a/libavcodec/v4l2_request_hevc.c b/libavcodec/v4l2_request_hevc.c -index 76ab0916cd..20e4e0ab15 100644 ---- a/libavcodec/v4l2_request_hevc.c -+++ b/libavcodec/v4l2_request_hevc.c -@@ -210,7 +210,11 @@ static int v4l2_request_hevc_init(AVCodecContext *avctx) - goto fail4; - } - -- if (V2(ff_v4l2_req_hevc, 2).probe(avctx, ctx) == 0) { -+ if (V2(ff_v4l2_req_hevc, 3).probe(avctx, ctx) == 0) { -+ av_log(avctx, AV_LOG_DEBUG, "HEVC API version 3 probed successfully\n"); -+ ctx->fns = &V2(ff_v4l2_req_hevc, 3); -+ } -+ else if (V2(ff_v4l2_req_hevc, 2).probe(avctx, ctx) == 0) { - av_log(avctx, AV_LOG_DEBUG, "HEVC API version 2 probed successfully\n"); - ctx->fns = &V2(ff_v4l2_req_hevc, 2); - } -diff --git a/libavcodec/v4l2_request_hevc.h b/libavcodec/v4l2_request_hevc.h -index f14f594564..ed48d62e2d 100644 ---- a/libavcodec/v4l2_request_hevc.h -+++ b/libavcodec/v4l2_request_hevc.h -@@ -98,5 +98,6 @@ typedef struct v4l2_req_decode_fns { - - extern const v4l2_req_decode_fns V2(ff_v4l2_req_hevc, 1); - extern const v4l2_req_decode_fns V2(ff_v4l2_req_hevc, 2); -+extern const v4l2_req_decode_fns V2(ff_v4l2_req_hevc, 3); - - #endif - -From 92160173e701aa7e2f1011e63596e48d15e691a9 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 3 May 2022 12:44:42 +0000 -Subject: [PATCH 046/151] Remove V4l2 frame size check for meson-vdec - ---- - libavcodec/v4l2_m2m.h | 3 ++- - libavcodec/v4l2_m2m_dec.c | 10 +++++++--- - 2 files changed, 9 insertions(+), 4 deletions(-) - -diff --git a/libavcodec/v4l2_m2m.h b/libavcodec/v4l2_m2m.h -index 9a20447030..6bd5e8eda7 100644 ---- a/libavcodec/v4l2_m2m.h -+++ b/libavcodec/v4l2_m2m.h -@@ -116,7 +116,8 @@ typedef struct V4L2m2mContext { - /* Ext data sent */ - int extdata_sent; - --#define FF_V4L2_QUIRK_REINIT_ALWAYS 1 -+#define FF_V4L2_QUIRK_REINIT_ALWAYS 1 -+#define FF_V4L2_QUIRK_ENUM_FRAMESIZES_BROKEN 2 - /* Quirks */ - unsigned int quirks; - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 8dcadf461b..888ba67fea 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -604,6 +604,10 @@ check_size(AVCodecContext * const avctx, V4L2m2mContext * const s) - av_log(avctx, AV_LOG_TRACE, "%s: Size %dx%d or fcc %s empty\n", __func__, w, h, av_fourcc2str(fcc)); - return 0; - } -+ if ((s->quirks & FF_V4L2_QUIRK_ENUM_FRAMESIZES_BROKEN) != 0) { -+ av_log(avctx, AV_LOG_TRACE, "%s: Skipped (quirk): Size %dx%d, fcc %s\n", __func__, w, h, av_fourcc2str(fcc)); -+ return 0; -+ } - - for (i = 0;; ++i) { - struct v4l2_frmsizeenum fs = { -@@ -623,8 +627,8 @@ check_size(AVCodecContext * const avctx, V4L2m2mContext * const s) - av_log(avctx, AV_LOG_ERROR, "Failed to enum framesizes: %s", av_err2str(err)); - return err; - } -- av_log(avctx, AV_LOG_WARNING, "Failed to find Size=%dx%d, fmt=%s in frame size enums\n", -- w, h, av_fourcc2str(fcc)); -+ av_log(avctx, AV_LOG_WARNING, "Failed to find Size=%dx%d, fmt=%s in %u frame size enums\n", -+ w, h, av_fourcc2str(fcc), i); - return err; - } - -@@ -684,7 +688,7 @@ get_quirks(AVCodecContext * const avctx, V4L2m2mContext * const s) - // capture to clear the event even if the capture buffers were the right - // size in the first place. - if (strcmp(cap.driver, "meson-vdec") == 0) -- s->quirks |= FF_V4L2_QUIRK_REINIT_ALWAYS; -+ s->quirks |= FF_V4L2_QUIRK_REINIT_ALWAYS | FF_V4L2_QUIRK_ENUM_FRAMESIZES_BROKEN; - - av_log(avctx, AV_LOG_DEBUG, "Driver '%s': Quirks=%#x\n", cap.driver, s->quirks); - return 0; - -From 8ba5576e7fcd24c2f450f0295cc3b6d8e82e8649 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 23 May 2022 18:05:20 +0100 -Subject: [PATCH 047/151] v4l2m2m_dec: Make some error rturns a bit more robust - ---- - libavcodec/v4l2_context.c | 5 ++--- - libavcodec/v4l2_m2m_dec.c | 23 ++++++++++++++--------- - 2 files changed, 16 insertions(+), 12 deletions(-) - -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index 007a58c8f1..b3662aedaa 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -765,7 +765,7 @@ static int stuff_all_buffers(AVCodecContext * avctx, V4L2Context* ctx) - int ff_v4l2_context_set_status(V4L2Context* ctx, uint32_t cmd) - { - int type = ctx->type; -- int ret; -+ int ret = 0; - AVCodecContext * const avctx = logger(ctx); - - // Avoid doing anything if there is nothing we can do -@@ -777,8 +777,7 @@ int ff_v4l2_context_set_status(V4L2Context* ctx, uint32_t cmd) - if (cmd == VIDIOC_STREAMON && !V4L2_TYPE_IS_OUTPUT(ctx->type)) - stuff_all_buffers(avctx, ctx); - -- ret = ioctl(ctx_to_m2mctx(ctx)->fd, cmd, &type); -- if (ret < 0) { -+ if (ioctl(ctx_to_m2mctx(ctx)->fd, cmd, &type) < 0) { - const int err = errno; - av_log(avctx, AV_LOG_ERROR, "%s set status %d (%s) failed: err=%d\n", ctx->name, - cmd, (cmd == VIDIOC_STREAMON) ? "ON" : "OFF", err); -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 888ba67fea..88a341aae2 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -110,16 +110,21 @@ static int check_output_streamon(AVCodecContext *const avctx, V4L2m2mContext *co - return 0; - - ret = ff_v4l2_context_set_status(&s->output, VIDIOC_STREAMON); -- if (ret < 0) -- av_log(avctx, AV_LOG_ERROR, "VIDIOC_STREAMON on output context\n"); -- -- ret = ioctl(s->fd, VIDIOC_DECODER_CMD, &cmd); -- if (ret < 0) -- av_log(avctx, AV_LOG_ERROR, "VIDIOC_DECODER_CMD start error: %d\n", errno); -- else -- av_log(avctx, AV_LOG_DEBUG, "VIDIOC_DECODER_CMD start OK\n"); -+ if (ret != 0) { -+ av_log(avctx, AV_LOG_ERROR, "VIDIOC_STREAMON on output context: %s\n", av_err2str(ret)); -+ return ret; -+ } - -- return ret; -+ // STREAMON should do implicit START so this just for those that don't. -+ // It is optional so don't worry if it fails -+ if (ioctl(s->fd, VIDIOC_DECODER_CMD, &cmd) < 0) { -+ ret = AVERROR(errno); -+ av_log(avctx, AV_LOG_WARNING, "VIDIOC_DECODER_CMD start error: %s\n", av_err2str(ret)); -+ } -+ else { -+ av_log(avctx, AV_LOG_TRACE, "VIDIOC_DECODER_CMD start OK\n"); -+ } -+ return 0; - } - - static int v4l2_try_start(AVCodecContext *avctx) - -From aafa5968f8713319be35cf26069c98566d5bf59b Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 24 May 2022 17:02:58 +0000 -Subject: [PATCH 048/151] v4l2m2m_dec: Support in-pkt AV_PKT_DATA_NEW_EXTRADATA - -Support packet side-data containing AV_PKT_DATA_NEW_EXTRADATA. Should -also detect and complain about unexpected streams of empty packets. - -This functionality untested as I haven't yet found anything that creates -NEW_EXTRADATA side data. ---- - libavcodec/v4l2_m2m.c | 1 + - libavcodec/v4l2_m2m.h | 3 +++ - libavcodec/v4l2_m2m_dec.c | 49 ++++++++++++++++++++++++++++++++++++--- - 3 files changed, 50 insertions(+), 3 deletions(-) - -diff --git a/libavcodec/v4l2_m2m.c b/libavcodec/v4l2_m2m.c -index e26bd74c3e..6dd01e2e00 100644 ---- a/libavcodec/v4l2_m2m.c -+++ b/libavcodec/v4l2_m2m.c -@@ -251,6 +251,7 @@ static void v4l2_m2m_destroy_context(void *opaque, uint8_t *context) - av_frame_unref(s->frame); - av_frame_free(&s->frame); - av_packet_unref(&s->buf_pkt); -+ av_freep(&s->extdata_data); - - av_log(s->avctx, AV_LOG_DEBUG, "V4L2 Context destroyed\n"); - -diff --git a/libavcodec/v4l2_m2m.h b/libavcodec/v4l2_m2m.h -index 6bd5e8eda7..19d618698d 100644 ---- a/libavcodec/v4l2_m2m.h -+++ b/libavcodec/v4l2_m2m.h -@@ -115,6 +115,9 @@ typedef struct V4L2m2mContext { - - /* Ext data sent */ - int extdata_sent; -+ /* Ext data sent in packet - overrides ctx */ -+ uint8_t * extdata_data; -+ size_t extdata_size; - - #define FF_V4L2_QUIRK_REINIT_ALWAYS 1 - #define FF_V4L2_QUIRK_ENUM_FRAMESIZES_BROKEN 2 -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 88a341aae2..392a68f0c7 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -343,7 +343,46 @@ static int try_enqueue_src(AVCodecContext * const avctx, V4L2m2mContext * const - // We will already have a coded pkt if the output Q was full last time we - // tried to Q it - if (!s->buf_pkt.size && !do_not_get) { -- ret = ff_decode_get_packet(avctx, &s->buf_pkt); -+ unsigned int i; -+ -+ for (i = 0; i < 256; ++i) { -+ uint8_t * side_data; -+ size_t side_size; -+ -+ ret = ff_decode_get_packet(avctx, &s->buf_pkt); -+ if (ret != 0) -+ break; -+ -+ // New extradata is the only side-data we undertand -+ side_data = av_packet_get_side_data(&s->buf_pkt, AV_PKT_DATA_NEW_EXTRADATA, &side_size); -+ if (side_data) { -+ av_log(avctx, AV_LOG_DEBUG, "New extradata\n"); -+ av_freep(&s->extdata_data); -+ if ((s->extdata_data = av_malloc(side_size ? side_size : 1)) == NULL) { -+ av_log(avctx, AV_LOG_ERROR, "Failed to alloc %zd bytes of extra data\n", side_size); -+ return AVERROR(ENOMEM); -+ } -+ memcpy(s->extdata_data, side_data, side_size); -+ s->extdata_size = side_size; -+ s->extdata_sent = 0; -+ } -+ -+ if (s->buf_pkt.size != 0) -+ break; -+ -+ if (s->buf_pkt.side_data_elems == 0) { -+ av_log(avctx, AV_LOG_WARNING, "Empty pkt from ff_decode_get_packet - treating as EOF\n"); -+ ret = AVERROR_EOF; -+ break; -+ } -+ -+ // Retry a side-data only pkt -+ } -+ // If i >= 256 something has gone wrong -+ if (i >= 256) { -+ av_log(avctx, AV_LOG_ERROR, "Too many side-data only packets\n"); -+ return AVERROR(EIO); -+ } - - if (ret == AVERROR(EAGAIN)) { - if (!stream_started(s)) { -@@ -398,8 +437,12 @@ static int try_enqueue_src(AVCodecContext * const avctx, V4L2m2mContext * const - if ((ret = check_output_streamon(avctx, s)) != 0) - return ret; - -- ret = ff_v4l2_context_enqueue_packet(&s->output, &s->buf_pkt, -- avctx->extradata, s->extdata_sent ? 0 : avctx->extradata_size); -+ if (s->extdata_sent) -+ ret = ff_v4l2_context_enqueue_packet(&s->output, &s->buf_pkt, NULL, 0); -+ else if (s->extdata_data) -+ ret = ff_v4l2_context_enqueue_packet(&s->output, &s->buf_pkt, s->extdata_data, s->extdata_size); -+ else -+ ret = ff_v4l2_context_enqueue_packet(&s->output, &s->buf_pkt, avctx->extradata, avctx->extradata_size); - - if (ret == AVERROR(EAGAIN)) { - // Out of input buffers - keep packet - -From e9bced67bdb40096d31067d41956276e9e1af11a Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 24 May 2022 20:02:48 +0000 -Subject: [PATCH 049/151] v4l2m2m_dec: Catch repeated Q fulls - ---- - libavcodec/v4l2_m2m_dec.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 392a68f0c7..7e17044706 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -504,13 +504,14 @@ static int qbuf_wait(AVCodecContext * const avctx, V4L2Context * const ctx) - static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - { - V4L2m2mContext *const s = ((V4L2m2mPriv*)avctx->priv_data)->context; -- int src_rv; -+ int src_rv = NQ_OK; - int dst_rv = 1; // Non-zero (done), non-negative (error) number - unsigned int i = 0; - - do { - const int pending = xlat_pending(&s->xlat); - const int prefer_dq = (pending > s->pending_hw / 16); -+ const int last_src_rv = src_rv; - - // Enqueue another pkt for decode if - // (a) We don't have a lot of stuff in the buffer already OR -@@ -526,6 +527,11 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - if ((i != 0 || s->req_pkt) && src_rv == NQ_SRC_EMPTY) - break; - -+ if (src_rv == NQ_Q_FULL && last_src_rv == NQ_Q_FULL) { -+ av_log(avctx, AV_LOG_WARNING, "Poll thinks src Q has space; none found\n"); -+ break; -+ } -+ - // Try to get a new frame if - // (a) we haven't already got one AND - // (b) enqueue returned a status indicating that decode should be attempted - -From 0c974e4da2c0311836145f2fd42081d40eb15998 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 25 May 2022 15:22:12 +0000 -Subject: [PATCH 050/151] Remove requirement for epoxy & libudev config options - ---- - configure | 26 +++++++++++++++++--------- - pi-util/conf_native.sh | 2 -- - 2 files changed, 17 insertions(+), 11 deletions(-) - -diff --git a/configure b/configure -index b41663c794..fdc95146bf 100755 ---- a/configure -+++ b/configure -@@ -205,6 +205,7 @@ External library support: - --disable-bzlib disable bzlib [autodetect] - --disable-coreimage disable Apple CoreImage framework [autodetect] - --enable-chromaprint enable audio fingerprinting with chromaprint [no] -+ --disable-epoxy disable epoxy [autodetect] - --enable-frei0r enable frei0r video filtering [no] - --enable-gcrypt enable gcrypt, needed for rtmp(t)e support - if openssl, librtmp or gmp is not used [no] -@@ -281,7 +282,7 @@ External library support: - if openssl, gnutls or mbedtls is not used [no] - --enable-libtwolame enable MP2 encoding via libtwolame [no] - --enable-libuavs3d enable AVS3 decoding via libuavs3d [no] -- --enable-libudev enable libudev [no] -+ --disable-libudev disable libudev [autodetect] - --enable-libv4l2 enable libv4l2/v4l-utils [no] - --enable-libvidstab enable video stabilization using vid.stab [no] - --enable-libvmaf enable vmaf filter via libvmaf [no] -@@ -1747,7 +1748,9 @@ EXTERNAL_AUTODETECT_LIBRARY_LIST=" - avfoundation - bzlib - coreimage -+ epoxy - iconv -+ libudev - libxcb - libxcb_shm - libxcb_shape -@@ -1819,7 +1822,6 @@ EXTERNAL_LIBRARY_LIST=" - libdav1d - libdc1394 - libdrm -- epoxy - libflite - libfontconfig - libfreetype -@@ -1863,7 +1865,6 @@ EXTERNAL_LIBRARY_LIST=" - libtheora - libtwolame - libuavs3d -- libudev - libv4l2 - libvmaf - libvorbis -@@ -3567,9 +3568,8 @@ v4l2_indev_suggest="libv4l2" - v4l2_outdev_deps="libdrm" - v4l2_outdev_deps_any="linux_videodev2_h sys_videoio_h" - v4l2_outdev_suggest="libv4l2" --vout_drm_outdev_deps="libdrm vout_drm" --vout_egl_outdev_deps="xlib" --vout_egl_outdev_select="epoxy" -+vout_drm_outdev_deps="libdrm" -+vout_egl_outdev_deps="xlib epoxy" - vfwcap_indev_deps="vfw32 vfwcap_defines" - xcbgrab_indev_deps="libxcb" - xcbgrab_indev_suggest="libxcb_shm libxcb_shape libxcb_xfixes" -@@ -6355,6 +6355,12 @@ if enabled xlib; then - disable xlib - fi - -+enabled libudev && -+ check_pkg_config libudev libudev libudev.h udev_new -+ -+enabled epoxy && -+ check_pkg_config epoxy epoxy epoxy/egl.h epoxy_egl_version -+ - check_headers direct.h - check_headers dirent.h - check_headers dxgidebug.h -@@ -6601,7 +6607,6 @@ enabled libdav1d && require_pkg_config libdav1d "dav1d >= 0.5.0" "dav1d - enabled libdavs2 && require_pkg_config libdavs2 "davs2 >= 1.6.0" davs2.h davs2_decoder_open - enabled libdc1394 && require_pkg_config libdc1394 libdc1394-2 dc1394/dc1394.h dc1394_new - enabled libdrm && require_pkg_config libdrm libdrm xf86drm.h drmGetVersion --enabled epoxy && require_pkg_config epoxy epoxy epoxy/egl.h epoxy_egl_version - enabled libfdk_aac && { check_pkg_config libfdk_aac fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen || - { require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac && - warn "using libfdk without pkg-config"; } } -@@ -6713,7 +6718,6 @@ enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame - { check_lib libtwolame twolame.h twolame_encode_buffer_float32_interleaved -ltwolame || - die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; } - enabled libuavs3d && require_pkg_config libuavs3d "uavs3d >= 1.1.41" uavs3d.h uavs3d_decode --enabled libudev && require_pkg_config libudev libudev libudev.h udev_new - enabled libv4l2 && require_pkg_config libv4l2 libv4l2 libv4l2.h v4l2_ioctl - enabled libvidstab && require_pkg_config libvidstab "vidstab >= 0.98" vid.stab/libvidstab.h vsMotionDetectInit - enabled libvmaf && require_pkg_config libvmaf "libvmaf >= 2.0.0" libvmaf.h vmaf_init -@@ -6819,9 +6823,13 @@ enabled rkmpp && { require_pkg_config rkmpp rockchip_mpp rockchip/r - enabled v4l2_request && { enabled libdrm || - die "ERROR: v4l2-request requires --enable-libdrm"; } && - { enabled libudev || -- die "ERROR: v4l2-request requires --enable-libudev"; } -+ die "ERROR: v4l2-request requires libudev"; } - enabled vapoursynth && require_pkg_config vapoursynth "vapoursynth-script >= 42" VSScript.h vsscript_init - -+enabled vout_drm && { enabled libdrm || die "ERROR: vout_drm requires --enable-libdrm"; } -+ -+enabled vout_egl && { enabled epoxy || die "ERROR: vout_egl requires epoxy"; } && -+ { enabled xlib || die "ERROR: vout_egl requires xlib"; } - - if enabled gcrypt; then - GCRYPT_CONFIG="${cross_prefix}libgcrypt-config" -diff --git a/pi-util/conf_native.sh b/pi-util/conf_native.sh -index 65576846e8..37cea71756 100755 ---- a/pi-util/conf_native.sh -+++ b/pi-util/conf_native.sh -@@ -91,8 +91,6 @@ $FFSRC/configure \ - --disable-thumb\ - --enable-v4l2-request\ - --enable-libdrm\ -- --enable-epoxy\ -- --enable-libudev\ - --enable-vout-egl\ - --enable-vout-drm\ - $SHARED_LIBS\ - -From 9f234d8cbde2829e6a70fd3cb6324998df8a31f3 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Fri, 27 May 2022 09:36:51 +0000 -Subject: [PATCH 051/151] hevc: If hwaccel avoid creation of s/w only vars - ---- - libavcodec/hevc_refs.c | 35 +++++++++++++++++++++-------------- - libavcodec/hevcdec.c | 42 +++++++++++++++++++++++++++++------------- - 2 files changed, 50 insertions(+), 27 deletions(-) - -diff --git a/libavcodec/hevc_refs.c b/libavcodec/hevc_refs.c -index 811e8feff8..f7cf14eabc 100644 ---- a/libavcodec/hevc_refs.c -+++ b/libavcodec/hevc_refs.c -@@ -98,18 +98,22 @@ static HEVCFrame *alloc_frame(HEVCContext *s) - if (!frame->rpl_buf) - goto fail; - -- frame->tab_mvf_buf = av_buffer_pool_get(s->tab_mvf_pool); -- if (!frame->tab_mvf_buf) -- goto fail; -- frame->tab_mvf = (MvField *)frame->tab_mvf_buf->data; -+ if (s->tab_mvf_pool) { -+ frame->tab_mvf_buf = av_buffer_pool_get(s->tab_mvf_pool); -+ if (!frame->tab_mvf_buf) -+ goto fail; -+ frame->tab_mvf = (MvField *)frame->tab_mvf_buf->data; -+ } - -- frame->rpl_tab_buf = av_buffer_pool_get(s->rpl_tab_pool); -- if (!frame->rpl_tab_buf) -- goto fail; -- frame->rpl_tab = (RefPicListTab **)frame->rpl_tab_buf->data; -- frame->ctb_count = s->ps.sps->ctb_width * s->ps.sps->ctb_height; -- for (j = 0; j < frame->ctb_count; j++) -- frame->rpl_tab[j] = (RefPicListTab *)frame->rpl_buf->data; -+ if (s->rpl_tab_pool) { -+ frame->rpl_tab_buf = av_buffer_pool_get(s->rpl_tab_pool); -+ if (!frame->rpl_tab_buf) -+ goto fail; -+ frame->rpl_tab = (RefPicListTab **)frame->rpl_tab_buf->data; -+ frame->ctb_count = s->ps.sps->ctb_width * s->ps.sps->ctb_height; -+ for (j = 0; j < frame->ctb_count; j++) -+ frame->rpl_tab[j] = (RefPicListTab *)frame->rpl_buf->data; -+ } - - frame->frame->top_field_first = s->sei.picture_timing.picture_struct == AV_PICTURE_STRUCTURE_TOP_FIELD; - frame->frame->interlaced_frame = (s->sei.picture_timing.picture_struct == AV_PICTURE_STRUCTURE_TOP_FIELD) || (s->sei.picture_timing.picture_struct == AV_PICTURE_STRUCTURE_BOTTOM_FIELD); -@@ -297,14 +301,17 @@ static int init_slice_rpl(HEVCContext *s) - int ctb_count = frame->ctb_count; - int ctb_addr_ts = s->ps.pps->ctb_addr_rs_to_ts[s->sh.slice_segment_addr]; - int i; -+ RefPicListTab * const tab = (RefPicListTab *)frame->rpl_buf->data + s->slice_idx; - - if (s->slice_idx >= frame->rpl_buf->size / sizeof(RefPicListTab)) - return AVERROR_INVALIDDATA; - -- for (i = ctb_addr_ts; i < ctb_count; i++) -- frame->rpl_tab[i] = (RefPicListTab *)frame->rpl_buf->data + s->slice_idx; -+ if (frame->rpl_tab) { -+ for (i = ctb_addr_ts; i < ctb_count; i++) -+ frame->rpl_tab[i] = tab; -+ } - -- frame->refPicList = (RefPicList *)frame->rpl_tab[ctb_addr_ts]; -+ frame->refPicList = tab->refPicList; - - return 0; - } -diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c -index 2867cb2e16..17f53322fb 100644 ---- a/libavcodec/hevcdec.c -+++ b/libavcodec/hevcdec.c -@@ -536,6 +536,16 @@ static int set_sps(HEVCContext *s, const HEVCSPS *sps, - if (!sps) - return 0; - -+ // If hwaccel then we don't need all the s/w decode helper arrays -+ if (s->avctx->hwaccel) { -+ export_stream_params(s, sps); -+ -+ s->avctx->pix_fmt = pix_fmt; -+ s->ps.sps = sps; -+ s->ps.vps = (HEVCVPS*) s->ps.vps_list[s->ps.sps->vps_id]->data; -+ return 0; -+ } -+ - ret = pic_arrays_init(s, sps); - if (ret < 0) - goto fail; -@@ -2890,11 +2900,13 @@ static int hevc_frame_start(HEVCContext *s) - ((s->ps.sps->height >> s->ps.sps->log2_min_cb_size) + 1); - int ret; - -- memset(s->horizontal_bs, 0, s->bs_width * s->bs_height); -- memset(s->vertical_bs, 0, s->bs_width * s->bs_height); -- memset(s->cbf_luma, 0, s->ps.sps->min_tb_width * s->ps.sps->min_tb_height); -- memset(s->is_pcm, 0, (s->ps.sps->min_pu_width + 1) * (s->ps.sps->min_pu_height + 1)); -- memset(s->tab_slice_address, -1, pic_size_in_ctb * sizeof(*s->tab_slice_address)); -+ if (s->horizontal_bs) { -+ memset(s->horizontal_bs, 0, s->bs_width * s->bs_height); -+ memset(s->vertical_bs, 0, s->bs_width * s->bs_height); -+ memset(s->cbf_luma, 0, s->ps.sps->min_tb_width * s->ps.sps->min_tb_height); -+ memset(s->is_pcm, 0, (s->ps.sps->min_pu_width + 1) * (s->ps.sps->min_pu_height + 1)); -+ memset(s->tab_slice_address, -1, pic_size_in_ctb * sizeof(*s->tab_slice_address)); -+ } - - s->is_decoded = 0; - s->first_nal_type = s->nal_unit_type; -@@ -3438,15 +3450,19 @@ static int hevc_ref_frame(HEVCContext *s, HEVCFrame *dst, HEVCFrame *src) - dst->needs_fg = 1; - } - -- dst->tab_mvf_buf = av_buffer_ref(src->tab_mvf_buf); -- if (!dst->tab_mvf_buf) -- goto fail; -- dst->tab_mvf = src->tab_mvf; -+ if (src->tab_mvf_buf) { -+ dst->tab_mvf_buf = av_buffer_ref(src->tab_mvf_buf); -+ if (!dst->tab_mvf_buf) -+ goto fail; -+ dst->tab_mvf = src->tab_mvf; -+ } - -- dst->rpl_tab_buf = av_buffer_ref(src->rpl_tab_buf); -- if (!dst->rpl_tab_buf) -- goto fail; -- dst->rpl_tab = src->rpl_tab; -+ if (src->rpl_tab_buf) { -+ dst->rpl_tab_buf = av_buffer_ref(src->rpl_tab_buf); -+ if (!dst->rpl_tab_buf) -+ goto fail; -+ dst->rpl_tab = src->rpl_tab; -+ } - - dst->rpl_buf = av_buffer_ref(src->rpl_buf); - if (!dst->rpl_buf) - -From bb2ddc480634141bed9afd3f66e7f63f5091bb2f Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 30 May 2022 17:51:44 +0100 -Subject: [PATCH 052/151] rpi_sand: Add SAND30->NV12 conversion - -C code only. Reworks the hwcontext_drm conversion to use the -rpi_sand_fns generic frame convert fn rather than calling the -individual conversion functions directly. This keeps all teh stride and -size logic in a single place. ---- - libavutil/hwcontext_drm.c | 46 ++++++++------------ - libavutil/rpi_sand_fns.c | 89 +++++++++++++++++++++++++++++++++++++++ - libavutil/rpi_sand_fns.h | 5 +++ - 3 files changed, 111 insertions(+), 29 deletions(-) - -diff --git a/libavutil/hwcontext_drm.c b/libavutil/hwcontext_drm.c -index baf18920fa..137a952d2c 100644 ---- a/libavutil/hwcontext_drm.c -+++ b/libavutil/hwcontext_drm.c -@@ -234,14 +234,14 @@ static int drm_transfer_get_formats(AVHWFramesContext *ctx, - enum AVHWFrameTransferDirection dir, - enum AVPixelFormat **formats) - { -- enum AVPixelFormat *pix_fmts; -+ enum AVPixelFormat *p; - -- pix_fmts = av_malloc_array(2, sizeof(*pix_fmts)); -- if (!pix_fmts) -+ p = *formats = av_malloc_array(3, sizeof(*p)); -+ if (!p) - return AVERROR(ENOMEM); - - // **** Offer native sand too ???? -- pix_fmts[0] = -+ *p++ = - #if CONFIG_SAND - ctx->sw_format == AV_PIX_FMT_RPI4_8 || ctx->sw_format == AV_PIX_FMT_SAND128 ? - AV_PIX_FMT_YUV420P : -@@ -249,9 +249,14 @@ static int drm_transfer_get_formats(AVHWFramesContext *ctx, - AV_PIX_FMT_YUV420P10LE : - #endif - ctx->sw_format; -- pix_fmts[1] = AV_PIX_FMT_NONE; - -- *formats = pix_fmts; -+#if CONFIG_SAND -+ if (ctx->sw_format == AV_PIX_FMT_RPI4_10 || -+ ctx->sw_format == AV_PIX_FMT_RPI4_8 || ctx->sw_format == AV_PIX_FMT_SAND128) -+ *p++ = AV_PIX_FMT_NV12; -+#endif -+ -+ *p = AV_PIX_FMT_NONE; - return 0; - } - -@@ -294,29 +299,12 @@ static int drm_transfer_data_from(AVHWFramesContext *hwfc, - const unsigned int w = FFMIN(dst->width, map->width); - const unsigned int h = FFMIN(dst->height, map->height); - -- if (map->format == AV_PIX_FMT_RPI4_8 && dst->format == AV_PIX_FMT_YUV420P) { -- av_rpi_sand_to_planar_y8(dst->data[0], dst->linesize[0], -- map->data[0], -- 128, stride2, -- 0, 0, w, h); -- av_rpi_sand_to_planar_c8(dst->data[1], dst->linesize[1], -- dst->data[2], dst->linesize[2], -- map->data[1], -- 128, stride2, -- 0, 0, w / 2, h / 2); -- } -- else if (map->format == AV_PIX_FMT_RPI4_10 && dst->format == AV_PIX_FMT_YUV420P10LE) { -- av_rpi_sand30_to_planar_y16(dst->data[0], dst->linesize[0], -- map->data[0], -- 128, stride2, -- 0, 0, w, h); -- av_rpi_sand30_to_planar_c16(dst->data[1], dst->linesize[1], -- dst->data[2], dst->linesize[2], -- map->data[1], -- 128, stride2, -- 0, 0, w / 2, h / 2); -- } -- else -+ map->crop_top = 0; -+ map->crop_bottom = 0; -+ map->crop_left = 0; -+ map->crop_right = 0; -+ -+ if (av_rpi_sand_to_planar_frame(dst, map) != 0) - { - av_log(hwfc, AV_LOG_ERROR, "%s: Incompatible output pixfmt for sand\n", __func__); - err = AVERROR(EINVAL); -diff --git a/libavutil/rpi_sand_fns.c b/libavutil/rpi_sand_fns.c -index 1f543e9357..256c3d532f 100644 ---- a/libavutil/rpi_sand_fns.c -+++ b/libavutil/rpi_sand_fns.c -@@ -229,6 +229,75 @@ void av_rpi_sand30_to_planar_c16(uint8_t * dst_u, const unsigned int dst_stride_ - } - } - -+// Fetches a single patch - offscreen fixup not done here -+// w <= stride1 -+// single lose bottom 2 bits truncation -+// _x & _w in pixels, strides in bytes -+void av_rpi_sand30_to_planar_y8(uint8_t * dst, const unsigned int dst_stride, -+ const uint8_t * src, -+ unsigned int stride1, unsigned int stride2, -+ unsigned int _x, unsigned int y, -+ unsigned int _w, unsigned int h) -+{ -+ const unsigned int x0 = (_x / 3) * 4; // Byte offset of the word -+ const unsigned int xskip0 = _x - (x0 >> 2) * 3; -+ const unsigned int x1 = ((_x + _w) / 3) * 4; -+ const unsigned int xrem1 = _x + _w - (x1 >> 2) * 3; -+ const unsigned int mask = stride1 - 1; -+ const uint8_t * p0 = src + (x0 & mask) + y * stride1 + (x0 & ~mask) * stride2; -+ const unsigned int slice_inc = ((stride2 - 1) * stride1) >> 2; // RHS of a stripe to LHS of next in words -+ -+#if HAVE_SAND_ASM && 0 -+ if (_x == 0) { -+ ff_rpi_sand30_lines_to_planar_y8(dst, dst_stride, src, stride1, stride2, _x, y, _w, h); -+ return; -+ } -+#endif -+ -+ if (x0 == x1) { -+ // ******************* -+ // Partial single word xfer -+ return; -+ } -+ -+ for (unsigned int i = 0; i != h; ++i, dst += dst_stride, p0 += stride1) -+ { -+ unsigned int x = x0; -+ const uint32_t * p = (const uint32_t *)p0; -+ uint8_t * d = dst; -+ -+ if (xskip0 != 0) { -+ const uint32_t p3 = *p++; -+ -+ if (xskip0 == 1) -+ *d++ = (p3 >> 12) & 0xff; -+ *d++ = (p3 >> 22) & 0xff; -+ -+ if (((x += 4) & mask) == 0) -+ p += slice_inc; -+ } -+ -+ while (x != x1) { -+ const uint32_t p3 = *p++; -+ *d++ = (p3 >> 2) & 0xff; -+ *d++ = (p3 >> 12) & 0xff; -+ *d++ = (p3 >> 22) & 0xff; -+ -+ if (((x += 4) & mask) == 0) -+ p += slice_inc; -+ } -+ -+ if (xrem1 != 0) { -+ const uint32_t p3 = *p; -+ -+ *d++ = (p3 >> 2) & 0xff; -+ if (xrem1 == 2) -+ *d++ = (p3 >> 12) & 0xff; -+ } -+ } -+} -+ -+ - - // w/h in pixels - void av_rpi_sand16_to_sand8(uint8_t * dst, const unsigned int dst_stride1, const unsigned int dst_stride2, -@@ -310,6 +379,16 @@ int av_rpi_sand_to_planar_frame(AVFrame * const dst, const AVFrame * const src) - av_rpi_sand_frame_stride1(src), av_rpi_sand_frame_stride2(src), - x/2, y/2, w/2, h/2); - break; -+ case AV_PIX_FMT_NV12: -+ av_rpi_sand_to_planar_y8(dst->data[0], dst->linesize[0], -+ src->data[0], -+ av_rpi_sand_frame_stride1(src), av_rpi_sand_frame_stride2(src), -+ x, y, w, h); -+ av_rpi_sand_to_planar_y8(dst->data[1], dst->linesize[1], -+ src->data[1], -+ av_rpi_sand_frame_stride1(src), av_rpi_sand_frame_stride2(src), -+ x/2, y/2, w, h/2); -+ break; - default: - return -1; - } -@@ -344,6 +423,16 @@ int av_rpi_sand_to_planar_frame(AVFrame * const dst, const AVFrame * const src) - av_rpi_sand_frame_stride1(src), av_rpi_sand_frame_stride2(src), - x/2, y/2, w/2, h/2); - break; -+ case AV_PIX_FMT_NV12: -+ av_rpi_sand30_to_planar_y8(dst->data[0], dst->linesize[0], -+ src->data[0], -+ av_rpi_sand_frame_stride1(src), av_rpi_sand_frame_stride2(src), -+ x, y, w, h); -+ av_rpi_sand30_to_planar_y8(dst->data[1], dst->linesize[1], -+ src->data[1], -+ av_rpi_sand_frame_stride1(src), av_rpi_sand_frame_stride2(src), -+ x/2, y/2, w, h/2); -+ break; - default: - return -1; - } -diff --git a/libavutil/rpi_sand_fns.h b/libavutil/rpi_sand_fns.h -index 634b55e800..462ccb8abd 100644 ---- a/libavutil/rpi_sand_fns.h -+++ b/libavutil/rpi_sand_fns.h -@@ -85,6 +85,11 @@ void av_rpi_sand30_to_planar_c16(uint8_t * dst_u, const unsigned int dst_stride_ - unsigned int _x, unsigned int y, - unsigned int _w, unsigned int h); - -+void av_rpi_sand30_to_planar_y8(uint8_t * dst, const unsigned int dst_stride, -+ const uint8_t * src, -+ unsigned int stride1, unsigned int stride2, -+ unsigned int _x, unsigned int y, -+ unsigned int _w, unsigned int h); - - // w/h in pixels - void av_rpi_sand16_to_sand8(uint8_t * dst, const unsigned int dst_stride1, const unsigned int dst_stride2, - -From b55c351e6954c800229d97dc6c982ca8f998c848 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 1 Jun 2022 17:49:26 +0000 -Subject: [PATCH 053/151] rpi_sand: Add SAND30->NV12 asm for Armv7 & Armv8 - -Also reworks the previous Armv8 SAND30->Y16 function in a slightly more -efficient way that makes it look more like the Armv7 version. ---- - libavutil/aarch64/rpi_sand_neon.S | 549 ++++++++++++++++++------------ - libavutil/aarch64/rpi_sand_neon.h | 4 + - libavutil/arm/rpi_sand_neon.S | 239 ++++++++++--- - libavutil/arm/rpi_sand_neon.h | 11 + - libavutil/rpi_sand_fns.c | 2 +- - 5 files changed, 541 insertions(+), 264 deletions(-) - -diff --git a/libavutil/aarch64/rpi_sand_neon.S b/libavutil/aarch64/rpi_sand_neon.S -index cdcf71ee67..2f07d9674c 100644 ---- a/libavutil/aarch64/rpi_sand_neon.S -+++ b/libavutil/aarch64/rpi_sand_neon.S -@@ -248,228 +248,6 @@ incomplete_block_loop_end_c8: - ret - endfunc - --//void ff_rpi_sand30_lines_to_planar_y16( --// uint8_t * dest, // [x0] --// unsigned int dst_stride, // [w1] -> assumed to be equal to _w --// const uint8_t * src, // [x2] --// unsigned int src_stride1, // [w3] -> 128 --// unsigned int src_stride2, // [w4] --// unsigned int _x, // [w5] --// unsigned int y, // [w6] --// unsigned int _w, // [w7] --// unsigned int h); // [sp, #0] -- --function ff_rpi_sand30_lines_to_planar_y16, export=1 -- stp x19, x20, [sp, #-48]! -- stp x21, x22, [sp, #16] -- stp x23, x24, [sp, #32] -- -- // w6 = argument h -- ldr w6, [sp, #48] -- -- // slice_inc = ((stride2 - 1) * stride1) -- mov w5, w4 -- sub w5, w5, #1 -- lsl w5, w5, #7 -- -- // total number of bytes per row = (width / 3) * 4 -- mov w8, w7 -- mov w9, #3 -- udiv w8, w8, w9 -- lsl w8, w8, #2 -- -- // number of full 128 byte blocks to be processed -- mov w9, #96 -- udiv w9, w7, w9 // = (width * 4) / (3*128) = width/96 -- -- // w10 = number of full integers to process (4 bytes) -- // w11 = remaning zero to two 10bit values still to copy over -- mov w12, #96 -- mul w12, w9, w12 -- sub w12, w7, w12 // width - blocks*96 = remaining points per row -- mov w11, #3 -- udiv w10, w12, w11 // full integers to process = w12 / 3 -- mul w11, w10, w11 // #integers *3 -- sub w11, w12, w11 // remaining 0-2 points = remaining points - integers*3 -- -- // increase w9 by one if w10+w11 is not zero, and decrease the row count by one -- // this is to efficiently copy incomplete blocks at the end of the rows -- // the last row is handled explicitly to avoid writing out of bounds -- add w22, w10, w11 -- cmp w22, #0 -- cset w22, ne // 1 iff w10+w11 not zero, 0 otherwise -- add w9, w9, w22 -- sub w6, w6, #1 -- -- // store the number of bytes in w20 which we copy too much for every row -- // when the width of the frame is not a multiple of 96 (128bytes storing 96 10bit values) -- mov w20, #96*2 -- mul w20, w20, w9 -- sub w20, w1, w20 -- -- mov w23, #0 // flag to check whether the last line had already been processed -- -- // bitmask to clear the uppper 6bits of the result values -- mov x19, #0x03ff03ff03ff03ff -- dup v22.2d, x19 -- -- // row counter = 0 -- eor w12, w12, w12 --row_loop_y16: -- cmp w12, w6 // jump to row_loop_y16_fin if we processed all rows -- bge row_loop_y16_fin -- -- mov x13, x2 // row src -- eor w14, w14, w14 // full block counter --block_loop_y16: -- cmp w14, w9 -- bge block_loop_y16_fin -- -- // load 64 bytes -- ld1 { v0.4s, v1.4s, v2.4s, v3.4s }, [x13], #64 -- -- // process v0 and v1 -- xtn v16.4h, v0.4s -- ushr v0.4s, v0.4s, #10 -- xtn v17.4h, v0.4s -- ushr v0.4s, v0.4s, #10 -- xtn v18.4h, v0.4s -- -- xtn2 v16.8h, v1.4s -- and v16.16b, v16.16b, v22.16b -- ushr v1.4s, v1.4s, #10 -- xtn2 v17.8h, v1.4s -- and v17.16b, v17.16b, v22.16b -- ushr v1.4s, v1.4s, #10 -- xtn2 v18.8h, v1.4s -- and v18.16b, v18.16b, v22.16b -- -- st3 { v16.8h, v17.8h, v18.8h }, [x0], #48 -- -- // process v2 and v3 -- xtn v23.4h, v2.4s -- ushr v2.4s, v2.4s, #10 -- xtn v24.4h, v2.4s -- ushr v2.4s, v2.4s, #10 -- xtn v25.4h, v2.4s -- -- xtn2 v23.8h, v3.4s -- and v23.16b, v23.16b, v22.16b -- ushr v3.4s, v3.4s, #10 -- xtn2 v24.8h, v3.4s -- and v24.16b, v24.16b, v22.16b -- ushr v3.4s, v3.4s, #10 -- xtn2 v25.8h, v3.4s -- and v25.16b, v25.16b, v22.16b -- -- st3 { v23.8h, v24.8h, v25.8h }, [x0], #48 -- -- // load the second half of the block -> 64 bytes into registers v4-v7 -- ld1 { v4.4s, v5.4s, v6.4s, v7.4s }, [x13], #64 -- -- // process v4 and v5 -- xtn v16.4h, v4.4s -- ushr v4.4s, v4.4s, #10 -- xtn v17.4h, v4.4s -- ushr v4.4s, v4.4s, #10 -- xtn v18.4h, v4.4s -- -- xtn2 v16.8h, v5.4s -- and v16.16b, v16.16b, v22.16b -- ushr v5.4s, v5.4s, #10 -- xtn2 v17.8h, v5.4s -- and v17.16b, v17.16b, v22.16b -- ushr v5.4s, v5.4s, #10 -- xtn2 v18.8h, v5.4s -- and v18.16b, v18.16b, v22.16b -- -- st3 { v16.8h, v17.8h, v18.8h }, [x0], #48 -- -- // v6 and v7 -- xtn v23.4h, v6.4s -- ushr v6.4s, v6.4s, #10 -- xtn v24.4h, v6.4s -- ushr v6.4s, v6.4s, #10 -- xtn v25.4h, v6.4s -- -- xtn2 v23.8h, v7.4s -- and v23.16b, v23.16b, v22.16b -- ushr v7.4s, v7.4s, #10 -- xtn2 v24.8h, v7.4s -- and v24.16b, v24.16b, v22.16b -- ushr v7.4s, v7.4s, #10 -- xtn2 v25.8h, v7.4s -- and v25.16b, v25.16b, v22.16b -- -- st3 { v23.8h, v24.8h, v25.8h }, [x0], #48 -- -- add x13, x13, x5 // row src += slice_inc -- add w14, w14, #1 -- b block_loop_y16 --block_loop_y16_fin: -- -- -- -- -- add x2, x2, #128 // src += stride1 (start of the next row) -- add x0, x0, w20, sxtw // subtract the bytes we copied too much from dst -- add w12, w12, #1 -- b row_loop_y16 --row_loop_y16_fin: -- -- // check whether we have incomplete blocks at the end of every row -- // in that case decrease row block count by one -- // change height back to it's original value (meaning increase it by 1) -- // and jump back to another iteration of row_loop_y16 -- -- cmp w23, #1 -- beq row_loop_y16_fin2 // don't continue here if we already processed the last row -- add w6, w6, #1 // increase height to the original value -- sub w9, w9, w22 // block count - 1 or 0, depending on the remaining bytes count -- mov w23, #1 -- b row_loop_y16 --row_loop_y16_fin2: -- -- sub x0, x0, w20, sxtw // with the last row we didn't actually move the dst ptr to far ahead, therefore readd the diference -- -- // now we've got to handle the last block in the last row -- eor w12, w12, w12 // w12 = 0 = counter --integer_loop_y16: -- cmp w12, w10 -- bge integer_loop_y16_fin -- ldr w14, [x13], #4 -- and w15, w14, #0x3ff -- strh w15, [x0], #2 -- lsr w14, w14, #10 -- and w15, w14, #0x3ff -- strh w15, [x0], #2 -- lsr w14, w14, #10 -- and w15, w14, #0x3ff -- strh w15, [x0], #2 -- add w12, w12, #1 -- b integer_loop_y16 --integer_loop_y16_fin: -- --final_values_y16: -- // remaining point count = w11 -- ldr w14, [x13], #4 -- cmp w11, #0 -- beq final_values_y16_fin -- and w15, w14, #0x3ff -- strh w15, [x0], #2 -- cmp w11, #1 -- beq final_values_y16_fin -- lsr w14, w14, #10 -- and w15, w14, #0x3ff -- strh w15, [x0], #2 --final_values_y16_fin: -- -- ldp x23, x24, [sp, #32] -- ldp x21, x22, [sp, #16] -- ldp x19, x20, [sp], #48 -- ret --endfunc -- - //void ff_rpi_sand30_lines_to_planar_c16( - // uint8_t * dst_u, // [x0] - // unsigned int dst_stride_u, // [w1] == _w*2 -@@ -674,3 +452,330 @@ endfunc - // unsigned int _w, - // unsigned int h); - -+// void ff_rpi_sand30_lines_to_planar_y8( -+// uint8_t * dest, : x0 -+// unsigned int dst_stride, : w1 -+// const uint8_t * src, : x2 -+// unsigned int src_stride1, : w3, always 128 -+// unsigned int src_stride2, : w4 -+// unsigned int _x, : w5 -+// unsigned int y, : w6 -+// unsigned int _w, : w7 -+// unsigned int h); : [sp, #0] -+// -+// Assumes that we are starting on a stripe boundary and that overreading -+// within the stripe is OK. However it does respect the dest size for wri -+ -+function ff_rpi_sand30_lines_to_planar_y16, export=1 -+ lsl w4, w4, #7 -+ sub w4, w4, #64 -+ sub w1, w1, w7, lsl #1 -+ uxtw x6, w6 -+ add x8, x2, x6, lsl #7 -+ ldr w6, [sp, #0] -+ -+10: -+ mov x2, x8 -+ mov w5, w7 -+1: -+ ld1 {v0.4s, v1.4s, v2.4s, v3.4s}, [x2], #64 -+ ld1 {v4.4s, v5.4s, v6.4s, v7.4s}, [x2], x4 -+ -+ subs w5, w5, #96 -+ -+ // v0, v1 -+ -+ shrn v18.4h, v0.4s, #14 -+ xtn v16.4h, v0.4s -+ shrn v17.4h, v0.4s, #10 -+ -+ shrn2 v18.8h, v1.4s, #14 -+ xtn2 v16.8h, v1.4s -+ shrn2 v17.8h, v1.4s, #10 -+ -+ ushr v18.8h, v18.8h, #6 -+ bic v16.8h, #0xfc, lsl #8 -+ bic v17.8h, #0xfc, lsl #8 -+ -+ // v2, v3 -+ -+ shrn v21.4h, v2.4s, #14 -+ xtn v19.4h, v2.4s -+ shrn v20.4h, v2.4s, #10 -+ -+ shrn2 v21.8h, v3.4s, #14 -+ xtn2 v19.8h, v3.4s -+ shrn2 v20.8h, v3.4s, #10 -+ -+ ushr v21.8h, v21.8h, #6 -+ bic v19.8h, #0xfc, lsl #8 -+ bic v20.8h, #0xfc, lsl #8 -+ -+ // v4, v5 -+ -+ shrn v24.4h, v4.4s, #14 -+ xtn v22.4h, v4.4s -+ shrn v23.4h, v4.4s, #10 -+ -+ shrn2 v24.8h, v5.4s, #14 -+ xtn2 v22.8h, v5.4s -+ shrn2 v23.8h, v5.4s, #10 -+ -+ ushr v24.8h, v24.8h, #6 -+ bic v22.8h, #0xfc, lsl #8 -+ bic v23.8h, #0xfc, lsl #8 -+ -+ // v6, v7 -+ -+ shrn v27.4h, v6.4s, #14 -+ xtn v25.4h, v6.4s -+ shrn v26.4h, v6.4s, #10 -+ -+ shrn2 v27.8h, v7.4s, #14 -+ xtn2 v25.8h, v7.4s -+ shrn2 v26.8h, v7.4s, #10 -+ -+ ushr v27.8h, v27.8h, #6 -+ bic v25.8h, #0xfc, lsl #8 -+ bic v26.8h, #0xfc, lsl #8 -+ -+ blt 2f -+ -+ st3 {v16.8h, v17.8h, v18.8h}, [x0], #48 -+ st3 {v19.8h, v20.8h, v21.8h}, [x0], #48 -+ st3 {v22.8h, v23.8h, v24.8h}, [x0], #48 -+ st3 {v25.8h, v26.8h, v27.8h}, [x0], #48 -+ -+ bne 1b -+ -+11: -+ subs w6, w6, #1 -+ add x0, x0, w1, uxtw -+ add x8, x8, #128 -+ bne 10b -+ -+ ret -+ -+// Partial final write -+2: -+ cmp w5, #48-96 -+ blt 1f -+ st3 {v16.8h, v17.8h, v18.8h}, [x0], #48 -+ st3 {v19.8h, v20.8h, v21.8h}, [x0], #48 -+ beq 11b -+ mov v16.16b, v22.16b -+ mov v17.16b, v23.16b -+ sub w5, w5, #48 -+ mov v18.16b, v24.16b -+ mov v19.16b, v25.16b -+ mov v20.16b, v26.16b -+ mov v21.16b, v27.16b -+1: -+ cmp w5, #24-96 -+ blt 1f -+ st3 {v16.8h, v17.8h, v18.8h}, [x0], #48 -+ beq 11b -+ mov v16.16b, v19.16b -+ mov v17.16b, v20.16b -+ sub w5, w5, #24 -+ mov v18.16b, v21.16b -+1: -+ cmp w5, #12-96 -+ blt 1f -+ st3 {v16.4h, v17.4h, v18.4h}, [x0], #24 -+ beq 11b -+ mov v16.2d[0], v16.2d[1] -+ sub w5, w5, #12 -+ mov v17.2d[0], v17.2d[1] -+ mov v18.2d[0], v18.2d[1] -+1: -+ cmp w5, #6-96 -+ blt 1f -+ st3 {v16.h, v17.h, v18.h}[0], [x0], #6 -+ st3 {v16.h, v17.h, v18.h}[1], [x0], #6 -+ beq 11b -+ mov v16.2s[0], v16.2s[1] -+ sub w5, w5, #6 -+ mov v17.2s[0], v17.2s[1] -+ mov v18.2s[0], v18.2s[1] -+1: -+ cmp w5, #3-96 -+ blt 1f -+ st3 {v16.h, v17.h, v18.h}[0], [x0], #6 -+ beq 11b -+ mov v16.4h[0], v16.4h[1] -+ sub w5, w5, #3 -+ mov v17.4h[0], v17.4h[1] -+1: -+ cmp w5, #2-96 -+ blt 1f -+ st2 {v16.h, v17.h}[0], [x0], #4 -+ b 11b -+1: -+ st1 {v16.h}[0], [x0], #2 -+ b 11b -+ -+endfunc -+ -+// void ff_rpi_sand30_lines_to_planar_y8( -+// uint8_t * dest, : x0 -+// unsigned int dst_stride, : w1 -+// const uint8_t * src, : x2 -+// unsigned int src_stride1, : w3, always 128 -+// unsigned int src_stride2, : w4 -+// unsigned int _x, : w5 -+// unsigned int y, : w6 -+// unsigned int _w, : w7 -+// unsigned int h); : [sp, #0] -+// -+// Assumes that we are starting on a stripe boundary and that overreading -+// within the stripe is OK. However it does respect the dest size for wri -+ -+function ff_rpi_sand30_lines_to_planar_y8, export=1 -+ lsl w4, w4, #7 -+ sub w4, w4, #64 -+ sub w1, w1, w7 -+ uxtw x6, w6 -+ add x8, x2, x6, lsl #7 -+ ldr w6, [sp, #0] -+ -+10: -+ mov x2, x8 -+ mov w5, w7 -+1: -+ ld1 {v0.4s, v1.4s, v2.4s, v3.4s}, [x2], #64 -+ ld1 {v4.4s, v5.4s, v6.4s, v7.4s}, [x2], x4 -+ -+ subs w5, w5, #96 -+ -+ // v0, v1 -+ -+ shrn v18.4h, v0.4s, #16 -+ xtn v16.4h, v0.4s -+ shrn v17.4h, v0.4s, #12 -+ -+ shrn2 v18.8h, v1.4s, #16 -+ xtn2 v16.8h, v1.4s -+ shrn2 v17.8h, v1.4s, #12 -+ -+ shrn v18.8b, v18.8h, #6 -+ shrn v16.8b, v16.8h, #2 -+ xtn v17.8b, v17.8h -+ -+ // v2, v3 -+ -+ shrn v21.4h, v2.4s, #16 -+ xtn v19.4h, v2.4s -+ shrn v20.4h, v2.4s, #12 -+ -+ shrn2 v21.8h, v3.4s, #16 -+ xtn2 v19.8h, v3.4s -+ shrn2 v20.8h, v3.4s, #12 -+ -+ shrn2 v18.16b, v21.8h, #6 -+ shrn2 v16.16b, v19.8h, #2 -+ xtn2 v17.16b, v20.8h -+ -+ // v4, v5 -+ -+ shrn v24.4h, v4.4s, #16 -+ xtn v22.4h, v4.4s -+ shrn v23.4h, v4.4s, #12 -+ -+ shrn2 v24.8h, v5.4s, #16 -+ xtn2 v22.8h, v5.4s -+ shrn2 v23.8h, v5.4s, #12 -+ -+ shrn v21.8b, v24.8h, #6 -+ shrn v19.8b, v22.8h, #2 -+ xtn v20.8b, v23.8h -+ -+ // v6, v7 -+ -+ shrn v27.4h, v6.4s, #16 -+ xtn v25.4h, v6.4s -+ shrn v26.4h, v6.4s, #12 -+ -+ shrn2 v27.8h, v7.4s, #16 -+ xtn2 v25.8h, v7.4s -+ shrn2 v26.8h, v7.4s, #12 -+ -+ shrn2 v21.16b, v27.8h, #6 -+ shrn2 v19.16b, v25.8h, #2 -+ xtn2 v20.16b, v26.8h -+ -+ blt 2f -+ -+ st3 {v16.16b, v17.16b, v18.16b}, [x0], #48 -+ st3 {v19.16b, v20.16b, v21.16b}, [x0], #48 -+ -+ bne 1b -+ -+11: -+ subs w6, w6, #1 -+ add x0, x0, w1, uxtw -+ add x8, x8, #128 -+ bne 10b -+ -+ ret -+ -+// Partial final write -+2: -+ cmp w5, #48-96 -+ blt 1f -+ st3 {v16.16b, v17.16b, v18.16b}, [x0], #48 -+ beq 11b -+ mov v16.16b, v22.16b -+ mov v17.16b, v23.16b -+ sub w5, w5, #48 -+ mov v18.16b, v24.16b -+1: -+ cmp w5, #24-96 -+ blt 1f -+ st3 {v16.8b, v17.8b, v18.8b}, [x0], #24 -+ beq 11b -+ mov v16.2d[0], v16.2d[1] -+ sub w5, w5, #24 -+ mov v17.2d[0], v17.2d[1] -+ mov v18.2d[0], v18.2d[1] -+1: -+ cmp w5, #12-96 -+ blt 1f -+ st3 {v16.b, v17.b, v18.b}[0], [x0], #3 -+ st3 {v16.b, v17.b, v18.b}[1], [x0], #3 -+ st3 {v16.b, v17.b, v18.b}[2], [x0], #3 -+ st3 {v16.b, v17.b, v18.b}[3], [x0], #3 -+ beq 11b -+ mov v16.2s[0], v16.2s[1] -+ sub w5, w5, #12 -+ mov v17.2s[0], v17.2s[1] -+ mov v18.2s[0], v18.2s[1] -+1: -+ cmp w5, #6-96 -+ blt 1f -+ st3 {v16.b, v17.b, v18.b}[0], [x0], #3 -+ st3 {v16.b, v17.b, v18.b}[1], [x0], #3 -+ beq 11b -+ mov v16.4h[0], v16.4h[1] -+ sub w5, w5, #6 -+ mov v17.4h[0], v17.4h[1] -+ mov v18.4h[0], v18.4h[1] -+1: -+ cmp w5, #3-96 -+ blt 1f -+ st3 {v16.b, v17.b, v18.b}[0], [x0], #3 -+ beq 11b -+ mov v16.8b[0], v16.8b[1] -+ sub w5, w5, #3 -+ mov v17.8b[0], v17.8b[1] -+1: -+ cmp w5, #2-96 -+ blt 1f -+ st2 {v16.b, v17.b}[0], [x0], #2 -+ b 11b -+1: -+ st1 {v16.b}[0], [x0], #1 -+ b 11b -+ -+endfunc -+ -diff --git a/libavutil/aarch64/rpi_sand_neon.h b/libavutil/aarch64/rpi_sand_neon.h -index b3aa481ea4..2a56135bc3 100644 ---- a/libavutil/aarch64/rpi_sand_neon.h -+++ b/libavutil/aarch64/rpi_sand_neon.h -@@ -49,6 +49,10 @@ void ff_rpi_sand30_lines_to_planar_c16(uint8_t * dst_u, unsigned int dst_stride_ - uint8_t * dst_v, unsigned int dst_stride_v, const uint8_t * src, unsigned int stride1, - unsigned int stride2, unsigned int _x, unsigned int y, unsigned int _w, unsigned int h); - -+void ff_rpi_sand30_lines_to_planar_y8(uint8_t * dest, unsigned int dst_stride, -+ const uint8_t * src, unsigned int src_stride1, unsigned int src_stride2, -+ unsigned int _x, unsigned int y, unsigned int _w, unsigned int h); -+ - #ifdef __cplusplus - } - #endif -diff --git a/libavutil/arm/rpi_sand_neon.S b/libavutil/arm/rpi_sand_neon.S -index 80890fe985..60e697f681 100644 ---- a/libavutil/arm/rpi_sand_neon.S -+++ b/libavutil/arm/rpi_sand_neon.S -@@ -360,7 +360,6 @@ function ff_rpi_sand30_lines_to_planar_y16, export=1 - ldr r6, [sp, #36] - ldr r7, [sp, #32] @ y - mov r12, #48 -- vmov.u16 q15, #0x3ff - sub r3, #1 - lsl r3, #7 - sub r1, r1, r6, lsl #1 -@@ -376,37 +375,33 @@ function ff_rpi_sand30_lines_to_planar_y16, export=1 - vldm r2!, {q10-q13} - add lr, #64 - -- vshr.u32 q14, q10, #20 @ Cannot vshrn.u32 #20! -+ vshrn.u32 d4 , q10, #14 @ Cannot vshrn.u32 #20! - ands lr, #127 - vshrn.u32 d2, q10, #10 - vmovn.u32 d0, q10 -- vmovn.u32 d4, q14 - -- vshr.u32 q14, q11, #20 -+ vshrn.u32 d5, q11, #14 - it eq - addeq r2, r3 - vshrn.u32 d3, q11, #10 - vmovn.u32 d1, q11 -- vmovn.u32 d5, q14 - - subs r5, #48 -- vand q0, q15 -- vand q1, q15 -- vand q2, q15 -+ vshr.u16 q2, #6 -+ vbic.u16 q0, #0xfc00 -+ vbic.u16 q1, #0xfc00 - -- vshr.u32 q14, q12, #20 -+ vshrn.u32 d20, q12, #14 - vshrn.u32 d18, q12, #10 - vmovn.u32 d16, q12 -- vmovn.u32 d20, q14 - -- vshr.u32 q14, q13, #20 -+ vshrn.u32 d21, q13, #14 - vshrn.u32 d19, q13, #10 - vmovn.u32 d17, q13 -- vmovn.u32 d21, q14 - -- vand q8, q15 -- vand q9, q15 -- vand q10, q15 -+ vshr.u16 q10, #6 -+ vbic.u16 q8, #0xfc00 -+ vbic.u16 q9 , #0xfc00 - blt 2f - - vst3.16 {d0, d2, d4}, [r0], r12 -@@ -499,7 +494,6 @@ function ff_rpi_sand30_lines_to_planar_c16, export=1 - ldr r7, [sp, #48] - ldr r9, [sp, #52] - mov r12, #48 -- vmov.u16 q15, #0x3ff - sub r8, #1 - lsl r8, #7 - add r5, r5, r7, lsl #7 -@@ -515,48 +509,44 @@ function ff_rpi_sand30_lines_to_planar_c16, export=1 - add lr, #64 - - @ N.B. unpack [0,1,2] -> (reg order) 1, 0, 2 -- vshr.u32 q14, q0, #20 -- vshrn.u32 d16, q0, #10 -+ vshrn.u32 d20, q0, #14 - vmovn.u32 d18, q0 -+ vshrn.u32 d0, q0, #10 - ands lr, #127 -- vmovn.u32 d20, q14 - -- vshr.u32 q14, q1, #20 -- vshrn.u32 d17, q1, #10 -+ vshrn.u32 d21, q1, #14 - vmovn.u32 d19, q1 -- vmovn.u32 d21, q14 -+ vshrn.u32 d1, q1, #10 - -- vshr.u32 q14, q2, #20 - vshrn.u32 d22, q2, #10 -- vmovn.u32 d24, q2 -- vmovn.u32 d26, q14 -+ vmovn.u32 d2, q2 -+ vshrn.u32 d4, q2, #14 - -- vshr.u32 q14, q3, #20 -- vshrn.u32 d23, q3, #10 -- vmovn.u32 d25, q3 - add r10, r0, #24 -- vmovn.u32 d27, q14 -+ vshrn.u32 d23, q3, #10 -+ vmovn.u32 d3, q3 -+ vshrn.u32 d5, q3, #14 - - it eq - addeq r4, r8 -- vuzp.16 q8, q11 -- vuzp.16 q9, q12 -- vuzp.16 q10, q13 -+ vuzp.16 q0, q11 -+ vuzp.16 q9, q1 -+ vuzp.16 q10, q2 - -- @ q8 V0, V3,.. -> q0 -+ @ q0 V0, V3,.. - @ q9 U0, U3... - @ q10 U1, U4... - @ q11 U2, U5,.. -- @ q12 V1, V4,.. -> q1 -- @ q13 V2, V5,.. -> q2 -+ @ q1 V1, V4, -+ @ q2 V2, V5,.. - - subs r6, #24 -- vand q11, q15 -- vand q9, q15 -- vand q10, q15 -- vand q0, q8, q15 -- vand q1, q12, q15 -- vand q2, q13, q15 -+ vbic.u16 q11, #0xfc00 -+ vbic.u16 q9, #0xfc00 -+ vshr.u16 q10, #6 -+ vshr.u16 q2, #6 -+ vbic.u16 q0, #0xfc00 -+ vbic.u16 q1, #0xfc00 - - blt 2f - -@@ -765,4 +755,171 @@ function ff_rpi_sand30_lines_to_planar_p010, export=1 - endfunc - - -+@ void ff_rpi_sand30_lines_to_planar_y8( -+@ uint8_t * dest, // [r0] -+@ unsigned int dst_stride, // [r1] -+@ const uint8_t * src, // [r2] -+@ unsigned int src_stride1, // [r3] Ignored - assumed 128 -+@ unsigned int src_stride2, // [sp, #0] -> r3 -+@ unsigned int _x, // [sp, #4] Ignored - 0 -+@ unsigned int y, // [sp, #8] (r7 in prefix) -+@ unsigned int _w, // [sp, #12] -> r6 (cur r5) -+@ unsigned int h); // [sp, #16] -> r7 -+@ -+@ Assumes that we are starting on a stripe boundary and that overreading -+@ within the stripe is OK. However it does respect the dest size for wri -+ -+function ff_rpi_sand30_lines_to_planar_y8, export=1 -+ push {r4-r8, lr} @ +24 -+ ldr r3, [sp, #24] -+ ldr r6, [sp, #36] -+ ldr r7, [sp, #32] @ y -+ mov r12, #48 -+ lsl r3, #7 -+ sub r1, r1, r6 -+ add r8, r2, r7, lsl #7 -+ ldr r7, [sp, #40] -+ -+10: -+ mov r2, r8 -+ add r4, r0, #24 -+ mov r5, r6 -+1: -+ vldm r2, {q8-q15} -+ -+ subs r5, #96 -+ -+ vmovn.u32 d0, q8 -+ vshrn.u32 d2, q8, #12 -+ vshrn.u32 d4, q8, #16 @ Cannot vshrn.u32 #20! -+ -+ add r2, r3 -+ -+ vmovn.u32 d1, q9 -+ vshrn.u32 d3, q9, #12 -+ vshrn.u32 d5, q9, #16 -+ -+ pld [r2, #0] -+ -+ vshrn.u16 d0, q0, #2 -+ vmovn.u16 d1, q1 -+ vshrn.u16 d2, q2, #6 -+ -+ vmovn.u32 d16, q10 -+ vshrn.u32 d18, q10, #12 -+ vshrn.u32 d20, q10, #16 -+ -+ vmovn.u32 d17, q11 -+ vshrn.u32 d19, q11, #12 -+ vshrn.u32 d21, q11, #16 -+ -+ pld [r2, #64] -+ -+ vshrn.u16 d4, q8, #2 -+ vmovn.u16 d5, q9 -+ vshrn.u16 d6, q10, #6 -+ -+ vmovn.u32 d16, q12 -+ vshrn.u32 d18, q12, #12 -+ vshrn.u32 d20, q12, #16 -+ -+ vmovn.u32 d17, q13 -+ vshrn.u32 d19, q13, #12 -+ vshrn.u32 d21, q13, #16 -+ -+ vshrn.u16 d16, q8, #2 -+ vmovn.u16 d17, q9 -+ vshrn.u16 d18, q10, #6 -+ -+ vmovn.u32 d20, q14 -+ vshrn.u32 d22, q14, #12 -+ vshrn.u32 d24, q14, #16 -+ -+ vmovn.u32 d21, q15 -+ vshrn.u32 d23, q15, #12 -+ vshrn.u32 d25, q15, #16 -+ -+ vshrn.u16 d20, q10, #2 -+ vmovn.u16 d21, q11 -+ vshrn.u16 d22, q12, #6 -+ -+ blt 2f -+ -+ vst3.8 {d0, d1, d2}, [r0], r12 -+ vst3.8 {d4, d5, d6}, [r4], r12 -+ vst3.8 {d16, d17, d18}, [r0], r12 -+ vst3.8 {d20, d21, d22}, [r4], r12 -+ -+ bne 1b -+ -+11: -+ subs r7, #1 -+ add r0, r1 -+ add r8, #128 -+ bne 10b -+ -+ pop {r4-r8, pc} -+ -+@ Partial final write -+2: -+ cmp r5, #48-96 -+ blt 1f -+ vst3.8 {d0, d1, d2}, [r0], r12 -+ vst3.8 {d4, d5, d6}, [r4], r12 -+ beq 11b -+ vmov q0, q8 -+ vmov q2, q10 -+ sub r5, #48 -+ vmov d2, d18 -+ vmov d6, d22 -+1: -+ cmp r5, #24-96 -+ blt 1f -+ vst3.8 {d0, d1, d2}, [r0]! -+ beq 11b -+ vmov q0, q2 -+ sub r5, #24 -+ vmov d2, d6 -+1: -+ cmp r5, #12-96 -+ blt 1f -+ vst3.8 {d0[0], d1[0], d2[0]}, [r0]! -+ vst3.8 {d0[1], d1[1], d2[1]}, [r0]! -+ vst3.8 {d0[2], d1[2], d2[2]}, [r0]! -+ vst3.8 {d0[3], d1[3], d2[3]}, [r0]! -+ beq 11b -+ vmov s0, s1 -+ sub r5, #12 -+ vmov s2, s3 -+ vmov s4, s5 -+1: -+ cmp r5, #6-96 -+ blt 1f -+ vst3.8 {d0[0], d1[0], d2[0]}, [r0]! -+ vst3.8 {d0[1], d1[1], d2[1]}, [r0]! -+ add r0, #12 -+ beq 11b -+ vshr.u32 d0, #16 -+ sub r5, #6 -+ vshr.u32 d1, #16 -+ vshr.u32 d2, #16 -+1: -+ cmp r5, #3-96 -+ blt 1f -+ vst3.8 {d0[0], d1[0], d2[0]}, [r0]! -+ beq 11b -+ sub r5, #3 -+ vshr.u32 d0, #8 -+ vshr.u32 d1, #8 -+1: -+ cmp r5, #2-96 -+ blt 1f -+ vst2.8 {d0[0], d1[0]}, [r0]! -+ b 11b -+1: -+ vst1.8 {d0[0]}, [r0]! -+ b 11b -+ -+endfunc -+ - -diff --git a/libavutil/arm/rpi_sand_neon.h b/libavutil/arm/rpi_sand_neon.h -index 447f367bea..d457c10870 100644 ---- a/libavutil/arm/rpi_sand_neon.h -+++ b/libavutil/arm/rpi_sand_neon.h -@@ -95,5 +95,16 @@ void ff_rpi_sand30_lines_to_planar_p010( - unsigned int _w, // [sp, #12] -> r6 (cur r5) - unsigned int h); // [sp, #16] -> r7 - -+void ff_rpi_sand30_lines_to_planar_y8( -+ uint8_t * dest, // [r0] -+ unsigned int dst_stride, // [r1] -+ const uint8_t * src, // [r2] -+ unsigned int src_stride1, // [r3] Ignored - assumed 128 -+ unsigned int src_stride2, // [sp, #0] -> r3 -+ unsigned int _x, // [sp, #4] Ignored - 0 -+ unsigned int y, // [sp, #8] (r7 in prefix) -+ unsigned int _w, // [sp, #12] -> r6 (cur r5) -+ unsigned int h); // [sp, #16] -> r7 -+ - #endif // AVUTIL_ARM_SAND_NEON_H - -diff --git a/libavutil/rpi_sand_fns.c b/libavutil/rpi_sand_fns.c -index 256c3d532f..b6071e2928 100644 ---- a/libavutil/rpi_sand_fns.c -+++ b/libavutil/rpi_sand_fns.c -@@ -247,7 +247,7 @@ void av_rpi_sand30_to_planar_y8(uint8_t * dst, const unsigned int dst_stride, - const uint8_t * p0 = src + (x0 & mask) + y * stride1 + (x0 & ~mask) * stride2; - const unsigned int slice_inc = ((stride2 - 1) * stride1) >> 2; // RHS of a stripe to LHS of next in words - --#if HAVE_SAND_ASM && 0 -+#if HAVE_SAND_ASM - if (_x == 0) { - ff_rpi_sand30_lines_to_planar_y8(dst, dst_stride, src, stride1, stride2, _x, y, _w, h); - return; - -From 24c3eef4487a36d5189ecd934b65a7c6a0b53d03 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 7 Jun 2022 14:46:12 +0000 -Subject: [PATCH 054/151] v4l2_m2m_enc: Add the ability to encode DRM_PRIME - frames - ---- - libavcodec/v4l2_buffers.c | 100 +++++++++++--- - libavcodec/v4l2_buffers.h | 20 ++- - libavcodec/v4l2_context.c | 212 +++++++++++++++++++++++++--- - libavcodec/v4l2_context.h | 15 +- - libavcodec/v4l2_m2m.c | 37 +++-- - libavcodec/v4l2_m2m.h | 3 + - libavcodec/v4l2_m2m_dec.c | 171 ++++++----------------- - libavcodec/v4l2_m2m_enc.c | 283 +++++++++++++++++++++++++++++++++++++- - 8 files changed, 643 insertions(+), 198 deletions(-) - -diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c -index 8c4f18dbed..9ef2f40e39 100644 ---- a/libavcodec/v4l2_buffers.c -+++ b/libavcodec/v4l2_buffers.c -@@ -29,6 +29,8 @@ - #include - #include - #include "libavcodec/avcodec.h" -+#include "libavcodec/internal.h" -+#include "libavutil/avassert.h" - #include "libavutil/pixdesc.h" - #include "libavutil/hwcontext.h" - #include "v4l2_context.h" -@@ -60,27 +62,39 @@ static inline AVRational v4l2_get_timebase(const V4L2Buffer * const avbuf) - return tb.num && tb.den ? tb : v4l2_timebase; - } - -+static inline struct timeval tv_from_int(const int64_t t) -+{ -+ return (struct timeval){ -+ .tv_usec = t % USEC_PER_SEC, -+ .tv_sec = t / USEC_PER_SEC -+ }; -+} -+ -+static inline int64_t int_from_tv(const struct timeval t) -+{ -+ return (int64_t)t.tv_sec * USEC_PER_SEC + t.tv_usec; -+} -+ - static inline void v4l2_set_pts(V4L2Buffer * const out, const int64_t pts) - { - /* convert pts to v4l2 timebase */ - const int64_t v4l2_pts = -- out->context->no_pts_rescale ? pts : - pts == AV_NOPTS_VALUE ? 0 : - av_rescale_q(pts, v4l2_get_timebase(out), v4l2_timebase); -- out->buf.timestamp.tv_usec = v4l2_pts % USEC_PER_SEC; -- out->buf.timestamp.tv_sec = v4l2_pts / USEC_PER_SEC; -+ out->buf.timestamp = tv_from_int(v4l2_pts); - } - - static inline int64_t v4l2_get_pts(const V4L2Buffer * const avbuf) - { -+ const int64_t v4l2_pts = int_from_tv(avbuf->buf.timestamp); -+ return v4l2_pts != 0 ? v4l2_pts : AV_NOPTS_VALUE; -+#if 0 - /* convert pts back to encoder timebase */ -- const int64_t v4l2_pts = (int64_t)avbuf->buf.timestamp.tv_sec * USEC_PER_SEC + -- avbuf->buf.timestamp.tv_usec; -- - return - avbuf->context->no_pts_rescale ? v4l2_pts : - v4l2_pts == 0 ? AV_NOPTS_VALUE : - av_rescale_q(v4l2_pts, v4l2_timebase, v4l2_get_timebase(avbuf)); -+#endif - } - - static void set_buf_length(V4L2Buffer *out, unsigned int plane, uint32_t bytesused, uint32_t length) -@@ -435,7 +449,7 @@ static void v4l2_free_bufref(void *opaque, uint8_t *data) - - ff_mutex_lock(&ctx->lock); - -- avbuf->status = V4L2BUF_AVAILABLE; -+ ff_v4l2_buffer_set_avail(avbuf); - - if (s->draining && V4L2_TYPE_IS_OUTPUT(ctx->type)) { - av_log(logger(avbuf), AV_LOG_DEBUG, "%s: Buffer avail\n", ctx->name); -@@ -599,6 +613,38 @@ static int is_chroma(const AVPixFmtDescriptor *desc, int i, int num_planes) - return i != 0 && !(i == num_planes - 1 && (desc->flags & AV_PIX_FMT_FLAG_ALPHA)); - } - -+static int v4l2_buffer_primeframe_to_buf(const AVFrame *frame, V4L2Buffer *out) -+{ -+ const AVDRMFrameDescriptor *const src = (const AVDRMFrameDescriptor *)frame->data[0]; -+ -+ if (frame->format != AV_PIX_FMT_DRM_PRIME || !src) -+ return AVERROR(EINVAL); -+ -+ av_assert0(out->buf.memory == V4L2_MEMORY_DMABUF); -+ -+ if (V4L2_TYPE_IS_MULTIPLANAR(out->buf.type)) { -+ // Only currently cope with single buffer types -+ if (out->buf.length != 1) -+ return AVERROR_PATCHWELCOME; -+ if (src->nb_objects != 1) -+ return AVERROR(EINVAL); -+ -+ out->planes[0].m.fd = src->objects[0].fd; -+ } -+ else { -+ if (src->nb_objects != 1) -+ return AVERROR(EINVAL); -+ -+ out->buf.m.fd = src->objects[0].fd; -+ } -+ -+ // No need to copy src AVDescriptor and if we did then we may confuse -+ // fd close on free -+ out->ref_buf = av_buffer_ref(frame->buf[0]); -+ -+ return 0; -+} -+ - static int v4l2_buffer_swframe_to_buf(const AVFrame *frame, V4L2Buffer *out) - { - int i; -@@ -678,7 +724,7 @@ static int v4l2_buffer_swframe_to_buf(const AVFrame *frame, V4L2Buffer *out) - * - ******************************************************************************/ - --int ff_v4l2_buffer_avframe_to_buf(const AVFrame *frame, V4L2Buffer *out) -+int ff_v4l2_buffer_avframe_to_buf(const AVFrame *frame, V4L2Buffer *out, const int64_t track_ts) - { - out->buf.flags = frame->key_frame ? - (out->buf.flags | V4L2_BUF_FLAG_KEYFRAME) : -@@ -688,10 +734,15 @@ int ff_v4l2_buffer_avframe_to_buf(const AVFrame *frame, V4L2Buffer *out) - v4l2_set_color(out, frame->color_primaries, frame->colorspace, frame->color_trc); - v4l2_set_color_range(out, frame->color_range); - // PTS & interlace are buffer vars -- v4l2_set_pts(out, frame->pts); -+ if (track_ts) -+ out->buf.timestamp = tv_from_int(track_ts); -+ else -+ v4l2_set_pts(out, frame->pts); - v4l2_set_interlace(out, frame->interlaced_frame, frame->top_field_first); - -- return v4l2_buffer_swframe_to_buf(frame, out); -+ return frame->format == AV_PIX_FMT_DRM_PRIME ? -+ v4l2_buffer_primeframe_to_buf(frame, out) : -+ v4l2_buffer_swframe_to_buf(frame, out); - } - - int ff_v4l2_buffer_buf_to_avframe(AVFrame *frame, V4L2Buffer *avbuf) -@@ -754,6 +805,7 @@ int ff_v4l2_buffer_buf_to_avpkt(AVPacket *pkt, V4L2Buffer *avbuf) - - pkt->size = V4L2_TYPE_IS_MULTIPLANAR(avbuf->buf.type) ? avbuf->buf.m.planes[0].bytesused : avbuf->buf.bytesused; - pkt->data = (uint8_t*)avbuf->plane_info[0].mm_addr + avbuf->planes[0].data_offset; -+ pkt->flags = 0; - - if (avbuf->buf.flags & V4L2_BUF_FLAG_KEYFRAME) - pkt->flags |= AV_PKT_FLAG_KEY; -@@ -768,8 +820,9 @@ int ff_v4l2_buffer_buf_to_avpkt(AVPacket *pkt, V4L2Buffer *avbuf) - return 0; - } - --int ff_v4l2_buffer_avpkt_to_buf_ext(const AVPacket *pkt, V4L2Buffer *out, -- const void *extdata, size_t extlen) -+int ff_v4l2_buffer_avpkt_to_buf_ext(const AVPacket * const pkt, V4L2Buffer * const out, -+ const void *extdata, size_t extlen, -+ const int64_t timestamp) - { - int ret; - -@@ -783,7 +836,10 @@ int ff_v4l2_buffer_avpkt_to_buf_ext(const AVPacket *pkt, V4L2Buffer *out, - if (ret && ret != AVERROR(ENOMEM)) - return ret; - -- v4l2_set_pts(out, pkt->pts); -+ if (timestamp) -+ out->buf.timestamp = tv_from_int(timestamp); -+ else -+ v4l2_set_pts(out, pkt->pts); - - out->buf.flags = (pkt->flags & AV_PKT_FLAG_KEY) != 0 ? - (out->buf.flags | V4L2_BUF_FLAG_KEYFRAME) : -@@ -794,7 +850,7 @@ int ff_v4l2_buffer_avpkt_to_buf_ext(const AVPacket *pkt, V4L2Buffer *out, - - int ff_v4l2_buffer_avpkt_to_buf(const AVPacket *pkt, V4L2Buffer *out) - { -- return ff_v4l2_buffer_avpkt_to_buf_ext(pkt, out, NULL, 0); -+ return ff_v4l2_buffer_avpkt_to_buf_ext(pkt, out, NULL, 0, 0); - } - - -@@ -814,13 +870,15 @@ static void v4l2_buffer_buffer_free(void *opaque, uint8_t *data) - close(avbuf->drm_frame.objects[i].fd); - } - -+ av_buffer_unref(&avbuf->ref_buf); -+ - ff_weak_link_unref(&avbuf->context_wl); - - av_free(avbuf); - } - - --int ff_v4l2_buffer_initialize(AVBufferRef ** pbufref, int index, V4L2Context *ctx) -+int ff_v4l2_buffer_initialize(AVBufferRef ** pbufref, int index, V4L2Context *ctx, enum v4l2_memory mem) - { - int ret, i; - V4L2Buffer * const avbuf = av_mallocz(sizeof(*avbuf)); -@@ -837,7 +895,7 @@ int ff_v4l2_buffer_initialize(AVBufferRef ** pbufref, int index, V4L2Context *ct - } - - avbuf->context = ctx; -- avbuf->buf.memory = V4L2_MEMORY_MMAP; -+ avbuf->buf.memory = mem; - avbuf->buf.type = ctx->type; - avbuf->buf.index = index; - -@@ -867,6 +925,8 @@ int ff_v4l2_buffer_initialize(AVBufferRef ** pbufref, int index, V4L2Context *ct - avbuf->num_planes = 1; - - for (i = 0; i < avbuf->num_planes; i++) { -+ const int want_mmap = avbuf->buf.memory == V4L2_MEMORY_MMAP && -+ (V4L2_TYPE_IS_OUTPUT(ctx->type) || !buf_to_m2mctx(avbuf)->output_drm); - - avbuf->plane_info[i].bytesperline = V4L2_TYPE_IS_MULTIPLANAR(ctx->type) ? - ctx->format.fmt.pix_mp.plane_fmt[i].bytesperline : -@@ -875,21 +935,17 @@ int ff_v4l2_buffer_initialize(AVBufferRef ** pbufref, int index, V4L2Context *ct - if (V4L2_TYPE_IS_MULTIPLANAR(ctx->type)) { - avbuf->plane_info[i].length = avbuf->buf.m.planes[i].length; - -- if ((V4L2_TYPE_IS_OUTPUT(ctx->type) && buf_to_m2mctx(avbuf)->output_drm) || -- !buf_to_m2mctx(avbuf)->output_drm) { -+ if (want_mmap) - avbuf->plane_info[i].mm_addr = mmap(NULL, avbuf->buf.m.planes[i].length, - PROT_READ | PROT_WRITE, MAP_SHARED, - buf_to_m2mctx(avbuf)->fd, avbuf->buf.m.planes[i].m.mem_offset); -- } - } else { - avbuf->plane_info[i].length = avbuf->buf.length; - -- if ((V4L2_TYPE_IS_OUTPUT(ctx->type) && buf_to_m2mctx(avbuf)->output_drm) || -- !buf_to_m2mctx(avbuf)->output_drm) { -+ if (want_mmap) - avbuf->plane_info[i].mm_addr = mmap(NULL, avbuf->buf.length, - PROT_READ | PROT_WRITE, MAP_SHARED, - buf_to_m2mctx(avbuf)->fd, avbuf->buf.m.offset); -- } - } - - if (avbuf->plane_info[i].mm_addr == MAP_FAILED) { -diff --git a/libavcodec/v4l2_buffers.h b/libavcodec/v4l2_buffers.h -index 3b7ca4d99e..1ac32c5989 100644 ---- a/libavcodec/v4l2_buffers.h -+++ b/libavcodec/v4l2_buffers.h -@@ -59,6 +59,10 @@ typedef struct V4L2Buffer { - - /* DRM descriptor */ - AVDRMFrameDescriptor drm_frame; -+ /* For DRM_PRIME encode - need to keep a ref to the source buffer till we -+ * are done -+ */ -+ AVBufferRef * ref_buf; - - /* keep track of the mmap address and mmap length */ - struct V4L2Plane_info { -@@ -110,8 +114,9 @@ int ff_v4l2_buffer_buf_to_avpkt(AVPacket *pkt, V4L2Buffer *buf); - */ - int ff_v4l2_buffer_avpkt_to_buf(const AVPacket *pkt, V4L2Buffer *out); - --int ff_v4l2_buffer_avpkt_to_buf_ext(const AVPacket *pkt, V4L2Buffer *out, -- const void *extdata, size_t extlen); -+int ff_v4l2_buffer_avpkt_to_buf_ext(const AVPacket * const pkt, V4L2Buffer * const out, -+ const void *extdata, size_t extlen, -+ const int64_t timestamp); - - /** - * Extracts the data from an AVFrame to a V4L2Buffer -@@ -121,7 +126,7 @@ int ff_v4l2_buffer_avpkt_to_buf_ext(const AVPacket *pkt, V4L2Buffer *out, - * - * @returns 0 in case of success, a negative AVERROR code otherwise - */ --int ff_v4l2_buffer_avframe_to_buf(const AVFrame *frame, V4L2Buffer *out); -+int ff_v4l2_buffer_avframe_to_buf(const AVFrame *frame, V4L2Buffer *out, const int64_t track_ts); - - /** - * Initializes a V4L2Buffer -@@ -131,7 +136,7 @@ int ff_v4l2_buffer_avframe_to_buf(const AVFrame *frame, V4L2Buffer *out); - * - * @returns 0 in case of success, a negative AVERROR code otherwise - */ --int ff_v4l2_buffer_initialize(AVBufferRef **avbuf, int index, struct V4L2Context *ctx); -+int ff_v4l2_buffer_initialize(AVBufferRef **avbuf, int index, struct V4L2Context *ctx, enum v4l2_memory mem); - - /** - * Enqueues a V4L2Buffer -@@ -142,5 +147,12 @@ int ff_v4l2_buffer_initialize(AVBufferRef **avbuf, int index, struct V4L2Context - */ - int ff_v4l2_buffer_enqueue(V4L2Buffer* avbuf); - -+static inline void -+ff_v4l2_buffer_set_avail(V4L2Buffer* const avbuf) -+{ -+ avbuf->status = V4L2BUF_AVAILABLE; -+ av_buffer_unref(&avbuf->ref_buf); -+} -+ - - #endif // AVCODEC_V4L2_BUFFERS_H -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index b3662aedaa..7a707d21fc 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -43,6 +43,160 @@ struct v4l2_format_update { - int update_avfmt; - }; - -+ -+static inline int64_t track_to_pts(AVCodecContext *avctx, unsigned int n) -+{ -+ return (int64_t)n; -+} -+ -+static inline unsigned int pts_to_track(AVCodecContext *avctx, const int64_t pts) -+{ -+ return (unsigned int)pts; -+} -+ -+// FFmpeg requires us to propagate a number of vars from the coded pkt into -+// the decoded frame. The only thing that tracks like that in V4L2 stateful -+// is timestamp. PTS maps to timestamp for this decode. FFmpeg makes no -+// guarantees about PTS being unique or specified for every frame so replace -+// the supplied PTS with a simple incrementing number and keep a circular -+// buffer of all the things we want preserved (including the original PTS) -+// indexed by the tracking no. -+static int64_t -+xlat_pts_pkt_in(AVCodecContext *const avctx, xlat_track_t *const x, const AVPacket *const avpkt) -+{ -+ int64_t track_pts; -+ -+ // Avoid 0 -+ if (++x->track_no == 0) -+ x->track_no = 1; -+ -+ track_pts = track_to_pts(avctx, x->track_no); -+ -+ av_log(avctx, AV_LOG_TRACE, "In pkt PTS=%" PRId64 ", DTS=%" PRId64 ", track=%" PRId64 ", n=%u\n", avpkt->pts, avpkt->dts, track_pts, x->track_no); -+ x->last_pkt_dts = avpkt->dts; -+ x->track_els[x->track_no % FF_V4L2_M2M_TRACK_SIZE] = (V4L2m2mTrackEl){ -+ .discard = 0, -+ .pending = 1, -+ .pkt_size = avpkt->size, -+ .pts = avpkt->pts, -+ .dts = avpkt->dts, -+ .reordered_opaque = avctx->reordered_opaque, -+ .pkt_pos = avpkt->pos, -+ .pkt_duration = avpkt->duration, -+ .track_pts = track_pts -+ }; -+ return track_pts; -+} -+ -+static int64_t -+xlat_pts_frame_in(AVCodecContext *const avctx, xlat_track_t *const x, const AVFrame *const frame) -+{ -+ int64_t track_pts; -+ -+ // Avoid 0 -+ if (++x->track_no == 0) -+ x->track_no = 1; -+ -+ track_pts = track_to_pts(avctx, x->track_no); -+ -+ av_log(avctx, AV_LOG_TRACE, "In frame PTS=%" PRId64 ", track=%" PRId64 ", n=%u\n", frame->pts, track_pts, x->track_no); -+ x->last_pkt_dts = frame->pkt_dts; -+ x->track_els[x->track_no % FF_V4L2_M2M_TRACK_SIZE] = (V4L2m2mTrackEl){ -+ .discard = 0, -+ .pending = 1, -+ .pkt_size = 0, -+ .pts = frame->pts, -+ .dts = AV_NOPTS_VALUE, -+ .reordered_opaque = frame->reordered_opaque, -+ .pkt_pos = frame->pkt_pos, -+ .pkt_duration = frame->pkt_duration, -+ .track_pts = track_pts -+ }; -+ return track_pts; -+} -+ -+ -+// Returns -1 if we should discard the frame -+static int -+xlat_pts_frame_out(AVCodecContext *const avctx, -+ xlat_track_t * const x, -+ AVFrame *const frame) -+{ -+ unsigned int n = pts_to_track(avctx, frame->pts) % FF_V4L2_M2M_TRACK_SIZE; -+ V4L2m2mTrackEl *const t = x->track_els + n; -+ if (frame->pts == AV_NOPTS_VALUE || frame->pts != t->track_pts) -+ { -+ av_log(avctx, frame->pts == AV_NOPTS_VALUE ? AV_LOG_DEBUG : AV_LOG_WARNING, -+ "Frame tracking failure: pts=%" PRId64 ", track[%d]=%" PRId64 "\n", frame->pts, n, t->track_pts); -+ frame->pts = AV_NOPTS_VALUE; -+ frame->pkt_dts = x->last_pkt_dts; -+ frame->reordered_opaque = x->last_opaque; -+ frame->pkt_pos = -1; -+ frame->pkt_duration = 0; -+ frame->pkt_size = -1; -+ } -+ else if (!t->discard) -+ { -+ frame->pts = t->pending ? t->pts : AV_NOPTS_VALUE; -+ frame->pkt_dts = x->last_pkt_dts; -+ frame->reordered_opaque = t->reordered_opaque; -+ frame->pkt_pos = t->pkt_pos; -+ frame->pkt_duration = t->pkt_duration; -+ frame->pkt_size = t->pkt_size; -+ -+ x->last_opaque = x->track_els[n].reordered_opaque; -+ if (frame->pts != AV_NOPTS_VALUE) -+ x->last_pts = frame->pts; -+ t->pending = 0; -+ } -+ else -+ { -+ av_log(avctx, AV_LOG_DEBUG, "Discard frame (flushed): pts=%" PRId64 ", track[%d]=%" PRId64 "\n", frame->pts, n, t->track_pts); -+ return -1; -+ } -+ -+ av_log(avctx, AV_LOG_TRACE, "Out frame PTS=%" PRId64 "/%"PRId64", DTS=%" PRId64 ", track=%"PRId64", n=%d\n", -+ frame->pts, frame->best_effort_timestamp, frame->pkt_dts, t->track_pts, n); -+ return 0; -+} -+ -+// Returns -1 if we should discard the frame -+static int -+xlat_pts_pkt_out(AVCodecContext *const avctx, -+ xlat_track_t * const x, -+ AVPacket *const pkt) -+{ -+ unsigned int n = pts_to_track(avctx, pkt->pts) % FF_V4L2_M2M_TRACK_SIZE; -+ V4L2m2mTrackEl *const t = x->track_els + n; -+ if (pkt->pts == AV_NOPTS_VALUE || pkt->pts != t->track_pts) -+ { -+ av_log(avctx, pkt->pts == AV_NOPTS_VALUE ? AV_LOG_DEBUG : AV_LOG_WARNING, -+ "Pkt tracking failure: pts=%" PRId64 ", track[%d]=%" PRId64 "\n", pkt->pts, n, t->track_pts); -+ pkt->pts = AV_NOPTS_VALUE; -+ } -+ else if (!t->discard) -+ { -+ pkt->pts = t->pending ? t->pts : AV_NOPTS_VALUE; -+ -+ x->last_opaque = x->track_els[n].reordered_opaque; -+ if (pkt->pts != AV_NOPTS_VALUE) -+ x->last_pts = pkt->pts; -+ t->pending = 0; -+ } -+ else -+ { -+ av_log(avctx, AV_LOG_DEBUG, "Discard packet (flushed): pts=%" PRId64 ", track[%d]=%" PRId64 "\n", pkt->pts, n, t->track_pts); -+ return -1; -+ } -+ -+ // * Would like something much better than this...xlat(offset + out_count)? -+ pkt->dts = pkt->pts; -+ av_log(avctx, AV_LOG_TRACE, "Out pkt PTS=%" PRId64 ", track=%"PRId64", n=%d\n", -+ pkt->pts, t->track_pts, n); -+ return 0; -+} -+ -+ - static inline V4L2m2mContext *ctx_to_m2mctx(const V4L2Context *ctx) - { - return V4L2_TYPE_IS_OUTPUT(ctx->type) ? -@@ -353,12 +507,14 @@ dq_buf(V4L2Context * const ctx, V4L2Buffer ** const ppavbuf) - atomic_fetch_sub(&ctx->q_count, 1); - - avbuf = (V4L2Buffer *)ctx->bufrefs[buf.index]->data; -- avbuf->status = V4L2BUF_AVAILABLE; -+ ff_v4l2_buffer_set_avail(avbuf); - avbuf->buf = buf; - if (is_mp) { - memcpy(avbuf->planes, planes, sizeof(planes)); - avbuf->buf.m.planes = avbuf->planes; - } -+ // Done with any attached buffer -+ av_buffer_unref(&avbuf->ref_buf); - - if (V4L2_TYPE_IS_CAPTURE(ctx->type)) { - // Zero length cap buffer return == EOS -@@ -733,7 +889,7 @@ static void flush_all_buffers_status(V4L2Context* const ctx) - for (i = 0; i < ctx->num_buffers; ++i) { - struct V4L2Buffer * const buf = (struct V4L2Buffer *)ctx->bufrefs[i]->data; - if (buf->status == V4L2BUF_IN_DRIVER) -- buf->status = V4L2BUF_AVAILABLE; -+ ff_v4l2_buffer_set_avail(buf); - } - atomic_store(&ctx->q_count, 0); - } -@@ -787,6 +943,8 @@ int ff_v4l2_context_set_status(V4L2Context* ctx, uint32_t cmd) - { - if (cmd == VIDIOC_STREAMOFF) - flush_all_buffers_status(ctx); -+ else -+ ctx->first_buf = 1; - - ctx->streamon = (cmd == VIDIOC_STREAMON); - av_log(avctx, AV_LOG_DEBUG, "%s set status %d (%s) OK\n", ctx->name, -@@ -803,14 +961,16 @@ int ff_v4l2_context_set_status(V4L2Context* ctx, uint32_t cmd) - - int ff_v4l2_context_enqueue_frame(V4L2Context* ctx, const AVFrame* frame) - { -- V4L2m2mContext *s = ctx_to_m2mctx(ctx); -+ V4L2m2mContext *const s = ctx_to_m2mctx(ctx); -+ AVCodecContext *const avctx = s->avctx; -+ int64_t track_ts; - V4L2Buffer* avbuf; - int ret; - - if (!frame) { - ret = v4l2_stop_encode(ctx); - if (ret) -- av_log(logger(ctx), AV_LOG_ERROR, "%s stop_encode\n", ctx->name); -+ av_log(avctx, AV_LOG_ERROR, "%s stop_encode\n", ctx->name); - s->draining= 1; - return 0; - } -@@ -819,7 +979,9 @@ int ff_v4l2_context_enqueue_frame(V4L2Context* ctx, const AVFrame* frame) - if (!avbuf) - return AVERROR(EAGAIN); - -- ret = ff_v4l2_buffer_avframe_to_buf(frame, avbuf); -+ track_ts = xlat_pts_frame_in(avctx, &s->xlat, frame); -+ -+ ret = ff_v4l2_buffer_avframe_to_buf(frame, avbuf, track_ts); - if (ret) - return ret; - -@@ -830,14 +992,16 @@ int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt, - const void * extdata, size_t extlen) - { - V4L2m2mContext *s = ctx_to_m2mctx(ctx); -+ AVCodecContext *const avctx = s->avctx; - V4L2Buffer* avbuf; - int ret; -+ int64_t track_ts; - - if (!pkt->size) { - ret = v4l2_stop_decode(ctx); - // Log but otherwise ignore stop failure - if (ret) -- av_log(logger(ctx), AV_LOG_ERROR, "%s stop_decode failed: err=%d\n", ctx->name, ret); -+ av_log(avctx, AV_LOG_ERROR, "%s stop_decode failed: err=%d\n", ctx->name, ret); - s->draining = 1; - return 0; - } -@@ -846,7 +1010,9 @@ int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt, - if (!avbuf) - return AVERROR(EAGAIN); - -- ret = ff_v4l2_buffer_avpkt_to_buf_ext(pkt, avbuf, extdata, extlen); -+ track_ts = xlat_pts_pkt_in(avctx, &s->xlat, pkt); -+ -+ ret = ff_v4l2_buffer_avpkt_to_buf_ext(pkt, avbuf, extdata, extlen, track_ts); - if (ret == AVERROR(ENOMEM)) - av_log(logger(ctx), AV_LOG_ERROR, "Buffer overflow in %s: pkt->size=%d > buf->length=%d\n", - __func__, pkt->size, avbuf->planes[0].length); -@@ -858,24 +1024,36 @@ int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt, - - int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* frame, int timeout) - { -+ V4L2m2mContext *s = ctx_to_m2mctx(ctx); -+ AVCodecContext *const avctx = s->avctx; - V4L2Buffer *avbuf; - int rv; - -- if ((rv = get_qbuf(ctx, &avbuf, timeout)) != 0) -- return rv; -+ do { -+ if ((rv = get_qbuf(ctx, &avbuf, timeout)) != 0) -+ return rv; -+ if ((rv = ff_v4l2_buffer_buf_to_avframe(frame, avbuf)) != 0) -+ return rv; -+ } while (xlat_pts_frame_out(avctx, &s->xlat, frame) != 0); - -- return ff_v4l2_buffer_buf_to_avframe(frame, avbuf); -+ return 0; - } - - int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt) - { -+ V4L2m2mContext *s = ctx_to_m2mctx(ctx); -+ AVCodecContext *const avctx = s->avctx; - V4L2Buffer *avbuf; - int rv; - -- if ((rv = get_qbuf(ctx, &avbuf, -1)) != 0) -- return rv == AVERROR(ENOSPC) ? AVERROR(EAGAIN) : rv; // Caller not currently expecting ENOSPC -+ do { -+ if ((rv = get_qbuf(ctx, &avbuf, -1)) != 0) -+ return rv == AVERROR(ENOSPC) ? AVERROR(EAGAIN) : rv; // Caller not currently expecting ENOSPC -+ if ((rv = ff_v4l2_buffer_buf_to_avpkt(pkt, avbuf)) != 0) -+ return rv; -+ } while (xlat_pts_pkt_out(avctx, &s->xlat, pkt) != 0); - -- return ff_v4l2_buffer_buf_to_avpkt(pkt, avbuf); -+ return 0; - } - - int ff_v4l2_context_get_format(V4L2Context* ctx, int probe) -@@ -951,7 +1129,7 @@ void ff_v4l2_context_release(V4L2Context* ctx) - } - - --static int create_buffers(V4L2Context* const ctx, const unsigned int req_buffers) -+static int create_buffers(V4L2Context* const ctx, const unsigned int req_buffers, const enum v4l2_memory mem) - { - V4L2m2mContext * const s = ctx_to_m2mctx(ctx); - struct v4l2_requestbuffers req; -@@ -962,7 +1140,7 @@ static int create_buffers(V4L2Context* const ctx, const unsigned int req_buffers - - memset(&req, 0, sizeof(req)); - req.count = req_buffers; -- req.memory = V4L2_MEMORY_MMAP; -+ req.memory = mem; - req.type = ctx->type; - while ((ret = ioctl(s->fd, VIDIOC_REQBUFS, &req)) == -1) { - if (errno != EINTR) { -@@ -986,7 +1164,7 @@ static int create_buffers(V4L2Context* const ctx, const unsigned int req_buffers - } - - for (i = 0; i < ctx->num_buffers; i++) { -- ret = ff_v4l2_buffer_initialize(&ctx->bufrefs[i], i, ctx); -+ ret = ff_v4l2_buffer_initialize(&ctx->bufrefs[i], i, ctx, mem); - if (ret) { - av_log(logger(ctx), AV_LOG_ERROR, "%s buffer[%d] initialization (%s)\n", ctx->name, i, av_err2str(ret)); - goto fail_release; -@@ -1052,7 +1230,7 @@ int ff_v4l2_context_init(V4L2Context* ctx) - goto fail_unref_hwframes; - } - -- ret = create_buffers(ctx, ctx->num_buffers); -+ ret = create_buffers(ctx, ctx->num_buffers, ctx->buf_mem); - if (ret < 0) - goto fail_unref_hwframes; - -diff --git a/libavcodec/v4l2_context.h b/libavcodec/v4l2_context.h -index 0efff58f18..21265f1bd7 100644 ---- a/libavcodec/v4l2_context.h -+++ b/libavcodec/v4l2_context.h -@@ -91,11 +91,19 @@ typedef struct V4L2Context { - */ - int num_buffers; - -+ /** -+ * Buffer memory type V4L2_MEMORY_MMAP or V4L2_MEMORY_DMABUF -+ */ -+ enum v4l2_memory buf_mem; -+ - /** - * Whether the stream has been started (VIDIOC_STREAMON has been sent). - */ - int streamon; - -+ /* 1st buffer after stream on */ -+ int first_buf; -+ - /** - * Either no more buffers available or an unrecoverable error was notified - * by the V4L2 kernel driver: once set the context has to be exited. -@@ -105,11 +113,10 @@ typedef struct V4L2Context { - int flag_last; - - /** -- * PTS rescale not wanted -- * If the PTS is just a dummy frame count then rescale is -- * actively harmful -+ * If NZ then when Qing frame/pkt use this rather than the -+ * "real" PTS - */ -- int no_pts_rescale; -+ uint64_t track_ts; - - AVBufferRef *frames_ref; - atomic_int q_count; -diff --git a/libavcodec/v4l2_m2m.c b/libavcodec/v4l2_m2m.c -index 6dd01e2e00..1e30d15fd8 100644 ---- a/libavcodec/v4l2_m2m.c -+++ b/libavcodec/v4l2_m2m.c -@@ -35,6 +35,14 @@ - #include "v4l2_fmt.h" - #include "v4l2_m2m.h" - -+static void -+xlat_init(xlat_track_t * const x) -+{ -+ memset(x, 0, sizeof(*x)); -+ x->last_pts = AV_NOPTS_VALUE; -+} -+ -+ - static inline int v4l2_splane_video(struct v4l2_capability *cap) - { - if (cap->capabilities & (V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT) && -@@ -67,7 +75,9 @@ static int v4l2_prepare_contexts(V4L2m2mContext *s, int probe) - - s->capture.done = s->output.done = 0; - s->capture.name = "capture"; -+ s->capture.buf_mem = V4L2_MEMORY_MMAP; - s->output.name = "output"; -+ s->output.buf_mem = s->input_drm ? V4L2_MEMORY_DMABUF : V4L2_MEMORY_MMAP; - atomic_init(&s->refcount, 0); - sem_init(&s->refsync, 0, 0); - -@@ -334,35 +344,38 @@ int ff_v4l2_m2m_codec_init(V4L2m2mPriv *priv) - return v4l2_configure_contexts(s); - } - --int ff_v4l2_m2m_create_context(V4L2m2mPriv *priv, V4L2m2mContext **s) -+int ff_v4l2_m2m_create_context(V4L2m2mPriv *priv, V4L2m2mContext **pps) - { -- *s = av_mallocz(sizeof(V4L2m2mContext)); -- if (!*s) -+ V4L2m2mContext * const s = av_mallocz(sizeof(V4L2m2mContext)); -+ -+ *pps = NULL; -+ if (!s) - return AVERROR(ENOMEM); - -- priv->context_ref = av_buffer_create((uint8_t *) *s, sizeof(V4L2m2mContext), -+ priv->context_ref = av_buffer_create((uint8_t *)s, sizeof(*s), - &v4l2_m2m_destroy_context, NULL, 0); - if (!priv->context_ref) { -- av_freep(s); -+ av_free(s); - return AVERROR(ENOMEM); - } - - /* assign the context */ -- priv->context = *s; -- (*s)->priv = priv; -+ priv->context = s; -+ s->priv = priv; - - /* populate it */ -- priv->context->capture.num_buffers = priv->num_capture_buffers; -- priv->context->output.num_buffers = priv->num_output_buffers; -- priv->context->self_ref = priv->context_ref; -- priv->context->fd = -1; -+ s->capture.num_buffers = priv->num_capture_buffers; -+ s->output.num_buffers = priv->num_output_buffers; -+ s->self_ref = priv->context_ref; -+ s->fd = -1; -+ xlat_init(&s->xlat); - - priv->context->frame = av_frame_alloc(); - if (!priv->context->frame) { - av_buffer_unref(&priv->context_ref); -- *s = NULL; /* freed when unreferencing context_ref */ - return AVERROR(ENOMEM); - } - -+ *pps = s; - return 0; - } -diff --git a/libavcodec/v4l2_m2m.h b/libavcodec/v4l2_m2m.h -index 19d618698d..d6cdaf65e1 100644 ---- a/libavcodec/v4l2_m2m.h -+++ b/libavcodec/v4l2_m2m.h -@@ -103,6 +103,9 @@ typedef struct V4L2m2mContext { - /* generate DRM frames */ - int output_drm; - -+ /* input frames are drmprime */ -+ int input_drm; -+ - /* Frame tracking */ - xlat_track_t xlat; - int pending_hw; -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 7e17044706..fbbfc81342 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -169,96 +169,17 @@ static int v4l2_prepare_decoder(V4L2m2mContext *s) - return 0; - } - --static inline int64_t track_to_pts(AVCodecContext *avctx, unsigned int n) --{ -- return (int64_t)n; --} -- --static inline unsigned int pts_to_track(AVCodecContext *avctx, const int64_t pts) --{ -- return (unsigned int)pts; --} -- --// FFmpeg requires us to propagate a number of vars from the coded pkt into --// the decoded frame. The only thing that tracks like that in V4L2 stateful --// is timestamp. PTS maps to timestamp for this decode. FFmpeg makes no --// guarantees about PTS being unique or specified for every frame so replace --// the supplied PTS with a simple incrementing number and keep a circular --// buffer of all the things we want preserved (including the original PTS) --// indexed by the tracking no. - static void --xlat_pts_in(AVCodecContext *const avctx, xlat_track_t *const x, AVPacket *const avpkt) --{ -- int64_t track_pts; -- -- // Avoid 0 -- if (++x->track_no == 0) -- x->track_no = 1; -- -- track_pts = track_to_pts(avctx, x->track_no); -- -- av_log(avctx, AV_LOG_TRACE, "In PTS=%" PRId64 ", DTS=%" PRId64 ", track=%" PRId64 ", n=%u\n", avpkt->pts, avpkt->dts, track_pts, x->track_no); -- x->last_pkt_dts = avpkt->dts; -- x->track_els[x->track_no % FF_V4L2_M2M_TRACK_SIZE] = (V4L2m2mTrackEl){ -- .discard = 0, -- .pending = 1, -- .pkt_size = avpkt->size, -- .pts = avpkt->pts, -- .dts = avpkt->dts, -- .reordered_opaque = avctx->reordered_opaque, -- .pkt_pos = avpkt->pos, -- .pkt_duration = avpkt->duration, -- .track_pts = track_pts -- }; -- avpkt->pts = track_pts; --} -- --// Returns -1 if we should discard the frame --static int --xlat_pts_out(AVCodecContext *const avctx, -- xlat_track_t * const x, -+set_best_effort_pts(AVCodecContext *const avctx, - pts_stats_t * const ps, - AVFrame *const frame) - { -- unsigned int n = pts_to_track(avctx, frame->pts) % FF_V4L2_M2M_TRACK_SIZE; -- V4L2m2mTrackEl *const t = x->track_els + n; -- if (frame->pts == AV_NOPTS_VALUE || frame->pts != t->track_pts) -- { -- av_log(avctx, AV_LOG_INFO, "Tracking failure: pts=%" PRId64 ", track[%d]=%" PRId64 "\n", frame->pts, n, t->track_pts); -- frame->pts = AV_NOPTS_VALUE; -- frame->pkt_dts = x->last_pkt_dts; -- frame->reordered_opaque = x->last_opaque; -- frame->pkt_pos = -1; -- frame->pkt_duration = 0; -- frame->pkt_size = -1; -- } -- else if (!t->discard) -- { -- frame->pts = t->pending ? t->pts : AV_NOPTS_VALUE; -- frame->pkt_dts = x->last_pkt_dts; -- frame->reordered_opaque = t->reordered_opaque; -- frame->pkt_pos = t->pkt_pos; -- frame->pkt_duration = t->pkt_duration; -- frame->pkt_size = t->pkt_size; -- -- x->last_opaque = x->track_els[n].reordered_opaque; -- if (frame->pts != AV_NOPTS_VALUE) -- x->last_pts = frame->pts; -- t->pending = 0; -- } -- else -- { -- av_log(avctx, AV_LOG_DEBUG, "Discard frame (flushed): pts=%" PRId64 ", track[%d]=%" PRId64 "\n", frame->pts, n, t->track_pts); -- return -1; -- } -- - pts_stats_add(ps, frame->pts); - - frame->best_effort_timestamp = pts_stats_guess(ps); - frame->pkt_dts = frame->pts; // We can't emulate what s/w does in a useful manner? -- av_log(avctx, AV_LOG_TRACE, "Out PTS=%" PRId64 "/%"PRId64", DTS=%" PRId64 ", track=%"PRId64", n=%d\n", -- frame->pts, frame->best_effort_timestamp, frame->pkt_dts, t->track_pts, n); -- return 0; -+ av_log(avctx, AV_LOG_TRACE, "Out PTS=%" PRId64 "/%"PRId64", DTS=%" PRId64 "\n", -+ frame->pts, frame->best_effort_timestamp, frame->pkt_dts); - } - - static void -@@ -272,13 +193,6 @@ xlat_flush(xlat_track_t * const x) - x->last_pts = AV_NOPTS_VALUE; - } - --static void --xlat_init(xlat_track_t * const x) --{ -- memset(x, 0, sizeof(*x)); -- x->last_pts = AV_NOPTS_VALUE; --} -- - static int - xlat_pending(const xlat_track_t * const x) - { -@@ -419,8 +333,6 @@ static int try_enqueue_src(AVCodecContext * const avctx, V4L2m2mContext * const - av_log(avctx, AV_LOG_ERROR, "Failed to get coded packet: err=%d\n", ret); - return ret; - } -- -- xlat_pts_in(avctx, &s->xlat, &s->buf_pkt); - } - - if (s->draining) { -@@ -542,49 +454,47 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - prefer_dq ? 5 : - src_rv == NQ_Q_FULL ? -1 : 0; - -- do { -- // Dequeue frame will unref any previous contents of frame -- // if it returns success so we don't need an explicit unref -- // when discarding -- // This returns AVERROR(EAGAIN) on timeout or if -- // there is room in the input Q and timeout == -1 -- dst_rv = ff_v4l2_context_dequeue_frame(&s->capture, frame, t); -- -- // Failure due to no buffer in Q? -- if (dst_rv == AVERROR(ENOSPC)) { -- // Wait & retry -- if ((dst_rv = qbuf_wait(avctx, &s->capture)) == 0) { -- dst_rv = ff_v4l2_context_dequeue_frame(&s->capture, frame, t); -- } -+ // Dequeue frame will unref any previous contents of frame -+ // if it returns success so we don't need an explicit unref -+ // when discarding -+ // This returns AVERROR(EAGAIN) on timeout or if -+ // there is room in the input Q and timeout == -1 -+ dst_rv = ff_v4l2_context_dequeue_frame(&s->capture, frame, t); -+ -+ // Failure due to no buffer in Q? -+ if (dst_rv == AVERROR(ENOSPC)) { -+ // Wait & retry -+ if ((dst_rv = qbuf_wait(avctx, &s->capture)) == 0) { -+ dst_rv = ff_v4l2_context_dequeue_frame(&s->capture, frame, t); - } -+ } -+ -+ // Adjust dynamic pending threshold -+ if (dst_rv == 0) { -+ if (--s->pending_hw < PENDING_HW_MIN) -+ s->pending_hw = PENDING_HW_MIN; -+ s->pending_n = 0; - -- // Adjust dynamic pending threshold -- if (dst_rv == 0) { -- if (--s->pending_hw < PENDING_HW_MIN) -- s->pending_hw = PENDING_HW_MIN; -+ set_best_effort_pts(avctx, &s->pts_stat, frame); -+ } -+ else if (dst_rv == AVERROR(EAGAIN)) { -+ if (prefer_dq && ++s->pending_n > PENDING_N_THRESHOLD) { -+ s->pending_hw = pending * 16 + PENDING_HW_OFFSET; - s->pending_n = 0; - } -- else if (dst_rv == AVERROR(EAGAIN)) { -- if (prefer_dq && ++s->pending_n > PENDING_N_THRESHOLD) { -- s->pending_hw = pending * 16 + PENDING_HW_OFFSET; -- s->pending_n = 0; -- } -- } -+ } - -- if (dst_rv == AVERROR(EAGAIN) && src_rv == NQ_DRAINING) { -- av_log(avctx, AV_LOG_WARNING, "Timeout in drain - assume EOF"); -- dst_rv = AVERROR_EOF; -- s->capture.done = 1; -- } -- else if (dst_rv == AVERROR_EOF && (s->draining || s->capture.done)) -- av_log(avctx, AV_LOG_DEBUG, "Dequeue EOF: draining=%d, cap.done=%d\n", -- s->draining, s->capture.done); -- else if (dst_rv && dst_rv != AVERROR(EAGAIN)) -- av_log(avctx, AV_LOG_ERROR, "Packet dequeue failure: draining=%d, cap.done=%d, err=%d\n", -- s->draining, s->capture.done, dst_rv); -- -- // Go again if we got a frame that we need to discard -- } while (dst_rv == 0 && xlat_pts_out(avctx, &s->xlat, &s->pts_stat, frame)); -+ if (dst_rv == AVERROR(EAGAIN) && src_rv == NQ_DRAINING) { -+ av_log(avctx, AV_LOG_WARNING, "Timeout in drain - assume EOF"); -+ dst_rv = AVERROR_EOF; -+ s->capture.done = 1; -+ } -+ else if (dst_rv == AVERROR_EOF && (s->draining || s->capture.done)) -+ av_log(avctx, AV_LOG_DEBUG, "Dequeue EOF: draining=%d, cap.done=%d\n", -+ s->draining, s->capture.done); -+ else if (dst_rv && dst_rv != AVERROR(EAGAIN)) -+ av_log(avctx, AV_LOG_ERROR, "Packet dequeue failure: draining=%d, cap.done=%d, err=%d\n", -+ s->draining, s->capture.done, dst_rv); - } - - ++i; -@@ -791,7 +701,6 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - if (ret < 0) - return ret; - -- xlat_init(&s->xlat); - pts_stats_init(&s->pts_stat, avctx, "decoder"); - s->pending_hw = PENDING_HW_MIN; - -@@ -810,12 +719,10 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - output->av_codec_id = avctx->codec_id; - output->av_pix_fmt = AV_PIX_FMT_NONE; - output->min_buf_size = max_coded_size(avctx); -- output->no_pts_rescale = 1; - - capture->av_codec_id = AV_CODEC_ID_RAWVIDEO; - capture->av_pix_fmt = avctx->pix_fmt; - capture->min_buf_size = 0; -- capture->no_pts_rescale = 1; - - /* the client requests the codec to generate DRM frames: - * - data[0] will therefore point to the returned AVDRMFrameDescriptor -diff --git a/libavcodec/v4l2_m2m_enc.c b/libavcodec/v4l2_m2m_enc.c -index 9a0837ecf3..05ff6ba726 100644 ---- a/libavcodec/v4l2_m2m_enc.c -+++ b/libavcodec/v4l2_m2m_enc.c -@@ -24,6 +24,8 @@ - #include - #include - #include -+#include -+ - #include "encode.h" - #include "libavcodec/avcodec.h" - #include "libavutil/pixdesc.h" -@@ -38,6 +40,34 @@ - #define MPEG_CID(x) V4L2_CID_MPEG_VIDEO_##x - #define MPEG_VIDEO(x) V4L2_MPEG_VIDEO_##x - -+// P030 should be defined in drm_fourcc.h and hopefully will be sometime -+// in the future but until then... -+#ifndef DRM_FORMAT_P030 -+#define DRM_FORMAT_P030 fourcc_code('P', '0', '3', '0') -+#endif -+ -+#ifndef DRM_FORMAT_NV15 -+#define DRM_FORMAT_NV15 fourcc_code('N', 'V', '1', '5') -+#endif -+ -+#ifndef DRM_FORMAT_NV20 -+#define DRM_FORMAT_NV20 fourcc_code('N', 'V', '2', '0') -+#endif -+ -+#ifndef V4L2_CID_CODEC_BASE -+#define V4L2_CID_CODEC_BASE V4L2_CID_MPEG_BASE -+#endif -+ -+// V4L2_PIX_FMT_NV12_10_COL128 and V4L2_PIX_FMT_NV12_COL128 should be defined -+// in videodev2.h hopefully will be sometime in the future but until then... -+#ifndef V4L2_PIX_FMT_NV12_10_COL128 -+#define V4L2_PIX_FMT_NV12_10_COL128 v4l2_fourcc('N', 'C', '3', '0') -+#endif -+ -+#ifndef V4L2_PIX_FMT_NV12_COL128 -+#define V4L2_PIX_FMT_NV12_COL128 v4l2_fourcc('N', 'C', '1', '2') /* 12 Y/CbCr 4:2:0 128 pixel wide column */ -+#endif -+ - static inline void v4l2_set_timeperframe(V4L2m2mContext *s, unsigned int num, unsigned int den) - { - struct v4l2_streamparm parm = { 0 }; -@@ -148,15 +178,14 @@ static inline int v4l2_mpeg4_profile_from_ff(int p) - static int v4l2_check_b_frame_support(V4L2m2mContext *s) - { - if (s->avctx->max_b_frames) -- av_log(s->avctx, AV_LOG_WARNING, "Encoder does not support b-frames yet\n"); -+ av_log(s->avctx, AV_LOG_WARNING, "Encoder does not support %d b-frames yet\n", s->avctx->max_b_frames); - -- v4l2_set_ext_ctrl(s, MPEG_CID(B_FRAMES), 0, "number of B-frames", 0); -+ v4l2_set_ext_ctrl(s, MPEG_CID(B_FRAMES), s->avctx->max_b_frames, "number of B-frames", 1); - v4l2_get_ext_ctrl(s, MPEG_CID(B_FRAMES), &s->avctx->max_b_frames, "number of B-frames", 0); - if (s->avctx->max_b_frames == 0) - return 0; - - avpriv_report_missing_feature(s->avctx, "DTS/PTS calculation for V4L2 encoding"); -- - return AVERROR_PATCHWELCOME; - } - -@@ -271,13 +300,184 @@ static int v4l2_prepare_encoder(V4L2m2mContext *s) - return 0; - } - -+static int avdrm_to_v4l2(struct v4l2_format * const format, const AVFrame * const frame) -+{ -+ const AVDRMFrameDescriptor *const src = (const AVDRMFrameDescriptor *)frame->data[0]; -+ -+ const uint32_t drm_fmt = src->layers[0].format; -+ // Treat INVALID as LINEAR -+ const uint64_t mod = src->objects[0].format_modifier == DRM_FORMAT_MOD_INVALID ? -+ DRM_FORMAT_MOD_LINEAR : src->objects[0].format_modifier; -+ uint32_t pix_fmt = 0; -+ uint32_t w = 0; -+ uint32_t h = 0; -+ uint32_t bpl = src->layers[0].planes[0].pitch; -+ -+ // We really don't expect multiple layers -+ // All formats that we currently cope with are single object -+ -+ if (src->nb_layers != 1 || src->nb_objects != 1) -+ return AVERROR(EINVAL); -+ -+ switch (drm_fmt) { -+ case DRM_FORMAT_YUV420: -+ if (mod == DRM_FORMAT_MOD_LINEAR) { -+ if (src->layers[0].nb_planes != 3) -+ break; -+ pix_fmt = V4L2_PIX_FMT_YUV420; -+ h = src->layers[0].planes[1].offset / bpl; -+ w = bpl; -+ } -+ break; -+ -+ case DRM_FORMAT_NV12: -+ if (mod == DRM_FORMAT_MOD_LINEAR) { -+ if (src->layers[0].nb_planes != 2) -+ break; -+ pix_fmt = V4L2_PIX_FMT_NV12; -+ h = src->layers[0].planes[1].offset / bpl; -+ w = bpl; -+ } -+ else if (fourcc_mod_broadcom_mod(mod) == DRM_FORMAT_MOD_BROADCOM_SAND128) { -+ if (src->layers[0].nb_planes != 2) -+ break; -+ pix_fmt = V4L2_PIX_FMT_NV12_COL128; -+ w = bpl; -+ h = src->layers[0].planes[1].offset / 128; -+ bpl = fourcc_mod_broadcom_param(mod); -+ } -+ break; -+ -+ case DRM_FORMAT_P030: -+ if (fourcc_mod_broadcom_mod(mod) == DRM_FORMAT_MOD_BROADCOM_SAND128) { -+ if (src->layers[0].nb_planes != 2) -+ break; -+ pix_fmt = V4L2_PIX_FMT_NV12_10_COL128; -+ w = bpl / 2; // Matching lie to how we construct this -+ h = src->layers[0].planes[1].offset / 128; -+ bpl = fourcc_mod_broadcom_param(mod); -+ } -+ break; -+ -+ default: -+ break; -+ } -+ -+ if (!pix_fmt) -+ return AVERROR(EINVAL); -+ -+ if (V4L2_TYPE_IS_MULTIPLANAR(format->type)) { -+ struct v4l2_pix_format_mplane *const pix = &format->fmt.pix_mp; -+ -+ pix->width = w; -+ pix->height = h; -+ pix->pixelformat = pix_fmt; -+ pix->plane_fmt[0].bytesperline = bpl; -+ pix->num_planes = 1; -+ } -+ else { -+ struct v4l2_pix_format *const pix = &format->fmt.pix; -+ -+ pix->width = w; -+ pix->height = h; -+ pix->pixelformat = pix_fmt; -+ pix->bytesperline = bpl; -+ } -+ -+ return 0; -+} -+ -+// Do we have similar enough formats to be usable? -+static int fmt_eq(const struct v4l2_format * const a, const struct v4l2_format * const b) -+{ -+ if (a->type != b->type) -+ return 0; -+ -+ if (V4L2_TYPE_IS_MULTIPLANAR(a->type)) { -+ const struct v4l2_pix_format_mplane *const pa = &a->fmt.pix_mp; -+ const struct v4l2_pix_format_mplane *const pb = &b->fmt.pix_mp; -+ unsigned int i; -+ if (pa->pixelformat != pb->pixelformat || -+ pa->num_planes != pb->num_planes) -+ return 0; -+ for (i = 0; i != pa->num_planes; ++i) { -+ if (pa->plane_fmt[i].bytesperline != pb->plane_fmt[i].bytesperline) -+ return 0; -+ } -+ } -+ else { -+ const struct v4l2_pix_format *const pa = &a->fmt.pix; -+ const struct v4l2_pix_format *const pb = &b->fmt.pix; -+ if (pa->pixelformat != pb->pixelformat || -+ pa->bytesperline != pb->bytesperline) -+ return 0; -+ } -+ return 1; -+} -+ -+ - static int v4l2_send_frame(AVCodecContext *avctx, const AVFrame *frame) - { - V4L2m2mContext *s = ((V4L2m2mPriv*)avctx->priv_data)->context; - V4L2Context *const output = &s->output; - -+ // Signal EOF if needed -+ if (!frame) { -+ return ff_v4l2_context_enqueue_frame(output, frame); -+ } -+ -+ if (s->input_drm && !output->streamon) { -+ int rv; -+ struct v4l2_format req_format = {.type = output->format.type}; -+ -+ // Set format when we first get a buffer -+ if ((rv = avdrm_to_v4l2(&req_format, frame)) != 0) { -+ av_log(avctx, AV_LOG_ERROR, "Failed to get V4L2 format from DRM_PRIME frame\n"); -+ return rv; -+ } -+ -+ ff_v4l2_context_release(output); -+ -+ output->format = req_format; -+ -+ if ((rv = ff_v4l2_context_set_format(output)) != 0) { -+ av_log(avctx, AV_LOG_ERROR, "Failed to set V4L2 format\n"); -+ return rv; -+ } -+ -+ if (!fmt_eq(&req_format, &output->format)) { -+ av_log(avctx, AV_LOG_ERROR, "Format mismatch after setup\n"); -+ return AVERROR(EINVAL); -+ } -+ -+ output->selection.top = frame->crop_top; -+ output->selection.left = frame->crop_left; -+ output->selection.width = av_frame_cropped_width(frame); -+ output->selection.height = av_frame_cropped_height(frame); -+ -+ if ((rv = ff_v4l2_context_init(output)) != 0) { -+ av_log(avctx, AV_LOG_ERROR, "Failed to (re)init context\n"); -+ return rv; -+ } -+ -+ { -+ struct v4l2_selection selection = { -+ .type = V4L2_BUF_TYPE_VIDEO_OUTPUT, -+ .target = V4L2_SEL_TGT_CROP, -+ .r = output->selection -+ }; -+ if (ioctl(s->fd, VIDIOC_S_SELECTION, &selection) != 0) { -+ av_log(avctx, AV_LOG_WARNING, "S_SELECTION (CROP) %dx%d @ %d,%d failed: %s\n", -+ selection.r.width, selection.r.height, selection.r.left, selection.r.top, -+ av_err2str(AVERROR(errno))); -+ } -+ av_log(avctx, AV_LOG_TRACE, "S_SELECTION (CROP) %dx%d @ %d,%d OK\n", -+ selection.r.width, selection.r.height, selection.r.left, selection.r.top); -+ } -+ } -+ - #ifdef V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME -- if (frame && frame->pict_type == AV_PICTURE_TYPE_I) -+ if (frame->pict_type == AV_PICTURE_TYPE_I) - v4l2_set_ext_ctrl(s, MPEG_CID(FORCE_KEY_FRAME), 0, "force key frame", 1); - #endif - -@@ -328,7 +528,70 @@ static int v4l2_receive_packet(AVCodecContext *avctx, AVPacket *avpkt) - } - - dequeue: -- return ff_v4l2_context_dequeue_packet(capture, avpkt); -+ if ((ret = ff_v4l2_context_dequeue_packet(capture, avpkt)) != 0) -+ return ret; -+ -+ if (capture->first_buf == 1) { -+ uint8_t * data; -+ const int len = avpkt->size; -+ -+ // 1st buffer after streamon should be SPS/PPS -+ capture->first_buf = 2; -+ -+ // Clear both possible stores so there is no chance of confusion -+ av_freep(&s->extdata_data); -+ s->extdata_size = 0; -+ av_freep(&avctx->extradata); -+ avctx->extradata_size = 0; -+ -+ if ((data = av_malloc(len + AV_INPUT_BUFFER_PADDING_SIZE)) != NULL) -+ memcpy(data, avpkt->data, len); -+ -+ av_packet_unref(avpkt); -+ -+ if (data == NULL) -+ return AVERROR(ENOMEM); -+ -+ // We need to copy the header, but keep local if not global -+ if ((avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) != 0) { -+ avctx->extradata = data; -+ avctx->extradata_size = len; -+ } -+ else { -+ s->extdata_data = data; -+ s->extdata_size = len; -+ } -+ -+ if ((ret = ff_v4l2_context_dequeue_packet(capture, avpkt)) != 0) -+ return ret; -+ } -+ -+ // First frame must be key so mark as such even if encoder forgot -+ if (capture->first_buf == 2) -+ avpkt->flags |= AV_PKT_FLAG_KEY; -+ -+ // Add SPS/PPS to the start of every key frame if non-global headers -+ if ((avpkt->flags & AV_PKT_FLAG_KEY) != 0 && s->extdata_size != 0) { -+ const size_t newlen = s->extdata_size + avpkt->size; -+ AVBufferRef * const buf = av_buffer_alloc(newlen + AV_INPUT_BUFFER_PADDING_SIZE); -+ -+ if (buf == NULL) { -+ av_packet_unref(avpkt); -+ return AVERROR(ENOMEM); -+ } -+ -+ memcpy(buf->data, s->extdata_data, s->extdata_size); -+ memcpy(buf->data + s->extdata_size, avpkt->data, avpkt->size); -+ -+ av_buffer_unref(&avpkt->buf); -+ avpkt->buf = buf; -+ avpkt->data = buf->data; -+ avpkt->size = newlen; -+ } -+ -+// av_log(avctx, AV_LOG_INFO, "%s: PTS out=%"PRId64", size=%d, ret=%d\n", __func__, avpkt->pts, avpkt->size, ret); -+ capture->first_buf = 0; -+ return 0; - } - - static av_cold int v4l2_encode_init(AVCodecContext *avctx) -@@ -340,6 +603,8 @@ static av_cold int v4l2_encode_init(AVCodecContext *avctx) - uint32_t v4l2_fmt_output; - int ret; - -+ av_log(avctx, AV_LOG_INFO, " <<< %s: fmt=%d/%d\n", __func__, avctx->pix_fmt, avctx->sw_pix_fmt); -+ - ret = ff_v4l2_m2m_create_context(priv, &s); - if (ret < 0) - return ret; -@@ -347,13 +612,17 @@ static av_cold int v4l2_encode_init(AVCodecContext *avctx) - capture = &s->capture; - output = &s->output; - -+ s->input_drm = (avctx->pix_fmt == AV_PIX_FMT_DRM_PRIME); -+ - /* common settings output/capture */ - output->height = capture->height = avctx->height; - output->width = capture->width = avctx->width; - - /* output context */ - output->av_codec_id = AV_CODEC_ID_RAWVIDEO; -- output->av_pix_fmt = avctx->pix_fmt; -+ output->av_pix_fmt = !s->input_drm ? avctx->pix_fmt : -+ avctx->sw_pix_fmt != AV_PIX_FMT_NONE ? avctx->sw_pix_fmt : -+ AV_PIX_FMT_YUV420P; - - /* capture context */ - capture->av_codec_id = avctx->codec_id; -@@ -372,7 +641,7 @@ static av_cold int v4l2_encode_init(AVCodecContext *avctx) - v4l2_fmt_output = output->format.fmt.pix.pixelformat; - - pix_fmt_output = ff_v4l2_format_v4l2_to_avfmt(v4l2_fmt_output, AV_CODEC_ID_RAWVIDEO); -- if (pix_fmt_output != avctx->pix_fmt) { -+ if (!s->input_drm && pix_fmt_output != avctx->pix_fmt) { - const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt_output); - av_log(avctx, AV_LOG_ERROR, "Encoder requires %s pixel format.\n", desc->name); - return AVERROR(EINVAL); - -From 6b437ce70582c67971aa81871a6694a08b709784 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 8 Jun 2022 16:13:31 +0000 -Subject: [PATCH 055/151] v4l2_m2m_dec: Use DTS for best effort PTS if PTS is - always NO_PTS - -If we do have DTS but don't have PTS then assume PTS=DTS. -Also get rid of last_dts from tracking as its info wasn't actually -useful in any way. ---- - libavcodec/v4l2_context.c | 6 ++---- - libavcodec/v4l2_m2m.h | 1 - - libavcodec/v4l2_m2m_dec.c | 8 +++++++- - 3 files changed, 9 insertions(+), 6 deletions(-) - -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index 7a707d21fc..6b97eab41e 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -73,7 +73,6 @@ xlat_pts_pkt_in(AVCodecContext *const avctx, xlat_track_t *const x, const AVPack - track_pts = track_to_pts(avctx, x->track_no); - - av_log(avctx, AV_LOG_TRACE, "In pkt PTS=%" PRId64 ", DTS=%" PRId64 ", track=%" PRId64 ", n=%u\n", avpkt->pts, avpkt->dts, track_pts, x->track_no); -- x->last_pkt_dts = avpkt->dts; - x->track_els[x->track_no % FF_V4L2_M2M_TRACK_SIZE] = (V4L2m2mTrackEl){ - .discard = 0, - .pending = 1, -@@ -100,7 +99,6 @@ xlat_pts_frame_in(AVCodecContext *const avctx, xlat_track_t *const x, const AVFr - track_pts = track_to_pts(avctx, x->track_no); - - av_log(avctx, AV_LOG_TRACE, "In frame PTS=%" PRId64 ", track=%" PRId64 ", n=%u\n", frame->pts, track_pts, x->track_no); -- x->last_pkt_dts = frame->pkt_dts; - x->track_els[x->track_no % FF_V4L2_M2M_TRACK_SIZE] = (V4L2m2mTrackEl){ - .discard = 0, - .pending = 1, -@@ -129,7 +127,7 @@ xlat_pts_frame_out(AVCodecContext *const avctx, - av_log(avctx, frame->pts == AV_NOPTS_VALUE ? AV_LOG_DEBUG : AV_LOG_WARNING, - "Frame tracking failure: pts=%" PRId64 ", track[%d]=%" PRId64 "\n", frame->pts, n, t->track_pts); - frame->pts = AV_NOPTS_VALUE; -- frame->pkt_dts = x->last_pkt_dts; -+ frame->pkt_dts = AV_NOPTS_VALUE; - frame->reordered_opaque = x->last_opaque; - frame->pkt_pos = -1; - frame->pkt_duration = 0; -@@ -138,7 +136,7 @@ xlat_pts_frame_out(AVCodecContext *const avctx, - else if (!t->discard) - { - frame->pts = t->pending ? t->pts : AV_NOPTS_VALUE; -- frame->pkt_dts = x->last_pkt_dts; -+ frame->pkt_dts = t->dts; - frame->reordered_opaque = t->reordered_opaque; - frame->pkt_pos = t->pkt_pos; - frame->pkt_duration = t->pkt_duration; -diff --git a/libavcodec/v4l2_m2m.h b/libavcodec/v4l2_m2m.h -index d6cdaf65e1..ee72beb052 100644 ---- a/libavcodec/v4l2_m2m.h -+++ b/libavcodec/v4l2_m2m.h -@@ -67,7 +67,6 @@ typedef struct pts_stats_s - typedef struct xlat_track_s { - unsigned int track_no; - int64_t last_pts; -- int64_t last_pkt_dts; - int64_t last_opaque; - V4L2m2mTrackEl track_els[FF_V4L2_M2M_TRACK_SIZE]; - } xlat_track_t; -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index fbbfc81342..485a96f4b4 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -177,7 +177,13 @@ set_best_effort_pts(AVCodecContext *const avctx, - pts_stats_add(ps, frame->pts); - - frame->best_effort_timestamp = pts_stats_guess(ps); -- frame->pkt_dts = frame->pts; // We can't emulate what s/w does in a useful manner? -+ // If we can't guess from just PTS - try DTS -+ if (frame->best_effort_timestamp == AV_NOPTS_VALUE) -+ frame->best_effort_timestamp = frame->pkt_dts; -+ -+ // We can't emulate what s/w does in a useful manner and using the -+ // "correct" answer seems to just confuse things. -+ frame->pkt_dts = frame->pts; - av_log(avctx, AV_LOG_TRACE, "Out PTS=%" PRId64 "/%"PRId64", DTS=%" PRId64 "\n", - frame->pts, frame->best_effort_timestamp, frame->pkt_dts); - } - -From ec8d1c2c0b6bd3544e5e30500a167fc31abde17a Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 30 Jun 2022 15:59:23 +0000 -Subject: [PATCH 056/151] v4l2: Update H265 request for current API - -This works with v9 of the H265 patch set which hopefully will be the -last one. Hevc controls extracted from patched v4l2-controls into -hevc-ctrls-v4 - if HEVC controls found in the system v4l2-controls then -those will be used instead. ---- - libavcodec/Makefile | 2 +- - libavcodec/hevc-ctrls-v4.h | 515 +++++++++++++++++++++++++++++++++ - libavcodec/v4l2_req_hevc_v4.c | 3 + - libavcodec/v4l2_req_hevc_vx.c | 81 ++++-- - libavcodec/v4l2_request_hevc.c | 6 +- - libavcodec/v4l2_request_hevc.h | 1 + - 6 files changed, 583 insertions(+), 25 deletions(-) - create mode 100644 libavcodec/hevc-ctrls-v4.h - create mode 100644 libavcodec/v4l2_req_hevc_v4.c - -diff --git a/libavcodec/Makefile b/libavcodec/Makefile -index 2b3c16185d..d433a71236 100644 ---- a/libavcodec/Makefile -+++ b/libavcodec/Makefile -@@ -1000,7 +1000,7 @@ OBJS-$(CONFIG_HEVC_DXVA2_HWACCEL) += dxva2_hevc.o - OBJS-$(CONFIG_HEVC_NVDEC_HWACCEL) += nvdec_hevc.o - OBJS-$(CONFIG_HEVC_QSV_HWACCEL) += qsvdec.o - OBJS-$(CONFIG_HEVC_V4L2REQUEST_HWACCEL) += v4l2_request_hevc.o v4l2_req_decode_q.o\ -- v4l2_req_hevc_v1.o v4l2_req_hevc_v2.o v4l2_req_hevc_v3.o -+ v4l2_req_hevc_v1.o v4l2_req_hevc_v2.o v4l2_req_hevc_v3.o v4l2_req_hevc_v4.o - OBJS-$(CONFIG_HEVC_VAAPI_HWACCEL) += vaapi_hevc.o h265_profile_level.o - OBJS-$(CONFIG_HEVC_VDPAU_HWACCEL) += vdpau_hevc.o h265_profile_level.o - OBJS-$(CONFIG_MJPEG_NVDEC_HWACCEL) += nvdec_mjpeg.o -diff --git a/libavcodec/hevc-ctrls-v4.h b/libavcodec/hevc-ctrls-v4.h -new file mode 100644 -index 0000000000..7e05f6e7c3 ---- /dev/null -+++ b/libavcodec/hevc-ctrls-v4.h -@@ -0,0 +1,515 @@ -+/* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) */ -+/* -+ * Video for Linux Two controls header file -+ * -+ * Copyright (C) 1999-2012 the contributors -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * Alternatively you can redistribute this file under the terms of the -+ * BSD license as stated below: -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in -+ * the documentation and/or other materials provided with the -+ * distribution. -+ * 3. The names of its contributors may not be used to endorse or promote -+ * products derived from this software without specific prior written -+ * permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * The contents of this header was split off from videodev2.h. All control -+ * definitions should be added to this header, which is included by -+ * videodev2.h. -+ */ -+ -+#ifndef AVCODEC_HEVC_CTRLS_V4_H -+#define AVCODEC_HEVC_CTRLS_V4_H -+ -+#include -+#include -+ -+#define V4L2_CID_STATELESS_HEVC_SPS (V4L2_CID_CODEC_STATELESS_BASE + 400) -+#define V4L2_CID_STATELESS_HEVC_PPS (V4L2_CID_CODEC_STATELESS_BASE + 401) -+#define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 402) -+#define V4L2_CID_STATELESS_HEVC_SCALING_MATRIX (V4L2_CID_CODEC_STATELESS_BASE + 403) -+#define V4L2_CID_STATELESS_HEVC_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 404) -+#define V4L2_CID_STATELESS_HEVC_DECODE_MODE (V4L2_CID_CODEC_STATELESS_BASE + 405) -+#define V4L2_CID_STATELESS_HEVC_START_CODE (V4L2_CID_CODEC_STATELESS_BASE + 406) -+#define V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS (V4L2_CID_CODEC_STATELESS_BASE + 407) -+ -+enum v4l2_stateless_hevc_decode_mode { -+ V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED, -+ V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED, -+}; -+ -+enum v4l2_stateless_hevc_start_code { -+ V4L2_STATELESS_HEVC_START_CODE_NONE, -+ V4L2_STATELESS_HEVC_START_CODE_ANNEX_B, -+}; -+ -+#define V4L2_HEVC_SLICE_TYPE_B 0 -+#define V4L2_HEVC_SLICE_TYPE_P 1 -+#define V4L2_HEVC_SLICE_TYPE_I 2 -+ -+#define V4L2_HEVC_SPS_FLAG_SEPARATE_COLOUR_PLANE (1ULL << 0) -+#define V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED (1ULL << 1) -+#define V4L2_HEVC_SPS_FLAG_AMP_ENABLED (1ULL << 2) -+#define V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET (1ULL << 3) -+#define V4L2_HEVC_SPS_FLAG_PCM_ENABLED (1ULL << 4) -+#define V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED (1ULL << 5) -+#define V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT (1ULL << 6) -+#define V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED (1ULL << 7) -+#define V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED (1ULL << 8) -+ -+/** -+ * struct v4l2_ctrl_hevc_sps - ITU-T Rec. H.265: Sequence parameter set -+ * -+ * @video_parameter_set_id: specifies the value of the -+ * vps_video_parameter_set_id of the active VPS -+ * @seq_parameter_set_id: provides an identifier for the SPS for -+ * reference by other syntax elements -+ * @pic_width_in_luma_samples: specifies the width of each decoded picture -+ * in units of luma samples -+ * @pic_height_in_luma_samples: specifies the height of each decoded picture -+ * in units of luma samples -+ * @bit_depth_luma_minus8: this value plus 8specifies the bit depth of the -+ * samples of the luma array -+ * @bit_depth_chroma_minus8: this value plus 8 specifies the bit depth of the -+ * samples of the chroma arrays -+ * @log2_max_pic_order_cnt_lsb_minus4: this value plus 4 specifies the value of -+ * the variable MaxPicOrderCntLsb -+ * @sps_max_dec_pic_buffering_minus1: this value plus 1 specifies the maximum -+ * required size of the decoded picture -+ * buffer for the codec video sequence -+ * @sps_max_num_reorder_pics: indicates the maximum allowed number of pictures -+ * @sps_max_latency_increase_plus1: not equal to 0 is used to compute the -+ * value of SpsMaxLatencyPictures array -+ * @log2_min_luma_coding_block_size_minus3: plus 3 specifies the minimum -+ * luma coding block size -+ * @log2_diff_max_min_luma_coding_block_size: specifies the difference between -+ * the maximum and minimum luma -+ * coding block size -+ * @log2_min_luma_transform_block_size_minus2: plus 2 specifies the minimum luma -+ * transform block size -+ * @log2_diff_max_min_luma_transform_block_size: specifies the difference between -+ * the maximum and minimum luma -+ * transform block size -+ * @max_transform_hierarchy_depth_inter: specifies the maximum hierarchy -+ * depth for transform units of -+ * coding units coded in inter -+ * prediction mode -+ * @max_transform_hierarchy_depth_intra: specifies the maximum hierarchy -+ * depth for transform units of -+ * coding units coded in intra -+ * prediction mode -+ * @pcm_sample_bit_depth_luma_minus1: this value plus 1 specifies the number of -+ * bits used to represent each of PCM sample -+ * values of the luma component -+ * @pcm_sample_bit_depth_chroma_minus1: this value plus 1 specifies the number -+ * of bits used to represent each of PCM -+ * sample values of the chroma components -+ * @log2_min_pcm_luma_coding_block_size_minus3: this value plus 3 specifies the -+ * minimum size of coding blocks -+ * @log2_diff_max_min_pcm_luma_coding_block_size: specifies the difference between -+ * the maximum and minimum size of -+ * coding blocks -+ * @num_short_term_ref_pic_sets: specifies the number of st_ref_pic_set() -+ * syntax structures included in the SPS -+ * @num_long_term_ref_pics_sps: specifies the number of candidate long-term -+ * reference pictures that are specified in the SPS -+ * @chroma_format_idc: specifies the chroma sampling -+ * @sps_max_sub_layers_minus1: this value plus 1 specifies the maximum number -+ * of temporal sub-layers -+ * @reserved: padding field. Should be zeroed by applications. -+ * @flags: see V4L2_HEVC_SPS_FLAG_{} -+ */ -+struct v4l2_ctrl_hevc_sps { -+ __u8 video_parameter_set_id; -+ __u8 seq_parameter_set_id; -+ __u16 pic_width_in_luma_samples; -+ __u16 pic_height_in_luma_samples; -+ __u8 bit_depth_luma_minus8; -+ __u8 bit_depth_chroma_minus8; -+ __u8 log2_max_pic_order_cnt_lsb_minus4; -+ __u8 sps_max_dec_pic_buffering_minus1; -+ __u8 sps_max_num_reorder_pics; -+ __u8 sps_max_latency_increase_plus1; -+ __u8 log2_min_luma_coding_block_size_minus3; -+ __u8 log2_diff_max_min_luma_coding_block_size; -+ __u8 log2_min_luma_transform_block_size_minus2; -+ __u8 log2_diff_max_min_luma_transform_block_size; -+ __u8 max_transform_hierarchy_depth_inter; -+ __u8 max_transform_hierarchy_depth_intra; -+ __u8 pcm_sample_bit_depth_luma_minus1; -+ __u8 pcm_sample_bit_depth_chroma_minus1; -+ __u8 log2_min_pcm_luma_coding_block_size_minus3; -+ __u8 log2_diff_max_min_pcm_luma_coding_block_size; -+ __u8 num_short_term_ref_pic_sets; -+ __u8 num_long_term_ref_pics_sps; -+ __u8 chroma_format_idc; -+ __u8 sps_max_sub_layers_minus1; -+ -+ __u8 reserved[6]; -+ __u64 flags; -+}; -+ -+#define V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT_ENABLED (1ULL << 0) -+#define V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT (1ULL << 1) -+#define V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED (1ULL << 2) -+#define V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT (1ULL << 3) -+#define V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED (1ULL << 4) -+#define V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED (1ULL << 5) -+#define V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED (1ULL << 6) -+#define V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT (1ULL << 7) -+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED (1ULL << 8) -+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED (1ULL << 9) -+#define V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED (1ULL << 10) -+#define V4L2_HEVC_PPS_FLAG_TILES_ENABLED (1ULL << 11) -+#define V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED (1ULL << 12) -+#define V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED (1ULL << 13) -+#define V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 14) -+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED (1ULL << 15) -+#define V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER (1ULL << 16) -+#define V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT (1ULL << 17) -+#define V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT (1ULL << 18) -+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT (1ULL << 19) -+#define V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING (1ULL << 20) -+ -+/** -+ * struct v4l2_ctrl_hevc_pps - ITU-T Rec. H.265: Picture parameter set -+ * -+ * @pic_parameter_set_id: identifies the PPS for reference by other -+ * syntax elements -+ * @num_extra_slice_header_bits: specifies the number of extra slice header -+ * bits that are present in the slice header RBSP -+ * for coded pictures referring to the PPS. -+ * @num_ref_idx_l0_default_active_minus1: this value plus 1 specifies the -+ * inferred value of num_ref_idx_l0_active_minus1 -+ * @num_ref_idx_l1_default_active_minus1: this value plus 1 specifies the -+ * inferred value of num_ref_idx_l1_active_minus1 -+ * @init_qp_minus26: this value plus 26 specifies the initial value of SliceQp Y for -+ * each slice referring to the PPS -+ * @diff_cu_qp_delta_depth: specifies the difference between the luma coding -+ * tree block size and the minimum luma coding block -+ * size of coding units that convey cu_qp_delta_abs -+ * and cu_qp_delta_sign_flag -+ * @pps_cb_qp_offset: specify the offsets to the luma quantization parameter Cb -+ * @pps_cr_qp_offset: specify the offsets to the luma quantization parameter Cr -+ * @num_tile_columns_minus1: this value plus 1 specifies the number of tile columns -+ * partitioning the picture -+ * @num_tile_rows_minus1: this value plus 1 specifies the number of tile rows partitioning -+ * the picture -+ * @column_width_minus1: this value plus 1 specifies the width of the each tile column in -+ * units of coding tree blocks -+ * @row_height_minus1: this value plus 1 specifies the height of the each tile row in -+ * units of coding tree blocks -+ * @pps_beta_offset_div2: specify the default deblocking parameter offsets for -+ * beta divided by 2 -+ * @pps_tc_offset_div2: specify the default deblocking parameter offsets for tC -+ * divided by 2 -+ * @log2_parallel_merge_level_minus2: this value plus 2 specifies the value of -+ * the variable Log2ParMrgLevel -+ * @reserved: padding field. Should be zeroed by applications. -+ * @flags: see V4L2_HEVC_PPS_FLAG_{} -+ */ -+struct v4l2_ctrl_hevc_pps { -+ __u8 pic_parameter_set_id; -+ __u8 num_extra_slice_header_bits; -+ __u8 num_ref_idx_l0_default_active_minus1; -+ __u8 num_ref_idx_l1_default_active_minus1; -+ __s8 init_qp_minus26; -+ __u8 diff_cu_qp_delta_depth; -+ __s8 pps_cb_qp_offset; -+ __s8 pps_cr_qp_offset; -+ __u8 num_tile_columns_minus1; -+ __u8 num_tile_rows_minus1; -+ __u8 column_width_minus1[20]; -+ __u8 row_height_minus1[22]; -+ __s8 pps_beta_offset_div2; -+ __s8 pps_tc_offset_div2; -+ __u8 log2_parallel_merge_level_minus2; -+ __u8 reserved; -+ __u64 flags; -+}; -+ -+#define V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE 0x01 -+ -+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME 0 -+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_FIELD 1 -+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_FIELD 2 -+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM 3 -+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP 4 -+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM_TOP 5 -+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM 6 -+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME_DOUBLING 7 -+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME_TRIPLING 8 -+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_PREVIOUS_BOTTOM 9 -+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_PREVIOUS_TOP 10 -+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_NEXT_BOTTOM 11 -+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_NEXT_TOP 12 -+ -+#define V4L2_HEVC_DPB_ENTRIES_NUM_MAX 16 -+ -+/** -+ * struct v4l2_hevc_dpb_entry - HEVC decoded picture buffer entry -+ * -+ * @timestamp: timestamp of the V4L2 capture buffer to use as reference. -+ * @flags: long term flag for the reference frame -+ * @field_pic: whether the reference is a field picture or a frame. -+ * @reserved: padding field. Should be zeroed by applications. -+ * @pic_order_cnt_val: the picture order count of the current picture. -+ */ -+struct v4l2_hevc_dpb_entry { -+ __u64 timestamp; -+ __u8 flags; -+ __u8 field_pic; -+ __u16 reserved; -+ __s32 pic_order_cnt_val; -+}; -+ -+/** -+ * struct v4l2_hevc_pred_weight_table - HEVC weighted prediction parameters -+ * -+ * @delta_luma_weight_l0: the difference of the weighting factor applied -+ * to the luma prediction value for list 0 -+ * @luma_offset_l0: the additive offset applied to the luma prediction value -+ * for list 0 -+ * @delta_chroma_weight_l0: the difference of the weighting factor applied -+ * to the chroma prediction values for list 0 -+ * @chroma_offset_l0: the difference of the additive offset applied to -+ * the chroma prediction values for list 0 -+ * @delta_luma_weight_l1: the difference of the weighting factor applied -+ * to the luma prediction value for list 1 -+ * @luma_offset_l1: the additive offset applied to the luma prediction value -+ * for list 1 -+ * @delta_chroma_weight_l1: the difference of the weighting factor applied -+ * to the chroma prediction values for list 1 -+ * @chroma_offset_l1: the difference of the additive offset applied to -+ * the chroma prediction values for list 1 -+ * @luma_log2_weight_denom: the base 2 logarithm of the denominator for -+ * all luma weighting factors -+ * @delta_chroma_log2_weight_denom: the difference of the base 2 logarithm -+ * of the denominator for all chroma -+ * weighting factors -+ */ -+struct v4l2_hevc_pred_weight_table { -+ __s8 delta_luma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __s8 luma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __s8 delta_chroma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]; -+ __s8 chroma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]; -+ -+ __s8 delta_luma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __s8 luma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __s8 delta_chroma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]; -+ __s8 chroma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]; -+ -+ __u8 luma_log2_weight_denom; -+ __s8 delta_chroma_log2_weight_denom; -+}; -+ -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_LUMA (1ULL << 0) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_CHROMA (1ULL << 1) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_TEMPORAL_MVP_ENABLED (1ULL << 2) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_MVD_L1_ZERO (1ULL << 3) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_CABAC_INIT (1ULL << 4) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_COLLOCATED_FROM_L0 (1ULL << 5) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_USE_INTEGER_MV (1ULL << 6) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_DEBLOCKING_FILTER_DISABLED (1ULL << 7) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 8) -+#define V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT (1ULL << 9) -+ -+/** -+ * struct v4l2_ctrl_hevc_slice_params - HEVC slice parameters -+ * -+ * This control is a dynamically sized 1-dimensional array, -+ * V4L2_CTRL_FLAG_DYNAMIC_ARRAY flag must be set when using it. -+ * -+ * @bit_size: size (in bits) of the current slice data -+ * @data_byte_offset: offset (in bytes) to the video data in the current slice data -+ * @num_entry_point_offsets: specifies the number of entry point offset syntax -+ * elements in the slice header. -+ * @nal_unit_type: specifies the coding type of the slice (B, P or I) -+ * @nuh_temporal_id_plus1: minus 1 specifies a temporal identifier for the NAL unit -+ * @slice_type: see V4L2_HEVC_SLICE_TYPE_{} -+ * @colour_plane_id: specifies the colour plane associated with the current slice -+ * @slice_pic_order_cnt: specifies the picture order count -+ * @num_ref_idx_l0_active_minus1: this value plus 1 specifies the maximum -+ * reference index for reference picture list 0 -+ * that may be used to decode the slice -+ * @num_ref_idx_l1_active_minus1: this value plus 1 specifies the maximum -+ * reference index for reference picture list 1 -+ * that may be used to decode the slice -+ * @collocated_ref_idx: specifies the reference index of the collocated picture used -+ * for temporal motion vector prediction -+ * @five_minus_max_num_merge_cand: specifies the maximum number of merging -+ * motion vector prediction candidates supported in -+ * the slice subtracted from 5 -+ * @slice_qp_delta: specifies the initial value of QpY to be used for the coding -+ * blocks in the slice -+ * @slice_cb_qp_offset: specifies a difference to be added to the value of pps_cb_qp_offset -+ * @slice_cr_qp_offset: specifies a difference to be added to the value of pps_cr_qp_offset -+ * @slice_act_y_qp_offset: screen content extension parameters -+ * @slice_act_cb_qp_offset: screen content extension parameters -+ * @slice_act_cr_qp_offset: screen content extension parameters -+ * @slice_beta_offset_div2: specify the deblocking parameter offsets for beta divided by 2 -+ * @slice_tc_offset_div2: specify the deblocking parameter offsets for tC divided by 2 -+ * @pic_struct: indicates whether a picture should be displayed as a frame or as one or -+ * more fields -+ * @reserved0: padding field. Should be zeroed by applications. -+ * @slice_segment_addr: specifies the address of the first coding tree block in -+ * the slice segment -+ * @ref_idx_l0: the list of L0 reference elements as indices in the DPB -+ * @ref_idx_l1: the list of L1 reference elements as indices in the DPB -+ * @short_term_ref_pic_set_size: specifies the size of short-term reference -+ * pictures set included in the SPS -+ * @long_term_ref_pic_set_size: specifies the size of long-term reference -+ * pictures set include in the SPS -+ * @pred_weight_table: the prediction weight coefficients for inter-picture -+ * prediction -+ * @reserved1: padding field. Should be zeroed by applications. -+ * @flags: see V4L2_HEVC_SLICE_PARAMS_FLAG_{} -+ */ -+struct v4l2_ctrl_hevc_slice_params { -+ __u32 bit_size; -+ __u32 data_byte_offset; -+ __u32 num_entry_point_offsets; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: NAL unit header */ -+ __u8 nal_unit_type; -+ __u8 nuh_temporal_id_plus1; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */ -+ __u8 slice_type; -+ __u8 colour_plane_id; -+ __s32 slice_pic_order_cnt; -+ __u8 num_ref_idx_l0_active_minus1; -+ __u8 num_ref_idx_l1_active_minus1; -+ __u8 collocated_ref_idx; -+ __u8 five_minus_max_num_merge_cand; -+ __s8 slice_qp_delta; -+ __s8 slice_cb_qp_offset; -+ __s8 slice_cr_qp_offset; -+ __s8 slice_act_y_qp_offset; -+ __s8 slice_act_cb_qp_offset; -+ __s8 slice_act_cr_qp_offset; -+ __s8 slice_beta_offset_div2; -+ __s8 slice_tc_offset_div2; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: Picture timing SEI message */ -+ __u8 pic_struct; -+ -+ __u8 reserved0[3]; -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */ -+ __u32 slice_segment_addr; -+ __u8 ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __u8 ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __u16 short_term_ref_pic_set_size; -+ __u16 long_term_ref_pic_set_size; -+ -+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: Weighted prediction parameter */ -+ struct v4l2_hevc_pred_weight_table pred_weight_table; -+ -+ __u8 reserved1[2]; -+ __u64 flags; -+}; -+ -+#define V4L2_HEVC_DECODE_PARAM_FLAG_IRAP_PIC 0x1 -+#define V4L2_HEVC_DECODE_PARAM_FLAG_IDR_PIC 0x2 -+#define V4L2_HEVC_DECODE_PARAM_FLAG_NO_OUTPUT_OF_PRIOR 0x4 -+ -+/** -+ * struct v4l2_ctrl_hevc_decode_params - HEVC decode parameters -+ * -+ * @pic_order_cnt_val: picture order count -+ * @short_term_ref_pic_set_size: specifies the size of short-term reference -+ * pictures set included in the SPS of the first slice -+ * @long_term_ref_pic_set_size: specifies the size of long-term reference -+ * pictures set include in the SPS of the first slice -+ * @num_active_dpb_entries: the number of entries in dpb -+ * @num_poc_st_curr_before: the number of reference pictures in the short-term -+ * set that come before the current frame -+ * @num_poc_st_curr_after: the number of reference pictures in the short-term -+ * set that come after the current frame -+ * @num_poc_lt_curr: the number of reference pictures in the long-term set -+ * @poc_st_curr_before: provides the index of the short term before references -+ * in DPB array -+ * @poc_st_curr_after: provides the index of the short term after references -+ * in DPB array -+ * @poc_lt_curr: provides the index of the long term references in DPB array -+ * @reserved: padding field. Should be zeroed by applications. -+ * @dpb: the decoded picture buffer, for meta-data about reference frames -+ * @flags: see V4L2_HEVC_DECODE_PARAM_FLAG_{} -+ */ -+struct v4l2_ctrl_hevc_decode_params { -+ __s32 pic_order_cnt_val; -+ __u16 short_term_ref_pic_set_size; -+ __u16 long_term_ref_pic_set_size; -+ __u8 num_active_dpb_entries; -+ __u8 num_poc_st_curr_before; -+ __u8 num_poc_st_curr_after; -+ __u8 num_poc_lt_curr; -+ __u8 poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __u8 poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __u8 poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __u8 reserved[4]; -+ struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; -+ __u64 flags; -+}; -+ -+/** -+ * struct v4l2_ctrl_hevc_scaling_matrix - HEVC scaling lists parameters -+ * -+ * @scaling_list_4x4: scaling list is used for the scaling process for -+ * transform coefficients. The values on each scaling -+ * list are expected in raster scan order -+ * @scaling_list_8x8: scaling list is used for the scaling process for -+ * transform coefficients. The values on each scaling -+ * list are expected in raster scan order -+ * @scaling_list_16x16: scaling list is used for the scaling process for -+ * transform coefficients. The values on each scaling -+ * list are expected in raster scan order -+ * @scaling_list_32x32: scaling list is used for the scaling process for -+ * transform coefficients. The values on each scaling -+ * list are expected in raster scan order -+ * @scaling_list_dc_coef_16x16: scaling list is used for the scaling process -+ * for transform coefficients. The values on each -+ * scaling list are expected in raster scan order. -+ * @scaling_list_dc_coef_32x32: scaling list is used for the scaling process -+ * for transform coefficients. The values on each -+ * scaling list are expected in raster scan order. -+ */ -+struct v4l2_ctrl_hevc_scaling_matrix { -+ __u8 scaling_list_4x4[6][16]; -+ __u8 scaling_list_8x8[6][64]; -+ __u8 scaling_list_16x16[6][64]; -+ __u8 scaling_list_32x32[2][64]; -+ __u8 scaling_list_dc_coef_16x16[6]; -+ __u8 scaling_list_dc_coef_32x32[2]; -+}; -+ -+#endif -diff --git a/libavcodec/v4l2_req_hevc_v4.c b/libavcodec/v4l2_req_hevc_v4.c -new file mode 100644 -index 0000000000..c35579d8e0 ---- /dev/null -+++ b/libavcodec/v4l2_req_hevc_v4.c -@@ -0,0 +1,3 @@ -+#define HEVC_CTRLS_VERSION 4 -+#include "v4l2_req_hevc_vx.c" -+ -diff --git a/libavcodec/v4l2_req_hevc_vx.c b/libavcodec/v4l2_req_hevc_vx.c -index 611fa21cc3..761c5b2dc7 100644 ---- a/libavcodec/v4l2_req_hevc_vx.c -+++ b/libavcodec/v4l2_req_hevc_vx.c -@@ -6,8 +6,6 @@ - #include "internal.h" - #include "thread.h" - --#include "v4l2_request_hevc.h" -- - #if HEVC_CTRLS_VERSION == 1 - #include "hevc-ctrls-v1.h" - -@@ -18,10 +16,37 @@ - #include "hevc-ctrls-v2.h" - #elif HEVC_CTRLS_VERSION == 3 - #include "hevc-ctrls-v3.h" -+#elif HEVC_CTRLS_VERSION == 4 -+#include -+#if !defined(V4L2_CID_STATELESS_HEVC_SPS) -+#include "hevc-ctrls-v4.h" -+#endif - #else - #error Unknown HEVC_CTRLS_VERSION - #endif - -+#ifndef V4L2_CID_STATELESS_HEVC_SPS -+#define V4L2_CID_STATELESS_HEVC_SPS V4L2_CID_MPEG_VIDEO_HEVC_SPS -+#define V4L2_CID_STATELESS_HEVC_PPS V4L2_CID_MPEG_VIDEO_HEVC_PPS -+#define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS -+#define V4L2_CID_STATELESS_HEVC_SCALING_MATRIX V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX -+#define V4L2_CID_STATELESS_HEVC_DECODE_PARAMS V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS -+#define V4L2_CID_STATELESS_HEVC_DECODE_MODE V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE -+#define V4L2_CID_STATELESS_HEVC_START_CODE V4L2_CID_MPEG_VIDEO_HEVC_START_CODE -+ -+#define V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_SLICE_BASED -+#define V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_FRAME_BASED -+#define V4L2_STATELESS_HEVC_START_CODE_NONE V4L2_MPEG_VIDEO_HEVC_START_CODE_NONE -+#define V4L2_STATELESS_HEVC_START_CODE_ANNEX_B V4L2_MPEG_VIDEO_HEVC_START_CODE_ANNEX_B -+#endif -+ -+// Should be in videodev2 but we might not have a good enough one -+#ifndef V4L2_PIX_FMT_HEVC_SLICE -+#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC parsed slices */ -+#endif -+ -+#include "v4l2_request_hevc.h" -+ - #include "libavutil/hwcontext_drm.h" - - #include -@@ -259,9 +284,13 @@ fill_dpb_entries(const HEVCContext * const h, struct v4l2_hevc_dpb_entry * const - #endif - entry->field_pic = frame->frame->interlaced_frame; - -+#if HEVC_CTRLS_VERSION <= 3 - /* TODO: Interleaved: Get the POC for each field. */ - entry->pic_order_cnt[0] = frame->poc; - entry->pic_order_cnt[1] = frame->poc; -+#else -+ entry->pic_order_cnt_val = frame->poc; -+#endif - } - } - return n; -@@ -287,8 +316,11 @@ static void fill_slice_params(const HEVCContext * const h, - - *slice_params = (struct v4l2_ctrl_hevc_slice_params) { - .bit_size = bit_size, -+#if HEVC_CTRLS_VERSION <= 3 - .data_bit_offset = bit_offset, -- -+#else -+ .data_byte_offset = bit_offset / 8 + 1, -+#endif - /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */ - .slice_segment_addr = sh->slice_segment_addr, - -@@ -376,8 +408,10 @@ static void fill_slice_params(const HEVCContext * const h, - av_log(NULL, AV_LOG_ERROR, "%s: Currently only 256 entry points are supported, but slice has %d entry points.\n", __func__, sh->num_entry_point_offsets); - } - -+#if HEVC_CTRLS_VERSION <= 3 - for (i = 0; i < slice_params->num_entry_point_offsets; i++) - slice_params->entry_point_offset_minus1[i] = sh->entry_point_offset[i] - 1; -+#endif - } - - #if HEVC_CTRLS_VERSION >= 2 -@@ -761,30 +795,30 @@ set_req_ctls(V4L2RequestContextHEVC *ctx, struct media_request * const mreq, - - struct v4l2_ext_control control[] = { - { -- .id = V4L2_CID_MPEG_VIDEO_HEVC_SPS, -+ .id = V4L2_CID_STATELESS_HEVC_SPS, - .ptr = &controls->sps, - .size = sizeof(controls->sps), - }, - { -- .id = V4L2_CID_MPEG_VIDEO_HEVC_PPS, -+ .id = V4L2_CID_STATELESS_HEVC_PPS, - .ptr = &controls->pps, - .size = sizeof(controls->pps), - }, - #if HEVC_CTRLS_VERSION >= 2 - { -- .id = V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS, -+ .id = V4L2_CID_STATELESS_HEVC_DECODE_PARAMS, - .ptr = dec, - .size = sizeof(*dec), - }, - #endif - { -- .id = V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS, -+ .id = V4L2_CID_STATELESS_HEVC_SLICE_PARAMS, - .ptr = slices + slice_no, - .size = sizeof(*slices) * slice_count, - }, - // Optional - { -- .id = V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX, -+ .id = V4L2_CID_STATELESS_HEVC_SCALING_MATRIX, - .ptr = &controls->scaling_matrix, - .size = sizeof(controls->scaling_matrix), - }, -@@ -1000,12 +1034,12 @@ probe(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) - - // Check for var slice array - struct v4l2_query_ext_ctrl qc[] = { -- { .id = V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS }, -- { .id = V4L2_CID_MPEG_VIDEO_HEVC_SPS }, -- { .id = V4L2_CID_MPEG_VIDEO_HEVC_PPS }, -- { .id = V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX }, -+ { .id = V4L2_CID_STATELESS_HEVC_SLICE_PARAMS }, -+ { .id = V4L2_CID_STATELESS_HEVC_SPS }, -+ { .id = V4L2_CID_STATELESS_HEVC_PPS }, -+ { .id = V4L2_CID_STATELESS_HEVC_SCALING_MATRIX }, - #if HEVC_CTRLS_VERSION >= 2 -- { .id = V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS }, -+ { .id = V4L2_CID_STATELESS_HEVC_DECODE_PARAMS }, - #endif - }; - // Order & size must match! -@@ -1042,12 +1076,13 @@ probe(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) - - fill_sps(&ctrl_sps, sps); - -- if (mediabufs_set_ext_ctrl(ctx->mbufs, NULL, V4L2_CID_MPEG_VIDEO_HEVC_SPS, &ctrl_sps, sizeof(ctrl_sps))) { -+ if (mediabufs_set_ext_ctrl(ctx->mbufs, NULL, V4L2_CID_STATELESS_HEVC_SPS, &ctrl_sps, sizeof(ctrl_sps))) { - av_log(avctx, AV_LOG_ERROR, "Failed to set initial SPS\n"); - return AVERROR(EINVAL); - } - - ctx->multi_slice = (qc[0].flags & V4L2_CTRL_FLAG_DYNAMIC_ARRAY) != 0; -+ av_log(avctx, AV_LOG_INFO, "%s SPS muti-slice\n", ctx->multi_slice ? "Has" : "No"); - return 0; - } - -@@ -1058,29 +1093,29 @@ set_controls(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) - int ret; - - struct v4l2_query_ext_ctrl querys[] = { -- { .id = V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE, }, -- { .id = V4L2_CID_MPEG_VIDEO_HEVC_START_CODE, }, -- { .id = V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS, }, -+ { .id = V4L2_CID_STATELESS_HEVC_DECODE_MODE, }, -+ { .id = V4L2_CID_STATELESS_HEVC_START_CODE, }, -+ { .id = V4L2_CID_STATELESS_HEVC_SLICE_PARAMS, }, - }; - - struct v4l2_ext_control ctrls[] = { -- { .id = V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE, }, -- { .id = V4L2_CID_MPEG_VIDEO_HEVC_START_CODE, }, -+ { .id = V4L2_CID_STATELESS_HEVC_DECODE_MODE, }, -+ { .id = V4L2_CID_STATELESS_HEVC_START_CODE, }, - }; - - mediabufs_ctl_query_ext_ctrls(ctx->mbufs, querys, FF_ARRAY_ELEMS(querys)); - - ctx->decode_mode = querys[0].default_value; - -- if (ctx->decode_mode != V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_SLICE_BASED && -- ctx->decode_mode != V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_FRAME_BASED) { -+ if (ctx->decode_mode != V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED && -+ ctx->decode_mode != V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED) { - av_log(avctx, AV_LOG_ERROR, "%s: unsupported decode mode, %d\n", __func__, ctx->decode_mode); - return AVERROR(EINVAL); - } - - ctx->start_code = querys[1].default_value; -- if (ctx->start_code != V4L2_MPEG_VIDEO_HEVC_START_CODE_NONE && -- ctx->start_code != V4L2_MPEG_VIDEO_HEVC_START_CODE_ANNEX_B) { -+ if (ctx->start_code != V4L2_STATELESS_HEVC_START_CODE_NONE && -+ ctx->start_code != V4L2_STATELESS_HEVC_START_CODE_ANNEX_B) { - av_log(avctx, AV_LOG_ERROR, "%s: unsupported start code, %d\n", __func__, ctx->start_code); - return AVERROR(EINVAL); - } -diff --git a/libavcodec/v4l2_request_hevc.c b/libavcodec/v4l2_request_hevc.c -index 20e4e0ab15..cd79aad563 100644 ---- a/libavcodec/v4l2_request_hevc.c -+++ b/libavcodec/v4l2_request_hevc.c -@@ -210,7 +210,11 @@ static int v4l2_request_hevc_init(AVCodecContext *avctx) - goto fail4; - } - -- if (V2(ff_v4l2_req_hevc, 3).probe(avctx, ctx) == 0) { -+ if (V2(ff_v4l2_req_hevc, 4).probe(avctx, ctx) == 0) { -+ av_log(avctx, AV_LOG_DEBUG, "HEVC API version 4 probed successfully\n"); -+ ctx->fns = &V2(ff_v4l2_req_hevc, 4); -+ } -+ else if (V2(ff_v4l2_req_hevc, 3).probe(avctx, ctx) == 0) { - av_log(avctx, AV_LOG_DEBUG, "HEVC API version 3 probed successfully\n"); - ctx->fns = &V2(ff_v4l2_req_hevc, 3); - } -diff --git a/libavcodec/v4l2_request_hevc.h b/libavcodec/v4l2_request_hevc.h -index ed48d62e2d..d4adb3f812 100644 ---- a/libavcodec/v4l2_request_hevc.h -+++ b/libavcodec/v4l2_request_hevc.h -@@ -99,5 +99,6 @@ typedef struct v4l2_req_decode_fns { - extern const v4l2_req_decode_fns V2(ff_v4l2_req_hevc, 1); - extern const v4l2_req_decode_fns V2(ff_v4l2_req_hevc, 2); - extern const v4l2_req_decode_fns V2(ff_v4l2_req_hevc, 3); -+extern const v4l2_req_decode_fns V2(ff_v4l2_req_hevc, 4); - - #endif - -From 21a348ae3282318fa96d3a6e2c70f3d4b90a7d52 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Sun, 3 Jul 2022 13:40:41 +0000 -Subject: [PATCH 057/151] v4l2_req: Observe limit on size of slice_array - -This in fact provides some minor simplifications by combing the -multi-slice and single-slice paths. - -(cherry picked from commit 7631e6d1a66fca9048605c214f3464c90d37932c) ---- - libavcodec/v4l2_req_hevc_vx.c | 39 ++++++++++++++-------------------- - libavcodec/v4l2_request_hevc.h | 5 +---- - 2 files changed, 17 insertions(+), 27 deletions(-) - -diff --git a/libavcodec/v4l2_req_hevc_vx.c b/libavcodec/v4l2_req_hevc_vx.c -index 761c5b2dc7..9d08d13d9e 100644 ---- a/libavcodec/v4l2_req_hevc_vx.c -+++ b/libavcodec/v4l2_req_hevc_vx.c -@@ -840,18 +840,21 @@ static int v4l2_request_hevc_decode_slice(AVCodecContext *avctx, const uint8_t * - int bcount = get_bits_count(&h->HEVClc->gb); - uint32_t boff = (ptr_from_index(buffer, bcount/8 + 1) - (buffer + bcount/8 + 1)) * 8 + bcount; - -+ const unsigned int n = rd->num_slices; -+ const unsigned int block_start = (n / ctx->max_slices) * ctx->max_slices; -+ - int rv; - struct slice_info * si; - - if ((rv = slice_add(rd)) != 0) - return rv; - -- si = rd->slices + rd->num_slices - 1; -+ si = rd->slices + n; - si->ptr = buffer; - si->len = size; - -- if (ctx->multi_slice && rd->num_slices > 1) { -- struct slice_info *const si0 = rd->slices; -+ if (n != block_start) { -+ struct slice_info *const si0 = rd->slices + block_start; - const size_t offset = (buffer - si0->ptr); - boff += offset * 8; - size += offset; -@@ -859,11 +862,11 @@ static int v4l2_request_hevc_decode_slice(AVCodecContext *avctx, const uint8_t * - } - - #if HEVC_CTRLS_VERSION >= 2 -- if (rd->num_slices == 1) -+ if (n == 0) - fill_decode_params(h, &rd->dec); -- fill_slice_params(h, &rd->dec, rd->slice_params + rd->num_slices - 1, size * 8, boff); -+ fill_slice_params(h, &rd->dec, rd->slice_params + n, size * 8, boff); - #else -- fill_slice_params(h, rd->slice_params + rd->num_slices - 1, size * 8, boff); -+ fill_slice_params(h, rd->slice_params + n, size * 8, boff); - #endif - - return 0; -@@ -997,18 +1000,11 @@ static int v4l2_request_hevc_end_frame(AVCodecContext *avctx) - } - - // Send as slices -- if (ctx->multi_slice) -- { -- if ((rv = send_slice(avctx, rd, &rc, 0, rd->num_slices)) != 0) -+ for (i = 0; i < rd->num_slices; i += ctx->max_slices) { -+ const unsigned int e = FFMIN(rd->num_slices, i + ctx->max_slices); -+ if ((rv = send_slice(avctx, rd, &rc, i, e)) != 0) - goto fail; - } -- else -- { -- for (i = 0; i != rd->num_slices; ++i) { -- if ((rv = send_slice(avctx, rd, &rc, i, i + 1)) != 0) -- goto fail; -- } -- } - - // Set the drm_prime desriptor - drm_from_format(&rd->drm, mediabufs_dst_fmt(ctx->mbufs)); -@@ -1081,8 +1077,6 @@ probe(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) - return AVERROR(EINVAL); - } - -- ctx->multi_slice = (qc[0].flags & V4L2_CTRL_FLAG_DYNAMIC_ARRAY) != 0; -- av_log(avctx, AV_LOG_INFO, "%s SPS muti-slice\n", ctx->multi_slice ? "Has" : "No"); - return 0; - } - -@@ -1120,11 +1114,10 @@ set_controls(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) - return AVERROR(EINVAL); - } - -- ctx->max_slices = querys[2].elems; -- if (ctx->max_slices > MAX_SLICES) { -- av_log(avctx, AV_LOG_ERROR, "%s: unsupported max slices, %d\n", __func__, ctx->max_slices); -- return AVERROR(EINVAL); -- } -+ ctx->max_slices = (!(querys[2].flags & V4L2_CTRL_FLAG_DYNAMIC_ARRAY) || -+ querys[2].nr_of_dims != 1 || querys[2].dims[0] == 0) ? -+ 1 : querys[2].dims[0]; -+ av_log(avctx, AV_LOG_DEBUG, "%s: Max slices %d\n", __func__, ctx->max_slices); - - ctrls[0].value = ctx->decode_mode; - ctrls[1].value = ctx->start_code; -diff --git a/libavcodec/v4l2_request_hevc.h b/libavcodec/v4l2_request_hevc.h -index d4adb3f812..0029e23309 100644 ---- a/libavcodec/v4l2_request_hevc.h -+++ b/libavcodec/v4l2_request_hevc.h -@@ -46,8 +46,6 @@ - #define V4L2_CTRL_FLAG_DYNAMIC_ARRAY 0x0800 - #endif - --#define MAX_SLICES 128 -- - #define VCAT(name, version) name##_v##version - #define V2(n,v) VCAT(n, v) - #define V(n) V2(n, HEVC_CTRLS_VERSION) -@@ -64,10 +62,9 @@ typedef struct V4L2RequestContextHEVC { - - unsigned int timestamp; // ?? maybe uint64_t - -- int multi_slice; - int decode_mode; - int start_code; -- int max_slices; -+ unsigned int max_slices; - - req_decode_q decode_q; - - -From 4f1d74cc8eea6a1bd6f2317a10c0ecf620315dec Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 4 Jul 2022 14:43:20 +0100 -Subject: [PATCH 058/151] v4l2_req: Add entry point offsets array control - ---- - libavcodec/v4l2_req_hevc_vx.c | 88 +++++++++++++++++++++++++++------- - libavcodec/v4l2_request_hevc.h | 3 +- - 2 files changed, 72 insertions(+), 19 deletions(-) - -diff --git a/libavcodec/v4l2_req_hevc_vx.c b/libavcodec/v4l2_req_hevc_vx.c -index 9d08d13d9e..43ef6631ed 100644 ---- a/libavcodec/v4l2_req_hevc_vx.c -+++ b/libavcodec/v4l2_req_hevc_vx.c -@@ -82,11 +82,16 @@ typedef struct V4L2MediaReqDescriptor { - struct v4l2_ctrl_hevc_slice_params * slice_params; - struct slice_info * slices; - -+ size_t num_offsets; -+ size_t alloced_offsets; -+ uint32_t *offsets; -+ - } V4L2MediaReqDescriptor; - - struct slice_info { - const uint8_t * ptr; - size_t len; // bytes -+ size_t n_offsets; - }; - - // Handy container for accumulating controls before setting -@@ -245,7 +250,7 @@ static int slice_add(V4L2MediaReqDescriptor * const rd) - if (rd->num_slices >= rd->alloced_slices) { - struct v4l2_ctrl_hevc_slice_params * p2; - struct slice_info * s2; -- size_t n2 = rd->num_slices == 0 ? 8 : rd->num_slices * 2; -+ size_t n2 = rd->alloced_slices == 0 ? 8 : rd->alloced_slices * 2; - - p2 = av_realloc_array(rd->slice_params, n2, sizeof(*p2)); - if (p2 == NULL) -@@ -263,6 +268,23 @@ static int slice_add(V4L2MediaReqDescriptor * const rd) - return 0; - } - -+static int offsets_add(V4L2MediaReqDescriptor *const rd, const size_t n, const unsigned * const offsets) -+{ -+ if (rd->num_offsets + n > rd->alloced_offsets) { -+ size_t n2 = rd->alloced_slices == 0 ? 128 : rd->alloced_slices * 2; -+ void * p2; -+ while (rd->num_offsets + n > n2) -+ n2 *= 2; -+ if ((p2 = av_realloc_array(rd->offsets, n2, sizeof(*rd->offsets))) == NULL) -+ return AVERROR(ENOMEM); -+ rd->offsets = p2; -+ rd->alloced_offsets = n2; -+ } -+ for (size_t i = 0; i != n; ++i) -+ rd->offsets[rd->num_offsets++] = offsets[i] - 1; -+ return 0; -+} -+ - static unsigned int - fill_dpb_entries(const HEVCContext * const h, struct v4l2_hevc_dpb_entry * const entries) - { -@@ -403,12 +425,12 @@ static void fill_slice_params(const HEVCContext * const h, - fill_pred_table(h, &slice_params->pred_weight_table); - - slice_params->num_entry_point_offsets = sh->num_entry_point_offsets; -+#if HEVC_CTRLS_VERSION <= 3 - if (slice_params->num_entry_point_offsets > 256) { - slice_params->num_entry_point_offsets = 256; - av_log(NULL, AV_LOG_ERROR, "%s: Currently only 256 entry points are supported, but slice has %d entry points.\n", __func__, sh->num_entry_point_offsets); - } - --#if HEVC_CTRLS_VERSION <= 3 - for (i = 0; i < slice_params->num_entry_point_offsets; i++) - slice_params->entry_point_offset_minus1[i] = sh->entry_point_offset[i] - 1; - #endif -@@ -787,13 +809,17 @@ set_req_ctls(V4L2RequestContextHEVC *ctx, struct media_request * const mreq, - #if HEVC_CTRLS_VERSION >= 2 - struct v4l2_ctrl_hevc_decode_params * const dec, - #endif -- struct v4l2_ctrl_hevc_slice_params * const slices, -- const unsigned int slice_no, -- const unsigned int slice_count) -+ struct v4l2_ctrl_hevc_slice_params * const slices, const unsigned int slice_count, -+ void * const offsets, const size_t offset_count) - { - int rv; -+#if HEVC_CTRLS_VERSION >= 2 -+ unsigned int n = 4; -+#else -+ unsigned int n = 3; -+#endif - -- struct v4l2_ext_control control[] = { -+ struct v4l2_ext_control control[6] = { - { - .id = V4L2_CID_STATELESS_HEVC_SPS, - .ptr = &controls->sps, -@@ -813,21 +839,28 @@ set_req_ctls(V4L2RequestContextHEVC *ctx, struct media_request * const mreq, - #endif - { - .id = V4L2_CID_STATELESS_HEVC_SLICE_PARAMS, -- .ptr = slices + slice_no, -+ .ptr = slices, - .size = sizeof(*slices) * slice_count, - }, -- // Optional -- { -+ }; -+ -+ if (controls->has_scaling) -+ control[n++] = (struct v4l2_ext_control) { - .id = V4L2_CID_STATELESS_HEVC_SCALING_MATRIX, - .ptr = &controls->scaling_matrix, - .size = sizeof(controls->scaling_matrix), -- }, -- }; -+ }; -+ -+#if HEVC_CTRLS_VERSION >= 4 -+ if (offsets) -+ control[n++] = (struct v4l2_ext_control) { -+ .id = V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS, -+ .ptr = offsets, -+ .size = sizeof(((struct V4L2MediaReqDescriptor *)0)->offsets[0]) * offset_count, -+ }; -+#endif - -- rv = mediabufs_ctl_set_ext_ctrls(ctx->mbufs, mreq, control, -- controls->has_scaling ? -- FF_ARRAY_ELEMS(control) : -- FF_ARRAY_ELEMS(control) - 1); -+ rv = mediabufs_ctl_set_ext_ctrls(ctx->mbufs, mreq, control, n); - - return rv; - } -@@ -852,6 +885,7 @@ static int v4l2_request_hevc_decode_slice(AVCodecContext *avctx, const uint8_t * - si = rd->slices + n; - si->ptr = buffer; - si->len = size; -+ si->n_offsets = rd->num_offsets; - - if (n != block_start) { - struct slice_info *const si0 = rd->slices + block_start; -@@ -868,6 +902,9 @@ static int v4l2_request_hevc_decode_slice(AVCodecContext *avctx, const uint8_t * - #else - fill_slice_params(h, rd->slice_params + n, size * 8, boff); - #endif -+ if (ctx->max_offsets != 0 && -+ (rv = offsets_add(rd, h->sh.num_entry_point_offsets, h->sh.entry_point_offset)) != 0) -+ return rv; - - return 0; - } -@@ -893,10 +930,13 @@ static int send_slice(AVCodecContext * const avctx, - { - V4L2RequestContextHEVC * const ctx = avctx->internal->hwaccel_priv_data; - -+ const int is_last = (j == rd->num_slices); - struct slice_info *const si = rd->slices + i; - struct media_request * req = NULL; - struct qent_src * src = NULL; - MediaBufsStatus stat; -+ void * offsets = rd->offsets + rd->slices[i].n_offsets; -+ size_t n_offsets = (is_last ? rd->num_offsets : rd->slices[j].n_offsets) - rd->slices[i].n_offsets; - - if ((req = media_request_get(ctx->mpool)) == NULL) { - av_log(avctx, AV_LOG_ERROR, "%s: Failed to alloc media request\n", __func__); -@@ -908,8 +948,8 @@ static int send_slice(AVCodecContext * const avctx, - #if HEVC_CTRLS_VERSION >= 2 - &rd->dec, - #endif -- rd->slice_params, -- i, j - i)) { -+ rd->slice_params + i, j - i, -+ offsets, n_offsets)) { - av_log(avctx, AV_LOG_ERROR, "%s: Failed to set req ctls\n", __func__); - goto fail1; - } -@@ -935,7 +975,7 @@ static int send_slice(AVCodecContext * const avctx, - - stat = mediabufs_start_request(ctx->mbufs, &req, &src, - i == 0 ? rd->qe_dst : NULL, -- j == rd->num_slices); -+ is_last); - - if (stat != MEDIABUFS_STATUS_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "%s: Failed to start request\n", __func__); -@@ -1090,6 +1130,9 @@ set_controls(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) - { .id = V4L2_CID_STATELESS_HEVC_DECODE_MODE, }, - { .id = V4L2_CID_STATELESS_HEVC_START_CODE, }, - { .id = V4L2_CID_STATELESS_HEVC_SLICE_PARAMS, }, -+#if HEVC_CTRLS_VERSION >= 4 -+ { .id = V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS, }, -+#endif - }; - - struct v4l2_ext_control ctrls[] = { -@@ -1119,6 +1162,14 @@ set_controls(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) - 1 : querys[2].dims[0]; - av_log(avctx, AV_LOG_DEBUG, "%s: Max slices %d\n", __func__, ctx->max_slices); - -+#if HEVC_CTRLS_VERSION >= 4 -+ ctx->max_offsets = (querys[3].type == 0 || querys[3].nr_of_dims != 1) ? -+ 0 : querys[3].dims[0]; -+ av_log(avctx, AV_LOG_INFO, "%s: Entry point offsets %d\n", __func__, ctx->max_offsets); -+#else -+ ctx->max_offsets = 0; -+#endif -+ - ctrls[0].value = ctx->decode_mode; - ctrls[1].value = ctx->start_code; - -@@ -1141,6 +1192,7 @@ static void v4l2_req_frame_free(void *opaque, uint8_t *data) - - av_freep(&rd->slices); - av_freep(&rd->slice_params); -+ av_freep(&rd->offsets); - - av_free(rd); - } -diff --git a/libavcodec/v4l2_request_hevc.h b/libavcodec/v4l2_request_hevc.h -index 0029e23309..99c90064ea 100644 ---- a/libavcodec/v4l2_request_hevc.h -+++ b/libavcodec/v4l2_request_hevc.h -@@ -64,7 +64,8 @@ typedef struct V4L2RequestContextHEVC { - - int decode_mode; - int start_code; -- unsigned int max_slices; -+ unsigned int max_slices; // 0 => not wanted (frame mode) -+ unsigned int max_offsets; // 0 => not wanted - - req_decode_q decode_q; - - -From d0e5ed2dff1b8f8909ceb968cb3afe2b20093fda Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 4 Jul 2022 16:22:54 +0100 -Subject: [PATCH 059/151] v4l2_req: Support Annex B - ---- - libavcodec/v4l2_req_hevc_vx.c | 61 +++++++++++++++++++++++------------ - 1 file changed, 41 insertions(+), 20 deletions(-) - -diff --git a/libavcodec/v4l2_req_hevc_vx.c b/libavcodec/v4l2_req_hevc_vx.c -index 43ef6631ed..5e0db9850a 100644 ---- a/libavcodec/v4l2_req_hevc_vx.c -+++ b/libavcodec/v4l2_req_hevc_vx.c -@@ -879,6 +879,18 @@ static int v4l2_request_hevc_decode_slice(AVCodecContext *avctx, const uint8_t * - int rv; - struct slice_info * si; - -+ // This looks dodgy but we know that FFmpeg has parsed this from a buffer -+ // that contains the entire frame including the start code -+ if (ctx->start_code == V4L2_STATELESS_HEVC_START_CODE_ANNEX_B) { -+ buffer -= 3; -+ size += 3; -+ boff += 24; -+ if (buffer[0] != 0 || buffer[1] != 0 || buffer[2] != 1) { -+ av_log(avctx, AV_LOG_ERROR, "Start code requested but missing %02x:%02x:%02x\n", -+ buffer[0], buffer[1], buffer[2]); -+ } -+ } -+ - if ((rv = slice_add(rd)) != 0) - return rv; - -@@ -969,10 +981,6 @@ static int send_slice(AVCodecContext * const avctx, - goto fail2; - } - --#warning ANNEX_B start code --// if (ctx->start_code == V4L2_MPEG_VIDEO_HEVC_START_CODE_ANNEX_B) { --// } -- - stat = mediabufs_start_request(ctx->mbufs, &req, &src, - i == 0 ? rd->qe_dst : NULL, - is_last); -@@ -1120,6 +1128,12 @@ probe(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) - return 0; - } - -+static inline int -+ctrl_valid(const struct v4l2_query_ext_ctrl * const c, const int64_t v) -+{ -+ return v >= c->minimum && v <= c->maximum; -+} -+ - // Final init - static int - set_controls(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) -@@ -1142,21 +1156,6 @@ set_controls(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) - - mediabufs_ctl_query_ext_ctrls(ctx->mbufs, querys, FF_ARRAY_ELEMS(querys)); - -- ctx->decode_mode = querys[0].default_value; -- -- if (ctx->decode_mode != V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED && -- ctx->decode_mode != V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED) { -- av_log(avctx, AV_LOG_ERROR, "%s: unsupported decode mode, %d\n", __func__, ctx->decode_mode); -- return AVERROR(EINVAL); -- } -- -- ctx->start_code = querys[1].default_value; -- if (ctx->start_code != V4L2_STATELESS_HEVC_START_CODE_NONE && -- ctx->start_code != V4L2_STATELESS_HEVC_START_CODE_ANNEX_B) { -- av_log(avctx, AV_LOG_ERROR, "%s: unsupported start code, %d\n", __func__, ctx->start_code); -- return AVERROR(EINVAL); -- } -- - ctx->max_slices = (!(querys[2].flags & V4L2_CTRL_FLAG_DYNAMIC_ARRAY) || - querys[2].nr_of_dims != 1 || querys[2].dims[0] == 0) ? - 1 : querys[2].dims[0]; -@@ -1165,11 +1164,33 @@ set_controls(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) - #if HEVC_CTRLS_VERSION >= 4 - ctx->max_offsets = (querys[3].type == 0 || querys[3].nr_of_dims != 1) ? - 0 : querys[3].dims[0]; -- av_log(avctx, AV_LOG_INFO, "%s: Entry point offsets %d\n", __func__, ctx->max_offsets); -+ av_log(avctx, AV_LOG_DEBUG, "%s: Entry point offsets %d\n", __func__, ctx->max_offsets); - #else - ctx->max_offsets = 0; - #endif - -+ ctx->start_code = V4L2_STATELESS_HEVC_START_CODE_ANNEX_B; -+ -+ if (ctrl_valid(querys + 0, V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED)) -+ { -+ ctx->decode_mode = V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED; -+ -+ // Prefer NONE as it doesn't require the slightly dodgy look -+ // backwards in our raw buffer -+ if (ctrl_valid(querys + 1, V4L2_STATELESS_HEVC_START_CODE_NONE)) -+ ctx->start_code = V4L2_STATELESS_HEVC_START_CODE_NONE; -+ else if (ctrl_valid(querys + 1, V4L2_STATELESS_HEVC_START_CODE_ANNEX_B)) -+ ctx->start_code = V4L2_STATELESS_HEVC_START_CODE_ANNEX_B; -+ else { -+ av_log(avctx, AV_LOG_ERROR, "%s: unsupported start code\n", __func__); -+ return AVERROR(EINVAL); -+ } -+ } -+ else -+ { -+ av_log(avctx, AV_LOG_ERROR, "%s: unsupported decode mode\n", __func__); -+ } -+ - ctrls[0].value = ctx->decode_mode; - ctrls[1].value = ctx->start_code; - - -From a75506e18a964c9f50efa224a3fa4179c9ef2127 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 4 Jul 2022 18:24:03 +0100 -Subject: [PATCH 060/151] v4l2_req: Add frame mode decode - ---- - libavcodec/v4l2_req_hevc_vx.c | 69 +++++++++++++++++++++++------------ - 1 file changed, 46 insertions(+), 23 deletions(-) - -diff --git a/libavcodec/v4l2_req_hevc_vx.c b/libavcodec/v4l2_req_hevc_vx.c -index 5e0db9850a..ada53d0d44 100644 ---- a/libavcodec/v4l2_req_hevc_vx.c -+++ b/libavcodec/v4l2_req_hevc_vx.c -@@ -814,9 +814,9 @@ set_req_ctls(V4L2RequestContextHEVC *ctx, struct media_request * const mreq, - { - int rv; - #if HEVC_CTRLS_VERSION >= 2 -- unsigned int n = 4; --#else - unsigned int n = 3; -+#else -+ unsigned int n = 2; - #endif - - struct v4l2_ext_control control[6] = { -@@ -837,12 +837,14 @@ set_req_ctls(V4L2RequestContextHEVC *ctx, struct media_request * const mreq, - .size = sizeof(*dec), - }, - #endif -- { -+ }; -+ -+ if (slices) -+ control[n++] = (struct v4l2_ext_control) { - .id = V4L2_CID_STATELESS_HEVC_SLICE_PARAMS, - .ptr = slices, - .size = sizeof(*slices) * slice_count, -- }, -- }; -+ }; - - if (controls->has_scaling) - control[n++] = (struct v4l2_ext_control) { -@@ -865,6 +867,8 @@ set_req_ctls(V4L2RequestContextHEVC *ctx, struct media_request * const mreq, - return rv; - } - -+// This only works because we started out from a single coded frame buffer -+// that will remain intact until after end_frame - static int v4l2_request_hevc_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size) - { - const HEVCContext * const h = avctx->priv_data; -@@ -891,6 +895,17 @@ static int v4l2_request_hevc_decode_slice(AVCodecContext *avctx, const uint8_t * - } - } - -+ if (ctx->decode_mode == V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED) { -+ if (rd->slices == NULL) { -+ if ((rd->slices = av_mallocz(sizeof(*rd->slices))) == NULL) -+ return AVERROR(ENOMEM); -+ rd->slices->ptr = buffer; -+ rd->num_slices = 1; -+ } -+ rd->slices->len = buffer - rd->slices->ptr + size; -+ return 0; -+ } -+ - if ((rv = slice_add(rd)) != 0) - return rv; - -@@ -1169,28 +1184,36 @@ set_controls(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) - ctx->max_offsets = 0; - #endif - -- ctx->start_code = V4L2_STATELESS_HEVC_START_CODE_ANNEX_B; -- -- if (ctrl_valid(querys + 0, V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED)) -- { -+ if (querys[0].default_value == V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED || -+ querys[0].default_value == V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED) -+ ctx->decode_mode = querys[0].default_value; -+ else if (ctrl_valid(querys + 0, V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED)) -+ ctx->decode_mode = V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED; -+ else if (ctrl_valid(querys + 0, V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED)) - ctx->decode_mode = V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED; -- -- // Prefer NONE as it doesn't require the slightly dodgy look -- // backwards in our raw buffer -- if (ctrl_valid(querys + 1, V4L2_STATELESS_HEVC_START_CODE_NONE)) -- ctx->start_code = V4L2_STATELESS_HEVC_START_CODE_NONE; -- else if (ctrl_valid(querys + 1, V4L2_STATELESS_HEVC_START_CODE_ANNEX_B)) -- ctx->start_code = V4L2_STATELESS_HEVC_START_CODE_ANNEX_B; -- else { -- av_log(avctx, AV_LOG_ERROR, "%s: unsupported start code\n", __func__); -- return AVERROR(EINVAL); -- } -- } -- else -- { -+ else { - av_log(avctx, AV_LOG_ERROR, "%s: unsupported decode mode\n", __func__); -+ return AVERROR(EINVAL); - } - -+ if (querys[1].default_value == V4L2_STATELESS_HEVC_START_CODE_NONE || -+ querys[1].default_value == V4L2_STATELESS_HEVC_START_CODE_ANNEX_B) -+ ctx->start_code = querys[1].default_value; -+ else if (ctrl_valid(querys + 1, V4L2_STATELESS_HEVC_START_CODE_ANNEX_B)) -+ ctx->start_code = V4L2_STATELESS_HEVC_START_CODE_ANNEX_B; -+ else if (ctrl_valid(querys + 1, V4L2_STATELESS_HEVC_START_CODE_NONE)) -+ ctx->start_code = V4L2_STATELESS_HEVC_START_CODE_NONE; -+ else { -+ av_log(avctx, AV_LOG_ERROR, "%s: unsupported start code\n", __func__); -+ return AVERROR(EINVAL); -+ } -+ -+ // If we are in slice mode & START_CODE_NONE supported then pick that -+ // as it doesn't require the slightly dodgy look backwards in our raw buffer -+ if (ctx->decode_mode == V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED && -+ ctrl_valid(querys + 1, V4L2_STATELESS_HEVC_START_CODE_NONE)) -+ ctx->start_code = V4L2_STATELESS_HEVC_START_CODE_NONE; -+ - ctrls[0].value = ctx->decode_mode; - ctrls[1].value = ctx->start_code; - - -From 9cf01f1485dcf71bcad7981d45029425d9abf115 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 5 Jul 2022 12:54:22 +0000 -Subject: [PATCH 061/151] v4l2_req: Fix probe for frame based decode - ---- - libavcodec/v4l2_req_hevc_vx.c | 33 +++++++++++++++++++++++---------- - 1 file changed, 23 insertions(+), 10 deletions(-) - -diff --git a/libavcodec/v4l2_req_hevc_vx.c b/libavcodec/v4l2_req_hevc_vx.c -index ada53d0d44..5d083016f8 100644 ---- a/libavcodec/v4l2_req_hevc_vx.c -+++ b/libavcodec/v4l2_req_hevc_vx.c -@@ -1082,6 +1082,12 @@ fail: - return rv; - } - -+static inline int -+ctrl_valid(const struct v4l2_query_ext_ctrl * const c, const int64_t v) -+{ -+ return v >= c->minimum && v <= c->maximum; -+} -+ - // Initial check & init - static int - probe(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) -@@ -1094,6 +1100,7 @@ probe(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) - // Check for var slice array - struct v4l2_query_ext_ctrl qc[] = { - { .id = V4L2_CID_STATELESS_HEVC_SLICE_PARAMS }, -+ { .id = V4L2_CID_STATELESS_HEVC_DECODE_MODE, }, - { .id = V4L2_CID_STATELESS_HEVC_SPS }, - { .id = V4L2_CID_STATELESS_HEVC_PPS }, - { .id = V4L2_CID_STATELESS_HEVC_SCALING_MATRIX }, -@@ -1104,6 +1111,7 @@ probe(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) - // Order & size must match! - static const size_t ctrl_sizes[] = { - sizeof(struct v4l2_ctrl_hevc_slice_params), -+ sizeof(int32_t), - sizeof(struct v4l2_ctrl_hevc_sps), - sizeof(struct v4l2_ctrl_hevc_pps), - sizeof(struct v4l2_ctrl_hevc_scaling_matrix), -@@ -1121,11 +1129,22 @@ probe(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) - return AVERROR(EINVAL); - #endif - -- if (mediabufs_ctl_query_ext_ctrls(ctx->mbufs, qc, noof_ctrls)) { -- av_log(avctx, AV_LOG_DEBUG, "Probed V%d control missing\n", HEVC_CTRLS_VERSION); -+ mediabufs_ctl_query_ext_ctrls(ctx->mbufs, qc, noof_ctrls); -+ i = 0; -+#if HEVC_CTRLS_VERSION >= 4 -+ // Skip slice check if no slice mode -+ if (qc[1].type != 0 && !ctrl_valid(qc + 1, V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED)) -+ i = 1; -+#else -+ // Fail frame mode silently for anything prior to V4 -+ if (qc[1].type == 0 || !ctrl_valid(qc + 1, V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED)) - return AVERROR(EINVAL); -- } -- for (i = 0; i != noof_ctrls; ++i) { -+#endif -+ for (; i != noof_ctrls; ++i) { -+ if (qc[i].type == 0) { -+ av_log(avctx, AV_LOG_DEBUG, "Probed V%d control %#x missing\n", HEVC_CTRLS_VERSION, qc[i].id); -+ return AVERROR(EINVAL); -+ } - if (ctrl_sizes[i] != (size_t)qc[i].elem_size) { - av_log(avctx, AV_LOG_DEBUG, "Probed V%d control %d size mismatch %zu != %zu\n", - HEVC_CTRLS_VERSION, i, ctrl_sizes[i], (size_t)qc[i].elem_size); -@@ -1143,12 +1162,6 @@ probe(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) - return 0; - } - --static inline int --ctrl_valid(const struct v4l2_query_ext_ctrl * const c, const int64_t v) --{ -- return v >= c->minimum && v <= c->maximum; --} -- - // Final init - static int - set_controls(AVCodecContext * const avctx, V4L2RequestContextHEVC * const ctx) - -From e7a62226f26073149d35c89268f56e17c8f45d76 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 26 Jul 2022 15:46:14 +0000 -Subject: [PATCH 062/151] vf_deinterlace_v4l2m2m: Support NV12 through - deinterlace - -Supports NV12 (though not yet NV12M) through deinterlace. -Also improves error handling such that attempting to deinterlace an -unsupported drm format causes an error. -No longer leaks frame structures. ---- - libavfilter/vf_deinterlace_v4l2m2m.c | 160 ++++++++++++++++++--------- - 1 file changed, 107 insertions(+), 53 deletions(-) - -diff --git a/libavfilter/vf_deinterlace_v4l2m2m.c b/libavfilter/vf_deinterlace_v4l2m2m.c -index 1a933b7e0a..1a3bef5bcb 100644 ---- a/libavfilter/vf_deinterlace_v4l2m2m.c -+++ b/libavfilter/vf_deinterlace_v4l2m2m.c -@@ -373,14 +373,16 @@ static int deint_v4l2m2m_try_format(V4L2Queue *queue) - fmt->fmt.pix_mp.plane_fmt[0].sizeimage, fmt->fmt.pix_mp.plane_fmt[0].bytesperline); - - if (V4L2_TYPE_IS_MULTIPLANAR(fmt->type)) { -- if (fmt->fmt.pix_mp.pixelformat != V4L2_PIX_FMT_YUV420 || -+ if ((fmt->fmt.pix_mp.pixelformat != V4L2_PIX_FMT_YUV420 && -+ fmt->fmt.pix_mp.pixelformat != V4L2_PIX_FMT_NV12) || - fmt->fmt.pix_mp.field != field) { - av_log(ctx->logctx, AV_LOG_DEBUG, "format not supported for type %d\n", fmt->type); - - return AVERROR(EINVAL); - } - } else { -- if (fmt->fmt.pix.pixelformat != V4L2_PIX_FMT_YUV420 || -+ if ((fmt->fmt.pix.pixelformat != V4L2_PIX_FMT_YUV420 && -+ fmt->fmt.pix.pixelformat != V4L2_PIX_FMT_NV12) || - fmt->fmt.pix.field != field) { - av_log(ctx->logctx, AV_LOG_DEBUG, "format not supported for type %d\n", fmt->type); - -@@ -391,7 +393,7 @@ static int deint_v4l2m2m_try_format(V4L2Queue *queue) - return 0; - } - --static int deint_v4l2m2m_set_format(V4L2Queue *queue, uint32_t field, int width, int height, int pitch, int ysize) -+static int deint_v4l2m2m_set_format(V4L2Queue *queue, uint32_t pixelformat, uint32_t field, int width, int height, int pitch, int ysize) - { - struct v4l2_format *fmt = &queue->format; - DeintV4L2M2MContextShared *ctx = queue->ctx; -@@ -402,13 +404,16 @@ static int deint_v4l2m2m_set_format(V4L2Queue *queue, uint32_t field, int width, - .target = V4L2_TYPE_IS_OUTPUT(fmt->type) ? V4L2_SEL_TGT_CROP_BOUNDS : V4L2_SEL_TGT_COMPOSE_BOUNDS, - }; - -+ // This works for most single object 4:2:0 types - if (V4L2_TYPE_IS_MULTIPLANAR(fmt->type)) { -+ fmt->fmt.pix_mp.pixelformat = pixelformat; - fmt->fmt.pix_mp.field = field; - fmt->fmt.pix_mp.width = width; - fmt->fmt.pix_mp.height = ysize / pitch; - fmt->fmt.pix_mp.plane_fmt[0].bytesperline = pitch; - fmt->fmt.pix_mp.plane_fmt[0].sizeimage = ysize + (ysize >> 1); - } else { -+ fmt->fmt.pix.pixelformat = pixelformat; - fmt->fmt.pix.field = field; - fmt->fmt.pix.width = width; - fmt->fmt.pix.height = height; -@@ -417,12 +422,22 @@ static int deint_v4l2m2m_set_format(V4L2Queue *queue, uint32_t field, int width, - } - - ret = ioctl(ctx->fd, VIDIOC_S_FMT, fmt); -- if (ret) -+ if (ret) { -+ ret = AVERROR(errno); - av_log(ctx->logctx, AV_LOG_ERROR, "VIDIOC_S_FMT failed: %d\n", ret); -+ return ret; -+ } -+ -+ if (pixelformat != fmt->fmt.pix.pixelformat) { -+ av_log(ctx->logctx, AV_LOG_ERROR, "Format not supported: %s; S_FMT returned %s\n", av_fourcc2str(pixelformat), av_fourcc2str(fmt->fmt.pix.pixelformat)); -+ return AVERROR(EINVAL); -+ } - - ret = ioctl(ctx->fd, VIDIOC_G_SELECTION, &sel); -- if (ret) -- av_log(ctx->logctx, AV_LOG_ERROR, "VIDIOC_G_SELECTION failed: %d\n", ret); -+ if (ret) { -+ ret = AVERROR(errno); -+ av_log(ctx->logctx, AV_LOG_WARNING, "VIDIOC_G_SELECTION failed: %d\n", ret); -+ } - - sel.r.width = width; - sel.r.height = height; -@@ -432,10 +447,12 @@ static int deint_v4l2m2m_set_format(V4L2Queue *queue, uint32_t field, int width, - sel.flags = V4L2_SEL_FLAG_LE; - - ret = ioctl(ctx->fd, VIDIOC_S_SELECTION, &sel); -- if (ret) -- av_log(ctx->logctx, AV_LOG_ERROR, "VIDIOC_S_SELECTION failed: %d\n", ret); -+ if (ret) { -+ ret = AVERROR(errno); -+ av_log(ctx->logctx, AV_LOG_WARNING, "VIDIOC_S_SELECTION failed: %d\n", ret); -+ } - -- return ret; -+ return 0; - } - - static int deint_v4l2m2m_probe_device(DeintV4L2M2MContextShared *ctx, char *node) -@@ -517,10 +534,25 @@ static int deint_v4l2m2m_enqueue_buffer(V4L2Buffer *buf) - return 0; - } - --static int v4l2_buffer_export_drm(V4L2Buffer* avbuf) -+static int v4l2_buffer_export_drm(V4L2Buffer* avbuf, const uint32_t pixelformat) - { - struct v4l2_exportbuffer expbuf; - int i, ret; -+ uint64_t mod = DRM_FORMAT_MOD_LINEAR; -+ uint32_t fmt = 0; -+ -+ switch (pixelformat) { -+ case V4L2_PIX_FMT_NV12: -+ fmt = DRM_FORMAT_NV12; -+ break; -+ case V4L2_PIX_FMT_YUV420: -+ fmt = DRM_FORMAT_YUV420; -+ break; -+ default: -+ return AVERROR(EINVAL); -+ } -+ -+ avbuf->drm_frame.layers[0].format = fmt; - - for (i = 0; i < avbuf->num_planes; i++) { - memset(&expbuf, 0, sizeof(expbuf)); -@@ -539,12 +571,12 @@ static int v4l2_buffer_export_drm(V4L2Buffer* avbuf) - /* drm frame */ - avbuf->drm_frame.objects[i].size = avbuf->buffer.m.planes[i].length; - avbuf->drm_frame.objects[i].fd = expbuf.fd; -- avbuf->drm_frame.objects[i].format_modifier = DRM_FORMAT_MOD_LINEAR; -+ avbuf->drm_frame.objects[i].format_modifier = mod; - } else { - /* drm frame */ - avbuf->drm_frame.objects[0].size = avbuf->buffer.length; - avbuf->drm_frame.objects[0].fd = expbuf.fd; -- avbuf->drm_frame.objects[0].format_modifier = DRM_FORMAT_MOD_LINEAR; -+ avbuf->drm_frame.objects[0].format_modifier = mod; - } - } - -@@ -629,7 +661,7 @@ static int deint_v4l2m2m_allocate_buffers(V4L2Queue *queue) - if (ret) - goto fail; - -- ret = v4l2_buffer_export_drm(buf); -+ ret = v4l2_buffer_export_drm(buf, multiplanar ? fmt->fmt.pix_mp.pixelformat : fmt->fmt.pix.pixelformat); - if (ret) - goto fail; - } -@@ -878,7 +910,6 @@ static void v4l2_free_buffer(void *opaque, uint8_t *unused) - - static uint8_t * v4l2_get_drm_frame(V4L2Buffer *avbuf, int height) - { -- int av_pix_fmt = AV_PIX_FMT_YUV420P; - AVDRMFrameDescriptor *drm_desc = &avbuf->drm_frame; - AVDRMLayerDescriptor *layer; - -@@ -895,20 +926,13 @@ static uint8_t * v4l2_get_drm_frame(V4L2Buffer *avbuf, int height) - layer->planes[i].pitch = avbuf->plane_info[i].bytesperline; - } - -- switch (av_pix_fmt) { -- case AV_PIX_FMT_YUYV422: -- -- layer->format = DRM_FORMAT_YUYV; -+ switch (layer->format) { -+ case DRM_FORMAT_YUYV: - layer->nb_planes = 1; -- - break; - -- case AV_PIX_FMT_NV12: -- case AV_PIX_FMT_NV21: -- -- layer->format = av_pix_fmt == AV_PIX_FMT_NV12 ? -- DRM_FORMAT_NV12 : DRM_FORMAT_NV21; -- -+ case DRM_FORMAT_NV12: -+ case DRM_FORMAT_NV21: - if (avbuf->num_planes > 1) - break; - -@@ -920,10 +944,7 @@ static uint8_t * v4l2_get_drm_frame(V4L2Buffer *avbuf, int height) - layer->planes[1].pitch = avbuf->plane_info[0].bytesperline; - break; - -- case AV_PIX_FMT_YUV420P: -- -- layer->format = DRM_FORMAT_YUV420; -- -+ case DRM_FORMAT_YUV420: - if (avbuf->num_planes > 1) - break; - -@@ -1032,6 +1053,26 @@ static int deint_v4l2m2m_config_props(AVFilterLink *outlink) - return 0; - } - -+static uint32_t desc_pixelformat(const AVDRMFrameDescriptor * const drm_desc) -+{ -+ const int is_linear = (drm_desc->objects[0].format_modifier == DRM_FORMAT_MOD_LINEAR || -+ drm_desc->objects[0].format_modifier == DRM_FORMAT_MOD_INVALID); -+ -+ switch (drm_desc->layers[0].format) { -+ case DRM_FORMAT_YUV420: -+ if (is_linear) -+ return drm_desc->nb_objects == 1 ? V4L2_PIX_FMT_YUV420 : 0; -+ break; -+ case DRM_FORMAT_NV12: -+ if (is_linear) -+ return drm_desc->nb_objects == 1 ? V4L2_PIX_FMT_NV12 : 0; -+ break; -+ default: -+ break; -+ } -+ return 0; -+} -+ - static int deint_v4l2m2m_filter_frame(AVFilterLink *link, AVFrame *in) - { - AVFilterContext *avctx = link->dst; -@@ -1047,23 +1088,27 @@ static int deint_v4l2m2m_filter_frame(AVFilterLink *link, AVFrame *in) - avctx->inputs[0]->status_in, avctx->inputs[0]->status_out, avctx->outputs[0]->status_in, avctx->outputs[0]->status_out); - - if (ctx->field_order == V4L2_FIELD_ANY) { -- AVDRMFrameDescriptor *drm_desc = (AVDRMFrameDescriptor *)in->data[0]; -+ const AVDRMFrameDescriptor * const drm_desc = (AVDRMFrameDescriptor *)in->data[0]; -+ const uint32_t pixelformat = desc_pixelformat(drm_desc); -+ -+ if (pixelformat == 0) { -+ av_log(avctx, AV_LOG_ERROR, "Unsupported DRM format %s in %d objects, modifier %#" PRIx64 "\n", -+ av_fourcc2str(drm_desc->layers[0].format), -+ drm_desc->nb_objects, drm_desc->objects[0].format_modifier); -+ return AVERROR(EINVAL); -+ } -+ - ctx->orig_width = drm_desc->layers[0].planes[0].pitch; - ctx->orig_height = drm_desc->layers[0].planes[1].offset / ctx->orig_width; - - av_log(priv, AV_LOG_DEBUG, "%s: %dx%d (%td,%td)\n", __func__, ctx->width, ctx->height, - drm_desc->layers[0].planes[0].pitch, drm_desc->layers[0].planes[1].offset); - -- if (in->top_field_first) -- ctx->field_order = V4L2_FIELD_INTERLACED_TB; -- else -- ctx->field_order = V4L2_FIELD_INTERLACED_BT; -- -- ret = deint_v4l2m2m_set_format(output, ctx->field_order, ctx->width, ctx->height, ctx->orig_width, drm_desc->layers[0].planes[1].offset); -+ ret = deint_v4l2m2m_set_format(output, pixelformat, ctx->field_order, ctx->width, ctx->height, ctx->orig_width, drm_desc->layers[0].planes[1].offset); - if (ret) - return ret; - -- ret = deint_v4l2m2m_set_format(capture, V4L2_FIELD_NONE, ctx->width, ctx->height, ctx->orig_width, drm_desc->layers[0].planes[1].offset); -+ ret = deint_v4l2m2m_set_format(capture, pixelformat, V4L2_FIELD_NONE, ctx->width, ctx->height, ctx->orig_width, drm_desc->layers[0].planes[1].offset); - if (ret) - return ret; - -@@ -1082,6 +1127,12 @@ static int deint_v4l2m2m_filter_frame(AVFilterLink *link, AVFrame *in) - ret = deint_v4l2m2m_streamon(output); - if (ret) - return ret; -+ -+ if (in->top_field_first) -+ ctx->field_order = V4L2_FIELD_INTERLACED_TB; -+ else -+ ctx->field_order = V4L2_FIELD_INTERLACED_BT; -+ - } - - ret = deint_v4l2m2m_enqueue_frame(output, in); -@@ -1157,28 +1208,31 @@ again: - return 0; - } - -- { -+ recycle_q(&s->output); -+ n = count_enqueued(&s->output); -+ -+ while (n < 6) { - AVFrame * frame; - int rv; - -- recycle_q(&s->output); -- n = count_enqueued(&s->output); -+ if ((rv = ff_inlink_consume_frame(inlink, &frame)) < 0) { -+ av_log(priv, AV_LOG_ERROR, "%s: consume in failed: %s\n", __func__, av_err2str(rv)); -+ return rv; -+ } - -- while (n < 6) { -- if ((rv = ff_inlink_consume_frame(inlink, &frame)) < 0) { -- av_log(priv, AV_LOG_ERROR, "%s: consume in failed: %s\n", __func__, av_err2str(rv)); -- return rv; -- } -+ if (frame == NULL) { -+ av_log(priv, AV_LOG_TRACE, "%s: No frame\n", __func__); -+ break; -+ } - -- if (frame == NULL) { -- av_log(priv, AV_LOG_TRACE, "%s: No frame\n", __func__); -- break; -- } -+ rv = deint_v4l2m2m_filter_frame(inlink, frame); -+ av_frame_free(&frame); - -- deint_v4l2m2m_filter_frame(inlink, frame); -- av_log(priv, AV_LOG_TRACE, "%s: Q frame\n", __func__); -- ++n; -- } -+ if (rv != 0) -+ return rv; -+ -+ av_log(priv, AV_LOG_TRACE, "%s: Q frame\n", __func__); -+ ++n; - } - - if (n < 6) { - -From 3d07826bcf588ad0384d00b210415664aa4489fb Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Fri, 19 Aug 2022 15:29:11 +0000 -Subject: [PATCH 063/151] v4l2_req: Enable use of MMAP for buffer alloc - -Use MMAP rather than DMABUF if either the dmabuf device can't be opened -or create_buf doesn't set the capability. ---- - libavcodec/v4l2_req_dmabufs.c | 22 +++ - libavcodec/v4l2_req_dmabufs.h | 3 + - libavcodec/v4l2_req_media.c | 263 ++++++++++++++++++++++++++++----- - libavcodec/v4l2_req_media.h | 21 ++- - libavcodec/v4l2_request_hevc.c | 42 +++++- - 5 files changed, 307 insertions(+), 44 deletions(-) - -diff --git a/libavcodec/v4l2_req_dmabufs.c b/libavcodec/v4l2_req_dmabufs.c -index ae6c648369..c4bbed18c6 100644 ---- a/libavcodec/v4l2_req_dmabufs.c -+++ b/libavcodec/v4l2_req_dmabufs.c -@@ -36,6 +36,26 @@ static unsigned int total_bufs = 0; - static size_t total_size = 0; - #endif - -+struct dmabuf_h * dmabuf_import_mmap(void * mapptr, size_t size) -+{ -+ struct dmabuf_h *dh; -+ -+ if (mapptr == MAP_FAILED) -+ return NULL; -+ -+ dh = malloc(sizeof(*dh)); -+ if (!dh) -+ return NULL; -+ -+ *dh = (struct dmabuf_h) { -+ .fd = -1, -+ .size = size, -+ .mapptr = mapptr -+ }; -+ -+ return dh; -+} -+ - struct dmabuf_h * dmabuf_import(int fd, size_t size) - { - struct dmabuf_h *dh; -@@ -122,6 +142,8 @@ int dmabuf_sync(struct dmabuf_h * const dh, unsigned int flags) - struct dma_buf_sync sync = { - .flags = flags - }; -+ if (dh->fd == -1) -+ return 0; - while (ioctl(dh->fd, DMA_BUF_IOCTL_SYNC, &sync) == -1) { - const int err = errno; - if (errno == EINTR) -diff --git a/libavcodec/v4l2_req_dmabufs.h b/libavcodec/v4l2_req_dmabufs.h -index cfb17e801d..c1d3d8c8d7 100644 ---- a/libavcodec/v4l2_req_dmabufs.h -+++ b/libavcodec/v4l2_req_dmabufs.h -@@ -18,6 +18,9 @@ static inline struct dmabuf_h * dmabuf_alloc(struct dmabufs_ctl * dbsc, size_t s - } - /* Create from existing fd - dups(fd) */ - struct dmabuf_h * dmabuf_import(int fd, size_t size); -+/* Import an MMAP - return NULL if mapptr = MAP_FAIL */ -+struct dmabuf_h * dmabuf_import_mmap(void * mapptr, size_t size); -+ - void * dmabuf_map(struct dmabuf_h * const dh); - - /* flags from linux/dmabuf.h DMA_BUF_SYNC_xxx */ -diff --git a/libavcodec/v4l2_req_media.c b/libavcodec/v4l2_req_media.c -index 980b306b8a..910ac77bb6 100644 ---- a/libavcodec/v4l2_req_media.c -+++ b/libavcodec/v4l2_req_media.c -@@ -33,9 +33,11 @@ - #include - #include - #include -+#include - #include - #include - #include -+#include - - #include - -@@ -95,6 +97,32 @@ struct media_request { - struct polltask * pt; - }; - -+static inline enum v4l2_memory -+mediabufs_memory_to_v4l2(const enum mediabufs_memory m) -+{ -+ return (enum v4l2_memory)m; -+} -+ -+const char * -+mediabufs_memory_name(const enum mediabufs_memory m) -+{ -+ switch (m) { -+ case MEDIABUFS_MEMORY_UNSET: -+ return "Unset"; -+ case MEDIABUFS_MEMORY_MMAP: -+ return "MMap"; -+ case MEDIABUFS_MEMORY_USERPTR: -+ return "UserPtr"; -+ case MEDIABUFS_MEMORY_OVERLAY: -+ return "Overlay"; -+ case MEDIABUFS_MEMORY_DMABUF: -+ return "DMABuf"; -+ default: -+ break; -+ } -+ return "Unknown"; -+} -+ - - static inline int do_trywait(sem_t *const sem) - { -@@ -115,14 +143,14 @@ static inline int do_wait(sem_t *const sem) - } - - static int request_buffers(int video_fd, unsigned int type, -- enum v4l2_memory memory, unsigned int buffers_count) -+ enum mediabufs_memory memory, unsigned int buffers_count) - { - struct v4l2_requestbuffers buffers; - int rc; - - memset(&buffers, 0, sizeof(buffers)); - buffers.type = type; -- buffers.memory = memory; -+ buffers.memory = mediabufs_memory_to_v4l2(memory); - buffers.count = buffers_count; - - rc = ioctl(video_fd, VIDIOC_REQBUFS, &buffers); -@@ -324,6 +352,7 @@ struct qent_base { - struct qent_base *next; - struct qent_base *prev; - enum qent_status status; -+ enum mediabufs_memory memtype; - uint32_t index; - struct dmabuf_h *dh[VIDEO_MAX_PLANES]; - struct timeval timestamp; -@@ -348,9 +377,9 @@ struct qe_list_head { - }; - - struct buf_pool { -+ enum mediabufs_memory memtype; - pthread_mutex_t lock; - sem_t free_sem; -- enum v4l2_buf_type buf_type; - struct qe_list_head free; - struct qe_list_head inuse; - }; -@@ -367,9 +396,10 @@ static inline struct qent_src *base_to_src(struct qent_base *be) - } - - --#define QENT_BASE_INITIALIZER {\ -+#define QENT_BASE_INITIALIZER(mtype) {\ - .ref_count = ATOMIC_VAR_INIT(0),\ - .status = QENT_NEW,\ -+ .memtype = (mtype),\ - .index = INDEX_UNSET\ - } - -@@ -390,13 +420,13 @@ static void qe_src_free(struct qent_src *const be_src) - free(be_src); - } - --static struct qent_src * qe_src_new(void) -+static struct qent_src * qe_src_new(enum mediabufs_memory mtype) - { - struct qent_src *const be_src = malloc(sizeof(*be_src)); - if (!be_src) - return NULL; - *be_src = (struct qent_src){ -- .base = QENT_BASE_INITIALIZER -+ .base = QENT_BASE_INITIALIZER(mtype) - }; - return be_src; - } -@@ -413,13 +443,13 @@ static void qe_dst_free(struct qent_dst *const be_dst) - free(be_dst); - } - --static struct qent_dst* qe_dst_new(struct ff_weak_link_master * const wl) -+static struct qent_dst* qe_dst_new(struct ff_weak_link_master * const wl, const enum mediabufs_memory memtype) - { - struct qent_dst *const be_dst = malloc(sizeof(*be_dst)); - if (!be_dst) - return NULL; - *be_dst = (struct qent_dst){ -- .base = QENT_BASE_INITIALIZER, -+ .base = QENT_BASE_INITIALIZER(memtype), - .lock = PTHREAD_MUTEX_INITIALIZER, - .cond = PTHREAD_COND_INITIALIZER, - .mbc_wl = ff_weak_link_ref(wl) -@@ -553,14 +583,14 @@ static struct qent_base *queue_tryget_free(struct buf_pool *const bp) - return buf; - } - --static struct qent_base * queue_find_extract_fd(struct buf_pool *const bp, const int fd) -+static struct qent_base * queue_find_extract_index(struct buf_pool *const bp, const unsigned int index) - { - struct qent_base *be; - - pthread_mutex_lock(&bp->lock); - /* Expect 1st in Q, but allow anywhere */ - for (be = bp->inuse.head; be; be = be->next) { -- if (dmabuf_fd(be->dh[0]) == fd) { -+ if (be->index == index) { - bq_extract_inuse(bp, be); - break; - } -@@ -602,6 +632,8 @@ struct mediabufs_ctl { - struct pollqueue * pq; - struct ff_weak_link_master * this_wlm; - -+ enum mediabufs_memory src_memtype; -+ enum mediabufs_memory dst_memtype; - struct v4l2_format src_fmt; - struct v4l2_format dst_fmt; - struct v4l2_capability capability; -@@ -614,7 +646,7 @@ static int qe_v4l2_queue(struct qent_base *const be, - { - struct v4l2_buffer buffer = { - .type = fmt->type, -- .memory = V4L2_MEMORY_DMABUF, -+ .memory = mediabufs_memory_to_v4l2(be->memtype), - .index = be->index - }; - struct v4l2_plane planes[VIDEO_MAX_PLANES] = {{0}}; -@@ -628,7 +660,10 @@ static int qe_v4l2_queue(struct qent_base *const be, - /* *** Really need a pixdesc rather than a format so we can fill in data_offset */ - planes[i].length = dmabuf_size(be->dh[i]); - planes[i].bytesused = dmabuf_len(be->dh[i]); -- planes[i].m.fd = dmabuf_fd(be->dh[i]); -+ if (be->memtype == MEDIABUFS_MEMORY_DMABUF) -+ planes[i].m.fd = dmabuf_fd(be->dh[i]); -+ else -+ planes[i].m.mem_offset = 0; - } - buffer.m.planes = planes; - buffer.length = i; -@@ -639,7 +674,10 @@ static int qe_v4l2_queue(struct qent_base *const be, - - buffer.bytesused = dmabuf_len(be->dh[0]); - buffer.length = dmabuf_size(be->dh[0]); -- buffer.m.fd = dmabuf_fd(be->dh[0]); -+ if (be->memtype == MEDIABUFS_MEMORY_DMABUF) -+ buffer.m.fd = dmabuf_fd(be->dh[0]); -+ else -+ buffer.m.offset = 0; - } - - if (!is_dst && mreq) { -@@ -668,14 +706,13 @@ static struct qent_base * qe_dequeue(struct buf_pool *const bp, - const int vfd, - const struct v4l2_format * const f) - { -- int fd; - struct qent_base *be; - int rc; - const bool mp = V4L2_TYPE_IS_MULTIPLANAR(f->type); - struct v4l2_plane planes[VIDEO_MAX_PLANES] = {{0}}; - struct v4l2_buffer buffer = { - .type = f->type, -- .memory = V4L2_MEMORY_DMABUF -+ .memory = mediabufs_memory_to_v4l2(bp->memtype) - }; - if (mp) { - buffer.length = f->fmt.pix_mp.num_planes; -@@ -690,10 +727,9 @@ static struct qent_base * qe_dequeue(struct buf_pool *const bp, - return NULL; - } - -- fd = mp ? planes[0].m.fd : buffer.m.fd; -- be = queue_find_extract_fd(bp, fd); -+ be = queue_find_extract_index(bp, buffer.index); - if (!be) { -- request_log("Failed to find fd %d in Q\n", fd); -+ request_log("Failed to find index %d in Q\n", buffer.index); - return NULL; - } - -@@ -1104,7 +1140,7 @@ static int create_dst_bufs(struct mediabufs_ctl *const mbc, unsigned int n, stru - - struct v4l2_create_buffers cbuf = { - .count = n, -- .memory = V4L2_MEMORY_DMABUF, -+ .memory = mediabufs_memory_to_v4l2(mbc->dst->memtype), - .format = mbc->dst_fmt, - }; - -@@ -1125,12 +1161,97 @@ static int create_dst_bufs(struct mediabufs_ctl *const mbc, unsigned int n, stru - return cbuf.count; - } - -+static MediaBufsStatus -+qe_import_from_buf(struct mediabufs_ctl *const mbc, struct qent_base * const be, const struct v4l2_format *const fmt, -+ const unsigned int n, const bool x_dmabuf) -+{ -+ struct v4l2_buffer buf = { -+ .index = n, -+ .type = fmt->type, -+ }; -+ struct v4l2_plane planes[VIDEO_MAX_PLANES]; -+ int ret; -+ -+ if (be->dh[0]) -+ return 0; -+ -+ if (V4L2_TYPE_IS_MULTIPLANAR(fmt->type)) { -+ memset(planes, 0, sizeof(planes)); -+ buf.m.planes = planes; -+ buf.length = VIDEO_MAX_PLANES; -+ } -+ -+ if ((ret = ioctl(mbc->vfd, VIDIOC_QUERYBUF, &buf)) != 0) { -+ request_err(mbc->dc, "VIDIOC_QUERYBUF failed"); -+ return MEDIABUFS_ERROR_OPERATION_FAILED; -+ } -+ -+ if (V4L2_TYPE_IS_MULTIPLANAR(fmt->type)) -+ { -+ unsigned int i; -+ for (i = 0; i != buf.length; ++i) { -+ if (x_dmabuf) { -+ struct v4l2_exportbuffer xbuf = { -+ .type = buf.type, -+ .index = buf.index, -+ .plane = i, -+ .flags = O_RDWR, // *** Arguably O_RDONLY would be fine -+ }; -+ if (ioctl(mbc->vfd, VIDIOC_EXPBUF, &xbuf) == 0) -+ be->dh[i] = dmabuf_import(xbuf.fd, planes[i].length); -+ } -+ else { -+ be->dh[i] = dmabuf_import_mmap( -+ mmap(NULL, planes[i].length, -+ PROT_READ | PROT_WRITE, -+ MAP_SHARED | MAP_POPULATE, -+ mbc->vfd, planes[i].m.mem_offset), -+ planes[i].length); -+ } -+ /* On failure tidy up and die */ -+ if (!be->dh[i]) { -+ while (i--) { -+ dmabuf_free(be->dh[i]); -+ be->dh[i] = NULL; -+ } -+ return MEDIABUFS_ERROR_OPERATION_FAILED; -+ } -+ } -+ } -+ else -+ { -+ if (x_dmabuf) { -+ struct v4l2_exportbuffer xbuf = { -+ .type = buf.type, -+ .index = buf.index, -+ .flags = O_RDWR, // *** Arguably O_RDONLY would be fine -+ }; -+ if (ioctl(mbc->vfd, VIDIOC_EXPBUF, &xbuf) == 0) -+ be->dh[0] = dmabuf_import(xbuf.fd, buf.length); -+ } -+ else { -+ be->dh[0] = dmabuf_import_mmap( -+ mmap(NULL, buf.length, -+ PROT_READ | PROT_WRITE, -+ MAP_SHARED | MAP_POPULATE, -+ mbc->vfd, buf.m.offset), -+ buf.length); -+ } -+ /* On failure tidy up and die */ -+ if (!be->dh[0]) { -+ return MEDIABUFS_ERROR_OPERATION_FAILED; -+ } -+ } -+ -+ return 0; -+} -+ - struct qent_dst* mediabufs_dst_qent_alloc(struct mediabufs_ctl *const mbc, struct dmabufs_ctl *const dbsc) - { - struct qent_dst * be_dst; - - if (mbc == NULL) { -- be_dst = qe_dst_new(NULL); -+ be_dst = qe_dst_new(NULL, MEDIABUFS_MEMORY_DMABUF); - if (be_dst) - be_dst->base.status = QENT_IMPORT; - return be_dst; -@@ -1144,7 +1265,7 @@ struct qent_dst* mediabufs_dst_qent_alloc(struct mediabufs_ctl *const mbc, struc - else { - be_dst = base_to_dst(queue_tryget_free(mbc->dst)); - if (!be_dst) { -- be_dst = qe_dst_new(mbc->this_wlm); -+ be_dst = qe_dst_new(mbc->this_wlm, mbc->dst->memtype); - if (!be_dst) - return NULL; - -@@ -1155,12 +1276,21 @@ struct qent_dst* mediabufs_dst_qent_alloc(struct mediabufs_ctl *const mbc, struc - } - } - -- if (qe_alloc_from_fmt(&be_dst->base, dbsc, &mbc->dst_fmt)) { -- /* Given how create buf works we can't uncreate it on alloc failure -- * all we can do is put it on the free Q -- */ -- queue_put_free(mbc->dst, &be_dst->base); -- return NULL; -+ if (mbc->dst->memtype == MEDIABUFS_MEMORY_MMAP) { -+ if (qe_import_from_buf(mbc, &be_dst->base, &mbc->dst_fmt, be_dst->base.index, true)) { -+ request_err(mbc->dc, "Failed to export as dmabuf\n"); -+ queue_put_free(mbc->dst, &be_dst->base); -+ return NULL; -+ } -+ } -+ else { -+ if (qe_alloc_from_fmt(&be_dst->base, dbsc, &mbc->dst_fmt)) { -+ /* Given how create buf works we can't uncreate it on alloc failure -+ * all we can do is put it on the free Q -+ */ -+ queue_put_free(mbc->dst, &be_dst->base); -+ return NULL; -+ } - } - - be_dst->base.status = QENT_PENDING; -@@ -1208,7 +1338,7 @@ MediaBufsStatus mediabufs_dst_fmt_set(struct mediabufs_ctl *const mbc, - - // ** This is a mess if we get partial alloc but without any way to remove - // individual V4L2 Q members we are somewhat stuffed --MediaBufsStatus mediabufs_dst_slots_create(struct mediabufs_ctl *const mbc, const unsigned int n, const bool fixed) -+MediaBufsStatus mediabufs_dst_slots_create(struct mediabufs_ctl *const mbc, const unsigned int n, const bool fixed, const enum mediabufs_memory memtype) - { - unsigned int i; - int a = 0; -@@ -1218,10 +1348,12 @@ MediaBufsStatus mediabufs_dst_slots_create(struct mediabufs_ctl *const mbc, cons - if (n > 32) - return MEDIABUFS_ERROR_ALLOCATION_FAILED; - -+ mbc->dst->memtype = memtype; -+ - // Create qents first as it is hard to get rid of the V4L2 buffers on error - for (qc = 0; qc != n; ++qc) - { -- if ((qes[qc] = qe_dst_new(mbc->this_wlm)) == NULL) -+ if ((qes[qc] = qe_dst_new(mbc->this_wlm, mbc->dst->memtype)) == NULL) - goto fail; - } - -@@ -1260,19 +1392,61 @@ void mediabufs_src_qent_abort(struct mediabufs_ctl *const mbc, struct qent_src * - queue_put_free(mbc->src, &qe_src->base); - } - -+static MediaBufsStatus -+chk_memory_type(struct mediabufs_ctl *const mbc, -+ const struct v4l2_format * const f, -+ const enum mediabufs_memory m) -+{ -+ struct v4l2_create_buffers cbuf = { -+ .count = 0, -+ .memory = V4L2_MEMORY_MMAP, -+ .format = *f -+ }; -+ -+ if (ioctl(mbc->vfd, VIDIOC_CREATE_BUFS, &cbuf) != 0) -+ return MEDIABUFS_ERROR_OPERATION_FAILED; -+ -+ switch (m) { -+ case MEDIABUFS_MEMORY_DMABUF: -+ // 0 = Unknown but assume not in that case -+ if ((cbuf.capabilities & V4L2_BUF_CAP_SUPPORTS_DMABUF) == 0) -+ return MEDIABUFS_ERROR_UNSUPPORTED_MEMORY; -+ break; -+ case MEDIABUFS_MEMORY_MMAP: -+ break; -+ default: -+ return MEDIABUFS_ERROR_UNSUPPORTED_MEMORY; -+ } -+ -+ return MEDIABUFS_STATUS_SUCCESS; -+} -+ -+MediaBufsStatus -+mediabufs_src_chk_memtype(struct mediabufs_ctl *const mbc, const enum mediabufs_memory memtype) -+{ -+ return chk_memory_type(mbc, &mbc->src_fmt, memtype); -+} -+ -+MediaBufsStatus -+mediabufs_dst_chk_memtype(struct mediabufs_ctl *const mbc, const enum mediabufs_memory memtype) -+{ -+ return chk_memory_type(mbc, &mbc->dst_fmt, memtype); -+} -+ - /* src format must have been set up before this */ - MediaBufsStatus mediabufs_src_pool_create(struct mediabufs_ctl *const mbc, - struct dmabufs_ctl * const dbsc, -- unsigned int n) -+ unsigned int n, const enum mediabufs_memory memtype) - { - unsigned int i; - struct v4l2_requestbuffers req = { - .count = n, - .type = mbc->src_fmt.type, -- .memory = V4L2_MEMORY_DMABUF -+ .memory = mediabufs_memory_to_v4l2(memtype) - }; - - bq_free_all_free_src(mbc->src); -+ - while (ioctl(mbc->vfd, VIDIOC_REQBUFS, &req) == -1) { - if (errno != EINTR) { - request_err(mbc->dc, "%s: Failed to request src bufs\n", __func__); -@@ -1286,21 +1460,36 @@ MediaBufsStatus mediabufs_src_pool_create(struct mediabufs_ctl *const mbc, - } - - for (i = 0; i != n; ++i) { -- struct qent_src *const be_src = qe_src_new(); -+ struct qent_src *const be_src = qe_src_new(memtype); - if (!be_src) { - request_err(mbc->dc, "Failed to create src be %d\n", i); - goto fail; - } -- if (qe_alloc_from_fmt(&be_src->base, dbsc, &mbc->src_fmt)) { -- qe_src_free(be_src); -+ switch (memtype) { -+ case MEDIABUFS_MEMORY_MMAP: -+ if (qe_import_from_buf(mbc, &be_src->base, &mbc->src_fmt, i, false)) { -+ qe_src_free(be_src); -+ goto fail; -+ } -+ be_src->fixed_size = 1; -+ break; -+ case MEDIABUFS_MEMORY_DMABUF: -+ if (qe_alloc_from_fmt(&be_src->base, dbsc, &mbc->src_fmt)) { -+ qe_src_free(be_src); -+ goto fail; -+ } -+ be_src->fixed_size = !mediabufs_src_resizable(mbc); -+ break; -+ default: -+ request_err(mbc->dc, "Unexpected memorty type\n"); - goto fail; - } - be_src->base.index = i; -- be_src->fixed_size = !mediabufs_src_resizable(mbc); - - queue_put_free(mbc->src, &be_src->base); - } - -+ mbc->src->memtype = memtype; - return MEDIABUFS_STATUS_SUCCESS; - - fail: -@@ -1437,9 +1626,13 @@ int mediabufs_ctl_query_ext_ctrls(struct mediabufs_ctl * mbc, struct v4l2_query_ - - int mediabufs_src_resizable(const struct mediabufs_ctl *const mbc) - { -+#if 1 -+ return 0; -+#else - // Single planar OUTPUT can only take exact size buffers - // Multiplanar will take larger than negotiated - return V4L2_TYPE_IS_MULTIPLANAR(mbc->src_fmt.type); -+#endif - } - - static void mediabufs_ctl_delete(struct mediabufs_ctl *const mbc) -diff --git a/libavcodec/v4l2_req_media.h b/libavcodec/v4l2_req_media.h -index 0307a831de..890947b2e2 100644 ---- a/libavcodec/v4l2_req_media.h -+++ b/libavcodec/v4l2_req_media.h -@@ -43,6 +43,7 @@ typedef enum media_buf_status { - MEDIABUFS_ERROR_UNSUPPORTED_BUFFERTYPE, - MEDIABUFS_ERROR_UNSUPPORTED_RT_FORMAT, - MEDIABUFS_ERROR_ALLOCATION_FAILED, -+ MEDIABUFS_ERROR_UNSUPPORTED_MEMORY, - } MediaBufsStatus; - - struct media_pool * media_pool_new(const char * const media_path, -@@ -70,6 +71,15 @@ struct qent_dst; - struct dmabuf_h; - struct dmabufs_ctl; - -+// 1-1 mammping to V4L2 type - just defined separetely to avoid some include versioning difficulties -+enum mediabufs_memory { -+ MEDIABUFS_MEMORY_UNSET = 0, -+ MEDIABUFS_MEMORY_MMAP = 1, -+ MEDIABUFS_MEMORY_USERPTR = 2, -+ MEDIABUFS_MEMORY_OVERLAY = 3, -+ MEDIABUFS_MEMORY_DMABUF = 4, -+}; -+ - int qent_src_params_set(struct qent_src *const be, const struct timeval * timestamp); - struct timeval qent_dst_timestamp_get(const struct qent_dst *const be_dst); - -@@ -93,6 +103,8 @@ MediaBufsStatus qent_dst_import_fd(struct qent_dst *const be_dst, - unsigned int plane, - int fd, size_t size); - -+const char * mediabufs_memory_name(const enum mediabufs_memory m); -+ - MediaBufsStatus mediabufs_start_request(struct mediabufs_ctl *const mbc, - struct media_request **const pmreq, - struct qent_src **const psrc_be, -@@ -106,7 +118,7 @@ struct qent_dst* mediabufs_dst_qent_alloc(struct mediabufs_ctl *const mbc, - // Create dst slots without alloc - // If fixed true then qent_alloc will only get slots from this pool and will - // block until a qent has been unrefed --MediaBufsStatus mediabufs_dst_slots_create(struct mediabufs_ctl *const mbc, const unsigned int n, const bool fixed); -+MediaBufsStatus mediabufs_dst_slots_create(struct mediabufs_ctl *const mbc, const unsigned int n, const bool fixed, const enum mediabufs_memory memtype); - - MediaBufsStatus mediabufs_stream_on(struct mediabufs_ctl *const mbc); - MediaBufsStatus mediabufs_stream_off(struct mediabufs_ctl *const mbc); -@@ -140,7 +152,12 @@ MediaBufsStatus mediabufs_src_fmt_set(struct mediabufs_ctl *const mbc, - - MediaBufsStatus mediabufs_src_pool_create(struct mediabufs_ctl *const rw, - struct dmabufs_ctl * const dbsc, -- unsigned int n); -+ unsigned int n, -+ const enum mediabufs_memory memtype); -+ -+// Want to have appropriate formats set first -+MediaBufsStatus mediabufs_src_chk_memtype(struct mediabufs_ctl *const mbc, const enum mediabufs_memory memtype); -+MediaBufsStatus mediabufs_dst_chk_memtype(struct mediabufs_ctl *const mbc, const enum mediabufs_memory memtype); - - #define MEDIABUFS_DRIVER_VERSION(a, b, c) (((a) << 16) | ((b) << 8) | (c)) - unsigned int mediabufs_ctl_driver_version(struct mediabufs_ctl *const mbc); -diff --git a/libavcodec/v4l2_request_hevc.c b/libavcodec/v4l2_request_hevc.c -index cd79aad563..5cf17dd5e3 100644 ---- a/libavcodec/v4l2_request_hevc.c -+++ b/libavcodec/v4l2_request_hevc.c -@@ -144,6 +144,8 @@ static int v4l2_request_hevc_init(AVCodecContext *avctx) - const struct decdev * decdev; - const uint32_t src_pix_fmt = V2(ff_v4l2_req_hevc, 1).src_pix_fmt_v4l2; // Assuming constant for all APIs but avoiding V4L2 includes - size_t src_size; -+ enum mediabufs_memory src_memtype; -+ enum mediabufs_memory dst_memtype; - - av_log(avctx, AV_LOG_DEBUG, "<<< %s\n", __func__); - -@@ -174,8 +176,14 @@ static int v4l2_request_hevc_init(AVCodecContext *avctx) - decdev_media_path(decdev), decdev_video_path(decdev)); - - if ((ctx->dbufs = dmabufs_ctl_new()) == NULL) { -- av_log(avctx, AV_LOG_ERROR, "Unable to open dmabufs\n"); -- goto fail0; -+ av_log(avctx, AV_LOG_DEBUG, "Unable to open dmabufs - try mmap buffers\n"); -+ src_memtype = MEDIABUFS_MEMORY_MMAP; -+ dst_memtype = MEDIABUFS_MEMORY_MMAP; -+ } -+ else { -+ av_log(avctx, AV_LOG_DEBUG, "Dmabufs opened - try dmabuf buffers\n"); -+ src_memtype = MEDIABUFS_MEMORY_DMABUF; -+ dst_memtype = MEDIABUFS_MEMORY_DMABUF; - } - - if ((ctx->pq = pollqueue_new()) == NULL) { -@@ -196,8 +204,9 @@ static int v4l2_request_hevc_init(AVCodecContext *avctx) - // Ask for an initial bitbuf size of max size / 4 - // We will realloc if we need more - // Must use sps->h/w as avctx contains cropped size -+retry_src_memtype: - src_size = bit_buf_size(sps->width, sps->height, sps->bit_depth - 8); -- if (mediabufs_src_resizable(ctx->mbufs)) -+ if (src_memtype == MEDIABUFS_MEMORY_DMABUF && mediabufs_src_resizable(ctx->mbufs)) - src_size /= 4; - // Kludge for conformance tests which break Annex A limits - else if (src_size < 0x40000) -@@ -210,6 +219,15 @@ static int v4l2_request_hevc_init(AVCodecContext *avctx) - goto fail4; - } - -+ if (mediabufs_src_chk_memtype(ctx->mbufs, src_memtype)) { -+ if (src_memtype == MEDIABUFS_MEMORY_DMABUF) { -+ src_memtype = MEDIABUFS_MEMORY_MMAP; -+ goto retry_src_memtype; -+ } -+ av_log(avctx, AV_LOG_ERROR, "Failed to get src memory type\n"); -+ goto fail4; -+ } -+ - if (V2(ff_v4l2_req_hevc, 4).probe(avctx, ctx) == 0) { - av_log(avctx, AV_LOG_DEBUG, "HEVC API version 4 probed successfully\n"); - ctx->fns = &V2(ff_v4l2_req_hevc, 4); -@@ -238,7 +256,7 @@ static int v4l2_request_hevc_init(AVCodecContext *avctx) - goto fail4; - } - -- if (mediabufs_src_pool_create(ctx->mbufs, ctx->dbufs, 6)) { -+ if (mediabufs_src_pool_create(ctx->mbufs, ctx->dbufs, 6, src_memtype)) { - av_log(avctx, AV_LOG_ERROR, "Failed to create source pool\n"); - goto fail4; - } -@@ -250,8 +268,17 @@ static int v4l2_request_hevc_init(AVCodecContext *avctx) - sps->temporal_layer[sps->max_sub_layers - 1].max_dec_pic_buffering, - avctx->thread_count, avctx->extra_hw_frames); - -+ if (mediabufs_dst_chk_memtype(ctx->mbufs, dst_memtype)) { -+ if (dst_memtype != MEDIABUFS_MEMORY_DMABUF) { -+ av_log(avctx, AV_LOG_ERROR, "Failed to get dst memory type\n"); -+ goto fail4; -+ } -+ av_log(avctx, AV_LOG_DEBUG, "Dst DMABUF not supported - trying mmap\n"); -+ dst_memtype = MEDIABUFS_MEMORY_MMAP; -+ } -+ - // extra_hw_frames is -1 if unset -- if (mediabufs_dst_slots_create(ctx->mbufs, dst_slots, (avctx->extra_hw_frames > 0))) { -+ if (mediabufs_dst_slots_create(ctx->mbufs, dst_slots, (avctx->extra_hw_frames > 0), dst_memtype)) { - av_log(avctx, AV_LOG_ERROR, "Failed to create destination slots\n"); - goto fail4; - } -@@ -277,9 +304,10 @@ static int v4l2_request_hevc_init(AVCodecContext *avctx) - // Set our s/w format - avctx->sw_pix_fmt = ((AVHWFramesContext *)avctx->hw_frames_ctx->data)->sw_format; - -- av_log(avctx, AV_LOG_INFO, "Hwaccel %s; devices: %s,%s\n", -+ av_log(avctx, AV_LOG_INFO, "Hwaccel %s; devices: %s,%s; buffers: src %s, dst %s\n", - ctx->fns->name, -- decdev_media_path(decdev), decdev_video_path(decdev)); -+ decdev_media_path(decdev), decdev_video_path(decdev), -+ mediabufs_memory_name(src_memtype), mediabufs_memory_name(dst_memtype)); - - return 0; - - -From 79c2fcac56586ce9eea0cc8c6b13d2cd54f3e468 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 22 Aug 2022 12:35:40 +0000 -Subject: [PATCH 064/151] Set buffer lengths on DQ - ---- - libavcodec/v4l2_req_media.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/libavcodec/v4l2_req_media.c b/libavcodec/v4l2_req_media.c -index 910ac77bb6..1a9944774a 100644 ---- a/libavcodec/v4l2_req_media.c -+++ b/libavcodec/v4l2_req_media.c -@@ -733,6 +733,14 @@ static struct qent_base * qe_dequeue(struct buf_pool *const bp, - return NULL; - } - -+ if (mp) { -+ unsigned int i; -+ for (i = 0; i != buffer.length; ++i) -+ dmabuf_len_set(be->dh[i], V4L2_TYPE_IS_CAPTURE(f->type) ? planes[i].bytesused : 0); -+ } -+ else -+ dmabuf_len_set(be->dh[0], V4L2_TYPE_IS_CAPTURE(f->type) ? buffer.length : 0); -+ - be->timestamp = buffer.timestamp; - be->status = (buffer.flags & V4L2_BUF_FLAG_ERROR) ? QENT_ERROR : QENT_DONE; - return be; - -From 8f3245ca1e4b2ec7e13fc2f3bffbc964ee8fc290 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 22 Aug 2022 17:11:24 +0000 -Subject: [PATCH 065/151] Fix compile if videodev2.h defines V4L2 HEVC request - API - -If videodev2.h does define the HEVC request API it is really hard to -set old variations of the controls so if it does then we only compile -against the system includes and remove the back compatability. ---- - configure | 9 +++++++++ - libavcodec/Makefile | 4 ++-- - libavcodec/hevc-ctrls-v4.h | 2 ++ - libavcodec/v4l2_req_hevc_vx.c | 5 ----- - libavcodec/v4l2_request_hevc.c | 6 ++++-- - 5 files changed, 17 insertions(+), 9 deletions(-) - -diff --git a/configure b/configure -index fdc95146bf..5c00a183e3 100755 ---- a/configure -+++ b/configure -@@ -1946,6 +1946,7 @@ FEATURE_LIST=" - swscale_alpha - vout_drm - vout_egl -+ v4l2_req_hevc_vx - " - - # this list should be kept in linking order -@@ -6912,6 +6913,14 @@ fi - - check_func_headers "linux/media.h linux/videodev2.h" v4l2_timeval_to_ns - check_cc hevc_v4l2_request linux/videodev2.h "int i = V4L2_PIX_FMT_HEVC_SLICE;" -+disable v4l2_req_hevc_vx -+if enabled hevc_v4l2request_hwaccel; then -+ enable v4l2_req_hevc_vx -+fi -+if enabled hevc_v4l2_request; then -+ disable v4l2_req_hevc_vx -+fi -+ - check_headers sys/videoio.h - test_code cc sys/videoio.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_sanitized struct_v4l2_frmivalenum_discrete - -diff --git a/libavcodec/Makefile b/libavcodec/Makefile -index d433a71236..11f183c9b9 100644 ---- a/libavcodec/Makefile -+++ b/libavcodec/Makefile -@@ -999,8 +999,8 @@ OBJS-$(CONFIG_HEVC_D3D11VA_HWACCEL) += dxva2_hevc.o - OBJS-$(CONFIG_HEVC_DXVA2_HWACCEL) += dxva2_hevc.o - OBJS-$(CONFIG_HEVC_NVDEC_HWACCEL) += nvdec_hevc.o - OBJS-$(CONFIG_HEVC_QSV_HWACCEL) += qsvdec.o --OBJS-$(CONFIG_HEVC_V4L2REQUEST_HWACCEL) += v4l2_request_hevc.o v4l2_req_decode_q.o\ -- v4l2_req_hevc_v1.o v4l2_req_hevc_v2.o v4l2_req_hevc_v3.o v4l2_req_hevc_v4.o -+OBJS-$(CONFIG_HEVC_V4L2REQUEST_HWACCEL) += v4l2_request_hevc.o v4l2_req_decode_q.o v4l2_req_hevc_v4.o -+OBJS-$(CONFIG_V4L2_REQ_HEVC_VX) += v4l2_req_hevc_v1.o v4l2_req_hevc_v2.o v4l2_req_hevc_v3.o - OBJS-$(CONFIG_HEVC_VAAPI_HWACCEL) += vaapi_hevc.o h265_profile_level.o - OBJS-$(CONFIG_HEVC_VDPAU_HWACCEL) += vdpau_hevc.o h265_profile_level.o - OBJS-$(CONFIG_MJPEG_NVDEC_HWACCEL) += nvdec_mjpeg.o -diff --git a/libavcodec/hevc-ctrls-v4.h b/libavcodec/hevc-ctrls-v4.h -index 7e05f6e7c3..7829d82084 100644 ---- a/libavcodec/hevc-ctrls-v4.h -+++ b/libavcodec/hevc-ctrls-v4.h -@@ -53,6 +53,8 @@ - #include - #include - -+#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC parsed slices */ -+ - #define V4L2_CID_STATELESS_HEVC_SPS (V4L2_CID_CODEC_STATELESS_BASE + 400) - #define V4L2_CID_STATELESS_HEVC_PPS (V4L2_CID_CODEC_STATELESS_BASE + 401) - #define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 402) -diff --git a/libavcodec/v4l2_req_hevc_vx.c b/libavcodec/v4l2_req_hevc_vx.c -index 5d083016f8..e1bd5c6a1f 100644 ---- a/libavcodec/v4l2_req_hevc_vx.c -+++ b/libavcodec/v4l2_req_hevc_vx.c -@@ -40,11 +40,6 @@ - #define V4L2_STATELESS_HEVC_START_CODE_ANNEX_B V4L2_MPEG_VIDEO_HEVC_START_CODE_ANNEX_B - #endif - --// Should be in videodev2 but we might not have a good enough one --#ifndef V4L2_PIX_FMT_HEVC_SLICE --#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC parsed slices */ --#endif -- - #include "v4l2_request_hevc.h" - - #include "libavutil/hwcontext_drm.h" -diff --git a/libavcodec/v4l2_request_hevc.c b/libavcodec/v4l2_request_hevc.c -index 5cf17dd5e3..614a1b4d99 100644 ---- a/libavcodec/v4l2_request_hevc.c -+++ b/libavcodec/v4l2_request_hevc.c -@@ -17,7 +17,7 @@ - */ - - -- -+#include "config.h" - #include "decode.h" - #include "hevcdec.h" - #include "hwconfig.h" -@@ -142,7 +142,7 @@ static int v4l2_request_hevc_init(AVCodecContext *avctx) - const HEVCSPS * const sps = h->ps.sps; - int ret; - const struct decdev * decdev; -- const uint32_t src_pix_fmt = V2(ff_v4l2_req_hevc, 1).src_pix_fmt_v4l2; // Assuming constant for all APIs but avoiding V4L2 includes -+ const uint32_t src_pix_fmt = V2(ff_v4l2_req_hevc, 4).src_pix_fmt_v4l2; // Assuming constant for all APIs but avoiding V4L2 includes - size_t src_size; - enum mediabufs_memory src_memtype; - enum mediabufs_memory dst_memtype; -@@ -232,6 +232,7 @@ retry_src_memtype: - av_log(avctx, AV_LOG_DEBUG, "HEVC API version 4 probed successfully\n"); - ctx->fns = &V2(ff_v4l2_req_hevc, 4); - } -+#if CONFIG_V4L2_REQ_HEVC_VX - else if (V2(ff_v4l2_req_hevc, 3).probe(avctx, ctx) == 0) { - av_log(avctx, AV_LOG_DEBUG, "HEVC API version 3 probed successfully\n"); - ctx->fns = &V2(ff_v4l2_req_hevc, 3); -@@ -244,6 +245,7 @@ retry_src_memtype: - av_log(avctx, AV_LOG_DEBUG, "HEVC API version 1 probed successfully\n"); - ctx->fns = &V2(ff_v4l2_req_hevc, 1); - } -+#endif - else { - av_log(avctx, AV_LOG_ERROR, "No HEVC version probed successfully\n"); - ret = AVERROR(EINVAL); - -From 35ec6af32c4f05b076f84ab343a8fc0d3263ba44 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 12 Sep 2022 17:59:22 +0100 -Subject: [PATCH 066/151] v4l2_m2m_enc: Send headers in in pkt side_data - -If GLOBAL_HEADERS are requested then we can't provide them at init time -so send as NEW_EXTRADATA side data in a similar way to some AV1 -encoders. ---- - libavcodec/v4l2_m2m_enc.c | 33 +++++++++++++++++++++++---------- - 1 file changed, 23 insertions(+), 10 deletions(-) - -diff --git a/libavcodec/v4l2_m2m_enc.c b/libavcodec/v4l2_m2m_enc.c -index 05ff6ba726..099ad23928 100644 ---- a/libavcodec/v4l2_m2m_enc.c -+++ b/libavcodec/v4l2_m2m_enc.c -@@ -544,14 +544,12 @@ dequeue: - av_freep(&avctx->extradata); - avctx->extradata_size = 0; - -- if ((data = av_malloc(len + AV_INPUT_BUFFER_PADDING_SIZE)) != NULL) -- memcpy(data, avpkt->data, len); -+ if ((data = av_malloc(len + AV_INPUT_BUFFER_PADDING_SIZE)) == NULL) -+ goto fail_no_mem; - -+ memcpy(data, avpkt->data, len); - av_packet_unref(avpkt); - -- if (data == NULL) -- return AVERROR(ENOMEM); -- - // We need to copy the header, but keep local if not global - if ((avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) != 0) { - avctx->extradata = data; -@@ -567,18 +565,28 @@ dequeue: - } - - // First frame must be key so mark as such even if encoder forgot -- if (capture->first_buf == 2) -+ if (capture->first_buf == 2) { - avpkt->flags |= AV_PKT_FLAG_KEY; - -+ // Add any extradata to the 1st packet we emit as we cannot create it at init -+ if (avctx->extradata_size > 0 && avctx->extradata) { -+ void * const side = av_packet_new_side_data(avpkt, -+ AV_PKT_DATA_NEW_EXTRADATA, -+ avctx->extradata_size); -+ if (!side) -+ goto fail_no_mem; -+ -+ memcpy(side, avctx->extradata, avctx->extradata_size); -+ } -+ } -+ - // Add SPS/PPS to the start of every key frame if non-global headers - if ((avpkt->flags & AV_PKT_FLAG_KEY) != 0 && s->extdata_size != 0) { - const size_t newlen = s->extdata_size + avpkt->size; - AVBufferRef * const buf = av_buffer_alloc(newlen + AV_INPUT_BUFFER_PADDING_SIZE); - -- if (buf == NULL) { -- av_packet_unref(avpkt); -- return AVERROR(ENOMEM); -- } -+ if (buf == NULL) -+ goto fail_no_mem; - - memcpy(buf->data, s->extdata_data, s->extdata_size); - memcpy(buf->data + s->extdata_size, avpkt->data, avpkt->size); -@@ -592,6 +600,11 @@ dequeue: - // av_log(avctx, AV_LOG_INFO, "%s: PTS out=%"PRId64", size=%d, ret=%d\n", __func__, avpkt->pts, avpkt->size, ret); - capture->first_buf = 0; - return 0; -+ -+fail_no_mem: -+ ret = AVERROR(ENOMEM); -+ av_packet_unref(avpkt); -+ return ret; - } - - static av_cold int v4l2_encode_init(AVCodecContext *avctx) - -From dfc754491cea9192945b92ca9c8d3919321e30ad Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 14 Sep 2022 15:44:10 +0000 -Subject: [PATCH 067/151] matroskaenc: Allow H264 SPS/PPS headers in packet - sidedata - ---- - libavformat/matroskaenc.c | 26 ++++++++++++++++++++++---- - 1 file changed, 22 insertions(+), 4 deletions(-) - -diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c -index 113541bd9a..61e4c976ef 100644 ---- a/libavformat/matroskaenc.c -+++ b/libavformat/matroskaenc.c -@@ -77,6 +77,10 @@ - - #define IS_WEBM(mkv) (CONFIG_WEBM_MUXER && CONFIG_MATROSKA_MUXER ? \ - ((mkv)->mode == MODE_WEBM) : CONFIG_WEBM_MUXER) -+ -+/* Reserved size for H264 headers if not extant at init time */ -+#define MAX_H264_HEADER_SIZE 1024 -+ - #define IS_SEEKABLE(pb, mkv) (((pb)->seekable & AVIO_SEEKABLE_NORMAL) && \ - !(mkv)->is_live) - -@@ -1121,8 +1125,12 @@ static int mkv_assemble_native_codecprivate(AVFormatContext *s, AVIOContext *dyn - case AV_CODEC_ID_WAVPACK: - return put_wv_codecpriv(dyn_cp, extradata, extradata_size); - case AV_CODEC_ID_H264: -- return ff_isom_write_avcc(dyn_cp, extradata, -- extradata_size); -+ if (par->extradata_size) -+ return ff_isom_write_avcc(dyn_cp, extradata, -+ extradata_size); -+ else -+ *size_to_reserve = MAX_H264_HEADER_SIZE; -+ break; - case AV_CODEC_ID_HEVC: - return ff_isom_write_hvcc(dyn_cp, extradata, - extradata_size, 0); -@@ -2731,8 +2739,8 @@ static int mkv_check_new_extra_data(AVFormatContext *s, const AVPacket *pkt) - } - break; - #endif -- // FIXME: Remove the following once libaom starts propagating proper extradata during init() -- // See https://bugs.chromium.org/p/aomedia/issues/detail?id=2208 -+ // FIXME: Remove the following once libaom starts propagating extradata during init() -+ // See https://bugs.chromium.org/p/aomedia/issues/detail?id=2012 - case AV_CODEC_ID_AV1: - if (side_data_size && mkv->track.bc && !par->extradata_size) { - // If the reserved space doesn't suffice, only write -@@ -2744,6 +2752,16 @@ static int mkv_check_new_extra_data(AVFormatContext *s, const AVPacket *pkt) - } else if (!par->extradata_size) - return AVERROR_INVALIDDATA; - break; -+ // H264 V4L2 has a similar issue -+ case AV_CODEC_ID_H264: -+ if (side_data_size && mkv->track.bc && !par->extradata_size) { -+ ret = mkv_update_codecprivate(s, mkv, side_data, side_data_size, -+ par, mkv->track.bc, track, 0); -+ if (ret < 0) -+ return ret; -+ } else if (!par->extradata_size) -+ return AVERROR_INVALIDDATA; -+ break; - default: - if (side_data_size) - av_log(s, AV_LOG_DEBUG, "Ignoring new extradata in a packet for stream %d.\n", pkt->stream_index); - -From 30c6ca4e24ae2acbd7f7f122f5275beb62b625c6 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 14 Sep 2022 15:55:15 +0000 -Subject: [PATCH 068/151] movenc: Allow H264 SPS/PPS headers in packet sidedata - ---- - libavformat/movenc.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/libavformat/movenc.c b/libavformat/movenc.c -index c4fcb5f8b1..891adbf7b2 100644 ---- a/libavformat/movenc.c -+++ b/libavformat/movenc.c -@@ -6343,6 +6343,7 @@ static int mov_write_single_packet(AVFormatContext *s, AVPacket *pkt) - if (trk->par->codec_id == AV_CODEC_ID_MP4ALS || - trk->par->codec_id == AV_CODEC_ID_AAC || - trk->par->codec_id == AV_CODEC_ID_AV1 || -+ trk->par->codec_id == AV_CODEC_ID_H264 || - trk->par->codec_id == AV_CODEC_ID_FLAC) { - size_t side_size; - uint8_t *side = av_packet_get_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA, &side_size); - -From 1c7c3e99e9ed90f241aecbe7b2269229587d1e03 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 26 Sep 2022 12:45:05 +0100 -Subject: [PATCH 069/151] Allow ffmpeg to select codec internal hwfmts if - no_cvt_hw - -This allows the selection of DRM_PRIME from v4l2m2m without forcing it -in the decoder. - -Not utterly sure this is the right method for 5.1 but it does work ---- - fftools/ffmpeg.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c -index ba0c1898cf..839da7b472 100644 ---- a/fftools/ffmpeg.c -+++ b/fftools/ffmpeg.c -@@ -2763,12 +2763,15 @@ static enum AVPixelFormat get_format(AVCodecContext *s, const enum AVPixelFormat - break; - - if (ist->hwaccel_id == HWACCEL_GENERIC || -- ist->hwaccel_id == HWACCEL_AUTO) { -+ ist->hwaccel_id == HWACCEL_AUTO || -+ no_cvt_hw) { - for (i = 0;; i++) { - config = avcodec_get_hw_config(s->codec, i); - if (!config) - break; -- if (!(config->methods & -+ if (no_cvt_hw && (config->methods & AV_CODEC_HW_CONFIG_METHOD_INTERNAL)) -+ av_log(s, AV_LOG_DEBUG, "no_cvt_hw so trying pix_fmt %d with codec internal hwaccel\n", *p); -+ else if (!(config->methods & - AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX)) - continue; - if (config->pix_fmt == *p) - -From ecf273fd02e8aafe8775b1f291b9664b1b49572e Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 1 Sep 2022 11:42:41 +0000 -Subject: [PATCH 070/151] vf_deinterlace_v4l2m2m: Add a v4l2m2m scaler - -The logic for running an isp based scaler is pretty much identical to -that for the deinterlacer so add to the deinterlacer. This requires -some rework of the setup code to avoid assumptions that are true for -deinterlace but not scale but the reworked code requires few switches -based on operation. ---- - libavfilter/allfilters.c | 1 + - libavfilter/vf_deinterlace_v4l2m2m.c | 1123 ++++++++++++++++++++------ - 2 files changed, 877 insertions(+), 247 deletions(-) - -diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c -index 357ff61ca8..d504fa1bc8 100644 ---- a/libavfilter/allfilters.c -+++ b/libavfilter/allfilters.c -@@ -421,6 +421,7 @@ extern const AVFilter ff_vf_scale; - extern const AVFilter ff_vf_scale_cuda; - extern const AVFilter ff_vf_scale_npp; - extern const AVFilter ff_vf_scale_qsv; -+extern const AVFilter ff_vf_scale_v4l2m2m; - extern const AVFilter ff_vf_scale_vaapi; - extern const AVFilter ff_vf_scale_vulkan; - extern const AVFilter ff_vf_scale2ref; -diff --git a/libavfilter/vf_deinterlace_v4l2m2m.c b/libavfilter/vf_deinterlace_v4l2m2m.c -index 1a3bef5bcb..2df39ec0f1 100644 ---- a/libavfilter/vf_deinterlace_v4l2m2m.c -+++ b/libavfilter/vf_deinterlace_v4l2m2m.c -@@ -52,31 +52,36 @@ - #include "avfilter.h" - #include "formats.h" - #include "internal.h" -+#include "scale_eval.h" - #include "video.h" - -+#ifndef DRM_FORMAT_P030 -+#define DRM_FORMAT_P030 fourcc_code('P', '0', '3', '0') /* 2x2 subsampled Cr:Cb plane 10 bits per channel packed */ -+#endif -+ - typedef struct V4L2Queue V4L2Queue; - typedef struct DeintV4L2M2MContextShared DeintV4L2M2MContextShared; - --typedef struct V4L2PlaneInfo { -- int bytesperline; -- size_t length; --} V4L2PlaneInfo; -+typedef enum filter_type_v4l2_e -+{ -+ FILTER_V4L2_DEINTERLACE = 1, -+ FILTER_V4L2_SCALE, -+} filter_type_v4l2_t; - - typedef struct V4L2Buffer { - int enqueued; - int reenqueue; -- int fd; - struct v4l2_buffer buffer; - AVFrame frame; - struct v4l2_plane planes[VIDEO_MAX_PLANES]; - int num_planes; -- V4L2PlaneInfo plane_info[VIDEO_MAX_PLANES]; - AVDRMFrameDescriptor drm_frame; - V4L2Queue *q; - } V4L2Buffer; - - typedef struct V4L2Queue { - struct v4l2_format format; -+ struct v4l2_selection sel; - int num_buffers; - V4L2Buffer *buffers; - DeintV4L2M2MContextShared *ctx; -@@ -111,11 +116,18 @@ typedef struct pts_track_s - - typedef struct DeintV4L2M2MContextShared { - void * logctx; // For logging - will be NULL when done -+ filter_type_v4l2_t filter_type; - - int fd; - int done; - int width; - int height; -+ -+ // from options -+ int output_width; -+ int output_height; -+ enum AVPixelFormat output_format; -+ - int orig_width; - int orig_height; - atomic_uint refcount; -@@ -134,8 +146,60 @@ typedef struct DeintV4L2M2MContext { - const AVClass *class; - - DeintV4L2M2MContextShared *shared; -+ -+ char * w_expr; -+ char * h_expr; -+ char * output_format_string;; -+ -+ int force_original_aspect_ratio; -+ int force_divisible_by; -+ -+ char *colour_primaries_string; -+ char *colour_transfer_string; -+ char *colour_matrix_string; -+ int colour_range; -+ char *chroma_location_string; -+ -+ enum AVColorPrimaries colour_primaries; -+ enum AVColorTransferCharacteristic colour_transfer; -+ enum AVColorSpace colour_matrix; -+ enum AVChromaLocation chroma_location; - } DeintV4L2M2MContext; - -+// These just list the ones we know we can cope with -+static uint32_t -+fmt_av_to_v4l2(const enum AVPixelFormat avfmt) -+{ -+ switch (avfmt) { -+ case AV_PIX_FMT_YUV420P: -+ return V4L2_PIX_FMT_YUV420; -+ case AV_PIX_FMT_NV12: -+ return V4L2_PIX_FMT_NV12; -+ case AV_PIX_FMT_RPI4_8: -+ case AV_PIX_FMT_SAND128: -+ return V4L2_PIX_FMT_NV12_COL128; -+ default: -+ break; -+ } -+ return 0; -+} -+ -+static enum AVPixelFormat -+fmt_v4l2_to_av(const uint32_t pixfmt) -+{ -+ switch (pixfmt) { -+ case V4L2_PIX_FMT_YUV420: -+ return AV_PIX_FMT_YUV420P; -+ case V4L2_PIX_FMT_NV12: -+ return AV_PIX_FMT_NV12; -+ case V4L2_PIX_FMT_NV12_COL128: -+ return AV_PIX_FMT_RPI4_8; -+ default: -+ break; -+ } -+ return AV_PIX_FMT_NONE; -+} -+ - static unsigned int pts_stats_interval(const pts_stats_t * const stats) - { - return stats->last_interval; -@@ -301,6 +365,39 @@ static int pts_track_init(pts_track_t * const trk, void *logctx) - return 0; - } - -+static inline uint32_t -+fmt_bpl(const struct v4l2_format * const fmt, const unsigned int plane_n) -+{ -+ return V4L2_TYPE_IS_MULTIPLANAR(fmt->type) ? fmt->fmt.pix_mp.plane_fmt[plane_n].bytesperline : fmt->fmt.pix.bytesperline; -+} -+ -+static inline uint32_t -+fmt_height(const struct v4l2_format * const fmt) -+{ -+ return V4L2_TYPE_IS_MULTIPLANAR(fmt->type) ? fmt->fmt.pix_mp.height : fmt->fmt.pix.height; -+} -+ -+static inline uint32_t -+fmt_width(const struct v4l2_format * const fmt) -+{ -+ return V4L2_TYPE_IS_MULTIPLANAR(fmt->type) ? fmt->fmt.pix_mp.width : fmt->fmt.pix.width; -+} -+ -+static inline uint32_t -+fmt_pixelformat(const struct v4l2_format * const fmt) -+{ -+ return V4L2_TYPE_IS_MULTIPLANAR(fmt->type) ? fmt->fmt.pix_mp.pixelformat : fmt->fmt.pix.pixelformat; -+} -+ -+static void -+init_format(V4L2Queue * const q, const uint32_t format_type) -+{ -+ memset(&q->format, 0, sizeof(q->format)); -+ memset(&q->sel, 0, sizeof(q->sel)); -+ q->format.type = format_type; -+ q->sel.type = format_type; -+} -+ - static int deint_v4l2m2m_prepare_context(DeintV4L2M2MContextShared *ctx) - { - struct v4l2_capability cap; -@@ -311,80 +408,99 @@ static int deint_v4l2m2m_prepare_context(DeintV4L2M2MContextShared *ctx) - if (ret < 0) - return ret; - -- if (!(cap.capabilities & V4L2_CAP_STREAMING)) -+ if (ctx->filter_type == FILTER_V4L2_SCALE && -+ strcmp("bcm2835-codec-isp", cap.card) != 0) -+ { -+ av_log(ctx->logctx, AV_LOG_DEBUG, "Not ISP\n"); - return AVERROR(EINVAL); -+ } - -- if (cap.capabilities & V4L2_CAP_VIDEO_M2M) { -- ctx->capture.format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; -- ctx->output.format.type = V4L2_BUF_TYPE_VIDEO_OUTPUT; -- -- return 0; -+ if (!(cap.capabilities & V4L2_CAP_STREAMING)) { -+ av_log(ctx->logctx, AV_LOG_DEBUG, "No streaming\n"); -+ return AVERROR(EINVAL); - } - - if (cap.capabilities & V4L2_CAP_VIDEO_M2M_MPLANE) { -- ctx->capture.format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; -- ctx->output.format.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE; -- -- return 0; -+ init_format(&ctx->capture, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE); -+ init_format(&ctx->output, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE); -+ } -+ else if (cap.capabilities & V4L2_CAP_VIDEO_M2M) { -+ init_format(&ctx->capture, V4L2_BUF_TYPE_VIDEO_CAPTURE); -+ init_format(&ctx->output, V4L2_BUF_TYPE_VIDEO_OUTPUT); -+ } -+ else { -+ av_log(ctx->logctx, AV_LOG_DEBUG, "Not M2M\n"); -+ return AVERROR(EINVAL); - } - -- return AVERROR(EINVAL); -+ return 0; - } - --static int deint_v4l2m2m_try_format(V4L2Queue *queue) -+// Just use for probe - doesn't modify q format -+static int deint_v4l2m2m_try_format(V4L2Queue *queue, const uint32_t width, const uint32_t height, const enum AVPixelFormat avfmt) - { -- struct v4l2_format *fmt = &queue->format; -+ struct v4l2_format fmt = {.type = queue->format.type}; - DeintV4L2M2MContextShared *ctx = queue->ctx; - int ret, field; -+ // Pick YUV to test with if not otherwise specified -+ uint32_t pixelformat = avfmt == AV_PIX_FMT_NONE ? V4L2_PIX_FMT_YUV420 : fmt_av_to_v4l2(avfmt); -+ enum AVPixelFormat r_avfmt; -+ - -- ret = ioctl(ctx->fd, VIDIOC_G_FMT, fmt); -+ ret = ioctl(ctx->fd, VIDIOC_G_FMT, &fmt); - if (ret) - av_log(ctx->logctx, AV_LOG_ERROR, "VIDIOC_G_FMT failed: %d\n", ret); - -- if (V4L2_TYPE_IS_OUTPUT(fmt->type)) -+ if (ctx->filter_type == FILTER_V4L2_DEINTERLACE && V4L2_TYPE_IS_OUTPUT(fmt.type)) - field = V4L2_FIELD_INTERLACED_TB; - else - field = V4L2_FIELD_NONE; - -- if (V4L2_TYPE_IS_MULTIPLANAR(fmt->type)) { -- fmt->fmt.pix_mp.pixelformat = V4L2_PIX_FMT_YUV420; -- fmt->fmt.pix_mp.field = field; -- fmt->fmt.pix_mp.width = ctx->width; -- fmt->fmt.pix_mp.height = ctx->height; -+ if (V4L2_TYPE_IS_MULTIPLANAR(fmt.type)) { -+ fmt.fmt.pix_mp.pixelformat = pixelformat; -+ fmt.fmt.pix_mp.field = field; -+ fmt.fmt.pix_mp.width = width; -+ fmt.fmt.pix_mp.height = height; - } else { -- fmt->fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420; -- fmt->fmt.pix.field = field; -- fmt->fmt.pix.width = ctx->width; -- fmt->fmt.pix.height = ctx->height; -+ fmt.fmt.pix.pixelformat = pixelformat; -+ fmt.fmt.pix.field = field; -+ fmt.fmt.pix.width = width; -+ fmt.fmt.pix.height = height; - } - -- av_log(ctx->logctx, AV_LOG_DEBUG, "%s: Trying format for type %d, wxh: %dx%d, fmt: %08x, size %u bpl %u pre\n", __func__, -- fmt->type, fmt->fmt.pix_mp.width, fmt->fmt.pix_mp.height, -- fmt->fmt.pix_mp.pixelformat, -- fmt->fmt.pix_mp.plane_fmt[0].sizeimage, fmt->fmt.pix_mp.plane_fmt[0].bytesperline); -+ av_log(ctx->logctx, AV_LOG_TRACE, "%s: Trying format for type %d, wxh: %dx%d, fmt: %08x, size %u bpl %u pre\n", __func__, -+ fmt.type, fmt.fmt.pix_mp.width, fmt.fmt.pix_mp.height, -+ fmt.fmt.pix_mp.pixelformat, -+ fmt.fmt.pix_mp.plane_fmt[0].sizeimage, fmt.fmt.pix_mp.plane_fmt[0].bytesperline); - -- ret = ioctl(ctx->fd, VIDIOC_TRY_FMT, fmt); -+ ret = ioctl(ctx->fd, VIDIOC_TRY_FMT, &fmt); - if (ret) - return AVERROR(EINVAL); - -- av_log(ctx->logctx, AV_LOG_DEBUG, "%s: Trying format for type %d, wxh: %dx%d, fmt: %08x, size %u bpl %u post\n", __func__, -- fmt->type, fmt->fmt.pix_mp.width, fmt->fmt.pix_mp.height, -- fmt->fmt.pix_mp.pixelformat, -- fmt->fmt.pix_mp.plane_fmt[0].sizeimage, fmt->fmt.pix_mp.plane_fmt[0].bytesperline); -+ av_log(ctx->logctx, AV_LOG_TRACE, "%s: Trying format for type %d, wxh: %dx%d, fmt: %08x, size %u bpl %u post\n", __func__, -+ fmt.type, fmt.fmt.pix_mp.width, fmt.fmt.pix_mp.height, -+ fmt.fmt.pix_mp.pixelformat, -+ fmt.fmt.pix_mp.plane_fmt[0].sizeimage, fmt.fmt.pix_mp.plane_fmt[0].bytesperline); - -- if (V4L2_TYPE_IS_MULTIPLANAR(fmt->type)) { -- if ((fmt->fmt.pix_mp.pixelformat != V4L2_PIX_FMT_YUV420 && -- fmt->fmt.pix_mp.pixelformat != V4L2_PIX_FMT_NV12) || -- fmt->fmt.pix_mp.field != field) { -- av_log(ctx->logctx, AV_LOG_DEBUG, "format not supported for type %d\n", fmt->type); -+ r_avfmt = fmt_v4l2_to_av(fmt_pixelformat(&fmt)); -+ if (r_avfmt != avfmt && avfmt != AV_PIX_FMT_NONE) { -+ av_log(ctx->logctx, AV_LOG_DEBUG, "Unable to set format %s on %s port\n", av_get_pix_fmt_name(avfmt), V4L2_TYPE_IS_CAPTURE(fmt.type) ? "dest" : "src"); -+ return AVERROR(EINVAL); -+ } -+ if (r_avfmt == AV_PIX_FMT_NONE) { -+ av_log(ctx->logctx, AV_LOG_DEBUG, "No supported format on %s port\n", V4L2_TYPE_IS_CAPTURE(fmt.type) ? "dest" : "src"); -+ return AVERROR(EINVAL); -+ } -+ -+ if (V4L2_TYPE_IS_MULTIPLANAR(fmt.type)) { -+ if (fmt.fmt.pix_mp.field != field) { -+ av_log(ctx->logctx, AV_LOG_DEBUG, "format not supported for type %d\n", fmt.type); - - return AVERROR(EINVAL); - } - } else { -- if ((fmt->fmt.pix.pixelformat != V4L2_PIX_FMT_YUV420 && -- fmt->fmt.pix.pixelformat != V4L2_PIX_FMT_NV12) || -- fmt->fmt.pix.field != field) { -- av_log(ctx->logctx, AV_LOG_DEBUG, "format not supported for type %d\n", fmt->type); -+ if (fmt.fmt.pix.field != field) { -+ av_log(ctx->logctx, AV_LOG_DEBUG, "format not supported for type %d\n", fmt.type); - - return AVERROR(EINVAL); - } -@@ -393,68 +509,410 @@ static int deint_v4l2m2m_try_format(V4L2Queue *queue) - return 0; - } - --static int deint_v4l2m2m_set_format(V4L2Queue *queue, uint32_t pixelformat, uint32_t field, int width, int height, int pitch, int ysize) -+static int -+do_s_fmt(V4L2Queue * const q) - { -- struct v4l2_format *fmt = &queue->format; -- DeintV4L2M2MContextShared *ctx = queue->ctx; -+ DeintV4L2M2MContextShared * const ctx = q->ctx; -+ const uint32_t pixelformat = fmt_pixelformat(&q->format); - int ret; - -- struct v4l2_selection sel = { -- .type = fmt->type, -- .target = V4L2_TYPE_IS_OUTPUT(fmt->type) ? V4L2_SEL_TGT_CROP_BOUNDS : V4L2_SEL_TGT_COMPOSE_BOUNDS, -- }; -- -- // This works for most single object 4:2:0 types -- if (V4L2_TYPE_IS_MULTIPLANAR(fmt->type)) { -- fmt->fmt.pix_mp.pixelformat = pixelformat; -- fmt->fmt.pix_mp.field = field; -- fmt->fmt.pix_mp.width = width; -- fmt->fmt.pix_mp.height = ysize / pitch; -- fmt->fmt.pix_mp.plane_fmt[0].bytesperline = pitch; -- fmt->fmt.pix_mp.plane_fmt[0].sizeimage = ysize + (ysize >> 1); -- } else { -- fmt->fmt.pix.pixelformat = pixelformat; -- fmt->fmt.pix.field = field; -- fmt->fmt.pix.width = width; -- fmt->fmt.pix.height = height; -- fmt->fmt.pix.sizeimage = 0; -- fmt->fmt.pix.bytesperline = 0; -- } -- -- ret = ioctl(ctx->fd, VIDIOC_S_FMT, fmt); -+ ret = ioctl(ctx->fd, VIDIOC_S_FMT, &q->format); - if (ret) { - ret = AVERROR(errno); -- av_log(ctx->logctx, AV_LOG_ERROR, "VIDIOC_S_FMT failed: %d\n", ret); -+ av_log(ctx->logctx, AV_LOG_ERROR, "VIDIOC_S_FMT failed: %s\n", av_err2str(ret)); - return ret; - } - -- if (pixelformat != fmt->fmt.pix.pixelformat) { -- av_log(ctx->logctx, AV_LOG_ERROR, "Format not supported: %s; S_FMT returned %s\n", av_fourcc2str(pixelformat), av_fourcc2str(fmt->fmt.pix.pixelformat)); -+ if (pixelformat != fmt_pixelformat(&q->format)) { -+ av_log(ctx->logctx, AV_LOG_ERROR, "Format not supported: %s; S_FMT returned %s\n", av_fourcc2str(pixelformat), av_fourcc2str(fmt_pixelformat(&q->format))); - return AVERROR(EINVAL); - } - -- ret = ioctl(ctx->fd, VIDIOC_G_SELECTION, &sel); -+ q->sel.target = V4L2_TYPE_IS_OUTPUT(q->sel.type) ? V4L2_SEL_TGT_CROP : V4L2_SEL_TGT_COMPOSE, -+ q->sel.flags = V4L2_TYPE_IS_OUTPUT(q->sel.type) ? V4L2_SEL_FLAG_LE : V4L2_SEL_FLAG_GE; -+ -+ ret = ioctl(ctx->fd, VIDIOC_S_SELECTION, &q->sel); - if (ret) { - ret = AVERROR(errno); -- av_log(ctx->logctx, AV_LOG_WARNING, "VIDIOC_G_SELECTION failed: %d\n", ret); -+ av_log(ctx->logctx, AV_LOG_WARNING, "VIDIOC_S_SELECTION failed: %s\n", av_err2str(ret)); - } - -- sel.r.width = width; -- sel.r.height = height; -- sel.r.left = 0; -- sel.r.top = 0; -- sel.target = V4L2_TYPE_IS_OUTPUT(fmt->type) ? V4L2_SEL_TGT_CROP : V4L2_SEL_TGT_COMPOSE, -- sel.flags = V4L2_SEL_FLAG_LE; -+ return 0; -+} - -- ret = ioctl(ctx->fd, VIDIOC_S_SELECTION, &sel); -- if (ret) { -- ret = AVERROR(errno); -- av_log(ctx->logctx, AV_LOG_WARNING, "VIDIOC_S_SELECTION failed: %d\n", ret); -+static void -+set_fmt_color(struct v4l2_format *const fmt, -+ const enum AVColorPrimaries avcp, -+ const enum AVColorSpace avcs, -+ const enum AVColorTransferCharacteristic avxc) -+{ -+ enum v4l2_ycbcr_encoding ycbcr = V4L2_YCBCR_ENC_DEFAULT; -+ enum v4l2_colorspace cs = V4L2_COLORSPACE_DEFAULT; -+ enum v4l2_xfer_func xfer = V4L2_XFER_FUNC_DEFAULT; -+ -+ switch (avcp) { -+ case AVCOL_PRI_BT709: -+ cs = V4L2_COLORSPACE_REC709; -+ ycbcr = V4L2_YCBCR_ENC_709; -+ break; -+ case AVCOL_PRI_BT470M: -+ cs = V4L2_COLORSPACE_470_SYSTEM_M; -+ ycbcr = V4L2_YCBCR_ENC_601; -+ break; -+ case AVCOL_PRI_BT470BG: -+ cs = V4L2_COLORSPACE_470_SYSTEM_BG; -+ break; -+ case AVCOL_PRI_SMPTE170M: -+ cs = V4L2_COLORSPACE_SMPTE170M; -+ break; -+ case AVCOL_PRI_SMPTE240M: -+ cs = V4L2_COLORSPACE_SMPTE240M; -+ break; -+ case AVCOL_PRI_BT2020: -+ cs = V4L2_COLORSPACE_BT2020; -+ break; -+ case AVCOL_PRI_SMPTE428: -+ case AVCOL_PRI_SMPTE431: -+ case AVCOL_PRI_SMPTE432: -+ case AVCOL_PRI_EBU3213: -+ case AVCOL_PRI_RESERVED: -+ case AVCOL_PRI_FILM: -+ case AVCOL_PRI_UNSPECIFIED: -+ default: -+ break; -+ } -+ -+ switch (avcs) { -+ case AVCOL_SPC_RGB: -+ cs = V4L2_COLORSPACE_SRGB; -+ break; -+ case AVCOL_SPC_BT709: -+ cs = V4L2_COLORSPACE_REC709; -+ break; -+ case AVCOL_SPC_FCC: -+ cs = V4L2_COLORSPACE_470_SYSTEM_M; -+ break; -+ case AVCOL_SPC_BT470BG: -+ cs = V4L2_COLORSPACE_470_SYSTEM_BG; -+ break; -+ case AVCOL_SPC_SMPTE170M: -+ cs = V4L2_COLORSPACE_SMPTE170M; -+ break; -+ case AVCOL_SPC_SMPTE240M: -+ cs = V4L2_COLORSPACE_SMPTE240M; -+ break; -+ case AVCOL_SPC_BT2020_CL: -+ cs = V4L2_COLORSPACE_BT2020; -+ ycbcr = V4L2_YCBCR_ENC_BT2020_CONST_LUM; -+ break; -+ case AVCOL_SPC_BT2020_NCL: -+ cs = V4L2_COLORSPACE_BT2020; -+ break; -+ default: -+ break; -+ } -+ -+ switch (xfer) { -+ case AVCOL_TRC_BT709: -+ xfer = V4L2_XFER_FUNC_709; -+ break; -+ case AVCOL_TRC_IEC61966_2_1: -+ xfer = V4L2_XFER_FUNC_SRGB; -+ break; -+ case AVCOL_TRC_SMPTE240M: -+ xfer = V4L2_XFER_FUNC_SMPTE240M; -+ break; -+ case AVCOL_TRC_SMPTE2084: -+ xfer = V4L2_XFER_FUNC_SMPTE2084; -+ break; -+ default: -+ break; -+ } -+ -+ if (V4L2_TYPE_IS_MULTIPLANAR(fmt->type)) { -+ fmt->fmt.pix_mp.colorspace = cs; -+ fmt->fmt.pix_mp.ycbcr_enc = ycbcr; -+ fmt->fmt.pix_mp.xfer_func = xfer; -+ } else { -+ fmt->fmt.pix.colorspace = cs; -+ fmt->fmt.pix.ycbcr_enc = ycbcr; -+ fmt->fmt.pix.xfer_func = xfer; -+ } -+} -+ -+static void -+set_fmt_color_range(struct v4l2_format *const fmt, const enum AVColorRange avcr) -+{ -+ const enum v4l2_quantization q = -+ avcr == AVCOL_RANGE_MPEG ? V4L2_QUANTIZATION_LIM_RANGE : -+ avcr == AVCOL_RANGE_JPEG ? V4L2_QUANTIZATION_FULL_RANGE : -+ V4L2_QUANTIZATION_DEFAULT; -+ -+ if (V4L2_TYPE_IS_MULTIPLANAR(fmt->type)) { -+ fmt->fmt.pix_mp.quantization = q; -+ } else { -+ fmt->fmt.pix.quantization = q; -+ } -+} -+ -+static enum AVColorPrimaries get_color_primaries(const struct v4l2_format *const fmt) -+{ -+ enum v4l2_ycbcr_encoding ycbcr; -+ enum v4l2_colorspace cs; -+ -+ cs = V4L2_TYPE_IS_MULTIPLANAR(fmt->type) ? -+ fmt->fmt.pix_mp.colorspace : -+ fmt->fmt.pix.colorspace; -+ -+ ycbcr = V4L2_TYPE_IS_MULTIPLANAR(fmt->type) ? -+ fmt->fmt.pix_mp.ycbcr_enc: -+ fmt->fmt.pix.ycbcr_enc; -+ -+ switch(ycbcr) { -+ case V4L2_YCBCR_ENC_XV709: -+ case V4L2_YCBCR_ENC_709: return AVCOL_PRI_BT709; -+ case V4L2_YCBCR_ENC_XV601: -+ case V4L2_YCBCR_ENC_601:return AVCOL_PRI_BT470M; -+ default: -+ break; -+ } -+ -+ switch(cs) { -+ case V4L2_COLORSPACE_470_SYSTEM_BG: return AVCOL_PRI_BT470BG; -+ case V4L2_COLORSPACE_SMPTE170M: return AVCOL_PRI_SMPTE170M; -+ case V4L2_COLORSPACE_SMPTE240M: return AVCOL_PRI_SMPTE240M; -+ case V4L2_COLORSPACE_BT2020: return AVCOL_PRI_BT2020; -+ default: -+ break; -+ } -+ -+ return AVCOL_PRI_UNSPECIFIED; -+} -+ -+static enum AVColorSpace get_color_space(const struct v4l2_format *const fmt) -+{ -+ enum v4l2_ycbcr_encoding ycbcr; -+ enum v4l2_colorspace cs; -+ -+ cs = V4L2_TYPE_IS_MULTIPLANAR(fmt->type) ? -+ fmt->fmt.pix_mp.colorspace : -+ fmt->fmt.pix.colorspace; -+ -+ ycbcr = V4L2_TYPE_IS_MULTIPLANAR(fmt->type) ? -+ fmt->fmt.pix_mp.ycbcr_enc: -+ fmt->fmt.pix.ycbcr_enc; -+ -+ switch(cs) { -+ case V4L2_COLORSPACE_SRGB: return AVCOL_SPC_RGB; -+ case V4L2_COLORSPACE_REC709: return AVCOL_SPC_BT709; -+ case V4L2_COLORSPACE_470_SYSTEM_M: return AVCOL_SPC_FCC; -+ case V4L2_COLORSPACE_470_SYSTEM_BG: return AVCOL_SPC_BT470BG; -+ case V4L2_COLORSPACE_SMPTE170M: return AVCOL_SPC_SMPTE170M; -+ case V4L2_COLORSPACE_SMPTE240M: return AVCOL_SPC_SMPTE240M; -+ case V4L2_COLORSPACE_BT2020: -+ if (ycbcr == V4L2_YCBCR_ENC_BT2020_CONST_LUM) -+ return AVCOL_SPC_BT2020_CL; -+ else -+ return AVCOL_SPC_BT2020_NCL; -+ default: -+ break; -+ } -+ -+ return AVCOL_SPC_UNSPECIFIED; -+} -+ -+static enum AVColorTransferCharacteristic get_color_trc(const struct v4l2_format *const fmt) -+{ -+ enum v4l2_ycbcr_encoding ycbcr; -+ enum v4l2_xfer_func xfer; -+ enum v4l2_colorspace cs; -+ -+ cs = V4L2_TYPE_IS_MULTIPLANAR(fmt->type) ? -+ fmt->fmt.pix_mp.colorspace : -+ fmt->fmt.pix.colorspace; -+ -+ ycbcr = V4L2_TYPE_IS_MULTIPLANAR(fmt->type) ? -+ fmt->fmt.pix_mp.ycbcr_enc: -+ fmt->fmt.pix.ycbcr_enc; -+ -+ xfer = V4L2_TYPE_IS_MULTIPLANAR(fmt->type) ? -+ fmt->fmt.pix_mp.xfer_func: -+ fmt->fmt.pix.xfer_func; -+ -+ switch (xfer) { -+ case V4L2_XFER_FUNC_709: return AVCOL_TRC_BT709; -+ case V4L2_XFER_FUNC_SRGB: return AVCOL_TRC_IEC61966_2_1; -+ default: -+ break; -+ } -+ -+ switch (cs) { -+ case V4L2_COLORSPACE_470_SYSTEM_M: return AVCOL_TRC_GAMMA22; -+ case V4L2_COLORSPACE_470_SYSTEM_BG: return AVCOL_TRC_GAMMA28; -+ case V4L2_COLORSPACE_SMPTE170M: return AVCOL_TRC_SMPTE170M; -+ case V4L2_COLORSPACE_SMPTE240M: return AVCOL_TRC_SMPTE240M; -+ default: -+ break; -+ } -+ -+ switch (ycbcr) { -+ case V4L2_YCBCR_ENC_XV709: -+ case V4L2_YCBCR_ENC_XV601: return AVCOL_TRC_BT1361_ECG; -+ default: -+ break; -+ } -+ -+ return AVCOL_TRC_UNSPECIFIED; -+} -+ -+static enum AVColorRange get_color_range(const struct v4l2_format *const fmt) -+{ -+ enum v4l2_quantization qt; -+ -+ qt = V4L2_TYPE_IS_MULTIPLANAR(fmt->type) ? -+ fmt->fmt.pix_mp.quantization : -+ fmt->fmt.pix.quantization; -+ -+ switch (qt) { -+ case V4L2_QUANTIZATION_LIM_RANGE: return AVCOL_RANGE_MPEG; -+ case V4L2_QUANTIZATION_FULL_RANGE: return AVCOL_RANGE_JPEG; -+ default: -+ break; -+ } -+ -+ return AVCOL_RANGE_UNSPECIFIED; -+} -+ -+static int set_src_fmt(V4L2Queue * const q, const AVFrame * const frame) -+{ -+ struct v4l2_format *const format = &q->format; -+ const AVDRMFrameDescriptor *const src = (const AVDRMFrameDescriptor *)frame->data[0]; -+ -+ const uint32_t drm_fmt = src->layers[0].format; -+ // Treat INVALID as LINEAR -+ const uint64_t mod = src->objects[0].format_modifier == DRM_FORMAT_MOD_INVALID ? -+ DRM_FORMAT_MOD_LINEAR : src->objects[0].format_modifier; -+ uint32_t pix_fmt = 0; -+ uint32_t w = 0; -+ uint32_t h = 0; -+ uint32_t bpl = src->layers[0].planes[0].pitch; -+ -+ // We really don't expect multiple layers -+ // All formats that we currently cope with are single object -+ -+ if (src->nb_layers != 1 || src->nb_objects != 1) -+ return AVERROR(EINVAL); -+ -+ switch (drm_fmt) { -+ case DRM_FORMAT_YUV420: -+ if (mod == DRM_FORMAT_MOD_LINEAR) { -+ if (src->layers[0].nb_planes != 3) -+ break; -+ pix_fmt = V4L2_PIX_FMT_YUV420; -+ h = src->layers[0].planes[1].offset / bpl; -+ w = bpl; -+ } -+ break; -+ -+ case DRM_FORMAT_NV12: -+ if (mod == DRM_FORMAT_MOD_LINEAR) { -+ if (src->layers[0].nb_planes != 2) -+ break; -+ pix_fmt = V4L2_PIX_FMT_NV12; -+ h = src->layers[0].planes[1].offset / bpl; -+ w = bpl; -+ } -+ else if (fourcc_mod_broadcom_mod(mod) == DRM_FORMAT_MOD_BROADCOM_SAND128) { -+ if (src->layers[0].nb_planes != 2) -+ break; -+ pix_fmt = V4L2_PIX_FMT_NV12_COL128; -+ w = bpl; -+ h = src->layers[0].planes[1].offset / 128; -+ bpl = fourcc_mod_broadcom_param(mod); -+ } -+ break; -+ -+ case DRM_FORMAT_P030: -+ if (fourcc_mod_broadcom_mod(mod) == DRM_FORMAT_MOD_BROADCOM_SAND128) { -+ if (src->layers[0].nb_planes != 2) -+ break; -+ pix_fmt = V4L2_PIX_FMT_NV12_10_COL128; -+ w = bpl / 2; // Matching lie to how we construct this -+ h = src->layers[0].planes[1].offset / 128; -+ bpl = fourcc_mod_broadcom_param(mod); -+ } -+ break; -+ -+ default: -+ break; -+ } -+ -+ if (!pix_fmt) -+ return AVERROR(EINVAL); -+ -+ if (V4L2_TYPE_IS_MULTIPLANAR(format->type)) { -+ struct v4l2_pix_format_mplane *const pix = &format->fmt.pix_mp; -+ -+ pix->width = w; -+ pix->height = h; -+ pix->pixelformat = pix_fmt; -+ pix->plane_fmt[0].bytesperline = bpl; -+ pix->num_planes = 1; -+ } -+ else { -+ struct v4l2_pix_format *const pix = &format->fmt.pix; -+ -+ pix->width = w; -+ pix->height = h; -+ pix->pixelformat = pix_fmt; -+ pix->bytesperline = bpl; - } - -+ set_fmt_color(format, frame->color_primaries, frame->colorspace, frame->color_trc); -+ set_fmt_color_range(format, frame->color_range); -+ -+ q->sel.r.width = frame->width - (frame->crop_left + frame->crop_right); -+ q->sel.r.height = frame->height - (frame->crop_top + frame->crop_bottom); -+ q->sel.r.left = frame->crop_left; -+ q->sel.r.top = frame->crop_top; -+ - return 0; - } - -+ -+static int set_dst_format(DeintV4L2M2MContext * const priv, V4L2Queue *queue, uint32_t pixelformat, uint32_t field, int width, int height) -+{ -+ struct v4l2_format * const fmt = &queue->format; -+ struct v4l2_selection *const sel = &queue->sel; -+ -+ memset(&fmt->fmt, 0, sizeof(fmt->fmt)); -+ -+ // Align w/h to 16 here in case there are alignment requirements at the next -+ // stage of the filter chain (also RPi deinterlace setup is bust and this -+ // fixes it) -+ if (V4L2_TYPE_IS_MULTIPLANAR(fmt->type)) { -+ fmt->fmt.pix_mp.pixelformat = pixelformat; -+ fmt->fmt.pix_mp.field = field; -+ fmt->fmt.pix_mp.width = FFALIGN(width, 16); -+ fmt->fmt.pix_mp.height = FFALIGN(height, 16); -+ } else { -+ fmt->fmt.pix.pixelformat = pixelformat; -+ fmt->fmt.pix.field = field; -+ fmt->fmt.pix.width = FFALIGN(width, 16); -+ fmt->fmt.pix.height = FFALIGN(height, 16); -+ } -+ -+ set_fmt_color(fmt, priv->colour_primaries, priv->colour_matrix, priv->colour_transfer); -+ set_fmt_color_range(fmt, priv->colour_range); -+ -+ sel->r.width = width; -+ sel->r.height = height; -+ sel->r.left = 0; -+ sel->r.top = 0; -+ -+ return do_s_fmt(queue); -+} -+ - static int deint_v4l2m2m_probe_device(DeintV4L2M2MContextShared *ctx, char *node) - { - int ret; -@@ -464,16 +922,22 @@ static int deint_v4l2m2m_probe_device(DeintV4L2M2MContextShared *ctx, char *node - return AVERROR(errno); - - ret = deint_v4l2m2m_prepare_context(ctx); -- if (ret) -+ if (ret) { -+ av_log(ctx->logctx, AV_LOG_DEBUG, "Failed to prepare context\n"); - goto fail; -+ } - -- ret = deint_v4l2m2m_try_format(&ctx->capture); -- if (ret) -+ ret = deint_v4l2m2m_try_format(&ctx->capture, ctx->output_width, ctx->output_height, ctx->output_format); -+ if (ret) { -+ av_log(ctx->logctx, AV_LOG_DEBUG, "Failed to try dst format\n"); - goto fail; -+ } - -- ret = deint_v4l2m2m_try_format(&ctx->output); -- if (ret) -+ ret = deint_v4l2m2m_try_format(&ctx->output, ctx->width, ctx->height, AV_PIX_FMT_NONE); -+ if (ret) { -+ av_log(ctx->logctx, AV_LOG_DEBUG, "Failed to try src format\n"); - goto fail; -+ } - - return 0; - -@@ -534,26 +998,118 @@ static int deint_v4l2m2m_enqueue_buffer(V4L2Buffer *buf) - return 0; - } - --static int v4l2_buffer_export_drm(V4L2Buffer* avbuf, const uint32_t pixelformat) -+static void -+drm_frame_init(AVDRMFrameDescriptor * const d) -+{ -+ unsigned int i; -+ for (i = 0; i != AV_DRM_MAX_PLANES; ++i) { -+ d->objects[i].fd = -1; -+ } -+} -+ -+static void -+drm_frame_uninit(AVDRMFrameDescriptor * const d) -+{ -+ unsigned int i; -+ for (i = 0; i != d->nb_objects; ++i) { -+ if (d->objects[i].fd != -1) { -+ close(d->objects[i].fd); -+ d->objects[i].fd = -1; -+ } -+ } -+} -+ -+static void -+avbufs_delete(V4L2Buffer** ppavbufs, const unsigned int n) -+{ -+ unsigned int i; -+ V4L2Buffer* const avbufs = *ppavbufs; -+ -+ if (avbufs == NULL) -+ return; -+ *ppavbufs = NULL; -+ -+ for (i = 0; i != n; ++i) { -+ V4L2Buffer* const avbuf = avbufs + i; -+ drm_frame_uninit(&avbuf->drm_frame); -+ } -+ -+ av_free(avbufs); -+} -+ -+static int v4l2_buffer_export_drm(V4L2Queue * const q, V4L2Buffer * const avbuf) - { - struct v4l2_exportbuffer expbuf; - int i, ret; - uint64_t mod = DRM_FORMAT_MOD_LINEAR; -- uint32_t fmt = 0; - -- switch (pixelformat) { -- case V4L2_PIX_FMT_NV12: -- fmt = DRM_FORMAT_NV12; -- break; -- case V4L2_PIX_FMT_YUV420: -- fmt = DRM_FORMAT_YUV420; -- break; -- default: -- return AVERROR(EINVAL); -+ AVDRMFrameDescriptor * const drm_desc = &avbuf->drm_frame; -+ AVDRMLayerDescriptor * const layer = &drm_desc->layers[0]; -+ const struct v4l2_format *const fmt = &q->format; -+ const uint32_t height = fmt_height(fmt); -+ const uint32_t width = fmt_width(fmt); -+ ptrdiff_t bpl0; -+ -+ /* fill the DRM frame descriptor */ -+ drm_desc->nb_layers = 1; -+ layer->nb_planes = avbuf->num_planes; -+ -+ for (int i = 0; i < avbuf->num_planes; i++) { -+ layer->planes[i].object_index = i; -+ layer->planes[i].offset = 0; -+ layer->planes[i].pitch = fmt_bpl(fmt, i); - } -+ bpl0 = layer->planes[0].pitch; -+ -+ switch (fmt_pixelformat(fmt)) { -+ -+ case V4L2_PIX_FMT_NV12_COL128: -+ mod = DRM_FORMAT_MOD_BROADCOM_SAND128_COL_HEIGHT(bpl0); -+ layer->format = V4L2_PIX_FMT_NV12; -+ -+ if (avbuf->num_planes > 1) -+ break; -+ -+ layer->nb_planes = 2; -+ layer->planes[1].object_index = 0; -+ layer->planes[1].offset = height * 128; -+ layer->planes[0].pitch = width; -+ layer->planes[1].pitch = width; -+ break; - -- avbuf->drm_frame.layers[0].format = fmt; -+ case DRM_FORMAT_NV12: -+ layer->format = V4L2_PIX_FMT_NV12; - -+ if (avbuf->num_planes > 1) -+ break; -+ -+ layer->nb_planes = 2; -+ layer->planes[1].object_index = 0; -+ layer->planes[1].offset = bpl0 * height; -+ layer->planes[1].pitch = bpl0; -+ break; -+ -+ case V4L2_PIX_FMT_YUV420: -+ layer->format = DRM_FORMAT_YUV420; -+ -+ if (avbuf->num_planes > 1) -+ break; -+ -+ layer->nb_planes = 3; -+ layer->planes[1].object_index = 0; -+ layer->planes[1].offset = bpl0 * height; -+ layer->planes[1].pitch = bpl0 / 2; -+ layer->planes[2].object_index = 0; -+ layer->planes[2].offset = layer->planes[1].offset + ((bpl0 * height) / 4); -+ layer->planes[2].pitch = bpl0 / 2; -+ break; -+ -+ default: -+ drm_desc->nb_layers = 0; -+ return AVERROR(EINVAL); -+ } -+ -+ drm_desc->nb_objects = 0; - for (i = 0; i < avbuf->num_planes; i++) { - memset(&expbuf, 0, sizeof(expbuf)); - -@@ -565,19 +1121,11 @@ static int v4l2_buffer_export_drm(V4L2Buffer* avbuf, const uint32_t pixelformat) - if (ret < 0) - return AVERROR(errno); - -- avbuf->fd = expbuf.fd; -- -- if (V4L2_TYPE_IS_MULTIPLANAR(avbuf->buffer.type)) { -- /* drm frame */ -- avbuf->drm_frame.objects[i].size = avbuf->buffer.m.planes[i].length; -- avbuf->drm_frame.objects[i].fd = expbuf.fd; -- avbuf->drm_frame.objects[i].format_modifier = mod; -- } else { -- /* drm frame */ -- avbuf->drm_frame.objects[0].size = avbuf->buffer.length; -- avbuf->drm_frame.objects[0].fd = expbuf.fd; -- avbuf->drm_frame.objects[0].format_modifier = mod; -- } -+ drm_desc->objects[i].size = V4L2_TYPE_IS_MULTIPLANAR(avbuf->buffer.type) ? -+ avbuf->buffer.m.planes[i].length : avbuf->buffer.length; -+ drm_desc->objects[i].fd = expbuf.fd; -+ drm_desc->objects[i].format_modifier = mod; -+ drm_desc->nb_objects = i + 1; - } - - return 0; -@@ -588,7 +1136,7 @@ static int deint_v4l2m2m_allocate_buffers(V4L2Queue *queue) - struct v4l2_format *fmt = &queue->format; - DeintV4L2M2MContextShared *ctx = queue->ctx; - struct v4l2_requestbuffers req; -- int ret, i, j, multiplanar; -+ int ret, i, multiplanar; - uint32_t memory; - - memory = V4L2_TYPE_IS_OUTPUT(fmt->type) ? -@@ -617,10 +1165,9 @@ static int deint_v4l2m2m_allocate_buffers(V4L2Queue *queue) - } - - for (i = 0; i < queue->num_buffers; i++) { -- V4L2Buffer *buf = &queue->buffers[i]; -+ V4L2Buffer * const buf = &queue->buffers[i]; - - buf->enqueued = 0; -- buf->fd = -1; - buf->q = queue; - - buf->buffer.type = fmt->type; -@@ -632,6 +1179,12 @@ static int deint_v4l2m2m_allocate_buffers(V4L2Queue *queue) - buf->buffer.m.planes = buf->planes; - } - -+ drm_frame_init(&buf->drm_frame); -+ } -+ -+ for (i = 0; i < queue->num_buffers; i++) { -+ V4L2Buffer * const buf = &queue->buffers[i]; -+ - ret = ioctl(ctx->fd, VIDIOC_QUERYBUF, &buf->buffer); - if (ret < 0) { - ret = AVERROR(errno); -@@ -639,29 +1192,14 @@ static int deint_v4l2m2m_allocate_buffers(V4L2Queue *queue) - goto fail; - } - -- if (multiplanar) -- buf->num_planes = buf->buffer.length; -- else -- buf->num_planes = 1; -- -- for (j = 0; j < buf->num_planes; j++) { -- V4L2PlaneInfo *info = &buf->plane_info[j]; -- -- if (multiplanar) { -- info->bytesperline = fmt->fmt.pix_mp.plane_fmt[j].bytesperline; -- info->length = buf->buffer.m.planes[j].length; -- } else { -- info->bytesperline = fmt->fmt.pix.bytesperline; -- info->length = buf->buffer.length; -- } -- } -+ buf->num_planes = multiplanar ? buf->buffer.length : 1; - - if (!V4L2_TYPE_IS_OUTPUT(fmt->type)) { - ret = deint_v4l2m2m_enqueue_buffer(buf); - if (ret) - goto fail; - -- ret = v4l2_buffer_export_drm(buf, multiplanar ? fmt->fmt.pix_mp.pixelformat : fmt->fmt.pix.pixelformat); -+ ret = v4l2_buffer_export_drm(queue, buf); - if (ret) - goto fail; - } -@@ -670,12 +1208,8 @@ static int deint_v4l2m2m_allocate_buffers(V4L2Queue *queue) - return 0; - - fail: -- for (i = 0; i < queue->num_buffers; i++) -- if (queue->buffers[i].fd >= 0) -- close(queue->buffers[i].fd); -- av_free(queue->buffers); -- queue->buffers = NULL; -- -+ avbufs_delete(&queue->buffers, queue->num_buffers); -+ queue->num_buffers = 0; - return ret; - } - -@@ -862,7 +1396,6 @@ static void deint_v4l2m2m_destroy_context(DeintV4L2M2MContextShared *ctx) - if (atomic_fetch_sub(&ctx->refcount, 1) == 1) { - V4L2Queue *capture = &ctx->capture; - V4L2Queue *output = &ctx->output; -- int i; - - av_log(NULL, AV_LOG_DEBUG, "%s - destroying context\n", __func__); - -@@ -871,12 +1404,7 @@ static void deint_v4l2m2m_destroy_context(DeintV4L2M2MContextShared *ctx) - deint_v4l2m2m_streamoff(output); - } - -- if (capture->buffers) -- for (i = 0; i < capture->num_buffers; i++) { -- capture->buffers[i].q = NULL; -- if (capture->buffers[i].fd >= 0) -- close(capture->buffers[i].fd); -- } -+ avbufs_delete(&capture->buffers, capture->num_buffers); - - deint_v4l2m2m_unref_queued(output); - -@@ -908,73 +1436,15 @@ static void v4l2_free_buffer(void *opaque, uint8_t *unused) - deint_v4l2m2m_destroy_context(ctx); - } - --static uint8_t * v4l2_get_drm_frame(V4L2Buffer *avbuf, int height) --{ -- AVDRMFrameDescriptor *drm_desc = &avbuf->drm_frame; -- AVDRMLayerDescriptor *layer; -- -- /* fill the DRM frame descriptor */ -- drm_desc->nb_objects = avbuf->num_planes; -- drm_desc->nb_layers = 1; -- -- layer = &drm_desc->layers[0]; -- layer->nb_planes = avbuf->num_planes; -- -- for (int i = 0; i < avbuf->num_planes; i++) { -- layer->planes[i].object_index = i; -- layer->planes[i].offset = 0; -- layer->planes[i].pitch = avbuf->plane_info[i].bytesperline; -- } -- -- switch (layer->format) { -- case DRM_FORMAT_YUYV: -- layer->nb_planes = 1; -- break; -- -- case DRM_FORMAT_NV12: -- case DRM_FORMAT_NV21: -- if (avbuf->num_planes > 1) -- break; -- -- layer->nb_planes = 2; -- -- layer->planes[1].object_index = 0; -- layer->planes[1].offset = avbuf->plane_info[0].bytesperline * -- height; -- layer->planes[1].pitch = avbuf->plane_info[0].bytesperline; -- break; -- -- case DRM_FORMAT_YUV420: -- if (avbuf->num_planes > 1) -- break; -- -- layer->nb_planes = 3; -- -- layer->planes[1].object_index = 0; -- layer->planes[1].offset = avbuf->plane_info[0].bytesperline * -- height; -- layer->planes[1].pitch = avbuf->plane_info[0].bytesperline >> 1; -- -- layer->planes[2].object_index = 0; -- layer->planes[2].offset = layer->planes[1].offset + -- ((avbuf->plane_info[0].bytesperline * -- height) >> 2); -- layer->planes[2].pitch = avbuf->plane_info[0].bytesperline >> 1; -- break; -- -- default: -- drm_desc->nb_layers = 0; -- break; -- } -- -- return (uint8_t *) drm_desc; --} -- - // timeout in ms - static int deint_v4l2m2m_dequeue_frame(V4L2Queue *queue, AVFrame* frame, int timeout) - { - DeintV4L2M2MContextShared *ctx = queue->ctx; - V4L2Buffer* avbuf; -+ enum AVColorPrimaries color_primaries; -+ enum AVColorSpace colorspace; -+ enum AVColorTransferCharacteristic color_trc; -+ enum AVColorRange color_range; - - av_log(ctx->logctx, AV_LOG_TRACE, "<<< %s\n", __func__); - -@@ -985,8 +1455,6 @@ static int deint_v4l2m2m_dequeue_frame(V4L2Queue *queue, AVFrame* frame, int tim - } - - // Fill in PTS and anciliary info from src frame -- // we will want to overwrite some fields as only the pts/dts -- // fields are updated with new timing in this fn - pts_track_get_frame(&ctx->track, avbuf->buffer.timestamp, frame); - - frame->buf[0] = av_buffer_create((uint8_t *) &avbuf->drm_frame, -@@ -999,18 +1467,36 @@ static int deint_v4l2m2m_dequeue_frame(V4L2Queue *queue, AVFrame* frame, int tim - - atomic_fetch_add(&ctx->refcount, 1); - -- frame->data[0] = (uint8_t *)v4l2_get_drm_frame(avbuf, ctx->orig_height); -+ frame->data[0] = (uint8_t *)&avbuf->drm_frame; - frame->format = AV_PIX_FMT_DRM_PRIME; - if (ctx->hw_frames_ctx) - frame->hw_frames_ctx = av_buffer_ref(ctx->hw_frames_ctx); -- frame->height = ctx->height; -- frame->width = ctx->width; -- -- // Not interlaced now -- frame->interlaced_frame = 0; -- frame->top_field_first = 0; -- // Pkt duration halved -- frame->pkt_duration /= 2; -+ frame->height = ctx->output_height; -+ frame->width = ctx->output_width; -+ -+ color_primaries = get_color_primaries(&ctx->capture.format); -+ colorspace = get_color_space(&ctx->capture.format); -+ color_trc = get_color_trc(&ctx->capture.format); -+ color_range = get_color_range(&ctx->capture.format); -+ -+ // If the color parameters are unspecified by V4L2 then leave alone as they -+ // will have been copied from src -+ if (color_primaries != AVCOL_PRI_UNSPECIFIED) -+ frame->color_primaries = color_primaries; -+ if (colorspace != AVCOL_SPC_UNSPECIFIED) -+ frame->colorspace = colorspace; -+ if (color_trc != AVCOL_TRC_UNSPECIFIED) -+ frame->color_trc = color_trc; -+ if (color_range != AVCOL_RANGE_UNSPECIFIED) -+ frame->color_range = color_range; -+ -+ if (ctx->filter_type == FILTER_V4L2_DEINTERLACE) { -+ // Not interlaced now -+ frame->interlaced_frame = 0; // *** Fill in from dst buffer? -+ frame->top_field_first = 0; -+ // Pkt duration halved -+ frame->pkt_duration /= 2; -+ } - - if (avbuf->buffer.flags & V4L2_BUF_FLAG_ERROR) { - av_log(ctx->logctx, AV_LOG_ERROR, "driver decode error\n"); -@@ -1032,15 +1518,34 @@ static int deint_v4l2m2m_config_props(AVFilterLink *outlink) - ctx->height = avctx->inputs[0]->h; - ctx->width = avctx->inputs[0]->w; - -- av_log(priv, AV_LOG_DEBUG, "%s: %dx%d\n", __func__, ctx->width, ctx->height); -+ if (ctx->filter_type == FILTER_V4L2_SCALE) { -+ if ((ret = ff_scale_eval_dimensions(priv, -+ priv->w_expr, priv->h_expr, -+ inlink, outlink, -+ &ctx->output_width, &ctx->output_height)) < 0) -+ return ret; -+ -+ ff_scale_adjust_dimensions(inlink, &ctx->output_width, &ctx->output_height, -+ priv->force_original_aspect_ratio, priv->force_divisible_by); -+ } -+ else { -+ ctx->output_width = ctx->width; -+ ctx->output_height = ctx->height; -+ } -+ -+ av_log(priv, AV_LOG_DEBUG, "%s: %dx%d->%dx%d\n", __func__, ctx->width, ctx->height, ctx->output_width, ctx->output_height); - - outlink->time_base = inlink->time_base; -- outlink->w = inlink->w; -- outlink->h = inlink->h; -- outlink->sample_aspect_ratio = inlink->sample_aspect_ratio; -+ outlink->w = ctx->output_width; -+ outlink->h = ctx->output_height; - outlink->format = inlink->format; - outlink->frame_rate = (AVRational) {1, 0}; // Deny knowledge of frame rate - -+ if (inlink->sample_aspect_ratio.num) -+ outlink->sample_aspect_ratio = av_mul_q((AVRational){outlink->h * inlink->w, outlink->w * inlink->h}, inlink->sample_aspect_ratio); -+ else -+ outlink->sample_aspect_ratio = inlink->sample_aspect_ratio; -+ - ret = deint_v4l2m2m_find_device(ctx); - if (ret) - return ret; -@@ -1055,18 +1560,19 @@ static int deint_v4l2m2m_config_props(AVFilterLink *outlink) - - static uint32_t desc_pixelformat(const AVDRMFrameDescriptor * const drm_desc) - { -- const int is_linear = (drm_desc->objects[0].format_modifier == DRM_FORMAT_MOD_LINEAR || -- drm_desc->objects[0].format_modifier == DRM_FORMAT_MOD_INVALID); -+ const uint64_t mod = drm_desc->objects[0].format_modifier; -+ const int is_linear = (mod == DRM_FORMAT_MOD_LINEAR || mod == DRM_FORMAT_MOD_INVALID); -+ -+ // Only currently support single object things -+ if (drm_desc->nb_objects != 1) -+ return 0; - - switch (drm_desc->layers[0].format) { - case DRM_FORMAT_YUV420: -- if (is_linear) -- return drm_desc->nb_objects == 1 ? V4L2_PIX_FMT_YUV420 : 0; -- break; -+ return is_linear ? V4L2_PIX_FMT_YUV420 : 0; - case DRM_FORMAT_NV12: -- if (is_linear) -- return drm_desc->nb_objects == 1 ? V4L2_PIX_FMT_NV12 : 0; -- break; -+ return is_linear ? V4L2_PIX_FMT_NV12 : -+ fourcc_mod_broadcom_mod(mod) == DRM_FORMAT_MOD_BROADCOM_SAND128 ? V4L2_PIX_FMT_NV12_COL128 : 0; - default: - break; - } -@@ -1089,7 +1595,7 @@ static int deint_v4l2m2m_filter_frame(AVFilterLink *link, AVFrame *in) - - if (ctx->field_order == V4L2_FIELD_ANY) { - const AVDRMFrameDescriptor * const drm_desc = (AVDRMFrameDescriptor *)in->data[0]; -- const uint32_t pixelformat = desc_pixelformat(drm_desc); -+ uint32_t pixelformat = desc_pixelformat(drm_desc); - - if (pixelformat == 0) { - av_log(avctx, AV_LOG_ERROR, "Unsupported DRM format %s in %d objects, modifier %#" PRIx64 "\n", -@@ -1104,29 +1610,49 @@ static int deint_v4l2m2m_filter_frame(AVFilterLink *link, AVFrame *in) - av_log(priv, AV_LOG_DEBUG, "%s: %dx%d (%td,%td)\n", __func__, ctx->width, ctx->height, - drm_desc->layers[0].planes[0].pitch, drm_desc->layers[0].planes[1].offset); - -- ret = deint_v4l2m2m_set_format(output, pixelformat, ctx->field_order, ctx->width, ctx->height, ctx->orig_width, drm_desc->layers[0].planes[1].offset); -- if (ret) -+ if ((ret = set_src_fmt(output, in)) != 0) { -+ av_log(avctx, AV_LOG_WARNING, "Unknown input DRM format: %s mod: %#" PRIx64 "\n", -+ av_fourcc2str(drm_desc->layers[0].format), drm_desc->objects[0].format_modifier); -+ return ret; -+ } -+ -+ ret = do_s_fmt(output); -+ if (ret) { -+ av_log(avctx, AV_LOG_WARNING, "Failed to set source format\n"); - return ret; -+ } - -- ret = deint_v4l2m2m_set_format(capture, pixelformat, V4L2_FIELD_NONE, ctx->width, ctx->height, ctx->orig_width, drm_desc->layers[0].planes[1].offset); -- if (ret) -+ if (ctx->output_format != AV_PIX_FMT_NONE) -+ pixelformat = fmt_av_to_v4l2(ctx->output_format); -+ ret = set_dst_format(priv, capture, pixelformat, V4L2_FIELD_NONE, ctx->output_width, ctx->output_height); -+ if (ret) { -+ av_log(avctx, AV_LOG_WARNING, "Failed to set destination format\n"); - return ret; -+ } - - ret = deint_v4l2m2m_allocate_buffers(capture); -- if (ret) -+ if (ret) { -+ av_log(avctx, AV_LOG_WARNING, "Failed to allocate destination buffers\n"); - return ret; -+ } - - ret = deint_v4l2m2m_streamon(capture); -- if (ret) -+ if (ret) { -+ av_log(avctx, AV_LOG_WARNING, "Failed set destination streamon: %s\n", av_err2str(ret)); - return ret; -+ } - - ret = deint_v4l2m2m_allocate_buffers(output); -- if (ret) -+ if (ret) { -+ av_log(avctx, AV_LOG_WARNING, "Failed to allocate src buffers\n"); - return ret; -+ } - - ret = deint_v4l2m2m_streamon(output); -- if (ret) -+ if (ret) { -+ av_log(avctx, AV_LOG_WARNING, "Failed set src streamon: %s\n", av_err2str(ret)); - return ret; -+ } - - if (in->top_field_first) - ctx->field_order = V4L2_FIELD_INTERLACED_TB; -@@ -1251,7 +1777,7 @@ again: - return did_something ? 0 : FFERROR_NOT_READY; - } - --static av_cold int deint_v4l2m2m_init(AVFilterContext *avctx) -+static av_cold int common_v4l2m2m_init(AVFilterContext * const avctx, const filter_type_v4l2_t filter_type) - { - DeintV4L2M2MContext * const priv = avctx->priv; - DeintV4L2M2MContextShared * const ctx = av_mallocz(sizeof(DeintV4L2M2MContextShared)); -@@ -1262,6 +1788,7 @@ static av_cold int deint_v4l2m2m_init(AVFilterContext *avctx) - } - priv->shared = ctx; - ctx->logctx = priv; -+ ctx->filter_type = filter_type; - ctx->fd = -1; - ctx->output.ctx = ctx; - ctx->output.num_buffers = 8; -@@ -1274,9 +1801,52 @@ static av_cold int deint_v4l2m2m_init(AVFilterContext *avctx) - - atomic_init(&ctx->refcount, 1); - -+ if (priv->output_format_string) { -+ ctx->output_format = av_get_pix_fmt(priv->output_format_string); -+ if (ctx->output_format == AV_PIX_FMT_NONE) { -+ av_log(avctx, AV_LOG_ERROR, "Invalid ffmpeg output format '%s'.\n", priv->output_format_string); -+ return AVERROR(EINVAL); -+ } -+ if (fmt_av_to_v4l2(ctx->output_format) == 0) { -+ av_log(avctx, AV_LOG_ERROR, "Unsupported output format for V4L2: %s.\n", av_get_pix_fmt_name(ctx->output_format)); -+ return AVERROR(EINVAL); -+ } -+ } else { -+ // Use the input format once that is configured. -+ ctx->output_format = AV_PIX_FMT_NONE; -+ } -+ -+#define STRING_OPTION(var_name, func_name, default_value) do { \ -+ if (priv->var_name ## _string) { \ -+ int var = av_ ## func_name ## _from_name(priv->var_name ## _string); \ -+ if (var < 0) { \ -+ av_log(avctx, AV_LOG_ERROR, "Invalid %s.\n", #var_name); \ -+ return AVERROR(EINVAL); \ -+ } \ -+ priv->var_name = var; \ -+ } else { \ -+ priv->var_name = default_value; \ -+ } \ -+ } while (0) -+ -+ STRING_OPTION(colour_primaries, color_primaries, AVCOL_PRI_UNSPECIFIED); -+ STRING_OPTION(colour_transfer, color_transfer, AVCOL_TRC_UNSPECIFIED); -+ STRING_OPTION(colour_matrix, color_space, AVCOL_SPC_UNSPECIFIED); -+ STRING_OPTION(chroma_location, chroma_location, AVCHROMA_LOC_UNSPECIFIED); -+ - return 0; - } - -+static av_cold int deint_v4l2m2m_init(AVFilterContext *avctx) -+{ -+ return common_v4l2m2m_init(avctx, FILTER_V4L2_DEINTERLACE); -+} -+ -+static av_cold int scale_v4l2m2m_init(AVFilterContext *avctx) -+{ -+ return common_v4l2m2m_init(avctx, FILTER_V4L2_SCALE); -+} -+ - static void deint_v4l2m2m_uninit(AVFilterContext *avctx) - { - DeintV4L2M2MContext *priv = avctx->priv; -@@ -1294,6 +1864,51 @@ static const AVOption deinterlace_v4l2m2m_options[] = { - - AVFILTER_DEFINE_CLASS(deinterlace_v4l2m2m); - -+#define OFFSET(x) offsetof(DeintV4L2M2MContext, x) -+#define FLAGS (AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM) -+ -+static const AVOption scale_v4l2m2m_options[] = { -+ { "w", "Output video width", -+ OFFSET(w_expr), AV_OPT_TYPE_STRING, {.str = "iw"}, .flags = FLAGS }, -+ { "h", "Output video height", -+ OFFSET(h_expr), AV_OPT_TYPE_STRING, {.str = "ih"}, .flags = FLAGS }, -+ { "format", "Output video format (software format of hardware frames)", -+ OFFSET(output_format_string), AV_OPT_TYPE_STRING, .flags = FLAGS }, -+ // These colour properties match the ones of the same name in vf_scale. -+ { "out_color_matrix", "Output colour matrix coefficient set", -+ OFFSET(colour_matrix_string), AV_OPT_TYPE_STRING, { .str = NULL }, .flags = FLAGS }, -+ { "out_range", "Output colour range", -+ OFFSET(colour_range), AV_OPT_TYPE_INT, { .i64 = AVCOL_RANGE_UNSPECIFIED }, -+ AVCOL_RANGE_UNSPECIFIED, AVCOL_RANGE_JPEG, FLAGS, "range" }, -+ { "full", "Full range", -+ 0, AV_OPT_TYPE_CONST, { .i64 = AVCOL_RANGE_JPEG }, 0, 0, FLAGS, "range" }, -+ { "limited", "Limited range", -+ 0, AV_OPT_TYPE_CONST, { .i64 = AVCOL_RANGE_MPEG }, 0, 0, FLAGS, "range" }, -+ { "jpeg", "Full range", -+ 0, AV_OPT_TYPE_CONST, { .i64 = AVCOL_RANGE_JPEG }, 0, 0, FLAGS, "range" }, -+ { "mpeg", "Limited range", -+ 0, AV_OPT_TYPE_CONST, { .i64 = AVCOL_RANGE_MPEG }, 0, 0, FLAGS, "range" }, -+ { "tv", "Limited range", -+ 0, AV_OPT_TYPE_CONST, { .i64 = AVCOL_RANGE_MPEG }, 0, 0, FLAGS, "range" }, -+ { "pc", "Full range", -+ 0, AV_OPT_TYPE_CONST, { .i64 = AVCOL_RANGE_JPEG }, 0, 0, FLAGS, "range" }, -+ // These colour properties match the ones in the VAAPI scaler -+ { "out_color_primaries", "Output colour primaries", -+ OFFSET(colour_primaries_string), AV_OPT_TYPE_STRING, -+ { .str = NULL }, .flags = FLAGS }, -+ { "out_color_transfer", "Output colour transfer characteristics", -+ OFFSET(colour_transfer_string), AV_OPT_TYPE_STRING, -+ { .str = NULL }, .flags = FLAGS }, -+ { "out_chroma_location", "Output chroma sample location", -+ OFFSET(chroma_location_string), AV_OPT_TYPE_STRING, -+ { .str = NULL }, .flags = FLAGS }, -+ { "force_original_aspect_ratio", "decrease or increase w/h if necessary to keep the original AR", OFFSET(force_original_aspect_ratio), AV_OPT_TYPE_INT, { .i64 = 0}, 0, 2, FLAGS, "force_oar" }, -+ { "force_divisible_by", "enforce that the output resolution is divisible by a defined integer when force_original_aspect_ratio is used", OFFSET(force_divisible_by), AV_OPT_TYPE_INT, { .i64 = 1}, 1, 256, FLAGS }, -+ { NULL }, -+}; -+ -+AVFILTER_DEFINE_CLASS(scale_v4l2m2m); -+ - static const AVFilterPad deint_v4l2m2m_inputs[] = { - { - .name = "default", -@@ -1321,3 +1936,17 @@ AVFilter ff_vf_deinterlace_v4l2m2m = { - .priv_class = &deinterlace_v4l2m2m_class, - .activate = deint_v4l2m2m_activate, - }; -+ -+AVFilter ff_vf_scale_v4l2m2m = { -+ .name = "scale_v4l2m2m", -+ .description = NULL_IF_CONFIG_SMALL("V4L2 M2M scaler"), -+ .priv_size = sizeof(DeintV4L2M2MContext), -+ .init = &scale_v4l2m2m_init, -+ .uninit = &deint_v4l2m2m_uninit, -+ FILTER_INPUTS(deint_v4l2m2m_inputs), -+ FILTER_OUTPUTS(deint_v4l2m2m_outputs), -+ FILTER_SINGLE_SAMPLEFMT(AV_PIX_FMT_DRM_PRIME), -+ .priv_class = &scale_v4l2m2m_class, -+ .activate = deint_v4l2m2m_activate, -+}; -+ - -From 7e7147d50bc6e3f13834525dba3a47d170422f07 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 22 Sep 2022 14:54:46 +0000 -Subject: [PATCH 071/151] v4l2_m2m: Adjust buffer allocation based on min/max - controls - -Clip requested buffer count to min/max declared by driver. -If 0 buffers requested then set to min+2. -This allows encode to keep its src buffer count down to a plausible -minimum which helps with flow control. ---- - libavcodec/v4l2_context.c | 19 +++++++++++++++++++ - 1 file changed, 19 insertions(+) - -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index 6b97eab41e..ba36689ff3 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -1187,6 +1187,7 @@ fail_release: - - int ff_v4l2_context_init(V4L2Context* ctx) - { -+ struct v4l2_queryctrl qctrl; - V4L2m2mContext * const s = ctx_to_m2mctx(ctx); - int ret; - -@@ -1228,6 +1229,24 @@ int ff_v4l2_context_init(V4L2Context* ctx) - goto fail_unref_hwframes; - } - -+ memset(&qctrl, 0, sizeof(qctrl)); -+ qctrl.id = V4L2_CID_MIN_BUFFERS_FOR_OUTPUT; -+ if (ioctl(s->fd, VIDIOC_QUERYCTRL, &qctrl) != 0) { -+ ret = AVERROR(errno); -+ if (ret != AVERROR(EINVAL)) { -+ av_log(logger(ctx), AV_LOG_ERROR, "%s VIDIOC_QUERCTRL failed: %s\n", ctx->name, av_err2str(ret)); -+ goto fail_unref_hwframes; -+ } -+ // Control unsupported - set default if wanted -+ if (ctx->num_buffers < 2) -+ ctx->num_buffers = 4; -+ } -+ else { -+ if (ctx->num_buffers < 2) -+ ctx->num_buffers = qctrl.minimum + 2; -+ ctx->num_buffers = av_clip(ctx->num_buffers, qctrl.minimum, qctrl.maximum); -+ } -+ - ret = create_buffers(ctx, ctx->num_buffers, ctx->buf_mem); - if (ret < 0) - goto fail_unref_hwframes; - -From b69a2707a192ac509174899233a094373a3f5dc9 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 22 Sep 2022 15:00:12 +0000 -Subject: [PATCH 072/151] v4l2_m2m_dec: If src Q is full then wait indefinitely - for buffer - -If it is not possible to add another buffer to the src Q then alawys -wait indefinitely for either an output frame or the Q to have space. - -This has issues if the reason that the Q is stalled is due to dst buffer -exhaustion and buffers cannot be returned async by another thread but -the current scheme confuses ffmpegs pipeline scheduling. ---- - libavcodec/v4l2_m2m_dec.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 485a96f4b4..bb183097f6 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -456,9 +456,9 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - if (dst_rv != 0 && TRY_DQ(src_rv)) { - // Pick a timeout depending on state - const int t = -+ src_rv == NQ_Q_FULL ? -1 : - src_rv == NQ_DRAINING ? 300 : -- prefer_dq ? 5 : -- src_rv == NQ_Q_FULL ? -1 : 0; -+ prefer_dq ? 5 : 0; - - // Dequeue frame will unref any previous contents of frame - // if it returns success so we don't need an explicit unref - -From b1d37be81bbf683a0eb16923c9b9f045fd0ea0c0 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 22 Sep 2022 15:12:27 +0000 -Subject: [PATCH 073/151] vf_deinterlace_v4l2m2m: Add Q name to structure for - debug - ---- - libavfilter/vf_deinterlace_v4l2m2m.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/libavfilter/vf_deinterlace_v4l2m2m.c b/libavfilter/vf_deinterlace_v4l2m2m.c -index 2df39ec0f1..4edecc02bf 100644 ---- a/libavfilter/vf_deinterlace_v4l2m2m.c -+++ b/libavfilter/vf_deinterlace_v4l2m2m.c -@@ -84,6 +84,7 @@ typedef struct V4L2Queue { - struct v4l2_selection sel; - int num_buffers; - V4L2Buffer *buffers; -+ const char * name; - DeintV4L2M2MContextShared *ctx; - } V4L2Queue; - -@@ -1792,8 +1793,10 @@ static av_cold int common_v4l2m2m_init(AVFilterContext * const avctx, const filt - ctx->fd = -1; - ctx->output.ctx = ctx; - ctx->output.num_buffers = 8; -+ ctx->output.name = "OUTPUT"; - ctx->capture.ctx = ctx; - ctx->capture.num_buffers = 12; -+ ctx->capture.name = "CAPTURE"; - ctx->done = 0; - ctx->field_order = V4L2_FIELD_ANY; - - -From 794a5bfc3ec74fdc7664508a287a075708d5deef Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 22 Sep 2022 16:08:42 +0000 -Subject: [PATCH 074/151] v4l2_m2m_enc: Set src buffer count to min+2 by - default - -Set output.num_buffers to 0 by default which will then be set to min+2 -by the allocation code. This fixes an issue where the deinterlacer had -fewer dest buffer than the encoder has src buffers and so ran dry -creating deadlock in the ffmpeg filter chain. ---- - libavcodec/v4l2_m2m_enc.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/libavcodec/v4l2_m2m_enc.c b/libavcodec/v4l2_m2m_enc.c -index 099ad23928..b8ba815c37 100644 ---- a/libavcodec/v4l2_m2m_enc.c -+++ b/libavcodec/v4l2_m2m_enc.c -@@ -672,9 +672,10 @@ static av_cold int v4l2_encode_close(AVCodecContext *avctx) - #define FLAGS AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM - - #define V4L_M2M_CAPTURE_OPTS \ -- V4L_M2M_DEFAULT_OPTS,\ -+ { "num_output_buffers", "Number of buffers in the output context",\ -+ OFFSET(num_output_buffers), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, FLAGS },\ - { "num_capture_buffers", "Number of buffers in the capture context", \ -- OFFSET(num_capture_buffers), AV_OPT_TYPE_INT, {.i64 = 4 }, 4, INT_MAX, FLAGS } -+ OFFSET(num_capture_buffers), AV_OPT_TYPE_INT, {.i64 = 8 }, 8, INT_MAX, FLAGS } - - static const AVOption mpeg4_options[] = { - V4L_M2M_CAPTURE_OPTS, - -From 85c42743046a05b347f33b1933e6d52ea1d17e00 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 22 Sep 2022 16:13:57 +0000 -Subject: [PATCH 075/151] vf_deinterlace_m2m: For deinterlace set outlink FR to - twice inlink - -We used to set the outlink framerate to unknown but it turns out that -ffmpegs filter pipeline copes with that badly. Otherwise leave at 0,0 -which will copy FR from inlink to outlink. ---- - libavfilter/vf_deinterlace_v4l2m2m.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/libavfilter/vf_deinterlace_v4l2m2m.c b/libavfilter/vf_deinterlace_v4l2m2m.c -index 4edecc02bf..c52dae1c44 100644 ---- a/libavfilter/vf_deinterlace_v4l2m2m.c -+++ b/libavfilter/vf_deinterlace_v4l2m2m.c -@@ -1534,13 +1534,16 @@ static int deint_v4l2m2m_config_props(AVFilterLink *outlink) - ctx->output_height = ctx->height; - } - -- av_log(priv, AV_LOG_DEBUG, "%s: %dx%d->%dx%d\n", __func__, ctx->width, ctx->height, ctx->output_width, ctx->output_height); -+ av_log(priv, AV_LOG_DEBUG, "%s: %dx%d->%dx%d FR: %d/%d->%d/%d\n", __func__, -+ ctx->width, ctx->height, ctx->output_width, ctx->output_height, -+ inlink->frame_rate.num, inlink->frame_rate.den, outlink->frame_rate.num, outlink->frame_rate.den); - - outlink->time_base = inlink->time_base; - outlink->w = ctx->output_width; - outlink->h = ctx->output_height; - outlink->format = inlink->format; -- outlink->frame_rate = (AVRational) {1, 0}; // Deny knowledge of frame rate -+ if (ctx->filter_type == FILTER_V4L2_DEINTERLACE && inlink->frame_rate.den != 0) -+ outlink->frame_rate = (AVRational){inlink->frame_rate.num * 2, inlink->frame_rate.den}; - - if (inlink->sample_aspect_ratio.num) - outlink->sample_aspect_ratio = av_mul_q((AVRational){outlink->h * inlink->w, outlink->w * inlink->h}, inlink->sample_aspect_ratio); - -From 34a24bc0b0d427c75659d3907cb75afb6a9dc255 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Fri, 23 Sep 2022 11:30:56 +0000 -Subject: [PATCH 076/151] v4l2m2m: Add ff_v4l2_dq_all to drain all buffers from - a Q - -Useful for where (encode) we might have drmprime buffers that we want to -return to the source ASAP. ---- - libavcodec/v4l2_context.c | 17 +++++++++++------ - libavcodec/v4l2_context.h | 2 ++ - 2 files changed, 13 insertions(+), 6 deletions(-) - -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index ba36689ff3..4a359bf45e 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -707,17 +707,22 @@ clean_v4l2_buffer(V4L2Buffer * const avbuf) - return avbuf; - } - -+void -+ff_v4l2_dq_all(V4L2Context *const ctx) -+{ -+ V4L2Buffer * avbuf; -+ do { -+ get_qbuf(ctx, &avbuf, 0); -+ } while (avbuf); -+} -+ - static V4L2Buffer* v4l2_getfree_v4l2buf(V4L2Context *ctx) - { - int i; - - /* get back as many output buffers as possible */ -- if (V4L2_TYPE_IS_OUTPUT(ctx->type)) { -- V4L2Buffer * avbuf; -- do { -- get_qbuf(ctx, &avbuf, 0); -- } while (avbuf); -- } -+ if (V4L2_TYPE_IS_OUTPUT(ctx->type)) -+ ff_v4l2_dq_all(ctx); - - for (i = 0; i < ctx->num_buffers; i++) { - V4L2Buffer * const avbuf = (V4L2Buffer *)ctx->bufrefs[i]->data; -diff --git a/libavcodec/v4l2_context.h b/libavcodec/v4l2_context.h -index 21265f1bd7..523c53e97d 100644 ---- a/libavcodec/v4l2_context.h -+++ b/libavcodec/v4l2_context.h -@@ -218,4 +218,6 @@ int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt, const - */ - int ff_v4l2_context_enqueue_frame(V4L2Context* ctx, const AVFrame* f); - -+void ff_v4l2_dq_all(V4L2Context *const ctx); -+ - #endif // AVCODEC_V4L2_CONTEXT_H - -From 95dfc168c74f7b0f282c1b2ad9deb8fba10a7ce5 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Fri, 23 Sep 2022 11:38:36 +0000 -Subject: [PATCH 077/151] v4l2_m2m_enc: DQ output more frequently - -Ensure that we DQ any released src buffers on every op to avoid deadlock -with source. - -There is a plausible argument that this patch is inelegant and the drain -should be integrated into dq_buf, but that is a further reaching delta. ---- - libavcodec/v4l2_m2m_enc.c | 12 ++++++++++-- - 1 file changed, 10 insertions(+), 2 deletions(-) - -diff --git a/libavcodec/v4l2_m2m_enc.c b/libavcodec/v4l2_m2m_enc.c -index b8ba815c37..a992a3cccc 100644 ---- a/libavcodec/v4l2_m2m_enc.c -+++ b/libavcodec/v4l2_m2m_enc.c -@@ -421,6 +421,8 @@ static int v4l2_send_frame(AVCodecContext *avctx, const AVFrame *frame) - V4L2m2mContext *s = ((V4L2m2mPriv*)avctx->priv_data)->context; - V4L2Context *const output = &s->output; - -+ ff_v4l2_dq_all(output); -+ - // Signal EOF if needed - if (!frame) { - return ff_v4l2_context_enqueue_frame(output, frame); -@@ -492,6 +494,8 @@ static int v4l2_receive_packet(AVCodecContext *avctx, AVPacket *avpkt) - AVFrame *frame = s->frame; - int ret; - -+ ff_v4l2_dq_all(output); -+ - if (s->draining) - goto dequeue; - -@@ -528,7 +532,9 @@ static int v4l2_receive_packet(AVCodecContext *avctx, AVPacket *avpkt) - } - - dequeue: -- if ((ret = ff_v4l2_context_dequeue_packet(capture, avpkt)) != 0) -+ ret = ff_v4l2_context_dequeue_packet(capture, avpkt); -+ ff_v4l2_dq_all(output); -+ if (ret) - return ret; - - if (capture->first_buf == 1) { -@@ -560,7 +566,9 @@ dequeue: - s->extdata_size = len; - } - -- if ((ret = ff_v4l2_context_dequeue_packet(capture, avpkt)) != 0) -+ ret = ff_v4l2_context_dequeue_packet(capture, avpkt); -+ ff_v4l2_dq_all(output); -+ if (ret) - return ret; - } - - -From a40b1c38b0615fce0c0d9eb97510ab9e77b3e1ac Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 26 Sep 2022 18:20:00 +0100 -Subject: [PATCH 078/151] conf_native: Remove --enable-rpi from all builds - ---- - pi-util/conf_native.sh | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/pi-util/conf_native.sh b/pi-util/conf_native.sh -index 37cea71756..f22d531ca4 100755 ---- a/pi-util/conf_native.sh -+++ b/pi-util/conf_native.sh -@@ -54,9 +54,9 @@ if [ $MMAL ]; then - RPI_LIBDIRS="-L$RPI_OPT_VC/lib" - RPI_DEFINES="$RPI_DEFINES -D__VCCOREVER__=0x4000000" - RPI_EXTRALIBS="-Wl,--start-group -lbcm_host -lmmal -lmmal_util -lmmal_core -lvcos -lvcsm -lvchostif -lvchiq_arm -Wl,--end-group" -- RPIOPTS="--enable-mmal --enable-rpi" -+ RPIOPTS="--enable-mmal" - else -- RPIOPTS="--disable-mmal --enable-sand" -+ RPIOPTS="--disable-mmal" - fi - - C=`lsb_release -sc` -@@ -89,6 +89,7 @@ $FFSRC/configure \ - $MCOPTS\ - --disable-stripping\ - --disable-thumb\ -+ --enable-sand\ - --enable-v4l2-request\ - --enable-libdrm\ - --enable-vout-egl\ - -From 8fddfc8f1e3c95caded18705ed29be0ae95517bc Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 29 Sep 2022 19:48:08 +0000 -Subject: [PATCH 079/151] v4l2_m2m_dec: Deal correctly with avcC H264 data in - extradata - -Decoders expect AnnexB style headers, mkv and similar formats have -somewhat oddly wrapped extradata. Convert to annex-b style before use. ---- - libavcodec/v4l2_m2m.h | 2 +- - libavcodec/v4l2_m2m_dec.c | 177 ++++++++++++++++++++++++++++++++++++-- - 2 files changed, 169 insertions(+), 10 deletions(-) - -diff --git a/libavcodec/v4l2_m2m.h b/libavcodec/v4l2_m2m.h -index ee72beb052..babf101d65 100644 ---- a/libavcodec/v4l2_m2m.h -+++ b/libavcodec/v4l2_m2m.h -@@ -118,7 +118,7 @@ typedef struct V4L2m2mContext { - /* Ext data sent */ - int extdata_sent; - /* Ext data sent in packet - overrides ctx */ -- uint8_t * extdata_data; -+ void * extdata_data; - size_t extdata_size; - - #define FF_V4L2_QUIRK_REINIT_ALWAYS 1 -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index bb183097f6..6bd9926b3f 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -46,6 +46,71 @@ - #define STATS_LAST_COUNT_MAX 64 - #define STATS_INTERVAL_MAX (1 << 30) - -+#ifndef FF_API_BUFFER_SIZE_T -+#define FF_API_BUFFER_SIZE_T 1 -+#endif -+ -+#define DUMP_FAILED_EXTRADATA 0 -+ -+#if DUMP_FAILED_EXTRADATA -+static inline char hex1(unsigned int x) -+{ -+ x &= 0xf; -+ return x <= 9 ? '0' + x : 'a' + x - 10; -+} -+ -+static inline char * hex2(char * s, unsigned int x) -+{ -+ *s++ = hex1(x >> 4); -+ *s++ = hex1(x); -+ return s; -+} -+ -+static inline char * hex4(char * s, unsigned int x) -+{ -+ s = hex2(s, x >> 8); -+ s = hex2(s, x); -+ return s; -+} -+ -+static inline char * dash2(char * s) -+{ -+ *s++ = '-'; -+ *s++ = '-'; -+ return s; -+} -+ -+static void -+data16(char * s, const unsigned int offset, const uint8_t * m, const size_t len) -+{ -+ size_t i; -+ s = hex4(s, offset); -+ m += offset; -+ for (i = 0; i != 8; ++i) { -+ *s++ = ' '; -+ s = len > i + offset ? hex2(s, *m++) : dash2(s); -+ } -+ *s++ = ' '; -+ *s++ = ':'; -+ for (; i != 16; ++i) { -+ *s++ = ' '; -+ s = len > i + offset ? hex2(s, *m++) : dash2(s); -+ } -+ *s++ = 0; -+} -+ -+static void -+log_dump(void * logctx, int lvl, const void * const data, const size_t len) -+{ -+ size_t i; -+ for (i = 0; i < len; i += 16) { -+ char buf[80]; -+ data16(buf, i, data, len); -+ av_log(logctx, lvl, "%s\n", buf); -+ } -+} -+#endif -+ - static int64_t pts_stats_guess(const pts_stats_t * const stats) - { - if (stats->last_pts == AV_NOPTS_VALUE || -@@ -98,6 +163,98 @@ static void pts_stats_init(pts_stats_t * const stats, void * logctx, const char - }; - } - -+// If abdata == NULL then this just counts space required -+// Unpacks avcC if detected -+static int -+h264_xd_copy(const uint8_t * const extradata, const int extrasize, uint8_t * abdata) -+{ -+ const uint8_t * const xdend = extradata + extrasize; -+ const uint8_t * p = extradata; -+ uint8_t * d = abdata; -+ unsigned int n; -+ unsigned int len; -+ const unsigned int hdrlen = 4; -+ unsigned int need_pps = 1; -+ -+ if (extrasize < 8) -+ return AVERROR(EINVAL); -+ -+ if (p[0] == 0 && p[1] == 0) { -+ // Assume a couple of leading zeros are good enough to indicate NAL -+ if (abdata) -+ memcpy(d, p, extrasize); -+ return extrasize; -+ } -+ -+ // avcC starts with a 1 -+ if (p[0] != 1) -+ return AVERROR(EINVAL); -+ -+ p += 5; -+ n = *p++ & 0x1f; -+ -+doxps: -+ while (n--) { -+ if (xdend - p < 2) -+ return AVERROR(EINVAL); -+ len = (p[0] << 8) | p[1]; -+ p += 2; -+ if (xdend - p < (ptrdiff_t)len) -+ return AVERROR(EINVAL); -+ if (abdata) { -+ d[0] = 0; -+ d[1] = 0; -+ d[2] = 0; -+ d[3] = 1; -+ memcpy(d + 4, p, len); -+ } -+ d += len + hdrlen; -+ p += len; -+ } -+ if (need_pps) { -+ need_pps = 0; -+ if (p >= xdend) -+ return AVERROR(EINVAL); -+ n = *p++; -+ goto doxps; -+ } -+ -+ return d - abdata; -+} -+ -+static int -+copy_extradata(AVCodecContext * const avctx, -+ const void * const src_data, const int src_len, -+ void ** const pdst_data, size_t * const pdst_len) -+{ -+ int len; -+ -+ *pdst_len = 0; -+ av_freep(pdst_data); -+ -+ if (avctx->codec_id == AV_CODEC_ID_H264) -+ len = h264_xd_copy(src_data, src_len, NULL); -+ else -+ len = src_len < 0 ? AVERROR(EINVAL) : src_len; -+ -+ // Zero length is OK but we swant to stop - -ve is error val -+ if (len <= 0) -+ return len; -+ -+ if ((*pdst_data = av_malloc(len + AV_INPUT_BUFFER_PADDING_SIZE)) == NULL) -+ return AVERROR(ENOMEM); -+ -+ if (avctx->codec_id == AV_CODEC_ID_H264) -+ h264_xd_copy(src_data, src_len, *pdst_data); -+ else -+ memcpy(*pdst_data, src_data, len); -+ *pdst_len = len; -+ -+ return 0; -+} -+ -+ -+ - static int check_output_streamon(AVCodecContext *const avctx, V4L2m2mContext *const s) - { - int ret; -@@ -277,13 +434,8 @@ static int try_enqueue_src(AVCodecContext * const avctx, V4L2m2mContext * const - side_data = av_packet_get_side_data(&s->buf_pkt, AV_PKT_DATA_NEW_EXTRADATA, &side_size); - if (side_data) { - av_log(avctx, AV_LOG_DEBUG, "New extradata\n"); -- av_freep(&s->extdata_data); -- if ((s->extdata_data = av_malloc(side_size ? side_size : 1)) == NULL) { -- av_log(avctx, AV_LOG_ERROR, "Failed to alloc %zd bytes of extra data\n", side_size); -- return AVERROR(ENOMEM); -- } -- memcpy(s->extdata_data, side_data, side_size); -- s->extdata_size = side_size; -+ if ((ret = copy_extradata(avctx, side_data, (int)side_size, &s->extdata_data, &s->extdata_size)) < 0) -+ av_log(avctx, AV_LOG_WARNING, "Failed to copy new extra data: %s\n", av_err2str(ret)); - s->extdata_sent = 0; - } - -@@ -359,8 +511,6 @@ static int try_enqueue_src(AVCodecContext * const avctx, V4L2m2mContext * const - ret = ff_v4l2_context_enqueue_packet(&s->output, &s->buf_pkt, NULL, 0); - else if (s->extdata_data) - ret = ff_v4l2_context_enqueue_packet(&s->output, &s->buf_pkt, s->extdata_data, s->extdata_size); -- else -- ret = ff_v4l2_context_enqueue_packet(&s->output, &s->buf_pkt, avctx->extradata, avctx->extradata_size); - - if (ret == AVERROR(EAGAIN)) { - // Out of input buffers - keep packet -@@ -770,6 +920,15 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - return ret; - } - -+ if (avctx->extradata && -+ (ret = copy_extradata(avctx, avctx->extradata, avctx->extradata_size, &s->extdata_data, &s->extdata_size)) != 0) { -+ av_log(avctx, AV_LOG_ERROR, "Failed to copy extradata from context: %s\n", av_err2str(ret)); -+#if DUMP_FAILED_EXTRADATA -+ log_dump(avctx, AV_LOG_INFO, avctx->extradata, avctx->extradata_size); -+#endif -+ return ret; -+ } -+ - if ((ret = v4l2_prepare_decoder(s)) < 0) - return ret; - - -From 70227ebbc2999bc49075a3b683392d94618ecd89 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Fri, 30 Sep 2022 14:20:23 +0000 -Subject: [PATCH 080/151] v4l2_request_hevc: Fix up - V4L2_CID_CODEC_STATELESS_BASE if missing - ---- - libavcodec/hevc-ctrls-v4.h | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/libavcodec/hevc-ctrls-v4.h b/libavcodec/hevc-ctrls-v4.h -index 7829d82084..c02fdbe5a8 100644 ---- a/libavcodec/hevc-ctrls-v4.h -+++ b/libavcodec/hevc-ctrls-v4.h -@@ -53,6 +53,13 @@ - #include - #include - -+#ifndef V4L2_CTRL_CLASS_CODEC_STATELESS -+#define V4L2_CTRL_CLASS_CODEC_STATELESS 0x00a40000 /* Stateless codecs controls */ -+#endif -+#ifndef V4L2_CID_CODEC_STATELESS_BASE -+#define V4L2_CID_CODEC_STATELESS_BASE (V4L2_CTRL_CLASS_CODEC_STATELESS | 0x900) -+#endif -+ - #define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC parsed slices */ - - #define V4L2_CID_STATELESS_HEVC_SPS (V4L2_CID_CODEC_STATELESS_BASE + 400) - -From 22d2000382839dbd04588af1bb20cc9d9b3a4362 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Sat, 1 Oct 2022 13:40:57 +0000 -Subject: [PATCH 081/151] vf_deinterlace_v4l2m2m: Fix compile on m/c without - V4L2 SAND - ---- - libavfilter/vf_deinterlace_v4l2m2m.c | 33 +++++++++++++++++++++++----- - 1 file changed, 28 insertions(+), 5 deletions(-) - -diff --git a/libavfilter/vf_deinterlace_v4l2m2m.c b/libavfilter/vf_deinterlace_v4l2m2m.c -index c52dae1c44..716789f988 100644 ---- a/libavfilter/vf_deinterlace_v4l2m2m.c -+++ b/libavfilter/vf_deinterlace_v4l2m2m.c -@@ -35,6 +35,8 @@ - #include - #include - -+#include "config.h" -+ - #include "libavutil/avassert.h" - #include "libavutil/avstring.h" - #include "libavutil/common.h" -@@ -59,6 +61,16 @@ - #define DRM_FORMAT_P030 fourcc_code('P', '0', '3', '0') /* 2x2 subsampled Cr:Cb plane 10 bits per channel packed */ - #endif - -+// V4L2_PIX_FMT_NV12_10_COL128 and V4L2_PIX_FMT_NV12_COL128 should be defined -+// in drm_fourcc.h hopefully will be sometime in the future but until then... -+#ifndef V4L2_PIX_FMT_NV12_10_COL128 -+#define V4L2_PIX_FMT_NV12_10_COL128 v4l2_fourcc('N', 'C', '3', '0') -+#endif -+ -+#ifndef V4L2_PIX_FMT_NV12_COL128 -+#define V4L2_PIX_FMT_NV12_COL128 v4l2_fourcc('N', 'C', '1', '2') /* 12 Y/CbCr 4:2:0 128 pixel wide column */ -+#endif -+ - typedef struct V4L2Queue V4L2Queue; - typedef struct DeintV4L2M2MContextShared DeintV4L2M2MContextShared; - -@@ -176,9 +188,11 @@ fmt_av_to_v4l2(const enum AVPixelFormat avfmt) - return V4L2_PIX_FMT_YUV420; - case AV_PIX_FMT_NV12: - return V4L2_PIX_FMT_NV12; -+#if CONFIG_SAND - case AV_PIX_FMT_RPI4_8: - case AV_PIX_FMT_SAND128: - return V4L2_PIX_FMT_NV12_COL128; -+#endif - default: - break; - } -@@ -193,8 +207,10 @@ fmt_v4l2_to_av(const uint32_t pixfmt) - return AV_PIX_FMT_YUV420P; - case V4L2_PIX_FMT_NV12: - return AV_PIX_FMT_NV12; -+#if CONFIG_SAND - case V4L2_PIX_FMT_NV12_COL128: - return AV_PIX_FMT_RPI4_8; -+#endif - default: - break; - } -@@ -823,6 +839,7 @@ static int set_src_fmt(V4L2Queue * const q, const AVFrame * const frame) - h = src->layers[0].planes[1].offset / bpl; - w = bpl; - } -+#if CONFIG_SAND - else if (fourcc_mod_broadcom_mod(mod) == DRM_FORMAT_MOD_BROADCOM_SAND128) { - if (src->layers[0].nb_planes != 2) - break; -@@ -831,9 +848,11 @@ static int set_src_fmt(V4L2Queue * const q, const AVFrame * const frame) - h = src->layers[0].planes[1].offset / 128; - bpl = fourcc_mod_broadcom_param(mod); - } -+#endif - break; - - case DRM_FORMAT_P030: -+#if CONFIG_SAND - if (fourcc_mod_broadcom_mod(mod) == DRM_FORMAT_MOD_BROADCOM_SAND128) { - if (src->layers[0].nb_planes != 2) - break; -@@ -842,6 +861,7 @@ static int set_src_fmt(V4L2Queue * const q, const AVFrame * const frame) - h = src->layers[0].planes[1].offset / 128; - bpl = fourcc_mod_broadcom_param(mod); - } -+#endif - break; - - default: -@@ -1048,7 +1068,6 @@ static int v4l2_buffer_export_drm(V4L2Queue * const q, V4L2Buffer * const avbuf) - AVDRMLayerDescriptor * const layer = &drm_desc->layers[0]; - const struct v4l2_format *const fmt = &q->format; - const uint32_t height = fmt_height(fmt); -- const uint32_t width = fmt_width(fmt); - ptrdiff_t bpl0; - - /* fill the DRM frame descriptor */ -@@ -1063,7 +1082,7 @@ static int v4l2_buffer_export_drm(V4L2Queue * const q, V4L2Buffer * const avbuf) - bpl0 = layer->planes[0].pitch; - - switch (fmt_pixelformat(fmt)) { -- -+#if CONFIG_SAND - case V4L2_PIX_FMT_NV12_COL128: - mod = DRM_FORMAT_MOD_BROADCOM_SAND128_COL_HEIGHT(bpl0); - layer->format = V4L2_PIX_FMT_NV12; -@@ -1074,9 +1093,10 @@ static int v4l2_buffer_export_drm(V4L2Queue * const q, V4L2Buffer * const avbuf) - layer->nb_planes = 2; - layer->planes[1].object_index = 0; - layer->planes[1].offset = height * 128; -- layer->planes[0].pitch = width; -- layer->planes[1].pitch = width; -+ layer->planes[0].pitch = fmt_width(fmt); -+ layer->planes[1].pitch = layer->planes[0].pitch; - break; -+#endif - - case DRM_FORMAT_NV12: - layer->format = V4L2_PIX_FMT_NV12; -@@ -1576,7 +1596,10 @@ static uint32_t desc_pixelformat(const AVDRMFrameDescriptor * const drm_desc) - return is_linear ? V4L2_PIX_FMT_YUV420 : 0; - case DRM_FORMAT_NV12: - return is_linear ? V4L2_PIX_FMT_NV12 : -- fourcc_mod_broadcom_mod(mod) == DRM_FORMAT_MOD_BROADCOM_SAND128 ? V4L2_PIX_FMT_NV12_COL128 : 0; -+#if CONFIG_SAND -+ fourcc_mod_broadcom_mod(mod) == DRM_FORMAT_MOD_BROADCOM_SAND128 ? V4L2_PIX_FMT_NV12_COL128 : -+#endif -+ 0; - default: - break; - } - -From f06f9ee41bf0f6f74240503f0cb427328cf6792f Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Sun, 2 Oct 2022 12:36:43 +0000 -Subject: [PATCH 082/151] configure: Fix v4l2_req_hevc_vx setup; set after deps - fixups - ---- - configure | 9 +++------ - 1 file changed, 3 insertions(+), 6 deletions(-) - -diff --git a/configure b/configure -index 5c00a183e3..94c8161b91 100755 ---- a/configure -+++ b/configure -@@ -6914,12 +6914,6 @@ fi - check_func_headers "linux/media.h linux/videodev2.h" v4l2_timeval_to_ns - check_cc hevc_v4l2_request linux/videodev2.h "int i = V4L2_PIX_FMT_HEVC_SLICE;" - disable v4l2_req_hevc_vx --if enabled hevc_v4l2request_hwaccel; then -- enable v4l2_req_hevc_vx --fi --if enabled hevc_v4l2_request; then -- disable v4l2_req_hevc_vx --fi - - check_headers sys/videoio.h - test_code cc sys/videoio.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_sanitized struct_v4l2_frmivalenum_discrete -@@ -7415,6 +7409,9 @@ check_deps $CONFIG_LIST \ - - enabled threads && ! enabled pthreads && ! enabled atomics_native && die "non pthread threading without atomics not supported, try adding --enable-pthreads or --cpu=i486 or higher if you are on x86" - -+# Sub-feature of hevc_v4l2request_hwaccel - can only be set once deps are done -+enabled hevc_v4l2request_hwaccel && disabled hevc_v4l2_request && enable v4l2_req_hevc_vx -+ - case $target_os in - haiku) - disable memalign - -From 7d7709fb68561711f893269227147974fd6a46f3 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Sat, 1 Oct 2022 12:39:45 +0000 -Subject: [PATCH 083/151] vf_deinterlace_v4l2m2m: Ensure we get consistent - final frames - -On getting EOS at the input of the filster do not simply drop everything -in transit on the floor but attempt to retrieve everything possible from -the capture Q before on-signalling EOS. -If we know that we expect 1 frame in to always produce 1 frame out then -match CAPTURE frame to the last OUTPUT frame Qed (scale) -If frames out have an unknown relation to source frames (deinterlace) try -an encode stop and wait for the last frame marker to emerge from CAPTURE ---- - libavfilter/vf_deinterlace_v4l2m2m.c | 172 +++++++++++++++++++++++---- - 1 file changed, 148 insertions(+), 24 deletions(-) - -diff --git a/libavfilter/vf_deinterlace_v4l2m2m.c b/libavfilter/vf_deinterlace_v4l2m2m.c -index 716789f988..ce875c2c61 100644 ---- a/libavfilter/vf_deinterlace_v4l2m2m.c -+++ b/libavfilter/vf_deinterlace_v4l2m2m.c -@@ -94,6 +94,7 @@ typedef struct V4L2Buffer { - typedef struct V4L2Queue { - struct v4l2_format format; - struct v4l2_selection sel; -+ int eos; - int num_buffers; - V4L2Buffer *buffers; - const char * name; -@@ -127,20 +128,41 @@ typedef struct pts_track_s - pts_track_el_t a[PTS_TRACK_SIZE]; - } pts_track_t; - -+typedef enum drain_state_e -+{ -+ DRAIN_NONE = 0, // Not draining -+ DRAIN_TIMEOUT, // Drain until normal timeout setup yields no frame -+ DRAIN_LAST, // Drain with long timeout last_frame in received on output expected -+ DRAIN_EOS, // Drain with long timeout EOS expected -+ DRAIN_DONE // Drained -+} drain_state_t; -+ - typedef struct DeintV4L2M2MContextShared { - void * logctx; // For logging - will be NULL when done - filter_type_v4l2_t filter_type; - - int fd; -- int done; -+ int done; // fd closed - awating all refs dropped - int width; - int height; - -+ int drain; // EOS received (inlink status) -+ drain_state_t drain_state; -+ int64_t drain_pts; // PTS associated with inline status -+ -+ unsigned int frames_rx; -+ unsigned int frames_tx; -+ - // from options - int output_width; - int output_height; - enum AVPixelFormat output_format; - -+ int has_enc_stop; -+ // We expect to get exactly the same number of frames out as we put in -+ // We can drain by matching input to output -+ int one_to_one; -+ - int orig_width; - int orig_height; - atomic_uint refcount; -@@ -179,6 +201,12 @@ typedef struct DeintV4L2M2MContext { - enum AVChromaLocation chroma_location; - } DeintV4L2M2MContext; - -+ -+static inline int drain_frame_expected(const drain_state_t d) -+{ -+ return d == DRAIN_EOS || d == DRAIN_LAST; -+} -+ - // These just list the ones we know we can cope with - static uint32_t - fmt_av_to_v4l2(const enum AVPixelFormat avfmt) -@@ -334,6 +362,13 @@ fail: - return 0; - } - -+// We are only ever expecting in-order frames so nothing more clever is required -+static unsigned int -+pts_track_count(const pts_track_t * const trk) -+{ -+ return (trk->n - trk->last_n) & (PTS_TRACK_SIZE - 1); -+} -+ - static struct timeval pts_track_add_frame(pts_track_t * const trk, const AVFrame * const src) - { - const uint32_t n = pts_track_next_n(trk); -@@ -406,6 +441,12 @@ fmt_pixelformat(const struct v4l2_format * const fmt) - return V4L2_TYPE_IS_MULTIPLANAR(fmt->type) ? fmt->fmt.pix_mp.pixelformat : fmt->fmt.pix.pixelformat; - } - -+static inline uint32_t -+buf_bytesused0(const struct v4l2_buffer * const buf) -+{ -+ return V4L2_TYPE_IS_MULTIPLANAR(buf->type) ? buf->m.planes[0].bytesused : buf->bytesused; -+} -+ - static void - init_format(V4L2Queue * const q, const uint32_t format_type) - { -@@ -1469,12 +1510,24 @@ static int deint_v4l2m2m_dequeue_frame(V4L2Queue *queue, AVFrame* frame, int tim - - av_log(ctx->logctx, AV_LOG_TRACE, "<<< %s\n", __func__); - -+ if (queue->eos) { -+ av_log(ctx->logctx, AV_LOG_TRACE, ">>> %s: EOS\n", __func__); -+ return AVERROR_EOF; -+ } -+ - avbuf = deint_v4l2m2m_dequeue_buffer(queue, timeout); - if (!avbuf) { - av_log(ctx->logctx, AV_LOG_DEBUG, "%s: No buffer to dequeue (timeout=%d)\n", __func__, timeout); - return AVERROR(EAGAIN); - } - -+ if (V4L2_TYPE_IS_CAPTURE(avbuf->buffer.type)) { -+ if ((avbuf->buffer.flags & V4L2_BUF_FLAG_LAST) != 0) -+ queue->eos = 1; -+ if (buf_bytesused0(&avbuf->buffer) == 0) -+ return queue->eos ? AVERROR_EOF : AVERROR(EINVAL); -+ } -+ - // Fill in PTS and anciliary info from src frame - pts_track_get_frame(&ctx->track, avbuf->buffer.timestamp, frame); - -@@ -1686,6 +1739,20 @@ static int deint_v4l2m2m_filter_frame(AVFilterLink *link, AVFrame *in) - else - ctx->field_order = V4L2_FIELD_INTERLACED_BT; - -+ { -+ struct v4l2_encoder_cmd ecmd = { -+ .cmd = V4L2_ENC_CMD_STOP -+ }; -+ ctx->has_enc_stop = 0; -+ if (ioctl(ctx->fd, VIDIOC_TRY_ENCODER_CMD, &ecmd) == 0) { -+ av_log(ctx->logctx, AV_LOG_DEBUG, "Test encode stop succeeded\n"); -+ ctx->has_enc_stop = 1; -+ } -+ else { -+ av_log(ctx->logctx, AV_LOG_DEBUG, "Test encode stop fail: %s\n", av_err2str(AVERROR(errno))); -+ } -+ -+ } - } - - ret = deint_v4l2m2m_enqueue_frame(output, in); -@@ -1694,6 +1761,41 @@ static int deint_v4l2m2m_filter_frame(AVFilterLink *link, AVFrame *in) - return ret; - } - -+static int -+ack_inlink(AVFilterContext * const avctx, DeintV4L2M2MContextShared *const s, -+ AVFilterLink * const inlink) -+{ -+ int instatus; -+ int64_t inpts; -+ -+ if (ff_inlink_acknowledge_status(inlink, &instatus, &inpts) <= 0) -+ return 0; -+ -+ s->drain = instatus; -+ s->drain_pts = inpts; -+ s->drain_state = DRAIN_TIMEOUT; -+ -+ if (s->field_order == V4L2_FIELD_ANY) { // Not yet started -+ s->drain_state = DRAIN_DONE; -+ } -+ else if (s->one_to_one) { -+ s->drain_state = DRAIN_LAST; -+ } -+ else if (s->has_enc_stop) { -+ struct v4l2_encoder_cmd ecmd = { -+ .cmd = V4L2_ENC_CMD_STOP -+ }; -+ if (ioctl(s->fd, VIDIOC_ENCODER_CMD, &ecmd) == 0) { -+ av_log(avctx->priv, AV_LOG_DEBUG, "Do Encode stop\n"); -+ s->drain_state = DRAIN_EOS; -+ } -+ else { -+ av_log(avctx->priv, AV_LOG_WARNING, "Encode stop fail: %s\n", av_err2str(AVERROR(errno))); -+ } -+ } -+ return 1; -+} -+ - static int deint_v4l2m2m_activate(AVFilterContext *avctx) - { - DeintV4L2M2MContext * const priv = avctx->priv; -@@ -1702,15 +1804,13 @@ static int deint_v4l2m2m_activate(AVFilterContext *avctx) - AVFilterLink * const inlink = avctx->inputs[0]; - int n = 0; - int cn = 99; -- int instatus = 0; -- int64_t inpts = 0; - int did_something = 0; - - av_log(priv, AV_LOG_TRACE, "<<< %s\n", __func__); - - FF_FILTER_FORWARD_STATUS_BACK_ALL(outlink, avctx); - -- ff_inlink_acknowledge_status(inlink, &instatus, &inpts); -+ ack_inlink(avctx, s, inlink); - - if (!ff_outlink_frame_wanted(outlink)) { - av_log(priv, AV_LOG_TRACE, "%s: Not wanted out\n", __func__); -@@ -1720,7 +1820,6 @@ static int deint_v4l2m2m_activate(AVFilterContext *avctx) - AVFrame * frame = av_frame_alloc(); - int rv; - --again: - recycle_q(&s->output); - n = count_enqueued(&s->output); - -@@ -1729,10 +1828,21 @@ again: - return AVERROR(ENOMEM); - } - -- rv = deint_v4l2m2m_dequeue_frame(&s->capture, frame, n > 4 ? 300 : 0); -+ rv = deint_v4l2m2m_dequeue_frame(&s->capture, frame, -+ drain_frame_expected(s->drain_state) || n > 4 ? 300 : 0); - if (rv != 0) { - av_frame_free(&frame); -- if (rv != AVERROR(EAGAIN)) { -+ if (rv == AVERROR_EOF) { -+ av_log(priv, AV_LOG_DEBUG, "%s: --- DQ EOF\n", __func__); -+ s->drain_state = DRAIN_DONE; -+ } -+ else if (rv == AVERROR(EAGAIN)) { -+ if (s->drain_state != DRAIN_NONE) { -+ av_log(priv, AV_LOG_DEBUG, "%s: --- DQ empty - drain done\n", __func__); -+ s->drain_state = DRAIN_DONE; -+ } -+ } -+ else { - av_log(priv, AV_LOG_ERROR, ">>> %s: DQ fail: %s\n", __func__, av_err2str(rv)); - return rv; - } -@@ -1742,29 +1852,30 @@ again: - // frame is always consumed by filter_frame - even on error despite - // a somewhat confusing comment in the header - rv = ff_filter_frame(outlink, frame); -- -- if (instatus != 0) { -- av_log(priv, AV_LOG_TRACE, "%s: eof loop\n", __func__); -- goto again; -- } -+ ++s->frames_tx; - - av_log(priv, AV_LOG_TRACE, "%s: Filtered: %s\n", __func__, av_err2str(rv)); - did_something = 1; -+ -+ if (s->drain_state != DRAIN_NONE && pts_track_count(&s->track) == 0) { -+ av_log(priv, AV_LOG_DEBUG, "%s: --- DQ last - drain done\n", __func__); -+ s->drain_state = DRAIN_DONE; -+ } - } - - cn = count_enqueued(&s->capture); - } - -- if (instatus != 0) { -- ff_outlink_set_status(outlink, instatus, inpts); -- av_log(priv, AV_LOG_TRACE, ">>> %s: Status done: %s\n", __func__, av_err2str(instatus)); -+ if (s->drain_state == DRAIN_DONE) { -+ ff_outlink_set_status(outlink, s->drain, s->drain_pts); -+ av_log(priv, AV_LOG_TRACE, ">>> %s: Status done: %s\n", __func__, av_err2str(s->drain)); - return 0; - } - - recycle_q(&s->output); - n = count_enqueued(&s->output); - -- while (n < 6) { -+ while (n < 6 && !s->drain) { - AVFrame * frame; - int rv; - -@@ -1775,8 +1886,13 @@ again: - - if (frame == NULL) { - av_log(priv, AV_LOG_TRACE, "%s: No frame\n", __func__); -+ if (!ack_inlink(avctx, s, inlink)) { -+ ff_inlink_request_frame(inlink); -+ av_log(priv, AV_LOG_TRACE, "%s: req frame\n", __func__); -+ } - break; - } -+ ++s->frames_rx; - - rv = deint_v4l2m2m_filter_frame(inlink, frame); - av_frame_free(&frame); -@@ -1785,16 +1901,11 @@ again: - return rv; - - av_log(priv, AV_LOG_TRACE, "%s: Q frame\n", __func__); -- ++n; -- } -- -- if (n < 6) { -- ff_inlink_request_frame(inlink); - did_something = 1; -- av_log(priv, AV_LOG_TRACE, "%s: req frame\n", __func__); -+ ++n; - } - -- if (n > 4 && ff_outlink_frame_wanted(outlink)) { -+ if ((n > 4 || s->drain) && ff_outlink_frame_wanted(outlink)) { - ff_filter_set_ready(avctx, 1); - did_something = 1; - av_log(priv, AV_LOG_TRACE, "%s: ready\n", __func__); -@@ -1873,7 +1984,18 @@ static av_cold int deint_v4l2m2m_init(AVFilterContext *avctx) - - static av_cold int scale_v4l2m2m_init(AVFilterContext *avctx) - { -- return common_v4l2m2m_init(avctx, FILTER_V4L2_SCALE); -+ int rv; -+ DeintV4L2M2MContext * priv; -+ DeintV4L2M2MContextShared * ctx; -+ -+ if ((rv = common_v4l2m2m_init(avctx, FILTER_V4L2_SCALE)) != 0) -+ return rv; -+ -+ priv = avctx->priv; -+ ctx = priv->shared; -+ -+ ctx->one_to_one = 1; -+ return 0; - } - - static void deint_v4l2m2m_uninit(AVFilterContext *avctx) -@@ -1881,6 +2003,8 @@ static void deint_v4l2m2m_uninit(AVFilterContext *avctx) - DeintV4L2M2MContext *priv = avctx->priv; - DeintV4L2M2MContextShared *ctx = priv->shared; - -+ av_log(priv, AV_LOG_VERBOSE, "Frames Rx: %u, Frames Tx: %u\n", -+ ctx->frames_rx, ctx->frames_tx); - ctx->done = 1; - ctx->logctx = NULL; // Log to NULL works, log to missing crashes - pts_track_uninit(&ctx->track); - -From f893891df8f4e7738b2d9b49df4386fb160eb25f Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 5 Oct 2022 16:12:02 +0000 -Subject: [PATCH 084/151] v4l2_m2m_dec: Rework decode pending heuristic - -The old code measured the length of the entire Q in the decoder and -attempted to dynamically guess an appropriate length. This was prone to -failure when the guesswork became confused. -The new code attempts to measure the Q length before insertion into decode -which, after all, is what we actually care about. It does this by -asserting that the decoder must have consumed all packets that came -before the one associated with the most recent CAPTURE frame. This -avoids all need for reorder buffer size guesswork. ---- - libavcodec/v4l2_m2m.h | 2 - - libavcodec/v4l2_m2m_dec.c | 77 +++++++++++++++++---------------------- - 2 files changed, 34 insertions(+), 45 deletions(-) - -diff --git a/libavcodec/v4l2_m2m.h b/libavcodec/v4l2_m2m.h -index babf101d65..26a7161042 100644 ---- a/libavcodec/v4l2_m2m.h -+++ b/libavcodec/v4l2_m2m.h -@@ -107,8 +107,6 @@ typedef struct V4L2m2mContext { - - /* Frame tracking */ - xlat_track_t xlat; -- int pending_hw; -- int pending_n; - - pts_stats_t pts_stat; - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 6bd9926b3f..bec9b22fcf 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -349,41 +349,54 @@ static void - xlat_flush(xlat_track_t * const x) - { - unsigned int i; -+ // Do not reset track_no - this ensures that any frames left in the decoder -+ // that turn up later get discarded. -+ -+ x->last_pts = AV_NOPTS_VALUE; -+ x->last_opaque = 0; - for (i = 0; i != FF_V4L2_M2M_TRACK_SIZE; ++i) { - x->track_els[i].pending = 0; - x->track_els[i].discard = 1; - } -- x->last_pts = AV_NOPTS_VALUE; -+} -+ -+static void -+xlat_init(xlat_track_t * const x) -+{ -+ memset(x, 0, sizeof(*x)); -+ xlat_flush(x); - } - - static int - xlat_pending(const xlat_track_t * const x) - { - unsigned int n = x->track_no % FF_V4L2_M2M_TRACK_SIZE; -- unsigned int i; -- int r = 0; -- int64_t now = AV_NOPTS_VALUE; -+ int i; -+ const int64_t now = x->last_pts; - -- for (i = 0; i < 32; ++i, n = (n - 1) % FF_V4L2_M2M_TRACK_SIZE) { -+ for (i = 0; i < FF_V4L2_M2M_TRACK_SIZE; ++i, n = (n - 1) & (FF_V4L2_M2M_TRACK_SIZE - 1)) { - const V4L2m2mTrackEl * const t = x->track_els + n; - -+ // Discard only set on never-set or flushed entries -+ // So if we get here we've never successfully decoded a frame so allow -+ // more frames into the buffer before stalling -+ if (t->discard) -+ return i - 16; -+ -+ // If we've got this frame out then everything before this point -+ // must have entered the decoder - if (!t->pending) -- continue; -+ break; - -+ // If we've never seen a pts all we can do is count frames - if (now == AV_NOPTS_VALUE) -- now = t->dts; -+ continue; - -- if (t->pts == AV_NOPTS_VALUE || -- ((now == AV_NOPTS_VALUE || t->pts <= now) && -- (x->last_pts == AV_NOPTS_VALUE || t->pts > x->last_pts))) -- ++r; -+ if (t->dts != AV_NOPTS_VALUE && now >= t->dts) -+ break; - } - -- // If we never get any ideas about PTS vs DTS allow a lot more buffer -- if (now == AV_NOPTS_VALUE) -- r -= 16; -- -- return r; -+ return i; - } - - static inline int stream_started(const V4L2m2mContext * const s) { -@@ -557,18 +570,6 @@ static int qbuf_wait(AVCodecContext * const avctx, V4L2Context * const ctx) - return rv; - } - --// Number of frames over what xlat_pending returns that we keep *16 --// This is a min value - if it appears to be too small the threshold should --// adjust dynamically. --#define PENDING_HW_MIN (3 * 16) --// Offset to use when setting dynamically --// Set to %16 == 15 to avoid the threshold changing immediately as we relax --#define PENDING_HW_OFFSET (PENDING_HW_MIN - 1) --// Number of consecutive times we've failed to get a frame when we prefer it --// before we increase the prefer threshold (5ms * N = max expected decode --// time) --#define PENDING_N_THRESHOLD 6 -- - static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - { - V4L2m2mContext *const s = ((V4L2m2mPriv*)avctx->priv_data)->context; -@@ -578,9 +579,11 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - - do { - const int pending = xlat_pending(&s->xlat); -- const int prefer_dq = (pending > s->pending_hw / 16); -+ const int prefer_dq = (pending > 3); - const int last_src_rv = src_rv; - -+ av_log(avctx, AV_LOG_TRACE, "Pending=%d, src_rv=%d, req_pkt=%d\n", pending, src_rv, s->req_pkt); -+ - // Enqueue another pkt for decode if - // (a) We don't have a lot of stuff in the buffer already OR - // (b) ... we (think we) do but we've failed to get a frame already OR -@@ -625,20 +628,8 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - } - } - -- // Adjust dynamic pending threshold -- if (dst_rv == 0) { -- if (--s->pending_hw < PENDING_HW_MIN) -- s->pending_hw = PENDING_HW_MIN; -- s->pending_n = 0; -- -+ if (dst_rv == 0) - set_best_effort_pts(avctx, &s->pts_stat, frame); -- } -- else if (dst_rv == AVERROR(EAGAIN)) { -- if (prefer_dq && ++s->pending_n > PENDING_N_THRESHOLD) { -- s->pending_hw = pending * 16 + PENDING_HW_OFFSET; -- s->pending_n = 0; -- } -- } - - if (dst_rv == AVERROR(EAGAIN) && src_rv == NQ_DRAINING) { - av_log(avctx, AV_LOG_WARNING, "Timeout in drain - assume EOF"); -@@ -857,8 +848,8 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - if (ret < 0) - return ret; - -+ xlat_init(&s->xlat); - pts_stats_init(&s->pts_stat, avctx, "decoder"); -- s->pending_hw = PENDING_HW_MIN; - - capture = &s->capture; - output = &s->output; - -From 7048e7e6b8621cf09b96cc7e44b8d82ba8619913 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Fri, 21 Oct 2022 13:48:07 +0000 -Subject: [PATCH 085/151] pthread_frame: Fix MT hwaccel. Recent change broke - it. - -Revert the effects of 35aa7e70e7ec350319e7634a30d8d8aa1e6ecdda if the -hwaccel is marked MT_SAFE. ---- - libavcodec/pthread_frame.c | 48 ++++++++++++++++++++++++++++---------- - 1 file changed, 36 insertions(+), 12 deletions(-) - -diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c -index 2cc89a41f5..b14f8e9360 100644 ---- a/libavcodec/pthread_frame.c -+++ b/libavcodec/pthread_frame.c -@@ -231,7 +231,7 @@ static attribute_align_arg void *frame_worker_thread(void *arg) - p->hwaccel_serializing = 0; - pthread_mutex_unlock(&p->parent->hwaccel_mutex); - } -- av_assert0(!avctx->hwaccel); -+ av_assert0(!avctx->hwaccel || (avctx->hwaccel->caps_internal & HWACCEL_CAP_MT_SAFE)); - - if (p->async_serializing) { - p->async_serializing = 0; -@@ -319,6 +319,12 @@ FF_ENABLE_DEPRECATION_WARNINGS - } - - dst->hwaccel_flags = src->hwaccel_flags; -+ if (src->hwaccel && -+ (src->hwaccel->caps_internal & HWACCEL_CAP_MT_SAFE)) { -+ dst->hwaccel = src->hwaccel; -+ dst->hwaccel_context = src->hwaccel_context; -+ dst->internal->hwaccel_priv_data = src->internal->hwaccel_priv_data; -+ } - - err = av_buffer_replace(&dst->internal->pool, src->internal->pool); - if (err < 0) -@@ -434,10 +440,13 @@ static int submit_packet(PerThreadContext *p, AVCodecContext *user_avctx, - } - - /* transfer the stashed hwaccel state, if any */ -- av_assert0(!p->avctx->hwaccel); -- FFSWAP(const AVHWAccel*, p->avctx->hwaccel, fctx->stash_hwaccel); -- FFSWAP(void*, p->avctx->hwaccel_context, fctx->stash_hwaccel_context); -- FFSWAP(void*, p->avctx->internal->hwaccel_priv_data, fctx->stash_hwaccel_priv); -+ av_assert0(!p->avctx->hwaccel || (p->avctx->hwaccel->caps_internal & HWACCEL_CAP_MT_SAFE)); -+ if (p->avctx->hwaccel && -+ !(p->avctx->hwaccel->caps_internal & HWACCEL_CAP_MT_SAFE)) { -+ FFSWAP(const AVHWAccel*, p->avctx->hwaccel, fctx->stash_hwaccel); -+ FFSWAP(void*, p->avctx->hwaccel_context, fctx->stash_hwaccel_context); -+ FFSWAP(void*, p->avctx->internal->hwaccel_priv_data, fctx->stash_hwaccel_priv); -+ } - - av_packet_unref(p->avpkt); - ret = av_packet_ref(p->avpkt, avpkt); -@@ -610,9 +619,12 @@ void ff_thread_finish_setup(AVCodecContext *avctx) { - * this is done here so that this worker thread can wipe its own hwaccel - * state after decoding, without requiring synchronization */ - av_assert0(!p->parent->stash_hwaccel); -- p->parent->stash_hwaccel = avctx->hwaccel; -- p->parent->stash_hwaccel_context = avctx->hwaccel_context; -- p->parent->stash_hwaccel_priv = avctx->internal->hwaccel_priv_data; -+ if (avctx->hwaccel && -+ !(avctx->hwaccel->caps_internal & HWACCEL_CAP_MT_SAFE)) { -+ p->parent->stash_hwaccel = avctx->hwaccel; -+ p->parent->stash_hwaccel_context = avctx->hwaccel_context; -+ p->parent->stash_hwaccel_priv = avctx->internal->hwaccel_priv_data; -+ } - - pthread_mutex_lock(&p->progress_mutex); - if(atomic_load(&p->state) == STATE_SETUP_FINISHED){ -@@ -667,6 +679,15 @@ void ff_frame_thread_free(AVCodecContext *avctx, int thread_count) - - park_frame_worker_threads(fctx, thread_count); - -+ if (fctx->prev_thread && -+ avctx->hwaccel && (avctx->hwaccel->caps_internal & HWACCEL_CAP_MT_SAFE) && -+ avctx->internal->hwaccel_priv_data != -+ fctx->prev_thread->avctx->internal->hwaccel_priv_data) { -+ if (update_context_from_thread(avctx, fctx->prev_thread->avctx, 1) < 0) { -+ av_log(avctx, AV_LOG_ERROR, "Failed to update user thread.\n"); -+ } -+ } -+ - for (i = 0; i < thread_count; i++) { - PerThreadContext *p = &fctx->threads[i]; - AVCodecContext *ctx = p->avctx; -@@ -710,10 +731,13 @@ void ff_frame_thread_free(AVCodecContext *avctx, int thread_count) - - /* if we have stashed hwaccel state, move it to the user-facing context, - * so it will be freed in avcodec_close() */ -- av_assert0(!avctx->hwaccel); -- FFSWAP(const AVHWAccel*, avctx->hwaccel, fctx->stash_hwaccel); -- FFSWAP(void*, avctx->hwaccel_context, fctx->stash_hwaccel_context); -- FFSWAP(void*, avctx->internal->hwaccel_priv_data, fctx->stash_hwaccel_priv); -+ av_assert0(!avctx->hwaccel || (avctx->hwaccel->caps_internal & HWACCEL_CAP_MT_SAFE)); -+ if (avctx->hwaccel && -+ !(avctx->hwaccel->caps_internal & HWACCEL_CAP_MT_SAFE)) { -+ FFSWAP(const AVHWAccel*, avctx->hwaccel, fctx->stash_hwaccel); -+ FFSWAP(void*, avctx->hwaccel_context, fctx->stash_hwaccel_context); -+ FFSWAP(void*, avctx->internal->hwaccel_priv_data, fctx->stash_hwaccel_priv); -+ } - - av_freep(&avctx->internal->thread_ctx); - } - -From 033056bd8ec63b16fe081446f70f41b5d5789b81 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 18 Oct 2022 13:18:27 +0000 -Subject: [PATCH 086/151] v4l2_req: Add swfmt to init logging - -(cherry picked from commit dfa03b702baaf2952bcd2bbf8badcc2f9c961ddf) ---- - libavcodec/v4l2_request_hevc.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/libavcodec/v4l2_request_hevc.c b/libavcodec/v4l2_request_hevc.c -index 614a1b4d99..767ecb036a 100644 ---- a/libavcodec/v4l2_request_hevc.c -+++ b/libavcodec/v4l2_request_hevc.c -@@ -26,6 +26,7 @@ - #include "v4l2_request_hevc.h" - - #include "libavutil/hwcontext_drm.h" -+#include "libavutil/pixdesc.h" - - #include "v4l2_req_devscan.h" - #include "v4l2_req_dmabufs.h" -@@ -306,10 +307,11 @@ retry_src_memtype: - // Set our s/w format - avctx->sw_pix_fmt = ((AVHWFramesContext *)avctx->hw_frames_ctx->data)->sw_format; - -- av_log(avctx, AV_LOG_INFO, "Hwaccel %s; devices: %s,%s; buffers: src %s, dst %s\n", -+ av_log(avctx, AV_LOG_INFO, "Hwaccel %s; devices: %s,%s; buffers: src %s, dst %s; swfmt=%s\n", - ctx->fns->name, - decdev_media_path(decdev), decdev_video_path(decdev), -- mediabufs_memory_name(src_memtype), mediabufs_memory_name(dst_memtype)); -+ mediabufs_memory_name(src_memtype), mediabufs_memory_name(dst_memtype), -+ av_get_pix_fmt_name(avctx->sw_pix_fmt)); - - return 0; - - -From 70779e742b93015e3e8aaa8f945a12d35917844d Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 18 Oct 2022 13:39:54 +0000 -Subject: [PATCH 087/151] v4l2_m2m: Avoid polling on a queue that is streamoff - -(cherry picked from commit b2658bc56d3034a17db7f39597fc7d71bfe9a43b) ---- - libavcodec/v4l2_context.c | 13 +++++++++---- - 1 file changed, 9 insertions(+), 4 deletions(-) - -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index 4a359bf45e..b296dc111c 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -578,6 +578,11 @@ get_event(V4L2m2mContext * const m) - return 0; - } - -+static inline int -+dq_ok(const V4L2Context * const c) -+{ -+ return c->streamon && atomic_load(&c->q_count) != 0; -+} - - // Get a buffer - // If output then just gets the buffer in the expected way -@@ -613,13 +618,13 @@ get_qbuf(V4L2Context * const ctx, V4L2Buffer ** const ppavbuf, const int timeout - } - - // If capture && timeout == -1 then also wait for rx buffer free -- if (is_cap && timeout == -1 && m->output.streamon && !m->draining) -+ if (is_cap && timeout == -1 && dq_ok(&m->output) && !m->draining) - pfd.events |= poll_out; - - // If nothing Qed all we will get is POLLERR - avoid that -- if ((pfd.events == poll_out && atomic_load(&m->output.q_count) == 0) || -- (pfd.events == poll_cap && atomic_load(&m->capture.q_count) == 0) || -- (pfd.events == (poll_cap | poll_out) && atomic_load(&m->capture.q_count) == 0 && atomic_load(&m->output.q_count) == 0)) { -+ if ((pfd.events == poll_out && !dq_ok(&m->output)) || -+ (pfd.events == poll_cap && !dq_ok(&m->capture)) || -+ (pfd.events == (poll_cap | poll_out) && !dq_ok(&m->capture) && !dq_ok(&m->output))) { - av_log(avctx, AV_LOG_TRACE, "V4L2 poll %s empty\n", ctx->name); - return AVERROR(ENOSPC); - } - -From 438fed3702eb689f836c885ebbd813e48d4d4c4a Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 18 Oct 2022 14:07:04 +0000 -Subject: [PATCH 088/151] v4l2_m2m: Add function to get number of queued - buffers - -(cherry picked from commit f9ac6485c00b4531dcff354222aef450b29728f4) ---- - libavcodec/v4l2_context.h | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/libavcodec/v4l2_context.h b/libavcodec/v4l2_context.h -index 523c53e97d..8e4f681643 100644 ---- a/libavcodec/v4l2_context.h -+++ b/libavcodec/v4l2_context.h -@@ -220,4 +220,15 @@ int ff_v4l2_context_enqueue_frame(V4L2Context* ctx, const AVFrame* f); - - void ff_v4l2_dq_all(V4L2Context *const ctx); - -+/** -+ * Returns the number of buffers currently queued -+ * -+ * @param[in] ctx The V4L2Context to evaluate -+ */ -+static inline int -+ff_v4l2_context_q_count(const V4L2Context* const ctx) -+{ -+ return atomic_load(&ctx->q_count); -+} -+ - #endif // AVCODEC_V4L2_CONTEXT_H - -From 95ff4a65ed4c88ea7e02ee55e260e37a0ce2ba88 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 18 Oct 2022 14:48:20 +0000 -Subject: [PATCH 089/151] v4l2_m2m: Add timeouts to dq_all and dequeue_packet - -Add timeouts and use them to have better flow control in encode - -(cherry picked from commit c6173cad7f21697e12887982bda796de9719bb32) ---- - libavcodec/v4l2_context.c | 16 +++++++++++----- - libavcodec/v4l2_context.h | 15 +++++++++++++-- - libavcodec/v4l2_m2m_enc.c | 28 +++++++++++++++++++--------- - 3 files changed, 43 insertions(+), 16 deletions(-) - -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index b296dc111c..7031f3d340 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -712,13 +712,19 @@ clean_v4l2_buffer(V4L2Buffer * const avbuf) - return avbuf; - } - --void --ff_v4l2_dq_all(V4L2Context *const ctx) -+int -+ff_v4l2_dq_all(V4L2Context *const ctx, int timeout1) - { - V4L2Buffer * avbuf; -+ if (timeout1 != 0) { -+ int rv = get_qbuf(ctx, &avbuf, timeout1); -+ if (rv != 0) -+ return rv; -+ } - do { - get_qbuf(ctx, &avbuf, 0); - } while (avbuf); -+ return 0; - } - - static V4L2Buffer* v4l2_getfree_v4l2buf(V4L2Context *ctx) -@@ -727,7 +733,7 @@ static V4L2Buffer* v4l2_getfree_v4l2buf(V4L2Context *ctx) - - /* get back as many output buffers as possible */ - if (V4L2_TYPE_IS_OUTPUT(ctx->type)) -- ff_v4l2_dq_all(ctx); -+ ff_v4l2_dq_all(ctx, 0); - - for (i = 0; i < ctx->num_buffers; i++) { - V4L2Buffer * const avbuf = (V4L2Buffer *)ctx->bufrefs[i]->data; -@@ -1047,7 +1053,7 @@ int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* frame, int timeout) - return 0; - } - --int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt) -+int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt, int timeout) - { - V4L2m2mContext *s = ctx_to_m2mctx(ctx); - AVCodecContext *const avctx = s->avctx; -@@ -1055,7 +1061,7 @@ int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt) - int rv; - - do { -- if ((rv = get_qbuf(ctx, &avbuf, -1)) != 0) -+ if ((rv = get_qbuf(ctx, &avbuf, timeout)) != 0) - return rv == AVERROR(ENOSPC) ? AVERROR(EAGAIN) : rv; // Caller not currently expecting ENOSPC - if ((rv = ff_v4l2_buffer_buf_to_avpkt(pkt, avbuf)) != 0) - return rv; -diff --git a/libavcodec/v4l2_context.h b/libavcodec/v4l2_context.h -index 8e4f681643..5afed3e6ec 100644 ---- a/libavcodec/v4l2_context.h -+++ b/libavcodec/v4l2_context.h -@@ -179,7 +179,7 @@ int ff_v4l2_context_set_status(V4L2Context* ctx, uint32_t cmd); - * @param[inout] pkt The AVPacket to dequeue to. - * @return 0 in case of success, AVERROR(EAGAIN) if no buffer was ready, another negative error in case of error. - */ --int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt); -+int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt, int timeout); - - /** - * Dequeues a buffer from a V4L2Context to an AVFrame. -@@ -218,7 +218,18 @@ int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt, const - */ - int ff_v4l2_context_enqueue_frame(V4L2Context* ctx, const AVFrame* f); - --void ff_v4l2_dq_all(V4L2Context *const ctx); -+/** -+ * Dequeue all buffers on this queue -+ * -+ * Used to recycle output buffers -+ * -+ * @param[in] ctx The V4L2Context to dequeue from. -+ * @param[in] timeout1 A timeout on dequeuing the 1st buffer, -+ * all others have a timeout of zero -+ * @return AVERROR(EAGAIN) if timeout1 non-zero then the return -+ * of the first dequeue operation, 0 otherwise. -+ */ -+int ff_v4l2_dq_all(V4L2Context *const ctx, int timeout1); - - /** - * Returns the number of buffers currently queued -diff --git a/libavcodec/v4l2_m2m_enc.c b/libavcodec/v4l2_m2m_enc.c -index a992a3cccc..d0d27e5bc2 100644 ---- a/libavcodec/v4l2_m2m_enc.c -+++ b/libavcodec/v4l2_m2m_enc.c -@@ -420,16 +420,24 @@ static int v4l2_send_frame(AVCodecContext *avctx, const AVFrame *frame) - { - V4L2m2mContext *s = ((V4L2m2mPriv*)avctx->priv_data)->context; - V4L2Context *const output = &s->output; -+ int rv; -+ int needs_slot = ff_v4l2_context_q_count(output) == output->num_buffers; - -- ff_v4l2_dq_all(output); -+ av_log(avctx, AV_LOG_TRACE, "<<< %s; needs_slot=%d\n", __func__, needs_slot); - -- // Signal EOF if needed -+ // Signal EOF if needed (doesn't need q slot) - if (!frame) { - return ff_v4l2_context_enqueue_frame(output, frame); - } - -+ if ((rv = ff_v4l2_dq_all(output, needs_slot? 500 : 0)) != 0) { -+ // We should be able to return AVERROR(EAGAIN) to indicate buffer -+ // exhaustion, but ffmpeg currently treats that as fatal. -+ av_log(avctx, AV_LOG_WARNING, "Failed to get buffer for src frame: %s\n", av_err2str(rv)); -+ return rv; -+ } -+ - if (s->input_drm && !output->streamon) { -- int rv; - struct v4l2_format req_format = {.type = output->format.type}; - - // Set format when we first get a buffer -@@ -494,7 +502,9 @@ static int v4l2_receive_packet(AVCodecContext *avctx, AVPacket *avpkt) - AVFrame *frame = s->frame; - int ret; - -- ff_v4l2_dq_all(output); -+ av_log(avctx, AV_LOG_TRACE, "<<< %s\n", __func__); -+ -+ ff_v4l2_dq_all(output, 0); - - if (s->draining) - goto dequeue; -@@ -532,10 +542,10 @@ static int v4l2_receive_packet(AVCodecContext *avctx, AVPacket *avpkt) - } - - dequeue: -- ret = ff_v4l2_context_dequeue_packet(capture, avpkt); -- ff_v4l2_dq_all(output); -+ ret = ff_v4l2_context_dequeue_packet(capture, avpkt, s->draining ? 300 : 0); -+ ff_v4l2_dq_all(output, 0); - if (ret) -- return ret; -+ return (s->draining && ret == AVERROR(EAGAIN)) ? AVERROR_EOF : ret; - - if (capture->first_buf == 1) { - uint8_t * data; -@@ -566,8 +576,8 @@ dequeue: - s->extdata_size = len; - } - -- ret = ff_v4l2_context_dequeue_packet(capture, avpkt); -- ff_v4l2_dq_all(output); -+ ret = ff_v4l2_context_dequeue_packet(capture, avpkt, 0); -+ ff_v4l2_dq_all(output, 0); - if (ret) - return ret; - } - -From e6654c1997a6f4dfd43b0f74b0168f5d644c1c74 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 18 Oct 2022 14:23:32 +0000 -Subject: [PATCH 090/151] v4l2_m2m_enc: Improve debug trace - -(cherry picked from commit 113e89daffb329a0cd3d920abd483a4025664bf5) ---- - libavcodec/v4l2_m2m_enc.c | 13 ++++++++++--- - 1 file changed, 10 insertions(+), 3 deletions(-) - -diff --git a/libavcodec/v4l2_m2m_enc.c b/libavcodec/v4l2_m2m_enc.c -index d0d27e5bc2..c8c2de3d47 100644 ---- a/libavcodec/v4l2_m2m_enc.c -+++ b/libavcodec/v4l2_m2m_enc.c -@@ -427,6 +427,7 @@ static int v4l2_send_frame(AVCodecContext *avctx, const AVFrame *frame) - - // Signal EOF if needed (doesn't need q slot) - if (!frame) { -+ av_log(avctx, AV_LOG_TRACE, "--- %s: EOS\n", __func__); - return ff_v4l2_context_enqueue_frame(output, frame); - } - -@@ -491,7 +492,12 @@ static int v4l2_send_frame(AVCodecContext *avctx, const AVFrame *frame) - v4l2_set_ext_ctrl(s, MPEG_CID(FORCE_KEY_FRAME), 0, "force key frame", 1); - #endif - -- return ff_v4l2_context_enqueue_frame(output, frame); -+ rv = ff_v4l2_context_enqueue_frame(output, frame); -+ if (rv) { -+ av_log(avctx, AV_LOG_ERROR, "Enqueue frame failed: %s\n", av_err2str(rv)); -+ } -+ -+ return rv; - } - - static int v4l2_receive_packet(AVCodecContext *avctx, AVPacket *avpkt) -@@ -502,7 +508,8 @@ static int v4l2_receive_packet(AVCodecContext *avctx, AVPacket *avpkt) - AVFrame *frame = s->frame; - int ret; - -- av_log(avctx, AV_LOG_TRACE, "<<< %s\n", __func__); -+ av_log(avctx, AV_LOG_TRACE, "<<< %s: qlen out %d cap %d\n", __func__, -+ ff_v4l2_context_q_count(output), ff_v4l2_context_q_count(capture)); - - ff_v4l2_dq_all(output, 0); - -@@ -615,11 +622,11 @@ dequeue: - avpkt->size = newlen; - } - --// av_log(avctx, AV_LOG_INFO, "%s: PTS out=%"PRId64", size=%d, ret=%d\n", __func__, avpkt->pts, avpkt->size, ret); - capture->first_buf = 0; - return 0; - - fail_no_mem: -+ av_log(avctx, AV_LOG_ERROR, "Rx pkt failed: No memory\n"); - ret = AVERROR(ENOMEM); - av_packet_unref(avpkt); - return ret; - -From 02dca2b845125af7ec6dfb68bdc34726a45fee9c Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 18 Oct 2022 13:22:36 +0000 -Subject: [PATCH 091/151] v4l2_m2m_enc: Copy dest packets to memory if short of - v4l2 buffers - -(cherry picked from commit aa4ebbda400b42db952fc713b26927fc8636b0e5) ---- - libavcodec/v4l2_m2m_enc.c | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - -diff --git a/libavcodec/v4l2_m2m_enc.c b/libavcodec/v4l2_m2m_enc.c -index c8c2de3d47..c23187e6e6 100644 ---- a/libavcodec/v4l2_m2m_enc.c -+++ b/libavcodec/v4l2_m2m_enc.c -@@ -621,6 +621,22 @@ dequeue: - avpkt->data = buf->data; - avpkt->size = newlen; - } -+ else if (ff_v4l2_context_q_count(capture) < 2) { -+ // Avoid running out of capture buffers -+ // In most cases the buffers will be returned quickly in which case -+ // we don't copy and can use the v4l2 buffers directly but sometimes -+ // ffmpeg seems to hold onto all of them for a long time (.mkv -+ // creation?) so avoid deadlock in those cases. -+ AVBufferRef * const buf = av_buffer_alloc(avpkt->size + AV_INPUT_BUFFER_PADDING_SIZE); -+ if (buf == NULL) -+ goto fail_no_mem; -+ -+ memcpy(buf->data, avpkt->data, avpkt->size); -+ av_buffer_unref(&avpkt->buf); // Will recycle the V4L2 buffer -+ -+ avpkt->buf = buf; -+ avpkt->data = buf->data; -+ } - - capture->first_buf = 0; - return 0; - -From ced9a7d442a04be08fc23e0af310312299a5d5a0 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 19 Oct 2022 11:00:16 +0000 -Subject: [PATCH 092/151] v4l2_m2m_dec: Fix pts_best_effort guessing for - initial pts - -(cherry picked from commit 1af32e5c87586a0f7e76cdf19a012ddbcf3eac67) ---- - libavcodec/v4l2_m2m_dec.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index bec9b22fcf..47b2735f82 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -113,6 +113,8 @@ log_dump(void * logctx, int lvl, const void * const data, const size_t len) - - static int64_t pts_stats_guess(const pts_stats_t * const stats) - { -+ if (stats->last_count <= 1) -+ return stats->last_pts; - if (stats->last_pts == AV_NOPTS_VALUE || - stats->last_interval == 0 || - stats->last_count >= STATS_LAST_COUNT_MAX) - -From 3e3cf6ed7280d8ad4f3eed17a6d18c2df3c0cd31 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 19 Oct 2022 14:47:04 +0000 -Subject: [PATCH 093/151] v4l2_m2m_enc: Wait for frame or space in src Q in - rx_pkt - -If receive_packet we should ensure that there is space in the source Q -if we return EAGAIN so wait for either an output packet or space if -the source Q is currently full. - -(cherry picked from commit 82f0c55782a67a8cc665d937647706c2a75f5548) ---- - libavcodec/v4l2_m2m_enc.c | 22 +++++++++++++++++++--- - 1 file changed, 19 insertions(+), 3 deletions(-) - -diff --git a/libavcodec/v4l2_m2m_enc.c b/libavcodec/v4l2_m2m_enc.c -index c23187e6e6..524e9424a5 100644 ---- a/libavcodec/v4l2_m2m_enc.c -+++ b/libavcodec/v4l2_m2m_enc.c -@@ -415,13 +415,17 @@ static int fmt_eq(const struct v4l2_format * const a, const struct v4l2_format * - return 1; - } - -+static inline int q_full(const V4L2Context *const output) -+{ -+ return ff_v4l2_context_q_count(output) == output->num_buffers; -+} - - static int v4l2_send_frame(AVCodecContext *avctx, const AVFrame *frame) - { - V4L2m2mContext *s = ((V4L2m2mPriv*)avctx->priv_data)->context; - V4L2Context *const output = &s->output; - int rv; -- int needs_slot = ff_v4l2_context_q_count(output) == output->num_buffers; -+ const int needs_slot = q_full(output); - - av_log(avctx, AV_LOG_TRACE, "<<< %s; needs_slot=%d\n", __func__, needs_slot); - -@@ -549,8 +553,20 @@ static int v4l2_receive_packet(AVCodecContext *avctx, AVPacket *avpkt) - } - - dequeue: -- ret = ff_v4l2_context_dequeue_packet(capture, avpkt, s->draining ? 300 : 0); -- ff_v4l2_dq_all(output, 0); -+ // Dequeue a frame -+ for (;;) { -+ int t = q_full(output) ? -1 : s->draining ? 300 : 0; -+ int rv2; -+ -+ // If output is full wait for either a packet or output to become not full -+ ret = ff_v4l2_context_dequeue_packet(capture, avpkt, t); -+ -+ // If output was full retry packet dequeue -+ t = (ret != AVERROR(EAGAIN) || t != -1) ? 0 : 300; -+ rv2 = ff_v4l2_dq_all(output, t); -+ if (t == 0 || rv2 != 0) -+ break; -+ } - if (ret) - return (s->draining && ret == AVERROR(EAGAIN)) ? AVERROR_EOF : ret; - - -From de9ec2bf6421b199aad9ea9dc7896a46c8813d94 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 19 Oct 2022 14:54:29 +0000 -Subject: [PATCH 094/151] vf_deinterlace_v4l2m2m: Print dts rather that NOPTS - in trace - -(cherry picked from commit e9b468f35f0c6ad9bfe96f5a05e449afa8ae074a) ---- - libavfilter/vf_deinterlace_v4l2m2m.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/libavfilter/vf_deinterlace_v4l2m2m.c b/libavfilter/vf_deinterlace_v4l2m2m.c -index ce875c2c61..7c6751b69c 100644 ---- a/libavfilter/vf_deinterlace_v4l2m2m.c -+++ b/libavfilter/vf_deinterlace_v4l2m2m.c -@@ -1668,8 +1668,8 @@ static int deint_v4l2m2m_filter_frame(AVFilterLink *link, AVFrame *in) - V4L2Queue *output = &ctx->output; - int ret; - -- av_log(priv, AV_LOG_DEBUG, "<<< %s: input pts: %"PRId64" (%"PRId64") field :%d interlaced: %d aspect:%d/%d\n", -- __func__, in->pts, AV_NOPTS_VALUE, in->top_field_first, in->interlaced_frame, in->sample_aspect_ratio.num, in->sample_aspect_ratio.den); -+ av_log(priv, AV_LOG_DEBUG, "<<< %s: input pts: %"PRId64" dts: %"PRId64" field :%d interlaced: %d aspect:%d/%d\n", -+ __func__, in->pts, in->pkt_dts, in->top_field_first, in->interlaced_frame, in->sample_aspect_ratio.num, in->sample_aspect_ratio.den); - av_log(priv, AV_LOG_DEBUG, "--- %s: in status in %d/ot %d; out status in %d/out %d\n", __func__, - avctx->inputs[0]->status_in, avctx->inputs[0]->status_out, avctx->outputs[0]->status_in, avctx->outputs[0]->status_out); - - -From d71a0a173240e18d518ae0b921ac43849524bd66 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 19 Oct 2022 14:55:21 +0000 -Subject: [PATCH 095/151] vf_deinterlace_v4l2m2m: Ignore "wanted" when - processing input - -If we gate send a frame to the outlink on its frame_wanted flag then we -will sometimes stall as the flag may not get set by ffmpeg's filter -processing. So stuff the output whether or not it wants it which works -much better. - -(cherry picked from commit 808254cc04e5e6574cbab9af254b6c2f3d4142e3) ---- - libavfilter/vf_deinterlace_v4l2m2m.c | 5 +---- - 1 file changed, 1 insertion(+), 4 deletions(-) - -diff --git a/libavfilter/vf_deinterlace_v4l2m2m.c b/libavfilter/vf_deinterlace_v4l2m2m.c -index 7c6751b69c..a173a291f8 100644 ---- a/libavfilter/vf_deinterlace_v4l2m2m.c -+++ b/libavfilter/vf_deinterlace_v4l2m2m.c -@@ -1812,10 +1812,7 @@ static int deint_v4l2m2m_activate(AVFilterContext *avctx) - - ack_inlink(avctx, s, inlink); - -- if (!ff_outlink_frame_wanted(outlink)) { -- av_log(priv, AV_LOG_TRACE, "%s: Not wanted out\n", __func__); -- } -- else if (s->field_order != V4L2_FIELD_ANY) // Can't DQ if no setup! -+ if (s->field_order != V4L2_FIELD_ANY) // Can't DQ if no setup! - { - AVFrame * frame = av_frame_alloc(); - int rv; - -From 842e0a00288f9a2a862720990791b8eca9546955 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 19 Oct 2022 15:00:43 +0000 -Subject: [PATCH 096/151] conf_native: Add --enable-gpl - -(cherry picked from commit bab9bf4a2e39391940d88af2ce5d70236ac21f15) ---- - pi-util/conf_native.sh | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/pi-util/conf_native.sh b/pi-util/conf_native.sh -index f22d531ca4..082d9b5832 100755 ---- a/pi-util/conf_native.sh -+++ b/pi-util/conf_native.sh -@@ -94,6 +94,7 @@ $FFSRC/configure \ - --enable-libdrm\ - --enable-vout-egl\ - --enable-vout-drm\ -+ --enable-gpl\ - $SHARED_LIBS\ - $RPIOPTS\ - --extra-cflags="-ggdb $RPI_KEEPS $RPI_DEFINES $RPI_INCLUDES"\ - -From bf9aaf30818308a4651e00a2a64a0f65dc9a36e5 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 15 Nov 2022 13:33:00 +0000 -Subject: [PATCH 097/151] egl_vout: Make formatting consistent - no code - changes - ---- - libavdevice/egl_vout.c | 741 ++++++++++++++++++++--------------------- - 1 file changed, 369 insertions(+), 372 deletions(-) - -diff --git a/libavdevice/egl_vout.c b/libavdevice/egl_vout.c -index 7b9c610ace..a52cabb082 100644 ---- a/libavdevice/egl_vout.c -+++ b/libavdevice/egl_vout.c -@@ -48,20 +48,20 @@ - #define TRACE_ALL 0 - - struct egl_setup { -- int conId; -- -- Display *dpy; -- EGLDisplay egl_dpy; -- EGLContext ctx; -- EGLSurface surf; -- Window win; -- -- uint32_t crtcId; -- int crtcIdx; -- uint32_t planeId; -- struct { -- int x, y, width, height; -- } compose; -+ int conId; -+ -+ Display *dpy; -+ EGLDisplay egl_dpy; -+ EGLContext ctx; -+ EGLSurface surf; -+ Window win; -+ -+ uint32_t crtcId; -+ int crtcIdx; -+ uint32_t planeId; -+ struct { -+ int x, y, width, height; -+ } compose; - }; - - typedef struct egl_aux_s { -@@ -70,8 +70,7 @@ typedef struct egl_aux_s { - - } egl_aux_t; - --typedef struct egl_display_env_s --{ -+typedef struct egl_display_env_s { - AVClass *class; - - struct egl_setup setup; -@@ -89,8 +88,8 @@ typedef struct egl_display_env_s - sem_t display_start_sem; - sem_t q_sem; - int q_terminate; -- AVFrame * q_this; -- AVFrame * q_next; -+ AVFrame *q_this; -+ AVFrame *q_next; - - } egl_display_env_t; - -@@ -99,45 +98,44 @@ typedef struct egl_display_env_s - * Remove window border/decorations. - */ - static void --no_border( Display *dpy, Window w) -+no_border(Display *dpy, Window w) - { -- static const unsigned MWM_HINTS_DECORATIONS = (1 << 1); -- static const int PROP_MOTIF_WM_HINTS_ELEMENTS = 5; -- -- typedef struct -- { -- unsigned long flags; -- unsigned long functions; -- unsigned long decorations; -- long inputMode; -- unsigned long status; -- } PropMotifWmHints; -- -- PropMotifWmHints motif_hints; -- Atom prop, proptype; -- unsigned long flags = 0; -- -- /* setup the property */ -- motif_hints.flags = MWM_HINTS_DECORATIONS; -- motif_hints.decorations = flags; -- -- /* get the atom for the property */ -- prop = XInternAtom( dpy, "_MOTIF_WM_HINTS", True ); -- if (!prop) { -- /* something went wrong! */ -- return; -- } -- -- /* not sure this is correct, seems to work, XA_WM_HINTS didn't work */ -- proptype = prop; -- -- XChangeProperty( dpy, w, /* display, window */ -+ static const unsigned MWM_HINTS_DECORATIONS = (1 << 1); -+ static const int PROP_MOTIF_WM_HINTS_ELEMENTS = 5; -+ -+ typedef struct { -+ unsigned long flags; -+ unsigned long functions; -+ unsigned long decorations; -+ long inputMode; -+ unsigned long status; -+ } PropMotifWmHints; -+ -+ PropMotifWmHints motif_hints; -+ Atom prop, proptype; -+ unsigned long flags = 0; -+ -+ /* setup the property */ -+ motif_hints.flags = MWM_HINTS_DECORATIONS; -+ motif_hints.decorations = flags; -+ -+ /* get the atom for the property */ -+ prop = XInternAtom(dpy, "_MOTIF_WM_HINTS", True); -+ if (!prop) { -+ /* something went wrong! */ -+ return; -+ } -+ -+ /* not sure this is correct, seems to work, XA_WM_HINTS didn't work */ -+ proptype = prop; -+ -+ XChangeProperty(dpy, w, /* display, window */ - prop, proptype, /* property, type */ - 32, /* format: 32-bit datums */ - PropModeReplace, /* mode */ -- (unsigned char *) &motif_hints, /* data */ -+ (unsigned char *)&motif_hints, /* data */ - PROP_MOTIF_WM_HINTS_ELEMENTS /* nelements */ -- ); -+ ); - } - - -@@ -146,247 +144,247 @@ no_border( Display *dpy, Window w) - * Return the window and context handles. - */ - static int --make_window(struct AVFormatContext * const s, -- egl_display_env_t * const de, -+make_window(struct AVFormatContext *const s, -+ egl_display_env_t *const de, - Display *dpy, EGLDisplay egl_dpy, const char *name, - Window *winRet, EGLContext *ctxRet, EGLSurface *surfRet) - { -- int scrnum = DefaultScreen( dpy ); -- XSetWindowAttributes attr; -- unsigned long mask; -- Window root = RootWindow( dpy, scrnum ); -- Window win; -- EGLContext ctx; -- const int fullscreen = de->fullscreen; -- EGLConfig config; -- int x = de->window_x; -- int y = de->window_y; -- int width = de->window_width ? de->window_width : 1280; -- int height = de->window_height ? de->window_height : 720; -- -- -- if (fullscreen) { -- int scrnum = DefaultScreen(dpy); -- -- x = 0; y = 0; -- width = DisplayWidth(dpy, scrnum); -- height = DisplayHeight(dpy, scrnum); -- } -- -- { -- EGLint num_configs; -- static const EGLint attribs[] = { -- EGL_RED_SIZE, 1, -- EGL_GREEN_SIZE, 1, -- EGL_BLUE_SIZE, 1, -- EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, -- EGL_NONE -- }; -- -- if (!eglChooseConfig(egl_dpy, attribs, &config, 1, &num_configs)) { -- av_log(s, AV_LOG_ERROR, "Error: couldn't get an EGL visual config\n"); -- return -1; -- } -- } -- -- { -- EGLint vid; -- if (!eglGetConfigAttrib(egl_dpy, config, EGL_NATIVE_VISUAL_ID, &vid)) { -- av_log(s, AV_LOG_ERROR, "Error: eglGetConfigAttrib() failed\n"); -- return -1; -- } -- -- { -- XVisualInfo visTemplate = { -- .visualid = vid, -- }; -- int num_visuals; -- XVisualInfo *visinfo = XGetVisualInfo(dpy, VisualIDMask, -- &visTemplate, &num_visuals); -- -- /* window attributes */ -- attr.background_pixel = 0; -- attr.border_pixel = 0; -- attr.colormap = XCreateColormap( dpy, root, visinfo->visual, AllocNone); -- attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; -- /* XXX this is a bad way to get a borderless window! */ -- mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; -- -- win = XCreateWindow( dpy, root, x, y, width, height, -- 0, visinfo->depth, InputOutput, -- visinfo->visual, mask, &attr ); -- XFree(visinfo); -- } -- } -- -- if (fullscreen) -- no_border(dpy, win); -- -- /* set hints and properties */ -- { -- XSizeHints sizehints; -- sizehints.x = x; -- sizehints.y = y; -- sizehints.width = width; -- sizehints.height = height; -- sizehints.flags = USSize | USPosition; -- XSetNormalHints(dpy, win, &sizehints); -- XSetStandardProperties(dpy, win, name, name, -- None, (char **)NULL, 0, &sizehints); -- } -- -- eglBindAPI(EGL_OPENGL_ES_API); -- -- { -- static const EGLint ctx_attribs[] = { -- EGL_CONTEXT_CLIENT_VERSION, 2, -- EGL_NONE -- }; -- ctx = eglCreateContext(egl_dpy, config, EGL_NO_CONTEXT, ctx_attribs ); -- if (!ctx) { -- av_log(s, AV_LOG_ERROR, "Error: eglCreateContext failed\n"); -- return -1; -- } -- } -- -- -- XMapWindow(dpy, win); -- -- { -- EGLSurface surf = eglCreateWindowSurface(egl_dpy, config, (EGLNativeWindowType)win, NULL); -- if (!surf) { -- av_log(s, AV_LOG_ERROR, "Error: eglCreateWindowSurface failed\n"); -- return -1; -- } -- -- if (!eglMakeCurrent(egl_dpy, surf, surf, ctx)) { -- av_log(s, AV_LOG_ERROR, "Error: eglCreateContext failed\n"); -- return -1; -- } -- -- *winRet = win; -- *ctxRet = ctx; -- *surfRet = surf; -- } -- -- return 0; -+ int scrnum = DefaultScreen(dpy); -+ XSetWindowAttributes attr; -+ unsigned long mask; -+ Window root = RootWindow(dpy, scrnum); -+ Window win; -+ EGLContext ctx; -+ const int fullscreen = de->fullscreen; -+ EGLConfig config; -+ int x = de->window_x; -+ int y = de->window_y; -+ int width = de->window_width ? de->window_width : 1280; -+ int height = de->window_height ? de->window_height : 720; -+ -+ -+ if (fullscreen) { -+ int scrnum = DefaultScreen(dpy); -+ -+ x = 0; y = 0; -+ width = DisplayWidth(dpy, scrnum); -+ height = DisplayHeight(dpy, scrnum); -+ } -+ -+ { -+ EGLint num_configs; -+ static const EGLint attribs[] = { -+ EGL_RED_SIZE, 1, -+ EGL_GREEN_SIZE, 1, -+ EGL_BLUE_SIZE, 1, -+ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, -+ EGL_NONE -+ }; -+ -+ if (!eglChooseConfig(egl_dpy, attribs, &config, 1, &num_configs)) { -+ av_log(s, AV_LOG_ERROR, "Error: couldn't get an EGL visual config\n"); -+ return -1; -+ } -+ } -+ -+ { -+ EGLint vid; -+ if (!eglGetConfigAttrib(egl_dpy, config, EGL_NATIVE_VISUAL_ID, &vid)) { -+ av_log(s, AV_LOG_ERROR, "Error: eglGetConfigAttrib() failed\n"); -+ return -1; -+ } -+ -+ { -+ XVisualInfo visTemplate = { -+ .visualid = vid, -+ }; -+ int num_visuals; -+ XVisualInfo *visinfo = XGetVisualInfo(dpy, VisualIDMask, -+ &visTemplate, &num_visuals); -+ -+ /* window attributes */ -+ attr.background_pixel = 0; -+ attr.border_pixel = 0; -+ attr.colormap = XCreateColormap(dpy, root, visinfo->visual, AllocNone); -+ attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; -+ /* XXX this is a bad way to get a borderless window! */ -+ mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; -+ -+ win = XCreateWindow(dpy, root, x, y, width, height, -+ 0, visinfo->depth, InputOutput, -+ visinfo->visual, mask, &attr); -+ XFree(visinfo); -+ } -+ } -+ -+ if (fullscreen) -+ no_border(dpy, win); -+ -+ /* set hints and properties */ -+ { -+ XSizeHints sizehints; -+ sizehints.x = x; -+ sizehints.y = y; -+ sizehints.width = width; -+ sizehints.height = height; -+ sizehints.flags = USSize | USPosition; -+ XSetNormalHints(dpy, win, &sizehints); -+ XSetStandardProperties(dpy, win, name, name, -+ None, (char **)NULL, 0, &sizehints); -+ } -+ -+ eglBindAPI(EGL_OPENGL_ES_API); -+ -+ { -+ static const EGLint ctx_attribs[] = { -+ EGL_CONTEXT_CLIENT_VERSION, 2, -+ EGL_NONE -+ }; -+ ctx = eglCreateContext(egl_dpy, config, EGL_NO_CONTEXT, ctx_attribs); -+ if (!ctx) { -+ av_log(s, AV_LOG_ERROR, "Error: eglCreateContext failed\n"); -+ return -1; -+ } -+ } -+ -+ -+ XMapWindow(dpy, win); -+ -+ { -+ EGLSurface surf = eglCreateWindowSurface(egl_dpy, config, (EGLNativeWindowType)win, NULL); -+ if (!surf) { -+ av_log(s, AV_LOG_ERROR, "Error: eglCreateWindowSurface failed\n"); -+ return -1; -+ } -+ -+ if (!eglMakeCurrent(egl_dpy, surf, surf, ctx)) { -+ av_log(s, AV_LOG_ERROR, "Error: eglCreateContext failed\n"); -+ return -1; -+ } -+ -+ *winRet = win; -+ *ctxRet = ctx; -+ *surfRet = surf; -+ } -+ -+ return 0; - } - - static GLint --compile_shader(struct AVFormatContext * const avctx, GLenum target, const char *source) -+compile_shader(struct AVFormatContext *const avctx, GLenum target, const char *source) - { -- GLuint s = glCreateShader(target); -+ GLuint s = glCreateShader(target); - -- if (s == 0) { -- av_log(avctx, AV_LOG_ERROR, "Failed to create shader\n"); -- return 0; -- } -+ if (s == 0) { -+ av_log(avctx, AV_LOG_ERROR, "Failed to create shader\n"); -+ return 0; -+ } - -- glShaderSource(s, 1, (const GLchar **) &source, NULL); -- glCompileShader(s); -+ glShaderSource(s, 1, (const GLchar **)&source, NULL); -+ glCompileShader(s); - -- { -- GLint ok; -- glGetShaderiv(s, GL_COMPILE_STATUS, &ok); -+ { -+ GLint ok; -+ glGetShaderiv(s, GL_COMPILE_STATUS, &ok); - -- if (!ok) { -- GLchar *info; -- GLint size; -+ if (!ok) { -+ GLchar *info; -+ GLint size; - -- glGetShaderiv(s, GL_INFO_LOG_LENGTH, &size); -- info = malloc(size); -+ glGetShaderiv(s, GL_INFO_LOG_LENGTH, &size); -+ info = malloc(size); - -- glGetShaderInfoLog(s, size, NULL, info); -- av_log(avctx, AV_LOG_ERROR, "Failed to compile shader: %ssource:\n%s\n", info, source); -+ glGetShaderInfoLog(s, size, NULL, info); -+ av_log(avctx, AV_LOG_ERROR, "Failed to compile shader: %ssource:\n%s\n", info, source); - -- return 0; -- } -- } -+ return 0; -+ } -+ } - -- return s; -+ return s; - } - --static GLuint link_program(struct AVFormatContext * const s, GLint vs, GLint fs) -+static GLuint link_program(struct AVFormatContext *const s, GLint vs, GLint fs) - { -- GLuint prog = glCreateProgram(); -- -- if (prog == 0) { -- av_log(s, AV_LOG_ERROR, "Failed to create program\n"); -- return 0; -- } -- -- glAttachShader(prog, vs); -- glAttachShader(prog, fs); -- glLinkProgram(prog); -- -- { -- GLint ok; -- glGetProgramiv(prog, GL_LINK_STATUS, &ok); -- if (!ok) { -- /* Some drivers return a size of 1 for an empty log. This is the size -- * of a log that contains only a terminating NUL character. -- */ -- GLint size; -- GLchar *info = NULL; -- glGetProgramiv(prog, GL_INFO_LOG_LENGTH, &size); -- if (size > 1) { -- info = malloc(size); -- glGetProgramInfoLog(prog, size, NULL, info); -- } -+ GLuint prog = glCreateProgram(); - -- av_log(s, AV_LOG_ERROR, "Failed to link: %s\n", -- (info != NULL) ? info : ""); -- return 0; -- } -- } -+ if (prog == 0) { -+ av_log(s, AV_LOG_ERROR, "Failed to create program\n"); -+ return 0; -+ } -+ -+ glAttachShader(prog, vs); -+ glAttachShader(prog, fs); -+ glLinkProgram(prog); -+ -+ { -+ GLint ok; -+ glGetProgramiv(prog, GL_LINK_STATUS, &ok); -+ if (!ok) { -+ /* Some drivers return a size of 1 for an empty log. This is the size -+ * of a log that contains only a terminating NUL character. -+ */ -+ GLint size; -+ GLchar *info = NULL; -+ glGetProgramiv(prog, GL_INFO_LOG_LENGTH, &size); -+ if (size > 1) { -+ info = malloc(size); -+ glGetProgramInfoLog(prog, size, NULL, info); -+ } - -- return prog; -+ av_log(s, AV_LOG_ERROR, "Failed to link: %s\n", -+ (info != NULL) ? info : ""); -+ return 0; -+ } -+ } -+ -+ return prog; - } - - static int --gl_setup(struct AVFormatContext * const s) -+gl_setup(struct AVFormatContext *const s) - { -- const char *vs = -- "attribute vec4 pos;\n" -- "varying vec2 texcoord;\n" -- "\n" -- "void main() {\n" -- " gl_Position = pos;\n" -- " texcoord.x = (pos.x + 1.0) / 2.0;\n" -- " texcoord.y = (-pos.y + 1.0) / 2.0;\n" -- "}\n"; -- const char *fs = -- "#extension GL_OES_EGL_image_external : enable\n" -- "precision mediump float;\n" -- "uniform samplerExternalOES s;\n" -- "varying vec2 texcoord;\n" -- "void main() {\n" -- " gl_FragColor = texture2D(s, texcoord);\n" -- "}\n"; -- -- GLuint vs_s; -- GLuint fs_s; -- GLuint prog; -- -- if (!(vs_s = compile_shader(s, GL_VERTEX_SHADER, vs)) || -- !(fs_s = compile_shader(s, GL_FRAGMENT_SHADER, fs)) || -- !(prog = link_program(s, vs_s, fs_s))) -- return -1; -- -- glUseProgram(prog); -- -- { -- static const float verts[] = { -- -1, -1, -- 1, -1, -- 1, 1, -- -1, 1, -- }; -- glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, verts); -- } -- -- glEnableVertexAttribArray(0); -- return 0; -+ const char *vs = -+ "attribute vec4 pos;\n" -+ "varying vec2 texcoord;\n" -+ "\n" -+ "void main() {\n" -+ " gl_Position = pos;\n" -+ " texcoord.x = (pos.x + 1.0) / 2.0;\n" -+ " texcoord.y = (-pos.y + 1.0) / 2.0;\n" -+ "}\n"; -+ const char *fs = -+ "#extension GL_OES_EGL_image_external : enable\n" -+ "precision mediump float;\n" -+ "uniform samplerExternalOES s;\n" -+ "varying vec2 texcoord;\n" -+ "void main() {\n" -+ " gl_FragColor = texture2D(s, texcoord);\n" -+ "}\n"; -+ -+ GLuint vs_s; -+ GLuint fs_s; -+ GLuint prog; -+ -+ if (!(vs_s = compile_shader(s, GL_VERTEX_SHADER, vs)) || -+ !(fs_s = compile_shader(s, GL_FRAGMENT_SHADER, fs)) || -+ !(prog = link_program(s, vs_s, fs_s))) -+ return -1; -+ -+ glUseProgram(prog); -+ -+ { -+ static const float verts[] = { -+ -1, -1, -+ 1, -1, -+ 1, 1, -+ -1, 1, -+ }; -+ glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, verts); -+ } -+ -+ glEnableVertexAttribArray(0); -+ return 0; - } - - static int egl_vout_write_trailer(AVFormatContext *s) -@@ -400,12 +398,12 @@ static int egl_vout_write_trailer(AVFormatContext *s) - - static int egl_vout_write_header(AVFormatContext *s) - { -- const AVCodecParameters * const par = s->streams[0]->codecpar; -+ const AVCodecParameters *const par = s->streams[0]->codecpar; - - #if TRACE_ALL - av_log(s, AV_LOG_INFO, "%s\n", __func__); - #endif -- if ( s->nb_streams > 1 -+ if (s->nb_streams > 1 - || par->codec_type != AVMEDIA_TYPE_VIDEO - || par->codec_id != AV_CODEC_ID_WRAPPED_AVFRAME) { - av_log(s, AV_LOG_ERROR, "Only supports one wrapped avframe stream\n"); -@@ -416,10 +414,10 @@ static int egl_vout_write_header(AVFormatContext *s) - } - - --static int do_display(AVFormatContext * const s, egl_display_env_t * const de, AVFrame * const frame) -+static int do_display(AVFormatContext *const s, egl_display_env_t *const de, AVFrame *const frame) - { -- const AVDRMFrameDescriptor *desc = (AVDRMFrameDescriptor*)frame->data[0]; -- egl_aux_t * da = NULL; -+ const AVDRMFrameDescriptor *desc = (AVDRMFrameDescriptor *)frame->data[0]; -+ egl_aux_t *da = NULL; - unsigned int i; - - #if TRACE_ALL -@@ -440,26 +438,26 @@ static int do_display(AVFormatContext * const s, egl_display_env_t * const de, A - - if (da->texture == 0) { - EGLint attribs[50]; -- EGLint * a = attribs; -+ EGLint *a = attribs; - int i, j; - static const EGLint anames[] = { -- EGL_DMA_BUF_PLANE0_FD_EXT, -- EGL_DMA_BUF_PLANE0_OFFSET_EXT, -- EGL_DMA_BUF_PLANE0_PITCH_EXT, -- EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT, -- EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT, -- EGL_DMA_BUF_PLANE1_FD_EXT, -- EGL_DMA_BUF_PLANE1_OFFSET_EXT, -- EGL_DMA_BUF_PLANE1_PITCH_EXT, -- EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT, -- EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT, -- EGL_DMA_BUF_PLANE2_FD_EXT, -- EGL_DMA_BUF_PLANE2_OFFSET_EXT, -- EGL_DMA_BUF_PLANE2_PITCH_EXT, -- EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT, -- EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT, -+ EGL_DMA_BUF_PLANE0_FD_EXT, -+ EGL_DMA_BUF_PLANE0_OFFSET_EXT, -+ EGL_DMA_BUF_PLANE0_PITCH_EXT, -+ EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT, -+ EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT, -+ EGL_DMA_BUF_PLANE1_FD_EXT, -+ EGL_DMA_BUF_PLANE1_OFFSET_EXT, -+ EGL_DMA_BUF_PLANE1_PITCH_EXT, -+ EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT, -+ EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT, -+ EGL_DMA_BUF_PLANE2_FD_EXT, -+ EGL_DMA_BUF_PLANE2_OFFSET_EXT, -+ EGL_DMA_BUF_PLANE2_PITCH_EXT, -+ EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT, -+ EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT, - }; -- const EGLint * b = anames; -+ const EGLint *b = anames; - - *a++ = EGL_WIDTH; - *a++ = av_frame_cropped_width(frame); -@@ -470,8 +468,8 @@ static int do_display(AVFormatContext * const s, egl_display_env_t * const de, A - - for (i = 0; i < desc->nb_layers; ++i) { - for (j = 0; j < desc->layers[i].nb_planes; ++j) { -- const AVDRMPlaneDescriptor * const p = desc->layers[i].planes + j; -- const AVDRMObjectDescriptor * const obj = desc->objects + p->object_index; -+ const AVDRMPlaneDescriptor *const p = desc->layers[i].planes + j; -+ const AVDRMObjectDescriptor *const obj = desc->objects + p->object_index; - *a++ = *b++; - *a++ = obj->fd; - *a++ = *b++; -@@ -479,13 +477,13 @@ static int do_display(AVFormatContext * const s, egl_display_env_t * const de, A - *a++ = *b++; - *a++ = p->pitch; - if (obj->format_modifier == 0) { -- b += 2; -+ b += 2; - } - else { -- *a++ = *b++; -- *a++ = (EGLint)(obj->format_modifier & 0xFFFFFFFF); -- *a++ = *b++; -- *a++ = (EGLint)(obj->format_modifier >> 32); -+ *a++ = *b++; -+ *a++ = (EGLint)(obj->format_modifier & 0xFFFFFFFF); -+ *a++ = *b++; -+ *a++ = (EGLint)(obj->format_modifier >> 32); - } - } - } -@@ -494,26 +492,26 @@ static int do_display(AVFormatContext * const s, egl_display_env_t * const de, A - - #if TRACE_ALL - for (a = attribs, i = 0; *a != EGL_NONE; a += 2, ++i) { -- av_log(s, AV_LOG_INFO, "[%2d] %4x: %d\n", i, a[0], a[1]); -+ av_log(s, AV_LOG_INFO, "[%2d] %4x: %d\n", i, a[0], a[1]); - } - #endif - { -- const EGLImage image = eglCreateImageKHR(de->setup.egl_dpy, -- EGL_NO_CONTEXT, -- EGL_LINUX_DMA_BUF_EXT, -- NULL, attribs); -- if (!image) { -- av_log(s, AV_LOG_ERROR, "Failed to import fd %d\n", desc->objects[0].fd); -- return -1; -- } -- -- glGenTextures(1, &da->texture); -- glBindTexture(GL_TEXTURE_EXTERNAL_OES, da->texture); -- glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MIN_FILTER, GL_LINEAR); -- glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MAG_FILTER, GL_LINEAR); -- glEGLImageTargetTexture2DOES(GL_TEXTURE_EXTERNAL_OES, image); -- -- eglDestroyImageKHR(de->setup.egl_dpy, image); -+ const EGLImage image = eglCreateImageKHR(de->setup.egl_dpy, -+ EGL_NO_CONTEXT, -+ EGL_LINUX_DMA_BUF_EXT, -+ NULL, attribs); -+ if (!image) { -+ av_log(s, AV_LOG_ERROR, "Failed to import fd %d\n", desc->objects[0].fd); -+ return -1; -+ } -+ -+ glGenTextures(1, &da->texture); -+ glBindTexture(GL_TEXTURE_EXTERNAL_OES, da->texture); -+ glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MIN_FILTER, GL_LINEAR); -+ glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MAG_FILTER, GL_LINEAR); -+ glEGLImageTargetTexture2DOES(GL_TEXTURE_EXTERNAL_OES, image); -+ -+ eglDestroyImageKHR(de->setup.egl_dpy, image); - } - - da->fd = desc->objects[0].fd; -@@ -540,7 +538,7 @@ static int do_display(AVFormatContext * const s, egl_display_env_t * const de, A - (long long)modifiers[1], - (long long)modifiers[2], - (long long)modifiers[3] -- ); -+ ); - #endif - } - -@@ -558,55 +556,55 @@ static int do_display(AVFormatContext * const s, egl_display_env_t * const de, A - return 0; - } - --static void * display_thread(void * v) -+static void* display_thread(void *v) - { -- AVFormatContext * const s = v; -- egl_display_env_t * const de = s->priv_data; -+ AVFormatContext *const s = v; -+ egl_display_env_t *const de = s->priv_data; - - #if TRACE_ALL - av_log(s, AV_LOG_INFO, "<<< %s\n", __func__); - #endif - { -- EGLint egl_major, egl_minor; -- -- de->setup.dpy = XOpenDisplay(NULL); -- if (!de->setup.dpy) { -- av_log(s, AV_LOG_ERROR, "Couldn't open X display\n"); -- goto fail; -- } -- -- de->setup.egl_dpy = eglGetDisplay(de->setup.dpy); -- if (!de->setup.egl_dpy) { -- av_log(s, AV_LOG_ERROR, "eglGetDisplay() failed\n"); -- goto fail; -- } -- -- if (!eglInitialize(de->setup.egl_dpy, &egl_major, &egl_minor)) { -- av_log(s, AV_LOG_ERROR, "Error: eglInitialize() failed\n"); -- goto fail; -- } -- -- av_log(s, AV_LOG_INFO, "EGL version %d.%d\n", egl_major, egl_minor); -- -- if (!epoxy_has_egl_extension(de->setup.egl_dpy, "EGL_KHR_image_base")) { -- av_log(s, AV_LOG_ERROR, "Missing EGL KHR image extension\n"); -- goto fail; -- } -+ EGLint egl_major, egl_minor; -+ -+ de->setup.dpy = XOpenDisplay(NULL); -+ if (!de->setup.dpy) { -+ av_log(s, AV_LOG_ERROR, "Couldn't open X display\n"); -+ goto fail; -+ } -+ -+ de->setup.egl_dpy = eglGetDisplay(de->setup.dpy); -+ if (!de->setup.egl_dpy) { -+ av_log(s, AV_LOG_ERROR, "eglGetDisplay() failed\n"); -+ goto fail; -+ } -+ -+ if (!eglInitialize(de->setup.egl_dpy, &egl_major, &egl_minor)) { -+ av_log(s, AV_LOG_ERROR, "Error: eglInitialize() failed\n"); -+ goto fail; -+ } -+ -+ av_log(s, AV_LOG_INFO, "EGL version %d.%d\n", egl_major, egl_minor); -+ -+ if (!epoxy_has_egl_extension(de->setup.egl_dpy, "EGL_KHR_image_base")) { -+ av_log(s, AV_LOG_ERROR, "Missing EGL KHR image extension\n"); -+ goto fail; -+ } - } - - if (!de->window_width || !de->window_height) { -- de->window_width = 1280; -- de->window_height = 720; -+ de->window_width = 1280; -+ de->window_height = 720; - } - if (make_window(s, de, de->setup.dpy, de->setup.egl_dpy, "ffmpeg-vout", - &de->setup.win, &de->setup.ctx, &de->setup.surf)) { -- av_log(s, AV_LOG_ERROR, "%s: make_window failed\n", __func__); -- goto fail; -+ av_log(s, AV_LOG_ERROR, "%s: make_window failed\n", __func__); -+ goto fail; - } - - if (gl_setup(s)) { -- av_log(s, AV_LOG_ERROR, "%s: gl_setup failed\n", __func__); -- goto fail; -+ av_log(s, AV_LOG_ERROR, "%s: gl_setup failed\n", __func__); -+ goto fail; - } - - #if TRACE_ALL -@@ -615,7 +613,7 @@ static void * display_thread(void * v) - sem_post(&de->display_start_sem); - - for (;;) { -- AVFrame * frame; -+ AVFrame *frame; - - while (sem_wait(&de->q_sem) != 0) { - av_assert0(errno == EINTR); -@@ -653,9 +651,9 @@ fail: - - static int egl_vout_write_packet(AVFormatContext *s, AVPacket *pkt) - { -- const AVFrame * const src_frame = (AVFrame *)pkt->data; -- AVFrame * frame; -- egl_display_env_t * const de = s->priv_data; -+ const AVFrame *const src_frame = (AVFrame *)pkt->data; -+ AVFrame *frame; -+ egl_display_env_t *const de = s->priv_data; - - #if TRACE_ALL - av_log(s, AV_LOG_INFO, "%s\n", __func__); -@@ -668,8 +666,7 @@ static int egl_vout_write_packet(AVFormatContext *s, AVPacket *pkt) - else if (src_frame->format == AV_PIX_FMT_VAAPI) { - frame = av_frame_alloc(); - frame->format = AV_PIX_FMT_DRM_PRIME; -- if (av_hwframe_map(frame, src_frame, 0) != 0) -- { -+ if (av_hwframe_map(frame, src_frame, 0) != 0) { - av_log(s, AV_LOG_WARNING, "Failed to map frame (format=%d) to DRM_PRiME\n", src_frame->format); - av_frame_free(&frame); - return AVERROR(EINVAL); -@@ -682,12 +679,12 @@ static int egl_vout_write_packet(AVFormatContext *s, AVPacket *pkt) - - // Really hacky sync - while (de->show_all && de->q_next) { -- usleep(3000); -+ usleep(3000); - } - - pthread_mutex_lock(&de->q_lock); - { -- AVFrame * const t = de->q_next; -+ AVFrame *const t = de->q_next; - de->q_next = frame; - frame = t; - } -@@ -702,7 +699,7 @@ static int egl_vout_write_packet(AVFormatContext *s, AVPacket *pkt) - } - - static int egl_vout_write_frame(AVFormatContext *s, int stream_index, AVFrame **ppframe, -- unsigned flags) -+ unsigned flags) - { - av_log(s, AV_LOG_ERROR, "%s: NIF: idx=%d, flags=%#x\n", __func__, stream_index, flags); - return AVERROR_PATCHWELCOME; -@@ -713,7 +710,7 @@ static int egl_vout_control_message(AVFormatContext *s, int type, void *data, si - #if TRACE_ALL - av_log(s, AV_LOG_INFO, "%s: %d\n", __func__, type); - #endif -- switch(type) { -+ switch (type) { - case AV_APP_TO_DEV_WINDOW_REPAINT: - return 0; - default: -@@ -723,14 +720,14 @@ static int egl_vout_control_message(AVFormatContext *s, int type, void *data, si - } - - // deinit is called if init fails so no need to clean up explicity here --static int egl_vout_init(struct AVFormatContext * s) -+static int egl_vout_init(struct AVFormatContext *s) - { -- egl_display_env_t * const de = s->priv_data; -+ egl_display_env_t *const de = s->priv_data; - unsigned int i; - - av_log(s, AV_LOG_DEBUG, "<<< %s\n", __func__); - -- de->setup = (struct egl_setup){0}; -+ de->setup = (struct egl_setup) { 0 }; - - for (i = 0; i != 32; ++i) { - de->aux[i].fd = -1; -@@ -744,8 +741,8 @@ static int egl_vout_init(struct AVFormatContext * s) - - sem_wait(&de->display_start_sem); - if (de->q_terminate) { -- av_log(s, AV_LOG_ERROR, "%s: Display startup failure\n", __func__); -- return -1; -+ av_log(s, AV_LOG_ERROR, "%s: Display startup failure\n", __func__); -+ return -1; - } - - av_log(s, AV_LOG_DEBUG, ">>> %s\n", __func__); -@@ -753,9 +750,9 @@ static int egl_vout_init(struct AVFormatContext * s) - return 0; - } - --static void egl_vout_deinit(struct AVFormatContext * s) -+static void egl_vout_deinit(struct AVFormatContext *s) - { -- egl_display_env_t * const de = s->priv_data; -+ egl_display_env_t *const de = s->priv_data; - - av_log(s, AV_LOG_DEBUG, "<<< %s\n", __func__); - -@@ -773,11 +770,11 @@ static void egl_vout_deinit(struct AVFormatContext * s) - - #define OFFSET(x) offsetof(egl_display_env_t, x) - static const AVOption options[] = { -- { "show_all", "show all frames", OFFSET(show_all), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, AV_OPT_FLAG_ENCODING_PARAM }, -- { "window_size", "set window forced size", OFFSET(window_width), AV_OPT_TYPE_IMAGE_SIZE, {.str = NULL}, 0, 0, AV_OPT_FLAG_ENCODING_PARAM }, -- { "window_x", "set window x offset", OFFSET(window_x), AV_OPT_TYPE_INT, {.i64 = 0 }, -INT_MAX, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM }, -- { "window_y", "set window y offset", OFFSET(window_y), AV_OPT_TYPE_INT, {.i64 = 0 }, -INT_MAX, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM }, -- { "fullscreen", "set fullscreen display", OFFSET(fullscreen), AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, AV_OPT_FLAG_ENCODING_PARAM }, -+ { "show_all", "show all frames", OFFSET(show_all), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, AV_OPT_FLAG_ENCODING_PARAM }, -+ { "window_size", "set window forced size", OFFSET(window_width), AV_OPT_TYPE_IMAGE_SIZE, { .str = NULL }, 0, 0, AV_OPT_FLAG_ENCODING_PARAM }, -+ { "window_x", "set window x offset", OFFSET(window_x), AV_OPT_TYPE_INT, { .i64 = 0 }, -INT_MAX, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM }, -+ { "window_y", "set window y offset", OFFSET(window_y), AV_OPT_TYPE_INT, { .i64 = 0 }, -INT_MAX, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM }, -+ { "fullscreen", "set fullscreen display", OFFSET(fullscreen), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, AV_OPT_FLAG_ENCODING_PARAM }, - { NULL } - - }; - -From 4d3a3973a07994b0a6ec35626e514fc40f439fe3 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 12 Dec 2022 16:49:43 +0000 -Subject: [PATCH 098/151] v4l2m2m: reporganise get_raw_format for loop logic - ---- - libavcodec/v4l2_context.c | 16 +++++----------- - 1 file changed, 5 insertions(+), 11 deletions(-) - -diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c -index 7031f3d340..79a31cf930 100644 ---- a/libavcodec/v4l2_context.c -+++ b/libavcodec/v4l2_context.c -@@ -828,28 +828,22 @@ static int v4l2_get_raw_format(V4L2Context* ctx, enum AVPixelFormat *p) - return 0; - } - -- for (;;) { -+ for (;; ++fdesc.index) { - ret = ioctl(ctx_to_m2mctx(ctx)->fd, VIDIOC_ENUM_FMT, &fdesc); - if (ret) - return AVERROR(EINVAL); - - if (priv->pix_fmt != AV_PIX_FMT_NONE) { -- if (fdesc.pixelformat != ff_v4l2_format_avfmt_to_v4l2(priv->pix_fmt)) { -- fdesc.index++; -+ if (fdesc.pixelformat != ff_v4l2_format_avfmt_to_v4l2(priv->pix_fmt)) - continue; -- } - } - - pixfmt = ff_v4l2_format_v4l2_to_avfmt(fdesc.pixelformat, AV_CODEC_ID_RAWVIDEO); - ret = v4l2_try_raw_format(ctx, pixfmt); -- if (ret){ -- fdesc.index++; -- continue; -+ if (ret == 0) { -+ *p = pixfmt; -+ return 0; - } -- -- *p = pixfmt; -- -- return 0; - } - - return AVERROR(EINVAL); - -From 123c5ef429ec6bd7d1875d621df88bb2ad7af0bd Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 12 Dec 2022 17:49:12 +0000 -Subject: [PATCH 099/151] drm_vout: Set zpos on the plane we pick to ensure it - is at the front - ---- - libavdevice/drm_vout.c | 38 +++++++++++++++++++++++++++++++++----- - 1 file changed, 33 insertions(+), 5 deletions(-) - -diff --git a/libavdevice/drm_vout.c b/libavdevice/drm_vout.c -index cfb33ce7c3..9bd9e04421 100644 ---- a/libavdevice/drm_vout.c -+++ b/libavdevice/drm_vout.c -@@ -115,9 +115,11 @@ static int find_plane(struct AVFormatContext * const avctx, - { - drmModePlaneResPtr planes; - drmModePlanePtr plane; -+ drmModeObjectPropertiesPtr props = NULL; -+ drmModePropertyPtr prop = NULL; - unsigned int i; - unsigned int j; -- int ret = 0; -+ int ret = -1; - - planes = drmModeGetPlaneResources(drmfd); - if (!planes) -@@ -154,11 +156,37 @@ static int find_plane(struct AVFormatContext * const avctx, - break; - } - -- if (i == planes->count_planes) -- ret = -1; -+ if (i == planes->count_planes) { -+ ret = -1; -+ goto fail; -+ } - -- drmModeFreePlaneResources(planes); -- return ret; -+ props = drmModeObjectGetProperties(drmfd, *pplane_id, DRM_MODE_OBJECT_PLANE); -+ if (!props) -+ goto fail; -+ for (i = 0; i != props->count_props; ++i) { -+ if (prop) -+ drmModeFreeProperty(prop); -+ prop = drmModeGetProperty(drmfd, props->props[i]); -+ if (!prop) -+ goto fail; -+ if (strcmp("zpos", prop->name) == 0) { -+ if (drmModeObjectSetProperty(drmfd, *pplane_id, DRM_MODE_OBJECT_PLANE, props->props[i], prop->values[1]) == 0) -+ av_log(avctx, AV_LOG_DEBUG, "ZPOS set to %d\n", (int)prop->values[1]); -+ else -+ av_log(avctx, AV_LOG_WARNING, "Failed to set ZPOS on DRM plane\n"); -+ break; -+ } -+ } -+ -+ ret = 0; -+fail: -+ if (props) -+ drmModeFreeObjectProperties(props); -+ if (prop) -+ drmModeFreeProperty(prop); -+ drmModeFreePlaneResources(planes); -+ return ret; - } - - static void da_uninit(drm_display_env_t * const de, drm_aux_t * da) - -From 0ee1c3b41774d05595376f8d25de2a901dbb12c7 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 12 Dec 2022 17:51:46 +0000 -Subject: [PATCH 100/151] drm_vout: Only set modifier flag and pass modifiers - if there are some - ---- - libavdevice/drm_vout.c | 17 ++++++++++++----- - 1 file changed, 12 insertions(+), 5 deletions(-) - -diff --git a/libavdevice/drm_vout.c b/libavdevice/drm_vout.c -index 9bd9e04421..a56adea866 100644 ---- a/libavdevice/drm_vout.c -+++ b/libavdevice/drm_vout.c -@@ -34,6 +34,7 @@ - - #include - #include -+#include - - #define TRACE_ALL 0 - -@@ -249,6 +250,7 @@ static int do_display(AVFormatContext * const s, drm_display_env_t * const de, A - uint32_t offsets[4] = {0}; - uint64_t modifiers[4] = {0}; - uint32_t bo_handles[4] = {0}; -+ int has_mods = 0; - int i, j, n; - - da->frame = frame; -@@ -258,6 +260,9 @@ static int do_display(AVFormatContext * const s, drm_display_env_t * const de, A - av_log(s, AV_LOG_WARNING, "drmPrimeFDToHandle[%d](%d) failed: %s\n", i, desc->objects[i].fd, ERRSTR); - return -1; - } -+ if (desc->objects[i].format_modifier != DRM_FORMAT_MOD_LINEAR && -+ desc->objects[i].format_modifier != DRM_FORMAT_MOD_INVALID) -+ has_mods = 1; - } - - n = 0; -@@ -299,11 +304,13 @@ static int do_display(AVFormatContext * const s, drm_display_env_t * const de, A - #endif - - if (drmModeAddFB2WithModifiers(de->drm_fd, -- av_frame_cropped_width(frame), -- av_frame_cropped_height(frame), -- desc->layers[0].format, bo_handles, -- pitches, offsets, modifiers, -- &da->fb_handle, DRM_MODE_FB_MODIFIERS /** 0 if no mods */) != 0) { -+ av_frame_cropped_width(frame), -+ av_frame_cropped_height(frame), -+ desc->layers[0].format, bo_handles, -+ pitches, offsets, -+ has_mods ? modifiers : NULL, -+ &da->fb_handle, -+ has_mods ? DRM_MODE_FB_MODIFIERS : 0) != 0) { - av_log(s, AV_LOG_WARNING, "drmModeAddFB2WithModifiers failed: %s\n", ERRSTR); - return -1; - } - -From 4534e6981c1718eaeec4c5f58cdf5592ee7f0329 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 12 Dec 2022 17:52:58 +0000 -Subject: [PATCH 101/151] drm_vout: Fix typo in error message - ---- - libavdevice/drm_vout.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libavdevice/drm_vout.c b/libavdevice/drm_vout.c -index a56adea866..351abf1d60 100644 ---- a/libavdevice/drm_vout.c -+++ b/libavdevice/drm_vout.c -@@ -596,7 +596,7 @@ static int drm_vout_init(struct AVFormatContext * s) - sem_init(&de->q_sem_out, 0, 0); - if (pthread_create(&de->q_thread, NULL, display_thread, s)) { - rv = AVERROR(errno); -- av_log(s, AV_LOG_ERROR, "Failed to creatye display thread: %s\n", av_err2str(rv)); -+ av_log(s, AV_LOG_ERROR, "Failed to create display thread: %s\n", av_err2str(rv)); - goto fail_close; - } - - -From 0469d1fb132a0d55593611c56e83733efe58045b Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 12 Dec 2022 18:00:41 +0000 -Subject: [PATCH 102/151] drm_vout: Add option to name the drm_module to use - ---- - libavdevice/drm_vout.c | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - -diff --git a/libavdevice/drm_vout.c b/libavdevice/drm_vout.c -index 351abf1d60..491e1dc608 100644 ---- a/libavdevice/drm_vout.c -+++ b/libavdevice/drm_vout.c -@@ -70,7 +70,9 @@ typedef struct drm_display_env_s - uint32_t con_id; - struct drm_setup setup; - enum AVPixelFormat avfmt; -+ - int show_all; -+ const char * drm_module; - - unsigned int ano; - drm_aux_t aux[AUX_SIZE]; -@@ -569,7 +571,6 @@ static int drm_vout_init(struct AVFormatContext * s) - { - drm_display_env_t * const de = s->priv_data; - int rv; -- const char * drm_module = DRM_MODULE; - - av_log(s, AV_LOG_DEBUG, "<<< %s\n", __func__); - -@@ -578,10 +579,10 @@ static int drm_vout_init(struct AVFormatContext * s) - de->setup = (struct drm_setup){0}; - de->q_terminate = 0; - -- if ((de->drm_fd = drmOpen(drm_module, NULL)) < 0) -+ if ((de->drm_fd = drmOpen(de->drm_module, NULL)) < 0) - { - rv = AVERROR(errno); -- av_log(s, AV_LOG_ERROR, "Failed to drmOpen %s: %s\n", drm_module, av_err2str(rv)); -+ av_log(s, AV_LOG_ERROR, "Failed to drmOpen %s: %s\n", de->drm_module, av_err2str(rv)); - return rv; - } - -@@ -641,6 +642,7 @@ static void drm_vout_deinit(struct AVFormatContext * s) - #define OFFSET(x) offsetof(drm_display_env_t, x) - static const AVOption options[] = { - { "show_all", "show all frames", OFFSET(show_all), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, AV_OPT_FLAG_ENCODING_PARAM }, -+ { "drm_module", "drm_module name to use, default=" DRM_MODULE, OFFSET(drm_module), AV_OPT_TYPE_STRING, { .str = DRM_MODULE }, 0, 0, AV_OPT_FLAG_ENCODING_PARAM }, - { NULL } - }; - - -From 61cb9fc3ce06e0ecaeeec3add143bc3a82956853 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 13 Dec 2022 13:01:00 +0000 -Subject: [PATCH 103/151] dmabufs: Rework to allow for non-CMA backends - ---- - libavcodec/v4l2_req_dmabufs.c | 161 ++++++++++++++++++++++++---------- - 1 file changed, 116 insertions(+), 45 deletions(-) - -diff --git a/libavcodec/v4l2_req_dmabufs.c b/libavcodec/v4l2_req_dmabufs.c -index c4bbed18c6..1c3a5e861f 100644 ---- a/libavcodec/v4l2_req_dmabufs.c -+++ b/libavcodec/v4l2_req_dmabufs.c -@@ -1,3 +1,4 @@ -+#include - #include - #include - #include -@@ -19,9 +20,21 @@ - - #define TRACE_ALLOC 0 - -+struct dmabufs_ctl; -+struct dmabuf_h; -+ -+struct dmabuf_fns { -+ int (*buf_alloc)(struct dmabufs_ctl * dbsc, struct dmabuf_h * dh, size_t size); -+ void (*buf_free)(struct dmabuf_h * dh); -+ int (*ctl_new)(struct dmabufs_ctl * dbsc); -+ void (*ctl_free)(struct dmabufs_ctl * dbsc); -+}; -+ - struct dmabufs_ctl { - int fd; - size_t page_size; -+ void * v; -+ const struct dmabuf_fns * fns; - }; - - struct dmabuf_h { -@@ -29,6 +42,8 @@ struct dmabuf_h { - size_t size; - size_t len; - void * mapptr; -+ void * v; -+ const struct dmabuf_fns * fns; - }; - - #if TRACE_ALLOC -@@ -88,15 +103,8 @@ struct dmabuf_h * dmabuf_import(int fd, size_t size) - struct dmabuf_h * dmabuf_realloc(struct dmabufs_ctl * dbsc, struct dmabuf_h * old, size_t size) - { - struct dmabuf_h * dh; -- struct dma_heap_allocation_data data = { -- .len = (size + dbsc->page_size - 1) & ~(dbsc->page_size - 1), -- .fd = 0, -- .fd_flags = O_RDWR, -- .heap_flags = 0 -- }; -- - if (old != NULL) { -- if (old->size == data.len) { -+ if (old->size >= size) { - return old; - } - dmabuf_free(old); -@@ -106,24 +114,16 @@ struct dmabuf_h * dmabuf_realloc(struct dmabufs_ctl * dbsc, struct dmabuf_h * ol - (dh = malloc(sizeof(*dh))) == NULL) - return NULL; - -- while (ioctl(dbsc->fd, DMA_HEAP_IOCTL_ALLOC, &data)) { -- int err = errno; -- request_log("Failed to alloc %" PRIu64 " from dma-heap(fd=%d): %d (%s)\n", -- (uint64_t)data.len, -- dbsc->fd, -- err, -- strerror(err)); -- if (err == EINTR) -- continue; -- goto fail; -- } -- - *dh = (struct dmabuf_h){ -- .fd = data.fd, -- .size = (size_t)data.len, -- .mapptr = MAP_FAILED -+ .fd = -1, -+ .mapptr = MAP_FAILED, -+ .fns = dbsc->fns - }; - -+ if (dh->fns->buf_alloc(dbsc, dh, size) != 0) -+ goto fail; -+ -+ - #if TRACE_ALLOC - ++total_bufs; - total_size += dh->size; -@@ -220,8 +220,6 @@ void dmabuf_len_set(struct dmabuf_h * const dh, const size_t len) - dh->len = len; - } - -- -- - void dmabuf_free(struct dmabuf_h * dh) - { - if (!dh) -@@ -233,20 +231,63 @@ void dmabuf_free(struct dmabuf_h * dh) - request_log("%s: Free: %zd, total=%zd, bufs=%d\n", __func__, dh->size, total_size, total_bufs); - #endif - -- if (dh->mapptr != MAP_FAILED) -+ dh->fns->buf_free(dh); -+ -+ if (dh->mapptr != MAP_FAILED && dh->mapptr != NULL) - munmap(dh->mapptr, dh->size); -- while (close(dh->fd) == -1 && errno == EINTR) -- /* loop */; -+ if (dh->fd != -1) -+ while (close(dh->fd) == -1 && errno == EINTR) -+ /* loop */; - free(dh); - } - --struct dmabufs_ctl * dmabufs_ctl_new(void) -+static struct dmabufs_ctl * dmabufs_ctl_new2(const struct dmabuf_fns * const fns) - { -- struct dmabufs_ctl * dbsc = malloc(sizeof(*dbsc)); -+ struct dmabufs_ctl * dbsc = calloc(1, sizeof(*dbsc)); - - if (!dbsc) - return NULL; - -+ dbsc->fd = -1; -+ dbsc->fns = fns; -+ dbsc->page_size = (size_t)sysconf(_SC_PAGE_SIZE); -+ -+ if (fns->ctl_new(dbsc) != 0) -+ goto fail; -+ -+ return dbsc; -+ -+fail: -+ free(dbsc); -+ return NULL; -+} -+ -+static void dmabufs_ctl_free(struct dmabufs_ctl * const dbsc) -+{ -+ request_debug(NULL, "Free dmabuf ctl\n"); -+ -+ dbsc->fns->ctl_free(dbsc); -+ -+ free(dbsc); -+} -+ -+void dmabufs_ctl_delete(struct dmabufs_ctl ** const pDbsc) -+{ -+ struct dmabufs_ctl * const dbsc = *pDbsc; -+ -+ if (!dbsc) -+ return; -+ *pDbsc = NULL; -+ -+ dmabufs_ctl_free(dbsc); -+} -+ -+//----------------------------------------------------------------------------- -+// -+// Alloc dmabuf via CMA -+ -+static int ctl_cma_new(struct dmabufs_ctl * dbsc) -+{ - while ((dbsc->fd = open(DMABUF_NAME1, O_RDWR)) == -1 && - errno == EINTR) - /* Loop */; -@@ -258,31 +299,61 @@ struct dmabufs_ctl * dmabufs_ctl_new(void) - if (dbsc->fd == -1) { - request_log("Unable to open either %s or %s\n", - DMABUF_NAME1, DMABUF_NAME2); -- goto fail; -+ return -1; - } - } -+ return 0; -+} - -- dbsc->page_size = (size_t)sysconf(_SC_PAGE_SIZE); -- -- return dbsc; -+static void ctl_cma_free(struct dmabufs_ctl * dbsc) -+{ -+ if (dbsc->fd != -1) -+ while (close(dbsc->fd) == -1 && errno == EINTR) -+ /* loop */; - --fail: -- free(dbsc); -- return NULL; - } - --void dmabufs_ctl_delete(struct dmabufs_ctl ** const pDbsc) -+static int buf_cma_alloc(struct dmabufs_ctl * const dbsc, struct dmabuf_h * dh, size_t size) - { -- struct dmabufs_ctl * const dbsc = *pDbsc; -+ struct dma_heap_allocation_data data = { -+ .len = (size + dbsc->page_size - 1) & ~(dbsc->page_size - 1), -+ .fd = 0, -+ .fd_flags = O_RDWR, -+ .heap_flags = 0 -+ }; - -- if (!dbsc) -- return; -- *pDbsc = NULL; -+ while (ioctl(dbsc->fd, DMA_HEAP_IOCTL_ALLOC, &data)) { -+ int err = errno; -+ request_log("Failed to alloc %" PRIu64 " from dma-heap(fd=%d): %d (%s)\n", -+ (uint64_t)data.len, -+ dbsc->fd, -+ err, -+ strerror(err)); -+ if (err == EINTR) -+ continue; -+ return -err; -+ } - -- while (close(dbsc->fd) == -1 && errno == EINTR) -- /* loop */; -+ dh->fd = data.fd; -+ dh->size = (size_t)data.len; -+ return 0; -+} - -- free(dbsc); -+static void buf_cma_free(struct dmabuf_h * dh) -+{ -+ // Nothing needed - } - -+static const struct dmabuf_fns dmabuf_cma_fns = { -+ .buf_alloc = buf_cma_alloc, -+ .buf_free = buf_cma_free, -+ .ctl_new = ctl_cma_new, -+ .ctl_free = ctl_cma_free, -+}; -+ -+struct dmabufs_ctl * dmabufs_ctl_new(void) -+{ -+ request_debug(NULL, "Dmabufs using CMA\n");; -+ return dmabufs_ctl_new2(&dmabuf_cma_fns); -+} - - -From 288807720443bbddf4c83c3589d1877c7fd418c3 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 13 Dec 2022 13:07:58 +0000 -Subject: [PATCH 104/151] dmabufs: Use unref rather than deleet on cmabufs_ctl - ---- - libavcodec/v4l2_req_dmabufs.c | 12 +++++++++++- - libavcodec/v4l2_req_dmabufs.h | 3 ++- - libavcodec/v4l2_request_hevc.c | 4 ++-- - 3 files changed, 15 insertions(+), 4 deletions(-) - -diff --git a/libavcodec/v4l2_req_dmabufs.c b/libavcodec/v4l2_req_dmabufs.c -index 1c3a5e861f..acc0366e76 100644 ---- a/libavcodec/v4l2_req_dmabufs.c -+++ b/libavcodec/v4l2_req_dmabufs.c -@@ -31,6 +31,7 @@ struct dmabuf_fns { - }; - - struct dmabufs_ctl { -+ atomic_int ref_count; - int fd; - size_t page_size; - void * v; -@@ -271,7 +272,7 @@ static void dmabufs_ctl_free(struct dmabufs_ctl * const dbsc) - free(dbsc); - } - --void dmabufs_ctl_delete(struct dmabufs_ctl ** const pDbsc) -+void dmabufs_ctl_unref(struct dmabufs_ctl ** const pDbsc) - { - struct dmabufs_ctl * const dbsc = *pDbsc; - -@@ -279,9 +280,18 @@ void dmabufs_ctl_delete(struct dmabufs_ctl ** const pDbsc) - return; - *pDbsc = NULL; - -+ if (atomic_fetch_sub(&dbsc->ref_count, 1) != 0) -+ return; -+ - dmabufs_ctl_free(dbsc); - } - -+struct dmabufs_ctl * dmabufs_ctl_ref(struct dmabufs_ctl * const dbsc) -+{ -+ atomic_fetch_add(&dbsc->ref_count, 1); -+ return dbsc; -+} -+ - //----------------------------------------------------------------------------- - // - // Alloc dmabuf via CMA -diff --git a/libavcodec/v4l2_req_dmabufs.h b/libavcodec/v4l2_req_dmabufs.h -index c1d3d8c8d7..381ba2708d 100644 ---- a/libavcodec/v4l2_req_dmabufs.h -+++ b/libavcodec/v4l2_req_dmabufs.h -@@ -7,7 +7,8 @@ struct dmabufs_ctl; - struct dmabuf_h; - - struct dmabufs_ctl * dmabufs_ctl_new(void); --void dmabufs_ctl_delete(struct dmabufs_ctl ** const pdbsc); -+void dmabufs_ctl_unref(struct dmabufs_ctl ** const pdbsc); -+struct dmabufs_ctl * dmabufs_ctl_ref(struct dmabufs_ctl * const dbsc); - - // Need not preserve old contents - // On NULL return old buffer is freed -diff --git a/libavcodec/v4l2_request_hevc.c b/libavcodec/v4l2_request_hevc.c -index 767ecb036a..db7ed13b6d 100644 ---- a/libavcodec/v4l2_request_hevc.c -+++ b/libavcodec/v4l2_request_hevc.c -@@ -105,7 +105,7 @@ static int v4l2_request_hevc_uninit(AVCodecContext *avctx) - mediabufs_ctl_unref(&ctx->mbufs); - media_pool_delete(&ctx->mpool); - pollqueue_unref(&ctx->pq); -- dmabufs_ctl_delete(&ctx->dbufs); -+ dmabufs_ctl_unref(&ctx->dbufs); - devscan_delete(&ctx->devscan); - - decode_q_uninit(&ctx->decode_q); -@@ -324,7 +324,7 @@ fail3: - fail2: - pollqueue_unref(&ctx->pq); - fail1: -- dmabufs_ctl_delete(&ctx->dbufs); -+ dmabufs_ctl_unref(&ctx->dbufs); - fail0: - devscan_delete(&ctx->devscan); - return ret; - -From 9115f40c5f55873102312085f2e328d1a2101ae4 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 13 Dec 2022 14:21:40 +0000 -Subject: [PATCH 105/151] egl_vout: Remove redundant & completely broken debug - ---- - libavdevice/egl_vout.c | 25 ------------------------- - 1 file changed, 25 deletions(-) - -diff --git a/libavdevice/egl_vout.c b/libavdevice/egl_vout.c -index a52cabb082..afc7afd13e 100644 ---- a/libavdevice/egl_vout.c -+++ b/libavdevice/egl_vout.c -@@ -515,31 +515,6 @@ static int do_display(AVFormatContext *const s, egl_display_env_t *const de, AVF - } - - da->fd = desc->objects[0].fd; -- --#if 0 -- av_log(s, AV_LOG_INFO, "%dx%d, fmt: %x, boh=%d,%d,%d,%d, pitch=%d,%d,%d,%d," -- " offset=%d,%d,%d,%d, mod=%llx,%llx,%llx,%llx\n", -- av_frame_cropped_width(frame), -- av_frame_cropped_height(frame), -- desc->layers[0].format, -- bo_plane_handles[0], -- bo_plane_handles[1], -- bo_plane_handles[2], -- bo_plane_handles[3], -- pitches[0], -- pitches[1], -- pitches[2], -- pitches[3], -- offsets[0], -- offsets[1], -- offsets[2], -- offsets[3], -- (long long)modifiers[0], -- (long long)modifiers[1], -- (long long)modifiers[2], -- (long long)modifiers[3] -- ); --#endif - } - - glClearColor(0.5, 0.5, 0.5, 0.5); - -From 34711d5a1429213b6f4cf8ad163e8e8d108626e7 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 13 Dec 2022 16:12:12 +0000 -Subject: [PATCH 106/151] v4l2m2m: Use offset from querybuf rather than always - 0 - ---- - libavcodec/v4l2_buffers.c | 4 +++- - libavcodec/v4l2_buffers.h | 3 ++- - 2 files changed, 5 insertions(+), 2 deletions(-) - -diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c -index 9ef2f40e39..5ca58ea593 100644 ---- a/libavcodec/v4l2_buffers.c -+++ b/libavcodec/v4l2_buffers.c -@@ -379,7 +379,7 @@ static uint8_t * v4l2_get_drm_frame(V4L2Buffer *avbuf) - - for (int i = 0; i < avbuf->num_planes; i++) { - layer->planes[i].object_index = i; -- layer->planes[i].offset = 0; -+ layer->planes[i].offset = avbuf->plane_info[i].offset; - layer->planes[i].pitch = avbuf->plane_info[i].bytesperline; - } - -@@ -934,6 +934,7 @@ int ff_v4l2_buffer_initialize(AVBufferRef ** pbufref, int index, V4L2Context *ct - - if (V4L2_TYPE_IS_MULTIPLANAR(ctx->type)) { - avbuf->plane_info[i].length = avbuf->buf.m.planes[i].length; -+ avbuf->plane_info[i].offset = avbuf->buf.m.planes[i].data_offset; - - if (want_mmap) - avbuf->plane_info[i].mm_addr = mmap(NULL, avbuf->buf.m.planes[i].length, -@@ -941,6 +942,7 @@ int ff_v4l2_buffer_initialize(AVBufferRef ** pbufref, int index, V4L2Context *ct - buf_to_m2mctx(avbuf)->fd, avbuf->buf.m.planes[i].m.mem_offset); - } else { - avbuf->plane_info[i].length = avbuf->buf.length; -+ avbuf->plane_info[i].offset = 0; - - if (want_mmap) - avbuf->plane_info[i].mm_addr = mmap(NULL, avbuf->buf.length, -diff --git a/libavcodec/v4l2_buffers.h b/libavcodec/v4l2_buffers.h -index 1ac32c5989..d91d5d1dd0 100644 ---- a/libavcodec/v4l2_buffers.h -+++ b/libavcodec/v4l2_buffers.h -@@ -66,7 +66,8 @@ typedef struct V4L2Buffer { - - /* keep track of the mmap address and mmap length */ - struct V4L2Plane_info { -- int bytesperline; -+ size_t bytesperline; -+ size_t offset; - void * mm_addr; - size_t length; - } plane_info[VIDEO_MAX_PLANES]; - -From 15458be3fe79c14f4fdcc2ad786508d1b647c914 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 13 Dec 2022 17:57:27 +0000 -Subject: [PATCH 107/151] v4l2m2m: Fix crash if init errors out before setting - avctx - ---- - libavcodec/v4l2_m2m.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libavcodec/v4l2_m2m.c b/libavcodec/v4l2_m2m.c -index 1e30d15fd8..ac6bae0dc3 100644 ---- a/libavcodec/v4l2_m2m.c -+++ b/libavcodec/v4l2_m2m.c -@@ -278,7 +278,7 @@ int ff_v4l2_m2m_codec_end(V4L2m2mPriv *priv) - - av_log(s->avctx, AV_LOG_DEBUG, "V4L2 Codec end\n"); - -- if (av_codec_is_decoder(s->avctx->codec)) -+ if (s->avctx && av_codec_is_decoder(s->avctx->codec)) - av_packet_unref(&s->buf_pkt); - - if (s->fd >= 0) { - -From 9f7f94c680b8aaedede9b3bcad37b645216cfcff Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 13 Dec 2022 18:10:30 +0000 -Subject: [PATCH 108/151] v4l2_buffers: Add and use ctx_to_m2mctx + error debug - ---- - libavcodec/v4l2_buffers.c | 22 +++++++++++++++------- - 1 file changed, 15 insertions(+), 7 deletions(-) - -diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c -index 5ca58ea593..e28ef2d1e8 100644 ---- a/libavcodec/v4l2_buffers.c -+++ b/libavcodec/v4l2_buffers.c -@@ -41,11 +41,16 @@ - #define USEC_PER_SEC 1000000 - static const AVRational v4l2_timebase = { 1, USEC_PER_SEC }; - -+static inline V4L2m2mContext *ctx_to_m2mctx(const V4L2Context *ctx) -+{ -+ return V4L2_TYPE_IS_OUTPUT(ctx->type) ? -+ container_of(ctx, V4L2m2mContext, output) : -+ container_of(ctx, V4L2m2mContext, capture); -+} -+ - static inline V4L2m2mContext *buf_to_m2mctx(const V4L2Buffer * const buf) - { -- return V4L2_TYPE_IS_OUTPUT(buf->context->type) ? -- container_of(buf->context, V4L2m2mContext, output) : -- container_of(buf->context, V4L2m2mContext, capture); -+ return ctx_to_m2mctx(buf->context); - } - - static inline AVCodecContext *logger(const V4L2Buffer * const buf) -@@ -883,6 +888,7 @@ int ff_v4l2_buffer_initialize(AVBufferRef ** pbufref, int index, V4L2Context *ct - int ret, i; - V4L2Buffer * const avbuf = av_mallocz(sizeof(*avbuf)); - AVBufferRef * bufref; -+ V4L2m2mContext * const s = ctx_to_m2mctx(ctx); - - *pbufref = NULL; - if (avbuf == NULL) -@@ -910,7 +916,7 @@ int ff_v4l2_buffer_initialize(AVBufferRef ** pbufref, int index, V4L2Context *ct - avbuf->buf.m.planes = avbuf->planes; - } - -- ret = ioctl(buf_to_m2mctx(avbuf)->fd, VIDIOC_QUERYBUF, &avbuf->buf); -+ ret = ioctl(s->fd, VIDIOC_QUERYBUF, &avbuf->buf); - if (ret < 0) - goto fail; - -@@ -969,10 +975,12 @@ int ff_v4l2_buffer_initialize(AVBufferRef ** pbufref, int index, V4L2Context *ct - } - - if (!V4L2_TYPE_IS_OUTPUT(ctx->type)) { -- if (buf_to_m2mctx(avbuf)->output_drm) { -+ if (s->output_drm) { - ret = v4l2_buffer_export_drm(avbuf); -- if (ret) -- goto fail; -+ if (ret) { -+ av_log(logger(avbuf), AV_LOG_ERROR, "Failed to get exported drm handles\n"); -+ goto fail; -+ } - } - } - - -From 6b8bb2c41828351cd3a6f40be353696ae36450b7 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 13 Dec 2022 18:53:22 +0000 -Subject: [PATCH 109/151] v4l2m2m: Add ability to use cma alloced dmabufs as - well as v4l2 mmap - ---- - libavcodec/Makefile | 2 +- - libavcodec/v4l2_buffers.c | 65 ++++++++++++++++++++++++++------------- - libavcodec/v4l2_buffers.h | 2 ++ - libavcodec/v4l2_m2m.c | 6 +++- - libavcodec/v4l2_m2m.h | 4 +++ - libavcodec/v4l2_m2m_dec.c | 16 ++++++++++ - 6 files changed, 71 insertions(+), 24 deletions(-) - -diff --git a/libavcodec/Makefile b/libavcodec/Makefile -index 11f183c9b9..8b1d669834 100644 ---- a/libavcodec/Makefile -+++ b/libavcodec/Makefile -@@ -170,7 +170,7 @@ OBJS-$(CONFIG_VP3DSP) += vp3dsp.o - OBJS-$(CONFIG_VP56DSP) += vp56dsp.o - OBJS-$(CONFIG_VP8DSP) += vp8dsp.o - OBJS-$(CONFIG_V4L2_M2M) += v4l2_m2m.o v4l2_context.o v4l2_buffers.o v4l2_fmt.o\ -- weak_link.o -+ weak_link.o v4l2_req_dmabufs.o - OBJS-$(CONFIG_V4L2_REQUEST) += v4l2_req_media.o v4l2_req_pollqueue.o v4l2_req_dmabufs.o\ - v4l2_req_devscan.o weak_link.o - OBJS-$(CONFIG_WMA_FREQS) += wma_freqs.o -diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c -index e28ef2d1e8..8d80d19788 100644 ---- a/libavcodec/v4l2_buffers.c -+++ b/libavcodec/v4l2_buffers.c -@@ -36,6 +36,7 @@ - #include "v4l2_context.h" - #include "v4l2_buffers.h" - #include "v4l2_m2m.h" -+#include "v4l2_req_dmabufs.h" - #include "weak_link.h" - - #define USEC_PER_SEC 1000000 -@@ -477,33 +478,46 @@ static void v4l2_free_bufref(void *opaque, uint8_t *data) - av_buffer_unref(&bufref); - } - -+static inline uint32_t ff_v4l2_buf_len(const struct v4l2_buffer * b, unsigned int i) -+{ -+ return V4L2_TYPE_IS_MULTIPLANAR(b->type) ? b->m.planes[i].length : b->length; -+} -+ - static int v4l2_buffer_export_drm(V4L2Buffer* avbuf) - { -- struct v4l2_exportbuffer expbuf; - int i, ret; -+ const V4L2m2mContext * const s = buf_to_m2mctx(avbuf); - - for (i = 0; i < avbuf->num_planes; i++) { -- memset(&expbuf, 0, sizeof(expbuf)); -- -- expbuf.index = avbuf->buf.index; -- expbuf.type = avbuf->buf.type; -- expbuf.plane = i; -+ int dma_fd = -1; -+ const uint32_t blen = ff_v4l2_buf_len(&avbuf->buf, i); -+ -+ if (s->db_ctl != NULL) { -+ if ((avbuf->dmabuf[i] = dmabuf_alloc(s->db_ctl, blen)) == NULL) -+ return AVERROR(ENOMEM); -+ dma_fd = dmabuf_fd(avbuf->dmabuf[i]); -+ if (V4L2_TYPE_IS_MULTIPLANAR(avbuf->buf.type)) -+ avbuf->buf.m.planes[i].m.fd = dma_fd; -+ else -+ avbuf->buf.m.fd = dma_fd; -+ } -+ else { -+ struct v4l2_exportbuffer expbuf; -+ memset(&expbuf, 0, sizeof(expbuf)); - -- ret = ioctl(buf_to_m2mctx(avbuf)->fd, VIDIOC_EXPBUF, &expbuf); -- if (ret < 0) -- return AVERROR(errno); -+ expbuf.index = avbuf->buf.index; -+ expbuf.type = avbuf->buf.type; -+ expbuf.plane = i; - -- if (V4L2_TYPE_IS_MULTIPLANAR(avbuf->buf.type)) { -- /* drm frame */ -- avbuf->drm_frame.objects[i].size = avbuf->buf.m.planes[i].length; -- avbuf->drm_frame.objects[i].fd = expbuf.fd; -- avbuf->drm_frame.objects[i].format_modifier = DRM_FORMAT_MOD_LINEAR; -- } else { -- /* drm frame */ -- avbuf->drm_frame.objects[0].size = avbuf->buf.length; -- avbuf->drm_frame.objects[0].fd = expbuf.fd; -- avbuf->drm_frame.objects[0].format_modifier = DRM_FORMAT_MOD_LINEAR; -+ ret = ioctl(s->fd, VIDIOC_EXPBUF, &expbuf); -+ if (ret < 0) -+ return AVERROR(errno); -+ dma_fd = expbuf.fd; - } -+ -+ avbuf->drm_frame.objects[i].size = blen; -+ avbuf->drm_frame.objects[i].fd = dma_fd; -+ avbuf->drm_frame.objects[i].format_modifier = DRM_FORMAT_MOD_LINEAR; - } - - return 0; -@@ -870,9 +884,16 @@ static void v4l2_buffer_buffer_free(void *opaque, uint8_t *data) - munmap(p->mm_addr, p->length); - } - -- for (i = 0; i != FF_ARRAY_ELEMS(avbuf->drm_frame.objects); ++i) { -- if (avbuf->drm_frame.objects[i].fd != -1) -- close(avbuf->drm_frame.objects[i].fd); -+ if (avbuf->dmabuf[0] == NULL) { -+ for (i = 0; i != FF_ARRAY_ELEMS(avbuf->drm_frame.objects); ++i) { -+ if (avbuf->drm_frame.objects[i].fd != -1) -+ close(avbuf->drm_frame.objects[i].fd); -+ } -+ } -+ else { -+ for (i = 0; i != FF_ARRAY_ELEMS(avbuf->dmabuf); ++i) { -+ dmabuf_free(avbuf->dmabuf[i]); -+ } - } - - av_buffer_unref(&avbuf->ref_buf); -diff --git a/libavcodec/v4l2_buffers.h b/libavcodec/v4l2_buffers.h -index d91d5d1dd0..444ad94b14 100644 ---- a/libavcodec/v4l2_buffers.h -+++ b/libavcodec/v4l2_buffers.h -@@ -46,6 +46,7 @@ enum V4L2Buffer_status { - */ - struct V4L2Context; - struct ff_weak_link_client; -+struct dmabuf_h; - - typedef struct V4L2Buffer { - /* each buffer needs to have a reference to its context -@@ -80,6 +81,7 @@ typedef struct V4L2Buffer { - - enum V4L2Buffer_status status; - -+ struct dmabuf_h * dmabuf[VIDEO_MAX_PLANES]; // If externally alloced dmabufs - stash other info here - } V4L2Buffer; - - /** -diff --git a/libavcodec/v4l2_m2m.c b/libavcodec/v4l2_m2m.c -index ac6bae0dc3..f802687b1b 100644 ---- a/libavcodec/v4l2_m2m.c -+++ b/libavcodec/v4l2_m2m.c -@@ -34,6 +34,7 @@ - #include "v4l2_context.h" - #include "v4l2_fmt.h" - #include "v4l2_m2m.h" -+#include "v4l2_req_dmabufs.h" - - static void - xlat_init(xlat_track_t * const x) -@@ -75,7 +76,7 @@ static int v4l2_prepare_contexts(V4L2m2mContext *s, int probe) - - s->capture.done = s->output.done = 0; - s->capture.name = "capture"; -- s->capture.buf_mem = V4L2_MEMORY_MMAP; -+ s->capture.buf_mem = s->db_ctl != NULL ? V4L2_MEMORY_DMABUF : V4L2_MEMORY_MMAP; - s->output.name = "output"; - s->output.buf_mem = s->input_drm ? V4L2_MEMORY_DMABUF : V4L2_MEMORY_MMAP; - atomic_init(&s->refcount, 0); -@@ -94,12 +95,14 @@ static int v4l2_prepare_contexts(V4L2m2mContext *s, int probe) - if (v4l2_mplane_video(&cap)) { - s->capture.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; - s->output.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE; -+ s->output.format.type = s->output.type; - return 0; - } - - if (v4l2_splane_video(&cap)) { - s->capture.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - s->output.type = V4L2_BUF_TYPE_VIDEO_OUTPUT; -+ s->output.format.type = s->output.type; - return 0; - } - -@@ -293,6 +296,7 @@ int ff_v4l2_m2m_codec_end(V4L2m2mPriv *priv) - - ff_v4l2_context_release(&s->output); - -+ dmabufs_ctl_unref(&s->db_ctl); - close(s->fd); - s->fd = -1; - -diff --git a/libavcodec/v4l2_m2m.h b/libavcodec/v4l2_m2m.h -index 26a7161042..0f41f94694 100644 ---- a/libavcodec/v4l2_m2m.h -+++ b/libavcodec/v4l2_m2m.h -@@ -71,6 +71,8 @@ typedef struct xlat_track_s { - V4L2m2mTrackEl track_els[FF_V4L2_M2M_TRACK_SIZE]; - } xlat_track_t; - -+struct dmabufs_ctl; -+ - typedef struct V4L2m2mContext { - char devname[PATH_MAX]; - int fd; -@@ -124,6 +126,7 @@ typedef struct V4L2m2mContext { - /* Quirks */ - unsigned int quirks; - -+ struct dmabufs_ctl * db_ctl; - } V4L2m2mContext; - - typedef struct V4L2m2mPriv { -@@ -134,6 +137,7 @@ typedef struct V4L2m2mPriv { - - int num_output_buffers; - int num_capture_buffers; -+ const char * dmabuf_alloc; - enum AVPixelFormat pix_fmt; - } V4L2m2mPriv; - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 47b2735f82..4d17057298 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -41,6 +41,7 @@ - #include "v4l2_context.h" - #include "v4l2_m2m.h" - #include "v4l2_fmt.h" -+#include "v4l2_req_dmabufs.h" - - // Pick 64 for max last count - that is >1sec at 60fps - #define STATS_LAST_COUNT_MAX 64 -@@ -896,6 +897,20 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - s->output_drm = 0; - } - -+ s->db_ctl = NULL; -+ if (priv->dmabuf_alloc != NULL && strcmp(priv->dmabuf_alloc, "v4l2") != 0) { -+ if (strcmp(priv->dmabuf_alloc, "cma") == 0) -+ s->db_ctl = dmabufs_ctl_new(); -+ else { -+ av_log(avctx, AV_LOG_ERROR, "Unknown dmabuf alloc method: '%s'\n", priv->dmabuf_alloc); -+ return AVERROR(EINVAL); -+ } -+ if (!s->db_ctl) { -+ av_log(avctx, AV_LOG_ERROR, "Can't open dmabuf provider '%s'\n", priv->dmabuf_alloc); -+ return AVERROR(ENOMEM); -+ } -+ } -+ - s->device_ref = av_hwdevice_ctx_alloc(AV_HWDEVICE_TYPE_DRM); - if (!s->device_ref) { - ret = AVERROR(ENOMEM); -@@ -1000,6 +1015,7 @@ static const AVOption options[] = { - { "num_capture_buffers", "Number of buffers in the capture context", - OFFSET(num_capture_buffers), AV_OPT_TYPE_INT, {.i64 = 20}, 2, INT_MAX, FLAGS }, - { "pixel_format", "Pixel format to be used by the decoder", OFFSET(pix_fmt), AV_OPT_TYPE_PIXEL_FMT, {.i64 = AV_PIX_FMT_NONE}, AV_PIX_FMT_NONE, AV_PIX_FMT_NB, FLAGS }, -+ { "dmabuf_alloc", "Dmabuf alloc method", OFFSET(dmabuf_alloc), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, FLAGS }, - { NULL}, - }; - - -From 499bcdc4ed82c737ceab166a07b46e8ed8ccbc88 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 13 Dec 2022 19:05:47 +0000 -Subject: [PATCH 110/151] testfilt: Skeleton of hw filter test code - ---- - pi-util/testfilt.py | 83 +++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 83 insertions(+) - create mode 100755 pi-util/testfilt.py - -diff --git a/pi-util/testfilt.py b/pi-util/testfilt.py -new file mode 100755 -index 0000000000..b322dac0c2 ---- /dev/null -+++ b/pi-util/testfilt.py -@@ -0,0 +1,83 @@ -+#!/usr/bin/env python3 -+ -+import string -+import os -+import subprocess -+import re -+import argparse -+import sys -+import csv -+from stat import * -+ -+class validator: -+ def __init__(self): -+ self.ok = False -+ -+ def isok(self): -+ return self.ok -+ -+ def setok(self): -+ self.ok = True -+ -+class valid_regex(validator): -+ def __init__(self, regex): -+ super().__init__() -+ self.regex = re.compile(regex) -+ -+ def scanline(self, line): -+ if self.isok() or self.regex.search(line): -+ self.setok() -+ -+ -+def validate(validators, flog): -+ for line in flog: -+ for v in validators: -+ v.scanline(line) -+ -+ ok = True -+ for v in validators: -+ if not v.isok(): -+ ok = False -+ # complain -+ print("Test failed") -+ -+ if ok: -+ print("OK") -+ return ok -+ -+def runtest(name, ffmpeg, args, suffix, validators): -+ log_root = os.path.join("/tmp", "testfilt", name) -+ ofilename = os.path.join(log_root, name + suffix) -+ -+ if not os.path.exists(log_root): -+ os.makedirs(log_root) -+ -+ try: -+ os.remove(ofilename) -+ except: -+ pass -+ -+ flog = open(os.path.join(log_root, name + ".log"), "wb") -+ ffargs = [ffmpeg] + args + [ofilename] -+ -+ subprocess.call(ffargs, stdout=flog, stderr=subprocess.STDOUT, text=False) -+ flog.close -+ -+ flog = open(os.path.join(log_root, name + ".log"), "rt") -+ return validate(validators, flog) -+ -+def sayok(log_root, flog): -+ print("Woohoo") -+ return True -+ -+if __name__ == '__main__': -+ -+ argp = argparse.ArgumentParser(description="FFmpeg filter tester") -+ argp.add_argument("--ffmpeg", default="./ffmpeg", help="ffmpeg exec name") -+ args = argp.parse_args() -+ -+ runtest("ATest", args.ffmpeg, ["-v", "verbose", "-no_cvt_hw", "-an", "-c:v", "h264_v4l2m2m", "-i", -+ "/home/johncox/server/TestMedia/Sony/jellyfish-10-mbps-hd-h264.mkv", -+# "/home/jc/rpi/streams/jellyfish-3-mbps-hd-h264.mkv", -+ "-c:v", "h264_v4l2m2m", "-b:v", "2M"], ".mkv", -+ [valid_regex(r'Output stream #0:0 \(video\): 900 frames encoded; 900 packets muxed')]) - -From 50ac318a472fd98e1e58605316ea6a2e8cde0a04 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 5 Jan 2023 14:39:30 +0000 -Subject: [PATCH 111/151] pixfmt: Add a #define to indicate presence of SAND - formats - ---- - libavutil/pixfmt.h | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h -index 22f70007c3..5cc780e7d5 100644 ---- a/libavutil/pixfmt.h -+++ b/libavutil/pixfmt.h -@@ -378,6 +378,8 @@ enum AVPixelFormat { - AV_PIX_FMT_Y210BE, ///< packed YUV 4:2:2 like YUYV422, 20bpp, data in the high bits, big-endian - AV_PIX_FMT_Y210LE, ///< packed YUV 4:2:2 like YUYV422, 20bpp, data in the high bits, little-endian - // RPI - not on ifdef so can be got at by calling progs -+// #define so code that uses this can know it is there -+#define AVUTIL_HAVE_PIX_FMT_SAND 1 - AV_PIX_FMT_SAND128, ///< 4:2:0 8-bit 128x*Y stripe, 64x*UV stripe, then next x stripe, mysterious padding - AV_PIX_FMT_SAND64_10, ///< 4:2:0 10-bit 64x*Y stripe, 32x*UV stripe, then next x stripe, mysterious padding - AV_PIX_FMT_SAND64_16, ///< 4:2:0 16-bit 64x*Y stripe, 32x*UV stripe, then next x stripe, mysterious padding - -From 23a3132e094d449ea05657704c0cffc3f0762c28 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 11 Jan 2023 16:30:37 +0000 -Subject: [PATCH 112/151] v4l2_m2m_dec: Fix initial pkt send if no extradata - ---- - libavcodec/v4l2_m2m_dec.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 4d17057298..9daf05adfe 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -240,7 +240,7 @@ copy_extradata(AVCodecContext * const avctx, - else - len = src_len < 0 ? AVERROR(EINVAL) : src_len; - -- // Zero length is OK but we swant to stop - -ve is error val -+ // Zero length is OK but we want to stop - -ve is error val - if (len <= 0) - return len; - -@@ -525,7 +525,7 @@ static int try_enqueue_src(AVCodecContext * const avctx, V4L2m2mContext * const - - if (s->extdata_sent) - ret = ff_v4l2_context_enqueue_packet(&s->output, &s->buf_pkt, NULL, 0); -- else if (s->extdata_data) -+ else - ret = ff_v4l2_context_enqueue_packet(&s->output, &s->buf_pkt, s->extdata_data, s->extdata_size); - - if (ret == AVERROR(EAGAIN)) { - -From f4f6b9f1af137153e574c704804033e83f2ed1a8 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 16 Jan 2023 16:05:09 +0000 -Subject: [PATCH 113/151] v4l2m2m_dec: Make capture timeout long once pending - count > 31 - -For some applications (ffmpeg command line) the current heuristic of adding -a short timeout and preferring DQ over Q once we think we have buffers -Qed in V4L2 is insufficient to prevent arbitrary buffer growth. -Unfortunately the current method of guessing the number of Qed buffers isn't -reliable enough to allow for a long timeout with only a few few buffers -believed pending so only do so once the number of buffers believed pending -exceeds plausible inaccuracies caused by buffer reordering. - -The limit could be optimised by codec or apparent latency but a simple -number should reduce the unexpected consequences. ---- - libavcodec/v4l2_m2m.h | 3 ++- - libavcodec/v4l2_m2m_dec.c | 18 ++++++++++++++---- - 2 files changed, 16 insertions(+), 5 deletions(-) - -diff --git a/libavcodec/v4l2_m2m.h b/libavcodec/v4l2_m2m.h -index 0f41f94694..ded1478a49 100644 ---- a/libavcodec/v4l2_m2m.h -+++ b/libavcodec/v4l2_m2m.h -@@ -66,7 +66,7 @@ typedef struct pts_stats_s - - typedef struct xlat_track_s { - unsigned int track_no; -- int64_t last_pts; -+ int64_t last_pts; // Last valid PTS decoded - int64_t last_opaque; - V4L2m2mTrackEl track_els[FF_V4L2_M2M_TRACK_SIZE]; - } xlat_track_t; -@@ -88,6 +88,7 @@ typedef struct V4L2m2mContext { - - /* null frame/packet received */ - int draining; -+ int running; - AVPacket buf_pkt; - - /* Reference to a frame. Only used during encoding */ -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 9daf05adfe..c8ab883d7e 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -582,7 +582,7 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - - do { - const int pending = xlat_pending(&s->xlat); -- const int prefer_dq = (pending > 3); -+ const int prefer_dq = (pending > 4); - const int last_src_rv = src_rv; - - av_log(avctx, AV_LOG_TRACE, "Pending=%d, src_rv=%d, req_pkt=%d\n", pending, src_rv, s->req_pkt); -@@ -611,10 +611,14 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - // (b) enqueue returned a status indicating that decode should be attempted - if (dst_rv != 0 && TRY_DQ(src_rv)) { - // Pick a timeout depending on state -+ // The pending count isn't completely reliable so it is good enough -+ // hint that we want a frame but not good enough to require it in -+ // all cases; however if it has got > 31 that exceeds its margin of -+ // error so require a frame to prevent ridiculous levels of latency - const int t = - src_rv == NQ_Q_FULL ? -1 : - src_rv == NQ_DRAINING ? 300 : -- prefer_dq ? 5 : 0; -+ prefer_dq ? (s->running && pending > 31 ? 100 : 5) : 0; - - // Dequeue frame will unref any previous contents of frame - // if it returns success so we don't need an explicit unref -@@ -631,8 +635,13 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - } - } - -- if (dst_rv == 0) -+ if (dst_rv == 0) { - set_best_effort_pts(avctx, &s->pts_stat, frame); -+ if (!s->running) { -+ s->running = 1; -+ av_log(avctx, AV_LOG_VERBOSE, "Decode running\n"); -+ } -+ } - - if (dst_rv == AVERROR(EAGAIN) && src_rv == NQ_DRAINING) { - av_log(avctx, AV_LOG_WARNING, "Timeout in drain - assume EOF"); -@@ -998,7 +1007,8 @@ static void v4l2_decode_flush(AVCodecContext *avctx) - - // resend extradata - s->extdata_sent = 0; -- // clear EOS status vars -+ // clear status vars -+ s->running = 0; - s->draining = 0; - output->done = 0; - capture->done = 0; - -From 39f49cdaefa4483914f703c3f352c8894b3b81fd Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 6 Feb 2023 19:23:16 +0000 -Subject: [PATCH 114/151] Initial buffersink alloc callback code - -(cherry picked from commit dde8d3c8f3cc279b9b92ed4f10a2e3990f4aadeb) ---- - libavfilter/buffersink.c | 44 ++++++++++++++++++++++++++++++++++++++++ - libavfilter/buffersink.h | 3 +++ - 2 files changed, 47 insertions(+) - -diff --git a/libavfilter/buffersink.c b/libavfilter/buffersink.c -index 306c283f77..d3c82aabf3 100644 ---- a/libavfilter/buffersink.c -+++ b/libavfilter/buffersink.c -@@ -62,6 +62,11 @@ typedef struct BufferSinkContext { - int sample_rates_size; - - AVFrame *peeked_frame; -+ -+ union { -+ av_buffersink_alloc_video_frame * video; -+ } alloc_cb; -+ void * alloc_v; - } BufferSinkContext; - - #define NB_ITEMS(list) (list ## _size / sizeof(*list)) -@@ -154,6 +159,44 @@ int attribute_align_arg av_buffersink_get_samples(AVFilterContext *ctx, - return get_frame_internal(ctx, frame, 0, nb_samples); - } - -+static AVFrame * alloc_video_buffer(AVFilterLink *link, int w, int h) -+{ -+ AVFilterContext * const ctx = link->dst; -+ BufferSinkContext * const bs = ctx->priv; -+ return bs->alloc_cb.video ? bs->alloc_cb.video(ctx, bs->alloc_v, w, h) : -+ ff_default_get_video_buffer(link, w, h); -+} -+ -+int av_buffersink_set_alloc_video_frame(AVFilterContext *ctx, av_buffersink_alloc_video_frame * cb, void * v) -+{ -+ BufferSinkContext * const bs = ctx->priv; -+ bs->alloc_cb.video = cb; -+ bs->alloc_v = v; -+ return 0; -+} -+ -+#if FF_API_BUFFERSINK_ALLOC -+AVBufferSinkParams *av_buffersink_params_alloc(void) -+{ -+ static const int pixel_fmts[] = { AV_PIX_FMT_NONE }; -+ AVBufferSinkParams *params = av_malloc(sizeof(AVBufferSinkParams)); -+ if (!params) -+ return NULL; -+ -+ params->pixel_fmts = pixel_fmts; -+ return params; -+} -+ -+AVABufferSinkParams *av_abuffersink_params_alloc(void) -+{ -+ AVABufferSinkParams *params = av_mallocz(sizeof(AVABufferSinkParams)); -+ -+ if (!params) -+ return NULL; -+ return params; -+} -+#endif -+ - static av_cold int common_init(AVFilterContext *ctx) - { - BufferSinkContext *buf = ctx->priv; -@@ -381,6 +424,7 @@ static const AVFilterPad avfilter_vsink_buffer_inputs[] = { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, -+ .get_buffer = {.video = alloc_video_buffer}, - }, - }; - -diff --git a/libavfilter/buffersink.h b/libavfilter/buffersink.h -index 64e08de53e..09737d322f 100644 ---- a/libavfilter/buffersink.h -+++ b/libavfilter/buffersink.h -@@ -166,6 +166,9 @@ int av_buffersink_get_frame(AVFilterContext *ctx, AVFrame *frame); - */ - int av_buffersink_get_samples(AVFilterContext *ctx, AVFrame *frame, int nb_samples); - -+typedef AVFrame * av_buffersink_alloc_video_frame(AVFilterContext * ctx, void * v, int w, int h); -+int av_buffersink_set_alloc_video_frame(AVFilterContext *ctx, av_buffersink_alloc_video_frame * cb, void * v); -+ - /** - * @} - */ - -From a63ae21e74ae48f1aedac53c18142b7596d041ad Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 30 Jan 2023 17:23:12 +0000 -Subject: [PATCH 115/151] v4l2_m2m_dec: Add a profile check - -Check the profile in avctx aginst what the v4l2 driver advertises. If -the driver doesn't support the check then just accept anything. - -(cherry picked from commit 6dd83dead9ebce419fdea152db0c9f5e9a94e9ef) ---- - libavcodec/v4l2_m2m_dec.c | 125 ++++++++++++++++++++++++++++++++++++++ - 1 file changed, 125 insertions(+) - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index c8ab883d7e..098adf4821 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -715,6 +715,127 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - } - #endif - -+static uint32_t -+avprofile_to_v4l2(const enum AVCodecID codec_id, const int avprofile) -+{ -+ switch (codec_id) { -+ case AV_CODEC_ID_H264: -+ switch (avprofile) { -+ case FF_PROFILE_H264_BASELINE: -+ return V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE; -+ case FF_PROFILE_H264_CONSTRAINED_BASELINE: -+ return V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE; -+ case FF_PROFILE_H264_MAIN: -+ return V4L2_MPEG_VIDEO_H264_PROFILE_MAIN; -+ case FF_PROFILE_H264_EXTENDED: -+ return V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED; -+ case FF_PROFILE_H264_HIGH: -+ return V4L2_MPEG_VIDEO_H264_PROFILE_HIGH; -+ case FF_PROFILE_H264_HIGH_10: -+ return V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10; -+ case FF_PROFILE_H264_HIGH_10_INTRA: -+ return V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10_INTRA; -+ case FF_PROFILE_H264_MULTIVIEW_HIGH: -+ case FF_PROFILE_H264_HIGH_422: -+ return V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422; -+ case FF_PROFILE_H264_HIGH_422_INTRA: -+ return V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422_INTRA; -+ case FF_PROFILE_H264_STEREO_HIGH: -+ return V4L2_MPEG_VIDEO_H264_PROFILE_STEREO_HIGH; -+ case FF_PROFILE_H264_HIGH_444_PREDICTIVE: -+ return V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE; -+ case FF_PROFILE_H264_HIGH_444_INTRA: -+ return V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_INTRA; -+ case FF_PROFILE_H264_CAVLC_444: -+ return V4L2_MPEG_VIDEO_H264_PROFILE_CAVLC_444_INTRA; -+ case FF_PROFILE_H264_HIGH_444: -+ default: -+ break; -+// V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_BASELINE = 12, -+// V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH = 13, -+// V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH_INTRA = 14, -+// V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH = 16, -+// V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH = 17, -+ } -+ break; -+ case AV_CODEC_ID_MPEG2VIDEO: -+ case AV_CODEC_ID_MPEG4: -+ case AV_CODEC_ID_VC1: -+ case AV_CODEC_ID_VP8: -+ case AV_CODEC_ID_VP9: -+ case AV_CODEC_ID_AV1: -+ // Most profiles are a simple number that matches the V4L2 enum -+ return avprofile; -+ default: -+ break; -+ } -+ return ~(uint32_t)0; -+} -+ -+// This check mirrors Chrome's profile check by testing to see if the profile -+// exists as a possible value for the V4L2 profile control -+static int -+check_profile(AVCodecContext *const avctx, V4L2m2mContext *const s) -+{ -+ struct v4l2_queryctrl query_ctrl; -+ struct v4l2_querymenu query_menu; -+ uint32_t profile_id; -+ -+ // An unset profile is almost certainly zero or -99 - do not reject -+ if (avctx->profile <= 0) { -+ av_log(avctx, AV_LOG_VERBOSE, "Profile <= 0 - check skipped\n"); -+ return 0; -+ } -+ -+ memset(&query_ctrl, 0, sizeof(query_ctrl)); -+ switch (avctx->codec_id) { -+ case AV_CODEC_ID_MPEG2VIDEO: -+ profile_id = V4L2_CID_MPEG_VIDEO_MPEG2_PROFILE; -+ break; -+ case AV_CODEC_ID_MPEG4: -+ profile_id = V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE; -+ break; -+ case AV_CODEC_ID_H264: -+ profile_id = V4L2_CID_MPEG_VIDEO_H264_PROFILE; -+ break; -+ case AV_CODEC_ID_VP8: -+ profile_id = V4L2_CID_MPEG_VIDEO_VP8_PROFILE; -+ break; -+ case AV_CODEC_ID_VP9: -+ profile_id = V4L2_CID_MPEG_VIDEO_VP9_PROFILE; -+ break; -+#ifdef V4L2_CID_MPEG_VIDEO_AV1_PROFILE -+ case AV_CODEC_ID_AV1: -+ profile_id = V4L2_CID_MPEG_VIDEO_AV1_PROFILE; -+ break; -+#endif -+ default: -+ av_log(avctx, AV_LOG_VERBOSE, "Can't map profile for codec id %d; profile check skipped\n", avctx->codec_id); -+ return 0; -+ } -+ -+ query_ctrl = (struct v4l2_queryctrl){.id = profile_id}; -+ if (ioctl(s->fd, VIDIOC_QUERYCTRL, &query_ctrl) != 0) { -+ av_log(avctx, AV_LOG_VERBOSE, "Query profile ctrl (%#x) not supported: assume OK\n", query_ctrl.id); -+ } -+ else { -+ av_log(avctx, AV_LOG_DEBUG, "%s: Control supported: %#x\n", __func__, query_ctrl.id); -+ -+ query_menu = (struct v4l2_querymenu){ -+ .id = query_ctrl.id, -+ .index = avprofile_to_v4l2(avctx->codec_id, avctx->profile), -+ }; -+ -+ if (query_menu.index > query_ctrl.maximum || -+ query_menu.index < query_ctrl.minimum || -+ ioctl(s->fd, VIDIOC_QUERYMENU, &query_menu) != 0) { -+ return AVERROR(ENOENT); -+ } -+ } -+ -+ return 0; -+}; -+ - static int - check_size(AVCodecContext * const avctx, V4L2m2mContext * const s) - { -@@ -955,6 +1076,10 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - if ((ret = check_size(avctx, s)) != 0) - return ret; - -+ if ((ret = check_profile(avctx, s)) != 0) { -+ av_log(avctx, AV_LOG_WARNING, "Profile %d not supported by decode\n", avctx->profile); -+ return ret; -+ } - return 0; - } - - -From f734a6ead04a8381fccfae53066866a02a9516d2 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 1 Feb 2023 17:24:39 +0000 -Subject: [PATCH 116/151] v4l2_m2m_dec: Add extradata parse for h264 & hevc - -If we have extradata we can extract profile & level and potentailly -other useful info from it. Use the codec parser to get it if the decoder -is configured. - -(cherry picked from commit 6d431e79adeb246c2ed8cebce9011d81175a3906) ---- - libavcodec/v4l2_m2m_dec.c | 84 ++++++++++++++++++++++++++++++++++++++- - 1 file changed, 83 insertions(+), 1 deletion(-) - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 098adf4821..e64bc707d3 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -21,6 +21,8 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -+#include "config.h" -+ - #include - #include - -@@ -43,6 +45,13 @@ - #include "v4l2_fmt.h" - #include "v4l2_req_dmabufs.h" - -+#if CONFIG_H264_DECODER -+#include "h264_parse.h" -+#endif -+#if CONFIG_HEVC_DECODER -+#include "hevc_parse.h" -+#endif -+ - // Pick 64 for max last count - that is >1sec at 60fps - #define STATS_LAST_COUNT_MAX 64 - #define STATS_INTERVAL_MAX (1 << 30) -@@ -956,6 +965,78 @@ static uint32_t max_coded_size(const AVCodecContext * const avctx) - return size + (1 << 16); - } - -+static void -+parse_extradata(AVCodecContext *avctx) -+{ -+ if (!avctx->extradata || !avctx->extradata_size) -+ return; -+ -+ switch (avctx->codec_id) { -+#if CONFIG_H264_DECODER -+ case AV_CODEC_ID_H264: -+ { -+ H264ParamSets ps = {{NULL}}; -+ int is_avc = 0; -+ int nal_length_size = 0; -+ int ret; -+ -+ ret = ff_h264_decode_extradata(avctx->extradata, avctx->extradata_size, -+ &ps, &is_avc, &nal_length_size, -+ avctx->err_recognition, avctx); -+ if (ret > 0) { -+ const SPS * sps = NULL; -+ unsigned int i; -+ for (i = 0; i != MAX_SPS_COUNT; ++i) { -+ if (ps.sps_list[i]) { -+ sps = (const SPS *)ps.sps_list[i]->data; -+ break; -+ } -+ } -+ if (sps) { -+ avctx->profile = ff_h264_get_profile(sps); -+ avctx->level = sps->level_idc; -+ } -+ } -+ ff_h264_ps_uninit(&ps); -+ break; -+ } -+#endif -+#if CONFIG_HEVC_DECODER -+ case AV_CODEC_ID_HEVC: -+ { -+ HEVCParamSets ps = {{NULL}}; -+ HEVCSEI sei = {{{{0}}}}; -+ int is_nalff = 0; -+ int nal_length_size = 0; -+ int ret; -+ -+ ret = ff_hevc_decode_extradata(avctx->extradata, avctx->extradata_size, -+ &ps, &sei, &is_nalff, &nal_length_size, -+ avctx->err_recognition, 0, avctx); -+ if (ret > 0) { -+ const HEVCSPS * sps = NULL; -+ unsigned int i; -+ for (i = 0; i != HEVC_MAX_SPS_COUNT; ++i) { -+ if (ps.sps_list[i]) { -+ sps = (const HEVCSPS *)ps.sps_list[i]->data; -+ break; -+ } -+ } -+ if (sps) { -+ avctx->profile = sps->ptl.general_ptl.profile_idc; -+ avctx->level = sps->ptl.general_ptl.level_idc; -+ } -+ } -+ ff_hevc_ps_uninit(&ps); -+ ff_hevc_reset_sei(&sei); -+ break; -+ } -+#endif -+ default: -+ break; -+ } -+} -+ - static av_cold int v4l2_decode_init(AVCodecContext *avctx) - { - V4L2Context *capture, *output; -@@ -976,7 +1057,8 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - avctx->ticks_per_frame = 2; - } - -- av_log(avctx, AV_LOG_INFO, "level=%d\n", avctx->level); -+ parse_extradata(avctx); -+ - ret = ff_v4l2_m2m_create_context(priv, &s); - if (ret < 0) - return ret; - -From e28421e397743a94f5e37327ad234f59b6ae613d Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 20 Mar 2023 18:12:51 +0000 -Subject: [PATCH 117/151] clean_usr_libs: Now wipes the include files too - -When swapping ffmpeg versions obsolete makefiles could confuse -configure utilities. ---- - pi-util/clean_usr_libs.sh | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - -diff --git a/pi-util/clean_usr_libs.sh b/pi-util/clean_usr_libs.sh -index b3b2d5509d..01bd6a6a22 100755 ---- a/pi-util/clean_usr_libs.sh -+++ b/pi-util/clean_usr_libs.sh -@@ -1,4 +1,20 @@ - set -e -+U=/usr/include/arm-jelos-linux-gnueabihf -+rm -rf $U/libavcodec -+rm -rf $U/libavdevice -+rm -rf $U/libavfilter -+rm -rf $U/libavformat -+rm -rf $U/libavutil -+rm -rf $U/libswresample -+rm -rf $U/libswscale -+U=/usr/include/aarch64-jelos-linux-gnu -+rm -rf $U/libavcodec -+rm -rf $U/libavdevice -+rm -rf $U/libavfilter -+rm -rf $U/libavformat -+rm -rf $U/libavutil -+rm -rf $U/libswresample -+rm -rf $U/libswscale - U=/usr/lib/arm-jelos-linux-gnueabihf - rm -f $U/libavcodec.* - rm -f $U/libavdevice.* - -From dcabd30310b88b45359609bac27d5d0f9bbc6dc1 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 20 Mar 2023 18:15:08 +0000 -Subject: [PATCH 118/151] vulkan: Add missing decode extension defines - -When building on bookworm the video decode extension names -were missing. This adds them. I expect this patch will be -obsolete shortly but it solves a current problem. ---- - libavutil/hwcontext_vulkan.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c -index 2a9b5f4aac..11e7945f18 100644 ---- a/libavutil/hwcontext_vulkan.c -+++ b/libavutil/hwcontext_vulkan.c -@@ -57,6 +57,14 @@ - #define CHECK_CU(x) FF_CUDA_CHECK_DL(cuda_cu, cu, x) - #endif - -+// Sometimes missing definitions -+#ifndef VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME -+#define VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME "VK_EXT_video_decode_h264" -+#endif -+#ifndef VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME -+#define VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME "VK_EXT_video_decode_h265" -+#endif -+ - typedef struct VulkanQueueCtx { - VkFence fence; - VkQueue queue; - -From 0231c208843a5badc799590eb5b9de907d1c26b2 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 21 Mar 2023 14:20:05 +0000 -Subject: [PATCH 119/151] v4l2_m2m_dec: Fix config file for finding if decoder - enabled - -Fixes parsing of extradata for profile testing. 5.x changed where that -info is defined. ---- - libavcodec/v4l2_m2m_dec.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index e64bc707d3..91136f03da 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -21,7 +21,7 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - --#include "config.h" -+#include "config_components.h" - - #include - #include - -From 822baefed69372b3380144ab44226e2c6ad3e298 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 21 Mar 2023 14:23:20 +0000 -Subject: [PATCH 120/151] v4l2_m2m_dec: Display profile given if skipped in - debug - ---- - libavcodec/v4l2_m2m_dec.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 91136f03da..d124c7b1fc 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -792,7 +792,7 @@ check_profile(AVCodecContext *const avctx, V4L2m2mContext *const s) - - // An unset profile is almost certainly zero or -99 - do not reject - if (avctx->profile <= 0) { -- av_log(avctx, AV_LOG_VERBOSE, "Profile <= 0 - check skipped\n"); -+ av_log(avctx, AV_LOG_VERBOSE, "Profile %d <= 0 - check skipped\n", avctx->profile); - return 0; - } - - -From 6859fc2a8791c0fcc25851b77fed15a691ceb332 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 22 Mar 2023 16:08:08 +0000 -Subject: [PATCH 121/151] conf_native: Fix for 64-bit kernel with 32-bit - userspace - -(cherry picked from commit 5bb1e09cea95b4215c6904b9b1a726e83bc5d327) ---- - pi-util/conf_native.sh | 32 +++++++++++++++++++++----------- - 1 file changed, 21 insertions(+), 11 deletions(-) - -diff --git a/pi-util/conf_native.sh b/pi-util/conf_native.sh -index 082d9b5832..0a7d230f1b 100755 ---- a/pi-util/conf_native.sh -+++ b/pi-util/conf_native.sh -@@ -33,18 +33,28 @@ RPI_LIBDIRS= - RPI_DEFINES= - RPI_EXTRALIBS= - --if [ "$MC" == "arm64" ]; then -- echo "M/C aarch64" -- A=aarch64-jelos-linux-gnu -- B=arm64 --elif [ "$MC" == "armhf" ]; then -- echo "M/C armv7" -- A=arm-jelos-linux-gnueabihf -- B=armv7 -- MCOPTS="--arch=armv6t2 --cpu=cortex-a7" -- RPI_DEFINES=-mfpu=neon-vfpv4 -+# uname -m gives kernel type which may not have the same -+# 32/64bitness as userspace :-( getconf shoudl provide the answer -+# but use uname to check we are on the right processor -+MC=`uname -m` -+LB=`getconf LONG_BIT` -+if [ "$MC" == "armv7l" ] || [ "$MC" == "aarch64" ]; then -+ if [ "$LB" == "32" ]; then -+ echo "M/C armv7" -+ A=arm-jelos-linux-gnueabihf -+ B=armv7 -+ MCOPTS="--arch=armv6t2 --cpu=cortex-a7" -+ RPI_DEFINES=-mfpu=neon-vfpv4 -+ elif [ "$LB" == "64" ]; then -+ echo "M/C aarch64" -+ A=aarch64-jelos-linux-gnu -+ B=arm64 -+ else -+ echo "Unknown LONG_BIT name: $LB" -+ exit 1 -+ fi - else -- echo Unexpected architecture $MC -+ echo "Unknown machine name: $MC" - exit 1 - fi - - -From c35f074854a922c0c025159ddddd1abfc562a3d2 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 20 Apr 2023 11:48:25 +0000 -Subject: [PATCH 122/151] conf_native: Add install prefix variation - -(cherry picked from commit 73c3019b534cb8f4b4e4c21995653f6ce440086d) ---- - pi-util/BUILD.txt | 32 ++++++++++++++++++++------------ - pi-util/conf_native.sh | 14 ++++++++++++-- - 2 files changed, 32 insertions(+), 14 deletions(-) - -diff --git a/pi-util/BUILD.txt b/pi-util/BUILD.txt -index b050971f63..2b62d660c0 100644 ---- a/pi-util/BUILD.txt -+++ b/pi-util/BUILD.txt -@@ -24,6 +24,8 @@ There are a few choices here - paths being confused and therefore running the wrong code, Shared - is what is needed, in most cases, when building for use by other - programs. -+ --usr Set install dir to /usr (i.e. system default) rather than in -+ /install - - So for a static build - --------------------- -@@ -37,23 +39,29 @@ You can now run ffmpeg directly from where it was built - For a shared build - ------------------ - --$ pi-util/conf_native.sh -- --You will normally want an install target if shared. Note that the script has --set this up to be generated in out//install, you don't have to worry --about overwriting your system libs. -+There are two choices here - -+$ pi-util/conf_native.sh - $ make -j8 -C out/ install - --You can now set LD_LIBRARY_PATH appropriately and run ffmpeg from where it was --built or install the image on the system - you have to be careful to get rid --of all other ffmpeg libs or confusion may result. There is a little script --that wipes all other versions - obviously use with care! -+This sets the install prefix to /install and is probably what you -+want if you don't want to overwrite the system files. - --$ sudo pi-util/clean_usr_libs.sh -+You can now set LD_LIBRARY_PATH appropriately and run ffmpeg from where it was -+built. You can copy the contents of /install to /usr and that mostly -+works. The only downside is that paths in pkgconfig end up being set to the -+install directory in your build directory which may be less than ideal when -+building other packages. - --Then simply copying from the install to /usr works -+The alternative if you just want to replace the system libs is: - --$ sudo cp -r out//install/* /usr -+$ pi-util/conf_native.sh --usr -+$ make -j8 -C out/ -+$ sudo pi-util/clean_usr_libs.sh -+$ sudo make -j8 -C out/ install - -+The clean_usr_libs.sh step wipes any existing libs & includes (for all -+architectures) from the system which helps avoid confusion when running other -+progs as you can be sure you're not running old code which is unfortunately -+easy to do otherwise. - -diff --git a/pi-util/conf_native.sh b/pi-util/conf_native.sh -index 0a7d230f1b..f0ed159594 100755 ---- a/pi-util/conf_native.sh -+++ b/pi-util/conf_native.sh -@@ -9,6 +9,7 @@ RPI_KEEPS="" - - NOSHARED= - MMAL= -+USR_PREFIX= - - while [ "$1" != "" ] ; do - case $1 in -@@ -18,8 +19,14 @@ while [ "$1" != "" ] ; do - --mmal) - MMAL=1 - ;; -+ --usr) -+ USR_PREFIX=/usr -+ ;; - *) -- echo "Usage $0: [--noshared] [--mmal]" -+ echo "Usage $0: [--noshared] [--mmal] [--usr]" -+ echo " noshared Build static libs and executable - good for testing" -+ echo " mmal Build mmal decoders" -+ echo " usr Set install prefix to /usr [default=/install]" - exit 1 - ;; - esac -@@ -82,7 +89,9 @@ else - OUT=$BUILDBASE/$B-$C-$V-shared-rel - fi - --USR_PREFIX=$OUT/install -+if [ ! $USR_PREFIX ]; then -+ USR_PREFIX=$OUT/install -+fi - LIB_PREFIX=$USR_PREFIX/lib/$A - INC_PREFIX=$USR_PREFIX/include/$A - -@@ -113,6 +122,7 @@ $FFSRC/configure \ - --extra-libs="$RPI_EXTRALIBS"\ - --extra-version="rpi" - -+echo "Configured into $OUT" - - # gcc option for getting asm listing - # -Wa,-ahls - -From 91ea652a95370a428f1353932b2a55dae7158acc Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 19 Apr 2023 10:47:58 +0000 -Subject: [PATCH 123/151] swcale: Add explicit bgr24->yv12 conversion - -(cherry picked from commit 9a22d429f46a038321c66a0cd54737177641b434) ---- - libswscale/rgb2rgb.c | 5 +++++ - libswscale/rgb2rgb.h | 7 +++++++ - libswscale/rgb2rgb_template.c | 36 ++++++++++++++++++++++++++++++----- - libswscale/swscale_unscaled.c | 22 +++++++++++++++++++++ - 4 files changed, 65 insertions(+), 5 deletions(-) - -diff --git a/libswscale/rgb2rgb.c b/libswscale/rgb2rgb.c -index e98fdac8ea..84bb56e60e 100644 ---- a/libswscale/rgb2rgb.c -+++ b/libswscale/rgb2rgb.c -@@ -83,6 +83,11 @@ void (*ff_rgb24toyv12)(const uint8_t *src, uint8_t *ydst, - int width, int height, - int lumStride, int chromStride, int srcStride, - int32_t *rgb2yuv); -+void (*ff_bgr24toyv12)(const uint8_t *src, uint8_t *ydst, -+ uint8_t *udst, uint8_t *vdst, -+ int width, int height, -+ int lumStride, int chromStride, int srcStride, -+ int32_t *rgb2yuv); - void (*planar2x)(const uint8_t *src, uint8_t *dst, int width, int height, - int srcStride, int dstStride); - void (*interleaveBytes)(const uint8_t *src1, const uint8_t *src2, uint8_t *dst, -diff --git a/libswscale/rgb2rgb.h b/libswscale/rgb2rgb.h -index f3951d523e..0028ab345f 100644 ---- a/libswscale/rgb2rgb.h -+++ b/libswscale/rgb2rgb.h -@@ -79,6 +79,9 @@ void rgb12to15(const uint8_t *src, uint8_t *dst, int src_size); - void ff_rgb24toyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst, - uint8_t *vdst, int width, int height, int lumStride, - int chromStride, int srcStride, int32_t *rgb2yuv); -+void ff_bgr24toyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst, -+ uint8_t *vdst, int width, int height, int lumStride, -+ int chromStride, int srcStride, int32_t *rgb2yuv); - - /** - * Height should be a multiple of 2 and width should be a multiple of 16. -@@ -128,6 +131,10 @@ extern void (*ff_rgb24toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, - int width, int height, - int lumStride, int chromStride, int srcStride, - int32_t *rgb2yuv); -+extern void (*ff_bgr24toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, -+ int width, int height, -+ int lumStride, int chromStride, int srcStride, -+ int32_t *rgb2yuv); - extern void (*planar2x)(const uint8_t *src, uint8_t *dst, int width, int height, - int srcStride, int dstStride); - -diff --git a/libswscale/rgb2rgb_template.c b/libswscale/rgb2rgb_template.c -index 42c69801ba..e2437826dd 100644 ---- a/libswscale/rgb2rgb_template.c -+++ b/libswscale/rgb2rgb_template.c -@@ -646,13 +646,14 @@ static inline void uyvytoyv12_c(const uint8_t *src, uint8_t *ydst, - * others are ignored in the C version. - * FIXME: Write HQ version. - */ --void ff_rgb24toyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst, -+static void rgb24toyv12_x(const uint8_t *src, uint8_t *ydst, uint8_t *udst, - uint8_t *vdst, int width, int height, int lumStride, -- int chromStride, int srcStride, int32_t *rgb2yuv) -+ int chromStride, int srcStride, int32_t *rgb2yuv, -+ const uint8_t x[9]) - { -- int32_t ry = rgb2yuv[RY_IDX], gy = rgb2yuv[GY_IDX], by = rgb2yuv[BY_IDX]; -- int32_t ru = rgb2yuv[RU_IDX], gu = rgb2yuv[GU_IDX], bu = rgb2yuv[BU_IDX]; -- int32_t rv = rgb2yuv[RV_IDX], gv = rgb2yuv[GV_IDX], bv = rgb2yuv[BV_IDX]; -+ int32_t ry = rgb2yuv[x[0]], gy = rgb2yuv[x[1]], by = rgb2yuv[x[2]]; -+ int32_t ru = rgb2yuv[x[3]], gu = rgb2yuv[x[4]], bu = rgb2yuv[x[5]]; -+ int32_t rv = rgb2yuv[x[6]], gv = rgb2yuv[x[7]], bv = rgb2yuv[x[8]]; - int y; - const int chromWidth = width >> 1; - -@@ -707,6 +708,30 @@ void ff_rgb24toyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst, - } - } - -+void ff_rgb24toyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst, -+ uint8_t *vdst, int width, int height, int lumStride, -+ int chromStride, int srcStride, int32_t *rgb2yuv) -+{ -+ static const uint8_t x[9] = { -+ RY_IDX, GY_IDX, BY_IDX, -+ RU_IDX, GU_IDX, BU_IDX, -+ RV_IDX, GV_IDX, BV_IDX, -+ }; -+ rgb24toyv12_x(src, ydst, udst, vdst, width, height, lumStride, chromStride, srcStride, rgb2yuv, x); -+} -+ -+void ff_bgr24toyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst, -+ uint8_t *vdst, int width, int height, int lumStride, -+ int chromStride, int srcStride, int32_t *rgb2yuv) -+{ -+ static const uint8_t x[9] = { -+ BY_IDX, GY_IDX, RY_IDX, -+ BU_IDX, GU_IDX, RU_IDX, -+ BV_IDX, GV_IDX, RV_IDX, -+ }; -+ rgb24toyv12_x(src, ydst, udst, vdst, width, height, lumStride, chromStride, srcStride, rgb2yuv, x); -+} -+ - static void interleaveBytes_c(const uint8_t *src1, const uint8_t *src2, - uint8_t *dest, int width, int height, - int src1Stride, int src2Stride, int dstStride) -@@ -980,6 +1005,7 @@ static av_cold void rgb2rgb_init_c(void) - yuy2toyv12 = yuy2toyv12_c; - planar2x = planar2x_c; - ff_rgb24toyv12 = ff_rgb24toyv12_c; -+ ff_bgr24toyv12 = ff_bgr24toyv12_c; - interleaveBytes = interleaveBytes_c; - deinterleaveBytes = deinterleaveBytes_c; - vu9_to_vu12 = vu9_to_vu12_c; -diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c -index 9af2e7ecc3..9047030ae4 100644 ---- a/libswscale/swscale_unscaled.c -+++ b/libswscale/swscale_unscaled.c -@@ -1654,6 +1654,23 @@ static int bgr24ToYv12Wrapper(SwsContext *c, const uint8_t *src[], - return srcSliceH; - } - -+static int rgb24ToYv12Wrapper(SwsContext *c, const uint8_t *src[], -+ int srcStride[], int srcSliceY, int srcSliceH, -+ uint8_t *dst[], int dstStride[]) -+{ -+ ff_bgr24toyv12( -+ src[0], -+ dst[0] + srcSliceY * dstStride[0], -+ dst[1] + (srcSliceY >> 1) * dstStride[1], -+ dst[2] + (srcSliceY >> 1) * dstStride[2], -+ c->srcW, srcSliceH, -+ dstStride[0], dstStride[1], srcStride[0], -+ c->input_rgb2yuv_table); -+ if (dst[3]) -+ fillPlane(dst[3], dstStride[3], c->srcW, srcSliceH, srcSliceY, 255); -+ return srcSliceH; -+} -+ - static int yvu9ToYv12Wrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) -@@ -2037,6 +2054,11 @@ void ff_get_unscaled_swscale(SwsContext *c) - (dstFormat == AV_PIX_FMT_YUV420P || dstFormat == AV_PIX_FMT_YUVA420P) && - !(flags & SWS_ACCURATE_RND) && !(dstW&1)) - c->convert_unscaled = bgr24ToYv12Wrapper; -+ /* rgb24toYV12 */ -+ if (srcFormat == AV_PIX_FMT_RGB24 && -+ (dstFormat == AV_PIX_FMT_YUV420P || dstFormat == AV_PIX_FMT_YUVA420P) && -+ !(flags & SWS_ACCURATE_RND) && !(dstW&1)) -+ c->convert_unscaled = rgb24ToYv12Wrapper; - - /* RGB/BGR -> RGB/BGR (no dither needed forms) */ - if (isAnyRGB(srcFormat) && isAnyRGB(dstFormat) && findRgbConvFn(c) - -From 207ea47b2153b276b53cd5a87528dbc532a9f551 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 20 Apr 2023 11:26:10 +0000 -Subject: [PATCH 124/151] swscale: Add unscaled XRGB->YUV420P functions - -(cherry picked from commit 04cc32ee3f390de513ad8c6156c0c66b2c60abc8) ---- - libswscale/rgb2rgb.c | 20 ++++++ - libswscale/rgb2rgb.h | 16 +++++ - libswscale/rgb2rgb_template.c | 123 ++++++++++++++++++++++++++++++---- - libswscale/swscale_unscaled.c | 89 ++++++++++++++++++++++++ - 4 files changed, 236 insertions(+), 12 deletions(-) - -diff --git a/libswscale/rgb2rgb.c b/libswscale/rgb2rgb.c -index 84bb56e60e..c3b9079d2b 100644 ---- a/libswscale/rgb2rgb.c -+++ b/libswscale/rgb2rgb.c -@@ -88,6 +88,26 @@ void (*ff_bgr24toyv12)(const uint8_t *src, uint8_t *ydst, - int width, int height, - int lumStride, int chromStride, int srcStride, - int32_t *rgb2yuv); -+void (*ff_rgbxtoyv12)(const uint8_t *src, uint8_t *ydst, -+ uint8_t *udst, uint8_t *vdst, -+ int width, int height, -+ int lumStride, int chromStride, int srcStride, -+ int32_t *rgb2yuv); -+void (*ff_bgrxtoyv12)(const uint8_t *src, uint8_t *ydst, -+ uint8_t *udst, uint8_t *vdst, -+ int width, int height, -+ int lumStride, int chromStride, int srcStride, -+ int32_t *rgb2yuv); -+void (*ff_xrgbtoyv12)(const uint8_t *src, uint8_t *ydst, -+ uint8_t *udst, uint8_t *vdst, -+ int width, int height, -+ int lumStride, int chromStride, int srcStride, -+ int32_t *rgb2yuv); -+void (*ff_xbgrtoyv12)(const uint8_t *src, uint8_t *ydst, -+ uint8_t *udst, uint8_t *vdst, -+ int width, int height, -+ int lumStride, int chromStride, int srcStride, -+ int32_t *rgb2yuv); - void (*planar2x)(const uint8_t *src, uint8_t *dst, int width, int height, - int srcStride, int dstStride); - void (*interleaveBytes)(const uint8_t *src1, const uint8_t *src2, uint8_t *dst, -diff --git a/libswscale/rgb2rgb.h b/libswscale/rgb2rgb.h -index 0028ab345f..a0dd3ffb79 100644 ---- a/libswscale/rgb2rgb.h -+++ b/libswscale/rgb2rgb.h -@@ -135,6 +135,22 @@ extern void (*ff_bgr24toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, - int width, int height, - int lumStride, int chromStride, int srcStride, - int32_t *rgb2yuv); -+extern void (*ff_rgbxtoyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, -+ int width, int height, -+ int lumStride, int chromStride, int srcStride, -+ int32_t *rgb2yuv); -+extern void (*ff_bgrxtoyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, -+ int width, int height, -+ int lumStride, int chromStride, int srcStride, -+ int32_t *rgb2yuv); -+extern void (*ff_xrgbtoyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, -+ int width, int height, -+ int lumStride, int chromStride, int srcStride, -+ int32_t *rgb2yuv); -+extern void (*ff_xbgrtoyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, -+ int width, int height, -+ int lumStride, int chromStride, int srcStride, -+ int32_t *rgb2yuv); - extern void (*planar2x)(const uint8_t *src, uint8_t *dst, int width, int height, - int srcStride, int dstStride); - -diff --git a/libswscale/rgb2rgb_template.c b/libswscale/rgb2rgb_template.c -index e2437826dd..703de90690 100644 ---- a/libswscale/rgb2rgb_template.c -+++ b/libswscale/rgb2rgb_template.c -@@ -708,30 +708,125 @@ static void rgb24toyv12_x(const uint8_t *src, uint8_t *ydst, uint8_t *udst, - } - } - -+static const uint8_t x_rgb[9] = { -+ RY_IDX, GY_IDX, BY_IDX, -+ RU_IDX, GU_IDX, BU_IDX, -+ RV_IDX, GV_IDX, BV_IDX, -+}; -+ -+static const uint8_t x_bgr[9] = { -+ BY_IDX, GY_IDX, RY_IDX, -+ BU_IDX, GU_IDX, RU_IDX, -+ BV_IDX, GV_IDX, RV_IDX, -+}; -+ - void ff_rgb24toyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst, - uint8_t *vdst, int width, int height, int lumStride, - int chromStride, int srcStride, int32_t *rgb2yuv) - { -- static const uint8_t x[9] = { -- RY_IDX, GY_IDX, BY_IDX, -- RU_IDX, GU_IDX, BU_IDX, -- RV_IDX, GV_IDX, BV_IDX, -- }; -- rgb24toyv12_x(src, ydst, udst, vdst, width, height, lumStride, chromStride, srcStride, rgb2yuv, x); -+ rgb24toyv12_x(src, ydst, udst, vdst, width, height, lumStride, chromStride, srcStride, rgb2yuv, x_rgb); - } - - void ff_bgr24toyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst, - uint8_t *vdst, int width, int height, int lumStride, - int chromStride, int srcStride, int32_t *rgb2yuv) - { -- static const uint8_t x[9] = { -- BY_IDX, GY_IDX, RY_IDX, -- BU_IDX, GU_IDX, RU_IDX, -- BV_IDX, GV_IDX, RV_IDX, -- }; -- rgb24toyv12_x(src, ydst, udst, vdst, width, height, lumStride, chromStride, srcStride, rgb2yuv, x); -+ rgb24toyv12_x(src, ydst, udst, vdst, width, height, lumStride, chromStride, srcStride, rgb2yuv, x_bgr); - } - -+static void rgbxtoyv12_x(const uint8_t *src, uint8_t *ydst, uint8_t *udst, -+ uint8_t *vdst, int width, int height, int lumStride, -+ int chromStride, int srcStride, int32_t *rgb2yuv, -+ const uint8_t x[9]) -+{ -+ int32_t ry = rgb2yuv[x[0]], gy = rgb2yuv[x[1]], by = rgb2yuv[x[2]]; -+ int32_t ru = rgb2yuv[x[3]], gu = rgb2yuv[x[4]], bu = rgb2yuv[x[5]]; -+ int32_t rv = rgb2yuv[x[6]], gv = rgb2yuv[x[7]], bv = rgb2yuv[x[8]]; -+ int y; -+ const int chromWidth = width >> 1; -+ -+ for (y = 0; y < height; y += 2) { -+ int i; -+ for (i = 0; i < chromWidth; i++) { -+ unsigned int b = src[8 * i + 2]; -+ unsigned int g = src[8 * i + 1]; -+ unsigned int r = src[8 * i + 0]; -+ -+ unsigned int Y = ((ry * r + gy * g + by * b) >> RGB2YUV_SHIFT) + 16; -+ unsigned int V = ((rv * r + gv * g + bv * b) >> RGB2YUV_SHIFT) + 128; -+ unsigned int U = ((ru * r + gu * g + bu * b) >> RGB2YUV_SHIFT) + 128; -+ -+ udst[i] = U; -+ vdst[i] = V; -+ ydst[2 * i] = Y; -+ -+ b = src[8 * i + 6]; -+ g = src[8 * i + 5]; -+ r = src[8 * i + 4]; -+ -+ Y = ((ry * r + gy * g + by * b) >> RGB2YUV_SHIFT) + 16; -+ ydst[2 * i + 1] = Y; -+ } -+ ydst += lumStride; -+ src += srcStride; -+ -+ if (y+1 == height) -+ break; -+ -+ for (i = 0; i < chromWidth; i++) { -+ unsigned int b = src[8 * i + 2]; -+ unsigned int g = src[8 * i + 1]; -+ unsigned int r = src[8 * i + 0]; -+ -+ unsigned int Y = ((ry * r + gy * g + by * b) >> RGB2YUV_SHIFT) + 16; -+ -+ ydst[2 * i] = Y; -+ -+ b = src[8 * i + 6]; -+ g = src[8 * i + 5]; -+ r = src[8 * i + 4]; -+ -+ Y = ((ry * r + gy * g + by * b) >> RGB2YUV_SHIFT) + 16; -+ ydst[2 * i + 1] = Y; -+ } -+ udst += chromStride; -+ vdst += chromStride; -+ ydst += lumStride; -+ src += srcStride; -+ } -+} -+ -+static void ff_rgbxtoyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst, -+ uint8_t *vdst, int width, int height, int lumStride, -+ int chromStride, int srcStride, int32_t *rgb2yuv) -+{ -+ rgbxtoyv12_x(src, ydst, udst, vdst, width, height, lumStride, chromStride, srcStride, rgb2yuv, x_rgb); -+} -+ -+static void ff_bgrxtoyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst, -+ uint8_t *vdst, int width, int height, int lumStride, -+ int chromStride, int srcStride, int32_t *rgb2yuv) -+{ -+ rgbxtoyv12_x(src, ydst, udst, vdst, width, height, lumStride, chromStride, srcStride, rgb2yuv, x_bgr); -+} -+ -+// As the general code does no SIMD-like ops simply adding 1 to the src address -+// will fix the ignored alpha position -+static void ff_xrgbtoyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst, -+ uint8_t *vdst, int width, int height, int lumStride, -+ int chromStride, int srcStride, int32_t *rgb2yuv) -+{ -+ rgbxtoyv12_x(src + 1, ydst, udst, vdst, width, height, lumStride, chromStride, srcStride, rgb2yuv, x_rgb); -+} -+ -+static void ff_xbgrtoyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst, -+ uint8_t *vdst, int width, int height, int lumStride, -+ int chromStride, int srcStride, int32_t *rgb2yuv) -+{ -+ rgbxtoyv12_x(src + 1, ydst, udst, vdst, width, height, lumStride, chromStride, srcStride, rgb2yuv, x_bgr); -+} -+ -+ - static void interleaveBytes_c(const uint8_t *src1, const uint8_t *src2, - uint8_t *dest, int width, int height, - int src1Stride, int src2Stride, int dstStride) -@@ -1006,6 +1101,10 @@ static av_cold void rgb2rgb_init_c(void) - planar2x = planar2x_c; - ff_rgb24toyv12 = ff_rgb24toyv12_c; - ff_bgr24toyv12 = ff_bgr24toyv12_c; -+ ff_rgbxtoyv12 = ff_rgbxtoyv12_c; -+ ff_bgrxtoyv12 = ff_bgrxtoyv12_c; -+ ff_xrgbtoyv12 = ff_xrgbtoyv12_c; -+ ff_xbgrtoyv12 = ff_xbgrtoyv12_c; - interleaveBytes = interleaveBytes_c; - deinterleaveBytes = deinterleaveBytes_c; - vu9_to_vu12 = vu9_to_vu12_c; -diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c -index 9047030ae4..053c06adf5 100644 ---- a/libswscale/swscale_unscaled.c -+++ b/libswscale/swscale_unscaled.c -@@ -1671,6 +1671,74 @@ static int rgb24ToYv12Wrapper(SwsContext *c, const uint8_t *src[], - return srcSliceH; - } - -+static int bgrxToYv12Wrapper(SwsContext *c, const uint8_t *src[], -+ int srcStride[], int srcSliceY, int srcSliceH, -+ uint8_t *dst[], int dstStride[]) -+{ -+ ff_bgrxtoyv12( -+ src[0], -+ dst[0] + srcSliceY * dstStride[0], -+ dst[1] + (srcSliceY >> 1) * dstStride[1], -+ dst[2] + (srcSliceY >> 1) * dstStride[2], -+ c->srcW, srcSliceH, -+ dstStride[0], dstStride[1], srcStride[0], -+ c->input_rgb2yuv_table); -+ if (dst[3]) -+ fillPlane(dst[3], dstStride[3], c->srcW, srcSliceH, srcSliceY, 255); -+ return srcSliceH; -+} -+ -+static int rgbxToYv12Wrapper(SwsContext *c, const uint8_t *src[], -+ int srcStride[], int srcSliceY, int srcSliceH, -+ uint8_t *dst[], int dstStride[]) -+{ -+ ff_rgbxtoyv12( -+ src[0], -+ dst[0] + srcSliceY * dstStride[0], -+ dst[1] + (srcSliceY >> 1) * dstStride[1], -+ dst[2] + (srcSliceY >> 1) * dstStride[2], -+ c->srcW, srcSliceH, -+ dstStride[0], dstStride[1], srcStride[0], -+ c->input_rgb2yuv_table); -+ if (dst[3]) -+ fillPlane(dst[3], dstStride[3], c->srcW, srcSliceH, srcSliceY, 255); -+ return srcSliceH; -+} -+ -+static int xbgrToYv12Wrapper(SwsContext *c, const uint8_t *src[], -+ int srcStride[], int srcSliceY, int srcSliceH, -+ uint8_t *dst[], int dstStride[]) -+{ -+ ff_xbgrtoyv12( -+ src[0], -+ dst[0] + srcSliceY * dstStride[0], -+ dst[1] + (srcSliceY >> 1) * dstStride[1], -+ dst[2] + (srcSliceY >> 1) * dstStride[2], -+ c->srcW, srcSliceH, -+ dstStride[0], dstStride[1], srcStride[0], -+ c->input_rgb2yuv_table); -+ if (dst[3]) -+ fillPlane(dst[3], dstStride[3], c->srcW, srcSliceH, srcSliceY, 255); -+ return srcSliceH; -+} -+ -+static int xrgbToYv12Wrapper(SwsContext *c, const uint8_t *src[], -+ int srcStride[], int srcSliceY, int srcSliceH, -+ uint8_t *dst[], int dstStride[]) -+{ -+ ff_xrgbtoyv12( -+ src[0], -+ dst[0] + srcSliceY * dstStride[0], -+ dst[1] + (srcSliceY >> 1) * dstStride[1], -+ dst[2] + (srcSliceY >> 1) * dstStride[2], -+ c->srcW, srcSliceH, -+ dstStride[0], dstStride[1], srcStride[0], -+ c->input_rgb2yuv_table); -+ if (dst[3]) -+ fillPlane(dst[3], dstStride[3], c->srcW, srcSliceH, srcSliceY, 255); -+ return srcSliceH; -+} -+ - static int yvu9ToYv12Wrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) -@@ -2060,6 +2128,27 @@ void ff_get_unscaled_swscale(SwsContext *c) - !(flags & SWS_ACCURATE_RND) && !(dstW&1)) - c->convert_unscaled = rgb24ToYv12Wrapper; - -+ /* bgrxtoYV12 */ -+ if (((srcFormat == AV_PIX_FMT_BGRA && dstFormat == AV_PIX_FMT_YUV420P) || -+ (srcFormat == AV_PIX_FMT_BGR0 && (dstFormat == AV_PIX_FMT_YUV420P || dstFormat == AV_PIX_FMT_YUVA420P))) && -+ !(flags & SWS_ACCURATE_RND)) -+ c->convert_unscaled = bgrxToYv12Wrapper; -+ /* rgbx24toYV12 */ -+ if (((srcFormat == AV_PIX_FMT_RGBA && dstFormat == AV_PIX_FMT_YUV420P) || -+ (srcFormat == AV_PIX_FMT_RGB0 && (dstFormat == AV_PIX_FMT_YUV420P || dstFormat == AV_PIX_FMT_YUVA420P))) && -+ !(flags & SWS_ACCURATE_RND) && !(dstW&1)) -+ c->convert_unscaled = rgbxToYv12Wrapper; -+ /* xbgrtoYV12 */ -+ if (((srcFormat == AV_PIX_FMT_ABGR && dstFormat == AV_PIX_FMT_YUV420P) || -+ (srcFormat == AV_PIX_FMT_0BGR && (dstFormat == AV_PIX_FMT_YUV420P || dstFormat == AV_PIX_FMT_YUVA420P))) && -+ !(flags & SWS_ACCURATE_RND) && !(dstW&1)) -+ c->convert_unscaled = xbgrToYv12Wrapper; -+ /* xrgb24toYV12 */ -+ if (((srcFormat == AV_PIX_FMT_ARGB && dstFormat == AV_PIX_FMT_YUV420P) || -+ (srcFormat == AV_PIX_FMT_0RGB && (dstFormat == AV_PIX_FMT_YUV420P || dstFormat == AV_PIX_FMT_YUVA420P))) && -+ !(flags & SWS_ACCURATE_RND) && !(dstW&1)) -+ c->convert_unscaled = xrgbToYv12Wrapper; -+ - /* RGB/BGR -> RGB/BGR (no dither needed forms) */ - if (isAnyRGB(srcFormat) && isAnyRGB(dstFormat) && findRgbConvFn(c) - && (!needsDither || (c->flags&(SWS_FAST_BILINEAR|SWS_POINT)))) - -From b5672a2d361ec4f064ae116a3452282996cc87a0 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 20 Apr 2023 11:35:44 +0000 -Subject: [PATCH 125/151] swscale: Add aarch64 unscaled RGB24->YUV420P - -(cherry picked from commit 0cf416312095ce5bea3d2f7e9b14736d4b3ed160) ---- - libswscale/aarch64/rgb2rgb.c | 40 +++++++ - libswscale/aarch64/rgb2rgb_neon.S | 181 ++++++++++++++++++++++++++++++ - 2 files changed, 221 insertions(+) - -diff --git a/libswscale/aarch64/rgb2rgb.c b/libswscale/aarch64/rgb2rgb.c -index a9bf6ff9e0..6d3e0000dc 100644 ---- a/libswscale/aarch64/rgb2rgb.c -+++ b/libswscale/aarch64/rgb2rgb.c -@@ -30,6 +30,44 @@ - void ff_interleave_bytes_neon(const uint8_t *src1, const uint8_t *src2, - uint8_t *dest, int width, int height, - int src1Stride, int src2Stride, int dstStride); -+void ff_bgr24toyv12_aarch64(const uint8_t *src, uint8_t *ydst, uint8_t *udst, -+ uint8_t *vdst, int width, int height, int lumStride, -+ int chromStride, int srcStride, int32_t *rgb2yuv); -+void ff_rgb24toyv12_aarch64(const uint8_t *src, uint8_t *ydst, uint8_t *udst, -+ uint8_t *vdst, int width, int height, int lumStride, -+ int chromStride, int srcStride, int32_t *rgb2yuv); -+ -+// RGB to YUV asm fns process 16 pixels at once so ensure that the output -+// will fit into the stride. ARM64 should cope with unaligned SIMD r/w so -+// don't test for that -+// Fall back to C if we cannot use asm -+ -+static inline int chkw(const int width, const int lumStride, const int chromStride) -+{ -+ const int aw = FFALIGN(width, 16); -+ return aw <= FFABS(lumStride) && aw <= FFABS(chromStride) * 2; -+} -+ -+static void rgb24toyv12_check(const uint8_t *src, uint8_t *ydst, uint8_t *udst, -+ uint8_t *vdst, int width, int height, int lumStride, -+ int chromStride, int srcStride, int32_t *rgb2yuv) -+{ -+ if (chkw(width, lumStride, chromStride)) -+ ff_rgb24toyv12_aarch64(src, ydst, udst, vdst, width, height, lumStride, chromStride, srcStride, rgb2yuv); -+ else -+ ff_rgb24toyv12_c(src, ydst, udst, vdst, width, height, lumStride, chromStride, srcStride, rgb2yuv); -+} -+ -+static void bgr24toyv12_check(const uint8_t *src, uint8_t *ydst, uint8_t *udst, -+ uint8_t *vdst, int width, int height, int lumStride, -+ int chromStride, int srcStride, int32_t *bgr2yuv) -+{ -+ if (chkw(width, lumStride, chromStride)) -+ ff_bgr24toyv12_aarch64(src, ydst, udst, vdst, width, height, lumStride, chromStride, srcStride, bgr2yuv); -+ else -+ ff_bgr24toyv12_c(src, ydst, udst, vdst, width, height, lumStride, chromStride, srcStride, bgr2yuv); -+} -+ - - av_cold void rgb2rgb_init_aarch64(void) - { -@@ -37,5 +75,7 @@ av_cold void rgb2rgb_init_aarch64(void) - - if (have_neon(cpu_flags)) { - interleaveBytes = ff_interleave_bytes_neon; -+ ff_rgb24toyv12 = rgb24toyv12_check; -+ ff_bgr24toyv12 = bgr24toyv12_check; - } - } -diff --git a/libswscale/aarch64/rgb2rgb_neon.S b/libswscale/aarch64/rgb2rgb_neon.S -index d81110ec57..8cf40b65f5 100644 ---- a/libswscale/aarch64/rgb2rgb_neon.S -+++ b/libswscale/aarch64/rgb2rgb_neon.S -@@ -77,3 +77,184 @@ function ff_interleave_bytes_neon, export=1 - 0: - ret - endfunc -+ -+// void ff_rgb24toyv12_aarch64( -+// const uint8_t *src, // x0 -+// uint8_t *ydst, // x1 -+// uint8_t *udst, // x2 -+// uint8_t *vdst, // x3 -+// int width, // w4 -+// int height, // w5 -+// int lumStride, // w6 -+// int chromStride, // w7 -+// int srcStr, // [sp, #0] -+// int32_t *rgb2yuv); // [sp, #8] -+ -+function ff_rgb24toyv12_aarch64, export=1 -+ ldr x15, [sp, #8] -+ ld1 {v3.s}[2], [x15], #4 -+ ld1 {v3.s}[1], [x15], #4 -+ ld1 {v3.s}[0], [x15], #4 -+ ld1 {v4.s}[2], [x15], #4 -+ ld1 {v4.s}[1], [x15], #4 -+ ld1 {v4.s}[0], [x15], #4 -+ ld1 {v5.s}[2], [x15], #4 -+ ld1 {v5.s}[1], [x15], #4 -+ ld1 {v5.s}[0], [x15] -+ b 99f -+endfunc -+ -+// void ff_bgr24toyv12_aarch64( -+// const uint8_t *src, // x0 -+// uint8_t *ydst, // x1 -+// uint8_t *udst, // x2 -+// uint8_t *vdst, // x3 -+// int width, // w4 -+// int height, // w5 -+// int lumStride, // w6 -+// int chromStride, // w7 -+// int srcStr, // [sp, #0] -+// int32_t *rgb2yuv); // [sp, #8] -+ -+function ff_bgr24toyv12_aarch64, export=1 -+ ldr x15, [sp, #8] -+ ld3 {v3.s, v4.s, v5.s}[0], [x15], #12 -+ ld3 {v3.s, v4.s, v5.s}[1], [x15], #12 -+ ld3 {v3.s, v4.s, v5.s}[2], [x15] -+99: -+ ldr w14, [sp, #0] -+ movi v18.8b, #128 -+ uxtl v17.8h, v18.8b -+ -+ // Even line - YUV -+1: -+ mov x10, x0 -+ mov x11, x1 -+ mov x12, x2 -+ mov x13, x3 -+ mov w9, w4 -+ -+0: -+ ld3 {v0.16b, v1.16b, v2.16b}, [x10], #48 -+ -+ uxtl2 v20.8h, v0.16b -+ uxtl2 v21.8h, v1.16b -+ uxtl2 v22.8h, v2.16b -+ -+ uxtl v0.8h, v0.8b -+ uxtl v1.8h, v1.8b -+ uxtl v2.8h, v2.8b -+ // Y0 -+ smull v6.4s, v0.4h, v3.h[0] -+ smull2 v7.4s, v0.8h, v3.h[0] -+ smlal v6.4s, v1.4h, v4.h[0] -+ smlal2 v7.4s, v1.8h, v4.h[0] -+ smlal v6.4s, v2.4h, v5.h[0] -+ smlal2 v7.4s, v2.8h, v5.h[0] -+ shrn v6.4h, v6.4s, #12 -+ shrn2 v6.8h, v7.4s, #12 -+ add v6.8h, v6.8h, v17.8h // +128 (>> 3 = 16) -+ uqrshrn v16.8b, v6.8h, #3 -+ // Y1 -+ smull v6.4s, v20.4h, v3.h[0] -+ smull2 v7.4s, v20.8h, v3.h[0] -+ smlal v6.4s, v21.4h, v4.h[0] -+ smlal2 v7.4s, v21.8h, v4.h[0] -+ smlal v6.4s, v22.4h, v5.h[0] -+ smlal2 v7.4s, v22.8h, v5.h[0] -+ shrn v6.4h, v6.4s, #12 -+ shrn2 v6.8h, v7.4s, #12 -+ add v6.8h, v6.8h, v17.8h -+ uqrshrn2 v16.16b, v6.8h, #3 -+ // Y0/Y1 -+ st1 {v16.16b}, [x11], #16 -+ -+ uzp1 v0.8h, v0.8h, v20.8h -+ uzp1 v1.8h, v1.8h, v21.8h -+ uzp1 v2.8h, v2.8h, v22.8h -+ -+ // U -+ // Vector subscript *2 as we loaded into S but are only using H -+ smull v6.4s, v0.4h, v3.h[2] -+ smull2 v7.4s, v0.8h, v3.h[2] -+ smlal v6.4s, v1.4h, v4.h[2] -+ smlal2 v7.4s, v1.8h, v4.h[2] -+ smlal v6.4s, v2.4h, v5.h[2] -+ smlal2 v7.4s, v2.8h, v5.h[2] -+ shrn v6.4h, v6.4s, #14 -+ shrn2 v6.8h, v7.4s, #14 -+ sqrshrn v6.8b, v6.8h, #1 -+ add v6.8b, v6.8b, v18.8b // +128 -+ st1 {v6.8b}, [x12], #8 -+ -+ // V -+ smull v6.4s, v0.4h, v3.h[4] -+ smull2 v7.4s, v0.8h, v3.h[4] -+ smlal v6.4s, v1.4h, v4.h[4] -+ smlal2 v7.4s, v1.8h, v4.h[4] -+ smlal v6.4s, v2.4h, v5.h[4] -+ smlal2 v7.4s, v2.8h, v5.h[4] -+ shrn v6.4h, v6.4s, #14 -+ shrn2 v6.8h, v7.4s, #14 -+ sqrshrn v6.8b, v6.8h, #1 -+ add v6.8b, v6.8b, v18.8b // +128 -+ st1 {v6.8b}, [x13], #8 -+ -+ subs w9, w9, #16 -+ b.gt 0b -+ -+ // Odd line - Y only -+ -+ add x0, x0, w14, SXTX -+ add x1, x1, w6, SXTX -+ mov x10, x0 -+ mov x11, x1 -+ mov w9, w4 -+ -+0: -+ ld3 {v0.16b, v1.16b, v2.16b}, [x10], #48 -+ -+ uxtl2 v20.8h, v0.16b -+ uxtl2 v21.8h, v1.16b -+ uxtl2 v22.8h, v2.16b -+ -+ uxtl v0.8h, v0.8b -+ uxtl v1.8h, v1.8b -+ uxtl v2.8h, v2.8b -+ // Y0 -+ smull v6.4s, v0.4h, v3.h[0] -+ smull2 v7.4s, v0.8h, v3.h[0] -+ smlal v6.4s, v1.4h, v4.h[0] -+ smlal2 v7.4s, v1.8h, v4.h[0] -+ smlal v6.4s, v2.4h, v5.h[0] -+ smlal2 v7.4s, v2.8h, v5.h[0] -+ shrn v6.4h, v6.4s, #12 -+ shrn2 v6.8h, v7.4s, #12 -+ add v6.8h, v6.8h, v17.8h -+ uqrshrn v16.8b, v6.8h, #3 -+ // Y1 -+ smull v6.4s, v20.4h, v3.h[0] -+ smull2 v7.4s, v20.8h, v3.h[0] -+ smlal v6.4s, v21.4h, v4.h[0] -+ smlal2 v7.4s, v21.8h, v4.h[0] -+ smlal v6.4s, v22.4h, v5.h[0] -+ smlal2 v7.4s, v22.8h, v5.h[0] -+ shrn v6.4h, v6.4s, #12 -+ shrn2 v6.8h, v7.4s, #12 -+ add v6.8h, v6.8h, v17.8h -+ uqrshrn2 v16.16b, v6.8h, #3 -+ // Y0/Y1 -+ st1 {v16.16b}, [x11], #16 -+ -+ subs w9, w9, #16 -+ b.gt 0b -+ -+ add x0, x0, w14, SXTX -+ add x1, x1, w6, SXTX -+ add x2, x2, w7, SXTX -+ add x3, x3, w7, SXTX -+ subs w5, w5, #2 -+ b.gt 1b -+ -+ ret -+endfunc - -From f62603136ee2eaf781519bd70e445b03f80960da Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 27 Apr 2023 13:03:52 +0000 -Subject: [PATCH 126/151] rgb2rgb: Fix rgb24->yuv420p with arbitrary wxh - -(cherry picked from commit 58771fdf0218dc670d8a343824f540e2f6e8785d) ---- - libswscale/aarch64/rgb2rgb.c | 5 +- - libswscale/aarch64/rgb2rgb_neon.S | 440 ++++++++++++++++++++++++------ - 2 files changed, 355 insertions(+), 90 deletions(-) - -diff --git a/libswscale/aarch64/rgb2rgb.c b/libswscale/aarch64/rgb2rgb.c -index 6d3e0000dc..f10c4ef2de 100644 ---- a/libswscale/aarch64/rgb2rgb.c -+++ b/libswscale/aarch64/rgb2rgb.c -@@ -44,8 +44,9 @@ void ff_rgb24toyv12_aarch64(const uint8_t *src, uint8_t *ydst, uint8_t *udst, - - static inline int chkw(const int width, const int lumStride, const int chromStride) - { -- const int aw = FFALIGN(width, 16); -- return aw <= FFABS(lumStride) && aw <= FFABS(chromStride) * 2; -+// const int aw = FFALIGN(width, 16); -+// return aw <= FFABS(lumStride) && aw <= FFABS(chromStride) * 2; -+ return 1; - } - - static void rgb24toyv12_check(const uint8_t *src, uint8_t *ydst, uint8_t *udst, -diff --git a/libswscale/aarch64/rgb2rgb_neon.S b/libswscale/aarch64/rgb2rgb_neon.S -index 8cf40b65f5..978ab443ea 100644 ---- a/libswscale/aarch64/rgb2rgb_neon.S -+++ b/libswscale/aarch64/rgb2rgb_neon.S -@@ -116,6 +116,25 @@ endfunc - // int srcStr, // [sp, #0] - // int32_t *rgb2yuv); // [sp, #8] - -+// regs -+// v0-2 Src bytes - reused as chroma src -+// v3-5 Coeffs (packed very inefficiently - could be squashed) -+// v6 128b -+// v7 128h -+// v8-15 Reserved -+// v16-18 Lo Src expanded as H -+// v19 - -+// v20-22 Hi Src expanded as H -+// v23 - -+// v24 U out -+// v25 U tmp -+// v26 Y out -+// v27-29 Y tmp -+// v30 V out -+// v31 V tmp -+ -+// Assumes Little Endian in tail stores & conversion matrix -+ - function ff_bgr24toyv12_aarch64, export=1 - ldr x15, [sp, #8] - ld3 {v3.s, v4.s, v5.s}[0], [x15], #12 -@@ -123,138 +142,383 @@ function ff_bgr24toyv12_aarch64, export=1 - ld3 {v3.s, v4.s, v5.s}[2], [x15] - 99: - ldr w14, [sp, #0] -- movi v18.8b, #128 -- uxtl v17.8h, v18.8b -- -- // Even line - YUV -+ movi v7.8b, #128 -+ uxtl v6.8h, v7.8b -+ // Ensure if nothing to do then we do nothing -+ cmp w4, #0 -+ b.le 90f -+ cmp w5, #0 -+ b.le 90f -+ // If w % 16 != 0 then -16 so we do main loop 1 fewer times with -+ // the remainder done in the tail -+ tst w4, #15 -+ b.eq 1f -+ sub w4, w4, #16 - 1: -+ -+// -------------------- Even line body - YUV -+11: -+ subs w9, w4, #0 - mov x10, x0 - mov x11, x1 - mov x12, x2 - mov x13, x3 -- mov w9, w4 -+ b.lt 12f - --0: - ld3 {v0.16b, v1.16b, v2.16b}, [x10], #48 -+ subs w9, w9, #16 -+ b.le 13f -+ -+10: -+ uxtl v16.8h, v0.8b -+ uxtl v17.8h, v1.8b -+ uxtl v18.8h, v2.8b - - uxtl2 v20.8h, v0.16b - uxtl2 v21.8h, v1.16b - uxtl2 v22.8h, v2.16b - -- uxtl v0.8h, v0.8b -- uxtl v1.8h, v1.8b -- uxtl v2.8h, v2.8b -+ bic v0.8h, #0xff, LSL #8 -+ bic v1.8h, #0xff, LSL #8 -+ bic v2.8h, #0xff, LSL #8 -+ -+ // Testing shows it is faster to stack the smull/smlal ops together -+ // rather than interleave them between channels and indeed even the -+ // shift/add sections seem happier not interleaved -+ - // Y0 -- smull v6.4s, v0.4h, v3.h[0] -- smull2 v7.4s, v0.8h, v3.h[0] -- smlal v6.4s, v1.4h, v4.h[0] -- smlal2 v7.4s, v1.8h, v4.h[0] -- smlal v6.4s, v2.4h, v5.h[0] -- smlal2 v7.4s, v2.8h, v5.h[0] -- shrn v6.4h, v6.4s, #12 -- shrn2 v6.8h, v7.4s, #12 -- add v6.8h, v6.8h, v17.8h // +128 (>> 3 = 16) -- uqrshrn v16.8b, v6.8h, #3 -+ smull v26.4s, v16.4h, v3.h[0] -+ smlal v26.4s, v17.4h, v4.h[0] -+ smlal v26.4s, v18.4h, v5.h[0] -+ smull2 v27.4s, v16.8h, v3.h[0] -+ smlal2 v27.4s, v17.8h, v4.h[0] -+ smlal2 v27.4s, v18.8h, v5.h[0] - // Y1 -- smull v6.4s, v20.4h, v3.h[0] -- smull2 v7.4s, v20.8h, v3.h[0] -- smlal v6.4s, v21.4h, v4.h[0] -- smlal2 v7.4s, v21.8h, v4.h[0] -- smlal v6.4s, v22.4h, v5.h[0] -- smlal2 v7.4s, v22.8h, v5.h[0] -- shrn v6.4h, v6.4s, #12 -- shrn2 v6.8h, v7.4s, #12 -- add v6.8h, v6.8h, v17.8h -- uqrshrn2 v16.16b, v6.8h, #3 -+ smull v28.4s, v20.4h, v3.h[0] -+ smlal v28.4s, v21.4h, v4.h[0] -+ smlal v28.4s, v22.4h, v5.h[0] -+ smull2 v29.4s, v20.8h, v3.h[0] -+ smlal2 v29.4s, v21.8h, v4.h[0] -+ smlal2 v29.4s, v22.8h, v5.h[0] -+ shrn v26.4h, v26.4s, #12 -+ shrn2 v26.8h, v27.4s, #12 -+ add v26.8h, v26.8h, v6.8h // +128 (>> 3 = 16) -+ uqrshrn v26.8b, v26.8h, #3 -+ shrn v28.4h, v28.4s, #12 -+ shrn2 v28.8h, v29.4s, #12 -+ add v28.8h, v28.8h, v6.8h -+ uqrshrn2 v26.16b, v28.8h, #3 - // Y0/Y1 -- st1 {v16.16b}, [x11], #16 -- -- uzp1 v0.8h, v0.8h, v20.8h -- uzp1 v1.8h, v1.8h, v21.8h -- uzp1 v2.8h, v2.8h, v22.8h - - // U - // Vector subscript *2 as we loaded into S but are only using H -- smull v6.4s, v0.4h, v3.h[2] -- smull2 v7.4s, v0.8h, v3.h[2] -- smlal v6.4s, v1.4h, v4.h[2] -- smlal2 v7.4s, v1.8h, v4.h[2] -- smlal v6.4s, v2.4h, v5.h[2] -- smlal2 v7.4s, v2.8h, v5.h[2] -- shrn v6.4h, v6.4s, #14 -- shrn2 v6.8h, v7.4s, #14 -- sqrshrn v6.8b, v6.8h, #1 -- add v6.8b, v6.8b, v18.8b // +128 -- st1 {v6.8b}, [x12], #8 -+ smull v24.4s, v0.4h, v3.h[2] -+ smlal v24.4s, v1.4h, v4.h[2] -+ smlal v24.4s, v2.4h, v5.h[2] -+ smull2 v25.4s, v0.8h, v3.h[2] -+ smlal2 v25.4s, v1.8h, v4.h[2] -+ smlal2 v25.4s, v2.8h, v5.h[2] - - // V -- smull v6.4s, v0.4h, v3.h[4] -- smull2 v7.4s, v0.8h, v3.h[4] -- smlal v6.4s, v1.4h, v4.h[4] -- smlal2 v7.4s, v1.8h, v4.h[4] -- smlal v6.4s, v2.4h, v5.h[4] -- smlal2 v7.4s, v2.8h, v5.h[4] -- shrn v6.4h, v6.4s, #14 -- shrn2 v6.8h, v7.4s, #14 -- sqrshrn v6.8b, v6.8h, #1 -- add v6.8b, v6.8b, v18.8b // +128 -- st1 {v6.8b}, [x13], #8 -+ smull v30.4s, v0.4h, v3.h[4] -+ smlal v30.4s, v1.4h, v4.h[4] -+ smlal v30.4s, v2.4h, v5.h[4] -+ smull2 v31.4s, v0.8h, v3.h[4] -+ smlal2 v31.4s, v1.8h, v4.h[4] -+ smlal2 v31.4s, v2.8h, v5.h[4] -+ -+ ld3 {v0.16b, v1.16b, v2.16b}, [x10], #48 -+ -+ shrn v24.4h, v24.4s, #14 -+ shrn2 v24.8h, v25.4s, #14 -+ sqrshrn v24.8b, v24.8h, #1 -+ add v24.8b, v24.8b, v7.8b // +128 -+ shrn v30.4h, v30.4s, #14 -+ shrn2 v30.8h, v31.4s, #14 -+ sqrshrn v30.8b, v30.8h, #1 -+ add v30.8b, v30.8b, v7.8b // +128 - - subs w9, w9, #16 -- b.gt 0b - -- // Odd line - Y only -+ st1 {v26.16b}, [x11], #16 -+ st1 {v24.8b}, [x12], #8 -+ st1 {v30.8b}, [x13], #8 -+ -+ b.gt 10b -+ -+// -------------------- Even line tail - YUV -+// If width % 16 == 0 then simply runs once with preloaded RGB -+// If other then deals with preload & then does remaining tail -+ -+13: -+ // Body is simple copy of main loop body minus preload -+ -+ uxtl v16.8h, v0.8b -+ uxtl v17.8h, v1.8b -+ uxtl v18.8h, v2.8b -+ -+ uxtl2 v20.8h, v0.16b -+ uxtl2 v21.8h, v1.16b -+ uxtl2 v22.8h, v2.16b -+ -+ bic v0.8h, #0xff, LSL #8 -+ bic v1.8h, #0xff, LSL #8 -+ bic v2.8h, #0xff, LSL #8 -+ -+ // Y0 -+ smull v26.4s, v16.4h, v3.h[0] -+ smlal v26.4s, v17.4h, v4.h[0] -+ smlal v26.4s, v18.4h, v5.h[0] -+ smull2 v27.4s, v16.8h, v3.h[0] -+ smlal2 v27.4s, v17.8h, v4.h[0] -+ smlal2 v27.4s, v18.8h, v5.h[0] -+ // Y1 -+ smull v28.4s, v20.4h, v3.h[0] -+ smlal v28.4s, v21.4h, v4.h[0] -+ smlal v28.4s, v22.4h, v5.h[0] -+ smull2 v29.4s, v20.8h, v3.h[0] -+ smlal2 v29.4s, v21.8h, v4.h[0] -+ smlal2 v29.4s, v22.8h, v5.h[0] -+ shrn v26.4h, v26.4s, #12 -+ shrn2 v26.8h, v27.4s, #12 -+ add v26.8h, v26.8h, v6.8h // +128 (>> 3 = 16) -+ uqrshrn v26.8b, v26.8h, #3 -+ shrn v28.4h, v28.4s, #12 -+ shrn2 v28.8h, v29.4s, #12 -+ add v28.8h, v28.8h, v6.8h -+ uqrshrn2 v26.16b, v28.8h, #3 -+ // Y0/Y1 -+ -+ // U -+ // Vector subscript *2 as we loaded into S but are only using H -+ smull v24.4s, v0.4h, v3.h[2] -+ smlal v24.4s, v1.4h, v4.h[2] -+ smlal v24.4s, v2.4h, v5.h[2] -+ smull2 v25.4s, v0.8h, v3.h[2] -+ smlal2 v25.4s, v1.8h, v4.h[2] -+ smlal2 v25.4s, v2.8h, v5.h[2] - -+ // V -+ smull v30.4s, v0.4h, v3.h[4] -+ smlal v30.4s, v1.4h, v4.h[4] -+ smlal v30.4s, v2.4h, v5.h[4] -+ smull2 v31.4s, v0.8h, v3.h[4] -+ smlal2 v31.4s, v1.8h, v4.h[4] -+ smlal2 v31.4s, v2.8h, v5.h[4] -+ -+ cmp w9, #-16 -+ -+ shrn v24.4h, v24.4s, #14 -+ shrn2 v24.8h, v25.4s, #14 -+ sqrshrn v24.8b, v24.8h, #1 -+ add v24.8b, v24.8b, v7.8b // +128 -+ shrn v30.4h, v30.4s, #14 -+ shrn2 v30.8h, v31.4s, #14 -+ sqrshrn v30.8b, v30.8h, #1 -+ add v30.8b, v30.8b, v7.8b // +128 -+ -+ // Here: -+ // w9 == 0 width % 16 == 0, tail done -+ // w9 > -16 1st tail done (16 pels), remainder still to go -+ // w9 == -16 shouldn't happen -+ // w9 > -32 2nd tail done -+ // w9 <= -32 shouldn't happen -+ -+ b.lt 2f -+ st1 {v26.16b}, [x11], #16 -+ st1 {v24.8b}, [x12], #8 -+ st1 {v30.8b}, [x13], #8 -+ cbz w9, 3f -+ -+12: -+ sub w9, w9, #16 -+ -+ tbz w9, #3, 1f -+ ld3 {v0.8b, v1.8b, v2.8b}, [x10], #24 -+1: tbz w9, #2, 1f -+ ld3 {v0.b, v1.b, v2.b}[8], [x10], #3 -+ ld3 {v0.b, v1.b, v2.b}[9], [x10], #3 -+ ld3 {v0.b, v1.b, v2.b}[10], [x10], #3 -+ ld3 {v0.b, v1.b, v2.b}[11], [x10], #3 -+1: tbz w9, #1, 1f -+ ld3 {v0.b, v1.b, v2.b}[12], [x10], #3 -+ ld3 {v0.b, v1.b, v2.b}[13], [x10], #3 -+1: tbz w9, #0, 13b -+ ld3 {v0.b, v1.b, v2.b}[14], [x10], #3 -+ b 13b -+ -+2: -+ tbz w9, #3, 1f -+ st1 {v26.8b}, [x11], #8 -+ st1 {v24.s}[0], [x12], #4 -+ st1 {v30.s}[0], [x13], #4 -+1: tbz w9, #2, 1f -+ st1 {v26.s}[2], [x11], #4 -+ st1 {v24.h}[2], [x12], #2 -+ st1 {v30.h}[2], [x13], #2 -+1: tbz w9, #1, 1f -+ st1 {v26.h}[6], [x11], #2 -+ st1 {v24.b}[6], [x12], #1 -+ st1 {v30.b}[6], [x13], #1 -+1: tbz w9, #0, 1f -+ st1 {v26.b}[14], [x11] -+ st1 {v24.b}[7], [x12] -+ st1 {v30.b}[7], [x13] -+1: -+3: -+ -+// -------------------- Odd line body - Y only -+ -+ subs w5, w5, #1 -+ b.eq 90f -+ -+ subs w9, w4, #0 - add x0, x0, w14, SXTX - add x1, x1, w6, SXTX - mov x10, x0 - mov x11, x1 -- mov w9, w4 -+ b.lt 12f - --0: - ld3 {v0.16b, v1.16b, v2.16b}, [x10], #48 -+ subs w9, w9, #16 -+ b.le 13f -+ -+10: -+ uxtl v16.8h, v0.8b -+ uxtl v17.8h, v1.8b -+ uxtl v18.8h, v2.8b - - uxtl2 v20.8h, v0.16b - uxtl2 v21.8h, v1.16b - uxtl2 v22.8h, v2.16b - -- uxtl v0.8h, v0.8b -- uxtl v1.8h, v1.8b -- uxtl v2.8h, v2.8b -+ // Testing shows it is faster to stack the smull/smlal ops together -+ // rather than interleave them between channels and indeed even the -+ // shift/add sections seem happier not interleaved -+ - // Y0 -- smull v6.4s, v0.4h, v3.h[0] -- smull2 v7.4s, v0.8h, v3.h[0] -- smlal v6.4s, v1.4h, v4.h[0] -- smlal2 v7.4s, v1.8h, v4.h[0] -- smlal v6.4s, v2.4h, v5.h[0] -- smlal2 v7.4s, v2.8h, v5.h[0] -- shrn v6.4h, v6.4s, #12 -- shrn2 v6.8h, v7.4s, #12 -- add v6.8h, v6.8h, v17.8h -- uqrshrn v16.8b, v6.8h, #3 -+ smull v26.4s, v16.4h, v3.h[0] -+ smlal v26.4s, v17.4h, v4.h[0] -+ smlal v26.4s, v18.4h, v5.h[0] -+ smull2 v27.4s, v16.8h, v3.h[0] -+ smlal2 v27.4s, v17.8h, v4.h[0] -+ smlal2 v27.4s, v18.8h, v5.h[0] - // Y1 -- smull v6.4s, v20.4h, v3.h[0] -- smull2 v7.4s, v20.8h, v3.h[0] -- smlal v6.4s, v21.4h, v4.h[0] -- smlal2 v7.4s, v21.8h, v4.h[0] -- smlal v6.4s, v22.4h, v5.h[0] -- smlal2 v7.4s, v22.8h, v5.h[0] -- shrn v6.4h, v6.4s, #12 -- shrn2 v6.8h, v7.4s, #12 -- add v6.8h, v6.8h, v17.8h -- uqrshrn2 v16.16b, v6.8h, #3 -+ smull v28.4s, v20.4h, v3.h[0] -+ smlal v28.4s, v21.4h, v4.h[0] -+ smlal v28.4s, v22.4h, v5.h[0] -+ smull2 v29.4s, v20.8h, v3.h[0] -+ smlal2 v29.4s, v21.8h, v4.h[0] -+ smlal2 v29.4s, v22.8h, v5.h[0] -+ -+ ld3 {v0.16b, v1.16b, v2.16b}, [x10], #48 -+ -+ shrn v26.4h, v26.4s, #12 -+ shrn2 v26.8h, v27.4s, #12 -+ add v26.8h, v26.8h, v6.8h // +128 (>> 3 = 16) -+ uqrshrn v26.8b, v26.8h, #3 -+ shrn v28.4h, v28.4s, #12 -+ shrn2 v28.8h, v29.4s, #12 -+ add v28.8h, v28.8h, v6.8h -+ uqrshrn2 v26.16b, v28.8h, #3 - // Y0/Y1 -- st1 {v16.16b}, [x11], #16 - - subs w9, w9, #16 -- b.gt 0b -+ -+ st1 {v26.16b}, [x11], #16 -+ -+ b.gt 10b -+ -+// -------------------- Odd line tail - Y -+// If width % 16 == 0 then simply runs once with preloaded RGB -+// If other then deals with preload & then does remaining tail -+ -+13: -+ // Body is simple copy of main loop body minus preload -+ -+ uxtl v16.8h, v0.8b -+ uxtl v17.8h, v1.8b -+ uxtl v18.8h, v2.8b -+ -+ uxtl2 v20.8h, v0.16b -+ uxtl2 v21.8h, v1.16b -+ uxtl2 v22.8h, v2.16b -+ -+ // Y0 -+ smull v26.4s, v16.4h, v3.h[0] -+ smlal v26.4s, v17.4h, v4.h[0] -+ smlal v26.4s, v18.4h, v5.h[0] -+ smull2 v27.4s, v16.8h, v3.h[0] -+ smlal2 v27.4s, v17.8h, v4.h[0] -+ smlal2 v27.4s, v18.8h, v5.h[0] -+ // Y1 -+ smull v28.4s, v20.4h, v3.h[0] -+ smlal v28.4s, v21.4h, v4.h[0] -+ smlal v28.4s, v22.4h, v5.h[0] -+ smull2 v29.4s, v20.8h, v3.h[0] -+ smlal2 v29.4s, v21.8h, v4.h[0] -+ smlal2 v29.4s, v22.8h, v5.h[0] -+ -+ cmp w9, #-16 -+ -+ shrn v26.4h, v26.4s, #12 -+ shrn2 v26.8h, v27.4s, #12 -+ add v26.8h, v26.8h, v6.8h // +128 (>> 3 = 16) -+ uqrshrn v26.8b, v26.8h, #3 -+ shrn v28.4h, v28.4s, #12 -+ shrn2 v28.8h, v29.4s, #12 -+ add v28.8h, v28.8h, v6.8h -+ uqrshrn2 v26.16b, v28.8h, #3 -+ // Y0/Y1 -+ -+ // Here: -+ // w9 == 0 width % 16 == 0, tail done -+ // w9 > -16 1st tail done (16 pels), remainder still to go -+ // w9 == -16 shouldn't happen -+ // w9 > -32 2nd tail done -+ // w9 <= -32 shouldn't happen -+ -+ b.lt 2f -+ st1 {v26.16b}, [x11], #16 -+ cbz w9, 3f -+ -+12: -+ sub w9, w9, #16 -+ -+ tbz w9, #3, 1f -+ ld3 {v0.8b, v1.8b, v2.8b}, [x10], #24 -+1: tbz w9, #2, 1f -+ ld3 {v0.b, v1.b, v2.b}[8], [x10], #3 -+ ld3 {v0.b, v1.b, v2.b}[9], [x10], #3 -+ ld3 {v0.b, v1.b, v2.b}[10], [x10], #3 -+ ld3 {v0.b, v1.b, v2.b}[11], [x10], #3 -+1: tbz w9, #1, 1f -+ ld3 {v0.b, v1.b, v2.b}[12], [x10], #3 -+ ld3 {v0.b, v1.b, v2.b}[13], [x10], #3 -+1: tbz w9, #0, 13b -+ ld3 {v0.b, v1.b, v2.b}[14], [x10], #3 -+ b 13b -+ -+2: -+ tbz w9, #3, 1f -+ st1 {v26.8b}, [x11], #8 -+1: tbz w9, #2, 1f -+ st1 {v26.s}[2], [x11], #4 -+1: tbz w9, #1, 1f -+ st1 {v26.h}[6], [x11], #2 -+1: tbz w9, #0, 1f -+ st1 {v26.b}[14], [x11] -+1: -+3: -+ -+// ------------------- Loop to start - - add x0, x0, w14, SXTX - add x1, x1, w6, SXTX - add x2, x2, w7, SXTX - add x3, x3, w7, SXTX -- subs w5, w5, #2 -- b.gt 1b -- -+ subs w5, w5, #1 -+ b.gt 11b -+90: - ret - endfunc - -From cf020c89ac47620c4a5390d0333e9ea70fbfa7b8 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 26 Apr 2023 15:36:07 +0000 -Subject: [PATCH 127/151] rgb2rgb: Use asm unconditionally - -(cherry picked from commit 7c216c0804836b31c0ea093bb1dde5ab387724b1) ---- - libswscale/aarch64/rgb2rgb.c | 37 ++---------------------------------- - 1 file changed, 2 insertions(+), 35 deletions(-) - -diff --git a/libswscale/aarch64/rgb2rgb.c b/libswscale/aarch64/rgb2rgb.c -index f10c4ef2de..6a0e2dcc09 100644 ---- a/libswscale/aarch64/rgb2rgb.c -+++ b/libswscale/aarch64/rgb2rgb.c -@@ -37,46 +37,13 @@ void ff_rgb24toyv12_aarch64(const uint8_t *src, uint8_t *ydst, uint8_t *udst, - uint8_t *vdst, int width, int height, int lumStride, - int chromStride, int srcStride, int32_t *rgb2yuv); - --// RGB to YUV asm fns process 16 pixels at once so ensure that the output --// will fit into the stride. ARM64 should cope with unaligned SIMD r/w so --// don't test for that --// Fall back to C if we cannot use asm -- --static inline int chkw(const int width, const int lumStride, const int chromStride) --{ --// const int aw = FFALIGN(width, 16); --// return aw <= FFABS(lumStride) && aw <= FFABS(chromStride) * 2; -- return 1; --} -- --static void rgb24toyv12_check(const uint8_t *src, uint8_t *ydst, uint8_t *udst, -- uint8_t *vdst, int width, int height, int lumStride, -- int chromStride, int srcStride, int32_t *rgb2yuv) --{ -- if (chkw(width, lumStride, chromStride)) -- ff_rgb24toyv12_aarch64(src, ydst, udst, vdst, width, height, lumStride, chromStride, srcStride, rgb2yuv); -- else -- ff_rgb24toyv12_c(src, ydst, udst, vdst, width, height, lumStride, chromStride, srcStride, rgb2yuv); --} -- --static void bgr24toyv12_check(const uint8_t *src, uint8_t *ydst, uint8_t *udst, -- uint8_t *vdst, int width, int height, int lumStride, -- int chromStride, int srcStride, int32_t *bgr2yuv) --{ -- if (chkw(width, lumStride, chromStride)) -- ff_bgr24toyv12_aarch64(src, ydst, udst, vdst, width, height, lumStride, chromStride, srcStride, bgr2yuv); -- else -- ff_bgr24toyv12_c(src, ydst, udst, vdst, width, height, lumStride, chromStride, srcStride, bgr2yuv); --} -- -- - av_cold void rgb2rgb_init_aarch64(void) - { - int cpu_flags = av_get_cpu_flags(); - - if (have_neon(cpu_flags)) { - interleaveBytes = ff_interleave_bytes_neon; -- ff_rgb24toyv12 = rgb24toyv12_check; -- ff_bgr24toyv12 = bgr24toyv12_check; -+ ff_rgb24toyv12 = ff_rgb24toyv12_aarch64; -+ ff_bgr24toyv12 = ff_bgr24toyv12_aarch64; - } - } - -From 1895fdcaf403f403736ab52d1cb69dce7c964b66 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 27 Apr 2023 13:01:43 +0000 -Subject: [PATCH 128/151] tests/swscale: Add options for width and height on - the command line - -(cherry picked from commit eb8a09779688fc05bf204fdfcd063b04cda07271) ---- - libswscale/tests/swscale.c | 84 ++++++++++++++++++++++++++------------ - 1 file changed, 59 insertions(+), 25 deletions(-) - -diff --git a/libswscale/tests/swscale.c b/libswscale/tests/swscale.c -index 6c38041ddb..4cf41d9f64 100644 ---- a/libswscale/tests/swscale.c -+++ b/libswscale/tests/swscale.c -@@ -355,56 +355,71 @@ static int fileTest(const uint8_t * const ref[4], int refStride[4], - return 0; - } - --#define W 96 --#define H 96 -- - int main(int argc, char **argv) - { -+ unsigned int W = 96; -+ unsigned int H = 96; -+ unsigned int W2; -+ unsigned int H2; -+ unsigned int S; - enum AVPixelFormat srcFormat = AV_PIX_FMT_NONE; - enum AVPixelFormat dstFormat = AV_PIX_FMT_NONE; -- uint8_t *rgb_data = av_malloc(W * H * 4); -- const uint8_t * const rgb_src[4] = { rgb_data, NULL, NULL, NULL }; -- int rgb_stride[4] = { 4 * W, 0, 0, 0 }; -- uint8_t *data = av_malloc(4 * W * H); -- const uint8_t * const src[4] = { data, data + W * H, data + W * H * 2, data + W * H * 3 }; -- int stride[4] = { W, W, W, W }; - int x, y; - struct SwsContext *sws; - AVLFG rand; - int res = -1; - int i; - FILE *fp = NULL; -- -- if (!rgb_data || !data) -- return -1; -+ uint8_t *rgb_data; -+ uint8_t * rgb_src[4] = { NULL }; -+ int rgb_stride[4] = { 0 }; -+ uint8_t *data; -+ uint8_t * src[4] = { NULL }; -+ int stride[4] = { 0 }; - - for (i = 1; i < argc; i += 2) { -+ const char * const arg2 = argv[i+1]; -+ - if (argv[i][0] != '-' || i + 1 == argc) - goto bad_option; - if (!strcmp(argv[i], "-ref")) { -- fp = fopen(argv[i + 1], "r"); -+ fp = fopen(arg2, "r"); - if (!fp) { -- fprintf(stderr, "could not open '%s'\n", argv[i + 1]); -+ fprintf(stderr, "could not open '%s'\n", arg2); - goto error; - } - } else if (!strcmp(argv[i], "-cpuflags")) { - unsigned flags = av_get_cpu_flags(); -- int ret = av_parse_cpu_caps(&flags, argv[i + 1]); -+ int ret = av_parse_cpu_caps(&flags, arg2); - if (ret < 0) { -- fprintf(stderr, "invalid cpu flags %s\n", argv[i + 1]); -+ fprintf(stderr, "invalid cpu flags %s\n", arg2); - return ret; - } - av_force_cpu_flags(flags); - } else if (!strcmp(argv[i], "-src")) { -- srcFormat = av_get_pix_fmt(argv[i + 1]); -+ srcFormat = av_get_pix_fmt(arg2); - if (srcFormat == AV_PIX_FMT_NONE) { -- fprintf(stderr, "invalid pixel format %s\n", argv[i + 1]); -+ fprintf(stderr, "invalid pixel format %s\n", arg2); - return -1; - } - } else if (!strcmp(argv[i], "-dst")) { -- dstFormat = av_get_pix_fmt(argv[i + 1]); -+ dstFormat = av_get_pix_fmt(arg2); - if (dstFormat == AV_PIX_FMT_NONE) { -- fprintf(stderr, "invalid pixel format %s\n", argv[i + 1]); -+ fprintf(stderr, "invalid pixel format %s\n", arg2); -+ return -1; -+ } -+ } else if (!strcmp(argv[i], "-w")) { -+ char * p = NULL; -+ W = strtoul(arg2, &p, 0); -+ if (!W || *p) { -+ fprintf(stderr, "bad width %s\n", arg2); -+ return -1; -+ } -+ } else if (!strcmp(argv[i], "-h")) { -+ char * p = NULL; -+ H = strtoul(arg2, &p, 0); -+ if (!H || *p) { -+ fprintf(stderr, "bad height '%s' (H=%d, *p=%d)\n", arg2, H, *p); - return -1; - } - } else { -@@ -414,15 +429,34 @@ bad_option: - } - } - -- sws = sws_getContext(W / 12, H / 12, AV_PIX_FMT_RGB32, W, H, -+ S = (W + 15) & ~15; -+ rgb_data = av_mallocz(S * H * 4); -+ rgb_src[0] = rgb_data; -+ rgb_stride[0] = 4 * S; -+ data = av_mallocz(4 * S * H); -+ src[0] = data; -+ src[1] = data + S * H; -+ src[2] = data + S * H * 2; -+ src[3] = data + S * H * 3; -+ stride[0] = S; -+ stride[1] = S; -+ stride[2] = S; -+ stride[3] = S; -+ H2 = H < 96 ? 8 : H / 12; -+ W2 = W < 96 ? 8 : W / 12; -+ -+ if (!rgb_data || !data) -+ return -1; -+ -+ sws = sws_getContext(W2, H2, AV_PIX_FMT_RGB32, W, H, - AV_PIX_FMT_YUVA420P, SWS_BILINEAR, NULL, NULL, NULL); - - av_lfg_init(&rand, 1); - - for (y = 0; y < H; y++) - for (x = 0; x < W * 4; x++) -- rgb_data[ x + y * 4 * W] = av_lfg_get(&rand); -- res = sws_scale(sws, rgb_src, rgb_stride, 0, H / 12, (uint8_t * const *) src, stride); -+ rgb_data[ x + y * 4 * S] = av_lfg_get(&rand); -+ res = sws_scale(sws, (const uint8_t * const *)rgb_src, rgb_stride, 0, H2, (uint8_t * const *) src, stride); - if (res < 0 || res != H) { - res = -1; - goto error; -@@ -431,10 +465,10 @@ bad_option: - av_free(rgb_data); - - if(fp) { -- res = fileTest(src, stride, W, H, fp, srcFormat, dstFormat); -+ res = fileTest((const uint8_t * const *)src, stride, W, H, fp, srcFormat, dstFormat); - fclose(fp); - } else { -- selfTest(src, stride, W, H, srcFormat, dstFormat); -+ selfTest((const uint8_t * const *)src, stride, W, H, srcFormat, dstFormat); - res = 0; - } - error: - -From 94e48653a6bd1b8438887b486927e87b56651455 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 26 Apr 2023 16:31:23 +0000 -Subject: [PATCH 129/151] tests/swscale: Add a timing option - --t Where n is the number of time to loop the scale op. - Often useful to do it 10 times or so for better resolution - -(cherry picked from commit 50cd60a23a66254f911376602d07b30fcafbde96) ---- - libswscale/tests/swscale.c | 32 ++++++++++++++++++++++++++++++-- - 1 file changed, 30 insertions(+), 2 deletions(-) - -diff --git a/libswscale/tests/swscale.c b/libswscale/tests/swscale.c -index 4cf41d9f64..12776ffec7 100644 ---- a/libswscale/tests/swscale.c -+++ b/libswscale/tests/swscale.c -@@ -23,6 +23,7 @@ - #include - #include - #include -+#include - - #undef HAVE_AV_CONFIG_H - #include "libavutil/cpu.h" -@@ -78,6 +79,15 @@ struct Results { - uint32_t crc; - }; - -+static int time_rep = 0; -+ -+static uint64_t utime(void) -+{ -+ struct timespec ts; -+ clock_gettime(CLOCK_MONOTONIC, &ts); -+ return ts.tv_nsec / 1000 + (uint64_t)ts.tv_sec * 1000000; -+} -+ - // test by ref -> src -> dst -> out & compare out against ref - // ref & out are YV12 - static int doTest(const uint8_t * const ref[4], int refStride[4], int w, int h, -@@ -174,7 +184,7 @@ static int doTest(const uint8_t * const ref[4], int refStride[4], int w, int h, - goto end; - } - -- printf(" %s %dx%d -> %s %3dx%3d flags=%2d", -+ printf(" %s %4dx%4d -> %s %4dx%4d flags=%2d", - desc_src->name, srcW, srcH, - desc_dst->name, dstW, dstH, - flags); -@@ -182,6 +192,17 @@ static int doTest(const uint8_t * const ref[4], int refStride[4], int w, int h, - - sws_scale(dstContext, (const uint8_t * const*)src, srcStride, 0, srcH, dst, dstStride); - -+ if (time_rep != 0) -+ { -+ const uint64_t now = utime(); -+ uint64_t done; -+ for (i = 1; i != time_rep; ++i) { -+ sws_scale(dstContext, (const uint8_t * const*)src, srcStride, 0, srcH, dst, dstStride); -+ } -+ done = utime(); -+ printf(" T=%7"PRId64"us ", done-now); -+ } -+ - for (i = 0; i < 4 && dstStride[i]; i++) - crc = av_crc(av_crc_get_table(AV_CRC_32_IEEE), crc, dst[i], - dstStride[i] * dstH); -@@ -419,7 +440,14 @@ int main(int argc, char **argv) - char * p = NULL; - H = strtoul(arg2, &p, 0); - if (!H || *p) { -- fprintf(stderr, "bad height '%s' (H=%d, *p=%d)\n", arg2, H, *p); -+ fprintf(stderr, "bad height '%s'\n", arg2); -+ return -1; -+ } -+ } else if (!strcmp(argv[i], "-t")) { -+ char * p = NULL; -+ time_rep = (int)strtol(arg2, &p, 0); -+ if (*p) { -+ fprintf(stderr, "bad time repetitions '%s'\n", arg2); - return -1; - } - } else { - -From 406806d0b9d9cb113deb0d083a28cbccabab6825 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 20 Apr 2023 13:40:36 +0000 -Subject: [PATCH 130/151] swscale: RGB->YUV420 fix C template to allow odd - widths - -(cherry picked from commit 08b2023e7b5292df0adc6593e4d20087f9cef5c8) ---- - libswscale/rgb2rgb_template.c | 44 +++++++++++++++++++++++++++++++++++ - libswscale/swscale_unscaled.c | 11 ++++----- - 2 files changed, 49 insertions(+), 6 deletions(-) - -diff --git a/libswscale/rgb2rgb_template.c b/libswscale/rgb2rgb_template.c -index 703de90690..e711589e1e 100644 ---- a/libswscale/rgb2rgb_template.c -+++ b/libswscale/rgb2rgb_template.c -@@ -679,6 +679,19 @@ static void rgb24toyv12_x(const uint8_t *src, uint8_t *ydst, uint8_t *udst, - Y = ((ry * r + gy * g + by * b) >> RGB2YUV_SHIFT) + 16; - ydst[2 * i + 1] = Y; - } -+ if ((width & 1) != 0) { -+ unsigned int b = src[6 * i + 0]; -+ unsigned int g = src[6 * i + 1]; -+ unsigned int r = src[6 * i + 2]; -+ -+ unsigned int Y = ((ry * r + gy * g + by * b) >> RGB2YUV_SHIFT) + 16; -+ unsigned int V = ((rv * r + gv * g + bv * b) >> RGB2YUV_SHIFT) + 128; -+ unsigned int U = ((ru * r + gu * g + bu * b) >> RGB2YUV_SHIFT) + 128; -+ -+ udst[i] = U; -+ vdst[i] = V; -+ ydst[2 * i] = Y; -+ } - ydst += lumStride; - src += srcStride; - -@@ -701,6 +714,15 @@ static void rgb24toyv12_x(const uint8_t *src, uint8_t *ydst, uint8_t *udst, - Y = ((ry * r + gy * g + by * b) >> RGB2YUV_SHIFT) + 16; - ydst[2 * i + 1] = Y; - } -+ if ((width & 1) != 0) { -+ unsigned int b = src[6 * i + 0]; -+ unsigned int g = src[6 * i + 1]; -+ unsigned int r = src[6 * i + 2]; -+ -+ unsigned int Y = ((ry * r + gy * g + by * b) >> RGB2YUV_SHIFT) + 16; -+ -+ ydst[2 * i] = Y; -+ } - udst += chromStride; - vdst += chromStride; - ydst += lumStride; -@@ -767,6 +789,19 @@ static void rgbxtoyv12_x(const uint8_t *src, uint8_t *ydst, uint8_t *udst, - Y = ((ry * r + gy * g + by * b) >> RGB2YUV_SHIFT) + 16; - ydst[2 * i + 1] = Y; - } -+ if ((width & 1) != 0) { -+ unsigned int b = src[8 * i + 2]; -+ unsigned int g = src[8 * i + 1]; -+ unsigned int r = src[8 * i + 0]; -+ -+ unsigned int Y = ((ry * r + gy * g + by * b) >> RGB2YUV_SHIFT) + 16; -+ unsigned int V = ((rv * r + gv * g + bv * b) >> RGB2YUV_SHIFT) + 128; -+ unsigned int U = ((ru * r + gu * g + bu * b) >> RGB2YUV_SHIFT) + 128; -+ -+ udst[i] = U; -+ vdst[i] = V; -+ ydst[2 * i] = Y; -+ } - ydst += lumStride; - src += srcStride; - -@@ -789,6 +824,15 @@ static void rgbxtoyv12_x(const uint8_t *src, uint8_t *ydst, uint8_t *udst, - Y = ((ry * r + gy * g + by * b) >> RGB2YUV_SHIFT) + 16; - ydst[2 * i + 1] = Y; - } -+ if ((width & 1) != 0) { -+ unsigned int b = src[8 * i + 2]; -+ unsigned int g = src[8 * i + 1]; -+ unsigned int r = src[8 * i + 0]; -+ -+ unsigned int Y = ((ry * r + gy * g + by * b) >> RGB2YUV_SHIFT) + 16; -+ -+ ydst[2 * i] = Y; -+ } - udst += chromStride; - vdst += chromStride; - ydst += lumStride; -diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c -index 053c06adf5..52469b2e4a 100644 ---- a/libswscale/swscale_unscaled.c -+++ b/libswscale/swscale_unscaled.c -@@ -2062,7 +2062,6 @@ void ff_get_unscaled_swscale(SwsContext *c) - const enum AVPixelFormat dstFormat = c->dstFormat; - const int flags = c->flags; - const int dstH = c->dstH; -- const int dstW = c->dstW; - int needsDither; - - needsDither = isAnyRGB(dstFormat) && -@@ -2120,12 +2119,12 @@ void ff_get_unscaled_swscale(SwsContext *c) - /* bgr24toYV12 */ - if (srcFormat == AV_PIX_FMT_BGR24 && - (dstFormat == AV_PIX_FMT_YUV420P || dstFormat == AV_PIX_FMT_YUVA420P) && -- !(flags & SWS_ACCURATE_RND) && !(dstW&1)) -+ !(flags & SWS_ACCURATE_RND)) - c->convert_unscaled = bgr24ToYv12Wrapper; - /* rgb24toYV12 */ - if (srcFormat == AV_PIX_FMT_RGB24 && - (dstFormat == AV_PIX_FMT_YUV420P || dstFormat == AV_PIX_FMT_YUVA420P) && -- !(flags & SWS_ACCURATE_RND) && !(dstW&1)) -+ !(flags & SWS_ACCURATE_RND)) - c->convert_unscaled = rgb24ToYv12Wrapper; - - /* bgrxtoYV12 */ -@@ -2136,17 +2135,17 @@ void ff_get_unscaled_swscale(SwsContext *c) - /* rgbx24toYV12 */ - if (((srcFormat == AV_PIX_FMT_RGBA && dstFormat == AV_PIX_FMT_YUV420P) || - (srcFormat == AV_PIX_FMT_RGB0 && (dstFormat == AV_PIX_FMT_YUV420P || dstFormat == AV_PIX_FMT_YUVA420P))) && -- !(flags & SWS_ACCURATE_RND) && !(dstW&1)) -+ !(flags & SWS_ACCURATE_RND)) - c->convert_unscaled = rgbxToYv12Wrapper; - /* xbgrtoYV12 */ - if (((srcFormat == AV_PIX_FMT_ABGR && dstFormat == AV_PIX_FMT_YUV420P) || - (srcFormat == AV_PIX_FMT_0BGR && (dstFormat == AV_PIX_FMT_YUV420P || dstFormat == AV_PIX_FMT_YUVA420P))) && -- !(flags & SWS_ACCURATE_RND) && !(dstW&1)) -+ !(flags & SWS_ACCURATE_RND)) - c->convert_unscaled = xbgrToYv12Wrapper; - /* xrgb24toYV12 */ - if (((srcFormat == AV_PIX_FMT_ARGB && dstFormat == AV_PIX_FMT_YUV420P) || - (srcFormat == AV_PIX_FMT_0RGB && (dstFormat == AV_PIX_FMT_YUV420P || dstFormat == AV_PIX_FMT_YUVA420P))) && -- !(flags & SWS_ACCURATE_RND) && !(dstW&1)) -+ !(flags & SWS_ACCURATE_RND)) - c->convert_unscaled = xrgbToYv12Wrapper; - - /* RGB/BGR -> RGB/BGR (no dither needed forms) */ - -From 68c6482d9473ce774e87cac2455a8c7b3e2d99b4 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Thu, 4 May 2023 14:26:14 +0000 -Subject: [PATCH 131/151] rtpenc: Add code to send H264 new extradata in - sidedata - -Fixes issue with pi V4L2 H264 encode which cannot create extradata -at init time. - -(cherry picked from commit 4f852b4b093f841b64b4934a6f1720e98e4e0f2c) ---- - libavformat/rtpenc.c | 18 ++++++++++++++++++ - 1 file changed, 18 insertions(+) - -diff --git a/libavformat/rtpenc.c b/libavformat/rtpenc.c -index a8d296a154..f67dc2a15a 100644 ---- a/libavformat/rtpenc.c -+++ b/libavformat/rtpenc.c -@@ -19,6 +19,7 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -+#include "avc.h" - #include "avformat.h" - #include "mpegts.h" - #include "internal.h" -@@ -585,8 +586,25 @@ static int rtp_write_packet(AVFormatContext *s1, AVPacket *pkt) - ff_rtp_send_vc2hq(s1, pkt->data, size, st->codecpar->field_order != AV_FIELD_PROGRESSIVE ? 1 : 0); - break; - case AV_CODEC_ID_H264: -+ { -+ uint8_t *side_data; -+ int side_data_size = 0; -+ -+ side_data = av_packet_get_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA, -+ &side_data_size); -+ -+ if (side_data_size != 0) { -+ int ps_size = side_data_size; -+ uint8_t * ps_buf = NULL; -+ -+ ff_avc_write_annexb_extradata(side_data, &ps_buf, &ps_size); -+ av_log(s1, AV_LOG_TRACE, "H264: write side data=%d\n", ps_size); -+ ff_rtp_send_h264_hevc(s1, ps_buf ? ps_buf : side_data, ps_size); -+ av_free(ps_buf); -+ } - ff_rtp_send_h264_hevc(s1, pkt->data, size); - break; -+ } - case AV_CODEC_ID_H261: - ff_rtp_send_h261(s1, pkt->data, size); - break; - -From 5240cc7fc3abed8af5f178c5461ca9fe11a7d5e4 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Mon, 5 Jun 2023 08:34:38 +0000 -Subject: [PATCH 132/151] rgb2rgb: Fix luma narrow+saturation instruction - -(cherry picked from commit 9cdac1c08ad5c0aea28907d1d3fd0bdda387955a) ---- - libswscale/aarch64/rgb2rgb_neon.S | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - -diff --git a/libswscale/aarch64/rgb2rgb_neon.S b/libswscale/aarch64/rgb2rgb_neon.S -index 978ab443ea..476ca723a0 100644 ---- a/libswscale/aarch64/rgb2rgb_neon.S -+++ b/libswscale/aarch64/rgb2rgb_neon.S -@@ -203,11 +203,11 @@ function ff_bgr24toyv12_aarch64, export=1 - shrn v26.4h, v26.4s, #12 - shrn2 v26.8h, v27.4s, #12 - add v26.8h, v26.8h, v6.8h // +128 (>> 3 = 16) -- uqrshrn v26.8b, v26.8h, #3 -+ sqrshrun v26.8b, v26.8h, #3 - shrn v28.4h, v28.4s, #12 - shrn2 v28.8h, v29.4s, #12 - add v28.8h, v28.8h, v6.8h -- uqrshrn2 v26.16b, v28.8h, #3 -+ sqrshrun2 v26.16b, v28.8h, #3 - // Y0/Y1 - - // U -@@ -282,11 +282,11 @@ function ff_bgr24toyv12_aarch64, export=1 - shrn v26.4h, v26.4s, #12 - shrn2 v26.8h, v27.4s, #12 - add v26.8h, v26.8h, v6.8h // +128 (>> 3 = 16) -- uqrshrn v26.8b, v26.8h, #3 -+ sqrshrun v26.8b, v26.8h, #3 - shrn v28.4h, v28.4s, #12 - shrn2 v28.8h, v29.4s, #12 - add v28.8h, v28.8h, v6.8h -- uqrshrn2 v26.16b, v28.8h, #3 -+ sqrshrun2 v26.16b, v28.8h, #3 - // Y0/Y1 - - // U -@@ -416,11 +416,11 @@ function ff_bgr24toyv12_aarch64, export=1 - shrn v26.4h, v26.4s, #12 - shrn2 v26.8h, v27.4s, #12 - add v26.8h, v26.8h, v6.8h // +128 (>> 3 = 16) -- uqrshrn v26.8b, v26.8h, #3 -+ sqrshrun v26.8b, v26.8h, #3 - shrn v28.4h, v28.4s, #12 - shrn2 v28.8h, v29.4s, #12 - add v28.8h, v28.8h, v6.8h -- uqrshrn2 v26.16b, v28.8h, #3 -+ sqrshrun2 v26.16b, v28.8h, #3 - // Y0/Y1 - - subs w9, w9, #16 -@@ -464,11 +464,11 @@ function ff_bgr24toyv12_aarch64, export=1 - shrn v26.4h, v26.4s, #12 - shrn2 v26.8h, v27.4s, #12 - add v26.8h, v26.8h, v6.8h // +128 (>> 3 = 16) -- uqrshrn v26.8b, v26.8h, #3 -+ sqrshrun v26.8b, v26.8h, #3 - shrn v28.4h, v28.4s, #12 - shrn2 v28.8h, v29.4s, #12 - add v28.8h, v28.8h, v6.8h -- uqrshrn2 v26.16b, v28.8h, #3 -+ sqrshrun2 v26.16b, v28.8h, #3 - // Y0/Y1 - - // Here: - -From 9474d9d227f2af488d5d2bd614c5c707479ca3c3 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Sun, 4 Jun 2023 13:37:59 +0000 -Subject: [PATCH 133/151] v4l2_m2m_dec: Tweak pending count to use dts & - reorder size - -(cherry picked from commit ca438b382c90f9a5f58f4708205e6ac25395db2a) ---- - libavcodec/v4l2_m2m.h | 1 + - libavcodec/v4l2_m2m_dec.c | 53 +++++++++++++++++++++++++++++++-------- - 2 files changed, 43 insertions(+), 11 deletions(-) - -diff --git a/libavcodec/v4l2_m2m.h b/libavcodec/v4l2_m2m.h -index ded1478a49..a506e69d67 100644 ---- a/libavcodec/v4l2_m2m.h -+++ b/libavcodec/v4l2_m2m.h -@@ -115,6 +115,7 @@ typedef struct V4L2m2mContext { - - /* req pkt */ - int req_pkt; -+ int reorder_size; - - /* Ext data sent */ - int extdata_sent; -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index d124c7b1fc..13af62e819 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -121,13 +121,18 @@ log_dump(void * logctx, int lvl, const void * const data, const size_t len) - } - #endif - --static int64_t pts_stats_guess(const pts_stats_t * const stats) -+static unsigned int pts_stats_interval(const pts_stats_t * const stats) -+{ -+ return stats->last_interval; -+} -+ -+static int64_t pts_stats_guess(const pts_stats_t * const stats, const int fail_bad_guess) - { - if (stats->last_count <= 1) - return stats->last_pts; - if (stats->last_pts == AV_NOPTS_VALUE || -- stats->last_interval == 0 || -- stats->last_count >= STATS_LAST_COUNT_MAX) -+ fail_bad_guess && (stats->last_interval == 0 || -+ stats->last_count >= STATS_LAST_COUNT_MAX)) - return AV_NOPTS_VALUE; - return stats->last_pts + (int64_t)(stats->last_count - 1) * (int64_t)stats->last_interval; - } -@@ -345,7 +350,7 @@ set_best_effort_pts(AVCodecContext *const avctx, - { - pts_stats_add(ps, frame->pts); - -- frame->best_effort_timestamp = pts_stats_guess(ps); -+ frame->best_effort_timestamp = pts_stats_guess(ps, 1); - // If we can't guess from just PTS - try DTS - if (frame->best_effort_timestamp == AV_NOPTS_VALUE) - frame->best_effort_timestamp = frame->pkt_dts; -@@ -380,15 +385,25 @@ xlat_init(xlat_track_t * const x) - } - - static int --xlat_pending(const xlat_track_t * const x) -+xlat_pending(const V4L2m2mContext * const s) - { -+ const xlat_track_t *const x = &s->xlat; - unsigned int n = x->track_no % FF_V4L2_M2M_TRACK_SIZE; - int i; -- const int64_t now = x->last_pts; -+ const int64_t now = pts_stats_guess(&s->pts_stat, 0); -+ int64_t first_dts = AV_NOPTS_VALUE; -+ int no_dts_count = 0; -+ unsigned int interval = pts_stats_interval(&s->pts_stat); - - for (i = 0; i < FF_V4L2_M2M_TRACK_SIZE; ++i, n = (n - 1) & (FF_V4L2_M2M_TRACK_SIZE - 1)) { - const V4L2m2mTrackEl * const t = x->track_els + n; - -+ if (first_dts == AV_NOPTS_VALUE) -+ if (t->dts == AV_NOPTS_VALUE) -+ ++no_dts_count; -+ else -+ first_dts = t->dts; -+ - // Discard only set on never-set or flushed entries - // So if we get here we've never successfully decoded a frame so allow - // more frames into the buffer before stalling -@@ -408,6 +423,18 @@ xlat_pending(const xlat_track_t * const x) - break; - } - -+ if (first_dts != AV_NOPTS_VALUE && now != AV_NOPTS_VALUE && interval != 0 && s->reorder_size != 0) { -+ const int iframes = (first_dts - now) / (int)interval; -+ const int t = iframes - s->reorder_size + no_dts_count; -+ -+// av_log(s->avctx, AV_LOG_DEBUG, "Last:%"PRId64", Now:%"PRId64", First:%"PRId64", delta=%"PRId64", frames=%d, nodts=%d\n", -+// x->last_dts, now, first_dts, first_dts - now, iframes, no_dts_count); -+ -+ if (iframes > 0 && iframes < 64 && t < i) { -+ return t; -+ } -+ } -+ - return i; - } - -@@ -585,12 +612,12 @@ static int qbuf_wait(AVCodecContext * const avctx, V4L2Context * const ctx) - static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) - { - V4L2m2mContext *const s = ((V4L2m2mPriv*)avctx->priv_data)->context; -- int src_rv = NQ_OK; -+ int src_rv = -1; - int dst_rv = 1; // Non-zero (done), non-negative (error) number - unsigned int i = 0; - - do { -- const int pending = xlat_pending(&s->xlat); -+ const int pending = xlat_pending(s); - const int prefer_dq = (pending > 4); - const int last_src_rv = src_rv; - -@@ -966,8 +993,10 @@ static uint32_t max_coded_size(const AVCodecContext * const avctx) - } - - static void --parse_extradata(AVCodecContext *avctx) -+parse_extradata(AVCodecContext * const avctx, V4L2m2mContext * const s) - { -+ s->reorder_size = 0; -+ - if (!avctx->extradata || !avctx->extradata_size) - return; - -@@ -996,6 +1025,7 @@ parse_extradata(AVCodecContext *avctx) - avctx->profile = ff_h264_get_profile(sps); - avctx->level = sps->level_idc; - } -+ s->reorder_size = sps->num_reorder_frames; - } - ff_h264_ps_uninit(&ps); - break; -@@ -1025,6 +1055,7 @@ parse_extradata(AVCodecContext *avctx) - if (sps) { - avctx->profile = sps->ptl.general_ptl.profile_idc; - avctx->level = sps->ptl.general_ptl.level_idc; -+ s->reorder_size = sps->temporal_layer[sps->max_sub_layers - 1].max_dec_pic_buffering; - } - } - ff_hevc_ps_uninit(&ps); -@@ -1057,12 +1088,12 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx) - avctx->ticks_per_frame = 2; - } - -- parse_extradata(avctx); -- - ret = ff_v4l2_m2m_create_context(priv, &s); - if (ret < 0) - return ret; - -+ parse_extradata(avctx, s); -+ - xlat_init(&s->xlat); - pts_stats_init(&s->pts_stat, avctx, "decoder"); - - -From 2145b9c9177f0fe9569ce39e2d4eb629caf8bd47 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Wed, 7 Jun 2023 11:14:52 +0000 -Subject: [PATCH 134/151] v4l2_m2m: Add encode size check - -Previously an out of bounds size would fail whilst trying to copy the -buffer with an unhelpful message. This produces a better error at init -time. - -(cherry picked from commit 0b61c4617e26f043d28d44c8767f7b9fd4882f97) ---- - libavcodec/v4l2_m2m.c | 43 +++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 43 insertions(+) - -diff --git a/libavcodec/v4l2_m2m.c b/libavcodec/v4l2_m2m.c -index f802687b1b..28d9ed4988 100644 ---- a/libavcodec/v4l2_m2m.c -+++ b/libavcodec/v4l2_m2m.c -@@ -109,6 +109,44 @@ static int v4l2_prepare_contexts(V4L2m2mContext *s, int probe) - return AVERROR(EINVAL); - } - -+static int check_size(AVCodecContext * const avctx, V4L2m2mContext * const s) -+{ -+ struct v4l2_format fmt = {.type = s->output.type}; -+ int rv; -+ uint32_t pixfmt = ff_v4l2_format_avfmt_to_v4l2(avctx->pix_fmt); -+ unsigned int w; -+ unsigned int h; -+ -+ if (V4L2_TYPE_IS_MULTIPLANAR(fmt.type)) { -+ fmt.fmt.pix_mp.pixelformat = pixfmt; -+ fmt.fmt.pix_mp.width = avctx->width; -+ fmt.fmt.pix_mp.height = avctx->height; -+ } -+ else { -+ fmt.fmt.pix.pixelformat = pixfmt; -+ fmt.fmt.pix.width = avctx->width; -+ fmt.fmt.pix.height = avctx->height; -+ } -+ -+ rv = ioctl(s->fd, VIDIOC_TRY_FMT, &fmt); -+ -+ if (rv != 0) { -+ rv = AVERROR(errno); -+ av_log(avctx, AV_LOG_ERROR, "%s: Tryfmt failed: %s\n", __func__, av_err2str(rv)); -+ return rv; -+ } -+ -+ w = ff_v4l2_get_format_width(&fmt); -+ h = ff_v4l2_get_format_height(&fmt); -+ -+ if (w < avctx->width || h < avctx->height) { -+ av_log(avctx, AV_LOG_WARNING, "%s: Size check failed: asked for %dx%d, got: %dx%d\n", __func__, avctx->width, avctx->height, w, h); -+ return AVERROR(EINVAL); -+ } -+ -+ return 0; -+} -+ - static int v4l2_probe_driver(V4L2m2mContext *s) - { - void *log_ctx = s->avctx; -@@ -128,6 +166,11 @@ static int v4l2_probe_driver(V4L2m2mContext *s) - goto done; - } - -+ // If being given frames (encode) check that V4L2 can cope with the size -+ if (s->output.av_codec_id == AV_CODEC_ID_RAWVIDEO && -+ (ret = check_size(s->avctx, s)) != 0) -+ goto done; -+ - ret = ff_v4l2_context_get_format(&s->capture, 1); - if (ret) { - av_log(log_ctx, AV_LOG_DEBUG, "v4l2 capture format not supported\n"); - -From 805985ea191c98885a74dbf994b1ca11551cd81e Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Fri, 9 Jun 2023 10:28:12 +0000 -Subject: [PATCH 135/151] vf_bwdif: Add attributes to ask for vectorization - -(cherry picked from commit 281250290ba5c2dcd8676e9a261050e65c10bcb7) ---- - libavfilter/vf_bwdif.c | 29 +++++++++++++++-------------- - 1 file changed, 15 insertions(+), 14 deletions(-) - -diff --git a/libavfilter/vf_bwdif.c b/libavfilter/vf_bwdif.c -index 65c617ebb3..09e68523bb 100644 ---- a/libavfilter/vf_bwdif.c -+++ b/libavfilter/vf_bwdif.c -@@ -74,10 +74,10 @@ typedef struct ThreadData { - int temporal_diff1 =(FFABS(prev[mrefs] - c) + FFABS(prev[prefs] - e)) >> 1; \ - int temporal_diff2 =(FFABS(next[mrefs] - c) + FFABS(next[prefs] - e)) >> 1; \ - int diff = FFMAX3(temporal_diff0 >> 1, temporal_diff1, temporal_diff2); \ -- \ -+ {/*\ - if (!diff) { \ - dst[0] = d; \ -- } else { -+ } else {*/ - - #define SPAT_CHECK() \ - int b = ((prev2[mrefs2] + next2[mrefs2]) >> 1) - c; \ -@@ -89,15 +89,16 @@ typedef struct ThreadData { - diff = FFMAX3(diff, min, -max); - - #define FILTER_LINE() \ -+ int i1, i2; \ - SPAT_CHECK() \ -- if (FFABS(c - e) > temporal_diff0) { \ -- interpol = (((coef_hf[0] * (prev2[0] + next2[0]) \ -+ /*if (FFABS(c - e) > temporal_diff0)*/ { \ -+ i1 = (((coef_hf[0] * (prev2[0] + next2[0]) \ - - coef_hf[1] * (prev2[mrefs2] + next2[mrefs2] + prev2[prefs2] + next2[prefs2]) \ - + coef_hf[2] * (prev2[mrefs4] + next2[mrefs4] + prev2[prefs4] + next2[prefs4])) >> 2) \ - + coef_lf[0] * (c + e) - coef_lf[1] * (cur[mrefs3] + cur[prefs3])) >> 13; \ -- } else { \ -- interpol = (coef_sp[0] * (c + e) - coef_sp[1] * (cur[mrefs3] + cur[prefs3])) >> 13; \ -- } -+ } /*else*/ { \ -+ i2 = (coef_sp[0] * (c + e) - coef_sp[1] * (cur[mrefs3] + cur[prefs3])) >> 13; \ -+ }interpol = FFABS(c - e) > temporal_diff0 ? i1:i2;\ - - #define FILTER_EDGE() \ - if (spat) { \ -@@ -111,7 +112,7 @@ typedef struct ThreadData { - else if (interpol < d - diff) \ - interpol = d - diff; \ - \ -- dst[0] = av_clip(interpol, 0, clip_max); \ -+ dst[0] = !diff ? d : av_clip(interpol, 0, clip_max); \ - } \ - \ - dst++; \ -@@ -122,7 +123,7 @@ typedef struct ThreadData { - next2++; \ - } - --static void filter_intra(void *dst1, void *cur1, int w, int prefs, int mrefs, -+static void __attribute__((optimize("tree-vectorize"))) filter_intra(void *restrict dst1, void *restrict cur1, int w, int prefs, int mrefs, - int prefs3, int mrefs3, int parity, int clip_max) - { - uint8_t *dst = dst1; -@@ -132,7 +133,7 @@ static void filter_intra(void *dst1, void *cur1, int w, int prefs, int mrefs, - FILTER_INTRA() - } - --static void filter_line_c(void *dst1, void *prev1, void *cur1, void *next1, -+static void __attribute__((optimize("tree-vectorize"))) filter_line_c(void *restrict dst1, void *restrict prev1, void *restrict cur1, void *restrict next1, - int w, int prefs, int mrefs, int prefs2, int mrefs2, - int prefs3, int mrefs3, int prefs4, int mrefs4, - int parity, int clip_max) -@@ -150,7 +151,7 @@ static void filter_line_c(void *dst1, void *prev1, void *cur1, void *next1, - FILTER2() - } - --static void filter_edge(void *dst1, void *prev1, void *cur1, void *next1, -+static void __attribute__((optimize("tree-vectorize"))) filter_edge(void *restrict dst1, void *restrict prev1, void *restrict cur1, void *restrict next1, - int w, int prefs, int mrefs, int prefs2, int mrefs2, - int parity, int clip_max, int spat) - { -@@ -167,7 +168,7 @@ static void filter_edge(void *dst1, void *prev1, void *cur1, void *next1, - FILTER2() - } - --static void filter_intra_16bit(void *dst1, void *cur1, int w, int prefs, int mrefs, -+static void __attribute__((optimize("tree-vectorize"))) filter_intra_16bit(void *restrict dst1, void *restrict cur1, int w, int prefs, int mrefs, - int prefs3, int mrefs3, int parity, int clip_max) - { - uint16_t *dst = dst1; -@@ -177,7 +178,7 @@ static void filter_intra_16bit(void *dst1, void *cur1, int w, int prefs, int mre - FILTER_INTRA() - } - --static void filter_line_c_16bit(void *dst1, void *prev1, void *cur1, void *next1, -+static void __attribute__((optimize("tree-vectorize"))) filter_line_c_16bit(void *restrict dst1, void *restrict prev1, void *restrict cur1, void *restrict next1, - int w, int prefs, int mrefs, int prefs2, int mrefs2, - int prefs3, int mrefs3, int prefs4, int mrefs4, - int parity, int clip_max) -@@ -195,7 +196,7 @@ static void filter_line_c_16bit(void *dst1, void *prev1, void *cur1, void *next1 - FILTER2() - } - --static void filter_edge_16bit(void *dst1, void *prev1, void *cur1, void *next1, -+static void __attribute__((optimize("tree-vectorize"))) filter_edge_16bit(void *restrict dst1, void *restrict prev1, void *restrict cur1, void *restrict next1, - int w, int prefs, int mrefs, int prefs2, int mrefs2, - int parity, int clip_max, int spat) - { - -From f4012f09da1c57a0aa5db01f9096992d0c385f7b Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 13 Jun 2023 13:07:55 +0000 -Subject: [PATCH 136/151] v4l2m2m_dec: Fix h264 reorder size if no sps - initially - -(cherry picked from commit 8832f7924bf47cbca0de251d7b406917f958ebf4) ---- - libavcodec/v4l2_m2m_dec.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c -index 13af62e819..11c83b2d66 100644 ---- a/libavcodec/v4l2_m2m_dec.c -+++ b/libavcodec/v4l2_m2m_dec.c -@@ -1024,8 +1024,8 @@ parse_extradata(AVCodecContext * const avctx, V4L2m2mContext * const s) - if (sps) { - avctx->profile = ff_h264_get_profile(sps); - avctx->level = sps->level_idc; -+ s->reorder_size = sps->num_reorder_frames; - } -- s->reorder_size = sps->num_reorder_frames; - } - ff_h264_ps_uninit(&ps); - break; - -From fd31937e4befa2368d48e234d66fb962246bf777 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Fri, 30 Jun 2023 18:03:29 +0000 -Subject: [PATCH 137/151] sand_fns: Add missing uxtw for neon stride - ---- - libavutil/aarch64/rpi_sand_neon.S | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/libavutil/aarch64/rpi_sand_neon.S b/libavutil/aarch64/rpi_sand_neon.S -index 2f07d9674c..19411cf3f1 100644 ---- a/libavutil/aarch64/rpi_sand_neon.S -+++ b/libavutil/aarch64/rpi_sand_neon.S -@@ -469,6 +469,7 @@ endfunc - function ff_rpi_sand30_lines_to_planar_y16, export=1 - lsl w4, w4, #7 - sub w4, w4, #64 -+ uxtw x4, w4 - sub w1, w1, w7, lsl #1 - uxtw x6, w6 - add x8, x2, x6, lsl #7 -@@ -634,6 +635,7 @@ endfunc - function ff_rpi_sand30_lines_to_planar_y8, export=1 - lsl w4, w4, #7 - sub w4, w4, #64 -+ uxtw x4, w4 - sub w1, w1, w7 - uxtw x6, w6 - add x8, x2, x6, lsl #7 - -From f6a19a36ffe0dbe0a6e2e450dafec6711db19057 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Fri, 30 Jun 2023 18:12:16 +0000 -Subject: [PATCH 138/151] sand_fns: Rework aarch64 neon - sand30_lines_to_planar_c16 - -Previous version could overflow its write buffer on small buffers -which sometimes crashed WPP_F_ericsson_MAIN10_2. - -This version is probably faster too ---- - libavutil/aarch64/rpi_sand_neon.S | 329 ++++++++++++++---------------- - 1 file changed, 151 insertions(+), 178 deletions(-) - -diff --git a/libavutil/aarch64/rpi_sand_neon.S b/libavutil/aarch64/rpi_sand_neon.S -index 19411cf3f1..af7e2a88c4 100644 ---- a/libavutil/aarch64/rpi_sand_neon.S -+++ b/libavutil/aarch64/rpi_sand_neon.S -@@ -248,199 +248,172 @@ incomplete_block_loop_end_c8: - ret - endfunc - --//void ff_rpi_sand30_lines_to_planar_c16( --// uint8_t * dst_u, // [x0] --// unsigned int dst_stride_u, // [w1] == _w*2 --// uint8_t * dst_v, // [x2] --// unsigned int dst_stride_v, // [w3] == _w*2 --// const uint8_t * src, // [x4] --// unsigned int stride1, // [w5] == 128 --// unsigned int stride2, // [w6] --// unsigned int _x, // [w7] == 0 --// unsigned int y, // [sp, #0] == 0 --// unsigned int _w, // [sp, #8] -> w3 --// unsigned int h); // [sp, #16] -> w7 -- --.macro rpi_sand30_lines_to_planar_c16_block_half -- ld1 { v0.4s, v1.4s, v2.4s, v3.4s }, [x13], #64 -- -- xtn v4.4h, v0.4s -- ushr v0.4s, v0.4s, #10 -- xtn v5.4h, v0.4s -- ushr v0.4s, v0.4s, #10 -- xtn v6.4h, v0.4s -- xtn2 v4.8h, v1.4s -- ushr v1.4s, v1.4s, #10 -- xtn2 v5.8h, v1.4s -- ushr v1.4s, v1.4s, #10 -- xtn2 v6.8h, v1.4s -- and v4.16b, v4.16b, v16.16b -- and v5.16b, v5.16b, v16.16b -- and v6.16b, v6.16b, v16.16b -- st3 { v4.8h, v5.8h, v6.8h }, [sp], #48 -- -- xtn v4.4h, v2.4s -- ushr v2.4s, v2.4s, #10 -- xtn v5.4h, v2.4s -- ushr v2.4s, v2.4s, #10 -- xtn v6.4h, v2.4s -- xtn2 v4.8h, v3.4s -- ushr v3.4s, v3.4s, #10 -- xtn2 v5.8h, v3.4s -- ushr v3.4s, v3.4s, #10 -- xtn2 v6.8h, v3.4s -- and v4.16b, v4.16b, v16.16b -- and v5.16b, v5.16b, v16.16b -- and v6.16b, v6.16b, v16.16b -- st3 { v4.8h, v5.8h, v6.8h }, [sp] -- sub sp, sp, #48 --.endm -- --function ff_rpi_sand30_lines_to_planar_c16, export=1 -- stp x19, x20, [sp, #-48]! -- stp x21, x22, [sp, #16] -- stp x23, x24, [sp, #32] -- -- ldr w3, [sp, #48+8] // w3 = width -- ldr w7, [sp, #48+16] // w7 = height -- -- // reserve space on the stack for intermediate results -- sub sp, sp, #256 -+// Unzip chroma -+// -+// On entry: -+// a0 = V0, U2, ... -+// a1 = U0, V1, ... -+// a2 = U1, V2, ... -+// b0 = V8, U10, ... -+// b1 = U8, V9, ... -+// b2 = U9, V10, ... -+// -+// On exit: -+// d0 = U0, U3, ... -+// ... -+// a0 = V0, V3, .. -+// ... -+// -+// Reg order for USAND is a1, a0, a2 (i.e. swap natural order of 1st 2 dest regs) - -- // number of 128byte blocks per row, w8 = width / 48 -- mov w9, #48 -- udiv w8, w3, w9 -+.macro UZPH_C d0, d1, d2, a0, a1, a2, b0, b1, b2 -+ uzp1 \d0\().8h, \a1\().8h, \b1\().8h -+ uzp1 \d1\().8h, \a2\().8h, \b2\().8h -+ uzp2 \d2\().8h, \a0\().8h, \b0\().8h - -- // remaining pixels (rem_pix) per row, w9 = width - w8 * 48 -- mul w9, w8, w9 -- sub w9, w3, w9 -+ uzp1 \a0\().8h, \a0\().8h, \b0\().8h -+ uzp2 \a1\().8h, \a1\().8h, \b1\().8h -+ uzp2 \a2\().8h, \a2\().8h, \b2\().8h -+.endm - -- // row offset, the beginning of the next row to process -- eor w10, w10, w10 -+// SAND30 -> 10bit -+.macro USAND10 d0, d1, d2, a0, a1 -+ shrn \d2\().4h, \a0\().4s, #14 -+ xtn \d0\().4h, \a0\().4s -+ shrn \d1\().4h, \a0\().4s, #10 - -- // offset to the beginning of the next block, w11 = stride2 * 128 - 128 -- lsl w11, w6, #7 -- sub w11, w11, #128 -+ shrn2 \d2\().8h, \a1\().4s, #14 -+ xtn2 \d0\().8h, \a1\().4s -+ shrn2 \d1\().8h, \a1\().4s, #10 - -- // decrease the height by one and in case of remaining pixels increase the block count by one -- sub w7, w7, #1 -- cmp w9, #0 -- cset w19, ne // w19 == 1 iff reamining pixels != 0 -- add w8, w8, w19 -+ ushr \d2\().8h, \d2\().8h, #6 -+ bic \d0\().8h, #0xfc, lsl #8 -+ bic \d1\().8h, #0xfc, lsl #8 -+.endm - -- // bytes we have to move dst back by at the end of every row -- mov w21, #48*2 -- mul w21, w21, w8 -- sub w21, w1, w21 -+// void ff_rpi_sand30_lines_to_planar_c16( -+// uint8_t * dst_u, // [x0] -+// unsigned int dst_stride_u, // [w1] -+// uint8_t * dst_v, // [x2] -+// unsigned int dst_stride_v, // [w3] -+// const uint8_t * src, // [x4] -+// unsigned int stride1, // [w5] 128 -+// unsigned int stride2, // [w6] -+// unsigned int _x, // [w7] 0 -+// unsigned int y, // [sp, #0] -+// unsigned int _w, // [sp, #8] w9 -+// unsigned int h); // [sp, #16] w10 - -- mov w20, #0 // w20 = flag, last row processed -+function ff_rpi_sand30_lines_to_planar_c16, export=1 -+ ldr w7, [sp, #0] // y -+ ldr w8, [sp, #8] // _w -+ ldr w10, [sp, #16] // h -+ lsl w6, w6, #7 // Fixup stride2 -+ sub w6, w6, #64 -+ uxtw x6, w6 -+ sub w1, w1, w8, LSL #1 // Fixup chroma strides -+ sub w3, w3, w8, LSL #1 -+ lsl w7, w7, #7 // Add y to src -+ add x4, x4, w7, UXTW -+10: -+ mov w13, #0 -+ mov x5, x4 -+ mov w9, w8 -+1: -+ ld1 {v0.4s-v3.4s}, [x5], #64 -+ ld1 {v4.4s-v7.4s}, [x5], x6 - -- mov x12, #0x03ff03ff03ff03ff -- dup v16.2d, x12 -+ USAND10 v17, v16, v18, v0, v1 -+ USAND10 v20, v19, v21, v2, v3 -+ UZPH_C v0, v1, v2, v16, v17, v18, v19, v20, v21 -+ USAND10 v23, v22, v24, v4, v5 -+ USAND10 v26, v25, v27, v6, v7 -+ UZPH_C v4, v5, v6, v22, v23, v24, v25, v26, v27 - -- // iterate through rows, row counter = w12 = 0 -- eor w12, w12, w12 --row_loop_c16: -- cmp w12, w7 -- bge row_loop_c16_fin -+ subs w9, w9, #48 -+ blt 2f - -- // address of row data = src + row_offset -- mov x13, x4 -- add x13, x13, x10 -+ st3 {v0.8h-v2.8h}, [x0], #48 -+ st3 {v4.8h-v6.8h}, [x0], #48 -+ st3 {v16.8h-v18.8h}, [x2], #48 -+ st3 {v22.8h-v24.8h}, [x2], #48 - -- eor w14, w14, w14 --block_loop_c16: -- cmp w14, w8 -- bge block_loop_c16_fin -- -- rpi_sand30_lines_to_planar_c16_block_half -- -- ld2 { v0.8h, v1.8h }, [sp], #32 -- ld2 { v2.8h, v3.8h }, [sp], #32 -- ld2 { v4.8h, v5.8h }, [sp] -- sub sp, sp, #64 -- -- st1 { v0.8h }, [x0], #16 -- st1 { v2.8h }, [x0], #16 -- st1 { v4.8h }, [x0], #16 -- st1 { v1.8h }, [x2], #16 -- st1 { v3.8h }, [x2], #16 -- st1 { v5.8h }, [x2], #16 -- -- rpi_sand30_lines_to_planar_c16_block_half -- -- ld2 { v0.8h, v1.8h }, [sp], #32 -- ld2 { v2.8h, v3.8h }, [sp], #32 -- ld2 { v4.8h, v5.8h }, [sp] -- sub sp, sp, #64 -- -- st1 { v0.8h }, [x0], #16 -- st1 { v2.8h }, [x0], #16 -- st1 { v4.8h }, [x0], #16 -- st1 { v1.8h }, [x2], #16 -- st1 { v3.8h }, [x2], #16 -- st1 { v5.8h }, [x2], #16 -- -- add x13, x13, x11 // offset to next block -- add w14, w14, #1 -- b block_loop_c16 --block_loop_c16_fin: -+ bne 1b -+11: -+ subs w10, w10, #1 -+ add x4, x4, #128 -+ add x0, x0, w1, UXTW -+ add x2, x2, w3, UXTW -+ bne 10b -+99: -+ ret - -- add w10, w10, #128 -- add w12, w12, #1 -- add x0, x0, w21, sxtw // move dst pointers back by x21 -- add x2, x2, w21, sxtw -- b row_loop_c16 --row_loop_c16_fin: -- -- cmp w20, #1 -- beq row_loop_c16_fin2 -- mov w20, #1 -- sub w8, w8, w19 // decrease block count by w19 -- add w7, w7, #1 // increase height -- b row_loop_c16 -- --row_loop_c16_fin2: -- sub x0, x0, w21, sxtw // readd x21 in case of the last row -- sub x2, x2, w21, sxtw // so that we can write out the few remaining pixels -- -- // last incomplete block to be finished -- // read operations are fine, stride2 is more than large enough even if rem_pix is 0 -- rpi_sand30_lines_to_planar_c16_block_half -- ld2 { v0.8h, v1.8h }, [sp], #32 -- ld2 { v2.8h, v3.8h }, [sp], #32 -- ld2 { v4.8h, v5.8h }, [sp], #32 -- rpi_sand30_lines_to_planar_c16_block_half -- ld2 { v0.8h, v1.8h }, [sp], #32 -- ld2 { v2.8h, v3.8h }, [sp], #32 -- ld2 { v4.8h, v5.8h }, [sp] -- sub sp, sp, #160 -- -- mov x4, sp -- eor w20, w20, w20 --rem_pix_c16_loop: -- cmp w20, w9 -- bge rem_pix_c16_fin -- -- ldr w22, [x4], #4 -- str w22, [x0], #2 -- lsr w22, w22, #16 -- str w22, [x2], #2 -- -- add w20, w20, #1 -- b rem_pix_c16_loop --rem_pix_c16_fin: -- -- add sp, sp, #256 -- -- ldp x23, x24, [sp, #32] -- ldp x21, x22, [sp, #16] -- ldp x19, x20, [sp], #48 -- ret -+// Partial final write -+2: -+ cmp w9, #24-48 -+ blt 1f -+ st3 {v0.8h - v2.8h}, [x0], #48 -+ st3 {v16.8h - v18.8h}, [x2], #48 -+ beq 11b -+ mov v0.16b, v4.16b -+ mov v1.16b, v5.16b -+ sub w9, w9, #24 -+ mov v2.16b, v6.16b -+ mov v16.16b, v22.16b -+ mov v17.16b, v23.16b -+ mov v18.16b, v24.16b -+1: -+ cmp w9, #12-48 -+ blt 1f -+ st3 {v0.4h - v2.4h}, [x0], #24 -+ st3 {v16.4h - v18.4h}, [x2], #24 -+ beq 11b -+ mov v0.2d[0], v0.2d[1] -+ sub w9, w9, #12 -+ mov v1.2d[0], v1.2d[1] -+ mov v2.2d[0], v2.2d[1] -+ mov v16.2d[0], v16.2d[1] -+ mov v17.2d[0], v17.2d[1] -+ mov v18.2d[0], v18.2d[1] -+1: -+ cmp w9, #6-48 -+ blt 1f -+ st3 {v0.h - v2.h}[0], [x0], #6 -+ st3 {v0.h - v2.h}[1], [x0], #6 -+ st3 {v16.h - v18.h}[0], [x2], #6 -+ st3 {v16.h - v18.h}[1], [x2], #6 -+ beq 11b -+ mov v0.s[0], v0.s[1] -+ sub w9, w9, #6 -+ mov v1.s[0], v1.s[1] -+ mov v2.s[0], v2.s[1] -+ mov v16.s[0], v16.s[1] -+ mov v17.s[0], v17.s[1] -+ mov v18.s[0], v18.s[1] -+1: -+ cmp w9, #3-48 -+ blt 1f -+ st3 {v0.h - v2.h}[0], [x0], #6 -+ st3 {v16.h - v18.h}[0], [x2], #6 -+ beq 11b -+ mov v0.h[0], v0.h[1] -+ sub w9, w9, #3 -+ mov v1.h[0], v1.h[1] -+ mov v16.h[0], v16.h[1] -+ mov v17.h[0], v17.h[1] -+1: -+ cmp w9, #2-48 -+ blt 1f -+ st2 {v0.h - v1.h}[0], [x0], #4 -+ st2 {v16.h - v17.h}[0], [x2], #4 -+ b 11b -+1: -+ st1 {v0.h}[0], [x0], #2 -+ st1 {v16.h}[0], [x2], #2 -+ b 11b - endfunc - - -- - //void ff_rpi_sand30_lines_to_planar_p010( - // uint8_t * dest, - // unsigned int dst_stride, - -From 68356e594ff32e18e419a476889d958dc24af4b2 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Fri, 30 Jun 2023 19:41:06 +0000 -Subject: [PATCH 139/151] sand_fns: Minor optimisations to aarch64 neon - ---- - libavutil/aarch64/rpi_sand_neon.S | 140 ++++++------------------------ - 1 file changed, 28 insertions(+), 112 deletions(-) - -diff --git a/libavutil/aarch64/rpi_sand_neon.S b/libavutil/aarch64/rpi_sand_neon.S -index af7e2a88c4..11658de0c8 100644 ---- a/libavutil/aarch64/rpi_sand_neon.S -+++ b/libavutil/aarch64/rpi_sand_neon.S -@@ -279,18 +279,37 @@ endfunc - // SAND30 -> 10bit - .macro USAND10 d0, d1, d2, a0, a1 - shrn \d2\().4h, \a0\().4s, #14 -- xtn \d0\().4h, \a0\().4s - shrn \d1\().4h, \a0\().4s, #10 - - shrn2 \d2\().8h, \a1\().4s, #14 -- xtn2 \d0\().8h, \a1\().4s - shrn2 \d1\().8h, \a1\().4s, #10 -+ uzp1 \d0\().8h, \a0\().8h, \a1\().8h - - ushr \d2\().8h, \d2\().8h, #6 - bic \d0\().8h, #0xfc, lsl #8 - bic \d1\().8h, #0xfc, lsl #8 - .endm - -+// SAND30 -> 8bit -+.macro USAND8 d0, d1, d2, a0, a1, a2, a3, t0, t1, t2 -+ shrn \d1\().4h, \a0\().4s, #12 -+ shrn2 \d1\().8h, \a1\().4s, #12 -+ uzp1 \d0\().8h, \a0\().8h, \a1\().8h -+ uzp2 \d2\().8h, \a0\().8h, \a1\().8h -+ -+ shrn \t1\().4h, \a2\().4s, #12 -+ shrn2 \t1\().8h, \a3\().4s, #12 -+ uzp1 \t0\().8h, \a2\().8h, \a3\().8h -+ uzp2 \t2\().8h, \a2\().8h, \a3\().8h -+ -+ shrn \d0\().8b, \d0\().8h, #2 -+ shrn2 \d0\().16b, \t0\().8h, #2 -+ shrn \d2\().8b, \d2\().8h, #6 -+ shrn2 \d2\().16b, \t2\().8h, #6 -+ uzp1 \d1\().16b, \d1\().16b, \t1\().16b -+.endm -+ -+ - // void ff_rpi_sand30_lines_to_planar_c16( - // uint8_t * dst_u, // [x0] - // unsigned int dst_stride_u, // [w1] -@@ -322,6 +341,7 @@ function ff_rpi_sand30_lines_to_planar_c16, export=1 - 1: - ld1 {v0.4s-v3.4s}, [x5], #64 - ld1 {v4.4s-v7.4s}, [x5], x6 -+ subs w9, w9, #48 - - USAND10 v17, v16, v18, v0, v1 - USAND10 v20, v19, v21, v2, v3 -@@ -330,7 +350,6 @@ function ff_rpi_sand30_lines_to_planar_c16, export=1 - USAND10 v26, v25, v27, v6, v7 - UZPH_C v4, v5, v6, v22, v23, v24, v25, v26, v27 - -- subs w9, w9, #48 - blt 2f - - st3 {v0.8h-v2.8h}, [x0], #48 -@@ -457,61 +476,10 @@ function ff_rpi_sand30_lines_to_planar_y16, export=1 - - subs w5, w5, #96 - -- // v0, v1 -- -- shrn v18.4h, v0.4s, #14 -- xtn v16.4h, v0.4s -- shrn v17.4h, v0.4s, #10 -- -- shrn2 v18.8h, v1.4s, #14 -- xtn2 v16.8h, v1.4s -- shrn2 v17.8h, v1.4s, #10 -- -- ushr v18.8h, v18.8h, #6 -- bic v16.8h, #0xfc, lsl #8 -- bic v17.8h, #0xfc, lsl #8 -- -- // v2, v3 -- -- shrn v21.4h, v2.4s, #14 -- xtn v19.4h, v2.4s -- shrn v20.4h, v2.4s, #10 -- -- shrn2 v21.8h, v3.4s, #14 -- xtn2 v19.8h, v3.4s -- shrn2 v20.8h, v3.4s, #10 -- -- ushr v21.8h, v21.8h, #6 -- bic v19.8h, #0xfc, lsl #8 -- bic v20.8h, #0xfc, lsl #8 -- -- // v4, v5 -- -- shrn v24.4h, v4.4s, #14 -- xtn v22.4h, v4.4s -- shrn v23.4h, v4.4s, #10 -- -- shrn2 v24.8h, v5.4s, #14 -- xtn2 v22.8h, v5.4s -- shrn2 v23.8h, v5.4s, #10 -- -- ushr v24.8h, v24.8h, #6 -- bic v22.8h, #0xfc, lsl #8 -- bic v23.8h, #0xfc, lsl #8 -- -- // v6, v7 -- -- shrn v27.4h, v6.4s, #14 -- xtn v25.4h, v6.4s -- shrn v26.4h, v6.4s, #10 -- -- shrn2 v27.8h, v7.4s, #14 -- xtn2 v25.8h, v7.4s -- shrn2 v26.8h, v7.4s, #10 -- -- ushr v27.8h, v27.8h, #6 -- bic v25.8h, #0xfc, lsl #8 -- bic v26.8h, #0xfc, lsl #8 -+ USAND10 v16, v17, v18, v0, v1 -+ USAND10 v19, v20, v21, v2, v3 -+ USAND10 v22, v23, v24, v4, v5 -+ USAND10 v25, v26, v27, v6, v7 - - blt 2f - -@@ -624,60 +592,8 @@ function ff_rpi_sand30_lines_to_planar_y8, export=1 - subs w5, w5, #96 - - // v0, v1 -- -- shrn v18.4h, v0.4s, #16 -- xtn v16.4h, v0.4s -- shrn v17.4h, v0.4s, #12 -- -- shrn2 v18.8h, v1.4s, #16 -- xtn2 v16.8h, v1.4s -- shrn2 v17.8h, v1.4s, #12 -- -- shrn v18.8b, v18.8h, #6 -- shrn v16.8b, v16.8h, #2 -- xtn v17.8b, v17.8h -- -- // v2, v3 -- -- shrn v21.4h, v2.4s, #16 -- xtn v19.4h, v2.4s -- shrn v20.4h, v2.4s, #12 -- -- shrn2 v21.8h, v3.4s, #16 -- xtn2 v19.8h, v3.4s -- shrn2 v20.8h, v3.4s, #12 -- -- shrn2 v18.16b, v21.8h, #6 -- shrn2 v16.16b, v19.8h, #2 -- xtn2 v17.16b, v20.8h -- -- // v4, v5 -- -- shrn v24.4h, v4.4s, #16 -- xtn v22.4h, v4.4s -- shrn v23.4h, v4.4s, #12 -- -- shrn2 v24.8h, v5.4s, #16 -- xtn2 v22.8h, v5.4s -- shrn2 v23.8h, v5.4s, #12 -- -- shrn v21.8b, v24.8h, #6 -- shrn v19.8b, v22.8h, #2 -- xtn v20.8b, v23.8h -- -- // v6, v7 -- -- shrn v27.4h, v6.4s, #16 -- xtn v25.4h, v6.4s -- shrn v26.4h, v6.4s, #12 -- -- shrn2 v27.8h, v7.4s, #16 -- xtn2 v25.8h, v7.4s -- shrn2 v26.8h, v7.4s, #12 -- -- shrn2 v21.16b, v27.8h, #6 -- shrn2 v19.16b, v25.8h, #2 -- xtn2 v20.16b, v26.8h -+ USAND8 v16, v17, v18, v0, v1, v2, v3, v22, v23, v24 -+ USAND8 v19, v20, v21, v4, v5, v6, v7, v22, v23, v24 - - blt 2f - - -From 3abb0dcc453aba0a069bc1a8f26ba77913c5ef2b Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Sat, 1 Jul 2023 18:43:32 +0000 -Subject: [PATCH 140/151] sand_fns: Add test for neon to sand30 fns so they can - be tested by checkasm - ---- - libavutil/rpi_sand_fns.c | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) - -diff --git a/libavutil/rpi_sand_fns.c b/libavutil/rpi_sand_fns.c -index b6071e2928..0626bb06cb 100644 ---- a/libavutil/rpi_sand_fns.c -+++ b/libavutil/rpi_sand_fns.c -@@ -35,10 +35,12 @@ Authors: John Cox - #include "frame.h" - - #if ARCH_ARM && HAVE_NEON --#include "arm/rpi_sand_neon.h" -+#include "libavutil/arm/cpu.h" -+#include "libavutil/arm/rpi_sand_neon.h" - #define HAVE_SAND_ASM 1 - #elif ARCH_AARCH64 && HAVE_NEON --#include "aarch64/rpi_sand_neon.h" -+#include "libavutil/aarch64/cpu.h" -+#include "libavutil/aarch64/rpi_sand_neon.h" - #define HAVE_SAND_ASM 1 - #else - #define HAVE_SAND_ASM 0 -@@ -97,7 +99,7 @@ void av_rpi_sand30_to_planar_y16(uint8_t * dst, const unsigned int dst_stride, - const unsigned int slice_inc = ((stride2 - 1) * stride1) >> 2; // RHS of a stripe to LHS of next in words - - #if HAVE_SAND_ASM -- if (_x == 0) { -+ if (_x == 0 && have_neon(av_get_cpu_flags())) { - ff_rpi_sand30_lines_to_planar_y16(dst, dst_stride, src, stride1, stride2, _x, y, _w, h); - return; - } -@@ -163,7 +165,7 @@ void av_rpi_sand30_to_planar_c16(uint8_t * dst_u, const unsigned int dst_stride_ - const unsigned int slice_inc = ((stride2 - 1) * stride1) >> 2; // RHS of a stripe to LHS of next in words - - #if HAVE_SAND_ASM -- if (_x == 0) { -+ if (_x == 0 && have_neon(av_get_cpu_flags())) { - ff_rpi_sand30_lines_to_planar_c16(dst_u, dst_stride_u, dst_v, dst_stride_v, - src, stride1, stride2, _x, y, _w, h); - return; - -From fb72aa34ec2c42fc595bb1a6c32b599da870fa2b Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Sat, 1 Jul 2023 18:43:57 +0000 -Subject: [PATCH 141/151] checkasm: Add tests for rpi_sand sand30 fns - -Something of a kludge for function selection as, at the moment, the -rpi_sand fns don't have a jump table that we could use for selection. ---- - tests/checkasm/Makefile | 3 +- - tests/checkasm/checkasm.c | 3 + - tests/checkasm/checkasm.h | 1 + - tests/checkasm/rpi_sand.c | 118 ++++++++++++++++++++++++++++++++++++++ - tests/fate/checkasm.mak | 1 + - 5 files changed, 125 insertions(+), 1 deletion(-) - create mode 100644 tests/checkasm/rpi_sand.c - -diff --git a/tests/checkasm/Makefile b/tests/checkasm/Makefile -index a6f06c7007..66291baf33 100644 ---- a/tests/checkasm/Makefile -+++ b/tests/checkasm/Makefile -@@ -59,8 +59,9 @@ CHECKASMOBJS-$(CONFIG_SWSCALE) += $(SWSCALEOBJS) - AVUTILOBJS += av_tx.o - AVUTILOBJS += fixed_dsp.o - AVUTILOBJS += float_dsp.o -+AVUTILOBJS-$(CONFIG_SAND) += rpi_sand.o - --CHECKASMOBJS-$(CONFIG_AVUTIL) += $(AVUTILOBJS) -+CHECKASMOBJS-$(CONFIG_AVUTIL) += $(AVUTILOBJS) $(AVUTILOBJS-yes) - - CHECKASMOBJS-$(ARCH_AARCH64) += aarch64/checkasm.o - CHECKASMOBJS-$(HAVE_ARMV5TE_EXTERNAL) += arm/checkasm.o -diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c -index e96d84a7da..57e0091b80 100644 ---- a/tests/checkasm/checkasm.c -+++ b/tests/checkasm/checkasm.c -@@ -210,6 +210,9 @@ static const struct { - { "fixed_dsp", checkasm_check_fixed_dsp }, - { "float_dsp", checkasm_check_float_dsp }, - { "av_tx", checkasm_check_av_tx }, -+ #if CONFIG_SAND -+ { "rpi_sand", checkasm_check_rpi_sand }, -+ #endif - #endif - { NULL } - }; -diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h -index 8744a81218..f4a0d20358 100644 ---- a/tests/checkasm/checkasm.h -+++ b/tests/checkasm/checkasm.h -@@ -73,6 +73,7 @@ void checkasm_check_motion(void); - void checkasm_check_nlmeans(void); - void checkasm_check_opusdsp(void); - void checkasm_check_pixblockdsp(void); -+void checkasm_check_rpi_sand(void); - void checkasm_check_sbrdsp(void); - void checkasm_check_synth_filter(void); - void checkasm_check_sw_gbrp(void); -diff --git a/tests/checkasm/rpi_sand.c b/tests/checkasm/rpi_sand.c -new file mode 100644 -index 0000000000..0888714c4c ---- /dev/null -+++ b/tests/checkasm/rpi_sand.c -@@ -0,0 +1,118 @@ -+/* -+ * Copyright (c) 2023 John Cox -+ * -+ * This file is part of FFmpeg. -+ * -+ * FFmpeg is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * FFmpeg is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License along -+ * with FFmpeg; if not, write to the Free Software Foundation, Inc., -+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+ */ -+ -+#include -+#include "checkasm.h" -+#include "libavutil/common.h" -+#include "libavutil/rpi_sand_fns.h" -+ -+#if ARCH_ARM -+#include "libavutil/arm/cpu.h" -+#include "libavutil/arm/rpi_sand_neon.h" -+#elif ARCH_AARCH64 -+#include "libavutil/aarch64/cpu.h" -+#include "libavutil/aarch64/rpi_sand_neon.h" -+#endif -+ -+static inline uint32_t pack30(unsigned int a, unsigned int b, unsigned int c) -+{ -+ return (a & 0x3ff) | ((b & 0x3ff) << 10) | ((c & 0x3ff) << 20); -+} -+ -+void checkasm_check_rpi_sand(void) -+{ -+ const unsigned int w = 1280; -+ const unsigned int h = 66; -+ const unsigned int stride1 = 128; -+ const unsigned int stride2 = h*3/2; -+ const unsigned int ssize = ((w+95)/96)*128*h*3/2; -+ const unsigned int ysize = ((w + 32) * (h + 32) * 2); -+ -+ uint8_t * sbuf0 = malloc(ssize); -+ uint8_t * sbuf1 = malloc(ssize); -+ uint8_t * ybuf0 = malloc(ysize); -+ uint8_t * ybuf1 = malloc(ysize); -+ uint8_t * vbuf0 = malloc(ysize); -+ uint8_t * vbuf1 = malloc(ysize); -+ uint8_t * yframe0 = (w + 32) * 16 + ybuf0; -+ uint8_t * yframe1 = (w + 32) * 16 + ybuf1; -+ uint8_t * vframe0 = (w + 32) * 16 + vbuf0; -+ uint8_t * vframe1 = (w + 32) * 16 + vbuf1; -+ unsigned int i; -+ -+ for (i = 0; i != ssize; i += 4) -+ *(uint32_t*)(sbuf0 + i) = rnd(); -+ memcpy(sbuf1, sbuf0, ssize); -+ -+ if (check_func(have_neon(av_get_cpu_flags()) ? ff_rpi_sand30_lines_to_planar_y16 : av_rpi_sand30_to_planar_y16, "rpi_sand30_to_planar_y16")) { -+ declare_func(void, uint8_t * dst, const unsigned int dst_stride, -+ const uint8_t * src, -+ unsigned int stride1, unsigned int stride2, -+ unsigned int _x, unsigned int y, -+ unsigned int _w, unsigned int h); -+ -+ memset(ybuf0, 0xbb, ysize); -+ memset(ybuf1, 0xbb, ysize); -+ -+ call_ref(yframe0, (w + 32) * 2, sbuf0, stride1, stride2, 0, 0, w, h); -+ call_new(yframe1, (w + 32) * 2, sbuf1, stride1, stride2, 0, 0, w, h); -+ -+ if (memcmp(sbuf0, sbuf1, ssize) -+ || memcmp(ybuf0, ybuf1, ysize)) -+ fail(); -+ -+ bench_new(ybuf1, (w + 32) * 2, sbuf1, stride1, stride2, 0, 0, w, h); -+ } -+ -+ if (check_func(have_neon(av_get_cpu_flags()) ? ff_rpi_sand30_lines_to_planar_c16 : av_rpi_sand30_to_planar_c16, "rpi_sand30_to_planar_c16")) { -+ declare_func(void, uint8_t * u_dst, const unsigned int u_stride, -+ uint8_t * v_dst, const unsigned int v_stride, -+ const uint8_t * src, -+ unsigned int stride1, unsigned int stride2, -+ unsigned int _x, unsigned int y, -+ unsigned int _w, unsigned int h); -+ -+ memset(ybuf0, 0xbb, ysize); -+ memset(ybuf1, 0xbb, ysize); -+ memset(vbuf0, 0xbb, ysize); -+ memset(vbuf1, 0xbb, ysize); -+ -+ call_ref(yframe0, (w + 32), vframe0, (w + 32), sbuf0, stride1, stride2, 0, 0, w/2, h/2); -+ call_new(yframe1, (w + 32), vframe1, (w + 32), sbuf1, stride1, stride2, 0, 0, w/2, h/2); -+ -+ if (memcmp(sbuf0, sbuf1, ssize) -+ || memcmp(ybuf0, ybuf1, ysize) -+ || memcmp(vbuf0, vbuf1, ysize)) -+ fail(); -+ -+ bench_new(yframe1, (w + 32), vframe1, (w + 32), sbuf1, stride1, stride2, 0, 0, w/2, h/2); -+ } -+ -+ -+ report("sand30"); -+ -+ free(sbuf0); -+ free(sbuf1); -+ free(ybuf0); -+ free(ybuf1); -+ free(vbuf0); -+ free(vbuf1); -+} -+ -diff --git a/tests/fate/checkasm.mak b/tests/fate/checkasm.mak -index a4e95541f5..6fda6d227e 100644 ---- a/tests/fate/checkasm.mak -+++ b/tests/fate/checkasm.mak -@@ -27,6 +27,7 @@ FATE_CHECKASM = fate-checkasm-aacpsdsp \ - fate-checkasm-motion \ - fate-checkasm-opusdsp \ - fate-checkasm-pixblockdsp \ -+ fate-checkasm-rpi_sand \ - fate-checkasm-sbrdsp \ - fate-checkasm-synth_filter \ - fate-checkasm-sw_gbrp \ - -From d798c7b90dd63bca6f9878b1fb30ec1d8f0b9a5e Mon Sep 17 00:00:00 2001 -From: James Darnley -Date: Mon, 20 Feb 2023 20:55:08 +0100 -Subject: [PATCH 142/151] avfilter/bwdif: move filter_line init to a dedicated - function - -(cherry picked from commit b503b5a0cf80f38ecf4737c012b621b7e94f242a) ---- - libavfilter/bwdif.h | 3 ++- - libavfilter/vf_bwdif.c | 13 +++++++++---- - libavfilter/x86/vf_bwdif_init.c | 4 +--- - 3 files changed, 12 insertions(+), 8 deletions(-) - -diff --git a/libavfilter/bwdif.h b/libavfilter/bwdif.h -index 889ff772ed..5749345f78 100644 ---- a/libavfilter/bwdif.h -+++ b/libavfilter/bwdif.h -@@ -37,6 +37,7 @@ typedef struct BWDIFContext { - int parity, int clip_max, int spat); - } BWDIFContext; - --void ff_bwdif_init_x86(BWDIFContext *bwdif); -+void ff_bwdif_init_filter_line(BWDIFContext *bwdif, int bit_depth); -+void ff_bwdif_init_x86(BWDIFContext *bwdif, int bit_depth); - - #endif /* AVFILTER_BWDIF_H */ -diff --git a/libavfilter/vf_bwdif.c b/libavfilter/vf_bwdif.c -index 09e68523bb..539fabbd46 100644 ---- a/libavfilter/vf_bwdif.c -+++ b/libavfilter/vf_bwdif.c -@@ -341,7 +341,14 @@ static int config_props(AVFilterLink *link) - - yadif->csp = av_pix_fmt_desc_get(link->format); - yadif->filter = filter; -- if (yadif->csp->comp[0].depth > 8) { -+ ff_bwdif_init_filter_line(s, yadif->csp->comp[0].depth); -+ -+ return 0; -+} -+ -+av_cold void ff_bwdif_init_filter_line(BWDIFContext *s, int bit_depth) -+{ -+ if (bit_depth > 8) { - s->filter_intra = filter_intra_16bit; - s->filter_line = filter_line_c_16bit; - s->filter_edge = filter_edge_16bit; -@@ -352,10 +359,8 @@ static int config_props(AVFilterLink *link) - } - - #if ARCH_X86 -- ff_bwdif_init_x86(s); -+ ff_bwdif_init_x86(s, bit_depth); - #endif -- -- return 0; - } - - -diff --git a/libavfilter/x86/vf_bwdif_init.c b/libavfilter/x86/vf_bwdif_init.c -index e24e5cd9b1..ba7bc40c3d 100644 ---- a/libavfilter/x86/vf_bwdif_init.c -+++ b/libavfilter/x86/vf_bwdif_init.c -@@ -42,11 +42,9 @@ void ff_bwdif_filter_line_12bit_ssse3(void *dst, void *prev, void *cur, void *ne - int mrefs2, int prefs3, int mrefs3, int prefs4, - int mrefs4, int parity, int clip_max); - --av_cold void ff_bwdif_init_x86(BWDIFContext *bwdif) -+av_cold void ff_bwdif_init_x86(BWDIFContext *bwdif, int bit_depth) - { -- YADIFContext *yadif = &bwdif->yadif; - int cpu_flags = av_get_cpu_flags(); -- int bit_depth = (!yadif->csp) ? 8 : yadif->csp->comp[0].depth; - - if (bit_depth <= 8) { - if (EXTERNAL_SSE2(cpu_flags)) - -From 0eb9c627c07931cf93c4932e07e0df6c0ce860fd Mon Sep 17 00:00:00 2001 -From: James Darnley -Date: Mon, 20 Feb 2023 20:55:08 +0100 -Subject: [PATCH 143/151] checkasm: add test for bwdif - -(cherry picked from commit 087faf8cac51e5e20a5f41b36b8d4c2705a10039) ---- - tests/checkasm/Makefile | 1 + - tests/checkasm/checkasm.c | 3 ++ - tests/checkasm/checkasm.h | 1 + - tests/checkasm/vf_bwdif.c | 84 +++++++++++++++++++++++++++++++++++++++ - tests/fate/checkasm.mak | 1 + - 5 files changed, 90 insertions(+) - create mode 100644 tests/checkasm/vf_bwdif.c - -diff --git a/tests/checkasm/Makefile b/tests/checkasm/Makefile -index 66291baf33..2c80d8e661 100644 ---- a/tests/checkasm/Makefile -+++ b/tests/checkasm/Makefile -@@ -40,6 +40,7 @@ CHECKASMOBJS-$(CONFIG_AVCODEC) += $(AVCODECOBJS-yes) - # libavfilter tests - AVFILTEROBJS-$(CONFIG_AFIR_FILTER) += af_afir.o - AVFILTEROBJS-$(CONFIG_BLEND_FILTER) += vf_blend.o -+AVFILTEROBJS-$(CONFIG_BWDIF_FILTER) += vf_bwdif.o - AVFILTEROBJS-$(CONFIG_COLORSPACE_FILTER) += vf_colorspace.o - AVFILTEROBJS-$(CONFIG_EQ_FILTER) += vf_eq.o - AVFILTEROBJS-$(CONFIG_GBLUR_FILTER) += vf_gblur.o -diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c -index 57e0091b80..4f983d7fbc 100644 ---- a/tests/checkasm/checkasm.c -+++ b/tests/checkasm/checkasm.c -@@ -179,6 +179,9 @@ static const struct { - #if CONFIG_BLEND_FILTER - { "vf_blend", checkasm_check_blend }, - #endif -+ #if CONFIG_BWDIF_FILTER -+ { "vf_bwdif", checkasm_check_vf_bwdif }, -+ #endif - #if CONFIG_COLORSPACE_FILTER - { "vf_colorspace", checkasm_check_colorspace }, - #endif -diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h -index f4a0d20358..d69bc43999 100644 ---- a/tests/checkasm/checkasm.h -+++ b/tests/checkasm/checkasm.h -@@ -83,6 +83,7 @@ void checkasm_check_utvideodsp(void); - void checkasm_check_v210dec(void); - void checkasm_check_v210enc(void); - void checkasm_check_vc1dsp(void); -+void checkasm_check_vf_bwdif(void); - void checkasm_check_vf_eq(void); - void checkasm_check_vf_gblur(void); - void checkasm_check_vf_hflip(void); -diff --git a/tests/checkasm/vf_bwdif.c b/tests/checkasm/vf_bwdif.c -new file mode 100644 -index 0000000000..46224bb575 ---- /dev/null -+++ b/tests/checkasm/vf_bwdif.c -@@ -0,0 +1,84 @@ -+/* -+ * This file is part of FFmpeg. -+ * -+ * FFmpeg is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * FFmpeg is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License along -+ * with FFmpeg; if not, write to the Free Software Foundation, Inc., -+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+ */ -+ -+#include -+#include "checkasm.h" -+#include "libavcodec/internal.h" -+#include "libavfilter/bwdif.h" -+ -+#define WIDTH 256 -+ -+#define randomize_buffers(buf0, buf1, mask, count) \ -+ for (size_t i = 0; i < count; i++) \ -+ buf0[i] = buf1[i] = rnd() & mask -+ -+#define BODY(type, depth) \ -+ do { \ -+ type prev0[9*WIDTH], prev1[9*WIDTH]; \ -+ type next0[9*WIDTH], next1[9*WIDTH]; \ -+ type cur0[9*WIDTH], cur1[9*WIDTH]; \ -+ type dst0[WIDTH], dst1[WIDTH]; \ -+ const int stride = WIDTH; \ -+ const int mask = (1< -Date: Thu, 6 Jul 2023 13:56:18 +0000 -Subject: [PATCH 144/151] Revert "vf_bwdif: Add attributes to ask for - vectorization" - -This reverts commit 281250290ba5c2dcd8676e9a261050e65c10bcb7. -Will be replaced by hand coded asm as on upstream ---- - libavfilter/vf_bwdif.c | 29 ++++++++++++++--------------- - 1 file changed, 14 insertions(+), 15 deletions(-) - -diff --git a/libavfilter/vf_bwdif.c b/libavfilter/vf_bwdif.c -index 539fabbd46..34e8c5e234 100644 ---- a/libavfilter/vf_bwdif.c -+++ b/libavfilter/vf_bwdif.c -@@ -74,10 +74,10 @@ typedef struct ThreadData { - int temporal_diff1 =(FFABS(prev[mrefs] - c) + FFABS(prev[prefs] - e)) >> 1; \ - int temporal_diff2 =(FFABS(next[mrefs] - c) + FFABS(next[prefs] - e)) >> 1; \ - int diff = FFMAX3(temporal_diff0 >> 1, temporal_diff1, temporal_diff2); \ -- {/*\ -+ \ - if (!diff) { \ - dst[0] = d; \ -- } else {*/ -+ } else { - - #define SPAT_CHECK() \ - int b = ((prev2[mrefs2] + next2[mrefs2]) >> 1) - c; \ -@@ -89,16 +89,15 @@ typedef struct ThreadData { - diff = FFMAX3(diff, min, -max); - - #define FILTER_LINE() \ -- int i1, i2; \ - SPAT_CHECK() \ -- /*if (FFABS(c - e) > temporal_diff0)*/ { \ -- i1 = (((coef_hf[0] * (prev2[0] + next2[0]) \ -+ if (FFABS(c - e) > temporal_diff0) { \ -+ interpol = (((coef_hf[0] * (prev2[0] + next2[0]) \ - - coef_hf[1] * (prev2[mrefs2] + next2[mrefs2] + prev2[prefs2] + next2[prefs2]) \ - + coef_hf[2] * (prev2[mrefs4] + next2[mrefs4] + prev2[prefs4] + next2[prefs4])) >> 2) \ - + coef_lf[0] * (c + e) - coef_lf[1] * (cur[mrefs3] + cur[prefs3])) >> 13; \ -- } /*else*/ { \ -- i2 = (coef_sp[0] * (c + e) - coef_sp[1] * (cur[mrefs3] + cur[prefs3])) >> 13; \ -- }interpol = FFABS(c - e) > temporal_diff0 ? i1:i2;\ -+ } else { \ -+ interpol = (coef_sp[0] * (c + e) - coef_sp[1] * (cur[mrefs3] + cur[prefs3])) >> 13; \ -+ } - - #define FILTER_EDGE() \ - if (spat) { \ -@@ -112,7 +111,7 @@ typedef struct ThreadData { - else if (interpol < d - diff) \ - interpol = d - diff; \ - \ -- dst[0] = !diff ? d : av_clip(interpol, 0, clip_max); \ -+ dst[0] = av_clip(interpol, 0, clip_max); \ - } \ - \ - dst++; \ -@@ -123,7 +122,7 @@ typedef struct ThreadData { - next2++; \ - } - --static void __attribute__((optimize("tree-vectorize"))) filter_intra(void *restrict dst1, void *restrict cur1, int w, int prefs, int mrefs, -+static void filter_intra(void *dst1, void *cur1, int w, int prefs, int mrefs, - int prefs3, int mrefs3, int parity, int clip_max) - { - uint8_t *dst = dst1; -@@ -133,7 +132,7 @@ static void __attribute__((optimize("tree-vectorize"))) filter_intra(void *restr - FILTER_INTRA() - } - --static void __attribute__((optimize("tree-vectorize"))) filter_line_c(void *restrict dst1, void *restrict prev1, void *restrict cur1, void *restrict next1, -+static void filter_line_c(void *dst1, void *prev1, void *cur1, void *next1, - int w, int prefs, int mrefs, int prefs2, int mrefs2, - int prefs3, int mrefs3, int prefs4, int mrefs4, - int parity, int clip_max) -@@ -151,7 +150,7 @@ static void __attribute__((optimize("tree-vectorize"))) filter_line_c(void *rest - FILTER2() - } - --static void __attribute__((optimize("tree-vectorize"))) filter_edge(void *restrict dst1, void *restrict prev1, void *restrict cur1, void *restrict next1, -+static void filter_edge(void *dst1, void *prev1, void *cur1, void *next1, - int w, int prefs, int mrefs, int prefs2, int mrefs2, - int parity, int clip_max, int spat) - { -@@ -168,7 +167,7 @@ static void __attribute__((optimize("tree-vectorize"))) filter_edge(void *restri - FILTER2() - } - --static void __attribute__((optimize("tree-vectorize"))) filter_intra_16bit(void *restrict dst1, void *restrict cur1, int w, int prefs, int mrefs, -+static void filter_intra_16bit(void *dst1, void *cur1, int w, int prefs, int mrefs, - int prefs3, int mrefs3, int parity, int clip_max) - { - uint16_t *dst = dst1; -@@ -178,7 +177,7 @@ static void __attribute__((optimize("tree-vectorize"))) filter_intra_16bit(void - FILTER_INTRA() - } - --static void __attribute__((optimize("tree-vectorize"))) filter_line_c_16bit(void *restrict dst1, void *restrict prev1, void *restrict cur1, void *restrict next1, -+static void filter_line_c_16bit(void *dst1, void *prev1, void *cur1, void *next1, - int w, int prefs, int mrefs, int prefs2, int mrefs2, - int prefs3, int mrefs3, int prefs4, int mrefs4, - int parity, int clip_max) -@@ -196,7 +195,7 @@ static void __attribute__((optimize("tree-vectorize"))) filter_line_c_16bit(void - FILTER2() - } - --static void __attribute__((optimize("tree-vectorize"))) filter_edge_16bit(void *restrict dst1, void *restrict prev1, void *restrict cur1, void *restrict next1, -+static void filter_edge_16bit(void *dst1, void *prev1, void *cur1, void *next1, - int w, int prefs, int mrefs, int prefs2, int mrefs2, - int parity, int clip_max, int spat) - { - -From 093eddd9ef66a7db9e637f3acfe51d950c87f613 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 4 Jul 2023 14:04:39 +0000 -Subject: [PATCH 145/151] tests/checkasm: Add test for vf_bwdif filter_intra -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: John Cox -Signed-off-by: Martin Storsjö -(cherry picked from commit 7caa8d6b91e738ad2c1ea61746b6c062c470f7d3) ---- - tests/checkasm/vf_bwdif.c | 37 +++++++++++++++++++++++++++++++++++++ - 1 file changed, 37 insertions(+) - -diff --git a/tests/checkasm/vf_bwdif.c b/tests/checkasm/vf_bwdif.c -index 46224bb575..034bbabb4c 100644 ---- a/tests/checkasm/vf_bwdif.c -+++ b/tests/checkasm/vf_bwdif.c -@@ -20,6 +20,7 @@ - #include "checkasm.h" - #include "libavcodec/internal.h" - #include "libavfilter/bwdif.h" -+#include "libavutil/mem_internal.h" - - #define WIDTH 256 - -@@ -81,4 +82,40 @@ void checkasm_check_vf_bwdif(void) - BODY(uint16_t, 10); - report("bwdif10"); - } -+ -+ if (check_func(ctx_8.filter_intra, "bwdif8.intra")) { -+ LOCAL_ALIGNED_16(uint8_t, cur0, [11*WIDTH]); -+ LOCAL_ALIGNED_16(uint8_t, cur1, [11*WIDTH]); -+ LOCAL_ALIGNED_16(uint8_t, dst0, [WIDTH*3]); -+ LOCAL_ALIGNED_16(uint8_t, dst1, [WIDTH*3]); -+ const int stride = WIDTH; -+ const int mask = (1<<8)-1; -+ -+ declare_func(void, void *dst1, void *cur1, int w, int prefs, int mrefs, -+ int prefs3, int mrefs3, int parity, int clip_max); -+ -+ randomize_buffers( cur0, cur1, mask, 11*WIDTH); -+ memset(dst0, 0xba, WIDTH * 3); -+ memset(dst1, 0xba, WIDTH * 3); -+ -+ call_ref(dst0 + stride, -+ cur0 + stride * 4, WIDTH, -+ stride, -stride, stride * 3, -stride * 3, -+ 0, mask); -+ call_new(dst1 + stride, -+ cur0 + stride * 4, WIDTH, -+ stride, -stride, stride * 3, -stride * 3, -+ 0, mask); -+ -+ if (memcmp(dst0, dst1, WIDTH*3) -+ || memcmp( cur0, cur1, WIDTH*11)) -+ fail(); -+ -+ bench_new(dst1 + stride, -+ cur0 + stride * 4, WIDTH, -+ stride, -stride, stride * 3, -stride * 3, -+ 0, mask); -+ -+ report("bwdif8.intra"); -+ } - } - -From 28ef7402381b6fe241f81e21f302a23f8af674bf Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 4 Jul 2023 14:04:40 +0000 -Subject: [PATCH 146/151] avfilter/vf_bwdif: Add neon for filter_intra -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Adds an outline for aarch neon functions -Adds common macros and consts for aarch64 neon -Exports C filter_intra needed for tail fixup of neon code -Adds neon for filter_intra - -Signed-off-by: John Cox -Signed-off-by: Martin Storsjö -(cherry picked from commit 5075cfb4e6a21f6b4da9e62bdb0bad4cb32a4673) ---- - libavfilter/aarch64/Makefile | 2 + - libavfilter/aarch64/vf_bwdif_init_aarch64.c | 56 ++++++++ - libavfilter/aarch64/vf_bwdif_neon.S | 136 ++++++++++++++++++++ - libavfilter/bwdif.h | 4 + - libavfilter/vf_bwdif.c | 8 +- - 5 files changed, 203 insertions(+), 3 deletions(-) - create mode 100644 libavfilter/aarch64/vf_bwdif_init_aarch64.c - create mode 100644 libavfilter/aarch64/vf_bwdif_neon.S - -diff --git a/libavfilter/aarch64/Makefile b/libavfilter/aarch64/Makefile -index b58daa3a3f..b68209bc94 100644 ---- a/libavfilter/aarch64/Makefile -+++ b/libavfilter/aarch64/Makefile -@@ -1,3 +1,5 @@ -+OBJS-$(CONFIG_BWDIF_FILTER) += aarch64/vf_bwdif_init_aarch64.o - OBJS-$(CONFIG_NLMEANS_FILTER) += aarch64/vf_nlmeans_init.o - -+NEON-OBJS-$(CONFIG_BWDIF_FILTER) += aarch64/vf_bwdif_neon.o - NEON-OBJS-$(CONFIG_NLMEANS_FILTER) += aarch64/vf_nlmeans_neon.o -diff --git a/libavfilter/aarch64/vf_bwdif_init_aarch64.c b/libavfilter/aarch64/vf_bwdif_init_aarch64.c -new file mode 100644 -index 0000000000..3ffaa07ab3 ---- /dev/null -+++ b/libavfilter/aarch64/vf_bwdif_init_aarch64.c -@@ -0,0 +1,56 @@ -+/* -+ * bwdif aarch64 NEON optimisations -+ * -+ * Copyright (c) 2023 John Cox -+ * -+ * This file is part of FFmpeg. -+ * -+ * FFmpeg is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * FFmpeg is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with FFmpeg; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+#include "libavutil/common.h" -+#include "libavfilter/bwdif.h" -+#include "libavutil/aarch64/cpu.h" -+ -+void ff_bwdif_filter_intra_neon(void *dst1, void *cur1, int w, int prefs, int mrefs, -+ int prefs3, int mrefs3, int parity, int clip_max); -+ -+ -+static void filter_intra_helper(void *dst1, void *cur1, int w, int prefs, int mrefs, -+ int prefs3, int mrefs3, int parity, int clip_max) -+{ -+ const int w0 = clip_max != 255 ? 0 : w & ~15; -+ -+ ff_bwdif_filter_intra_neon(dst1, cur1, w0, prefs, mrefs, prefs3, mrefs3, parity, clip_max); -+ -+ if (w0 < w) -+ ff_bwdif_filter_intra_c((char *)dst1 + w0, (char *)cur1 + w0, -+ w - w0, prefs, mrefs, prefs3, mrefs3, parity, clip_max); -+} -+ -+void -+ff_bwdif_init_aarch64(BWDIFContext *s, int bit_depth) -+{ -+ const int cpu_flags = av_get_cpu_flags(); -+ -+ if (bit_depth != 8) -+ return; -+ -+ if (!have_neon(cpu_flags)) -+ return; -+ -+ s->filter_intra = filter_intra_helper; -+} -+ -diff --git a/libavfilter/aarch64/vf_bwdif_neon.S b/libavfilter/aarch64/vf_bwdif_neon.S -new file mode 100644 -index 0000000000..e288efbe6c ---- /dev/null -+++ b/libavfilter/aarch64/vf_bwdif_neon.S -@@ -0,0 +1,136 @@ -+/* -+ * bwdif aarch64 NEON optimisations -+ * -+ * Copyright (c) 2023 John Cox -+ * -+ * This file is part of FFmpeg. -+ * -+ * FFmpeg is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * FFmpeg is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with FFmpeg; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+ -+#include "libavutil/aarch64/asm.S" -+ -+// Space taken on the stack by an int (32-bit) -+#ifdef __APPLE__ -+.set SP_INT, 4 -+#else -+.set SP_INT, 8 -+#endif -+ -+.macro SQSHRUNN b, s0, s1, s2, s3, n -+ sqshrun \s0\().4h, \s0\().4s, #\n - 8 -+ sqshrun2 \s0\().8h, \s1\().4s, #\n - 8 -+ sqshrun \s1\().4h, \s2\().4s, #\n - 8 -+ sqshrun2 \s1\().8h, \s3\().4s, #\n - 8 -+ uzp2 \b\().16b, \s0\().16b, \s1\().16b -+.endm -+ -+.macro SMULL4K a0, a1, a2, a3, s0, s1, k -+ smull \a0\().4s, \s0\().4h, \k -+ smull2 \a1\().4s, \s0\().8h, \k -+ smull \a2\().4s, \s1\().4h, \k -+ smull2 \a3\().4s, \s1\().8h, \k -+.endm -+ -+.macro UMULL4K a0, a1, a2, a3, s0, s1, k -+ umull \a0\().4s, \s0\().4h, \k -+ umull2 \a1\().4s, \s0\().8h, \k -+ umull \a2\().4s, \s1\().4h, \k -+ umull2 \a3\().4s, \s1\().8h, \k -+.endm -+ -+.macro UMLAL4K a0, a1, a2, a3, s0, s1, k -+ umlal \a0\().4s, \s0\().4h, \k -+ umlal2 \a1\().4s, \s0\().8h, \k -+ umlal \a2\().4s, \s1\().4h, \k -+ umlal2 \a3\().4s, \s1\().8h, \k -+.endm -+ -+.macro UMLSL4K a0, a1, a2, a3, s0, s1, k -+ umlsl \a0\().4s, \s0\().4h, \k -+ umlsl2 \a1\().4s, \s0\().8h, \k -+ umlsl \a2\().4s, \s1\().4h, \k -+ umlsl2 \a3\().4s, \s1\().8h, \k -+.endm -+ -+.macro LDR_COEFFS d, t0 -+ movrel \t0, coeffs, 0 -+ ld1 {\d\().8h}, [\t0] -+.endm -+ -+// static const uint16_t coef_lf[2] = { 4309, 213 }; -+// static const uint16_t coef_hf[3] = { 5570, 3801, 1016 }; -+// static const uint16_t coef_sp[2] = { 5077, 981 }; -+ -+const coeffs, align=4 // align 4 means align on 2^4 boundry -+ .hword 4309 * 4, 213 * 4 // lf[0]*4 = v0.h[0] -+ .hword 5570, 3801, 1016, -3801 // hf[0] = v0.h[2], -hf[1] = v0.h[5] -+ .hword 5077, 981 // sp[0] = v0.h[6] -+endconst -+ -+// ============================================================================ -+// -+// void ff_bwdif_filter_intra_neon( -+// void *dst1, // x0 -+// void *cur1, // x1 -+// int w, // w2 -+// int prefs, // w3 -+// int mrefs, // w4 -+// int prefs3, // w5 -+// int mrefs3, // w6 -+// int parity, // w7 unused -+// int clip_max) // [sp, #0] unused -+ -+function ff_bwdif_filter_intra_neon, export=1 -+ cmp w2, #0 -+ ble 99f -+ -+ LDR_COEFFS v0, x17 -+ -+// for (x = 0; x < w; x++) { -+10: -+ -+// interpol = (coef_sp[0] * (cur[mrefs] + cur[prefs]) - coef_sp[1] * (cur[mrefs3] + cur[prefs3])) >> 13; -+ ldr q31, [x1, w4, sxtw] -+ ldr q30, [x1, w3, sxtw] -+ ldr q29, [x1, w6, sxtw] -+ ldr q28, [x1, w5, sxtw] -+ -+ uaddl v20.8h, v31.8b, v30.8b -+ uaddl2 v21.8h, v31.16b, v30.16b -+ -+ UMULL4K v2, v3, v4, v5, v20, v21, v0.h[6] -+ -+ uaddl v20.8h, v29.8b, v28.8b -+ uaddl2 v21.8h, v29.16b, v28.16b -+ -+ UMLSL4K v2, v3, v4, v5, v20, v21, v0.h[7] -+ -+// dst[0] = av_clip(interpol, 0, clip_max); -+ SQSHRUNN v2, v2, v3, v4, v5, 13 -+ str q2, [x0], #16 -+ -+// dst++; -+// cur++; -+// } -+ -+ subs w2, w2, #16 -+ add x1, x1, #16 -+ bgt 10b -+ -+99: -+ ret -+endfunc -diff --git a/libavfilter/bwdif.h b/libavfilter/bwdif.h -index 5749345f78..ae6f6ce223 100644 ---- a/libavfilter/bwdif.h -+++ b/libavfilter/bwdif.h -@@ -39,5 +39,9 @@ typedef struct BWDIFContext { - - void ff_bwdif_init_filter_line(BWDIFContext *bwdif, int bit_depth); - void ff_bwdif_init_x86(BWDIFContext *bwdif, int bit_depth); -+void ff_bwdif_init_aarch64(BWDIFContext *bwdif, int bit_depth); -+ -+void ff_bwdif_filter_intra_c(void *dst1, void *cur1, int w, int prefs, int mrefs, -+ int prefs3, int mrefs3, int parity, int clip_max); - - #endif /* AVFILTER_BWDIF_H */ -diff --git a/libavfilter/vf_bwdif.c b/libavfilter/vf_bwdif.c -index 34e8c5e234..6ec8bbab5d 100644 ---- a/libavfilter/vf_bwdif.c -+++ b/libavfilter/vf_bwdif.c -@@ -122,8 +122,8 @@ typedef struct ThreadData { - next2++; \ - } - --static void filter_intra(void *dst1, void *cur1, int w, int prefs, int mrefs, -- int prefs3, int mrefs3, int parity, int clip_max) -+void ff_bwdif_filter_intra_c(void *dst1, void *cur1, int w, int prefs, int mrefs, -+ int prefs3, int mrefs3, int parity, int clip_max) - { - uint8_t *dst = dst1; - uint8_t *cur = cur1; -@@ -352,13 +352,15 @@ av_cold void ff_bwdif_init_filter_line(BWDIFContext *s, int bit_depth) - s->filter_line = filter_line_c_16bit; - s->filter_edge = filter_edge_16bit; - } else { -- s->filter_intra = filter_intra; -+ s->filter_intra = ff_bwdif_filter_intra_c; - s->filter_line = filter_line_c; - s->filter_edge = filter_edge; - } - - #if ARCH_X86 - ff_bwdif_init_x86(s, bit_depth); -+#elif ARCH_AARCH64 -+ ff_bwdif_init_aarch64(s, bit_depth); - #endif - } - - -From 2f8199a41cfd43595352899e722646052b0db2ee Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 4 Jul 2023 14:04:41 +0000 -Subject: [PATCH 147/151] tests/checkasm: Add test for vf_bwdif filter_edge -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: John Cox -Signed-off-by: Martin Storsjö -(cherry picked from commit 7ed7c00f55a50ac88589f9e17c172d4a4fce0581) ---- - tests/checkasm/vf_bwdif.c | 54 +++++++++++++++++++++++++++++++++++++++ - 1 file changed, 54 insertions(+) - -diff --git a/tests/checkasm/vf_bwdif.c b/tests/checkasm/vf_bwdif.c -index 034bbabb4c..5fdba09fdc 100644 ---- a/tests/checkasm/vf_bwdif.c -+++ b/tests/checkasm/vf_bwdif.c -@@ -83,6 +83,60 @@ void checkasm_check_vf_bwdif(void) - report("bwdif10"); - } - -+ { -+ LOCAL_ALIGNED_16(uint8_t, prev0, [11*WIDTH]); -+ LOCAL_ALIGNED_16(uint8_t, prev1, [11*WIDTH]); -+ LOCAL_ALIGNED_16(uint8_t, next0, [11*WIDTH]); -+ LOCAL_ALIGNED_16(uint8_t, next1, [11*WIDTH]); -+ LOCAL_ALIGNED_16(uint8_t, cur0, [11*WIDTH]); -+ LOCAL_ALIGNED_16(uint8_t, cur1, [11*WIDTH]); -+ LOCAL_ALIGNED_16(uint8_t, dst0, [WIDTH*3]); -+ LOCAL_ALIGNED_16(uint8_t, dst1, [WIDTH*3]); -+ const int stride = WIDTH; -+ const int mask = (1<<8)-1; -+ int spat; -+ int parity; -+ -+ for (spat = 0; spat != 2; ++spat) { -+ for (parity = 0; parity != 2; ++parity) { -+ if (check_func(ctx_8.filter_edge, "bwdif8.edge.s%d.p%d", spat, parity)) { -+ -+ declare_func(void, void *dst1, void *prev1, void *cur1, void *next1, -+ int w, int prefs, int mrefs, int prefs2, int mrefs2, -+ int parity, int clip_max, int spat); -+ -+ randomize_buffers(prev0, prev1, mask, 11*WIDTH); -+ randomize_buffers(next0, next1, mask, 11*WIDTH); -+ randomize_buffers( cur0, cur1, mask, 11*WIDTH); -+ memset(dst0, 0xba, WIDTH * 3); -+ memset(dst1, 0xba, WIDTH * 3); -+ -+ call_ref(dst0 + stride, -+ prev0 + stride * 4, cur0 + stride * 4, next0 + stride * 4, WIDTH, -+ stride, -stride, stride * 2, -stride * 2, -+ parity, mask, spat); -+ call_new(dst1 + stride, -+ prev1 + stride * 4, cur1 + stride * 4, next1 + stride * 4, WIDTH, -+ stride, -stride, stride * 2, -stride * 2, -+ parity, mask, spat); -+ -+ if (memcmp(dst0, dst1, WIDTH*3) -+ || memcmp(prev0, prev1, WIDTH*11) -+ || memcmp(next0, next1, WIDTH*11) -+ || memcmp( cur0, cur1, WIDTH*11)) -+ fail(); -+ -+ bench_new(dst1 + stride, -+ prev1 + stride * 4, cur1 + stride * 4, next1 + stride * 4, WIDTH, -+ stride, -stride, stride * 2, -stride * 2, -+ parity, mask, spat); -+ } -+ } -+ } -+ -+ report("bwdif8.edge"); -+ } -+ - if (check_func(ctx_8.filter_intra, "bwdif8.intra")) { - LOCAL_ALIGNED_16(uint8_t, cur0, [11*WIDTH]); - LOCAL_ALIGNED_16(uint8_t, cur1, [11*WIDTH]); - -From 171d7f201503812617b8e320c83cc33120425923 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 4 Jul 2023 14:04:42 +0000 -Subject: [PATCH 148/151] avfilter/vf_bwdif: Add neon for filter_edge -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Adds clip and spatial macros for aarch64 neon -Exports C filter_edge needed for tail fixup of neon code -Adds neon for filter_edge - -Signed-off-by: John Cox -Signed-off-by: Martin Storsjö -(cherry picked from commit 8130df83e0fbd3264fe990fb4e084ecbd452d0b1) ---- - libavfilter/aarch64/vf_bwdif_init_aarch64.c | 20 +++ - libavfilter/aarch64/vf_bwdif_neon.S | 177 ++++++++++++++++++++ - libavfilter/bwdif.h | 4 + - libavfilter/vf_bwdif.c | 8 +- - 4 files changed, 205 insertions(+), 4 deletions(-) - -diff --git a/libavfilter/aarch64/vf_bwdif_init_aarch64.c b/libavfilter/aarch64/vf_bwdif_init_aarch64.c -index 3ffaa07ab3..e75cf2f204 100644 ---- a/libavfilter/aarch64/vf_bwdif_init_aarch64.c -+++ b/libavfilter/aarch64/vf_bwdif_init_aarch64.c -@@ -24,10 +24,29 @@ - #include "libavfilter/bwdif.h" - #include "libavutil/aarch64/cpu.h" - -+void ff_bwdif_filter_edge_neon(void *dst1, void *prev1, void *cur1, void *next1, -+ int w, int prefs, int mrefs, int prefs2, int mrefs2, -+ int parity, int clip_max, int spat); -+ - void ff_bwdif_filter_intra_neon(void *dst1, void *cur1, int w, int prefs, int mrefs, - int prefs3, int mrefs3, int parity, int clip_max); - - -+static void filter_edge_helper(void *dst1, void *prev1, void *cur1, void *next1, -+ int w, int prefs, int mrefs, int prefs2, int mrefs2, -+ int parity, int clip_max, int spat) -+{ -+ const int w0 = clip_max != 255 ? 0 : w & ~15; -+ -+ ff_bwdif_filter_edge_neon(dst1, prev1, cur1, next1, w0, prefs, mrefs, prefs2, mrefs2, -+ parity, clip_max, spat); -+ -+ if (w0 < w) -+ ff_bwdif_filter_edge_c((char *)dst1 + w0, (char *)prev1 + w0, (char *)cur1 + w0, (char *)next1 + w0, -+ w - w0, prefs, mrefs, prefs2, mrefs2, -+ parity, clip_max, spat); -+} -+ - static void filter_intra_helper(void *dst1, void *cur1, int w, int prefs, int mrefs, - int prefs3, int mrefs3, int parity, int clip_max) - { -@@ -52,5 +71,6 @@ ff_bwdif_init_aarch64(BWDIFContext *s, int bit_depth) - return; - - s->filter_intra = filter_intra_helper; -+ s->filter_edge = filter_edge_helper; - } - -diff --git a/libavfilter/aarch64/vf_bwdif_neon.S b/libavfilter/aarch64/vf_bwdif_neon.S -index e288efbe6c..389302b813 100644 ---- a/libavfilter/aarch64/vf_bwdif_neon.S -+++ b/libavfilter/aarch64/vf_bwdif_neon.S -@@ -66,6 +66,79 @@ - umlsl2 \a3\().4s, \s1\().8h, \k - .endm - -+// int b = m2s1 - m1; -+// int f = p2s1 - p1; -+// int dc = c0s1 - m1; -+// int de = c0s1 - p1; -+// int sp_max = FFMIN(p1 - c0s1, m1 - c0s1); -+// sp_max = FFMIN(sp_max, FFMAX(-b,-f)); -+// int sp_min = FFMIN(c0s1 - p1, c0s1 - m1); -+// sp_min = FFMIN(sp_min, FFMAX(b,f)); -+// diff = diff == 0 ? 0 : FFMAX3(diff, sp_min, sp_max); -+.macro SPAT_CHECK diff, m2s1, m1, c0s1, p1, p2s1, t0, t1, t2, t3 -+ uqsub \t0\().16b, \p1\().16b, \c0s1\().16b -+ uqsub \t2\().16b, \m1\().16b, \c0s1\().16b -+ umin \t2\().16b, \t0\().16b, \t2\().16b -+ -+ uqsub \t1\().16b, \m1\().16b, \m2s1\().16b -+ uqsub \t3\().16b, \p1\().16b, \p2s1\().16b -+ umax \t3\().16b, \t3\().16b, \t1\().16b -+ umin \t3\().16b, \t3\().16b, \t2\().16b -+ -+ uqsub \t0\().16b, \c0s1\().16b, \p1\().16b -+ uqsub \t2\().16b, \c0s1\().16b, \m1\().16b -+ umin \t2\().16b, \t0\().16b, \t2\().16b -+ -+ uqsub \t1\().16b, \m2s1\().16b, \m1\().16b -+ uqsub \t0\().16b, \p2s1\().16b, \p1\().16b -+ umax \t0\().16b, \t0\().16b, \t1\().16b -+ umin \t2\().16b, \t2\().16b, \t0\().16b -+ -+ cmeq \t1\().16b, \diff\().16b, #0 -+ umax \diff\().16b, \diff\().16b, \t3\().16b -+ umax \diff\().16b, \diff\().16b, \t2\().16b -+ bic \diff\().16b, \diff\().16b, \t1\().16b -+.endm -+ -+// i0 = s0; -+// if (i0 > d0 + diff0) -+// i0 = d0 + diff0; -+// else if (i0 < d0 - diff0) -+// i0 = d0 - diff0; -+// -+// i0 = s0 is safe -+.macro DIFF_CLIP i0, s0, d0, diff, t0, t1 -+ uqadd \t0\().16b, \d0\().16b, \diff\().16b -+ uqsub \t1\().16b, \d0\().16b, \diff\().16b -+ umin \i0\().16b, \s0\().16b, \t0\().16b -+ umax \i0\().16b, \i0\().16b, \t1\().16b -+.endm -+ -+// i0 = FFABS(m1 - p1) > td0 ? i1 : i2; -+// DIFF_CLIP -+// -+// i0 = i1 is safe -+.macro INTERPOL i0, i1, i2, m1, d0, p1, td0, diff, t0, t1, t2 -+ uabd \t0\().16b, \m1\().16b, \p1\().16b -+ cmhi \t0\().16b, \t0\().16b, \td0\().16b -+ bsl \t0\().16b, \i1\().16b, \i2\().16b -+ DIFF_CLIP \i0, \t0, \d0, \diff, \t1, \t2 -+.endm -+ -+.macro PUSH_VREGS -+ stp d8, d9, [sp, #-64]! -+ stp d10, d11, [sp, #16] -+ stp d12, d13, [sp, #32] -+ stp d14, d15, [sp, #48] -+.endm -+ -+.macro POP_VREGS -+ ldp d14, d15, [sp, #48] -+ ldp d12, d13, [sp, #32] -+ ldp d10, d11, [sp, #16] -+ ldp d8, d9, [sp], #64 -+.endm -+ - .macro LDR_COEFFS d, t0 - movrel \t0, coeffs, 0 - ld1 {\d\().8h}, [\t0] -@@ -81,6 +154,110 @@ const coeffs, align=4 // align 4 means align on 2^4 boundry - .hword 5077, 981 // sp[0] = v0.h[6] - endconst - -+// ============================================================================ -+// -+// void ff_bwdif_filter_edge_neon( -+// void *dst1, // x0 -+// void *prev1, // x1 -+// void *cur1, // x2 -+// void *next1, // x3 -+// int w, // w4 -+// int prefs, // w5 -+// int mrefs, // w6 -+// int prefs2, // w7 -+// int mrefs2, // [sp, #0] -+// int parity, // [sp, #SP_INT] -+// int clip_max, // [sp, #SP_INT*2] unused -+// int spat); // [sp, #SP_INT*3] -+ -+function ff_bwdif_filter_edge_neon, export=1 -+ // Sanity check w -+ cmp w4, #0 -+ ble 99f -+ -+// #define prev2 cur -+// const uint8_t * restrict next2 = parity ? prev : next; -+ -+ ldr w8, [sp, #0] // mrefs2 -+ -+ ldr w17, [sp, #SP_INT] // parity -+ ldr w16, [sp, #SP_INT*3] // spat -+ cmp w17, #0 -+ csel x17, x1, x3, ne -+ -+// for (x = 0; x < w; x++) { -+ -+10: -+// int m1 = cur[mrefs]; -+// int d = (prev2[0] + next2[0]) >> 1; -+// int p1 = cur[prefs]; -+// int temporal_diff0 = FFABS(prev2[0] - next2[0]); -+// int temporal_diff1 =(FFABS(prev[mrefs] - m1) + FFABS(prev[prefs] - p1)) >> 1; -+// int temporal_diff2 =(FFABS(next[mrefs] - m1) + FFABS(next[prefs] - p1)) >> 1; -+// int diff = FFMAX3(temporal_diff0 >> 1, temporal_diff1, temporal_diff2); -+ ldr q31, [x2] -+ ldr q21, [x17] -+ uhadd v16.16b, v31.16b, v21.16b // d0 = v16 -+ uabd v17.16b, v31.16b, v21.16b // td0 = v17 -+ ldr q24, [x2, w6, sxtw] // m1 = v24 -+ ldr q22, [x2, w5, sxtw] // p1 = v22 -+ -+ ldr q0, [x1, w6, sxtw] // prev[mrefs] -+ ldr q2, [x1, w5, sxtw] // prev[prefs] -+ ldr q1, [x3, w6, sxtw] // next[mrefs] -+ ldr q3, [x3, w5, sxtw] // next[prefs] -+ -+ ushr v29.16b, v17.16b, #1 -+ -+ uabd v31.16b, v0.16b, v24.16b -+ uabd v30.16b, v2.16b, v22.16b -+ uhadd v0.16b, v31.16b, v30.16b // td1 = q0 -+ -+ uabd v31.16b, v1.16b, v24.16b -+ uabd v30.16b, v3.16b, v22.16b -+ uhadd v1.16b, v31.16b, v30.16b // td2 = q1 -+ -+ umax v0.16b, v0.16b, v29.16b -+ umax v0.16b, v0.16b, v1.16b // diff = v0 -+ -+// if (spat) { -+// SPAT_CHECK() -+// } -+// i0 = (m1 + p1) >> 1; -+ cbz w16, 1f -+ -+ ldr q31, [x2, w8, sxtw] -+ ldr q18, [x17, w8, sxtw] -+ ldr q30, [x2, w7, sxtw] -+ ldr q19, [x17, w7, sxtw] -+ uhadd v18.16b, v18.16b, v31.16b -+ uhadd v19.16b, v19.16b, v30.16b -+ -+ SPAT_CHECK v0, v18, v24, v16, v22, v19, v31, v30, v29, v28 -+ -+1: -+ uhadd v2.16b, v22.16b, v24.16b -+ -+ // i0 = v2, s0 = v2, d0 = v16, diff = v0, t0 = v31, t1 = v30 -+ DIFF_CLIP v2, v2, v16, v0, v31, v30 -+ -+// dst[0] = av_clip(interpol, 0, clip_max); -+ str q2, [x0], #16 -+ -+// dst++; -+// cur++; -+// } -+ subs w4, w4, #16 -+ add x1, x1, #16 -+ add x2, x2, #16 -+ add x3, x3, #16 -+ add x17, x17, #16 -+ bgt 10b -+ -+99: -+ ret -+endfunc -+ - // ============================================================================ - // - // void ff_bwdif_filter_intra_neon( -diff --git a/libavfilter/bwdif.h b/libavfilter/bwdif.h -index ae6f6ce223..ae1616d366 100644 ---- a/libavfilter/bwdif.h -+++ b/libavfilter/bwdif.h -@@ -41,6 +41,10 @@ void ff_bwdif_init_filter_line(BWDIFContext *bwdif, int bit_depth); - void ff_bwdif_init_x86(BWDIFContext *bwdif, int bit_depth); - void ff_bwdif_init_aarch64(BWDIFContext *bwdif, int bit_depth); - -+void ff_bwdif_filter_edge_c(void *dst1, void *prev1, void *cur1, void *next1, -+ int w, int prefs, int mrefs, int prefs2, int mrefs2, -+ int parity, int clip_max, int spat); -+ - void ff_bwdif_filter_intra_c(void *dst1, void *cur1, int w, int prefs, int mrefs, - int prefs3, int mrefs3, int parity, int clip_max); - -diff --git a/libavfilter/vf_bwdif.c b/libavfilter/vf_bwdif.c -index 6ec8bbab5d..688c2d2572 100644 ---- a/libavfilter/vf_bwdif.c -+++ b/libavfilter/vf_bwdif.c -@@ -150,9 +150,9 @@ static void filter_line_c(void *dst1, void *prev1, void *cur1, void *next1, - FILTER2() - } - --static void filter_edge(void *dst1, void *prev1, void *cur1, void *next1, -- int w, int prefs, int mrefs, int prefs2, int mrefs2, -- int parity, int clip_max, int spat) -+void ff_bwdif_filter_edge_c(void *dst1, void *prev1, void *cur1, void *next1, -+ int w, int prefs, int mrefs, int prefs2, int mrefs2, -+ int parity, int clip_max, int spat) - { - uint8_t *dst = dst1; - uint8_t *prev = prev1; -@@ -354,7 +354,7 @@ av_cold void ff_bwdif_init_filter_line(BWDIFContext *s, int bit_depth) - } else { - s->filter_intra = ff_bwdif_filter_intra_c; - s->filter_line = filter_line_c; -- s->filter_edge = filter_edge; -+ s->filter_edge = ff_bwdif_filter_edge_c; - } - - #if ARCH_X86 - -From abf6588935bce275ba302766bcd8c3bb7a523d3c Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 4 Jul 2023 14:04:43 +0000 -Subject: [PATCH 149/151] avfilter/vf_bwdif: Add neon for filter_line -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Exports C filter_line needed for tail fixup of neon code -Adds neon for filter_line - -Signed-off-by: John Cox -Signed-off-by: Martin Storsjö -(cherry picked from commit 94cb94a2c0910d364a7181fc5cc0e9556b777d0a) ---- - libavfilter/aarch64/vf_bwdif_init_aarch64.c | 21 ++ - libavfilter/aarch64/vf_bwdif_neon.S | 203 ++++++++++++++++++++ - libavfilter/bwdif.h | 5 + - libavfilter/vf_bwdif.c | 10 +- - 4 files changed, 234 insertions(+), 5 deletions(-) - -diff --git a/libavfilter/aarch64/vf_bwdif_init_aarch64.c b/libavfilter/aarch64/vf_bwdif_init_aarch64.c -index e75cf2f204..21e67884ab 100644 ---- a/libavfilter/aarch64/vf_bwdif_init_aarch64.c -+++ b/libavfilter/aarch64/vf_bwdif_init_aarch64.c -@@ -31,6 +31,26 @@ void ff_bwdif_filter_edge_neon(void *dst1, void *prev1, void *cur1, void *next1, - void ff_bwdif_filter_intra_neon(void *dst1, void *cur1, int w, int prefs, int mrefs, - int prefs3, int mrefs3, int parity, int clip_max); - -+void ff_bwdif_filter_line_neon(void *dst1, void *prev1, void *cur1, void *next1, -+ int w, int prefs, int mrefs, int prefs2, int mrefs2, -+ int prefs3, int mrefs3, int prefs4, int mrefs4, -+ int parity, int clip_max); -+ -+ -+static void filter_line_helper(void *dst1, void *prev1, void *cur1, void *next1, -+ int w, int prefs, int mrefs, int prefs2, int mrefs2, -+ int prefs3, int mrefs3, int prefs4, int mrefs4, -+ int parity, int clip_max) -+{ -+ const int w0 = clip_max != 255 ? 0 : w & ~15; -+ -+ ff_bwdif_filter_line_neon(dst1, prev1, cur1, next1, -+ w0, prefs, mrefs, prefs2, mrefs2, prefs3, mrefs3, prefs4, mrefs4, parity, clip_max); -+ -+ if (w0 < w) -+ ff_bwdif_filter_line_c((char *)dst1 + w0, (char *)prev1 + w0, (char *)cur1 + w0, (char *)next1 + w0, -+ w - w0, prefs, mrefs, prefs2, mrefs2, prefs3, mrefs3, prefs4, mrefs4, parity, clip_max); -+} - - static void filter_edge_helper(void *dst1, void *prev1, void *cur1, void *next1, - int w, int prefs, int mrefs, int prefs2, int mrefs2, -@@ -71,6 +91,7 @@ ff_bwdif_init_aarch64(BWDIFContext *s, int bit_depth) - return; - - s->filter_intra = filter_intra_helper; -+ s->filter_line = filter_line_helper; - s->filter_edge = filter_edge_helper; - } - -diff --git a/libavfilter/aarch64/vf_bwdif_neon.S b/libavfilter/aarch64/vf_bwdif_neon.S -index 389302b813..f185e94e3c 100644 ---- a/libavfilter/aarch64/vf_bwdif_neon.S -+++ b/libavfilter/aarch64/vf_bwdif_neon.S -@@ -154,6 +154,209 @@ const coeffs, align=4 // align 4 means align on 2^4 boundry - .hword 5077, 981 // sp[0] = v0.h[6] - endconst - -+// =========================================================================== -+// -+// void filter_line( -+// void *dst1, // x0 -+// void *prev1, // x1 -+// void *cur1, // x2 -+// void *next1, // x3 -+// int w, // w4 -+// int prefs, // w5 -+// int mrefs, // w6 -+// int prefs2, // w7 -+// int mrefs2, // [sp, #0] -+// int prefs3, // [sp, #SP_INT] -+// int mrefs3, // [sp, #SP_INT*2] -+// int prefs4, // [sp, #SP_INT*3] -+// int mrefs4, // [sp, #SP_INT*4] -+// int parity, // [sp, #SP_INT*5] -+// int clip_max) // [sp, #SP_INT*6] -+ -+function ff_bwdif_filter_line_neon, export=1 -+ // Sanity check w -+ cmp w4, #0 -+ ble 99f -+ -+ // Rearrange regs to be the same as line3 for ease of debug! -+ mov w10, w4 // w10 = loop count -+ mov w9, w6 // w9 = mref -+ mov w12, w7 // w12 = pref2 -+ mov w11, w5 // w11 = pref -+ ldr w8, [sp, #0] // w8 = mref2 -+ ldr w7, [sp, #SP_INT*2] // w7 = mref3 -+ ldr w6, [sp, #SP_INT*4] // w6 = mref4 -+ ldr w13, [sp, #SP_INT] // w13 = pref3 -+ ldr w14, [sp, #SP_INT*3] // w14 = pref4 -+ -+ mov x4, x3 -+ mov x3, x2 -+ mov x2, x1 -+ -+ LDR_COEFFS v0, x17 -+ -+// #define prev2 cur -+// const uint8_t * restrict next2 = parity ? prev : next; -+ ldr w17, [sp, #SP_INT*5] // parity -+ cmp w17, #0 -+ csel x17, x2, x4, ne -+ -+ PUSH_VREGS -+ -+// for (x = 0; x < w; x++) { -+// int diff0, diff2; -+// int d0, d2; -+// int temporal_diff0, temporal_diff2; -+// -+// int i1, i2; -+// int j1, j2; -+// int p6, p5, p4, p3, p2, p1, c0, m1, m2, m3, m4; -+ -+10: -+// c0 = prev2[0] + next2[0]; // c0 = v20, v21 -+// d0 = c0 >> 1; // d0 = v10 -+// temporal_diff0 = FFABS(prev2[0] - next2[0]); // td0 = v11 -+ ldr q31, [x3] -+ ldr q21, [x17] -+ uhadd v10.16b, v31.16b, v21.16b -+ uabd v11.16b, v31.16b, v21.16b -+ uaddl v20.8h, v21.8b, v31.8b -+ uaddl2 v21.8h, v21.16b, v31.16b -+ -+ ldr q31, [x3, w6, sxtw] -+ ldr q23, [x17, w6, sxtw] -+ -+// i1 = coef_hf[0] * c0; // i1 = v2-v5 -+ UMULL4K v2, v3, v4, v5, v20, v21, v0.h[2] -+ -+ ldr q30, [x3, w14, sxtw] -+ ldr q25, [x17, w14, sxtw] -+ -+// m4 = prev2[mrefs4] + next2[mrefs4]; // m4 = v22,v23 -+ uaddl v22.8h, v23.8b, v31.8b -+ uaddl2 v23.8h, v23.16b, v31.16b -+ -+// p4 = prev2[prefs4] + next2[prefs4]; // p4 = v24,v25, (p4 >> 1) = v12 -+ uhadd v12.16b, v25.16b, v30.16b -+ uaddl v24.8h, v25.8b, v30.8b -+ uaddl2 v25.8h, v25.16b, v30.16b -+ -+// m3 = cur[mrefs3]; // m3 = v20 -+ ldr q20, [x3, w7, sxtw] -+ -+// p3 = cur[prefs3]; // p3 = v21 -+ ldr q21, [x3, w13, sxtw] -+ -+// i1 += coef_hf[2] * (m4 + p4); // (-m4:v22,v23) (-p4:v24,v25) -+ add v22.8h, v22.8h, v24.8h -+ add v23.8h, v23.8h, v25.8h -+ UMLAL4K v2, v3, v4, v5, v22, v23, v0.h[4] -+ -+ ldr q29, [x3, w8, sxtw] -+ ldr q23, [x17, w8, sxtw] -+ -+// i1 -= coef_lf[1] * 4 * (m3 + p3); // - -+ uaddl v30.8h, v20.8b, v21.8b -+ uaddl2 v31.8h, v20.16b, v21.16b -+ -+ UMLSL4K v2, v3, v4, v5, v30, v31, v0.h[1] -+ -+ ldr q31, [x3, w12, sxtw] -+ ldr q27, [x17, w12, sxtw] -+ -+// m2 = prev2[mrefs2] + next2[mrefs2]; // m2 = v22,v23, (m2 >> 1) = v13 -+ uhadd v13.16b, v23.16b, v29.16b -+ uaddl v22.8h, v23.8b, v29.8b -+ uaddl2 v23.8h, v23.16b, v29.16b -+ -+// m1 = cur[mrefs]; // m1 = v24 -+ ldr q24, [x3, w9, sxtw] -+ -+// p2 = prev2[prefs2] + next2[prefs2]; // p2 = v26, v27 -+// temporal_diff2 = FFABS(prev2[prefs2] - next2[prefs2]); // td2 = v14 -+// d2 = p2 >> 1; // d2 = v15 -+ uabd v14.16b, v31.16b, v27.16b -+ uhadd v15.16b, v31.16b, v27.16b -+ uaddl v26.8h, v27.8b, v31.8b -+ uaddl2 v27.8h, v27.16b, v31.16b -+ -+// i1 -= coef_hf[1] * (m2 + p2); // (-m2:v22,v23*) (-p2:v26*,v27*) -+ add v22.8h, v22.8h, v26.8h -+ add v23.8h, v23.8h, v27.8h -+ UMLSL4K v2, v3, v4, v5, v22, v23, v0.h[3] -+ -+// p1 = cur[prefs]; // p1 = v22 -+ ldr q22, [x3, w11, sxtw] -+ -+// i2 = (coef_sp[0] * (m1 + p1) - coef_sp[1] * (m3 + p3)) >> 13; // (-m3:v20*) i2=v17 -+ uaddl v18.8h, v22.8b, v24.8b -+ uaddl2 v19.8h, v22.16b, v24.16b -+ UMULL4K v28, v29, v30, v31, v18, v19, v0.h[6] -+ -+ uaddl v18.8h, v20.8b, v21.8b -+ uaddl2 v19.8h, v20.16b, v21.16b -+ UMLSL4K v28, v29, v30, v31, v18, v19, v0.h[7] -+ -+ SQSHRUNN v17, v28, v29, v30, v31, 13 -+ -+// i1 += coef_lf[0] * 4 * (m1 + p1); // p1 = v22, m1 = v24 -+ uaddl v26.8h, v24.8b, v22.8b -+ uaddl2 v27.8h, v24.16b, v22.16b -+ UMLAL4K v2, v3, v4, v5, v26, v27, v0.h[0] -+ -+ ldr q31, [x2, w9, sxtw] -+ ldr q29, [x4, w9, sxtw] -+ -+ ldr q30, [x2, w11, sxtw] -+ ldr q28, [x4, w11, sxtw] -+ -+// i1 >>= 15; // i1 = v2, -v3, -v4*, -v5* -+ SQSHRUNN v2, v2, v3, v4, v5, 15 -+ -+// { -+// int t1 =(FFABS(prev[mrefs] - m1) + FFABS(prev[prefs] - p1)) >> 1; -+// int t2 =(FFABS(next[mrefs] - m1) + FFABS(next[prefs] - p1)) >> 1; -+ uabd v30.16b, v22.16b, v30.16b -+ uabd v31.16b, v24.16b, v31.16b -+ uabd v28.16b, v22.16b, v28.16b -+ uabd v29.16b, v24.16b, v29.16b -+ uhadd v31.16b, v31.16b, v30.16b -+ uhadd v29.16b, v29.16b, v28.16b -+ -+// diff0 = FFMAX3(temporal_diff0 >> 1, t1, t2); // diff0=v18 -+ ushr v18.16b, v11.16b, #1 -+ umax v18.16b, v18.16b, v31.16b -+ umax v18.16b, v18.16b, v29.16b -+ -+ // diff0 = v18, (m2 >> 1) = v13, m1 = v24, d0 = v10, p1 = v22, d2 = v15 -+ SPAT_CHECK v18, v13, v24, v10, v22, v15, v31, v30, v29, v28 -+ -+ // i1 = v2, i2 = v17, m1 = v24, d0 = v10, p1 = v22, td2 = v11, diff2 = v18 -+ INTERPOL v2, v2, v17, v24, v10, v22, v11, v18, v31, v30, v29 -+ -+// dst[0] = av_clip_uint8(interpol); -+ str q2, [x0], #16 -+// } -+// -+// dst++; -+// cur++; -+// prev++; -+// prev2++; -+// next++; -+// } -+ -+ subs w10, w10, #16 -+ add x2, x2, #16 -+ add x3, x3, #16 -+ add x4, x4, #16 -+ add x17, x17, #16 -+ bgt 10b -+ -+ POP_VREGS -+99: -+ ret -+endfunc -+ - // ============================================================================ - // - // void ff_bwdif_filter_edge_neon( -diff --git a/libavfilter/bwdif.h b/libavfilter/bwdif.h -index ae1616d366..cce99953f3 100644 ---- a/libavfilter/bwdif.h -+++ b/libavfilter/bwdif.h -@@ -48,4 +48,9 @@ void ff_bwdif_filter_edge_c(void *dst1, void *prev1, void *cur1, void *next1, - void ff_bwdif_filter_intra_c(void *dst1, void *cur1, int w, int prefs, int mrefs, - int prefs3, int mrefs3, int parity, int clip_max); - -+void ff_bwdif_filter_line_c(void *dst1, void *prev1, void *cur1, void *next1, -+ int w, int prefs, int mrefs, int prefs2, int mrefs2, -+ int prefs3, int mrefs3, int prefs4, int mrefs4, -+ int parity, int clip_max); -+ - #endif /* AVFILTER_BWDIF_H */ -diff --git a/libavfilter/vf_bwdif.c b/libavfilter/vf_bwdif.c -index 688c2d2572..2dc47f9614 100644 ---- a/libavfilter/vf_bwdif.c -+++ b/libavfilter/vf_bwdif.c -@@ -132,10 +132,10 @@ void ff_bwdif_filter_intra_c(void *dst1, void *cur1, int w, int prefs, int mrefs - FILTER_INTRA() - } - --static void filter_line_c(void *dst1, void *prev1, void *cur1, void *next1, -- int w, int prefs, int mrefs, int prefs2, int mrefs2, -- int prefs3, int mrefs3, int prefs4, int mrefs4, -- int parity, int clip_max) -+void ff_bwdif_filter_line_c(void *dst1, void *prev1, void *cur1, void *next1, -+ int w, int prefs, int mrefs, int prefs2, int mrefs2, -+ int prefs3, int mrefs3, int prefs4, int mrefs4, -+ int parity, int clip_max) - { - uint8_t *dst = dst1; - uint8_t *prev = prev1; -@@ -353,7 +353,7 @@ av_cold void ff_bwdif_init_filter_line(BWDIFContext *s, int bit_depth) - s->filter_edge = filter_edge_16bit; - } else { - s->filter_intra = ff_bwdif_filter_intra_c; -- s->filter_line = filter_line_c; -+ s->filter_line = ff_bwdif_filter_line_c; - s->filter_edge = ff_bwdif_filter_edge_c; - } - - -From 7601de6ab2604d1f530e4b8f20f409d1ec2ae6a4 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 4 Jul 2023 14:04:44 +0000 -Subject: [PATCH 150/151] avfilter/vf_bwdif: Add a filter_line3 method for - optimisation -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Add an optional filter_line3 to the available optimisations. - -filter_line3 is equivalent to filter_line, memcpy, filter_line - -filter_line shares quite a number of loads and some calculations in -common with its next iteration and testing shows that using aarch64 -neon filter_line3s performance is 30% better than two filter_lines -and a memcpy. - -Adds a test for vf_bwdif filter_line3 to checkasm - -Rounds job start lines down to a multiple of 4. This means that if -filter_line3 exists then filter_line will not sometimes be called -once at the end of a slice depending on thread count. The final slice -may do up to 3 extra lines but filter_edge is faster than filter_line -so it is unlikely to create any noticable thread load variation. - -Signed-off-by: John Cox -Signed-off-by: Martin Storsjö -(cherry picked from commit 697533e76dbea8cc7fd6a0642bc60050cc05ead8) ---- - libavfilter/bwdif.h | 7 ++++ - libavfilter/vf_bwdif.c | 44 +++++++++++++++++++-- - tests/checkasm/vf_bwdif.c | 81 +++++++++++++++++++++++++++++++++++++++ - 3 files changed, 129 insertions(+), 3 deletions(-) - -diff --git a/libavfilter/bwdif.h b/libavfilter/bwdif.h -index cce99953f3..496cec72ef 100644 ---- a/libavfilter/bwdif.h -+++ b/libavfilter/bwdif.h -@@ -35,6 +35,9 @@ typedef struct BWDIFContext { - void (*filter_edge)(void *dst, void *prev, void *cur, void *next, - int w, int prefs, int mrefs, int prefs2, int mrefs2, - int parity, int clip_max, int spat); -+ void (*filter_line3)(void *dst, int dstride, -+ const void *prev, const void *cur, const void *next, int prefs, -+ int w, int parity, int clip_max); - } BWDIFContext; - - void ff_bwdif_init_filter_line(BWDIFContext *bwdif, int bit_depth); -@@ -53,4 +56,8 @@ void ff_bwdif_filter_line_c(void *dst1, void *prev1, void *cur1, void *next1, - int prefs3, int mrefs3, int prefs4, int mrefs4, - int parity, int clip_max); - -+void ff_bwdif_filter_line3_c(void * dst1, int d_stride, -+ const void * prev1, const void * cur1, const void * next1, int s_stride, -+ int w, int parity, int clip_max); -+ - #endif /* AVFILTER_BWDIF_H */ -diff --git a/libavfilter/vf_bwdif.c b/libavfilter/vf_bwdif.c -index 2dc47f9614..9847d38b6a 100644 ---- a/libavfilter/vf_bwdif.c -+++ b/libavfilter/vf_bwdif.c -@@ -150,6 +150,31 @@ void ff_bwdif_filter_line_c(void *dst1, void *prev1, void *cur1, void *next1, - FILTER2() - } - -+#define NEXT_LINE()\ -+ dst += d_stride; \ -+ prev += prefs; \ -+ cur += prefs; \ -+ next += prefs; -+ -+void ff_bwdif_filter_line3_c(void * dst1, int d_stride, -+ const void * prev1, const void * cur1, const void * next1, int s_stride, -+ int w, int parity, int clip_max) -+{ -+ const int prefs = s_stride; -+ uint8_t * dst = dst1; -+ const uint8_t * prev = prev1; -+ const uint8_t * cur = cur1; -+ const uint8_t * next = next1; -+ -+ ff_bwdif_filter_line_c(dst, (void*)prev, (void*)cur, (void*)next, w, -+ prefs, -prefs, prefs * 2, - prefs * 2, prefs * 3, -prefs * 3, prefs * 4, -prefs * 4, parity, clip_max); -+ NEXT_LINE(); -+ memcpy(dst, cur, w); -+ NEXT_LINE(); -+ ff_bwdif_filter_line_c(dst, (void*)prev, (void*)cur, (void*)next, w, -+ prefs, -prefs, prefs * 2, - prefs * 2, prefs * 3, -prefs * 3, prefs * 4, -prefs * 4, parity, clip_max); -+} -+ - void ff_bwdif_filter_edge_c(void *dst1, void *prev1, void *cur1, void *next1, - int w, int prefs, int mrefs, int prefs2, int mrefs2, - int parity, int clip_max, int spat) -@@ -212,6 +237,13 @@ static void filter_edge_16bit(void *dst1, void *prev1, void *cur1, void *next1, - FILTER2() - } - -+// Round job start line down to multiple of 4 so that if filter_line3 exists -+// and the frame is a multiple of 4 high then filter_line will never be called -+static inline int job_start(const int jobnr, const int nb_jobs, const int h) -+{ -+ return jobnr >= nb_jobs ? h : ((h * jobnr) / nb_jobs) & ~3; -+} -+ - static int filter_slice(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) - { - BWDIFContext *s = ctx->priv; -@@ -221,8 +253,8 @@ static int filter_slice(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) - int clip_max = (1 << (yadif->csp->comp[td->plane].depth)) - 1; - int df = (yadif->csp->comp[td->plane].depth + 7) / 8; - int refs = linesize / df; -- int slice_start = (td->h * jobnr ) / nb_jobs; -- int slice_end = (td->h * (jobnr+1)) / nb_jobs; -+ int slice_start = job_start(jobnr, nb_jobs, td->h); -+ int slice_end = job_start(jobnr + 1, nb_jobs, td->h); - int y; - - for (y = slice_start; y < slice_end; y++) { -@@ -244,6 +276,11 @@ static int filter_slice(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) - refs << 1, -(refs << 1), - td->parity ^ td->tff, clip_max, - (y < 2) || ((y + 3) > td->h) ? 0 : 1); -+ } else if (s->filter_line3 && y + 2 < slice_end && y + 6 < td->h) { -+ s->filter_line3(dst, td->frame->linesize[td->plane], -+ prev, cur, next, linesize, td->w, -+ td->parity ^ td->tff, clip_max); -+ y += 2; - } else { - s->filter_line(dst, prev, cur, next, td->w, - refs, -refs, refs << 1, -(refs << 1), -@@ -280,7 +317,7 @@ static void filter(AVFilterContext *ctx, AVFrame *dstpic, - td.plane = i; - - ff_filter_execute(ctx, filter_slice, &td, NULL, -- FFMIN(h, ff_filter_get_nb_threads(ctx))); -+ FFMIN((h+3)/4, ff_filter_get_nb_threads(ctx))); - } - if (yadif->current_field == YADIF_FIELD_END) { - yadif->current_field = YADIF_FIELD_NORMAL; -@@ -347,6 +384,7 @@ static int config_props(AVFilterLink *link) - - av_cold void ff_bwdif_init_filter_line(BWDIFContext *s, int bit_depth) - { -+ s->filter_line3 = 0; - if (bit_depth > 8) { - s->filter_intra = filter_intra_16bit; - s->filter_line = filter_line_c_16bit; -diff --git a/tests/checkasm/vf_bwdif.c b/tests/checkasm/vf_bwdif.c -index 5fdba09fdc..3399cacdf7 100644 ---- a/tests/checkasm/vf_bwdif.c -+++ b/tests/checkasm/vf_bwdif.c -@@ -28,6 +28,10 @@ - for (size_t i = 0; i < count; i++) \ - buf0[i] = buf1[i] = rnd() & mask - -+#define randomize_overflow_check(buf0, buf1, mask, count) \ -+ for (size_t i = 0; i < count; i++) \ -+ buf0[i] = buf1[i] = (rnd() & 1) != 0 ? mask : 0; -+ - #define BODY(type, depth) \ - do { \ - type prev0[9*WIDTH], prev1[9*WIDTH]; \ -@@ -83,6 +87,83 @@ void checkasm_check_vf_bwdif(void) - report("bwdif10"); - } - -+ if (!ctx_8.filter_line3) -+ ctx_8.filter_line3 = ff_bwdif_filter_line3_c; -+ -+ { -+ LOCAL_ALIGNED_16(uint8_t, prev0, [11*WIDTH]); -+ LOCAL_ALIGNED_16(uint8_t, prev1, [11*WIDTH]); -+ LOCAL_ALIGNED_16(uint8_t, next0, [11*WIDTH]); -+ LOCAL_ALIGNED_16(uint8_t, next1, [11*WIDTH]); -+ LOCAL_ALIGNED_16(uint8_t, cur0, [11*WIDTH]); -+ LOCAL_ALIGNED_16(uint8_t, cur1, [11*WIDTH]); -+ LOCAL_ALIGNED_16(uint8_t, dst0, [WIDTH*3]); -+ LOCAL_ALIGNED_16(uint8_t, dst1, [WIDTH*3]); -+ const int stride = WIDTH; -+ const int mask = (1<<8)-1; -+ int parity; -+ -+ for (parity = 0; parity != 2; ++parity) { -+ if (check_func(ctx_8.filter_line3, "bwdif8.line3.rnd.p%d", parity)) { -+ -+ declare_func(void, void * dst1, int d_stride, -+ const void * prev1, const void * cur1, const void * next1, int prefs, -+ int w, int parity, int clip_max); -+ -+ randomize_buffers(prev0, prev1, mask, 11*WIDTH); -+ randomize_buffers(next0, next1, mask, 11*WIDTH); -+ randomize_buffers( cur0, cur1, mask, 11*WIDTH); -+ -+ call_ref(dst0, stride, -+ prev0 + stride * 4, cur0 + stride * 4, next0 + stride * 4, stride, -+ WIDTH, parity, mask); -+ call_new(dst1, stride, -+ prev1 + stride * 4, cur1 + stride * 4, next1 + stride * 4, stride, -+ WIDTH, parity, mask); -+ -+ if (memcmp(dst0, dst1, WIDTH*3) -+ || memcmp(prev0, prev1, WIDTH*11) -+ || memcmp(next0, next1, WIDTH*11) -+ || memcmp( cur0, cur1, WIDTH*11)) -+ fail(); -+ -+ bench_new(dst1, stride, -+ prev1 + stride * 4, cur1 + stride * 4, next1 + stride * 4, stride, -+ WIDTH, parity, mask); -+ } -+ } -+ -+ // Use just 0s and ~0s to try to provoke bad cropping or overflow -+ // Parity makes no difference to this test so just test 0 -+ if (check_func(ctx_8.filter_line3, "bwdif8.line3.overflow")) { -+ -+ declare_func(void, void * dst1, int d_stride, -+ const void * prev1, const void * cur1, const void * next1, int prefs, -+ int w, int parity, int clip_max); -+ -+ randomize_overflow_check(prev0, prev1, mask, 11*WIDTH); -+ randomize_overflow_check(next0, next1, mask, 11*WIDTH); -+ randomize_overflow_check( cur0, cur1, mask, 11*WIDTH); -+ -+ call_ref(dst0, stride, -+ prev0 + stride * 4, cur0 + stride * 4, next0 + stride * 4, stride, -+ WIDTH, 0, mask); -+ call_new(dst1, stride, -+ prev1 + stride * 4, cur1 + stride * 4, next1 + stride * 4, stride, -+ WIDTH, 0, mask); -+ -+ if (memcmp(dst0, dst1, WIDTH*3) -+ || memcmp(prev0, prev1, WIDTH*11) -+ || memcmp(next0, next1, WIDTH*11) -+ || memcmp( cur0, cur1, WIDTH*11)) -+ fail(); -+ -+ // No point to benching -+ } -+ -+ report("bwdif8.line3"); -+ } -+ - { - LOCAL_ALIGNED_16(uint8_t, prev0, [11*WIDTH]); - LOCAL_ALIGNED_16(uint8_t, prev1, [11*WIDTH]); - -From 120058b7abd0db1d222b1e197207de8226fdfd94 Mon Sep 17 00:00:00 2001 -From: John Cox -Date: Tue, 4 Jul 2023 14:04:45 +0000 -Subject: [PATCH 151/151] avfilter/vf_bwdif: Add neon for filter_line3 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: John Cox -Signed-off-by: Martin Storsjö -(cherry picked from commit f00222e81f7d6a59d977fbb280d67989818e0ad2) ---- - libavfilter/aarch64/vf_bwdif_init_aarch64.c | 28 ++ - libavfilter/aarch64/vf_bwdif_neon.S | 272 ++++++++++++++++++++ - 2 files changed, 300 insertions(+) - -diff --git a/libavfilter/aarch64/vf_bwdif_init_aarch64.c b/libavfilter/aarch64/vf_bwdif_init_aarch64.c -index 21e67884ab..f52bc4b9b4 100644 ---- a/libavfilter/aarch64/vf_bwdif_init_aarch64.c -+++ b/libavfilter/aarch64/vf_bwdif_init_aarch64.c -@@ -36,6 +36,33 @@ void ff_bwdif_filter_line_neon(void *dst1, void *prev1, void *cur1, void *next1, - int prefs3, int mrefs3, int prefs4, int mrefs4, - int parity, int clip_max); - -+void ff_bwdif_filter_line3_neon(void * dst1, int d_stride, -+ const void * prev1, const void * cur1, const void * next1, int s_stride, -+ int w, int parity, int clip_max); -+ -+ -+static void filter_line3_helper(void * dst1, int d_stride, -+ const void * prev1, const void * cur1, const void * next1, int s_stride, -+ int w, int parity, int clip_max) -+{ -+ // Asm works on 16 byte chunks -+ // If w is a multiple of 16 then all is good - if not then if width rounded -+ // up to nearest 16 will fit in both src & dst strides then allow the asm -+ // to write over the padding bytes as that is almost certainly faster than -+ // having to invoke the C version to clean up the tail. -+ const int w1 = FFALIGN(w, 16); -+ const int w0 = clip_max != 255 ? 0 : -+ d_stride <= w1 && s_stride <= w1 ? w : w & ~15; -+ -+ ff_bwdif_filter_line3_neon(dst1, d_stride, -+ prev1, cur1, next1, s_stride, -+ w0, parity, clip_max); -+ -+ if (w0 < w) -+ ff_bwdif_filter_line3_c((char *)dst1 + w0, d_stride, -+ (const char *)prev1 + w0, (const char *)cur1 + w0, (const char *)next1 + w0, s_stride, -+ w - w0, parity, clip_max); -+} - - static void filter_line_helper(void *dst1, void *prev1, void *cur1, void *next1, - int w, int prefs, int mrefs, int prefs2, int mrefs2, -@@ -93,5 +120,6 @@ ff_bwdif_init_aarch64(BWDIFContext *s, int bit_depth) - s->filter_intra = filter_intra_helper; - s->filter_line = filter_line_helper; - s->filter_edge = filter_edge_helper; -+ s->filter_line3 = filter_line3_helper; - } - -diff --git a/libavfilter/aarch64/vf_bwdif_neon.S b/libavfilter/aarch64/vf_bwdif_neon.S -index f185e94e3c..ae9aab20cd 100644 ---- a/libavfilter/aarch64/vf_bwdif_neon.S -+++ b/libavfilter/aarch64/vf_bwdif_neon.S -@@ -154,6 +154,278 @@ const coeffs, align=4 // align 4 means align on 2^4 boundry - .hword 5077, 981 // sp[0] = v0.h[6] - endconst - -+// =========================================================================== -+// -+// void ff_bwdif_filter_line3_neon( -+// void * dst1, // x0 -+// int d_stride, // w1 -+// const void * prev1, // x2 -+// const void * cur1, // x3 -+// const void * next1, // x4 -+// int s_stride, // w5 -+// int w, // w6 -+// int parity, // w7 -+// int clip_max); // [sp, #0] (Ignored) -+ -+function ff_bwdif_filter_line3_neon, export=1 -+ // Sanity check w -+ cmp w6, #0 -+ ble 99f -+ -+ LDR_COEFFS v0, x17 -+ -+// #define prev2 cur -+// const uint8_t * restrict next2 = parity ? prev : next; -+ cmp w7, #0 -+ csel x17, x2, x4, ne -+ -+ // We want all the V registers - save all the ones we must -+ PUSH_VREGS -+ -+ // Some rearrangement of initial values for nice layout of refs in regs -+ mov w10, w6 // w10 = loop count -+ neg w9, w5 // w9 = mref -+ lsl w8, w9, #1 // w8 = mref2 -+ add w7, w9, w9, LSL #1 // w7 = mref3 -+ lsl w6, w9, #2 // w6 = mref4 -+ mov w11, w5 // w11 = pref -+ lsl w12, w5, #1 // w12 = pref2 -+ add w13, w5, w5, LSL #1 // w13 = pref3 -+ lsl w14, w5, #2 // w14 = pref4 -+ add w15, w5, w5, LSL #2 // w15 = pref5 -+ add w16, w14, w12 // w16 = pref6 -+ -+ lsl w5, w1, #1 // w5 = d_stride * 2 -+ -+// for (x = 0; x < w; x++) { -+// int diff0, diff2; -+// int d0, d2; -+// int temporal_diff0, temporal_diff2; -+// -+// int i1, i2; -+// int j1, j2; -+// int p6, p5, p4, p3, p2, p1, c0, m1, m2, m3, m4; -+ -+10: -+// c0 = prev2[0] + next2[0]; // c0 = v20, v21 -+// d0 = c0 >> 1; // d0 = v10 -+// temporal_diff0 = FFABS(prev2[0] - next2[0]); // td0 = v11 -+ ldr q31, [x3] -+ ldr q21, [x17] -+ uhadd v10.16b, v31.16b, v21.16b -+ uabd v11.16b, v31.16b, v21.16b -+ uaddl v20.8h, v21.8b, v31.8b -+ uaddl2 v21.8h, v21.16b, v31.16b -+ -+ ldr q31, [x3, w6, sxtw] -+ ldr q23, [x17, w6, sxtw] -+ -+// i1 = coef_hf[0] * c0; // i1 = v2-v5 -+ UMULL4K v2, v3, v4, v5, v20, v21, v0.h[2] -+ -+ ldr q30, [x3, w14, sxtw] -+ ldr q25, [x17, w14, sxtw] -+ -+// m4 = prev2[mrefs4] + next2[mrefs4]; // m4 = v22,v23 -+ uaddl v22.8h, v23.8b, v31.8b -+ uaddl2 v23.8h, v23.16b, v31.16b -+ -+// p4 = prev2[prefs4] + next2[prefs4]; // p4 = v24,v25, (p4 >> 1) = v12 -+ uhadd v12.16b, v25.16b, v30.16b -+ uaddl v24.8h, v25.8b, v30.8b -+ uaddl2 v25.8h, v25.16b, v30.16b -+ -+// j1 = -coef_hf[1] * (c0 + p4); // j1 = v6-v9 (-c0:v20,v21) -+ add v20.8h, v20.8h, v24.8h -+ add v21.8h, v21.8h, v25.8h -+ SMULL4K v6, v7, v8, v9, v20, v21, v0.h[5] -+ -+// m3 = cur[mrefs3]; // m3 = v20 -+ ldr q20, [x3, w7, sxtw] -+ -+// p3 = cur[prefs3]; // p3 = v21 -+ ldr q21, [x3, w13, sxtw] -+ -+// i1 += coef_hf[2] * (m4 + p4); // (-m4:v22,v23) (-p4:v24,v25) -+ add v22.8h, v22.8h, v24.8h -+ add v23.8h, v23.8h, v25.8h -+ UMLAL4K v2, v3, v4, v5, v22, v23, v0.h[4] -+ -+ ldr q29, [x3, w8, sxtw] -+ ldr q23, [x17, w8, sxtw] -+ -+// i1 -= coef_lf[1] * 4 * (m3 + p3); // - -+ uaddl v30.8h, v20.8b, v21.8b -+ uaddl2 v31.8h, v20.16b, v21.16b -+ -+ ldr q28, [x3, w16, sxtw] -+ ldr q25, [x17, w16, sxtw] -+ -+ UMLSL4K v2, v3, v4, v5, v30, v31, v0.h[1] -+ -+// m2 = prev2[mrefs2] + next2[mrefs2]; // m2 = v22,v23, (m2 >> 1) = v13 -+ uhadd v13.16b, v23.16b, v29.16b -+ uaddl v22.8h, v23.8b, v29.8b -+ uaddl2 v23.8h, v23.16b, v29.16b -+ -+ ldr q31, [x3, w12, sxtw] -+ ldr q27, [x17, w12, sxtw] -+ -+// p6 = prev2[prefs6] + next2[prefs6]; // p6 = v24,v25 -+ uaddl v24.8h, v25.8b, v28.8b -+ uaddl2 v25.8h, v25.16b, v28.16b -+ -+// j1 += coef_hf[2] * (m2 + p6); // (-p6:v24,v25) -+ add v24.8h, v24.8h, v22.8h -+ add v25.8h, v25.8h, v23.8h -+ UMLAL4K v6, v7, v8, v9, v24, v25, v0.h[4] -+ -+// m1 = cur[mrefs]; // m1 = v24 -+ ldr q24, [x3, w9, sxtw] -+ -+// p5 = cur[prefs5]; // p5 = v25 -+ ldr q25, [x3, w15, sxtw] -+ -+// p2 = prev2[prefs2] + next2[prefs2]; // p2 = v26, v27 -+// temporal_diff2 = FFABS(prev2[prefs2] - next2[prefs2]); // td2 = v14 -+// d2 = p2 >> 1; // d2 = v15 -+ uabd v14.16b, v31.16b, v27.16b -+ uhadd v15.16b, v31.16b, v27.16b -+ uaddl v26.8h, v27.8b, v31.8b -+ uaddl2 v27.8h, v27.16b, v31.16b -+ -+// j1 += coef_hf[0] * p2; // - -+ UMLAL4K v6, v7, v8, v9, v26, v27, v0.h[2] -+ -+// i1 -= coef_hf[1] * (m2 + p2); // (-m2:v22,v23*) (-p2:v26*,v27*) -+ add v22.8h, v22.8h, v26.8h -+ add v23.8h, v23.8h, v27.8h -+ UMLSL4K v2, v3, v4, v5, v22, v23, v0.h[3] -+ -+// p1 = cur[prefs]; // p1 = v22 -+ ldr q22, [x3, w11, sxtw] -+ -+// j1 -= coef_lf[1] * 4 * (m1 + p5); // - -+ uaddl v26.8h, v24.8b, v25.8b -+ uaddl2 v27.8h, v24.16b, v25.16b -+ UMLSL4K v6, v7, v8, v9, v26, v27, v0.h[1] -+ -+// j2 = (coef_sp[0] * (p1 + p3) - coef_sp[1] * (m1 + p5)) >> 13; // (-p5:v25*) j2=v16 -+ uaddl v18.8h, v22.8b, v21.8b -+ uaddl2 v19.8h, v22.16b, v21.16b -+ UMULL4K v28, v29, v30, v31, v18, v19, v0.h[6] -+ -+ uaddl v18.8h, v24.8b, v25.8b -+ uaddl2 v19.8h, v24.16b, v25.16b -+ UMLSL4K v28, v29, v30, v31, v18, v19, v0.h[7] -+ -+ SQSHRUNN v16, v28, v29, v30, v31, 13 -+ -+// i2 = (coef_sp[0] * (m1 + p1) - coef_sp[1] * (m3 + p3)) >> 13; // (-m3:v20*) i2=v17 -+ uaddl v18.8h, v22.8b, v24.8b -+ uaddl2 v19.8h, v22.16b, v24.16b -+ UMULL4K v28, v29, v30, v31, v18, v19, v0.h[6] -+ -+ uaddl v18.8h, v20.8b, v21.8b -+ uaddl2 v19.8h, v20.16b, v21.16b -+ UMLSL4K v28, v29, v30, v31, v18, v19, v0.h[7] -+ -+ SQSHRUNN v17, v28, v29, v30, v31, 13 -+ -+// i1 += coef_lf[0] * 4 * (m1 + p1); // p1 = v22, m1 = v24 -+ uaddl v26.8h, v24.8b, v22.8b -+ uaddl2 v27.8h, v24.16b, v22.16b -+ UMLAL4K v2, v3, v4, v5, v26, v27, v0.h[0] -+ -+ ldr q31, [x2, w9, sxtw] -+ ldr q29, [x4, w9, sxtw] -+ -+// j1 += coef_lf[0] * 4 * (p1 + p3); // p1 = v22, p3 = v21 -+ uaddl v26.8h, v21.8b, v22.8b -+ uaddl2 v27.8h, v21.16b, v22.16b -+ UMLAL4K v6, v7, v8, v9, v26, v27, v0.h[0] -+ -+ ldr q30, [x2, w11, sxtw] -+ ldr q28, [x4, w11, sxtw] -+ -+// i1 >>= 15; // i1 = v2, -v3, -v4*, -v5* -+ SQSHRUNN v2, v2, v3, v4, v5, 15 -+ -+// j1 >>= 15; // j1 = v3, -v6*, -v7*, -v8*, -v9* -+ SQSHRUNN v3, v6, v7, v8, v9, 15 -+ -+// { -+// int t1 =(FFABS(prev[mrefs] - m1) + FFABS(prev[prefs] - p1)) >> 1; -+// int t2 =(FFABS(next[mrefs] - m1) + FFABS(next[prefs] - p1)) >> 1; -+ uabd v30.16b, v22.16b, v30.16b -+ uabd v31.16b, v24.16b, v31.16b -+ uabd v28.16b, v22.16b, v28.16b -+ uabd v29.16b, v24.16b, v29.16b -+ uhadd v31.16b, v31.16b, v30.16b -+ uhadd v29.16b, v29.16b, v28.16b -+ -+ ldr q27, [x2, w13, sxtw] -+ ldr q26, [x4, w13, sxtw] -+ -+// diff0 = FFMAX3(temporal_diff0 >> 1, t1, t2); // diff0=v18 -+ ushr v18.16b, v11.16b, #1 -+ umax v18.16b, v18.16b, v31.16b -+ umax v18.16b, v18.16b, v29.16b -+// } // v28, v30 preserved for next block -+// { // tdiff2 = v14 -+// int t1 =(FFABS(prev[prefs] - p1) + FFABS(prev[prefs3] - p3)) >> 1; -+// int t2 =(FFABS(next[prefs] - p1) + FFABS(next[prefs3] - p3)) >> 1; -+ uabd v31.16b, v21.16b, v27.16b -+ uabd v29.16b, v21.16b, v26.16b -+ uhadd v31.16b, v31.16b, v30.16b -+ uhadd v29.16b, v29.16b, v28.16b -+ -+// diff2 = FFMAX3(temporal_diff2 >> 1, t1, t2); // diff2=v19 -+ ushr v19.16b, v14.16b, #1 -+ umax v19.16b, v19.16b, v31.16b -+ umax v19.16b, v19.16b, v29.16b -+// } -+ -+ // diff0 = v18, (m2 >> 1) = v13, m1 = v24, d0 = v10, p1 = v22, d2 = v15 -+ SPAT_CHECK v18, v13, v24, v10, v22, v15, v31, v30, v29, v28 -+ -+ // diff2 = v19, d0 = v10, p1 = v22, d2 = v15, p3 = v21, (p4 >> 1) = v12 -+ SPAT_CHECK v19, v10, v22, v15, v21, v12, v31, v30, v29, v28 -+ -+ // j1 = v3, j2 = v16, p1 = v22, d2 = v15, p3 = v21, td2 = v14, diff2 = v19 -+ INTERPOL v3, v3, v16, v22, v15, v21, v14, v19, v31, v30, v29 -+ -+// dst[d_stride * 2] = av_clip_uint8(interpol); -+ str q3, [x0, w5, sxtw] -+ -+// dst[d_stride] = p1; -+ str q22, [x0, w1, sxtw] -+ -+ // i1 = v2, i2 = v17, m1 = v24, d0 = v10, p1 = v22, td2 = v11, diff2 = v18 -+ INTERPOL v2, v2, v17, v24, v10, v22, v11, v18, v31, v30, v29 -+ -+// dst[0] = av_clip_uint8(interpol); -+ str q2, [x0], #16 -+// } -+// -+// dst++; -+// cur++; -+// prev++; -+// prev2++; -+// next++; -+// } -+ subs w10, w10, #16 -+ add x2, x2, #16 -+ add x3, x3, #16 -+ add x4, x4, #16 -+ add x17, x17, #16 -+ bgt 10b -+ -+ POP_VREGS -+99: -+ ret -+endfunc -+ - // =========================================================================== - // - // void filter_line( diff --git a/packages/sysutils/busybox/package.mk b/packages/sysutils/busybox/package.mk index b838d0a728..1b5d7ad6f5 100644 --- a/packages/sysutils/busybox/package.mk +++ b/packages/sysutils/busybox/package.mk @@ -133,10 +133,6 @@ makeinstall_target() { sed -e "s/@DISTRONAME@/${DISTRONAME}/g" \ -i ${INSTALL}/usr/lib/jelos/fs-resize - if listcontains "${FIRMWARE}" "rpi-eeprom"; then - cp ${PKG_DIR}/scripts/rpi-flash-firmware ${INSTALL}/usr/lib/jelos/ - fi - mkdir -p ${INSTALL}/etc cp ${PKG_DIR}/config/profile ${INSTALL}/etc cp ${PKG_DIR}/config/inputrc ${INSTALL}/etc @@ -190,8 +186,6 @@ post_install() { enable_service var.mount enable_service proc-sys-fs-binfmt_misc.mount - listcontains "${FIRMWARE}" "rpi-eeprom" && enable_service rpi-flash-firmware.service - # cron support if [ "$CRON_SUPPORT" = "yes" ] ; then mkdir -p ${INSTALL}/usr/lib/systemd/system diff --git a/packages/sysutils/busybox/scripts/init b/packages/sysutils/busybox/scripts/init index fa3a2f8624..b68a9be268 100755 --- a/packages/sysutils/busybox/scripts/init +++ b/packages/sysutils/busybox/scripts/init @@ -1225,8 +1225,6 @@ elif [ -f /sysroot/storage/.cache/reset_oe -o -f /sysroot/storage/.cache/reset_x INIT_UNIT="--unit=factory-reset.target" elif [ -f "${BACKUP_FILE}" ]; then INIT_UNIT="--unit=backup-restore.target" -elif [ -f /sysroot/storage/.rpi_flash_firmware ]; then - INIT_UNIT="--unit=rpi-flash-firmware.target" fi # stop output redirection diff --git a/packages/sysutils/busybox/scripts/rpi-flash-firmware b/packages/sysutils/busybox/scripts/rpi-flash-firmware deleted file mode 100755 index eb8237a014..0000000000 --- a/packages/sysutils/busybox/scripts/rpi-flash-firmware +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/sh - -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv) - -FLAG_FILE="/storage/.rpi_flash_firmware" - -. /usr/lib/jelos/functions - -hidecursor - -if [ -f "${FLAG_FILE}" ]; then - . ${FLAG_FILE} - rm -f "${FLAG_FILE}" - - if ! mount -o remount,rw /flash 2>/dev/null; then - echo "ERROR: Unable to mount /flash as a read/write file system." - echo - echo "Aborting Flash update process - please proceed with a manual update." - echo - - StartProgress countdown "Rebooting in 15s... " 15 "NOW" - reboot -f &>/dev/null - fi - - # Install new bootloader and/or USB3 firmware files to /flash - # Firmware flashing will occur during the next boot, after - # which the system will again reboot. - # Old firmware files will be automatically removed by init. - CMD_ARGS="" - [ "${BOOTLOADER}" = "yes" ] && CMD_ARGS="${CMD_ARGS} -A bootloader" - [ "${VL805}" = "yes" ] && CMD_ARGS="${CMD_ARGS} -A vl805" - - if [ -n "${CMD_ARGS}" ]; then - USE_FLASHROM=0 /usr/bin/.rpi-eeprom-update.real ${CMD_ARGS} - fi - - sync - mount -o remount,ro /flash -fi - -reboot -f &>/dev/null diff --git a/packages/sysutils/busybox/system.d/rpi-flash-firmware.service b/packages/sysutils/busybox/system.d/rpi-flash-firmware.service deleted file mode 100644 index 4061861b34..0000000000 --- a/packages/sysutils/busybox/system.d/rpi-flash-firmware.service +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=RPi Flash Firmware -Requires=tmp.mount var.mount sys-kernel-config.mount kernel-overlays.service -After=tmp.mount var.mount sys-kernel-config.mount kernel-overlays.service -DefaultDependencies=no - -[Service] -Type=idle -ExecStart=/usr/lib/jelos/rpi-flash-firmware -StandardInput=tty-force -StandardOutput=inherit -StandardError=inherit diff --git a/packages/sysutils/busybox/system.d/rpi-flash-firmware.target b/packages/sysutils/busybox/system.d/rpi-flash-firmware.target deleted file mode 100644 index 98480bca45..0000000000 --- a/packages/sysutils/busybox/system.d/rpi-flash-firmware.target +++ /dev/null @@ -1,5 +0,0 @@ -[Unit] -Description=RPi Flash Firmware target -Requires=rpi-flash-firmware.service -After=rpi-flash-firmware.service -AllowIsolate=yes diff --git a/projects/Amlogic/packages/linux/package.mk b/projects/Amlogic/packages/linux/package.mk index 8b3a5a371d..9d567a0409 100644 --- a/projects/Amlogic/packages/linux/package.mk +++ b/projects/Amlogic/packages/linux/package.mk @@ -253,19 +253,6 @@ makeinstall_target() { cp -v resource.img ${INSTALL}/usr/share/bootloader ARCH=${TARGET_ARCH} fi - elif [ "${BOOTLOADER}" = "bcm2835-bootloader" ]; then - mkdir -p ${INSTALL}/usr/share/bootloader/overlays - - # install platform dtbs, but remove upstream kernel dtbs (i.e. without downstream - # drivers and decent USB support) as these are not required by LibreELEC - cp -p arch/${TARGET_KERNEL_ARCH}/boot/dts/*.dtb ${INSTALL}/usr/share/bootloader - rm -f ${INSTALL}/usr/share/bootloader/bcm283*.dtb - - # install overlay dtbs - for dtb in arch/${TARGET_KERNEL_ARCH}/boot/dts/overlays/*.dtbo; do - cp ${dtb} ${INSTALL}/usr/share/bootloader/overlays 2>/dev/null || : - done - cp -p arch/${TARGET_KERNEL_ARCH}/boot/dts/overlays/README ${INSTALL}/usr/share/bootloader/overlays fi } diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index acec5896e4..fc9d2db5ed 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -260,19 +260,6 @@ makeinstall_target() { cp -v resource.img ${INSTALL}/usr/share/bootloader ARCH=${TARGET_ARCH} fi - elif [ "${BOOTLOADER}" = "bcm2835-bootloader" ]; then - mkdir -p ${INSTALL}/usr/share/bootloader/overlays - - # install platform dtbs, but remove upstream kernel dtbs (i.e. without downstream - # drivers and decent USB support) as these are not required by LibreELEC - cp -p arch/${TARGET_KERNEL_ARCH}/boot/dts/*.dtb ${INSTALL}/usr/share/bootloader - rm -f ${INSTALL}/usr/share/bootloader/bcm283*.dtb - - # install overlay dtbs - for dtb in arch/${TARGET_KERNEL_ARCH}/boot/dts/overlays/*.dtbo; do - cp ${dtb} ${INSTALL}/usr/share/bootloader/overlays 2>/dev/null || : - done - cp -p arch/${TARGET_KERNEL_ARCH}/boot/dts/overlays/README ${INSTALL}/usr/share/bootloader/overlays fi } diff --git a/scripts/image b/scripts/image index 86d9d636bd..fd9c47affd 100755 --- a/scripts/image +++ b/scripts/image @@ -194,7 +194,7 @@ if [ -n "${NO_IMAGE}" ]; then exit 0 fi -if [ "${1}" = "system" -o "${1}" = "mkimage" -o "${1}" = "noobs" ] +if [ "${1}" = "system" -o "${1}" = "mkimage" ] then echo "Creating image..." >&2 @@ -229,7 +229,7 @@ then chmod 0644 ${TARGET_IMG}/${IMAGE_NAME}.system fi -if [ "${1}" = "release" -o "${1}" = "mkimage" -o "${1}" = "noobs" ]; then +if [ "${1}" = "release" -o "${1}" = "mkimage" ]; then RELEASE_DIR="target/${IMAGE_NAME}" @@ -291,7 +291,7 @@ if [ "${1}" = "release" -o "${1}" = "mkimage" -o "${1}" = "noobs" ]; then ) # Create image files if requested - if [[ ( "${1}" = "noobs" || "${1}" = "mkimage" ) && -n "${BOOTLOADER}" ]]; then + if [[ ( "${1}" = "mkimage" ) && -n "${BOOTLOADER}" ]]; then UUID_SYSTEM="$(date '+%d%m')-$(date '+%M%S')" UUID_STORAGE="$(uuidgen)" @@ -321,121 +321,6 @@ if [ "${1}" = "release" -o "${1}" = "mkimage" -o "${1}" = "noobs" ]; then # Cleanup release dir rm -rf ${RELEASE_DIR} - if [ "${1}" = "noobs" ]; then - echo "Creating \"${1}\" release tarball..." - - RELEASE_DIR="${TARGET_IMG}/${IMAGE_NAME}-${1}" - - # eg. LibreELEC_RPi, LibreELEC_RPi2 etc. - NOOBS_DISTRO="${DISTRONAME}_${DEVICE:-${PROJECT}}" - - # Create release dir - mkdir -p ${RELEASE_DIR}/${NOOBS_DISTRO} - - if [ -f ${DISTRO_DIR}/${DISTRO}/${DISTRONAME}_40x40.png ]; then - cp -PR ${DISTRO_DIR}/${DISTRO}/${DISTRONAME}_40x40.png ${RELEASE_DIR}/${NOOBS_DISTRO}/${NOOBS_DISTRO}.png - else - cp -PR ${DISTRO_DIR}/${DISTRO}/${DISTRONAME}.png ${RELEASE_DIR}/${NOOBS_DISTRO}/${NOOBS_DISTRO}.png - fi - cp -PR ${ROOT}/config/noobs/os.json ${RELEASE_DIR}/${NOOBS_DISTRO} - cp -PR ${ROOT}/config/noobs/partition_setup.sh ${RELEASE_DIR}/${NOOBS_DISTRO} - cp -PR ${ROOT}/config/noobs/partitions.json ${RELEASE_DIR}/${NOOBS_DISTRO} - if [ -d ${DISTRO_DIR}/${DISTRO}/noobs/marketing ]; then - tar cf ${RELEASE_DIR}/${NOOBS_DISTRO}/marketing.tar -C ${DISTRO_DIR}/${DISTRO}/noobs/marketing . - else - tar cf ${RELEASE_DIR}/${NOOBS_DISTRO}/marketing.tar -C ${ROOT}/config/noobs/marketing . - fi - cp ${ROOT}/README* ${RELEASE_DIR}/${NOOBS_DISTRO} - - if [ -n "${NOOBS_HEX}" ]; then - sed -e "s%@NOOBS_HEX@%${NOOBS_HEX}%g" \ - -i ${RELEASE_DIR}/${NOOBS_DISTRO}/os.json - else - sed -e "/@NOOBS_HEX@/d" \ - -i ${RELEASE_DIR}/${NOOBS_DISTRO}/os.json - fi - - sed -e "s%@DISTRONAME@%${DISTRONAME}%g" \ - -e "s%@PROJECT@%${DEVICE:-${PROJECT}}%g" \ - -e "s%@OS_VERSION@%${OS_VERSION}%g" \ - -e "s%@RELEASE_DATE@%$(date +%F)%g" \ - -e "s%@KERNEL_VERSION@%$(kernel_version)%g" \ - -e "s%@DESCRIPTION@%${DESCRIPTION}%g" \ - -e "s%@ROOT_PASSWORD@%${ROOT_PASSWORD}%g" \ - -e "s%@NOOBS_SUPPORTED_MODELS@%${NOOBS_SUPPORTED_MODELS}%g" \ - -i ${RELEASE_DIR}/${NOOBS_DISTRO}/os.json - - sed -e "s%@DISTRONAME@%${DISTRONAME}%g" \ - -e "s%@PROJECT@%${DEVICE:-${PROJECT}}%g" \ - -e "s%@SYSTEM_SIZE@%${SYSTEM_SIZE}%g" \ - -i ${RELEASE_DIR}/${NOOBS_DISTRO}/partitions.json - - # Create System dir - mkdir -p ${RELEASE_DIR}/${NOOBS_DISTRO}/System - - # Copy Bootloader - cp -PR ${INSTALL}/usr/share/bootloader/config.txt ${RELEASE_DIR}/${NOOBS_DISTRO}/System/ - cp -PR ${INSTALL}/usr/share/bootloader/distroconfig.txt ${RELEASE_DIR}/${NOOBS_DISTRO}/System/ - cp -PR ${INSTALL}/usr/share/bootloader/LICENCE* ${RELEASE_DIR}/${NOOBS_DISTRO}/System/ - cp -PR ${INSTALL}/usr/share/bootloader/bootcode.bin ${RELEASE_DIR}/${NOOBS_DISTRO}/System/ - cp -PR ${INSTALL}/usr/share/bootloader/fixup.dat ${RELEASE_DIR}/${NOOBS_DISTRO}/System/ - cp -PR ${INSTALL}/usr/share/bootloader/start.elf ${RELEASE_DIR}/${NOOBS_DISTRO}/System/ - [ -f ${INSTALL}/usr/share/bootloader/dt-blob.bin ] && cp -PR ${INSTALL}/usr/share/bootloader/dt-blob.bin ${RELEASE_DIR}/${NOOBS_DISTRO}/System/dt-blob.bin - - # Copy system files - cp ${TARGET_IMG}/${IMAGE_NAME}.system ${RELEASE_DIR}/${NOOBS_DISTRO}/System/SYSTEM - cp ${TARGET_IMG}/${IMAGE_NAME}.kernel ${RELEASE_DIR}/${NOOBS_DISTRO}/System/kernel.img - - for dtb in ${INSTALL}/usr/share/bootloader/*.dtb; do - if [ -f ${dtb} ]; then - cp -PR ${dtb} ${RELEASE_DIR}/${NOOBS_DISTRO}/System - fi - done - - for overlay in ${INSTALL}/usr/share/bootloader/overlays/*; do - if [ -f ${overlay} ]; then - mkdir -p ${RELEASE_DIR}/${NOOBS_DISTRO}/System/overlays - cp -PR ${overlay} ${RELEASE_DIR}/${NOOBS_DISTRO}/System/overlays - fi - done - - # Create md5sum's - ( cd ${RELEASE_DIR}/${NOOBS_DISTRO}/System; - md5sum -t SYSTEM > SYSTEM.md5; - md5sum -t kernel.img > kernel.img.md5; - ) - - # Copy additional files - mkdir -p ${RELEASE_DIR}/${NOOBS_DISTRO}/System/licenses - cp ${ROOT}/licenses/* ${RELEASE_DIR}/${NOOBS_DISTRO}/System/licenses - - # Create Storage dir - mkdir -p ${RELEASE_DIR}/${NOOBS_DISTRO}/Storage - - # Remove any previously created release tarball - rm -rf ${RELEASE_DIR}/${NOOBS_DISTRO}/System.tar.xz - rm -rf ${RELEASE_DIR}/${NOOBS_DISTRO}/Storage.tar.xz - - # Create filesystem tarballs - ${TOOLCHAIN}/bin/fakeroot tar cJf ${RELEASE_DIR}/${NOOBS_DISTRO}/System.tar.xz -C ${RELEASE_DIR}/${NOOBS_DISTRO}/System/ . - ${TOOLCHAIN}/bin/fakeroot tar cJf ${RELEASE_DIR}/${NOOBS_DISTRO}/Storage.tar.xz -C ${RELEASE_DIR}/${NOOBS_DISTRO}/Storage/ . - - # Remove filesystem dirs - rm -rf ${RELEASE_DIR}/${NOOBS_DISTRO}/System - rm -rf ${RELEASE_DIR}/${NOOBS_DISTRO}/Storage - - # Remove any previously created release tarball - rm -rf ${TARGET_IMG}/${IMAGE_NAME}-${1}.tar - - # Create release tarball - tar cf ${TARGET_IMG}/${IMAGE_NAME}-${1}.tar -C ${TARGET_IMG} ${IMAGE_NAME}-${1} - - # Create sha256 checksum of tarball - ( cd ${TARGET_IMG} - sha256sum ${IMAGE_NAME}-${1}.tar > ${IMAGE_NAME}-${1}.tar.sha256 - ) - fi - if [ -d ${RELEASE_DIR} ]; then # Cleanup release dir rm -rf ${RELEASE_DIR} diff --git a/scripts/mkimage b/scripts/mkimage index d6a202cdf5..891690a4cf 100755 --- a/scripts/mkimage +++ b/scripts/mkimage @@ -147,7 +147,7 @@ alias mmd='mmd -i "${LE_TMP}/part1.fat"' # create filesystem on part1 echo "image: creating filesystem on part1..." -if [ "${BOOTLOADER}" = "syslinux" -o "${BOOTLOADER}" = "bcm2835-bootloader" -o "${BOOTLOADER}" = "u-boot" ]; then +if [ "${BOOTLOADER}" = "syslinux" -o "${BOOTLOADER}" = "u-boot" ]; then mformat -i "${LE_TMP}/part1.fat" -v "${DISTRO_BOOTLABEL}" -N "${UUID_SYSTEM//-/}" :: >"${SAVE_ERROR}" 2>&1 || show_error fi sync @@ -194,42 +194,6 @@ EOF mcopy "${TOOLCHAIN}/share/grub/bootia32.efi" ::/EFI/BOOT mcopy "${LE_TMP}/grub.cfg" ::/EFI/BOOT -elif [ "${BOOTLOADER}" = "bcm2835-bootloader" ]; then - # create bootloader configuration - echo "image: creating bootloader configuration..." - cat << EOF > "${LE_TMP}/cmdline.txt" -boot=UUID=${UUID_SYSTEM} disk=UUID=${UUID_STORAGE} quiet ${EXTRA_CMDLINE} -EOF - - mcopy "${LE_TMP}/cmdline.txt" :: - - # copy files - echo "image: copying files to part1..." - mcopy "${TARGET_IMG}/${BUILD_NAME}.kernel" "::/${KERNEL_NAME}" - mcopy "${TARGET_IMG}/${BUILD_NAME}.system" ::/SYSTEM - mcopy "${RELEASE_DIR}/target/KERNEL.md5" "::/${KERNEL_NAME}.md5" - mcopy "${RELEASE_DIR}/target/SYSTEM.md5" ::/SYSTEM.md5 - - mcopy "${RELEASE_DIR}/3rdparty/bootloader/bootcode.bin" :: - mcopy "${RELEASE_DIR}/3rdparty/bootloader/fixup.dat" :: - mcopy "${RELEASE_DIR}/3rdparty/bootloader/start.elf" :: - mcopy "${RELEASE_DIR}/3rdparty/bootloader/config.txt" :: - mcopy "${RELEASE_DIR}/3rdparty/bootloader/distroconfig.txt" :: - - if [ -f "${RELEASE_DIR}/3rdparty/bootloader/dt-blob.bin" ]; then - mcopy "${RELEASE_DIR}/3rdparty/bootloader/dt-blob.bin" :: - fi - - for dtb in "${RELEASE_DIR}/3rdparty/bootloader/"*.dtb ; do - if [ -f "${dtb}" ]; then - mcopy "${dtb}" ::/$(basename "${dtb}") - fi - done - - if [ -d "${RELEASE_DIR}/3rdparty/bootloader/overlays" ]; then - mcopy -s "${RELEASE_DIR}/3rdparty/bootloader/overlays" :: - fi - elif [ "${BOOTLOADER}" = "u-boot" -a \( -n "${UBOOT_CONFIG}" -o -n "${SUBDEVICE}" \) ]; then # create bootloader configuration echo "image: creating bootloader configuration... (u-boot)" From fa69e5cf146dfe67909949f03894bd348c1c7555 Mon Sep 17 00:00:00 2001 From: adamg Date: Fri, 9 Feb 2024 17:42:20 +0000 Subject: [PATCH 152/167] buildroot: cleanup vmware image creation --- config/graphic | 8 +- packages/graphics/libdrm/package.mk | 3 - packages/graphics/mesa/package.mk | 7 +- packages/sysutils/open-vm-tools/package.mk | 52 -------- .../open-vm-tools/system.d/vmtoolsd.service | 9 -- .../system.d/vmware-vmblock-fuse.service | 12 -- packages/virtual/image/package.mk | 3 - packages/virtual/virtual/package.mk | 15 --- .../x11/driver/xf86-video-vmware/package.mk | 21 --- projects/PC/config/ovf.template | 120 ------------------ projects/PC/devices/AMD64/options | 6 +- projects/PC/options | 3 - scripts/build_compat | 1 - scripts/image | 1 - scripts/mkimage | 41 ------ 15 files changed, 5 insertions(+), 297 deletions(-) delete mode 100644 packages/sysutils/open-vm-tools/package.mk delete mode 100644 packages/sysutils/open-vm-tools/system.d/vmtoolsd.service delete mode 100644 packages/sysutils/open-vm-tools/system.d/vmware-vmblock-fuse.service delete mode 100644 packages/virtual/virtual/package.mk delete mode 100644 packages/x11/driver/xf86-video-vmware/package.mk delete mode 100644 projects/PC/config/ovf.template diff --git a/config/graphic b/config/graphic index 90679b1196..9ce1aac65a 100644 --- a/config/graphic +++ b/config/graphic @@ -34,7 +34,7 @@ get_graphicdrivers() { V4L2_SUPPORT="no" if [ "${GRAPHIC_DRIVERS}" = "all" ]; then - GRAPHIC_DRIVERS="crocus i915 iris r300 r600 radeonsi nvidia nvidia-legacy nvidia-ng vmware virtio" + GRAPHIC_DRIVERS="crocus i915 iris r300 r600 radeonsi nvidia nvidia-legacy nvidia-ng virtio" fi if listcontains "${GRAPHIC_DRIVERS}" "crocus"; then @@ -136,12 +136,6 @@ get_graphicdrivers() { GALLIUM_DRIVERS+=" virgl" fi - if listcontains "${GRAPHIC_DRIVERS}" "vmware"; then - GALLIUM_DRIVERS+=" svga" - XORG_DRIVERS+=" vmware" - COMPOSITE_SUPPORT="yes" - fi - # VDPAU Support depends on X11 if [ ! "${DISPLAYSERVER}" = "x11" ]; then VDPAU_SUPPORT="no" diff --git a/packages/graphics/libdrm/package.mk b/packages/graphics/libdrm/package.mk index 2b8a71ea0d..6eb36e16bb 100644 --- a/packages/graphics/libdrm/package.mk +++ b/packages/graphics/libdrm/package.mk @@ -34,9 +34,6 @@ listcontains "${GRAPHIC_DRIVERS}" "(r200|r300|r600|radeonsi)" && listcontains "${GRAPHIC_DRIVERS}" "radeonsi" && PKG_MESON_OPTS_TARGET+=" -Damdgpu=enabled" || PKG_MESON_OPTS_TARGET+=" -Damdgpu=disabled" -listcontains "${GRAPHIC_DRIVERS}" "vmware" && - PKG_MESON_OPTS_TARGET+=" -Dvmwgfx=enabled" || PKG_MESON_OPTS_TARGET+=" -Dvmwgfx=disabled" - listcontains "${GRAPHIC_DRIVERS}" "freedreno" && PKG_MESON_OPTS_TARGET+=" -Dfreedreno=enabled" || PKG_MESON_OPTS_TARGET+=" -Dfreedreno=disabled" diff --git a/packages/graphics/mesa/package.mk b/packages/graphics/mesa/package.mk index e6e945bad7..5c300599c6 100644 --- a/packages/graphics/mesa/package.mk +++ b/packages/graphics/mesa/package.mk @@ -36,6 +36,7 @@ PKG_MESON_OPTS_TARGET="-Dgallium-drivers=${GALLIUM_DRIVERS// /,} \ -Dgallium-omx=disabled \ -Dgallium-nine=false \ -Dgallium-opencl=disabled \ + -Dgallium-xa=disabled \ -Dshader-cache=enabled \ -Dshared-glapi=enabled \ -Dopengl=true \ @@ -91,12 +92,6 @@ else PKG_MESON_OPTS_TARGET+=" -Dgallium-va=disabled" fi -if listcontains "${GRAPHIC_DRIVERS}" "vmware"; then - PKG_MESON_OPTS_TARGET+=" -Dgallium-xa=enabled" -else - PKG_MESON_OPTS_TARGET+=" -Dgallium-xa=disabled" -fi - if [ "${OPENGLES_SUPPORT}" = "yes" ]; then PKG_MESON_OPTS_TARGET+=" -Dgles1=enabled -Dgles2=enabled" else diff --git a/packages/sysutils/open-vm-tools/package.mk b/packages/sysutils/open-vm-tools/package.mk deleted file mode 100644 index c640470438..0000000000 --- a/packages/sysutils/open-vm-tools/package.mk +++ /dev/null @@ -1,52 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-or-later -# Copyright (C) 2011 Anthony Nash (nash.ant@gmail.com) -# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv) -# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) - -PKG_NAME="open-vm-tools" -PKG_VERSION="12.3.5" -PKG_ARCH="x86_64" -PKG_LICENSE="GPL" -PKG_SITE="https://github.com/vmware/open-vm-tools" -PKG_URL="https://github.com/vmware/open-vm-tools/archive/stable-${PKG_VERSION}.tar.gz" -PKG_DEPENDS_TARGET="toolchain fuse glib:host glib libdnet libtirpc" -PKG_LONGDESC="open-vm-tools: open source implementation of VMware Tools" -PKG_TOOLCHAIN="autotools" - -PKG_CONFIGURE_OPTS_TARGET="--disable-docs \ - --disable-tests \ - --disable-deploypkg \ - --without-pam \ - --without-gtk2 \ - --without-gtkmm \ - --without-ssl \ - --without-x \ - --without-xerces \ - --without-icu \ - --without-kernel-modules \ - --with-udev-rules-dir=/usr/lib/udev/rules.d/ \ - --with-sysroot=${SYSROOT_PREFIX}" - -post_unpack() { - mv ${PKG_BUILD}/${PKG_NAME}/* ${PKG_BUILD}/ - - sed -i -e 's|.*common-agent/etc/config/Makefile.*||' ${PKG_BUILD}/configure.ac - mkdir -p ${PKG_BUILD}/common-agent/etc/config -} - -pre_configure_target() { - export LIBS="-ldnet -ltirpc" -} - -post_makeinstall_target() { - rm -rf ${INSTALL}/sbin - rm -rf ${INSTALL}/usr/share - rm -rf ${INSTALL}/etc/vmware-tools/scripts/vmware/network - - find ${INSTALL}/etc/vmware-tools/ -type f | xargs sed -i '/.*expr.*/d' -} - -post_install() { - enable_service vmtoolsd.service - enable_service vmware-vmblock-fuse.service -} diff --git a/packages/sysutils/open-vm-tools/system.d/vmtoolsd.service b/packages/sysutils/open-vm-tools/system.d/vmtoolsd.service deleted file mode 100644 index 1b9924c1f9..0000000000 --- a/packages/sysutils/open-vm-tools/system.d/vmtoolsd.service +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=Open Virtual Machine Tools (VMware Tools) -ConditionVirtualization=vmware - -[Service] -ExecStart=/usr/bin/vmtoolsd - -[Install] -WantedBy=multi-user.target diff --git a/packages/sysutils/open-vm-tools/system.d/vmware-vmblock-fuse.service b/packages/sysutils/open-vm-tools/system.d/vmware-vmblock-fuse.service deleted file mode 100644 index 9e4d2a3121..0000000000 --- a/packages/sysutils/open-vm-tools/system.d/vmware-vmblock-fuse.service +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=Open Virtual Machine Tools (vmware-vmblock-fuse) -ConditionVirtualization=vmware - -[Service] -Type=simple -RuntimeDirectory=vmblock-fuse -RuntimeDirectoryMode=755 -ExecStart=/usr/bin/vmware-vmblock-fuse -d -f -o subtype=vmware-vmblock,default_permissions,allow_other /run/vmblock-fuse - -[Install] -WantedBy=multi-user.target diff --git a/packages/virtual/image/package.mk b/packages/virtual/image/package.mk index 791266ffc7..420fbbbc96 100644 --- a/packages/virtual/image/package.mk +++ b/packages/virtual/image/package.mk @@ -75,9 +75,6 @@ fi # NTFS 3G support [ "${NTFS3G}" = "yes" ] && PKG_DEPENDS_TARGET+=" ntfs-3g_ntfsprogs" -# Virtual image creation support -[ "${PROJECT}" = "Generic" ] && PKG_DEPENDS_TARGET+=" virtual" - # Installer support [ "${INSTALLER_SUPPORT}" = "yes" ] && PKG_DEPENDS_TARGET+=" installer" diff --git a/packages/virtual/virtual/package.mk b/packages/virtual/virtual/package.mk deleted file mode 100644 index a6cfaef8d2..0000000000 --- a/packages/virtual/virtual/package.mk +++ /dev/null @@ -1,15 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) - -PKG_NAME="virtual" -PKG_VERSION="" -PKG_LICENSE="GPL" -PKG_SITE="http://www.libreelec.tv" -PKG_URL="" -PKG_DEPENDS_TARGET="qemu:host" -PKG_SECTION="virtual" -PKG_LONGDESC="virtual is a Meta package to install Virtual project extra dependencies" - -get_graphicdrivers - -listcontains "$GRAPHIC_DRIVERS" "vmware" && PKG_DEPENDS_TARGET+=" open-vm-tools" || true diff --git a/packages/x11/driver/xf86-video-vmware/package.mk b/packages/x11/driver/xf86-video-vmware/package.mk deleted file mode 100644 index 2d22d79fb4..0000000000 --- a/packages/x11/driver/xf86-video-vmware/package.mk +++ /dev/null @@ -1,21 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-or-later -# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv) -# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) - -PKG_NAME="xf86-video-vmware" -PKG_VERSION="13.4.0" -PKG_SHA256="aed31ee5ed5ecc6e2226705383e7ad06f7602c1376a295305f376b17af3eb81a" -PKG_ARCH="x86_64" -PKG_LICENSE="OSS" -PKG_SITE="https://www.vmware.com" -PKG_URL="https://xorg.freedesktop.org/releases/individual/driver/${PKG_NAME}-${PKG_VERSION}.tar.xz" -PKG_DEPENDS_TARGET="toolchain mesa libX11 xwayland" -PKG_LONGDESC="xf86-video-vmware: The Xorg driver for vmware video" -PKG_TOOLCHAIN="autotools" - -PKG_CONFIGURE_OPTS_TARGET="--enable-vmwarectrl-client \ - --with-xorg-module-dir=${XORG_PATH_MODULES}" - -post_configure_target() { - libtool_remove_rpath libtool -} diff --git a/projects/PC/config/ovf.template b/projects/PC/config/ovf.template deleted file mode 100644 index 7184beb6cf..0000000000 --- a/projects/PC/config/ovf.template +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - Virtual disk information - - - - The list of logical networks - - The bridged network - - - - A virtual machine - @DISTRO@ - - Meta-information about the installed software - LibreELEC - LibreELEC - https://libreelec.tv - https://libreelec.tv - - - A human-readable annotation - LibreELEC is ‘Just enough OS’ for Kodi, a Linux distribution built to run Kodi on current and popular mediacentre hardware. After importing the OVA image adjust CPU, RAM, and HDD storage to the required configuration before first boot. - - - The kind of installed guest operating system - - Virtual hardware requirements - - Virtual Hardware Family - 0 - LibreELEC - vmx-12 - - - hertz * 10^6 - Number of Virtual CPUs - 1 virtual CPU(s) - 1 - 3 - 1 - - - byte * 2^20 - Memory Size - 1024MB of memory - 2 - 4 - 1024 - - - 0 - USB Controller (EHCI) - usb - 3 - vmware.usb.ehci - 23 - - - - 0 - IDE Controller - ideController0 - 4 - 5 - - - 0 - disk0 - ovf:/disk/disk - 5 - 4 - 17 - - - 1 - true - bridged - E1000 ethernet adapter on "bridged" - ethernet0 - 6 - E1000 - 10 - - - - false - sound - 7 - vmware.soundcard.hdaudio - 1 - - - false - video - 8 - 24 - - - - false - vmci - 9 - vmware.vmci - 1 - - - - - - - - - diff --git a/projects/PC/devices/AMD64/options b/projects/PC/devices/AMD64/options index fdf0f3ff22..b86261bbfb 100644 --- a/projects/PC/devices/AMD64/options +++ b/projects/PC/devices/AMD64/options @@ -40,10 +40,10 @@ # Default weston terminal font size WESTONFONTSIZE="18" - # Mesa 3D Graphic drivers to use (all / crocus,i915,iris,r300,r600,radeonsi,vmware,virtio) + # Mesa 3D Graphic drivers to use (all / crocus,i915,iris,r300,r600,radeonsi,virtio) # Space separated list is supported, - # e.g. GRAPHIC_DRIVERS="crocus i915 iris r300 r600 radeonsi vmware virtio" - GRAPHIC_DRIVERS="crocus i915 iris r300 r600 radeonsi vmware virtio" + # e.g. GRAPHIC_DRIVERS="crocus i915 iris r300 r600 radeonsi virtio" + GRAPHIC_DRIVERS="crocus i915 iris r300 r600 radeonsi virtio" # additional packages to install # ADDITIONAL_PACKAGES="" diff --git a/projects/PC/options b/projects/PC/options index 6c6619b9d8..1bdbaf2c66 100644 --- a/projects/PC/options +++ b/projects/PC/options @@ -53,9 +53,6 @@ # Space separated list is supported, DRIVER_ADDONS="crazycat digital_devices dvb-latest" - # Default size of the ova image, in MB, eg. 4096 - OVA_SIZE="4096" - # Installation support INSTALLER_SUPPORT="yes" diff --git a/scripts/build_compat b/scripts/build_compat index 1e87018c9b..c7f683f0d6 100755 --- a/scripts/build_compat +++ b/scripts/build_compat @@ -47,7 +47,6 @@ function do_mkimage() { EXTRA_CMDLINE="${EXTRA_CMDLINE}" \ SYSTEM_SIZE="${SYSTEM_SIZE}" \ SYSTEM_PART_START="${SYSTEM_PART_START}" \ - OVA_SIZE="${OVA_SIZE}" \ SUBDEVICE="${SUBDEVICE}" \ ${SCRIPTS}/mkimage } diff --git a/scripts/image b/scripts/image index fd9c47affd..abc248749d 100755 --- a/scripts/image +++ b/scripts/image @@ -49,7 +49,6 @@ function do_mkimage() { SYSTEM_SIZE="${SYSTEM_SIZE}" \ SYSTEM_PART_START="${SYSTEM_PART_START}" \ STORAGE_SIZE="${STORAGE_SIZE:-32}" \ - OVA_SIZE="${OVA_SIZE}" \ SUBDEVICE="${SUBDEVICE}" \ ${SCRIPTS}/mkimage } diff --git a/scripts/mkimage b/scripts/mkimage index 891690a4cf..966dbb2061 100755 --- a/scripts/mkimage +++ b/scripts/mkimage @@ -127,13 +127,6 @@ e2fsck -n "${LE_TMP}/part2.ext4" >"${SAVE_ERROR}" 2>&1 || show_error echo "image: merging part2 into disk image..." dd if="${LE_TMP}/part2.ext4" of="${DISK}" bs=512 seek="${STORAGE_PART_START}" conv=fsync,notrunc >"${SAVE_ERROR}" 2>&1 || show_error -# create disk image for virtual appliance -if [ "${PROJECT}" = "Generic" ]; then - echo "image: creating open virtual appliance..." - # duplicate ${DISK} so anything we do to it directly doesn't effect original - dd if="${DISK}" of="${DISK_BASENAME}.tmp" bs=1M conv=fsync >"${SAVE_ERROR}" 2>&1 || show_error -fi - # create part1 to format and copy files echo "image: creating sparse file for part1..." SYSTEM_PART_COUNT=$(( ${SYSTEM_PART_END} - ${SYSTEM_PART_START} + 1 )) @@ -234,40 +227,6 @@ fsck.fat -n "${LE_TMP}/part1.fat" >"${SAVE_ERROR}" 2>&1 || show_error echo "image: merging part1 into disk image..." dd if="${LE_TMP}/part1.fat" of="${DISK}" bs=512 seek="${SYSTEM_PART_START}" conv=fsync,notrunc >"${SAVE_ERROR}" 2>&1 || show_error -# finalize virtual appliance -if [ "${PROJECT}" = "Generic" ]; then - # change syslinux default to 'run' - echo "image: modifying files on part1 for open virtual appliance..." - sed -e "/DEFAULT/ s/installer/run/" -i "${LE_TMP}/syslinux.cfg" - sed -e "/set default=/s/\"Installer\"/\"Run\"/" -i "${LE_TMP}/grub.cfg" - mcopy "${LE_TMP}/syslinux.cfg" :: >"${SAVE_ERROR}" 2>&1 || show_error - mcopy "${LE_TMP}/grub.cfg" ::/EFI/BOOT >"${SAVE_ERROR}" 2>&1 || show_error - sync - # run fsck - echo "image: checking filesystem on part1..." - fsck.fat -n "${LE_TMP}/part1.fat" >"${SAVE_ERROR}" 2>&1 || show_error - # merge modified part1 into tmp disk image - echo "image: merging part1 into open virtual appliance..." - dd if="${LE_TMP}/part1.fat" of="${DISK_BASENAME}.tmp" bs=512 seek="${SYSTEM_PART_START}" conv=fsync,notrunc >"${SAVE_ERROR}" 2>&1 || show_error - # create vmdk from tmp ${DISK} - echo "image: creating vmdk for open virtual appliance..." - qemu-img convert -O vmdk -o subformat=streamOptimized "${DISK_BASENAME}.tmp" "${DISK_BASENAME}.vmdk" - # generate ovf from template - sed -e "s,@DISTRO@,${DISTRO},g" -e "s,@DISK@,${IMAGE_NAME},g" \ - -e "s,@OVA_SIZE@,$((${OVA_SIZE}*1024*1024)),g" \ - "${PROJECT_DIR}/${PROJECT}/config/ovf.template" > "${DISK_BASENAME}.ovf" - # combine ovf and vmdk into official ova - tar -C "${TARGET_IMG}" -cf "${DISK_BASENAME}.ova" "${IMAGE_NAME}.ovf" "${IMAGE_NAME}.vmdk" - # create sha256 checksum of ova image - ( - cd "${TARGET_IMG}" - sha256sum "${IMAGE_NAME}.ova" > "${IMAGE_NAME}.ova.sha256" - ) - echo "image: cleaning up open virtual appliance..." - # remove tmp ${DISK}, vmdk and ovf - rm "${DISK_BASENAME}.tmp" "${DISK_BASENAME}.vmdk" "${DISK_BASENAME}.ovf" -fi - # gzip echo "image: compressing..." pigz --best --force "${DISK}" From c6522a0513e223299af53fa67d9b621952119e02 Mon Sep 17 00:00:00 2001 From: adamg Date: Fri, 9 Feb 2024 18:50:01 +0000 Subject: [PATCH 153/167] buildroot: rename LE references to JELOS --- packages/graphics/libmali-vulkan/package.mk | 2 +- packages/graphics/libmali/package.mk | 4 ++-- .../linux-firmware/brcmfmac_sdio-firmware/package.mk | 2 +- .../lang/go/patches/go-0001-add-ca-cert-location.patch | 2 +- packages/multimedia/ffmpeg/package.mk | 2 +- packages/multimedia/gstreamer/gst-plugins-bad/package.mk | 2 +- packages/multimedia/gstreamer/gst-plugins-base/package.mk | 2 +- packages/multimedia/gstreamer/gstreamer/package.mk | 2 +- packages/rust/rust/package.mk | 2 +- ...64-libreelec-linux-gnu.json => aarch64-linux-gnu.json} | 0 ...elec-linux-gnueabihf.json => arm-linux-gnueabihf.json} | 0 ..._64-libreelec-linux-gnu.json => x86_64-linux-gnu.json} | 0 packages/sysutils/busybox/scripts/init | 4 ++-- packages/sysutils/busybox/system.d/var-log.mount | 2 +- packages/sysutils/systemd/config/hosts.conf | 2 +- packages/sysutils/systemd/system.d/debugconfig.service | 2 +- .../tmpfiles.d/{z_01_openelec.conf => z_01_jelos.conf} | 2 +- packages/sysutils/util-linux/package.mk | 4 ++-- packages/sysutils/v4l-utils/package.mk | 8 ++++---- packages/tools/installer/package.mk | 4 ++-- packages/tools/installer/system.d/installer.target | 2 +- packages/virtual/toolchain/package.mk | 4 ++-- packages/wayland/compositor/sway/config/config | 2 +- packages/x11/xserver/xwayland/package.mk | 6 +++--- packages/x11/xserver/xwayland/scripts/xorg-configure | 2 +- projects/Amlogic/devices/S922X/linux/linux.aarch64.conf | 2 +- projects/PC/devices/AMD64/linux/linux.x86_64.conf | 2 +- .../Rockchip/devices/RK-ARMV8-A/linux/linux.aarch64.conf | 2 +- projects/Rockchip/devices/RK3326/linux/linux.aarch64.conf | 2 +- projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf | 2 +- .../Rockchip/devices/RK3566/linux/linux.aarch64.old.conf | 2 +- projects/Rockchip/devices/RK3588/linux/linux.aarch64.conf | 2 +- scripts/build_compat | 8 ++------ scripts/genbuildplan.py | 6 +++--- scripts/image | 8 ++------ scripts/unpack | 2 +- 36 files changed, 47 insertions(+), 55 deletions(-) rename packages/rust/rust/targets/{aarch64-libreelec-linux-gnu.json => aarch64-linux-gnu.json} (100%) rename packages/rust/rust/targets/{arm-libreelec-linux-gnueabihf.json => arm-linux-gnueabihf.json} (100%) rename packages/rust/rust/targets/{x86_64-libreelec-linux-gnu.json => x86_64-linux-gnu.json} (100%) rename packages/sysutils/systemd/tmpfiles.d/{z_01_openelec.conf => z_01_jelos.conf} (77%) diff --git a/packages/graphics/libmali-vulkan/package.mk b/packages/graphics/libmali-vulkan/package.mk index a2bc0d8f6c..fe49113051 100644 --- a/packages/graphics/libmali-vulkan/package.mk +++ b/packages/graphics/libmali-vulkan/package.mk @@ -18,7 +18,7 @@ make_target() { makeinstall_target() { mkdir -p ${INSTALL}/usr/{lib,share} tar -xvJf ${PKG_BUILD}/mali.tar.xz -C ${INSTALL} - mv ${INSTALL}/lib/${TARGET_ARCH}-jelos-linux-gnu/* ${INSTALL}/usr/lib + mv ${INSTALL}/lib/${TARGET_ARCH}-linux-gnu/* ${INSTALL}/usr/lib rm -r ${INSTALL}/lib tar -xvJf ${PKG_BUILD}/rootfs_additions.tar.xz -C ${INSTALL}/usr/share mv ${INSTALL}/usr/share/etc/vulkan/* ${INSTALL}/usr/share/vulkan/ diff --git a/packages/graphics/libmali/package.mk b/packages/graphics/libmali/package.mk index d75abb9e61..21bd243610 100644 --- a/packages/graphics/libmali/package.mk +++ b/packages/graphics/libmali/package.mk @@ -15,9 +15,9 @@ PKG_LONGDESC="OpenGL ES user-space binary for the ARM Mali GPU family" PKG_PATCH_DIRS+="${DEVICE}" if [ "${TARGET_ARCH}" = "aarch64" ]; then - INSTARCH="aarch64-jelos-linux-gnu" + INSTARCH="aarch64-linux-gnu" elif [ "${TARGET_ARCH}" = "arm" ]; then - INSTARCH="arm-jelos-linux-gnueabihf" + INSTARCH="arm-linux-gnueabihf" fi PKG_CMAKE_OPTS_TARGET+=" -DMALI_ARCH=${INSTARCH}" diff --git a/packages/kernel/linux-firmware/brcmfmac_sdio-firmware/package.mk b/packages/kernel/linux-firmware/brcmfmac_sdio-firmware/package.mk index 6f3279598b..0b85537615 100644 --- a/packages/kernel/linux-firmware/brcmfmac_sdio-firmware/package.mk +++ b/packages/kernel/linux-firmware/brcmfmac_sdio-firmware/package.mk @@ -6,7 +6,7 @@ PKG_VERSION="c70355f9ec6d015b91a5c3199aa08b433e2f7caf" PKG_LICENSE="GPL" PKG_SITE="https://github.com/LibreELEC/brcmfmac_sdio-firmware" PKG_URL="https://github.com/LibreELEC/brcmfmac_sdio-firmware/archive/${PKG_VERSION}.tar.gz" -PKG_LONGDESC="Broadcom SDIO firmware used with LibreELEC" +PKG_LONGDESC="Broadcom SDIO firmware used with JELOS" PKG_TOOLCHAIN="manual" post_makeinstall_target() { diff --git a/packages/lang/go/patches/go-0001-add-ca-cert-location.patch b/packages/lang/go/patches/go-0001-add-ca-cert-location.patch index 0ea8d6db6b..fd26bf0b42 100644 --- a/packages/lang/go/patches/go-0001-add-ca-cert-location.patch +++ b/packages/lang/go/patches/go-0001-add-ca-cert-location.patch @@ -6,5 +6,5 @@ index ad6ce5cae7..763c686fed 100644 "/etc/ssl/certs", // SLES10/SLES11, https://golang.org/issue/12139 "/etc/pki/tls/certs", // Fedora/RHEL "/system/etc/security/cacerts", // Android -+ "/etc/ssl", // LibreELEC ++ "/etc/ssl", // JELOS } diff --git a/packages/multimedia/ffmpeg/package.mk b/packages/multimedia/ffmpeg/package.mk index 60e8a169b8..adbefe418f 100644 --- a/packages/multimedia/ffmpeg/package.mk +++ b/packages/multimedia/ffmpeg/package.mk @@ -10,7 +10,7 @@ PKG_LONGDESC="FFmpeg is a complete, cross-platform solution to record, convert a PKG_VERSION="6.0" PKG_URL="http://ffmpeg.org/releases/ffmpeg-${PKG_VERSION}.tar.xz" -PKG_PATCH_DIRS="kodi libreelec" +PKG_PATCH_DIRS="jelos" PKG_PATCH_DIRS+=" v4l2-request v4l2-drmprime" diff --git a/packages/multimedia/gstreamer/gst-plugins-bad/package.mk b/packages/multimedia/gstreamer/gst-plugins-bad/package.mk index e8f84022e3..25f1ce3ce3 100644 --- a/packages/multimedia/gstreamer/gst-plugins-bad/package.mk +++ b/packages/multimedia/gstreamer/gst-plugins-bad/package.mk @@ -182,7 +182,7 @@ pre_configure_target() { -Dglib-asserts=disabled \ -Dglib-checks=disabled \ -Dpackage-name=gst-plugins-bad \ - -Dpackage-origin=LibreELEC.tv \ + -Dpackage-origin=jelos.org \ -Ddoc=disabled" } diff --git a/packages/multimedia/gstreamer/gst-plugins-base/package.mk b/packages/multimedia/gstreamer/gst-plugins-base/package.mk index 55c41d3851..89f00475b2 100644 --- a/packages/multimedia/gstreamer/gst-plugins-base/package.mk +++ b/packages/multimedia/gstreamer/gst-plugins-base/package.mk @@ -15,7 +15,7 @@ pre_configure_target() { -Dtests=disabled \ -Dgobject-cast-checks=disabled \ -Dpackage-name=gst-plugins-base \ - -Dpackage-origin=LibreELEC.tv \ + -Dpackage-origin=jelos.org \ -Ddoc=disabled \ -Dnls=disabled" diff --git a/packages/multimedia/gstreamer/gstreamer/package.mk b/packages/multimedia/gstreamer/gstreamer/package.mk index ca4e72b6f4..910483bd3b 100644 --- a/packages/multimedia/gstreamer/gstreamer/package.mk +++ b/packages/multimedia/gstreamer/gstreamer/package.mk @@ -15,7 +15,7 @@ PKG_MESON_OPTS_TARGET="-Dlibunwind=disabled \ -Dtests=disabled \ -Dnls=disabled \ -Dpackage-name=gstreamer \ - -Dpackage-origin=LibreELEC.tv \ + -Dpackage-origin=jelos.org \ -Ddoc=disabled" } diff --git a/packages/rust/rust/package.mk b/packages/rust/rust/package.mk index 9a90a50e32..27678dd1c6 100644 --- a/packages/rust/rust/package.mk +++ b/packages/rust/rust/package.mk @@ -25,7 +25,7 @@ configure_host() { case "${TARGET_ARCH}" in "arm") # the arm target is special because we specify the subarch. ie armv8a - cp -a ${PKG_DIR}/targets/arm-libreelec-linux-gnueabihf.json ${PKG_BUILD}/targets/${TARGET_NAME}.json + cp -a ${PKG_DIR}/targets/arm-linux-gnueabihf.json ${PKG_BUILD}/targets/${TARGET_NAME}.json ;; "aarch64"|"x86_64") cp -a ${PKG_DIR}/targets/${TARGET_NAME}.json ${PKG_BUILD}/targets/${TARGET_NAME}.json diff --git a/packages/rust/rust/targets/aarch64-libreelec-linux-gnu.json b/packages/rust/rust/targets/aarch64-linux-gnu.json similarity index 100% rename from packages/rust/rust/targets/aarch64-libreelec-linux-gnu.json rename to packages/rust/rust/targets/aarch64-linux-gnu.json diff --git a/packages/rust/rust/targets/arm-libreelec-linux-gnueabihf.json b/packages/rust/rust/targets/arm-linux-gnueabihf.json similarity index 100% rename from packages/rust/rust/targets/arm-libreelec-linux-gnueabihf.json rename to packages/rust/rust/targets/arm-linux-gnueabihf.json diff --git a/packages/rust/rust/targets/x86_64-libreelec-linux-gnu.json b/packages/rust/rust/targets/x86_64-linux-gnu.json similarity index 100% rename from packages/rust/rust/targets/x86_64-libreelec-linux-gnu.json rename to packages/rust/rust/targets/x86_64-linux-gnu.json diff --git a/packages/sysutils/busybox/scripts/init b/packages/sysutils/busybox/scripts/init index b68a9be268..2f607ae6eb 100755 --- a/packages/sysutils/busybox/scripts/init +++ b/packages/sysutils/busybox/scripts/init @@ -227,7 +227,7 @@ mount_folder() { mkdir -p /dev/bind_tmp mount_common "$target" "/dev/bind_tmp" "rw,noatime" - mount_common "/dev/bind_tmp/coreelec_$(basename $2)" "$2" "bind" + mount_common "/dev/bind_tmp/jelos_$(basename $2)" "$2" "bind" umount /dev/bind_tmp &>/dev/null [ "$2" = "/flash" ] && mount -o remount,ro /flash @@ -292,7 +292,7 @@ mount_sysroot() { get_project_arch() { if [ -f ${1}/etc/os-release ]; then . ${1}/etc/os-release - echo "${COREELEC_ARCH:-${OS_ARCH}}" + echo "${OS_ARCH}" fi } diff --git a/packages/sysutils/busybox/system.d/var-log.mount b/packages/sysutils/busybox/system.d/var-log.mount index 3acdd0a6de..8a4c3f2eef 100644 --- a/packages/sysutils/busybox/system.d/var-log.mount +++ b/packages/sysutils/busybox/system.d/var-log.mount @@ -5,7 +5,7 @@ Requires=storage-log.service After=storage-log.service ConditionKernelCommandLine=!installer ConditionKernelCommandLine=|debugging -ConditionPathExists=|/storage/.cache/debug.libreelec +ConditionPathExists=|/storage/.cache/debug.jelos [Mount] What=/storage/.cache/log diff --git a/packages/sysutils/systemd/config/hosts.conf b/packages/sysutils/systemd/config/hosts.conf index cb9af3a7bd..3eb2e4e64c 100644 --- a/packages/sysutils/systemd/config/hosts.conf +++ b/packages/sysutils/systemd/config/hosts.conf @@ -4,7 +4,7 @@ # IP addresses # Format: -# Example: 192.168.0.3 libreelec libreelec.mynetwork +# Example: 192.168.0.3 jelos jelos.mynetwork 127.0.0.1 localhost.localdomain localhost diff --git a/packages/sysutils/systemd/system.d/debugconfig.service b/packages/sysutils/systemd/system.d/debugconfig.service index ab67d3f5f7..6525290343 100644 --- a/packages/sysutils/systemd/system.d/debugconfig.service +++ b/packages/sysutils/systemd/system.d/debugconfig.service @@ -3,7 +3,7 @@ Description=Setup debug config DefaultDependencies=no After=systemd-tmpfiles-setup.service ConditionKernelCommandLine=|debugging -ConditionPathExists=|/storage/.cache/debug.libreelec +ConditionPathExists=|/storage/.cache/debug.jelos [Service] Type=oneshot diff --git a/packages/sysutils/systemd/tmpfiles.d/z_01_openelec.conf b/packages/sysutils/systemd/tmpfiles.d/z_01_jelos.conf similarity index 77% rename from packages/sysutils/systemd/tmpfiles.d/z_01_openelec.conf rename to packages/sysutils/systemd/tmpfiles.d/z_01_jelos.conf index 7299cb12c5..992c7586df 100644 --- a/packages/sysutils/systemd/tmpfiles.d/z_01_openelec.conf +++ b/packages/sysutils/systemd/tmpfiles.d/z_01_jelos.conf @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-2.0-or-later # Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv) -d /run/jelos/ 0755 root root - - +d /run/jelos 0755 root root - - d /run/jelos/debug 0755 root root - - diff --git a/packages/sysutils/util-linux/package.mk b/packages/sysutils/util-linux/package.mk index 6ca985139b..5ee25127d4 100644 --- a/packages/sysutils/util-linux/package.mk +++ b/packages/sysutils/util-linux/package.mk @@ -81,8 +81,8 @@ fi post_makeinstall_target() { if [ "${SWAP_SUPPORT}" = "yes" ]; then - mkdir -p ${INSTALL}/usr/lib/jelos/ - cp -PR ${PKG_DIR}/scripts/mount-swap ${INSTALL}/usr/lib/jelos/ + mkdir -p ${INSTALL}/usr/lib/jelos + cp -PR ${PKG_DIR}/scripts/mount-swap ${INSTALL}/usr/lib/jelos mkdir -p ${INSTALL}/etc cat ${PKG_DIR}/config/swap.conf | \ diff --git a/packages/sysutils/v4l-utils/package.mk b/packages/sysutils/v4l-utils/package.mk index 351ec5e99d..2ff2747c50 100644 --- a/packages/sysutils/v4l-utils/package.mk +++ b/packages/sysutils/v4l-utils/package.mk @@ -86,22 +86,22 @@ post_makeinstall_target() { # create multi keymap to support several remotes OOTB if [ -n "$IR_REMOTE_PROTOCOLS" -a -n "$IR_REMOTE_KEYMAPS" ]; then - create_multi_keymap libreelec_multi "$IR_REMOTE_PROTOCOLS" $IR_REMOTE_KEYMAPS + create_multi_keymap jelos_multi "$IR_REMOTE_PROTOCOLS" $IR_REMOTE_KEYMAPS # use multi-keymap instead of default one sed -i '/^\*\s*rc-rc6-mce\s*rc6_mce/d' ${INSTALL}/etc/rc_maps.cfg cat << EOF >> ${INSTALL}/etc/rc_maps.cfg # -# Custom LibreELEC configuration starts here +# Custom JELOS configuration starts here # # use combined multi-table on MCE receivers # * rc-rc6-mce rc6_mce -* rc-rc6-mce libreelec_multi +* rc-rc6-mce jelos_multi # table for Xbox DVD Playback Kit * rc-xbox-dvd xbox_dvd # multi-table for amlogic devices -meson-ir * libreelec_multi +meson-ir * jelos_multi EOF fi diff --git a/packages/tools/installer/package.mk b/packages/tools/installer/package.mk index 45d6d22c5d..4213a6f03c 100644 --- a/packages/tools/installer/package.mk +++ b/packages/tools/installer/package.mk @@ -4,10 +4,10 @@ PKG_NAME="installer" PKG_VERSION="1" PKG_LICENSE="GPL" -PKG_SITE="http://libreelec.tv/" +PKG_SITE="http://jelos.org/" PKG_URL="" PKG_DEPENDS_TARGET="toolchain busybox newt parted e2fsprogs syslinux grub" -PKG_LONGDESC="LibreELEC.tv Install manager to install the system on any disk" +PKG_LONGDESC="JELOS Install manager to install the system on any disk" PKG_TOOLCHAIN="manual" post_install() { diff --git a/packages/tools/installer/system.d/installer.target b/packages/tools/installer/system.d/installer.target index cd1cb7f7f2..880356cdb3 100644 --- a/packages/tools/installer/system.d/installer.target +++ b/packages/tools/installer/system.d/installer.target @@ -1,5 +1,5 @@ [Unit] -Description=OpenELEC installer +Description=JELOS installer Requires=basic.target After=basic.target Conflicts=rescue.target multi-user.target graphical.target diff --git a/packages/virtual/toolchain/package.mk b/packages/virtual/toolchain/package.mk index 2231b828b3..a91ab6932a 100644 --- a/packages/virtual/toolchain/package.mk +++ b/packages/virtual/toolchain/package.mk @@ -5,9 +5,9 @@ PKG_NAME="toolchain" PKG_VERSION="" PKG_LICENSE="GPL" -PKG_SITE="https://libreelec.tv" +PKG_SITE="https://jelos.org" PKG_URL="" PKG_DEPENDS_HOST="autoconf:host autoconf-archive:host automake:host bison:host configtools:host cmake:host flex:host intltool:host libtool:host ninja:host make:host meson:host p7zip:host pigz:host sed:host xmlstarlet:host xz:host" PKG_DEPENDS_TARGET="toolchain:host gcc:host" PKG_SECTION="virtual" -PKG_LONGDESC="LibreELEC.tv' toolchain to compile all packages" +PKG_LONGDESC="JELOS toolchain to compile all packages" diff --git a/packages/wayland/compositor/sway/config/config b/packages/wayland/compositor/sway/config/config index e6495a75cf..01f7f9c8b9 100644 --- a/packages/wayland/compositor/sway/config/config +++ b/packages/wayland/compositor/sway/config/config @@ -24,7 +24,7 @@ set $menu bemenu-run -p "#" -l 10 --scrollbar autohide -i -w --tf "$prompt" --hf ### Output configuration # # Default wallpaper (more resolutions are available in /usr/share/sway/) -output * bg /usr/share/sway/libreelec-wallpaper-2160.png fill +output * bg /usr/share/sway/jelos-wallpaper-2160.png fill # hide_cursor hides the cursor image after the specified timeout (in milliseconds) has elapsed with no activity on that cursor seat * hide_cursor 3000 diff --git a/packages/x11/xserver/xwayland/package.mk b/packages/x11/xserver/xwayland/package.mk index 266780e0fa..392bf232a4 100644 --- a/packages/x11/xserver/xwayland/package.mk +++ b/packages/x11/xserver/xwayland/package.mk @@ -25,9 +25,9 @@ PKG_MESON_OPTS_TARGET+=" -Dxvfb=false \ -Dinput_thread=true \ -Dxkb_dir=${XORG_PATH_XKB} \ -Dxkb_output_dir="/var/cache/xkb" \ - -Dvendor_name="LibreELEC" \ - -Dvendor_name_short="LE" \ - -Dvendor_web="https://libreelec.tv/" \ + -Dvendor_name="JELOS" \ + -Dvendor_name_short="JELOS" \ + -Dvendor_web="https://jelos.org/" \ -Dlisten_tcp=false \ -Dlisten_unix=true \ -Dlisten_local=false \ diff --git a/packages/x11/xserver/xwayland/scripts/xorg-configure b/packages/x11/xserver/xwayland/scripts/xorg-configure index 8160c6fe38..d9d7f48050 100755 --- a/packages/x11/xserver/xwayland/scripts/xorg-configure +++ b/packages/x11/xserver/xwayland/scripts/xorg-configure @@ -105,6 +105,6 @@ logger -t Xorg "### creating needed directories and symlinks ###" ################################################################################ logger -t Xorg "### starting Xorg with '${DISPLAY} vt01 ${XORG_ARGS}' ###" - mkdir -p /run/jelos/ + mkdir -p /run/jelos echo "XORG_ARGS=\"${XORG_ARGS}\"" > /run/jelos/xorg-settings.conf diff --git a/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf b/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf index 10a5ff88ea..467ee2dddc 100644 --- a/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf +++ b/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf @@ -2,7 +2,7 @@ # Automatically generated file; DO NOT EDIT. # Linux/arm64 6.7.4 Kernel Configuration # -CONFIG_CC_VERSION_TEXT="aarch64-libreelec-linux-gnueabi-gcc-12.3.1 (GCC) 12.3.1 20240103" +CONFIG_CC_VERSION_TEXT="aarch64-linux-gnueabi-gcc-12.3.1 (GCC) 12.3.1 20240103" CONFIG_CC_IS_GCC=y CONFIG_GCC_VERSION=120301 CONFIG_CLANG_VERSION=0 diff --git a/projects/PC/devices/AMD64/linux/linux.x86_64.conf b/projects/PC/devices/AMD64/linux/linux.x86_64.conf index 0a753f983c..f3f5003a61 100644 --- a/projects/PC/devices/AMD64/linux/linux.x86_64.conf +++ b/projects/PC/devices/AMD64/linux/linux.x86_64.conf @@ -2,7 +2,7 @@ # Automatically generated file; DO NOT EDIT. # Linux/x86 6.6.9 Kernel Configuration # -CONFIG_CC_VERSION_TEXT="x86_64-libreelec-linux-gnu-gcc-12.3.1 (GCC) 12.3.1 20240103" +CONFIG_CC_VERSION_TEXT="x86_64-linux-gnu-gcc-12.3.1 (GCC) 12.3.1 20240103" CONFIG_CC_IS_GCC=y CONFIG_GCC_VERSION=120301 CONFIG_CLANG_VERSION=0 diff --git a/projects/Rockchip/devices/RK-ARMV8-A/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK-ARMV8-A/linux/linux.aarch64.conf index d64d296e23..d248a54478 100644 --- a/projects/Rockchip/devices/RK-ARMV8-A/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK-ARMV8-A/linux/linux.aarch64.conf @@ -2,7 +2,7 @@ # Automatically generated file; DO NOT EDIT. # Linux/arm64 6.7.0 Kernel Configuration # -CONFIG_CC_VERSION_TEXT="aarch64-libreelec-linux-gnueabi-gcc-12.3.0 (GCC) 12.3.0" +CONFIG_CC_VERSION_TEXT="aarch64-linux-gnueabi-gcc-12.3.0 (GCC) 12.3.0" CONFIG_CC_IS_GCC=y CONFIG_GCC_VERSION=120300 CONFIG_CLANG_VERSION=0 diff --git a/projects/Rockchip/devices/RK3326/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3326/linux/linux.aarch64.conf index 08bf4eeedb..f761e7e636 100644 --- a/projects/Rockchip/devices/RK3326/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3326/linux/linux.aarch64.conf @@ -2,7 +2,7 @@ # Automatically generated file; DO NOT EDIT. # Linux/arm64 6.7.2 Kernel Configuration # -CONFIG_CC_VERSION_TEXT="aarch64-libreelec-linux-gnueabi-gcc-12.3.1 (GCC) 12.3.1 20240103" +CONFIG_CC_VERSION_TEXT="aarch64-linux-gnueabi-gcc-12.3.1 (GCC) 12.3.1 20240103" CONFIG_CC_IS_GCC=y CONFIG_GCC_VERSION=120301 CONFIG_CLANG_VERSION=0 diff --git a/projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf index 40061e087a..5845e0a957 100644 --- a/projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf @@ -2,7 +2,7 @@ # Automatically generated file; DO NOT EDIT. # Linux/arm64 6.7.1 Kernel Configuration # -CONFIG_CC_VERSION_TEXT="aarch64-libreelec-linux-gnueabi-gcc-12.3.1 (GCC) 12.3.1 20240103" +CONFIG_CC_VERSION_TEXT="aarch64-linux-gnueabi-gcc-12.3.1 (GCC) 12.3.1 20240103" CONFIG_CC_IS_GCC=y CONFIG_GCC_VERSION=120301 CONFIG_CLANG_VERSION=0 diff --git a/projects/Rockchip/devices/RK3566/linux/linux.aarch64.old.conf b/projects/Rockchip/devices/RK3566/linux/linux.aarch64.old.conf index 695ec83392..418d04e18f 100644 --- a/projects/Rockchip/devices/RK3566/linux/linux.aarch64.old.conf +++ b/projects/Rockchip/devices/RK3566/linux/linux.aarch64.old.conf @@ -2,7 +2,7 @@ # Automatically generated file; DO NOT EDIT. # Linux/arm64 6.6.0-rc3 Kernel Configuration # -CONFIG_CC_VERSION_TEXT="aarch64-libreelec-linux-gnueabi-gcc-12.3.0 (GCC) 12.3.0" +CONFIG_CC_VERSION_TEXT="aarch64-linux-gnueabi-gcc-12.3.0 (GCC) 12.3.0" CONFIG_CC_IS_GCC=y CONFIG_GCC_VERSION=120300 CONFIG_CLANG_VERSION=0 diff --git a/projects/Rockchip/devices/RK3588/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3588/linux/linux.aarch64.conf index 5099143706..e46317436c 100644 --- a/projects/Rockchip/devices/RK3588/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3588/linux/linux.aarch64.conf @@ -2,7 +2,7 @@ # Automatically generated file; DO NOT EDIT. # Linux/arm64 5.10.110 Kernel Configuration # -CONFIG_CC_VERSION_TEXT="aarch64-libreelec-linux-gnueabi-gcc-12.2.0 (GCC) 12.2.0" +CONFIG_CC_VERSION_TEXT="aarch64-linux-gnueabi-gcc-12.2.0 (GCC) 12.2.0" CONFIG_CC_IS_GCC=y CONFIG_GCC_VERSION=120200 CONFIG_LD_VERSION=239000000 diff --git a/scripts/build_compat b/scripts/build_compat index c7f683f0d6..c36088712d 100755 --- a/scripts/build_compat +++ b/scripts/build_compat @@ -70,11 +70,7 @@ TARGET_VERSION="${OS_ARCH}-${OS_VERSION}" if [ -n "${CUSTOM_IMAGE_NAME}" ]; then IMAGE_NAME="${CUSTOM_IMAGE_NAME}" else - if [ "${DEVEL_VERSION}" = "devel" ]; then - IMAGE_NAME="${DISTRONAME}-${OS_ARCH}-${OS_VERSION}-${OS_VERSION}" - else - IMAGE_NAME="${DISTRONAME}-${TARGET_VERSION}" - fi + IMAGE_NAME="${DISTRONAME}-${TARGET_VERSION}" fi if [ -n "${IMAGE_SUFFIX}" ]; then @@ -94,7 +90,7 @@ rm -rf ${INSTALL} rm -rf ${STAMPS_INSTALL} mkdir -p ${INSTALL} -# Create base layout of LibreELEC read-only file system +# Create base layout of JELOS read-only file system for directory in etc dev proc run sys tmp usr var flash storage; do mkdir -p ${INSTALL}/${directory} done diff --git a/scripts/genbuildplan.py b/scripts/genbuildplan.py index 3922f886a7..e29a724744 100755 --- a/scripts/genbuildplan.py +++ b/scripts/genbuildplan.py @@ -9,7 +9,7 @@ ROOT_PKG = "__root__" -class LibreELEC_Package: +class JELOS_Package: def __init__(self, name, section): self.name = name self.section = section @@ -130,9 +130,9 @@ def loadPackages(): return map -# Create a fully formed LibreELEC_Package object +# Create a fully formed JELOS_Package object def initPackage(package): - pkg = LibreELEC_Package(package["name"], package["section"]) + pkg = JELOS_Package(package["name"], package["section"]) for target in ["bootstrap", "init", "host", "target"]: pkg.addDependencies(target, package[target]) diff --git a/scripts/image b/scripts/image index abc248749d..8dd71b4a0f 100755 --- a/scripts/image +++ b/scripts/image @@ -72,11 +72,7 @@ TARGET_VERSION="${OS_ARCH}-${OS_VERSION}" if [ -n "${CUSTOM_IMAGE_NAME}" ]; then IMAGE_NAME="${CUSTOM_IMAGE_NAME}" else - if [ "${DEVEL_VERSION}" = "devel" ]; then - IMAGE_NAME="${DISTRONAME}-${OS_ARCH}-${OS_VERSION}-${OS_VERSION}" - else - IMAGE_NAME="${DISTRONAME}-${TARGET_VERSION}" - fi + IMAGE_NAME="${DISTRONAME}-${TARGET_VERSION}" fi if [ -n "${IMAGE_SUFFIX}" ]; then @@ -96,7 +92,7 @@ rm -rf ${INSTALL} rm -rf ${STAMPS_INSTALL} mkdir -p ${INSTALL} -# Create base layout of LibreELEC read-only file system +# Create base layout of JELOS read-only file system for directory in etc dev proc run sys tmp usr var flash storage; do mkdir -p ${INSTALL}/${directory} done diff --git a/scripts/unpack b/scripts/unpack index 9c643f13b2..d7a6712365 100755 --- a/scripts/unpack +++ b/scripts/unpack @@ -70,7 +70,7 @@ if [ -d "${SOURCES}/${PKG_NAME}" -o -d "${PKG_DIR}/sources" ] || pkg_call_exists build_msg "CLR_UNPACK" "UNPACK" "${PKG_NAME}" "indent" # unpack into a unique location as unpacking into a single ${BUILD} directory is not thread-safe - PKG_UNPACK_DIR="${BUILD}/.unpack/${PKG_NAME}" + PKG_UNPACK_DIR="${BUILD}/.jelos-unpack/${PKG_NAME}" rm -rf "${PKG_UNPACK_DIR}" mkdir -p "${PKG_UNPACK_DIR}" From 382a9f89b7427fce8c6f04619d076ba76148f5c7 Mon Sep 17 00:00:00 2001 From: adamg Date: Fri, 9 Feb 2024 19:26:07 +0000 Subject: [PATCH 154/167] buildroot: update some jelos urls --- README.md | 66 +++++++++---------- distributions/JELOS/options | 6 +- .../emulators/libretro/idtech-lr/package.mk | 2 +- .../RTL8723DS-firmware/package.mk | 2 +- .../RTL8821CS-firmware/package.mk | 2 +- packages/tools/installer/package.mk | 2 +- packages/virtual/arm/package.mk | 2 +- packages/virtual/docker/package.mk | 2 +- packages/virtual/emulators/package.mk | 2 +- packages/virtual/es-themes/package.mk | 2 +- packages/virtual/gamesupport/package.mk | 2 +- packages/virtual/misc-packages/package.mk | 2 +- packages/virtual/synctools/package.mk | 2 +- packages/virtual/x86/package.mk | 2 +- packages/x11/xserver/xwayland/package.mk | 4 +- 15 files changed, 50 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index 708f56a88c..7c07df0658 100644 --- a/README.md +++ b/README.md @@ -101,39 +101,39 @@ JELOS supports a variety of ARM and Intel/AMD based devices. | Manufacturer | Device | CPU / Architecture | Kernel | GL driver | Interface | | -- | -- | -- | -- | -- | -- | -| Anbernic | [RG351P/M](http://jelos.org/devices/anbernic/rg351pmv) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | -| Anbernic | [RG351v](http://jelos.org/devices/anbernic/rg351pmv) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | -| Anbernic | [RG353P](http://jelos.org/devices/anbernic/rg353pmvvs) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | -| Anbernic | [RG353M](http://jelos.org/devices/anbernic/rg353pmvvs) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | -| Anbernic | [RG353V](http://jelos.org/devices/anbernic/rg353pmvvs) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | -| Anbernic | [RG353VS](http://jelos.org/devices/anbernic/rg353pmvvs) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | -| Anbernic | [RG503](http://jelos.org/devices/anbernic/rg503) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | -| Anbernic | [RG552](http://jelos.org/devices/anbernic/rg552) | Rockchip RK3399 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | -| Anbernic | [Win600](http://jelos.org/devices/anbernic/win600) | AMD Athlon Silver 3050e (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | -| AOKZOE | [A1 Pro](http://jelos.org/devices/aokzoe/a1-pro) | AMD 7840u (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | -| Atari | [VCS](http://jelos.org/devices/atari/vcs) | AMD Ryzen R1606G (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | -| AYANEO | [Air / Air Pro](http://jelos.org/devices/ayaneo/air) | Amd Ryzen 5 5560U / AMD Ryzen 7 5825U (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | -| AYANEO | [Air Plus](http://jelos.org/devices/ayaneo/air-plus) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | -| AYANEO | [AYANEO 2](http://jelos.org/devices/ayaneo/ayaneo-2) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | -| AYANEO | [AYANEO 2S](http://jelos.org/devices/ayaneo/ayaneo-2) | Amd Ryzen 7 7840U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | -| Ayn | [Loki Zero](http://jelos.org/devices/ayn/loki-zero) | AMD Athlon Silver 3050e (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | -| Ayn | [Loki Max](http://jelos.org/devices/ayn/loki-max) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | -| Game Console | [RG33S](http://jelos.org/gameconsole/r33s) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | -| GPD | [Win 4](http://jelos.org/devices/gpd/win4) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | -| GPD | [Win Max 2 (2022)](http://jelos.org/devices/gpd/win-max-2) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux| Radeonsi | Weston + Emulation Station | -| Hardkernel | [Odroid Go Advance](http://jelos.org/devices/hardkernel/odroid-go-advance) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | -| Hardkernel | [Odroid Go Super](http://jelos.org/devices/hardkernel/odroid-go-super) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | -| Hardkernel | [Odroid Go Ultra](http://jelos.org/devices/hardkernel/odroid-go-ultra) | Amlogic S922X / Mali G52 M6 (ARMv8-A) | Mainline Linux | Mali | Weston + Emulation Station | -| Hardkernel | [Odroid N2/N2+/N2L](http://jelos.org/devices/hardkernel/odroid-n2) | Amlogic S922X / Mali G52 M6 (ARMv8-A) | Mainline Linux | Mali | Weston + Emulation Station | -| Indiedroid | [Nova](http://jelos.org/devices/indiedroid/nova) | Rockchip RK3588S / Mali G610 (ARMv8-A) | Rockchip 5.10 BSP Linux | Panfrost | Weston + Emulation Station | -| Orange Pi | [Orange Pi 5](http://jelos.org/devices/orange-pi/orange-pi-5) | Rockchip RK3588S / Mali G610 (ARMv8-A) | Rockchip 5.10 BSP Linux | Panfrost | Weston + Emulation Station | -| Magicx | [XU10](http://jelos.org/devices/magicx/xu10) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | -| Powkiddy | [RGB10](http://jelos.org/devices/powkiddy/rgb10) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | -| Powkiddy | [RGB10 Max 3](http://jelos.org/devices/powkiddy/rgb10-max-3) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | -| Powkiddy | [RGB10 Max 3 Pro](http://jelos.org/devices/powkiddy/rgb10-max-3-pro) | Amlogic A311D / Mali G52 M4 (ARMv8-A) | Mainline Linux | Mali | Weston + Emulation Station | -| Powkiddy | [RGB30](http://jelos.org/devices/powkiddy/rgb30) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | -| Powkiddy | [RK2023](http://jelos.org/devices/powkiddy/rk2023) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | -| Powkiddy | [x55](http://jelos.org/devices/powkiddy/x55) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | +| Anbernic | [RG351P/M](https://jelos.org/devices/anbernic/rg351pmv) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | +| Anbernic | [RG351v](https://jelos.org/devices/anbernic/rg351pmv) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | +| Anbernic | [RG353P](https://jelos.org/devices/anbernic/rg353pmvvs) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | +| Anbernic | [RG353M](https://jelos.org/devices/anbernic/rg353pmvvs) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | +| Anbernic | [RG353V](https://jelos.org/devices/anbernic/rg353pmvvs) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | +| Anbernic | [RG353VS](https://jelos.org/devices/anbernic/rg353pmvvs) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | +| Anbernic | [RG503](https://jelos.org/devices/anbernic/rg503) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | +| Anbernic | [RG552](https://jelos.org/devices/anbernic/rg552) | Rockchip RK3399 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | +| Anbernic | [Win600](https://jelos.org/devices/anbernic/win600) | AMD Athlon Silver 3050e (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | +| AOKZOE | [A1 Pro](https://jelos.org/devices/aokzoe/a1-pro) | AMD 7840u (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | +| Atari | [VCS](https://jelos.org/devices/atari/vcs) | AMD Ryzen R1606G (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | +| AYANEO | [Air / Air Pro](https://jelos.org/devices/ayaneo/air) | Amd Ryzen 5 5560U / AMD Ryzen 7 5825U (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | +| AYANEO | [Air Plus](https://jelos.org/devices/ayaneo/air-plus) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | +| AYANEO | [AYANEO 2](https://jelos.org/devices/ayaneo/ayaneo-2) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | +| AYANEO | [AYANEO 2S](https://jelos.org/devices/ayaneo/ayaneo-2) | Amd Ryzen 7 7840U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | +| Ayn | [Loki Zero](https://jelos.org/devices/ayn/loki-zero) | AMD Athlon Silver 3050e (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | +| Ayn | [Loki Max](https://jelos.org/devices/ayn/loki-max) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | +| Game Console | [RG33S](https://jelos.org/gameconsole/r33s) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | +| GPD | [Win 4](https://jelos.org/devices/gpd/win4) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | +| GPD | [Win Max 2 (2022)](https://jelos.org/devices/gpd/win-max-2) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux| Radeonsi | Weston + Emulation Station | +| Hardkernel | [Odroid Go Advance](https://jelos.org/devices/hardkernel/odroid-go-advance) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | +| Hardkernel | [Odroid Go Super](https://jelos.org/devices/hardkernel/odroid-go-super) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | +| Hardkernel | [Odroid Go Ultra](https://jelos.org/devices/hardkernel/odroid-go-ultra) | Amlogic S922X / Mali G52 M6 (ARMv8-A) | Mainline Linux | Mali | Weston + Emulation Station | +| Hardkernel | [Odroid N2/N2+/N2L](https://jelos.org/devices/hardkernel/odroid-n2) | Amlogic S922X / Mali G52 M6 (ARMv8-A) | Mainline Linux | Mali | Weston + Emulation Station | +| Indiedroid | [Nova](https://jelos.org/devices/indiedroid/nova) | Rockchip RK3588S / Mali G610 (ARMv8-A) | Rockchip 5.10 BSP Linux | Panfrost | Weston + Emulation Station | +| Orange Pi | [Orange Pi 5](https://jelos.org/devices/orange-pi/orange-pi-5) | Rockchip RK3588S / Mali G610 (ARMv8-A) | Rockchip 5.10 BSP Linux | Panfrost | Weston + Emulation Station | +| Magicx | [XU10](https://jelos.org/devices/magicx/xu10) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | +| Powkiddy | [RGB10](https://jelos.org/devices/powkiddy/rgb10) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | +| Powkiddy | [RGB10 Max 3](https://jelos.org/devices/powkiddy/rgb10-max-3) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | +| Powkiddy | [RGB10 Max 3 Pro](https://jelos.org/devices/powkiddy/rgb10-max-3-pro) | Amlogic A311D / Mali G52 M4 (ARMv8-A) | Mainline Linux | Mali | Weston + Emulation Station | +| Powkiddy | [RGB30](https://jelos.org/devices/powkiddy/rgb30) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | +| Powkiddy | [RK2023](https://jelos.org/devices/powkiddy/rk2023) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | +| Powkiddy | [x55](https://jelos.org/devices/powkiddy/x55) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | > [!NOTE] > While not technically supported, JELOS is also known to work well on a variety of generic x86_64 devices including gaming PCs, mini PCs, and laptop computers. diff --git a/distributions/JELOS/options b/distributions/JELOS/options index ba61f30fb0..404b9af991 100644 --- a/distributions/JELOS/options +++ b/distributions/JELOS/options @@ -20,13 +20,13 @@ DESCRIPTION="An Open Source firmware." # Distribution Home URL - HOME_URL="https://www.jelos.org" + HOME_URL="https://jelos.org" # Documentation URL - WIKI_URL="https://www.jelos.org" + WIKI_URL="https://jelos.org" # Where to report bugs - BUG_REPORT_URL="https://www.jelos.org" + BUG_REPORT_URL="https://jelos.org" # Root password to integrate in the target system ROOT_PASSWORD="system generated" diff --git a/packages/emulators/libretro/idtech-lr/package.mk b/packages/emulators/libretro/idtech-lr/package.mk index 325913756a..90ffe9836a 100644 --- a/packages/emulators/libretro/idtech-lr/package.mk +++ b/packages/emulators/libretro/idtech-lr/package.mk @@ -3,7 +3,7 @@ PKG_NAME="idtech-lr" PKG_LICENSE="Apache-2.0" -PKG_SITE="www.jelos.org" +PKG_SITE="https://jelos.org" PKG_LONGDESC="Package for all iD Software game engines." PKG_TOOLCHAIN="manual" diff --git a/packages/kernel/linux-firmware/RTL8723DS-firmware/package.mk b/packages/kernel/linux-firmware/RTL8723DS-firmware/package.mk index 585976a8f9..3b975ef626 100644 --- a/packages/kernel/linux-firmware/RTL8723DS-firmware/package.mk +++ b/packages/kernel/linux-firmware/RTL8723DS-firmware/package.mk @@ -4,7 +4,7 @@ PKG_NAME="RTL8723DS-firmware" PKG_VERSION="" PKG_LICENSE="Apache-2.0" -PKG_SITE="www.jelos.org" +PKG_SITE="https://jelos.org" PKG_LONGDESC="Realtek RTL8723DS Linux firmware" PKG_DEPENDS_TARGET="linux rtk_hciattach" PKG_TOOLCHAIN="manual" diff --git a/packages/kernel/linux-firmware/RTL8821CS-firmware/package.mk b/packages/kernel/linux-firmware/RTL8821CS-firmware/package.mk index 838d310ac0..458f5ea9b9 100644 --- a/packages/kernel/linux-firmware/RTL8821CS-firmware/package.mk +++ b/packages/kernel/linux-firmware/RTL8821CS-firmware/package.mk @@ -4,7 +4,7 @@ PKG_NAME="RTL8821CS-firmware" PKG_VERSION="" PKG_LICENSE="Apache-2.0" -PKG_SITE="www.jelos.org" +PKG_SITE="https://jelos.org" PKG_LONGDESC="Realtek RTL8821CS Linux firmware" PKG_DEPENDS_TARGET="linux rtk_hciattach" PKG_TOOLCHAIN="manual" diff --git a/packages/tools/installer/package.mk b/packages/tools/installer/package.mk index 4213a6f03c..5b4b74a104 100644 --- a/packages/tools/installer/package.mk +++ b/packages/tools/installer/package.mk @@ -4,7 +4,7 @@ PKG_NAME="installer" PKG_VERSION="1" PKG_LICENSE="GPL" -PKG_SITE="http://jelos.org/" +PKG_SITE="https://jelos.org" PKG_URL="" PKG_DEPENDS_TARGET="toolchain busybox newt parted e2fsprogs syslinux grub" PKG_LONGDESC="JELOS Install manager to install the system on any disk" diff --git a/packages/virtual/arm/package.mk b/packages/virtual/arm/package.mk index 0521b2a028..ccac0a66cb 100644 --- a/packages/virtual/arm/package.mk +++ b/packages/virtual/arm/package.mk @@ -3,7 +3,7 @@ PKG_NAME="arm" PKG_LICENSE="GPLv2" -PKG_SITE="www.jelos.org" +PKG_SITE="https://jelos.org" PKG_DEPENDS_TARGET="toolchain squashfs-tools:host dosfstools:host fakeroot:host kmod:host mtools:host populatefs:host libc gcc linux linux-drivers linux-firmware libusb unzip socat p7zip file SDL2 SDL2_gfx SDL2_image SDL2_mixer SDL2_net SDL2_ttf" PKG_SECTION="virtual" PKG_LONGDESC="Root package used to build and create 32-bit userland" diff --git a/packages/virtual/docker/package.mk b/packages/virtual/docker/package.mk index 380d5c06c5..93e1b0b9b8 100644 --- a/packages/virtual/docker/package.mk +++ b/packages/virtual/docker/package.mk @@ -3,7 +3,7 @@ PKG_NAME="docker" PKG_LICENSE="GPLv2" -PKG_SITE="www.jelos.org" +PKG_SITE="https://jelos.org" PKG_SECTION="virtual" PKG_LONGDESC="Container support software metapackage." diff --git a/packages/virtual/emulators/package.mk b/packages/virtual/emulators/package.mk index d1bbf4681a..1db7927dbe 100644 --- a/packages/virtual/emulators/package.mk +++ b/packages/virtual/emulators/package.mk @@ -3,7 +3,7 @@ PKG_NAME="emulators" PKG_LICENSE="GPLv2" -PKG_SITE="www.jelos.org" +PKG_SITE="https://jelos.org" PKG_SECTION="emulation" # Do not change to virtual or makeinstall_target will not execute. PKG_LONGDESC="Emulation metapackage." PKG_TOOLCHAIN="manual" diff --git a/packages/virtual/es-themes/package.mk b/packages/virtual/es-themes/package.mk index e15b06c6c4..645be76b87 100644 --- a/packages/virtual/es-themes/package.mk +++ b/packages/virtual/es-themes/package.mk @@ -3,7 +3,7 @@ PKG_NAME="es-themes" PKG_LICENSE="GPLv2" -PKG_SITE="www.jelos.org" +PKG_SITE="https://jelos.org" PKG_DEPENDS_TARGET="es-theme-art-book-next" PKG_SECTION="virtual" PKG_LONGDESC="EmulationStation themes package." diff --git a/packages/virtual/gamesupport/package.mk b/packages/virtual/gamesupport/package.mk index 36c786ad37..d783965958 100644 --- a/packages/virtual/gamesupport/package.mk +++ b/packages/virtual/gamesupport/package.mk @@ -3,7 +3,7 @@ PKG_NAME="gamesupport" PKG_LICENSE="GPLv2" -PKG_SITE="www.jelos.org" +PKG_SITE="https://jelos.org" PKG_SECTION="virtual" PKG_LONGDESC="Game support software metapackage." diff --git a/packages/virtual/misc-packages/package.mk b/packages/virtual/misc-packages/package.mk index 584f885471..eb3c6c77fd 100644 --- a/packages/virtual/misc-packages/package.mk +++ b/packages/virtual/misc-packages/package.mk @@ -6,7 +6,7 @@ PKG_NAME="misc-packages" PKG_VERSION="" PKG_LICENSE="GPL" -PKG_SITE="https://www.jelos.org" +PKG_SITE="https://jelos.org" PKG_URL="" PKG_SECTION="virtual" PKG_LONGDESC="misc-packages: Metapackage for miscellaneous packages" diff --git a/packages/virtual/synctools/package.mk b/packages/virtual/synctools/package.mk index 19d8903127..9f4709fb2b 100644 --- a/packages/virtual/synctools/package.mk +++ b/packages/virtual/synctools/package.mk @@ -3,7 +3,7 @@ PKG_NAME="synctools" PKG_LICENSE="GPLv2" -PKG_SITE="www.jelos.org" +PKG_SITE="https://jelos.org" PKG_SECTION="virtual" PKG_LONGDESC="Cloud/local sync tools metapackage." diff --git a/packages/virtual/x86/package.mk b/packages/virtual/x86/package.mk index d0e7ab7b1c..b879c369b8 100644 --- a/packages/virtual/x86/package.mk +++ b/packages/virtual/x86/package.mk @@ -3,7 +3,7 @@ PKG_NAME="x86" PKG_LICENSE="GPLv2" -PKG_SITE="www.jelos.org" +PKG_SITE="https://jelos.org" PKG_DEPENDS_TARGET="toolchain squashfs-tools:host dosfstools:host fakeroot:host kmod:host mtools:host populatefs:host libc gcc linux linux-drivers linux-firmware libusb unzip socat p7zip file SDL2 SDL2_gfx SDL2_image SDL2_mixer SDL2_net SDL2_ttf" PKG_SECTION="virtual" PKG_LONGDESC="Root package used to build and create 32-bit userland" diff --git a/packages/x11/xserver/xwayland/package.mk b/packages/x11/xserver/xwayland/package.mk index 392bf232a4..2b91e42339 100644 --- a/packages/x11/xserver/xwayland/package.mk +++ b/packages/x11/xserver/xwayland/package.mk @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-or-later # Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv) # Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) -# Copyright (C) 2023-present JELOS (https://github.com/JustEnoughLinuxOS/distribution) +# Copyright (C) 2023-present JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="xwayland" PKG_VERSION="7439e9c6c59219335fe35629a90f4fdd49912bcf" @@ -27,7 +27,7 @@ PKG_MESON_OPTS_TARGET+=" -Dxvfb=false \ -Dxkb_output_dir="/var/cache/xkb" \ -Dvendor_name="JELOS" \ -Dvendor_name_short="JELOS" \ - -Dvendor_web="https://jelos.org/" \ + -Dvendor_web="https://jelos.org" \ -Dlisten_tcp=false \ -Dlisten_unix=true \ -Dlisten_local=false \ From 2ad0c486898902f28c916205b5dbf50c45d6e087 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Sat, 10 Feb 2024 10:19:51 +0000 Subject: [PATCH 155/167] Fix rust target names. --- .../{aarch64-linux-gnu.json => aarch64-jelos-linux-gnu.json} | 0 .../{arm-linux-gnueabihf.json => arm-jelos-linux-gnueabihf.json} | 0 .../{x86_64-linux-gnu.json => x86_64-jelos-linux-gnu.json} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename packages/rust/rust/targets/{aarch64-linux-gnu.json => aarch64-jelos-linux-gnu.json} (100%) rename packages/rust/rust/targets/{arm-linux-gnueabihf.json => arm-jelos-linux-gnueabihf.json} (100%) rename packages/rust/rust/targets/{x86_64-linux-gnu.json => x86_64-jelos-linux-gnu.json} (100%) diff --git a/packages/rust/rust/targets/aarch64-linux-gnu.json b/packages/rust/rust/targets/aarch64-jelos-linux-gnu.json similarity index 100% rename from packages/rust/rust/targets/aarch64-linux-gnu.json rename to packages/rust/rust/targets/aarch64-jelos-linux-gnu.json diff --git a/packages/rust/rust/targets/arm-linux-gnueabihf.json b/packages/rust/rust/targets/arm-jelos-linux-gnueabihf.json similarity index 100% rename from packages/rust/rust/targets/arm-linux-gnueabihf.json rename to packages/rust/rust/targets/arm-jelos-linux-gnueabihf.json diff --git a/packages/rust/rust/targets/x86_64-linux-gnu.json b/packages/rust/rust/targets/x86_64-jelos-linux-gnu.json similarity index 100% rename from packages/rust/rust/targets/x86_64-linux-gnu.json rename to packages/rust/rust/targets/x86_64-jelos-linux-gnu.json From 261f99252b51143ef15e1ec8037f761a8af41908 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Sat, 10 Feb 2024 10:50:37 +0000 Subject: [PATCH 156/167] Clean up rust package a bit. --- packages/rust/rust/package.mk | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/packages/rust/rust/package.mk b/packages/rust/rust/package.mk index 27678dd1c6..4cdfc5228a 100644 --- a/packages/rust/rust/package.mk +++ b/packages/rust/rust/package.mk @@ -19,19 +19,8 @@ pre_configure_host() { } configure_host() { - mkdir -p ${PKG_BUILD}/targets - - case "${TARGET_ARCH}" in - "arm") - # the arm target is special because we specify the subarch. ie armv8a - cp -a ${PKG_DIR}/targets/arm-linux-gnueabihf.json ${PKG_BUILD}/targets/${TARGET_NAME}.json - ;; - "aarch64"|"x86_64") - cp -a ${PKG_DIR}/targets/${TARGET_NAME}.json ${PKG_BUILD}/targets/${TARGET_NAME}.json - ;; - esac - + cp -a ${PKG_DIR}/targets/${TARGET_NAME}.json ${PKG_BUILD}/targets/${TARGET_NAME}.json cat > ${PKG_BUILD}/config.toml < Date: Sat, 10 Feb 2024 11:43:58 +0000 Subject: [PATCH 157/167] Bump ES to move wifi power savings. --- packages/ui/emulationstation/package.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ui/emulationstation/package.mk b/packages/ui/emulationstation/package.mk index 0e5b4fa9b3..d972d71e4d 100644 --- a/packages/ui/emulationstation/package.mk +++ b/packages/ui/emulationstation/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="emulationstation" -PKG_VERSION="c9934ae9c20c1c44fd1c8279234b7368bdea1bb0" +PKG_VERSION="cd21ce8bba392132f4611a38d5174c9173c176f6" PKG_GIT_CLONE_BRANCH="main" PKG_REV="1" PKG_ARCH="any" From 2c9405f75b52a3235ef24ca5bf4b870ed39cd69b Mon Sep 17 00:00:00 2001 From: fewtarius Date: Sat, 10 Feb 2024 13:46:20 +0000 Subject: [PATCH 158/167] Fix R33S label. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7c07df0658..d62a6ae65f 100644 --- a/README.md +++ b/README.md @@ -118,7 +118,7 @@ JELOS supports a variety of ARM and Intel/AMD based devices. | AYANEO | [AYANEO 2S](https://jelos.org/devices/ayaneo/ayaneo-2) | Amd Ryzen 7 7840U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | | Ayn | [Loki Zero](https://jelos.org/devices/ayn/loki-zero) | AMD Athlon Silver 3050e (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | | Ayn | [Loki Max](https://jelos.org/devices/ayn/loki-max) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | -| Game Console | [RG33S](https://jelos.org/gameconsole/r33s) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | +| Game Console | [R33S](https://jelos.org/gameconsole/r33s) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | | GPD | [Win 4](https://jelos.org/devices/gpd/win4) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | | GPD | [Win Max 2 (2022)](https://jelos.org/devices/gpd/win-max-2) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux| Radeonsi | Weston + Emulation Station | | Hardkernel | [Odroid Go Advance](https://jelos.org/devices/hardkernel/odroid-go-advance) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | From 4cfd5df3d39899fe7429a13d986c1d50415c7ff6 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Sat, 10 Feb 2024 14:05:55 +0000 Subject: [PATCH 159/167] Feature updates * RetroAchievements are now available again in the main menu when enabled. * Audio Reset is now available in system management and reset options. --- packages/jelos/sources/scripts/factoryreset | 5 +++++ packages/ui/emulationstation/package.mk | 9 +++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/jelos/sources/scripts/factoryreset b/packages/jelos/sources/scripts/factoryreset index 0f28cd0a44..3c2e0a2d84 100755 --- a/packages/jelos/sources/scripts/factoryreset +++ b/packages/jelos/sources/scripts/factoryreset @@ -21,6 +21,11 @@ case "${1}" in sync systemctl reboot ;; + "audio") + systemctl stop pipewire-pulse pipewire-pulse.socket pipewire pipewire.socket wireplumber + rm -rf /storage/.local/state /storage/.config/pulse /storage/asound* + systemctl reboot + ;; "ALL") swapoff -a 2>/dev/null umount /storage/roms 2>/dev/null ||: diff --git a/packages/ui/emulationstation/package.mk b/packages/ui/emulationstation/package.mk index d972d71e4d..515133308d 100644 --- a/packages/ui/emulationstation/package.mk +++ b/packages/ui/emulationstation/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="emulationstation" -PKG_VERSION="cd21ce8bba392132f4611a38d5174c9173c176f6" +PKG_VERSION="0d4edf882f27f258e2913e2c69b11531bd87cac6" PKG_GIT_CLONE_BRANCH="main" PKG_REV="1" PKG_ARCH="any" @@ -33,7 +33,12 @@ else PKG_CMAKE_OPTS_TARGET+=" -DENABLE_UPDATES=0" fi -PKG_CMAKE_OPTS_TARGET+=" -DENABLE_EMUELEC=1 -DDISABLE_KODI=1 -DENABLE_FILEMANAGER=0 -DCEC=0 -DENABLE_PULSE=1" +PKG_CMAKE_OPTS_TARGET+=" -DENABLE_EMUELEC=1 \ + -DDISABLE_KODI=1 \ + -DENABLE_FILEMANAGER=0 \ + -DCEC=0 \ + -DENABLE_PULSE=1 \ + -DUSE_SYSTEM_PUGIXML=1" ########################################################################################################## # The following allows building Emulation station from local copy by using EMULATIONSTATION_SRC. From 3f862a4734c5fe1ab8feb7d77ed272c2c837665c Mon Sep 17 00:00:00 2001 From: fewtarius Date: Sat, 10 Feb 2024 14:46:00 +0000 Subject: [PATCH 160/167] Revert flycast-sa to fix artifacting and display issues. --- packages/emulators/standalone/flycast-sa/package.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/emulators/standalone/flycast-sa/package.mk b/packages/emulators/standalone/flycast-sa/package.mk index 07472663f5..ad6af839a8 100644 --- a/packages/emulators/standalone/flycast-sa/package.mk +++ b/packages/emulators/standalone/flycast-sa/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="flycast-sa" -PKG_VERSION="c146a92f83ae2cba8df8970e21efc54301b9ade1" +PKG_VERSION="195f401044fc3a77d6ae0dbd206d446d127b2769" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/flyinghead/flycast" PKG_URL="${PKG_SITE}.git" From 5227088890593dbcefb5fc8f1f29f0f3ab29b329 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Sun, 11 Feb 2024 23:48:06 +0000 Subject: [PATCH 161/167] Add support for displaying pico-8 carts as images, and update pugixml. --- packages/tools/pugixml/package.mk | 4 ++-- packages/ui/emulationstation/package.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/tools/pugixml/package.mk b/packages/tools/pugixml/package.mk index 25424aa6d5..f6e0ae9411 100644 --- a/packages/tools/pugixml/package.mk +++ b/packages/tools/pugixml/package.mk @@ -2,10 +2,10 @@ # Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv) PKG_NAME="pugixml" -PKG_VERSION="1.14" +PKG_VERSION="b2b466403084667c90a0f0cc4e960405cfc8117a" PKG_LICENSE="MIT" PKG_SITE="https://pugixml.org/" -PKG_URL="https://github.com/zeux/pugixml/archive/v${PKG_VERSION}.tar.gz" +PKG_URL="https://github.com/zeux/pugixml.git" PKG_DEPENDS_HOST="toolchain:host" PKG_DEPENDS_TARGET="toolchain" PKG_LONGDESC="Light-weight, simple and fast XML parser for C++ with XPath support." diff --git a/packages/ui/emulationstation/package.mk b/packages/ui/emulationstation/package.mk index 515133308d..93c78efbe1 100644 --- a/packages/ui/emulationstation/package.mk +++ b/packages/ui/emulationstation/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="emulationstation" -PKG_VERSION="0d4edf882f27f258e2913e2c69b11531bd87cac6" +PKG_VERSION="b690d7c772615f30a69bf52777efe80d269c0df3" PKG_GIT_CLONE_BRANCH="main" PKG_REV="1" PKG_ARCH="any" From 5f49386f246de014b3e0f7c8df08ab2b092bc003 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Mon, 12 Feb 2024 00:01:48 +0000 Subject: [PATCH 162/167] Notice paused RK3566 devices in release notes. --- .github/workflows/build-main.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index 73e359cc63..6791ed916f 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -101,14 +101,14 @@ jobs: |**Device/Platform**|**Download Package**|**Documentation**| |----|----|----| |**Anbernic RG351P/M, Game Console R33S, ODROID Go Advance, ODROID Go Super, Magicx XU10**|[JELOS-RK3326.aarch64-${{ steps.version.outputs.version }}.img.gz](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RK3326.aarch64-${{ steps.version.outputs.version }}.img.gz)|[documentation](/documentation/PER_DEVICE_DOCUMENTATION/RK3326/)| - |**Anbernic RG353P/M/V/VS, RG503, Powkiddy RK2023, RGB30, RGB10 Max 3**|[JELOS-RK3566.aarch64-${{ steps.version.outputs.version }}.img.gz](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RK3566.aarch64-${{ steps.version.outputs.version }}.img.gz)|[documentation](/documentation/PER_DEVICE_DOCUMENTATION/RK3566/)| |**Anbernic RG552**|[JELOS-RK3399.aarch64-${{ steps.version.outputs.version }}.img.gz](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RK3399.aarch64-${{ steps.version.outputs.version }}.img.gz)|[documentation](/documentation/PER_DEVICE_DOCUMENTATION/RK3399/)| |**Atari VCS, AOKZOE, Ayaneo, Ayn, GPD, and other x86_64 devices**|[JELOS-AMD64.x86_64-${{ steps.version.outputs.version }}.img.gz](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-AMD64.x86_64-${{ steps.version.outputs.version }}.img.gz)|[documentation](/documentation/PER_DEVICE_DOCUMENTATION/AMD64/)| |**Hardkernel ODROID Go Ultra, Powkiddy RGB10 Max 3 Pro**|[JELOS-S922X.aarch64-${{ steps.version.outputs.version }}-Odroid_GOU.img.gz](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-S922X.aarch64-${{ steps.version.outputs.version }}-Odroid_GOU.img.gz)|[documentation](/documentation/PER_DEVICE_DOCUMENTATION/S922X/)| |**Hardkernel ODROID N2/N2+**|[JELOS-S922X.aarch64-${{ steps.version.outputs.version }}-Odroid_N2.img.gz](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-S922X.aarch64-${{ steps.version.outputs.version }}-Odroid_N2.img.gz)|[documentation](/documentation/PER_DEVICE_DOCUMENTATION/S922X/)| |**Hardkernel ODROID N2L**|[JELOS-S922X.aarch64-${{ steps.version.outputs.version }}-Odroid_N2L.img.gz](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-S922X.aarch64-${{ steps.version.outputs.version }}-Odroid_N2L.img.gz)|[documentation](/documentation/PER_DEVICE_DOCUMENTATION/S922X/)| |**Orange Pi 5, and Indiedroid Nova**|[JELOS-RK3588.aarch64-${{ steps.version.outputs.version }}.img.gz](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RK3588.aarch64-${{ steps.version.outputs.version }}.img.gz)|[documentation](/documentation/PER_DEVICE_DOCUMENTATION/RK3588/)| - |**Powkiddy x55**|[JELOS-RK3566-X55.aarch64-${{ steps.version.outputs.version }}.img.gz](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RK3566-X55.aarch64-${{ steps.version.outputs.version }}.img.gz)|[documentation](/documentation/PER_DEVICE_DOCUMENTATION/RK3566-X55/)| + + > Note: Anbernic RG353P/M/V/VS, RG503, Powkiddy RK2023, RGB30, RGB10 Max 3, and x55 releases are paused at version [20240206](https://github.com/JustEnoughLinuxOS/distribution/releases/tag/20240206) while mainline integration is worked. New releases for these devices will return soon. ## Upgrading * Download and install the update online via the System Settings menu. @@ -121,12 +121,12 @@ jobs: |**Device/Platform**|**Download Package**| |----|----| |**Anbernic RG351P/M, Game Console R33S,ODROID Go Advance, ODROID Go Super, Magicx XU10**|[JELOS-RK3326.aarch64-${{ steps.version.outputs.version }}.tar](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RK3326.aarch64-${{ steps.version.outputs.version }}.tar)| - |**Anbernic RG353P/M/V/VS, RG503, Powkiddy RK2023, RGB30, RGB10 Max 3**|[JELOS-RK3566.aarch64-${{ steps.version.outputs.version }}.tar](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RK3566.aarch64-${{ steps.version.outputs.version }}.tar)| |**Anbernic RG552**|[JELOS-RK3399.aarch64-${{ steps.version.outputs.version }}.tar](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RK3399.aarch64-${{ steps.version.outputs.version }}.tar)| |****Atari VCS, AOKZOE, Ayaneo, Ayn, GPD, and other x86_64 devices****|[JELOS-AMD64.x86_64-${{ steps.version.outputs.version }}.tar](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-AMD64.x86_64-${{ steps.version.outputs.version }}.tar)| |**Hardkernel ODROID Go Ultra, N2/N2+/N2L, Powkiddy RGB10 Max 3 Pro**|[JELOS-S922X.aarch64-${{ steps.version.outputs.version }}.tar](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-S922X.aarch64-${{ steps.version.outputs.version }}.tar)| |**Orange Pi 5, and Indiedroid Nova**|[JELOS-RK3588.aarch64-${{ steps.version.outputs.version }}.tar](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RK3588.aarch64-${{ steps.version.outputs.version }}.tar)| - |**Powkiddy x55**|[JELOS-RK3566-X55.aarch64-${{ steps.version.outputs.version }}.tar](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RK3566-X55.aarch64-${{ steps.version.outputs.version }}.tar)| + + > Note: Anbernic RG353P/M/V/VS, RG503, Powkiddy RK2023, RGB30, RGB10 Max 3, and x55 releases are paused at version [20240206](https://github.com/JustEnoughLinuxOS/distribution/releases/tag/20240206) while mainline integration is worked. New releases for these devices will return soon. ## Documentation From bf2e0e36d98d55ba026d01bb0a98e4c510cbda7d Mon Sep 17 00:00:00 2001 From: fewtarius Date: Mon, 12 Feb 2024 00:31:05 +0000 Subject: [PATCH 163/167] Add note of support for Game Console R35S and R36S. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d62a6ae65f..10181e6d58 100644 --- a/README.md +++ b/README.md @@ -118,7 +118,7 @@ JELOS supports a variety of ARM and Intel/AMD based devices. | AYANEO | [AYANEO 2S](https://jelos.org/devices/ayaneo/ayaneo-2) | Amd Ryzen 7 7840U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | | Ayn | [Loki Zero](https://jelos.org/devices/ayn/loki-zero) | AMD Athlon Silver 3050e (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | | Ayn | [Loki Max](https://jelos.org/devices/ayn/loki-max) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | -| Game Console | [R33S](https://jelos.org/gameconsole/r33s) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | +| Game Console | [R33S, R35S, R36S](https://jelos.org/gameconsole/r33s-r35s-r36s) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | | GPD | [Win 4](https://jelos.org/devices/gpd/win4) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | | GPD | [Win Max 2 (2022)](https://jelos.org/devices/gpd/win-max-2) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux| Radeonsi | Weston + Emulation Station | | Hardkernel | [Odroid Go Advance](https://jelos.org/devices/hardkernel/odroid-go-advance) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | From b5608728d67f15f9cf3886f53a50744196bfd711 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Mon, 12 Feb 2024 00:35:58 +0000 Subject: [PATCH 164/167] Fix Game Console document path. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 10181e6d58..a0438d0304 100644 --- a/README.md +++ b/README.md @@ -118,7 +118,7 @@ JELOS supports a variety of ARM and Intel/AMD based devices. | AYANEO | [AYANEO 2S](https://jelos.org/devices/ayaneo/ayaneo-2) | Amd Ryzen 7 7840U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | | Ayn | [Loki Zero](https://jelos.org/devices/ayn/loki-zero) | AMD Athlon Silver 3050e (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | | Ayn | [Loki Max](https://jelos.org/devices/ayn/loki-max) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | -| Game Console | [R33S, R35S, R36S](https://jelos.org/gameconsole/r33s-r35s-r36s) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | +| Game Console | [R33S, R35S, R36S](https://jelos.org/unbranded/r33s-r35s-r36s) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | | GPD | [Win 4](https://jelos.org/devices/gpd/win4) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | | GPD | [Win Max 2 (2022)](https://jelos.org/devices/gpd/win-max-2) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux| Radeonsi | Weston + Emulation Station | | Hardkernel | [Odroid Go Advance](https://jelos.org/devices/hardkernel/odroid-go-advance) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | From f3863814d450addb3e37e3b08fd75b354ad6c4d0 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Mon, 12 Feb 2024 00:42:08 +0000 Subject: [PATCH 165/167] Point document link to R33S/R35S/R36S. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a0438d0304..eeb9bec005 100644 --- a/README.md +++ b/README.md @@ -118,7 +118,7 @@ JELOS supports a variety of ARM and Intel/AMD based devices. | AYANEO | [AYANEO 2S](https://jelos.org/devices/ayaneo/ayaneo-2) | Amd Ryzen 7 7840U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | | Ayn | [Loki Zero](https://jelos.org/devices/ayn/loki-zero) | AMD Athlon Silver 3050e (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | | Ayn | [Loki Max](https://jelos.org/devices/ayn/loki-max) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | -| Game Console | [R33S, R35S, R36S](https://jelos.org/unbranded/r33s-r35s-r36s) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | +| Game Console | [R33S, R35S, R36S](https://jelos.org/unbranded/game-console-r33s-r35s-r36s) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | | GPD | [Win 4](https://jelos.org/devices/gpd/win4) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | | GPD | [Win Max 2 (2022)](https://jelos.org/devices/gpd/win-max-2) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux| Radeonsi | Weston + Emulation Station | | Hardkernel | [Odroid Go Advance](https://jelos.org/devices/hardkernel/odroid-go-advance) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | From 666098e52b68992d221cc35aa71c326e6c34c47a Mon Sep 17 00:00:00 2001 From: fewtarius Date: Mon, 12 Feb 2024 00:45:07 +0000 Subject: [PATCH 166/167] Set the correct path to R33S/R35S/R36S. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index eeb9bec005..553d22c57a 100644 --- a/README.md +++ b/README.md @@ -118,7 +118,7 @@ JELOS supports a variety of ARM and Intel/AMD based devices. | AYANEO | [AYANEO 2S](https://jelos.org/devices/ayaneo/ayaneo-2) | Amd Ryzen 7 7840U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | | Ayn | [Loki Zero](https://jelos.org/devices/ayn/loki-zero) | AMD Athlon Silver 3050e (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | | Ayn | [Loki Max](https://jelos.org/devices/ayn/loki-max) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | -| Game Console | [R33S, R35S, R36S](https://jelos.org/unbranded/game-console-r33s-r35s-r36s) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | +| Game Console | [R33S, R35S, R36S](https://jelos.org/devices/unbranded/game-console-r33s-r35s-r36s) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | | GPD | [Win 4](https://jelos.org/devices/gpd/win4) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | | GPD | [Win Max 2 (2022)](https://jelos.org/devices/gpd/win-max-2) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux| Radeonsi | Weston + Emulation Station | | Hardkernel | [Odroid Go Advance](https://jelos.org/devices/hardkernel/odroid-go-advance) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | From 749930f2320f97cfe02102c6128e90d7f1512a80 Mon Sep 17 00:00:00 2001 From: fewtarius Date: Mon, 12 Feb 2024 00:54:15 +0000 Subject: [PATCH 167/167] Split R33S and R35S/R36S due to different controls. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 553d22c57a..c8e49a965e 100644 --- a/README.md +++ b/README.md @@ -118,7 +118,8 @@ JELOS supports a variety of ARM and Intel/AMD based devices. | AYANEO | [AYANEO 2S](https://jelos.org/devices/ayaneo/ayaneo-2) | Amd Ryzen 7 7840U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | | Ayn | [Loki Zero](https://jelos.org/devices/ayn/loki-zero) | AMD Athlon Silver 3050e (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | | Ayn | [Loki Max](https://jelos.org/devices/ayn/loki-max) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | -| Game Console | [R33S, R35S, R36S](https://jelos.org/devices/unbranded/game-console-r33s-r35s-r36s) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | +| Game Console | [R33S](https://jelos.org/devices/unbranded/game-console-r33s) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | +| Game Console | [R35S, R36S](https://jelos.org/devices/unbranded/game-console-r35s-r36s) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | | GPD | [Win 4](https://jelos.org/devices/gpd/win4) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station | | GPD | [Win Max 2 (2022)](https://jelos.org/devices/gpd/win-max-2) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux| Radeonsi | Weston + Emulation Station | | Hardkernel | [Odroid Go Advance](https://jelos.org/devices/hardkernel/odroid-go-advance) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station |