diff --git a/builds/any/rootfs/buster/common/amd64-base-packages.yml b/builds/any/rootfs/buster/common/amd64-base-packages.yml
index 19e080671c..81be9ada25 100644
--- a/builds/any/rootfs/buster/common/amd64-base-packages.yml
+++ b/builds/any/rootfs/buster/common/amd64-base-packages.yml
@@ -12,6 +12,7 @@
- onl-kernel-4.14-lts-x86-64-all-modules
- onl-kernel-4.19-lts-x86-64-all-modules
- onl-kernel-5.4-lts-x86-64-all-modules
+- onl-kernel-6.1-lts-x86-64-all-modules
- efibootmgr
- gdisk
- acpid
diff --git a/builds/any/rootfs/jessie/common/amd64-base-packages.yml b/builds/any/rootfs/jessie/common/amd64-base-packages.yml
index 141e549b3e..f8b460066e 100644
--- a/builds/any/rootfs/jessie/common/amd64-base-packages.yml
+++ b/builds/any/rootfs/jessie/common/amd64-base-packages.yml
@@ -15,5 +15,6 @@
- onl-kernel-4.14-lts-x86-64-all-modules
- onl-kernel-4.19-lts-x86-64-all-modules
- onl-kernel-5.4-lts-x86-64-all-modules
+- onl-kernel-6.1-lts-x86-64-all-modules
- efibootmgr
- gdisk
diff --git a/builds/any/rootfs/stretch/common/amd64-base-packages.yml b/builds/any/rootfs/stretch/common/amd64-base-packages.yml
index b679997994..873d091cfb 100644
--- a/builds/any/rootfs/stretch/common/amd64-base-packages.yml
+++ b/builds/any/rootfs/stretch/common/amd64-base-packages.yml
@@ -13,6 +13,7 @@
- onl-kernel-4.14-lts-x86-64-all-modules
- onl-kernel-4.19-lts-x86-64-all-modules
- onl-kernel-5.4-lts-x86-64-all-modules
+- onl-kernel-6.1-lts-x86-64-all-modules
- efibootmgr
- gdisk
- acpid
diff --git a/packages/base/all/vendor-config-onl/src/lib/platform-config-defaults-x86-64.yml b/packages/base/all/vendor-config-onl/src/lib/platform-config-defaults-x86-64.yml
index bc3731873c..f221b42697 100644
--- a/packages/base/all/vendor-config-onl/src/lib/platform-config-defaults-x86-64.yml
+++ b/packages/base/all/vendor-config-onl/src/lib/platform-config-defaults-x86-64.yml
@@ -44,6 +44,10 @@ default:
=: kernel-5.4-lts-x86_64-all
package: onl-kernel-5.4-lts-x86-64-all:amd64
+ kernel-6.1: &kernel-6-1
+ =: kernel-6.1-lts-x86_64-all
+ package: onl-kernel-6.1-lts-x86-64-all:amd64
+
# pick one of the above kernels
kernel:
<<: *kernel-3-16
diff --git a/packages/base/amd64/kernels/kernel-6.1-lts-x86-64-all/Makefile b/packages/base/amd64/kernels/kernel-6.1-lts-x86-64-all/Makefile
new file mode 100644
index 0000000000..003238cf6d
--- /dev/null
+++ b/packages/base/amd64/kernels/kernel-6.1-lts-x86-64-all/Makefile
@@ -0,0 +1 @@
+include $(ONL)/make/pkg.mk
\ No newline at end of file
diff --git a/packages/base/amd64/kernels/kernel-6.1-lts-x86-64-all/PKG.yml b/packages/base/amd64/kernels/kernel-6.1-lts-x86-64-all/PKG.yml
new file mode 100644
index 0000000000..45d71e23eb
--- /dev/null
+++ b/packages/base/amd64/kernels/kernel-6.1-lts-x86-64-all/PKG.yml
@@ -0,0 +1 @@
+!include $ONL/packages/base/any/kernels/lts/APKG.yml VERSION=6.1 ARCH=amd64 CONFIG=x86-64-all
diff --git a/packages/base/amd64/kernels/kernel-6.1-lts-x86-64-all/builds/.gitignore b/packages/base/amd64/kernels/kernel-6.1-lts-x86-64-all/builds/.gitignore
new file mode 100644
index 0000000000..73d2c193c4
--- /dev/null
+++ b/packages/base/amd64/kernels/kernel-6.1-lts-x86-64-all/builds/.gitignore
@@ -0,0 +1,3 @@
+linux-*
+kernel-*
+lib
diff --git a/packages/base/amd64/kernels/kernel-6.1-lts-x86-64-all/builds/Makefile b/packages/base/amd64/kernels/kernel-6.1-lts-x86-64-all/builds/Makefile
new file mode 100644
index 0000000000..b4ff938613
--- /dev/null
+++ b/packages/base/amd64/kernels/kernel-6.1-lts-x86-64-all/builds/Makefile
@@ -0,0 +1,8 @@
+KERNEL_BUILD_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
+KERNEL_ARCH := x86_64
+KERNEL_LTS_VERSION := 6.1
+KERNEL_CONFIG := x86_64-all
+include $(ONL)/packages/base/any/kernels/lts/builds/Makefile
+
+setup::
+ dpkg -l libelf-dev > /dev/null 2>&1 || sudo apt-get install libelf-dev
diff --git a/packages/base/amd64/upgrade/PKG.yml b/packages/base/amd64/upgrade/PKG.yml
index 9ec35a9859..52da24f797 100644
--- a/packages/base/amd64/upgrade/PKG.yml
+++ b/packages/base/amd64/upgrade/PKG.yml
@@ -5,6 +5,7 @@ prerequisites:
- onl-kernel-4.14-lts-x86-64-all:amd64
- onl-kernel-4.19-lts-x86-64-all:amd64
- onl-kernel-5.4-lts-x86-64-all:amd64
+ - onl-kernel-6.1-lts-x86-64-all:amd64
- onl-loader-initrd:amd64
stage: 3
diff --git a/packages/base/amd64/upgrade/builds/Makefile b/packages/base/amd64/upgrade/builds/Makefile
index 9b4b381a59..680fe0dd95 100644
--- a/packages/base/amd64/upgrade/builds/Makefile
+++ b/packages/base/amd64/upgrade/builds/Makefile
@@ -6,6 +6,7 @@ $(eval $(call onlpm_find_file_add,X,onl-kernel-4.9-lts-x86-64-all:amd64,kernel-4
$(eval $(call onlpm_find_file_add,X,onl-kernel-4.14-lts-x86-64-all:amd64,kernel-4.14-lts-x86_64-all,FILES))
$(eval $(call onlpm_find_file_add,X,onl-kernel-4.19-lts-x86-64-all:amd64,kernel-4.19-lts-x86_64-all,FILES))
$(eval $(call onlpm_find_file_add,X,onl-kernel-5.4-lts-x86-64-all:amd64,kernel-5.4-lts-x86_64-all,FILES))
+$(eval $(call onlpm_find_file_add,X,onl-kernel-6.1-lts-x86-64-all:amd64,kernel-6.1-lts-x86_64-all,FILES))
# Loader initrd and manifest -> $FILES
$(eval $(call onlpm_find_file_add,X,onl-loader-initrd:amd64,onl-loader-initrd-amd64.cpio.gz,FILES))
diff --git a/packages/base/any/kernels/6.1-lts/configs/x86_64-all/.gitignore b/packages/base/any/kernels/6.1-lts/configs/x86_64-all/.gitignore
new file mode 100644
index 0000000000..7e3741768d
--- /dev/null
+++ b/packages/base/any/kernels/6.1-lts/configs/x86_64-all/.gitignore
@@ -0,0 +1,3 @@
+kernel-*
+linux-*
+lib
diff --git a/packages/base/any/kernels/6.1-lts/configs/x86_64-all/Makefile b/packages/base/any/kernels/6.1-lts/configs/x86_64-all/Makefile
new file mode 100644
index 0000000000..5ffd7a77a8
--- /dev/null
+++ b/packages/base/any/kernels/6.1-lts/configs/x86_64-all/Makefile
@@ -0,0 +1,37 @@
+############################################################
+#
+#
+# Copyright 2015 Big Switch Networks, Inc.
+#
+# Licensed under the Eclipse Public License, Version 1.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.eclipse.org/legal/epl-v10.html
+#
+# 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.
+#
+#
+############################################################
+THIS_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
+include $(ONL)/make/config.mk
+
+export ARCH := x86_64
+ifndef K_TARGET_DIR
+K_TARGET_DIR := $(THIS_DIR)
+endif
+
+include ../../kconfig.mk
+K_CONFIG := x86_64-all.config
+K_BUILD_TARGET := bzImage
+K_COPY_SRC := arch/x86/boot/bzImage
+ifndef K_COPY_DST
+K_COPY_DST := kernel-6.1-lts-x86_64-all
+endif
+
+include $(ONL)/make/kbuild.mk
diff --git a/packages/base/any/kernels/6.1-lts/configs/x86_64-all/x86_64-all.config b/packages/base/any/kernels/6.1-lts/configs/x86_64-all/x86_64-all.config
new file mode 100644
index 0000000000..f9f2567199
--- /dev/null
+++ b/packages/base/any/kernels/6.1-lts/configs/x86_64-all/x86_64-all.config
@@ -0,0 +1,5346 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Linux/x86_64 6.1.107 Kernel Configuration
+#
+
+#
+# General setup
+#
+CONFIG_INIT_ENV_ARG_LIMIT=32
+# CONFIG_COMPILE_TEST is not set
+# CONFIG_WERROR is not set
+CONFIG_LOCALVERSION="-OpenNetworkLinux"
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_BUILD_SALT=""
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_BZIP2=y
+CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_XZ=y
+CONFIG_HAVE_KERNEL_LZO=y
+CONFIG_HAVE_KERNEL_LZ4=y
+CONFIG_HAVE_KERNEL_ZSTD=y
+CONFIG_KERNEL_GZIP=y
+# CONFIG_KERNEL_BZIP2 is not set
+# CONFIG_KERNEL_LZMA is not set
+# CONFIG_KERNEL_XZ is not set
+# CONFIG_KERNEL_LZO is not set
+# CONFIG_KERNEL_LZ4 is not set
+# CONFIG_KERNEL_ZSTD is not set
+CONFIG_DEFAULT_INIT=""
+CONFIG_DEFAULT_HOSTNAME="(none)"
+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=y
+CONFIG_AUDIT=y
+CONFIG_HAVE_ARCH_AUDITSYSCALL=y
+CONFIG_AUDITSYSCALL=y
+
+#
+# IRQ subsystem
+#
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
+CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_GENERIC_IRQ_MIGRATION=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_GENERIC_MSI_IRQ=y
+CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
+CONFIG_IRQ_MSI_IOMMU=y
+CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR=y
+CONFIG_GENERIC_IRQ_RESERVATION_MODE=y
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_SPARSE_IRQ=y
+# CONFIG_GENERIC_IRQ_DEBUGFS is not set
+# end of IRQ subsystem
+
+CONFIG_CLOCKSOURCE_WATCHDOG=y
+CONFIG_ARCH_CLOCKSOURCE_INIT=y
+CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
+CONFIG_GENERIC_CMOS_UPDATE=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=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_CLOCKSOURCE_WATCHDOG_MAX_SKEW_US=100
+# 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
+# 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_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
+# CONFIG_PSI is not set
+# end of CPU/Task time and stats accounting
+
+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
+# 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_HAVE_UNSTABLE_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_GCC10_NO_ARRAY_BOUNDS=y
+CONFIG_ARCH_SUPPORTS_INT128=y
+# CONFIG_NUMA_BALANCING is not set
+CONFIG_CGROUPS=y
+# CONFIG_CGROUP_FAVOR_DYNMODS is not set
+# CONFIG_MEMCG is not set
+# CONFIG_BLK_CGROUP is not set
+CONFIG_CGROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+# CONFIG_CFS_BANDWIDTH is not set
+# CONFIG_RT_GROUP_SCHED is not set
+# CONFIG_CGROUP_PIDS is not set
+# CONFIG_CGROUP_RDMA is not set
+CONFIG_CGROUP_FREEZER=y
+# CONFIG_CGROUP_HUGETLB is not set
+CONFIG_CPUSETS=y
+CONFIG_PROC_PID_CPUSET=y
+# CONFIG_CGROUP_DEVICE is not set
+CONFIG_CGROUP_CPUACCT=y
+# CONFIG_CGROUP_PERF is not set
+# CONFIG_CGROUP_MISC is not set
+# CONFIG_CGROUP_DEBUG is not set
+CONFIG_NAMESPACES=y
+CONFIG_UTS_NS=y
+# CONFIG_TIME_NS is not set
+CONFIG_IPC_NS=y
+# CONFIG_USER_NS is not set
+CONFIG_PID_NS=y
+CONFIG_NET_NS=y
+# CONFIG_CHECKPOINT_RESTORE is not set
+# CONFIG_SCHED_AUTOGROUP is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+CONFIG_RELAY=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+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 is not set
+# CONFIG_BOOT_CONFIG is not set
+# CONFIG_INITRAMFS_PRESERVE_MTIME is not set
+CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_LD_ORPHAN_WARN=y
+CONFIG_SYSCTL=y
+CONFIG_HAVE_UID16=y
+CONFIG_SYSCTL_EXCEPTION_TRACE=y
+CONFIG_HAVE_PCSPKR_PLATFORM=y
+# CONFIG_EXPERT is not set
+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_PCSPKR_PLATFORM=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_ALL is not set
+CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y
+CONFIG_KALLSYMS_BASE_RELATIVE=y
+CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
+CONFIG_KCMP=y
+CONFIG_RSEQ=y
+# CONFIG_EMBEDDED is not set
+CONFIG_HAVE_PERF_EVENTS=y
+CONFIG_GUEST_PERF_EVENTS=y
+
+#
+# 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
+CONFIG_TRACEPOINTS=y
+# end of General setup
+
+CONFIG_64BIT=y
+CONFIG_X86_64=y
+CONFIG_X86=y
+CONFIG_INSTRUCTION_DECODER=y
+CONFIG_OUTPUT_FORMAT="elf64-x86-64"
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_MMU=y
+CONFIG_ARCH_MMAP_RND_BITS_MIN=28
+CONFIG_ARCH_MMAP_RND_BITS_MAX=32
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_HAS_CPU_RELAX=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_NR_GPIO=1024
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_AUDIT_ARCH=y
+CONFIG_HAVE_INTEL_TXT=y
+CONFIG_X86_64_SMP=y
+CONFIG_ARCH_SUPPORTS_UPROBES=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_PGTABLE_LEVELS=4
+CONFIG_CC_HAS_SANE_STACKPROTECTOR=y
+
+#
+# Processor type and features
+#
+CONFIG_SMP=y
+CONFIG_X86_FEATURE_NAMES=y
+CONFIG_X86_MPPARSE=y
+# CONFIG_GOLDFISH is not set
+# CONFIG_X86_CPU_RESCTRL is not set
+CONFIG_X86_EXTENDED_PLATFORM=y
+# CONFIG_X86_VSMP is not set
+# CONFIG_X86_GOLDFISH is not set
+# CONFIG_X86_INTEL_MID is not set
+# CONFIG_X86_INTEL_LPSS is not set
+# CONFIG_X86_AMD_PLATFORM_DEVICE is not set
+CONFIG_IOSF_MBI=y
+# CONFIG_IOSF_MBI_DEBUG is not set
+CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
+CONFIG_SCHED_OMIT_FRAME_POINTER=y
+# CONFIG_HYPERVISOR_GUEST is not set
+# CONFIG_MK8 is not set
+# CONFIG_MPSC is not set
+# CONFIG_MCORE2 is not set
+# CONFIG_MATOM is not set
+CONFIG_GENERIC_CPU=y
+CONFIG_X86_INTERNODE_CACHE_SHIFT=6
+CONFIG_X86_L1_CACHE_SHIFT=6
+CONFIG_X86_TSC=y
+CONFIG_X86_CMPXCHG64=y
+CONFIG_X86_CMOV=y
+CONFIG_X86_MINIMUM_CPU_FAMILY=64
+CONFIG_X86_DEBUGCTLMSR=y
+CONFIG_IA32_FEAT_CTL=y
+CONFIG_X86_VMX_FEATURE_NAMES=y
+CONFIG_CPU_SUP_INTEL=y
+CONFIG_CPU_SUP_AMD=y
+CONFIG_CPU_SUP_HYGON=y
+CONFIG_CPU_SUP_CENTAUR=y
+CONFIG_CPU_SUP_ZHAOXIN=y
+CONFIG_HPET_TIMER=y
+CONFIG_HPET_EMULATE_RTC=y
+CONFIG_DMI=y
+# CONFIG_GART_IOMMU is not set
+CONFIG_BOOT_VESA_SUPPORT=y
+# CONFIG_MAXSMP is not set
+CONFIG_NR_CPUS_RANGE_BEGIN=2
+CONFIG_NR_CPUS_RANGE_END=512
+CONFIG_NR_CPUS_DEFAULT=64
+CONFIG_NR_CPUS=64
+# CONFIG_SCHED_CLUSTER is not set
+CONFIG_SCHED_SMT=y
+CONFIG_SCHED_MC=y
+CONFIG_SCHED_MC_PRIO=y
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_X86_IO_APIC=y
+CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
+CONFIG_X86_MCE=y
+# CONFIG_X86_MCELOG_LEGACY is not set
+CONFIG_X86_MCE_INTEL=y
+CONFIG_X86_MCE_AMD=y
+CONFIG_X86_MCE_THRESHOLD=y
+# CONFIG_X86_MCE_INJECT is not set
+
+#
+# Performance monitoring
+#
+CONFIG_PERF_EVENTS_INTEL_UNCORE=y
+CONFIG_PERF_EVENTS_INTEL_RAPL=y
+CONFIG_PERF_EVENTS_INTEL_CSTATE=y
+# CONFIG_PERF_EVENTS_AMD_POWER is not set
+# CONFIG_PERF_EVENTS_AMD_UNCORE is not set
+# CONFIG_PERF_EVENTS_AMD_BRS is not set
+# end of Performance monitoring
+
+CONFIG_X86_16BIT=y
+CONFIG_X86_ESPFIX64=y
+CONFIG_X86_VSYSCALL_EMULATION=y
+# CONFIG_X86_IOPL_IOPERM is not set
+CONFIG_MICROCODE=y
+CONFIG_MICROCODE_INTEL=y
+CONFIG_MICROCODE_AMD=y
+# CONFIG_MICROCODE_LATE_LOADING is not set
+CONFIG_X86_MSR=y
+CONFIG_X86_CPUID=y
+# CONFIG_X86_5LEVEL is not set
+CONFIG_X86_DIRECT_GBPAGES=y
+# CONFIG_X86_CPA_STATISTICS is not set
+# CONFIG_AMD_MEM_ENCRYPT is not set
+CONFIG_NUMA=y
+CONFIG_AMD_NUMA=y
+CONFIG_X86_64_ACPI_NUMA=y
+# CONFIG_NUMA_EMU is not set
+CONFIG_NODES_SHIFT=6
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_DEFAULT=y
+CONFIG_ARCH_PROC_KCORE_TEXT=y
+CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
+# CONFIG_X86_PMEM_LEGACY is not set
+CONFIG_X86_CHECK_BIOS_CORRUPTION=y
+CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
+CONFIG_MTRR=y
+# CONFIG_MTRR_SANITIZER is not set
+CONFIG_X86_PAT=y
+CONFIG_ARCH_USES_PG_UNCACHED=y
+CONFIG_X86_UMIP=y
+CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y
+CONFIG_X86_INTEL_TSX_MODE_OFF=y
+# CONFIG_X86_INTEL_TSX_MODE_ON is not set
+# CONFIG_X86_INTEL_TSX_MODE_AUTO is not set
+CONFIG_EFI=y
+CONFIG_EFI_STUB=y
+# CONFIG_EFI_HANDOVER_PROTOCOL is not set
+CONFIG_EFI_MIXED=y
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+CONFIG_HZ_1000=y
+CONFIG_HZ=1000
+CONFIG_SCHED_HRTICK=y
+CONFIG_KEXEC=y
+# CONFIG_KEXEC_FILE is not set
+CONFIG_CRASH_DUMP=y
+# CONFIG_KEXEC_JUMP is not set
+CONFIG_PHYSICAL_START=0x1000000
+CONFIG_RELOCATABLE=y
+CONFIG_RANDOMIZE_BASE=y
+CONFIG_X86_NEED_RELOCS=y
+CONFIG_PHYSICAL_ALIGN=0x200000
+CONFIG_DYNAMIC_MEMORY_LAYOUT=y
+CONFIG_RANDOMIZE_MEMORY=y
+CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0x0
+CONFIG_HOTPLUG_CPU=y
+# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
+# CONFIG_DEBUG_HOTPLUG_CPU0 is not set
+# CONFIG_COMPAT_VDSO is not set
+CONFIG_LEGACY_VSYSCALL_XONLY=y
+# CONFIG_LEGACY_VSYSCALL_NONE is not set
+# CONFIG_CMDLINE_BOOL is not set
+CONFIG_MODIFY_LDT_SYSCALL=y
+# CONFIG_STRICT_SIGALTSTACK_SIZE is not set
+CONFIG_HAVE_LIVEPATCH=y
+# end of Processor type and features
+
+CONFIG_CC_HAS_RETURN_THUNK=y
+# CONFIG_CPU_MITIGATIONS is not set
+CONFIG_ARCH_HAS_ADD_PAGES=y
+CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
+
+#
+# Power management and ACPI options
+#
+CONFIG_ARCH_HIBERNATION_HEADER=y
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_HIBERNATE_CALLBACKS=y
+CONFIG_HIBERNATION=y
+# CONFIG_HIBERNATION_SNAPSHOT_DEV is not set
+CONFIG_PM_STD_PARTITION=""
+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
+# CONFIG_PM_ADVANCED_DEBUG is not set
+# CONFIG_PM_TEST_SUSPEND is not set
+CONFIG_PM_SLEEP_DEBUG=y
+CONFIG_PM_TRACE=y
+CONFIG_PM_TRACE_RTC=y
+CONFIG_PM_CLK=y
+# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
+# CONFIG_ENERGY_MODEL is not set
+CONFIG_ARCH_SUPPORTS_ACPI=y
+CONFIG_ACPI=y
+CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y
+CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
+CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y
+# CONFIG_ACPI_DEBUGGER is not set
+CONFIG_ACPI_SPCR_TABLE=y
+# CONFIG_ACPI_FPDT is not set
+CONFIG_ACPI_LPIT=y
+CONFIG_ACPI_SLEEP=y
+CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y
+# CONFIG_ACPI_EC_DEBUGFS is not set
+CONFIG_ACPI_AC=y
+CONFIG_ACPI_BATTERY=y
+CONFIG_ACPI_BUTTON=y
+CONFIG_ACPI_VIDEO=y
+CONFIG_ACPI_FAN=y
+# CONFIG_ACPI_TAD is not set
+CONFIG_ACPI_DOCK=y
+CONFIG_ACPI_CPU_FREQ_PSS=y
+CONFIG_ACPI_PROCESSOR_CSTATE=y
+CONFIG_ACPI_PROCESSOR_IDLE=y
+CONFIG_ACPI_CPPC_LIB=y
+CONFIG_ACPI_PROCESSOR=y
+CONFIG_ACPI_IPMI=y
+CONFIG_ACPI_HOTPLUG_CPU=y
+# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set
+CONFIG_ACPI_THERMAL=y
+CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y
+CONFIG_ACPI_TABLE_UPGRADE=y
+# CONFIG_ACPI_DEBUG is not set
+# CONFIG_ACPI_PCI_SLOT is not set
+CONFIG_ACPI_CONTAINER=y
+CONFIG_ACPI_HOTPLUG_IOAPIC=y
+# CONFIG_ACPI_SBS is not set
+# CONFIG_ACPI_HED is not set
+# CONFIG_ACPI_CUSTOM_METHOD is not set
+CONFIG_ACPI_BGRT=y
+# CONFIG_ACPI_NFIT is not set
+CONFIG_ACPI_NUMA=y
+# CONFIG_ACPI_HMAT is not set
+CONFIG_HAVE_ACPI_APEI=y
+CONFIG_HAVE_ACPI_APEI_NMI=y
+# CONFIG_ACPI_APEI is not set
+# CONFIG_ACPI_DPTF is not set
+# CONFIG_ACPI_EXTLOG is not set
+# CONFIG_ACPI_CONFIGFS is not set
+# CONFIG_ACPI_PFRUT is not set
+# CONFIG_ACPI_PCC is not set
+# CONFIG_PMIC_OPREGION is not set
+# CONFIG_ACPI_PRMT is not set
+CONFIG_X86_PM_TIMER=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_DEFAULT_GOV_PERFORMANCE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+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_X86_INTEL_PSTATE=y
+# CONFIG_X86_PCC_CPUFREQ is not set
+# CONFIG_X86_AMD_PSTATE is not set
+# CONFIG_X86_AMD_PSTATE_UT is not set
+CONFIG_X86_ACPI_CPUFREQ=y
+CONFIG_X86_ACPI_CPUFREQ_CPB=y
+# CONFIG_X86_POWERNOW_K8 is not set
+# CONFIG_X86_AMD_FREQ_SENSITIVITY is not set
+# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
+# CONFIG_X86_P4_CLOCKMOD is not set
+
+#
+# shared options
+#
+# end of CPU Frequency scaling
+
+#
+# CPU Idle
+#
+CONFIG_CPU_IDLE=y
+# CONFIG_CPU_IDLE_GOV_LADDER is not set
+CONFIG_CPU_IDLE_GOV_MENU=y
+# CONFIG_CPU_IDLE_GOV_TEO is not set
+# end of CPU Idle
+
+# CONFIG_INTEL_IDLE is not set
+# end of Power management and ACPI options
+
+#
+# Bus options (PCI etc.)
+#
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+CONFIG_MMCONF_FAM10H=y
+CONFIG_ISA_DMA_API=y
+CONFIG_AMD_NB=y
+# end of Bus options (PCI etc.)
+
+#
+# Binary Emulations
+#
+CONFIG_IA32_EMULATION=y
+# CONFIG_X86_X32_ABI is not set
+CONFIG_COMPAT_32=y
+CONFIG_COMPAT=y
+CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
+# end of Binary Emulations
+
+CONFIG_HAVE_KVM=y
+CONFIG_HAVE_KVM_PFNCACHE=y
+CONFIG_HAVE_KVM_IRQCHIP=y
+CONFIG_HAVE_KVM_IRQFD=y
+CONFIG_HAVE_KVM_IRQ_ROUTING=y
+CONFIG_HAVE_KVM_DIRTY_RING=y
+CONFIG_HAVE_KVM_DIRTY_RING_TSO=y
+CONFIG_HAVE_KVM_DIRTY_RING_ACQ_REL=y
+CONFIG_HAVE_KVM_EVENTFD=y
+CONFIG_KVM_MMIO=y
+CONFIG_KVM_ASYNC_PF=y
+CONFIG_HAVE_KVM_MSI=y
+CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
+CONFIG_KVM_VFIO=y
+CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
+CONFIG_KVM_COMPAT=y
+CONFIG_HAVE_KVM_IRQ_BYPASS=y
+CONFIG_HAVE_KVM_NO_POLL=y
+CONFIG_KVM_XFER_TO_GUEST_WORK=y
+CONFIG_HAVE_KVM_PM_NOTIFIER=y
+CONFIG_VIRTUALIZATION=y
+CONFIG_KVM=y
+CONFIG_KVM_INTEL=y
+CONFIG_KVM_AMD=y
+# CONFIG_KVM_XEN is not set
+CONFIG_AS_AVX512=y
+CONFIG_AS_SHA1_NI=y
+CONFIG_AS_SHA256_NI=y
+CONFIG_ARCH_CONFIGURES_CPU_MITIGATIONS=y
+
+#
+# General architecture-dependent options
+#
+CONFIG_CRASH_CORE=y
+CONFIG_KEXEC_CORE=y
+CONFIG_HOTPLUG_SMT=y
+CONFIG_GENERIC_ENTRY=y
+CONFIG_KPROBES=y
+CONFIG_JUMP_LABEL=y
+# CONFIG_STATIC_KEYS_SELFTEST is not set
+# CONFIG_STATIC_CALL_SELFTEST is not set
+CONFIG_OPTPROBES=y
+CONFIG_UPROBES=y
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_ARCH_USE_BUILTIN_BSWAP=y
+CONFIG_KRETPROBES=y
+CONFIG_KRETPROBE_ON_RETHOOK=y
+CONFIG_USER_RETURN_NOTIFIER=y
+CONFIG_HAVE_IOREMAP_PROT=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_OPTPROBES=y
+CONFIG_HAVE_KPROBES_ON_FTRACE=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_ARCH_HAS_FORTIFY_SOURCE=y
+CONFIG_ARCH_HAS_SET_MEMORY=y
+CONFIG_ARCH_HAS_SET_DIRECT_MAP=y
+CONFIG_ARCH_HAS_CPU_FINALIZE_INIT=y
+CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
+CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=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_RUST=y
+CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y
+CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
+CONFIG_HAVE_USER_RETURN_NOTIFIER=y
+CONFIG_HAVE_PERF_EVENTS_NMI=y
+CONFIG_HAVE_HARDLOCKUP_DETECTOR_PERF=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_MERGE_VMAS=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_ARCH_WANT_OLD_COMPAT_IPC=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_LTO_CLANG=y
+CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y
+CONFIG_LTO_NONE=y
+CONFIG_ARCH_SUPPORTS_CFI_CLANG=y
+CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y
+CONFIG_HAVE_CONTEXT_TRACKING_USER=y
+CONFIG_HAVE_CONTEXT_TRACKING_USER_OFFSTACK=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_TRANSPARENT_HUGEPAGE_PUD=y
+CONFIG_HAVE_ARCH_HUGE_VMAP=y
+CONFIG_HAVE_ARCH_HUGE_VMALLOC=y
+CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
+CONFIG_HAVE_ARCH_SOFT_DIRTY=y
+CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
+CONFIG_MODULES_USE_ELF_RELA=y
+CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=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_HAVE_EXIT_THREAD=y
+CONFIG_ARCH_MMAP_RND_BITS=28
+CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8
+CONFIG_HAVE_ARCH_COMPAT_MMAP_BASES=y
+CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
+CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
+CONFIG_HAVE_OBJTOOL=y
+CONFIG_HAVE_JUMP_LABEL_HACK=y
+CONFIG_HAVE_NOINSTR_HACK=y
+CONFIG_HAVE_NOINSTR_VALIDATION=y
+CONFIG_HAVE_UACCESS_VALIDATION=y
+CONFIG_HAVE_STACK_VALIDATION=y
+CONFIG_HAVE_RELIABLE_STACKTRACE=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_PREL32_RELOCATIONS=y
+CONFIG_ARCH_USE_MEMREMAP_PROT=y
+# CONFIG_LOCK_EVENT_COUNTS is not set
+CONFIG_ARCH_HAS_MEM_ENCRYPT=y
+CONFIG_HAVE_STATIC_CALL=y
+CONFIG_HAVE_STATIC_CALL_INLINE=y
+CONFIG_HAVE_PREEMPT_DYNAMIC=y
+CONFIG_HAVE_PREEMPT_DYNAMIC_CALL=y
+CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y
+CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
+CONFIG_ARCH_SUPPORTS_PAGE_TABLE_CHECK=y
+CONFIG_ARCH_HAS_ELFCORE_COMPAT=y
+CONFIG_ARCH_HAS_PARANOID_L1D_FLUSH=y
+CONFIG_DYNAMIC_SIGFRAME=y
+CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG=y
+
+#
+# GCOV-based kernel profiling
+#
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
+# end of GCOV-based kernel profiling
+
+CONFIG_HAVE_GCC_PLUGINS=y
+# end of General architecture-dependent options
+
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_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_MODULES_TREE_LOOKUP=y
+CONFIG_BLOCK=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_WBT 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 is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_EFI_PARTITION=y
+# end of Partition Types
+
+CONFIG_BLOCK_COMPAT=y
+CONFIG_BLK_MQ_PCI=y
+CONFIG_BLK_MQ_VIRTIO=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
+# end of IO Schedulers
+
+CONFIG_PREEMPT_NOTIFIERS=y
+CONFIG_ASN1=y
+CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
+CONFIG_INLINE_READ_UNLOCK=y
+CONFIG_INLINE_READ_UNLOCK_IRQ=y
+CONFIG_INLINE_WRITE_UNLOCK=y
+CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
+CONFIG_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_SYNC_CORE_BEFORE_USERMODE=y
+CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y
+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
+# end of Executable file formats
+
+#
+# Memory Management options
+#
+CONFIG_SWAP=y
+# CONFIG_ZSWAP is not set
+
+#
+# SLAB allocator options
+#
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+CONFIG_SLAB_MERGE_DEFAULT=y
+# CONFIG_SLAB_FREELIST_RANDOM is not set
+# CONFIG_SLAB_FREELIST_HARDENED is not set
+# CONFIG_SLUB_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_SPARSEMEM_EXTREME=y
+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
+CONFIG_SPARSEMEM_VMEMMAP=y
+CONFIG_HAVE_FAST_GUP=y
+CONFIG_EXCLUSIVE_SYSTEM_RAM=y
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+# CONFIG_MEMORY_HOTPLUG is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
+CONFIG_COMPACTION=y
+CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
+# CONFIG_PAGE_REPORTING is not set
+CONFIG_MIGRATION=y
+CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y
+CONFIG_PCP_BATCH_SCALE_MAX=5
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_MMU_NOTIFIER=y
+# CONFIG_KSM is not set
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
+# CONFIG_MEMORY_FAILURE is not set
+CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
+CONFIG_ARCH_WANTS_THP_SWAP=y
+# CONFIG_TRANSPARENT_HUGEPAGE is not set
+CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
+CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
+CONFIG_USE_PERCPU_NUMA_NODE_ID=y
+CONFIG_HAVE_SETUP_PER_CPU_AREA=y
+# 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_ZONE_DMA=y
+CONFIG_ZONE_DMA32=y
+CONFIG_VMAP_PFN=y
+CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y
+CONFIG_ARCH_HAS_PKEYS=y
+CONFIG_VM_EVENT_COUNTERS=y
+# CONFIG_PERCPU_STATS is not set
+# CONFIG_GUP_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_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_NET_INGRESS=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 is not set
+# CONFIG_TLS is not set
+CONFIG_XFRM=y
+CONFIG_XFRM_ALGO=y
+CONFIG_XFRM_USER=y
+# CONFIG_XFRM_USER_COMPAT is not set
+# CONFIG_XFRM_INTERFACE is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_XFRM_AH=y
+CONFIG_XFRM_ESP=y
+# CONFIG_NET_KEY 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_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE_DEMUX is not set
+CONFIG_NET_IP_TUNNEL=y
+CONFIG_IP_MROUTE_COMMON=y
+CONFIG_IP_MROUTE=y
+# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set
+CONFIG_IP_PIMSM_V1=y
+CONFIG_IP_PIMSM_V2=y
+CONFIG_SYN_COOKIES=y
+# CONFIG_NET_IPVTI is not set
+# CONFIG_NET_FOU is not set
+# CONFIG_NET_FOU_IP_TUNNELS is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+CONFIG_INET_TABLE_PERTURB_ORDER=16
+CONFIG_INET_TUNNEL=y
+# CONFIG_INET_DIAG is not set
+CONFIG_TCP_CONG_ADVANCED=y
+# CONFIG_TCP_CONG_BIC is not set
+CONFIG_TCP_CONG_CUBIC=y
+# CONFIG_TCP_CONG_WESTWOOD is not set
+# CONFIG_TCP_CONG_HTCP is not set
+# 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_CUBIC=y
+# CONFIG_DEFAULT_RENO is not set
+CONFIG_DEFAULT_TCP_CONG="cubic"
+CONFIG_TCP_MD5SIG=y
+CONFIG_IPV6=y
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=y
+CONFIG_INET6_ESP=y
+# CONFIG_INET6_ESP_OFFLOAD is not set
+# CONFIG_INET6_ESPINTCP is not set
+# CONFIG_INET6_IPCOMP is not set
+# CONFIG_IPV6_MIP6 is not set
+# CONFIG_IPV6_ILA is not set
+# CONFIG_IPV6_VTI is not set
+CONFIG_IPV6_SIT=y
+# CONFIG_IPV6_SIT_6RD is not set
+CONFIG_IPV6_NDISC_NODETYPE=y
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_IPV6_MROUTE is not set
+# CONFIG_IPV6_SEG6_LWTUNNEL is not set
+# CONFIG_IPV6_SEG6_HMAC is not set
+# CONFIG_IPV6_RPL_LWTUNNEL is not set
+# CONFIG_IPV6_IOAM6_LWTUNNEL is not set
+CONFIG_NETLABEL=y
+# 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 is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_INGRESS=y
+# CONFIG_NETFILTER_EGRESS is not set
+CONFIG_NETFILTER_NETLINK=y
+CONFIG_NETFILTER_NETLINK_LOG=y
+CONFIG_NF_CONNTRACK=y
+CONFIG_NF_LOG_SYSLOG=m
+CONFIG_NF_CONNTRACK_SECMARK=y
+CONFIG_NF_CONNTRACK_PROCFS=y
+# CONFIG_NF_CONNTRACK_LABELS is not set
+CONFIG_NF_CONNTRACK_FTP=y
+CONFIG_NF_CONNTRACK_IRC=y
+# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
+CONFIG_NF_CONNTRACK_SIP=y
+CONFIG_NF_CT_NETLINK=y
+# CONFIG_NETFILTER_NETLINK_GLUE_CT is not set
+CONFIG_NF_NAT=y
+CONFIG_NF_NAT_FTP=y
+CONFIG_NF_NAT_IRC=y
+CONFIG_NF_NAT_SIP=y
+CONFIG_NF_NAT_MASQUERADE=y
+# CONFIG_NF_TABLES is not set
+CONFIG_NETFILTER_XTABLES=y
+# CONFIG_NETFILTER_XTABLES_COMPAT is not set
+
+#
+# Xtables combined modules
+#
+CONFIG_NETFILTER_XT_MARK=m
+
+#
+# Xtables targets
+#
+CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y
+CONFIG_NETFILTER_XT_TARGET_LOG=m
+CONFIG_NETFILTER_XT_NAT=m
+# CONFIG_NETFILTER_XT_TARGET_NETMAP is not set
+CONFIG_NETFILTER_XT_TARGET_NFLOG=y
+# CONFIG_NETFILTER_XT_TARGET_REDIRECT is not set
+CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m
+CONFIG_NETFILTER_XT_TARGET_SECMARK=y
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=y
+
+#
+# Xtables matches
+#
+CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
+CONFIG_NETFILTER_XT_MATCH_POLICY=y
+CONFIG_NETFILTER_XT_MATCH_STATE=y
+# end of Core Netfilter Configuration
+
+# CONFIG_IP_SET is not set
+# CONFIG_IP_VS is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV4=y
+# CONFIG_NF_SOCKET_IPV4 is not set
+# CONFIG_NF_TPROXY_IPV4 is not set
+# CONFIG_NF_DUP_IPV4 is not set
+CONFIG_NF_LOG_ARP=m
+CONFIG_NF_LOG_IPV4=m
+CONFIG_NF_REJECT_IPV4=y
+CONFIG_IP_NF_IPTABLES=y
+CONFIG_IP_NF_FILTER=y
+CONFIG_IP_NF_TARGET_REJECT=y
+CONFIG_IP_NF_NAT=m
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_MANGLE=y
+# CONFIG_IP_NF_RAW is not set
+# end of IP: Netfilter Configuration
+
+#
+# IPv6: Netfilter Configuration
+#
+# CONFIG_NF_SOCKET_IPV6 is not set
+# CONFIG_NF_TPROXY_IPV6 is not set
+# CONFIG_NF_DUP_IPV6 is not set
+CONFIG_NF_REJECT_IPV6=y
+CONFIG_NF_LOG_IPV6=m
+CONFIG_IP6_NF_IPTABLES=y
+CONFIG_IP6_NF_MATCH_IPV6HEADER=y
+CONFIG_IP6_NF_FILTER=y
+CONFIG_IP6_NF_TARGET_REJECT=y
+CONFIG_IP6_NF_MANGLE=y
+# CONFIG_IP6_NF_RAW is not set
+# end of IPv6: Netfilter Configuration
+
+CONFIG_NF_DEFRAG_IPV6=y
+# CONFIG_NF_CONNTRACK_BRIDGE 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_BRIDGE is not set
+# CONFIG_NET_DSA is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_LLC2 is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_PHONET is not set
+# CONFIG_6LOWPAN is not set
+# CONFIG_IEEE802154 is not set
+CONFIG_NET_SCHED=y
+
+#
+# Queueing/Scheduling
+#
+# CONFIG_NET_SCH_HTB is not set
+# 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 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 is not set
+# CONFIG_NET_CLS_FLOW is not set
+# CONFIG_NET_CLS_CGROUP is not set
+# 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 is not set
+# 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_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=y
+# CONFIG_BATMAN_ADV is not set
+# CONFIG_OPENVSWITCH is not set
+# CONFIG_VSOCKETS is not set
+# CONFIG_NETLINK_DIAG is not set
+# CONFIG_MPLS is not set
+# CONFIG_NET_NSH is not set
+# CONFIG_HSR is not set
+# CONFIG_NET_SWITCHDEV is not set
+# CONFIG_NET_L3_MASTER_DEV is not set
+# CONFIG_QRTR is not set
+# CONFIG_NET_NCSI is not set
+# CONFIG_PCPU_DEV_REFCNT is not set
+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_NET_RX_BUSY_POLL=y
+CONFIG_BQL=y
+CONFIG_NET_FLOW_LIMIT=y
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+# CONFIG_NET_DROP_MONITOR is not set
+# end of Network testing
+# end of Networking options
+
+CONFIG_HAMRADIO=y
+
+#
+# Packet Radio protocols
+#
+# CONFIG_AX25 is not set
+# CONFIG_CAN is not set
+# CONFIG_BT is not set
+# 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_CFG80211=y
+# CONFIG_NL80211_TESTMODE is not set
+# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
+CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y
+CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y
+CONFIG_CFG80211_DEFAULT_PS=y
+# CONFIG_CFG80211_DEBUGFS is not set
+CONFIG_CFG80211_CRDA_SUPPORT=y
+# CONFIG_CFG80211_WEXT is not set
+CONFIG_MAC80211=y
+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_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_LEDS=y
+CONFIG_RFKILL_INPUT=y
+# CONFIG_RFKILL_GPIO is not set
+# CONFIG_NET_9P is not set
+# CONFIG_CAIF is not set
+# CONFIG_CEPH_LIB is not set
+# CONFIG_NFC is not set
+# CONFIG_PSAMPLE is not set
+# CONFIG_NET_IFE is not set
+# CONFIG_LWTUNNEL is not set
+CONFIG_DST_CACHE=y
+CONFIG_GRO_CELLS=y
+CONFIG_NET_SELFTESTS=y
+CONFIG_FAILOVER=y
+# CONFIG_ETHTOOL_NETLINK is not set
+
+#
+# Device Drivers
+#
+CONFIG_HAVE_EISA=y
+# CONFIG_EISA is not set
+CONFIG_HAVE_PCI=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCIEPORTBUS=y
+# CONFIG_HOTPLUG_PCI_PCIE is not set
+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_MSI_IRQ_DOMAIN=y
+CONFIG_PCI_QUIRKS=y
+# CONFIG_PCI_DEBUG is not set
+# CONFIG_PCI_STUB is not set
+CONFIG_PCI_ATS=y
+CONFIG_PCI_LOCKLESS_CONFIG=y
+# CONFIG_PCI_IOV is not set
+CONFIG_PCI_PRI=y
+CONFIG_PCI_PASID=y
+CONFIG_PCI_LABEL=y
+CONFIG_VGA_ARB=y
+CONFIG_VGA_ARB_MAX_GPUS=16
+CONFIG_HOTPLUG_PCI=y
+# CONFIG_HOTPLUG_PCI_ACPI is not set
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+# CONFIG_HOTPLUG_PCI_SHPC is not set
+
+#
+# PCI controller drivers
+#
+# CONFIG_VMD is not set
+
+#
+# DesignWare PCI Core Support
+#
+# CONFIG_PCIE_DW_PLAT_HOST is not set
+# CONFIG_PCI_MESON is not set
+# end of DesignWare PCI Core Support
+
+#
+# Mobiveil PCIe Core Support
+#
+# end of Mobiveil PCIe Core Support
+
+#
+# Cadence PCIe controllers support
+#
+# end of Cadence PCIe controllers support
+# 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=y
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_CARDBUS=y
+
+#
+# PC-card bridges
+#
+CONFIG_YENTA=y
+CONFIG_YENTA_O2=y
+CONFIG_YENTA_RICOH=y
+CONFIG_YENTA_TI=y
+CONFIG_YENTA_ENE_TUNE=y
+CONFIG_YENTA_TOSHIBA=y
+# CONFIG_PD6729 is not set
+# CONFIG_I82092 is not set
+CONFIG_PCCARD_NONSTATIC=y
+# CONFIG_RAPIDIO is not set
+
+#
+# Generic Driver Options
+#
+CONFIG_AUXILIARY_BUS=y
+# CONFIG_UEVENT_HELPER is not set
+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_EXTRA_FIRMWARE=""
+# CONFIG_FW_LOADER_USER_HELPER is not set
+# CONFIG_FW_LOADER_COMPRESS is not set
+# CONFIG_FW_CACHE is not set
+# CONFIG_FW_UPLOAD is not set
+# end of Firmware loader
+
+CONFIG_ALLOW_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_DMA_SHARED_BUFFER=y
+# CONFIG_DMA_FENCE_TRACE is not set
+# end of Generic Driver Options
+
+#
+# Bus devices
+#
+# 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
+#
+# end of ARM System Control and Management Interface Protocol
+
+# CONFIG_EDD is not set
+CONFIG_FIRMWARE_MEMMAP=y
+CONFIG_DMIID=y
+# CONFIG_DMI_SYSFS is not set
+CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
+# CONFIG_FW_CFG_SYSFS is not set
+CONFIG_SYSFB=y
+# CONFIG_SYSFB_SIMPLEFB is not set
+# CONFIG_GOOGLE_FIRMWARE is not set
+
+#
+# EFI (Extensible Firmware Interface) Support
+#
+CONFIG_EFI_ESRT=y
+CONFIG_EFI_RUNTIME_MAP=y
+# CONFIG_EFI_FAKE_MEMMAP is not set
+# CONFIG_EFI_DXE_MEM_ATTRIBUTES is not set
+CONFIG_EFI_RUNTIME_WRAPPERS=y
+CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER=y
+# CONFIG_EFI_BOOTLOADER_CONTROL is not set
+# CONFIG_EFI_CAPSULE_LOADER is not set
+# CONFIG_EFI_TEST is not set
+# CONFIG_APPLE_PROPERTIES is not set
+# CONFIG_RESET_ATTACK_MITIGATION is not set
+# CONFIG_EFI_RCI2_TABLE is not set
+# CONFIG_EFI_DISABLE_PCI_DMA is not set
+CONFIG_EFI_EARLYCON=y
+# CONFIG_EFI_CUSTOM_SSDT_OVERLAYS is not set
+# CONFIG_EFI_DISABLE_RUNTIME is not set
+# CONFIG_EFI_COCO_SECRET is not set
+# end of EFI (Extensible Firmware Interface) Support
+
+#
+# Tegra firmware driver
+#
+# end of Tegra firmware driver
+# end of Firmware Drivers
+
+# CONFIG_GNSS is not set
+# CONFIG_MTD is not set
+# CONFIG_OF is not set
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
+# CONFIG_PARPORT is not set
+CONFIG_PNP=y
+CONFIG_PNP_DEBUG_MESSAGES=y
+
+#
+# Protocols
+#
+CONFIG_PNPACPI=y
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_NULL_BLK is not set
+# CONFIG_BLK_DEV_FD is not set
+CONFIG_CDROM=y
+# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
+# CONFIG_BLK_DEV_DRBD is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_VIRTIO_BLK=y
+# CONFIG_BLK_DEV_RBD is not set
+# CONFIG_BLK_DEV_UBLK is not set
+
+#
+# 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_NVME_FC is not set
+# CONFIG_NVME_TCP is not set
+# CONFIG_NVME_AUTH is not set
+# end of NVME Support
+
+#
+# Misc devices
+#
+# CONFIG_AD525X_DPOT is not set
+# CONFIG_DUMMY_IRQ is not set
+# CONFIG_IBM_ASM 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_SRAM is not set
+# CONFIG_DW_XDATA_PCIE is not set
+# CONFIG_PCI_ENDPOINT_TEST is not set
+# CONFIG_XILINX_SDFEC is not set
+# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+CONFIG_EEPROM_AT24=y
+# CONFIG_EEPROM_LEGACY is not set
+# CONFIG_EEPROM_MAX6875 is not set
+# CONFIG_EEPROM_93CX6 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_I2C is not set
+# CONFIG_ALTERA_STAPL is not set
+# CONFIG_INTEL_MEI is not set
+# CONFIG_INTEL_MEI_ME is not set
+# CONFIG_INTEL_MEI_TXE is not set
+# CONFIG_INTEL_MEI_HDCP is not set
+# CONFIG_INTEL_MEI_PXP 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_HABANA_AI 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_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=y
+CONFIG_BLK_DEV_BSG=y
+# CONFIG_CHR_DEV_SCH is not set
+CONFIG_SCSI_CONSTANTS=y
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+
+#
+# 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
+# end of SCSI Transports
+
+# 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_PATA_TIMINGS=y
+CONFIG_ATA_VERBOSE_ERROR=y
+CONFIG_ATA_FORCE=y
+CONFIG_ATA_ACPI=y
+# CONFIG_SATA_ZPODD is not set
+CONFIG_SATA_PMP=y
+
+#
+# Controllers with non-SFF native interface
+#
+CONFIG_SATA_AHCI=y
+CONFIG_SATA_MOBILE_LPM_POLICY=0
+# CONFIG_SATA_AHCI_PLATFORM is not set
+# CONFIG_AHCI_DWC 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=y
+# CONFIG_SATA_DWC is not set
+# CONFIG_SATA_MV is not set
+# CONFIG_SATA_NV is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SIL is not set
+# 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=y
+# 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=y
+# 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=y
+# 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_RZ1000 is not set
+
+#
+# Generic fallback / legacy drivers
+#
+# CONFIG_PATA_ACPI is not set
+# 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_LINEAR is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID10 is not set
+# CONFIG_MD_RAID456 is not set
+# CONFIG_MD_MULTIPATH is not set
+# CONFIG_MD_FAULTY is not set
+# CONFIG_BCACHE is not set
+CONFIG_BLK_DEV_DM_BUILTIN=y
+CONFIG_BLK_DEV_DM=y
+# CONFIG_DM_DEBUG is not set
+# CONFIG_DM_UNSTRIPED is not set
+# CONFIG_DM_CRYPT is not set
+# 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=y
+# CONFIG_DM_LOG_USERSPACE is not set
+# CONFIG_DM_RAID is not set
+CONFIG_DM_ZERO=y
+# 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_DM_AUDIT 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_MACINTOSH_DRIVERS=y
+CONFIG_MAC_EMUMOUSEBTN=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_BAREUDP is not set
+# CONFIG_GTP is not set
+# CONFIG_AMT is not set
+# CONFIG_MACSEC is not set
+CONFIG_NETCONSOLE=y
+CONFIG_NETPOLL=y
+CONFIG_NET_POLL_CONTROLLER=y
+CONFIG_TUN=y
+# CONFIG_TUN_VNET_CROSS_LE is not set
+CONFIG_VETH=y
+CONFIG_VIRTIO_NET=y
+# CONFIG_NLMON is not set
+# CONFIG_ARCNET is not set
+CONFIG_ETHERNET=y
+CONFIG_MDIO=y
+CONFIG_NET_VENDOR_3COM=y
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_3C589 is not set
+# 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=y
+# CONFIG_SLICOSS 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_AMD=y
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_PCNET32 is not set
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_AMD_XGBE is not set
+CONFIG_NET_VENDOR_AQUANTIA=y
+# CONFIG_AQTION is not set
+CONFIG_NET_VENDOR_ARC=y
+# CONFIG_NET_VENDOR_ASIX 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_CX_ECAT is not set
+CONFIG_NET_VENDOR_BROADCOM=y
+# CONFIG_B44 is not set
+# CONFIG_BCMGENET is not set
+# CONFIG_BNX2 is not set
+# CONFIG_CNIC is not set
+CONFIG_TIGON3=y
+CONFIG_TIGON3_HWMON=y
+# CONFIG_BNX2X is not set
+# CONFIG_SYSTEMPORT is not set
+# CONFIG_BNXT is not set
+CONFIG_NET_VENDOR_CADENCE=y
+# CONFIG_MACB is not set
+CONFIG_NET_VENDOR_CAVIUM=y
+# CONFIG_THUNDER_NIC_PF is not set
+# CONFIG_THUNDER_NIC_VF is not set
+# CONFIG_THUNDER_NIC_BGX is not set
+# CONFIG_THUNDER_NIC_RGX is not set
+# CONFIG_CAVIUM_PTP is not set
+# CONFIG_LIQUIDIO is not set
+# CONFIG_LIQUIDIO_VF 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=y
+# CONFIG_NET_VENDOR_DAVICOM is not set
+# CONFIG_DNET is not set
+CONFIG_NET_VENDOR_DEC=y
+CONFIG_NET_TULIP=y
+# CONFIG_DE2104X is not set
+# CONFIG_TULIP is not set
+# CONFIG_WINBOND_840 is not set
+# CONFIG_DM9102 is not set
+# CONFIG_ULI526X is not set
+# CONFIG_PCMCIA_XIRCOM 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=y
+CONFIG_NET_VENDOR_FUJITSU=y
+# CONFIG_PCMCIA_FMVJ18X is not set
+# CONFIG_NET_VENDOR_FUNGIBLE is not set
+CONFIG_NET_VENDOR_GOOGLE=y
+# CONFIG_GVE 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_E1000E_HWTS=y
+CONFIG_IGB=y
+CONFIG_IGB_HWMON=y
+# CONFIG_IGBVF is not set
+# CONFIG_IXGB 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_LITEX is not set
+CONFIG_NET_VENDOR_MARVELL=y
+# CONFIG_MVMDIO is not set
+# CONFIG_SKGE is not set
+CONFIG_SKY2=y
+# CONFIG_SKY2_DEBUG is not set
+# CONFIG_OCTEON_EP is not set
+CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_MLX4_EN is not set
+# CONFIG_MLX5_CORE is not set
+# CONFIG_MLXSW_CORE is not set
+# CONFIG_MLXFW is not set
+CONFIG_NET_VENDOR_MICREL=y
+# CONFIG_KS8842 is not set
+# CONFIG_KS8851_MLL is not set
+# CONFIG_KSZ884X_PCI is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
+# CONFIG_LAN743X is not set
+CONFIG_NET_VENDOR_MICROSEMI=y
+# CONFIG_NET_VENDOR_MICROSOFT 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_NATSEMI=y
+# CONFIG_NATSEMI is not set
+# CONFIG_NS83820 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_8390=y
+# CONFIG_PCMCIA_AXNET is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_PCMCIA_PCNET is not set
+CONFIG_NET_VENDOR_NVIDIA=y
+CONFIG_FORCEDETH=y
+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=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=y
+# CONFIG_QCOM_EMAC is not set
+# CONFIG_RMNET 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=y
+CONFIG_8139TOO_PIO=y
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_R8169=y
+CONFIG_NET_VENDOR_RENESAS=y
+CONFIG_NET_VENDOR_ROCKER=y
+CONFIG_NET_VENDOR_SAMSUNG=y
+# CONFIG_SXGBE_ETH is not set
+CONFIG_NET_VENDOR_SEEQ=y
+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=y
+# CONFIG_SFC is not set
+# CONFIG_SFC_FALCON is not set
+# CONFIG_SFC_SIENA is not set
+CONFIG_NET_VENDOR_SMSC=y
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SMSC911X is not set
+# CONFIG_SMSC9420 is not set
+CONFIG_NET_VENDOR_SOCIONEXT=y
+CONFIG_NET_VENDOR_STMICRO=y
+# CONFIG_STMMAC_ETH 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=y
+# CONFIG_DWC_XLGMAC 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=y
+# CONFIG_VIA_RHINE is not set
+# CONFIG_VIA_VELOCITY is not set
+# CONFIG_NET_VENDOR_WANGXUN is not set
+CONFIG_NET_VENDOR_WIZNET=y
+# CONFIG_WIZNET_W5100 is not set
+# CONFIG_WIZNET_W5300 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=y
+# CONFIG_DEFXX is not set
+# CONFIG_SKFP is not set
+# CONFIG_HIPPI is not set
+# CONFIG_NET_SB1000 is not set
+CONFIG_PHYLIB=y
+CONFIG_SWPHY=y
+# CONFIG_LED_TRIGGER_PHY is not set
+CONFIG_FIXED_PHY=y
+
+#
+# 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_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_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_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_C45_TJA11XX_PHY is not set
+# CONFIG_NXP_TJA11XX_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+CONFIG_REALTEK_PHY=y
+# CONFIG_RENESAS_PHY is not set
+# CONFIG_ROCKCHIP_PHY is not set
+# CONFIG_SMSC_PHY is not set
+# CONFIG_STE10XP is not set
+# CONFIG_TERANETICS_PHY is not set
+# CONFIG_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_PSE_CONTROLLER is not set
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_BUS=y
+CONFIG_FWNODE_MDIO=y
+CONFIG_ACPI_MDIO=y
+CONFIG_MDIO_DEVRES=y
+# CONFIG_MDIO_BITBANG is not set
+# CONFIG_MDIO_BCM_UNIMAC is not set
+# CONFIG_MDIO_MVUSB is not set
+# CONFIG_MDIO_THUNDER is not set
+
+#
+# MDIO Multiplexers
+#
+
+#
+# PCS device drivers
+#
+# end of PCS device drivers
+
+# 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 is not set
+# CONFIG_USB_RTL8152 is not set
+# CONFIG_USB_LAN78XX is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_HSO is not set
+# CONFIG_USB_IPHETH is not set
+CONFIG_WLAN=y
+CONFIG_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_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 is not set
+# CONFIG_LIBERTAS_THINFIRM is not set
+# CONFIG_MWIFIEX is not set
+# CONFIG_MWL8K is not set
+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_MT7915E is not set
+# CONFIG_MT7921E is not set
+# CONFIG_MT7921U is not set
+# CONFIG_WLAN_VENDOR_MICROCHIP is not set
+# CONFIG_WLAN_VENDOR_PURELIFI 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_RTW88 is not set
+# CONFIG_RTW89 is not set
+CONFIG_WLAN_VENDOR_RSI=y
+# CONFIG_RSI_91X is not set
+# CONFIG_WLAN_VENDOR_SILABS 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_PCMCIA_RAYCS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+# CONFIG_MAC80211_HWSIM is not set
+# CONFIG_USB_NET_RNDIS_WLAN 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_FUJITSU_ES is not set
+# CONFIG_NETDEVSIM is not set
+CONFIG_NET_FAILOVER=y
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+CONFIG_INPUT_LEDS=y
+CONFIG_INPUT_FF_MEMLESS=y
+CONFIG_INPUT_SPARSEKMAP=y
+# CONFIG_INPUT_MATRIXKMAP is not set
+CONFIG_INPUT_VIVALDIFMAP=y
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_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 is not set
+# CONFIG_KEYBOARD_GPIO_POLLED is not set
+# CONFIG_KEYBOARD_TCA6416 is not set
+# CONFIG_KEYBOARD_TCA8418 is not set
+# CONFIG_KEYBOARD_MATRIX is not set
+# CONFIG_KEYBOARD_LM8323 is not set
+# CONFIG_KEYBOARD_LM8333 is not set
+# CONFIG_KEYBOARD_MAX7359 is not set
+# CONFIG_KEYBOARD_MCS is not set
+# CONFIG_KEYBOARD_MPR121 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_OPENCORES is not set
+# CONFIG_KEYBOARD_SAMSUNG is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_TM2_TOUCHKEY is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_CYPRESS_SF is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_BYD=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y
+CONFIG_MOUSE_PS2_CYPRESS=y
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+# CONFIG_MOUSE_PS2_ELANTECH is not set
+# CONFIG_MOUSE_PS2_SENTELIC is not set
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+CONFIG_MOUSE_PS2_FOCALTECH=y
+CONFIG_MOUSE_PS2_SMBUS=y
+# 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_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 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_AD7879 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
+# CONFIG_TOUCHSCREEN_CHIPONE_ICN8505 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_DYNAPRO is not set
+# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set
+# CONFIG_TOUCHSCREEN_EETI is not set
+# CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set
+# CONFIG_TOUCHSCREEN_EXC3000 is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GOODIX is not set
+# CONFIG_TOUCHSCREEN_HIDEEP is not set
+# CONFIG_TOUCHSCREEN_HYCON_HY46XX is not set
+# 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_IMAGIS is not set
+# CONFIG_TOUCHSCREEN_INEXIO is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_PIXCIR is not set
+# CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
+# CONFIG_TOUCHSCREEN_TSC_SERIO is not set
+# CONFIG_TOUCHSCREEN_TSC2004 is not set
+# CONFIG_TOUCHSCREEN_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_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_IQS5XX is not set
+# CONFIG_TOUCHSCREEN_ZINITIX is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_AD714X is not set
+# CONFIG_INPUT_BMA150 is not set
+# CONFIG_INPUT_E3X0_BUTTON is not set
+# CONFIG_INPUT_PCSPKR is not set
+# CONFIG_INPUT_MMA8450 is not set
+# CONFIG_INPUT_APANEL 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_ATLAS_BTNS 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_UINPUT is not set
+# CONFIG_INPUT_PCF8574 is not set
+# 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_IDEAPAD_SLIDEBAR is not set
+# CONFIG_INPUT_DRV260X_HAPTICS is not set
+# CONFIG_INPUT_DRV2665_HAPTICS is not set
+# CONFIG_INPUT_DRV2667_HAPTICS is not set
+# CONFIG_RMI4_CORE is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
+CONFIG_SERIO_I8042=y
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_CT82C710 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_GPIO_PS2 is not set
+# CONFIG_USERIO is not set
+# CONFIG_GAMEPORT 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_LDISC_AUTOLOAD=y
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_EARLYCON=y
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
+CONFIG_SERIAL_8250_PNP=y
+# 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=y
+CONFIG_SERIAL_8250_EXAR=y
+# CONFIG_SERIAL_8250_CS is not set
+CONFIG_SERIAL_8250_NR_UARTS=32
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+CONFIG_SERIAL_8250_DETECT_IRQ=y
+CONFIG_SERIAL_8250_RSA=y
+CONFIG_SERIAL_8250_DWLIB=y
+# CONFIG_SERIAL_8250_DW is not set
+# CONFIG_SERIAL_8250_RT288X is not set
+CONFIG_SERIAL_8250_LPSS=y
+CONFIG_SERIAL_8250_MID=y
+# CONFIG_SERIAL_8250_PERICOM is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_UARTLITE is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+# CONFIG_SERIAL_LANTIQ 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_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_SPRD is not set
+# end of Serial drivers
+
+CONFIG_SERIAL_MCTRL_GPIO=y
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_SYNCLINK_GT is not set
+# CONFIG_N_HDLC is not set
+# CONFIG_N_GSM is not set
+# CONFIG_NOZOMI is not set
+# CONFIG_NULL_TTY is not set
+CONFIG_HVC_DRIVER=y
+# CONFIG_SERIAL_DEV_BUS is not set
+CONFIG_VIRTIO_CONSOLE=y
+CONFIG_IPMI_HANDLER=y
+CONFIG_IPMI_DMI_DECODE=y
+CONFIG_IPMI_PLAT_DATA=y
+# CONFIG_IPMI_PANIC_EVENT is not set
+CONFIG_IPMI_DEVICE_INTERFACE=y
+CONFIG_IPMI_SI=y
+CONFIG_IPMI_SSIF=y
+CONFIG_IPMI_WATCHDOG=y
+CONFIG_IPMI_POWEROFF=y
+CONFIG_HW_RANDOM=y
+# CONFIG_HW_RANDOM_TIMERIOMEM is not set
+# CONFIG_HW_RANDOM_INTEL is not set
+# CONFIG_HW_RANDOM_AMD is not set
+# CONFIG_HW_RANDOM_BA431 is not set
+CONFIG_HW_RANDOM_VIA=y
+CONFIG_HW_RANDOM_VIRTIO=y
+# CONFIG_HW_RANDOM_XIPHERA is not set
+# CONFIG_APPLICOM is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_SCR24X is not set
+# CONFIG_IPWIRELESS is not set
+# end of PCMCIA character devices
+
+# CONFIG_MWAVE is not set
+CONFIG_DEVMEM=y
+CONFIG_NVRAM=y
+CONFIG_DEVPORT=y
+CONFIG_HPET=y
+# CONFIG_HPET_MMAP is not set
+# CONFIG_HANGCHECK_TIMER is not set
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+# CONFIG_XILLYBUS is not set
+# CONFIG_XILLYUSB is not set
+# CONFIG_RANDOM_TRUST_CPU is not set
+# CONFIG_RANDOM_TRUST_BOOTLOADER is not set
+# end of Character devices
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_ACPI_I2C_OPREGION=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_COMPAT=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_MUX=y
+
+#
+# Multiplexer I2C Chip support
+#
+# CONFIG_I2C_MUX_GPIO is not set
+# CONFIG_I2C_MUX_LTC4306 is not set
+# CONFIG_I2C_MUX_PCA9541 is not set
+CONFIG_I2C_MUX_PCA954x=y
+CONFIG_I2C_MUX_REG=y
+# CONFIG_I2C_MUX_MLXCPLD is not set
+# end of Multiplexer I2C Chip support
+
+CONFIG_I2C_HELPER_AUTO=y
+CONFIG_I2C_SMBUS=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_AMD_MP2 is not set
+CONFIG_I2C_I801=y
+CONFIG_I2C_ISCH=y
+CONFIG_I2C_ISMT=m
+# 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
+
+#
+# ACPI drivers
+#
+# CONFIG_I2C_SCMI is not set
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_CBUS_GPIO is not set
+# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
+# CONFIG_I2C_DESIGNWARE_PCI is not set
+# CONFIG_I2C_EMEV2 is not set
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PCA_PLATFORM is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_XILINX is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+# CONFIG_I2C_DIOLAN_U2C is not set
+# CONFIG_I2C_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_MLXCPLD is not set
+# 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 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
+CONFIG_PTP_1588_CLOCK_OPTIONAL=y
+
+#
+# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
+#
+# CONFIG_PTP_1588_CLOCK_IDT82P33 is not set
+# CONFIG_PTP_1588_CLOCK_IDTCM is not set
+# end of PTP clock support
+
+# CONFIG_PINCTRL is not set
+CONFIG_GPIOLIB=y
+CONFIG_GPIOLIB_FASTPATH_LIMIT=512
+CONFIG_GPIO_ACPI=y
+# CONFIG_DEBUG_GPIO is not set
+CONFIG_GPIO_CDEV=y
+# CONFIG_GPIO_CDEV_V1 is not set
+
+#
+# Memory mapped GPIO drivers
+#
+# CONFIG_GPIO_AMDPT is not set
+# CONFIG_GPIO_DWAPB is not set
+# CONFIG_GPIO_EXAR is not set
+# CONFIG_GPIO_GENERIC_PLATFORM is not set
+# CONFIG_GPIO_MB86S7X is not set
+# CONFIG_GPIO_VX855 is not set
+# CONFIG_GPIO_AMD_FCH is not set
+# end of Memory mapped GPIO drivers
+
+#
+# Port-mapped I/O GPIO drivers
+#
+# CONFIG_GPIO_F7188X is not set
+# CONFIG_GPIO_IT87 is not set
+# CONFIG_GPIO_SCH is not set
+# CONFIG_GPIO_SCH311X is not set
+# CONFIG_GPIO_WINBOND is not set
+# CONFIG_GPIO_WS16C48 is not set
+# end of Port-mapped I/O GPIO drivers
+
+#
+# I2C GPIO expanders
+#
+# 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
+#
+# end of MFD GPIO expanders
+
+#
+# PCI GPIO expanders
+#
+# CONFIG_GPIO_AMD8111 is not set
+# CONFIG_GPIO_BT8XX is not set
+# CONFIG_GPIO_ML_IOH 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
+
+#
+# USB GPIO expanders
+#
+# end of USB GPIO expanders
+
+#
+# Virtual GPIO drivers
+#
+# CONFIG_GPIO_AGGREGATOR is not set
+# CONFIG_GPIO_MOCKUP is not set
+# CONFIG_GPIO_VIRTIO is not set
+# CONFIG_GPIO_SIM is not set
+# end of Virtual GPIO drivers
+
+# CONFIG_W1 is not set
+# CONFIG_POWER_RESET is not set
+CONFIG_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+CONFIG_POWER_SUPPLY_HWMON=y
+# CONFIG_PDA_POWER is not set
+# CONFIG_IP5XXX_POWER is not set
+# CONFIG_TEST_POWER is not set
+# CONFIG_CHARGER_ADP5061 is not set
+# CONFIG_BATTERY_CW2015 is not set
+# 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 is not set
+# CONFIG_CHARGER_SBS is not set
+# CONFIG_MANAGER_SBS is not set
+# CONFIG_BATTERY_BQ27XXX is not set
+# CONFIG_BATTERY_MAX17040 is not set
+# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_CHARGER_MAX8903 is not set
+# CONFIG_CHARGER_LP8727 is not set
+# CONFIG_CHARGER_GPIO is not set
+# CONFIG_CHARGER_LT3651 is not set
+# CONFIG_CHARGER_LTC4162L is not set
+# CONFIG_CHARGER_MAX77976 is not set
+# CONFIG_CHARGER_BQ2415X is not set
+# CONFIG_CHARGER_BQ24257 is not set
+# CONFIG_CHARGER_BQ24735 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_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_BD99954 is not set
+# CONFIG_BATTERY_UG3105 is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Native drivers
+#
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ABITUGURU3 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_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_K8TEMP is not set
+# CONFIG_SENSORS_K10TEMP is not set
+# CONFIG_SENSORS_FAM15H_POWER is not set
+# CONFIG_SENSORS_APPLESMC is not set
+# CONFIG_SENSORS_ASB100 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_DELL_SMM 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_FSCHMD 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_HIH6130 is not set
+# CONFIG_SENSORS_IBMAEM is not set
+# CONFIG_SENSORS_IBMPEX is not set
+# CONFIG_SENSORS_I5500 is not set
+CONFIG_SENSORS_CORETEMP=y
+# CONFIG_SENSORS_IT87 is not set
+CONFIG_SENSORS_JC42=m
+# 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_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_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_MAX31730 is not set
+# CONFIG_SENSORS_MAX31760 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_MCP3021 is not set
+# CONFIG_SENSORS_TC654 is not set
+# CONFIG_SENSORS_TPS23861 is not set
+# CONFIG_SENSORS_MR75203 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM73 is not set
+CONFIG_SENSORS_LM75=y
+CONFIG_SENSORS_LM77=y
+# 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_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_PCF8591 is not set
+CONFIG_PMBUS=y
+# CONFIG_SENSORS_PMBUS is not set
+# CONFIG_SENSORS_ADM1266 is not set
+# CONFIG_SENSORS_ADM1275 is not set
+# CONFIG_SENSORS_BEL_PFE is not set
+# CONFIG_SENSORS_BPA_RS600 is not set
+# CONFIG_SENSORS_DELTA_AHE50DC_FAN is not set
+# CONFIG_SENSORS_FSP_3Y is not set
+# CONFIG_SENSORS_IBM_CFFPS is not set
+# CONFIG_SENSORS_DPS920AB is not set
+# CONFIG_SENSORS_INSPUR_IPSPS is not set
+# CONFIG_SENSORS_IR35221 is not set
+# CONFIG_SENSORS_IR36021 is not set
+# CONFIG_SENSORS_IR38064 is not set
+# CONFIG_SENSORS_IRPS5401 is not set
+# CONFIG_SENSORS_ISL68137 is not set
+# CONFIG_SENSORS_LM25066 is not set
+# CONFIG_SENSORS_LT7182S is not set
+# CONFIG_SENSORS_LTC2978 is not set
+# CONFIG_SENSORS_LTC3815 is not set
+# CONFIG_SENSORS_MAX15301 is not set
+# CONFIG_SENSORS_MAX16064 is not set
+# CONFIG_SENSORS_MAX16601 is not set
+# CONFIG_SENSORS_MAX20730 is not set
+# CONFIG_SENSORS_MAX20751 is not set
+# CONFIG_SENSORS_MAX31785 is not set
+# CONFIG_SENSORS_MAX34440 is not set
+# CONFIG_SENSORS_MAX8688 is not set
+# CONFIG_SENSORS_MP2888 is not set
+# CONFIG_SENSORS_MP2975 is not set
+# CONFIG_SENSORS_MP5023 is not set
+# CONFIG_SENSORS_PIM4328 is not set
+# CONFIG_SENSORS_PLI1209BC is not set
+# CONFIG_SENSORS_PM6764TR is not set
+# CONFIG_SENSORS_PXE1610 is not set
+# CONFIG_SENSORS_Q54SJ108A2 is not set
+# CONFIG_SENSORS_STPDDC60 is not set
+# CONFIG_SENSORS_TPS40422 is not set
+# CONFIG_SENSORS_TPS53679 is not set
+# CONFIG_SENSORS_TPS546D24 is not set
+CONFIG_SENSORS_UCD9000=y
+# CONFIG_SENSORS_UCD9200 is not set
+# CONFIG_SENSORS_XDPE152 is not set
+# CONFIG_SENSORS_XDPE122 is not set
+# CONFIG_SENSORS_ZL6100 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
+# 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_ADS7828 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_VIA_CPUTEMP 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_XGENE is not set
+
+#
+# ACPI drivers
+#
+# CONFIG_SENSORS_ACPI_POWER is not set
+# CONFIG_SENSORS_ATK0110 is not set
+# CONFIG_SENSORS_ASUS_WMI is not set
+# CONFIG_SENSORS_ASUS_EC 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_WRITABLE_TRIPS=y
+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_GOV_FAIR_SHARE is not set
+CONFIG_THERMAL_GOV_STEP_WISE=y
+# CONFIG_THERMAL_GOV_BANG_BANG is not set
+CONFIG_THERMAL_GOV_USER_SPACE=y
+# CONFIG_THERMAL_EMULATION is not set
+
+#
+# Intel thermal drivers
+#
+# CONFIG_INTEL_POWERCLAMP is not set
+CONFIG_X86_THERMAL_VECTOR=y
+CONFIG_X86_PKG_TEMP_THERMAL=m
+# CONFIG_INTEL_SOC_DTS_THERMAL is not set
+
+#
+# ACPI INT340X thermal drivers
+#
+# CONFIG_INT340X_THERMAL is not set
+# end of ACPI INT340X thermal drivers
+
+# CONFIG_INTEL_PCH_THERMAL is not set
+# CONFIG_INTEL_TCC_COOLING is not set
+# CONFIG_INTEL_MENLOW is not set
+# CONFIG_INTEL_HFI_THERMAL is not set
+# end of Intel thermal drivers
+
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_CORE is not set
+# 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
+#
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+# CONFIG_WDAT_WDT is not set
+# CONFIG_XILINX_WATCHDOG is not set
+# CONFIG_ZIIRAVE_WATCHDOG is not set
+# CONFIG_CADENCE_WATCHDOG is not set
+# CONFIG_DW_WATCHDOG is not set
+# CONFIG_MAX63XX_WATCHDOG is not set
+# CONFIG_ACQUIRE_WDT is not set
+# CONFIG_ADVANTECH_WDT is not set
+# CONFIG_ALIM1535_WDT is not set
+# CONFIG_ALIM7101_WDT is not set
+# CONFIG_EBC_C384_WDT is not set
+# CONFIG_EXAR_WDT is not set
+# CONFIG_F71808E_WDT is not set
+# CONFIG_SP5100_TCO is not set
+# CONFIG_SBC_FITPC2_WATCHDOG is not set
+# CONFIG_EUROTECH_WDT is not set
+# CONFIG_IB700_WDT is not set
+# CONFIG_IBMASR is not set
+# CONFIG_WAFER_WDT is not set
+# CONFIG_I6300ESB_WDT is not set
+# CONFIG_IE6XX_WDT is not set
+# CONFIG_ITCO_WDT is not set
+# CONFIG_IT8712F_WDT is not set
+# CONFIG_IT87_WDT is not set
+# CONFIG_HP_WATCHDOG is not set
+# CONFIG_SC1200_WDT is not set
+# CONFIG_PC87413_WDT is not set
+# CONFIG_NV_TCO is not set
+# CONFIG_60XX_WDT is not set
+# CONFIG_CPU5_WDT is not set
+# CONFIG_SMSC_SCH311X_WDT is not set
+# CONFIG_SMSC37B787_WDT is not set
+# CONFIG_TQMX86_WDT is not set
+# CONFIG_VIA_WDT is not set
+# CONFIG_W83627HF_WDT is not set
+# CONFIG_W83877F_WDT is not set
+# CONFIG_W83977F_WDT is not set
+# CONFIG_MACHZ_WDT is not set
+# CONFIG_SBC_EPX_C3_WATCHDOG is not set
+# CONFIG_NI903X_WDT is not set
+# CONFIG_NIC7018_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
+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_AS3711 is not set
+# CONFIG_PMIC_ADP5520 is not set
+# CONFIG_MFD_AAT2870_CORE is not set
+# CONFIG_MFD_BCM590XX is not set
+# CONFIG_MFD_BD9571MWV is not set
+# CONFIG_MFD_AXP20X_I2C is not set
+# CONFIG_MFD_MADERA is not set
+# CONFIG_PMIC_DA903X 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_I2C is not set
+# CONFIG_MFD_MP2629 is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_HTC_I2CPLD is not set
+# CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set
+# CONFIG_LPC_ICH is not set
+CONFIG_LPC_SCH=y
+# CONFIG_MFD_INTEL_LPSS_ACPI is not set
+# CONFIG_MFD_INTEL_LPSS_PCI is not set
+# CONFIG_MFD_INTEL_PMC_BXT 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_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_MT6360 is not set
+# CONFIG_MFD_MT6370 is not set
+# CONFIG_MFD_MT6397 is not set
+# CONFIG_MFD_MENF21BMC is not set
+# CONFIG_MFD_VIPERBOARD 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_SI476X_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_SKY81452 is not set
+# CONFIG_MFD_SYSCON 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_TI_LP873X is not set
+# CONFIG_MFD_TPS6586X is not set
+# CONFIG_MFD_TPS65910 is not set
+# CONFIG_MFD_TPS65912_I2C 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_TQMX86 is not set
+# CONFIG_MFD_VX855 is not set
+# CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM831X_I2C is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_WM8994 is not set
+# CONFIG_MFD_ATC260X_I2C is not set
+# end of Multifunction device drivers
+
+# CONFIG_REGULATOR is not set
+# CONFIG_RC_CORE is not set
+
+#
+# CEC support
+#
+# CONFIG_MEDIA_CEC_SUPPORT is not set
+# end of CEC support
+
+# CONFIG_MEDIA_SUPPORT is not set
+
+#
+# Graphics support
+#
+CONFIG_APERTURE_HELPERS=y
+CONFIG_AGP=y
+CONFIG_AGP_AMD64=y
+CONFIG_AGP_INTEL=y
+# CONFIG_AGP_SIS is not set
+# CONFIG_AGP_VIA is not set
+CONFIG_INTEL_GTT=y
+# CONFIG_VGA_SWITCHEROO is not set
+CONFIG_DRM=y
+CONFIG_DRM_MIPI_DSI=y
+# CONFIG_DRM_DEBUG_MM is not set
+CONFIG_DRM_KMS_HELPER=y
+CONFIG_DRM_FBDEV_EMULATION=y
+CONFIG_DRM_FBDEV_OVERALLOC=100
+# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
+CONFIG_DRM_DISPLAY_HELPER=y
+CONFIG_DRM_DISPLAY_DP_HELPER=y
+CONFIG_DRM_DISPLAY_HDCP_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=y
+CONFIG_DRM_BUDDY=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
+#
+# end of ARM devices
+
+# CONFIG_DRM_RADEON is not set
+# CONFIG_DRM_AMDGPU is not set
+# CONFIG_DRM_NOUVEAU is not set
+CONFIG_DRM_I915=y
+CONFIG_DRM_I915_FORCE_PROBE=""
+CONFIG_DRM_I915_CAPTURE_ERROR=y
+CONFIG_DRM_I915_COMPRESS_ERROR=y
+CONFIG_DRM_I915_USERPTR=y
+CONFIG_DRM_I915_REQUEST_TIMEOUT=20000
+CONFIG_DRM_I915_FENCE_TIMEOUT=10000
+CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND=250
+CONFIG_DRM_I915_HEARTBEAT_INTERVAL=2500
+CONFIG_DRM_I915_PREEMPT_TIMEOUT=640
+CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000
+CONFIG_DRM_I915_STOP_TIMEOUT=100
+CONFIG_DRM_I915_TIMESLICE_DURATION=1
+# CONFIG_DRM_VGEM is not set
+# CONFIG_DRM_VKMS is not set
+# CONFIG_DRM_GMA500 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
+
+#
+# Display Panels
+#
+# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN 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
+# end of Display Interface Bridges
+
+# CONFIG_DRM_ETNAVIV is not set
+# CONFIG_DRM_BOCHS is not set
+# CONFIG_DRM_CIRRUS_QEMU is not set
+# CONFIG_DRM_GM12U320 is not set
+# CONFIG_DRM_SIMPLEDRM is not set
+# CONFIG_DRM_VBOXVIDEO 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_DRM_NOMODESET=y
+
+#
+# Frame buffer Devices
+#
+CONFIG_FB_CMDLINE=y
+CONFIG_FB_NOTIFY=y
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+CONFIG_FB_SYS_FILLRECT=y
+CONFIG_FB_SYS_COPYAREA=y
+CONFIG_FB_SYS_IMAGEBLIT=y
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+CONFIG_FB_SYS_FOPS=y
+CONFIG_FB_DEFERRED_IO=y
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_CIRRUS is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_ARC is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+# CONFIG_FB_VGA16 is not set
+# CONFIG_FB_UVESA is not set
+# CONFIG_FB_VESA is not set
+CONFIG_FB_EFI=y
+# CONFIG_FB_N411 is not set
+# CONFIG_FB_HGA 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_LE80578 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_VIA 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
+# 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_APPLE is not set
+# CONFIG_BACKLIGHT_QCOM_WLED is not set
+# CONFIG_BACKLIGHT_SAHARA is not set
+# CONFIG_BACKLIGHT_ADP8860 is not set
+# CONFIG_BACKLIGHT_ADP8870 is not set
+# CONFIG_BACKLIGHT_LM3639 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
+# end of Backlight & LCD device support
+
+CONFIG_HDMI=y
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+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 is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set
+# end of Console display driver support
+
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
+# end of Graphics support
+
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_HWDEP=y
+CONFIG_SND_SEQ_DEVICE=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 is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_PROC_FS=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+CONFIG_SND_CTL_FAST_LOOKUP=y
+# CONFIG_SND_DEBUG is not set
+# CONFIG_SND_CTL_INPUT_VALIDATION is not set
+CONFIG_SND_VMASTER=y
+CONFIG_SND_DMA_SGBUF=y
+CONFIG_SND_SEQUENCER=y
+CONFIG_SND_SEQ_DUMMY=y
+CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
+CONFIG_SND_DRIVERS=y
+# CONFIG_SND_PCSP is not set
+# 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=y
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALS4000 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ASIHPI 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=y
+CONFIG_SND_HDA_INTEL=y
+CONFIG_SND_HDA_HWDEP=y
+# CONFIG_SND_HDA_RECONFIG is not set
+# CONFIG_SND_HDA_INPUT_BEEP is not set
+# CONFIG_SND_HDA_PATCH_LOADER is not set
+# CONFIG_SND_HDA_CODEC_REALTEK is not set
+# CONFIG_SND_HDA_CODEC_ANALOG is not set
+# CONFIG_SND_HDA_CODEC_SIGMATEL is not set
+# CONFIG_SND_HDA_CODEC_VIA is not set
+# CONFIG_SND_HDA_CODEC_HDMI is not set
+# CONFIG_SND_HDA_CODEC_CIRRUS is not set
+# CONFIG_SND_HDA_CODEC_CS8409 is not set
+# CONFIG_SND_HDA_CODEC_CONEXANT is not set
+# CONFIG_SND_HDA_CODEC_CA0110 is not set
+# CONFIG_SND_HDA_CODEC_CA0132 is not set
+# CONFIG_SND_HDA_CODEC_CMEDIA is not set
+# CONFIG_SND_HDA_CODEC_SI3054 is not set
+# CONFIG_SND_HDA_GENERIC is not set
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+# CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM is not set
+# CONFIG_SND_HDA_CTL_DEV_ID is not set
+# end of HD-Audio
+
+CONFIG_SND_HDA_CORE=y
+CONFIG_SND_HDA_COMPONENT=y
+CONFIG_SND_HDA_I915=y
+CONFIG_SND_HDA_PREALLOC_SIZE=0
+CONFIG_SND_INTEL_NHLT=y
+CONFIG_SND_INTEL_DSP_CONFIG=y
+CONFIG_SND_INTEL_SOUNDWIRE_ACPI=y
+CONFIG_SND_USB=y
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_UA101 is not set
+# CONFIG_SND_USB_USX2Y is not set
+# CONFIG_SND_USB_CAIAQ is not set
+# CONFIG_SND_USB_US122L 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
+# CONFIG_SND_SOC is not set
+CONFIG_SND_X86=y
+# CONFIG_HDMI_LPE_AUDIO is not set
+# CONFIG_SND_VIRTIO is not set
+
+#
+# HID support
+#
+CONFIG_HID=y
+# CONFIG_HID_BATTERY_STRENGTH is not set
+CONFIG_HIDRAW=y
+# CONFIG_UHID is not set
+CONFIG_HID_GENERIC=y
+
+#
+# Special HID drivers
+#
+CONFIG_HID_A4TECH=y
+# CONFIG_HID_ACCUTOUCH is not set
+# CONFIG_HID_ACRUX is not set
+CONFIG_HID_APPLE=y
+# CONFIG_HID_APPLEIR is not set
+# CONFIG_HID_ASUS is not set
+# CONFIG_HID_AUREAL is not set
+CONFIG_HID_BELKIN=y
+# CONFIG_HID_BETOP_FF is not set
+# CONFIG_HID_BIGBEN_FF is not set
+CONFIG_HID_CHERRY=y
+CONFIG_HID_CHICONY=y
+# 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=y
+# 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=y
+# 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_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=y
+# CONFIG_HID_ICADE is not set
+CONFIG_HID_ITE=y
+# 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_LETSKETCH is not set
+CONFIG_HID_LOGITECH=y
+# CONFIG_HID_LOGITECH_DJ is not set
+# CONFIG_HID_LOGITECH_HIDPP is not set
+CONFIG_LOGITECH_FF=y
+# CONFIG_LOGIRUMBLEPAD2_FF is not set
+# CONFIG_LOGIG940_FF is not set
+CONFIG_LOGIWHEELS_FF=y
+# 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=y
+CONFIG_HID_MICROSOFT=y
+CONFIG_HID_MONTEREY=y
+# CONFIG_HID_MULTITOUCH is not set
+# CONFIG_HID_NINTENDO is not set
+# CONFIG_HID_NTI is not set
+CONFIG_HID_NTRIG=y
+# CONFIG_HID_ORTEK is not set
+CONFIG_HID_PANTHERLORD=y
+CONFIG_PANTHERLORD_FF=y
+# CONFIG_HID_PENMOUNT is not set
+CONFIG_HID_PETALYNX=y
+# 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=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 is not set
+# CONFIG_HID_STEELSERIES is not set
+CONFIG_HID_SUNPLUS=y
+# 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=y
+# 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
+# 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
+# CONFIG_HID_MCP2221 is not set
+# end of Special HID drivers
+
+#
+# USB HID support
+#
+CONFIG_USB_HID=y
+CONFIG_HID_PID=y
+CONFIG_USB_HIDDEV=y
+# end of USB HID support
+
+#
+# I2C HID support
+#
+# CONFIG_I2C_HID_ACPI is not set
+# end of I2C HID support
+
+#
+# Intel ISH HID support
+#
+# CONFIG_INTEL_ISH_HID is not set
+# end of Intel ISH HID support
+
+#
+# AMD SFH HID Support
+#
+# CONFIG_AMD_SFH_HID is not set
+# end of AMD SFH HID Support
+# end of HID support
+
+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=y
+# CONFIG_USB_FEW_INIT_RETRIES is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+# CONFIG_USB_OTG_PRODUCTLIST is not set
+# CONFIG_USB_LEDS_TRIGGER_USBPORT is not set
+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 is not set
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+CONFIG_USB_EHCI_PCI=y
+# CONFIG_USB_EHCI_FSL is not set
+# CONFIG_USB_EHCI_HCD_PLATFORM is not set
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_FOTG210_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_PCI=y
+# CONFIG_USB_OHCI_HCD_PLATFORM is not set
+CONFIG_USB_UHCI_HCD=y
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_HCD_TEST_MODE is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+CONFIG_USB_PRINTER=y
+# CONFIG_USB_WDM is not set
+# CONFIG_USB_TMC is not set
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_REALTEK is not set
+# CONFIG_USB_STORAGE_DATAFAB 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 is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USBIP_CORE is not set
+# CONFIG_USB_CDNS_SUPPORT is not set
+# CONFIG_USB_MUSB_HDRC is not set
+# CONFIG_USB_DWC3 is not set
+# CONFIG_USB_DWC2 is not set
+# CONFIG_USB_CHIPIDEA is not set
+# CONFIG_USB_ISP1760 is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_SEVSEG is not set
+# CONFIG_USB_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_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 is not set
+# CONFIG_USB_HUB_USB251XB is not set
+# CONFIG_USB_HSIC_USB3503 is not set
+# CONFIG_USB_HSIC_USB4604 is not set
+# CONFIG_USB_LINK_LAYER_TEST is not set
+# CONFIG_USB_CHAOSKEY is not set
+
+#
+# USB Physical Layer drivers
+#
+# CONFIG_NOP_USB_XCEIV is not set
+# CONFIG_USB_GPIO_VBUS is not set
+# CONFIG_USB_ISP1301 is not set
+# end of USB Physical Layer drivers
+
+# CONFIG_USB_GADGET is not set
+# CONFIG_TYPEC is not set
+# CONFIG_USB_ROLE_SWITCH is not set
+# CONFIG_MMC 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_APU is not set
+# CONFIG_LEDS_LM3530 is not set
+# CONFIG_LEDS_LM3532 is not set
+# CONFIG_LEDS_LM3642 is not set
+# CONFIG_LEDS_PCA9532 is not set
+# CONFIG_LEDS_GPIO is not set
+# CONFIG_LEDS_LP3944 is not set
+# CONFIG_LEDS_LP3952 is not set
+# CONFIG_LEDS_LP50XX is not set
+# CONFIG_LEDS_PCA955X is not set
+# CONFIG_LEDS_PCA963X is not set
+# CONFIG_LEDS_BD2802 is not set
+# CONFIG_LEDS_INTEL_SS4200 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
+
+#
+# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
+#
+# CONFIG_LEDS_BLINKM is not set
+# CONFIG_LEDS_MLXCPLD is not set
+# CONFIG_LEDS_MLXREG is not set
+# CONFIG_LEDS_USER is not set
+# CONFIG_LEDS_NIC78BX is not set
+# CONFIG_LEDS_TI_LMU_COMMON is not set
+
+#
+# Flash and Torch LED drivers
+#
+
+#
+# RGB LED drivers
+#
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+# CONFIG_LEDS_TRIGGER_TIMER is not set
+# CONFIG_LEDS_TRIGGER_ONESHOT is not set
+# CONFIG_LEDS_TRIGGER_DISK 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_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_ATOMIC_SCRUB=y
+CONFIG_EDAC_SUPPORT=y
+CONFIG_EDAC=y
+CONFIG_EDAC_LEGACY_SYSFS=y
+# CONFIG_EDAC_DEBUG is not set
+CONFIG_EDAC_DECODE_MCE=y
+# CONFIG_EDAC_AMD64 is not set
+# CONFIG_EDAC_E752X is not set
+# CONFIG_EDAC_I82975X is not set
+# CONFIG_EDAC_I3000 is not set
+# CONFIG_EDAC_I3200 is not set
+# CONFIG_EDAC_IE31200 is not set
+# CONFIG_EDAC_X38 is not set
+# CONFIG_EDAC_I5400 is not set
+# CONFIG_EDAC_I7CORE is not set
+# CONFIG_EDAC_I5000 is not set
+# CONFIG_EDAC_I5100 is not set
+# CONFIG_EDAC_I7300 is not set
+# CONFIG_EDAC_SBRIDGE is not set
+# CONFIG_EDAC_SKX is not set
+# CONFIG_EDAC_I10NM is not set
+# CONFIG_EDAC_PND2 is not set
+# CONFIG_EDAC_IGEN6 is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_MC146818_LIB=y
+CONFIG_RTC_CLASS=y
+# CONFIG_RTC_HCTOSYS is not set
+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_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_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_ISL12022 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8523 is not set
+# CONFIG_RTC_DRV_PCF85063 is not set
+# CONFIG_RTC_DRV_PCF85363 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+# CONFIG_RTC_DRV_BQ32K is not set
+# CONFIG_RTC_DRV_S35390A is not set
+# CONFIG_RTC_DRV_FM3130 is not set
+# CONFIG_RTC_DRV_RX8010 is not set
+# CONFIG_RTC_DRV_RX8581 is not set
+# CONFIG_RTC_DRV_RX8025 is not set
+# CONFIG_RTC_DRV_EM3027 is not set
+# CONFIG_RTC_DRV_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_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_CMOS=y
+# 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
+
+#
+# on-CPU RTC drivers
+#
+# CONFIG_RTC_DRV_FTRTC010 is not set
+
+#
+# HID Sensor RTC drivers
+#
+# CONFIG_RTC_DRV_GOLDFISH is not set
+CONFIG_DMADEVICES=y
+# CONFIG_DMADEVICES_DEBUG is not set
+
+#
+# DMA Devices
+#
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DMA_ACPI=y
+# CONFIG_ALTERA_MSGDMA is not set
+# CONFIG_INTEL_IDMA64 is not set
+# CONFIG_INTEL_IDXD is not set
+# CONFIG_INTEL_IDXD_COMPAT is not set
+# CONFIG_INTEL_IOATDMA is not set
+# CONFIG_PLX_DMA is not set
+# CONFIG_AMD_PTDMA is not set
+# CONFIG_QCOM_HIDMA_MGMT is not set
+# CONFIG_QCOM_HIDMA is not set
+CONFIG_DW_DMAC_CORE=y
+# CONFIG_DW_DMAC is not set
+# CONFIG_DW_DMAC_PCI is not set
+# CONFIG_DW_EDMA is not set
+# CONFIG_DW_EDMA_PCIE is not set
+CONFIG_HSU_DMA=y
+# CONFIG_SF_PDMA is not set
+# CONFIG_INTEL_LDMA 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 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
+CONFIG_IRQ_BYPASS_MANAGER=y
+CONFIG_VIRT_DRIVERS=y
+# CONFIG_VMGENID is not set
+# CONFIG_VBOXGUEST is not set
+# CONFIG_NITRO_ENCLAVES is not set
+# CONFIG_EFI_SECRET is not set
+CONFIG_VIRTIO_ANCHOR=y
+CONFIG_VIRTIO=y
+CONFIG_VIRTIO_PCI_LIB=y
+CONFIG_VIRTIO_PCI_LIB_LEGACY=y
+CONFIG_VIRTIO_MENU=y
+CONFIG_VIRTIO_PCI=y
+CONFIG_VIRTIO_PCI_LEGACY=y
+# CONFIG_VIRTIO_BALLOON is not set
+CONFIG_VIRTIO_INPUT=y
+# CONFIG_VIRTIO_MMIO 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 is not set
+# CONFIG_CHROME_PLATFORMS is not set
+# CONFIG_MELLANOX_PLATFORM is not set
+# CONFIG_SURFACE_PLATFORMS is not set
+CONFIG_X86_PLATFORM_DEVICES=y
+CONFIG_ACPI_WMI=y
+# CONFIG_WMI_BMOF is not set
+# CONFIG_HUAWEI_WMI is not set
+# CONFIG_MXM_WMI is not set
+# CONFIG_PEAQ_WMI is not set
+# CONFIG_NVIDIA_WMI_EC_BACKLIGHT is not set
+# CONFIG_XIAOMI_WMI is not set
+# CONFIG_GIGABYTE_WMI is not set
+# CONFIG_YOGABOOK_WMI is not set
+# CONFIG_ACERHDF is not set
+# CONFIG_ACER_WIRELESS is not set
+# CONFIG_ACER_WMI is not set
+# CONFIG_AMD_PMF is not set
+# CONFIG_AMD_PMC is not set
+# CONFIG_AMD_HSMP is not set
+# CONFIG_ADV_SWBUTTON is not set
+# CONFIG_APPLE_GMUX is not set
+# CONFIG_ASUS_LAPTOP is not set
+# CONFIG_ASUS_WIRELESS is not set
+# CONFIG_ASUS_WMI is not set
+# CONFIG_ASUS_TF103C_DOCK is not set
+CONFIG_EEEPC_LAPTOP=y
+# CONFIG_X86_PLATFORM_DRIVERS_DELL is not set
+# CONFIG_AMILO_RFKILL is not set
+# CONFIG_FUJITSU_LAPTOP is not set
+# CONFIG_FUJITSU_TABLET is not set
+# CONFIG_GPD_POCKET_FAN is not set
+# CONFIG_X86_PLATFORM_DRIVERS_HP is not set
+# CONFIG_WIRELESS_HOTKEY is not set
+# CONFIG_IBM_RTL is not set
+# CONFIG_IDEAPAD_LAPTOP is not set
+# CONFIG_SENSORS_HDAPS is not set
+# CONFIG_THINKPAD_ACPI is not set
+# CONFIG_THINKPAD_LMI is not set
+# CONFIG_INTEL_ATOMISP2_PM is not set
+# CONFIG_INTEL_SAR_INT1092 is not set
+# CONFIG_INTEL_PMC_CORE is not set
+
+#
+# Intel Speed Select Technology interface support
+#
+# CONFIG_INTEL_SPEED_SELECT_INTERFACE is not set
+# end of Intel Speed Select Technology interface support
+
+# CONFIG_INTEL_WMI_SBL_FW_UPDATE is not set
+# CONFIG_INTEL_WMI_THUNDERBOLT is not set
+
+#
+# Intel Uncore Frequency Control
+#
+# CONFIG_INTEL_UNCORE_FREQ_CONTROL is not set
+# end of Intel Uncore Frequency Control
+
+# CONFIG_INTEL_HID_EVENT is not set
+# CONFIG_INTEL_VBTN is not set
+# CONFIG_INTEL_INT0002_VGPIO is not set
+# CONFIG_INTEL_OAKTRAIL is not set
+# CONFIG_INTEL_PUNIT_IPC is not set
+# CONFIG_INTEL_RST is not set
+# CONFIG_INTEL_SMARTCONNECT is not set
+# CONFIG_INTEL_TURBO_MAX_3 is not set
+# CONFIG_INTEL_VSEC is not set
+# CONFIG_MSI_LAPTOP is not set
+# CONFIG_MSI_WMI is not set
+# CONFIG_PCENGINES_APU2 is not set
+# CONFIG_BARCO_P50_GPIO is not set
+# CONFIG_SAMSUNG_LAPTOP is not set
+# CONFIG_SAMSUNG_Q10 is not set
+# CONFIG_TOSHIBA_BT_RFKILL is not set
+# CONFIG_TOSHIBA_HAPS is not set
+# CONFIG_TOSHIBA_WMI is not set
+# CONFIG_ACPI_CMPC is not set
+# CONFIG_COMPAL_LAPTOP is not set
+# CONFIG_LG_LAPTOP is not set
+# CONFIG_PANASONIC_LAPTOP is not set
+# CONFIG_SONY_LAPTOP is not set
+# CONFIG_SYSTEM76_ACPI is not set
+# CONFIG_TOPSTAR_LAPTOP is not set
+# CONFIG_MLX_PLATFORM is not set
+# CONFIG_INTEL_IPS is not set
+# CONFIG_INTEL_SCU_PCI is not set
+# CONFIG_INTEL_SCU_PLATFORM is not set
+# CONFIG_SIEMENS_SIMATIC_IPC is not set
+# CONFIG_WINMATE_FM07_KEYS is not set
+CONFIG_P2SB=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_COMMON_CLK=y
+# CONFIG_COMMON_CLK_MAX9485 is not set
+# CONFIG_COMMON_CLK_SI5341 is not set
+# CONFIG_COMMON_CLK_SI5351 is not set
+# CONFIG_COMMON_CLK_SI544 is not set
+# CONFIG_COMMON_CLK_CDCE706 is not set
+# CONFIG_COMMON_CLK_CS2000_CP is not set
+# CONFIG_XILINX_VCU is not set
+# CONFIG_HWSPINLOCK is not set
+
+#
+# Clock Source drivers
+#
+CONFIG_CLKEVT_I8253=y
+CONFIG_I8253_LOCK=y
+CONFIG_CLKBLD_I8253=y
+# end of Clock Source drivers
+
+CONFIG_MAILBOX=y
+CONFIG_PCC=y
+# CONFIG_ALTERA_MBOX is not set
+CONFIG_IOMMU_IOVA=y
+CONFIG_IOASID=y
+CONFIG_IOMMU_API=y
+CONFIG_IOMMU_SUPPORT=y
+
+#
+# Generic IOMMU Pagetable Support
+#
+CONFIG_IOMMU_IO_PGTABLE=y
+# end of Generic IOMMU Pagetable Support
+
+# CONFIG_IOMMU_DEBUGFS is not set
+# CONFIG_IOMMU_DEFAULT_DMA_STRICT is not set
+CONFIG_IOMMU_DEFAULT_DMA_LAZY=y
+# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
+CONFIG_IOMMU_DMA=y
+CONFIG_AMD_IOMMU=y
+# CONFIG_AMD_IOMMU_V2 is not set
+CONFIG_DMAR_TABLE=y
+CONFIG_INTEL_IOMMU=y
+# CONFIG_INTEL_IOMMU_SVM is not set
+# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
+CONFIG_INTEL_IOMMU_FLOPPY_WA=y
+# CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON is not set
+# CONFIG_INTEL_IOMMU_PERF_EVENTS is not set
+# CONFIG_IRQ_REMAP is not set
+# CONFIG_VIRTIO_IOMMU 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
+#
+# end of Broadcom SoC drivers
+
+#
+# NXP/Freescale QorIQ SoC drivers
+#
+# 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
+#
+# end of Enable LiteX SoC Builder specific drivers
+
+#
+# Qualcomm SoC drivers
+#
+# end of Qualcomm SoC drivers
+
+# 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 is not set
+# CONFIG_EXTCON is not set
+# CONFIG_MEMORY is not set
+# CONFIG_IIO is not set
+# CONFIG_NTB is not set
+# CONFIG_PWM is not set
+
+#
+# IRQ chip support
+#
+# end of IRQ chip support
+
+# CONFIG_IPACK_BUS is not set
+# CONFIG_RESET_CONTROLLER is not set
+
+#
+# PHY Subsystem
+#
+# CONFIG_GENERIC_PHY is not set
+# CONFIG_USB_LGM_PHY is not set
+# 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_PXA_28NM_HSIC is not set
+# CONFIG_PHY_PXA_28NM_USB2 is not set
+# CONFIG_PHY_INTEL_LGM_EMMC is not set
+# end of PHY Subsystem
+
+# CONFIG_POWERCAP is not set
+# CONFIG_MCB is not set
+
+#
+# Performance monitor support
+#
+# 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
+# CONFIG_NVMEM_RMEM 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_TEE is not set
+# CONFIG_SIOX is not set
+# CONFIG_SLIMBUS is not set
+# CONFIG_INTERCONNECT is not set
+# CONFIG_COUNTER is not set
+# CONFIG_PECI is not set
+# CONFIG_HTE 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_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+CONFIG_EXT4_FS=y
+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 is not set
+# CONFIG_GFS2_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=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_FANOTIFY is not set
+CONFIG_QUOTA=y
+CONFIG_QUOTA_NETLINK_INTERFACE=y
+# CONFIG_PRINT_QUOTA_WARNING is not set
+# CONFIG_QUOTA_DEBUG is not set
+CONFIG_QUOTA_TREE=y
+# CONFIG_QFMT_V1 is not set
+CONFIG_QFMT_V2=y
+CONFIG_QUOTACTL=y
+CONFIG_AUTOFS4_FS=y
+CONFIG_AUTOFS_FS=y
+# CONFIG_FUSE_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
+
+#
+# Caches
+#
+# CONFIG_FSCACHE 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="iso8859-1"
+# CONFIG_FAT_DEFAULT_UTF8 is not set
+# CONFIG_EXFAT_FS is not set
+# 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=y
+CONFIG_PROC_VMCORE=y
+# CONFIG_PROC_VMCORE_DEVICE_DUMP is not set
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+# CONFIG_PROC_CHILDREN is not set
+CONFIG_PROC_PID_ARCH_STATUS=y
+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_HUGETLBFS=y
+CONFIG_HUGETLB_PAGE=y
+CONFIG_ARCH_WANT_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y
+CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y
+# CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON is not set
+CONFIG_MEMFD_CREATE=y
+CONFIG_ARCH_HAS_GIGANTIC_PAGE=y
+# CONFIG_CONFIGFS_FS is not set
+CONFIG_EFIVAR_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_CRAMFS is not set
+CONFIG_SQUASHFS=y
+CONFIG_SQUASHFS_FILE_CACHE=y
+# CONFIG_SQUASHFS_FILE_DIRECT is not set
+# CONFIG_SQUASHFS_DECOMP_SINGLE is not set
+CONFIG_SQUASHFS_DECOMP_MULTI=y
+# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set
+CONFIG_SQUASHFS_XATTR=y
+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 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=y
+CONFIG_NFS_V2=y
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+# CONFIG_NFS_SWAP is not set
+# CONFIG_NFS_V4_1 is not set
+CONFIG_ROOT_NFS=y
+# CONFIG_NFS_USE_LEGACY_DNS is not set
+CONFIG_NFS_USE_KERNEL_DNS=y
+# CONFIG_NFS_DISABLE_UDP_SUPPORT is not set
+# CONFIG_NFSD is not set
+CONFIG_GRACE_PERIOD=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_ACL_SUPPORT=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+# CONFIG_SUNRPC_DEBUG 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_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_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_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=y
+# CONFIG_SECURITYFS is not set
+CONFIG_SECURITY_NETWORK=y
+# CONFIG_SECURITY_NETWORK_XFRM is not set
+# CONFIG_SECURITY_PATH is not set
+# CONFIG_INTEL_TXT is not set
+CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
+# CONFIG_HARDENED_USERCOPY is not set
+# CONFIG_FORTIFY_SOURCE is not set
+# CONFIG_STATIC_USERMODEHELPER is not set
+# CONFIG_SECURITY_SELINUX 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_IMA_SECURE_AND_OR_TRUSTED_BOOT is not set
+# CONFIG_EVM is not set
+CONFIG_DEFAULT_SECURITY_DAC=y
+CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor"
+
+#
+# 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
+# end of Memory initialization
+
+CONFIG_RANDSTRUCT_NONE=y
+# end of Kernel hardening options
+# end of Security options
+
+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_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_ACOMP2=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_CRYPTD is not set
+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_ECDH is not set
+# 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_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_SERPENT is not set
+# CONFIG_CRYPTO_SM4_GENERIC is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# end of Block ciphers
+
+#
+# Length-preserving ciphers and modes
+#
+# CONFIG_CRYPTO_ADIANTUM is not set
+# CONFIG_CRYPTO_CHACHA20 is not set
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_CFB is not set
+CONFIG_CRYPTO_CTR=y
+# CONFIG_CRYPTO_CTS is not set
+# CONFIG_CRYPTO_ECB is not set
+# 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 is not set
+# 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_CCM=y
+CONFIG_CRYPTO_GCM=y
+CONFIG_CRYPTO_SEQIV=y
+CONFIG_CRYPTO_ECHAINIV=y
+# CONFIG_CRYPTO_ESSIV is not set
+# 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 is not set
+# CONFIG_CRYPTO_RMD160 is not set
+CONFIG_CRYPTO_SHA1=y
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA512=y
+# CONFIG_CRYPTO_SHA3 is not set
+# 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
+
+#
+# CRCs (cyclic redundancy checks)
+#
+CONFIG_CRYPTO_CRC32C=y
+# CONFIG_CRYPTO_CRC32 is not set
+# CONFIG_CRYPTO_CRCT10DIF is not set
+# end of CRCs (cyclic redundancy checks)
+
+#
+# Compression
+#
+# CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_LZO is not set
+# CONFIG_CRYPTO_842 is not set
+# CONFIG_CRYPTO_LZ4 is not set
+# CONFIG_CRYPTO_LZ4HC is not set
+# CONFIG_CRYPTO_ZSTD is not set
+# end of Compression
+
+#
+# Random number generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_DRBG_MENU=y
+CONFIG_CRYPTO_DRBG_HMAC=y
+# CONFIG_CRYPTO_DRBG_HASH is not set
+# CONFIG_CRYPTO_DRBG_CTR is not set
+CONFIG_CRYPTO_DRBG=y
+CONFIG_CRYPTO_JITTERENTROPY=y
+# end of Random number generation
+
+#
+# Userspace interface
+#
+# CONFIG_CRYPTO_USER_API_HASH is not set
+# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
+# CONFIG_CRYPTO_USER_API_RNG is not set
+# CONFIG_CRYPTO_USER_API_AEAD is not set
+# end of Userspace interface
+
+CONFIG_CRYPTO_HASH_INFO=y
+
+#
+# Accelerated Cryptographic Algorithms for CPU (x86)
+#
+# CONFIG_CRYPTO_CURVE25519_X86 is not set
+# CONFIG_CRYPTO_AES_NI_INTEL is not set
+# CONFIG_CRYPTO_BLOWFISH_X86_64 is not set
+# CONFIG_CRYPTO_CAMELLIA_X86_64 is not set
+# CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64 is not set
+# CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64 is not set
+# CONFIG_CRYPTO_CAST5_AVX_X86_64 is not set
+# CONFIG_CRYPTO_CAST6_AVX_X86_64 is not set
+# CONFIG_CRYPTO_DES3_EDE_X86_64 is not set
+# CONFIG_CRYPTO_SERPENT_SSE2_X86_64 is not set
+# CONFIG_CRYPTO_SERPENT_AVX_X86_64 is not set
+# CONFIG_CRYPTO_SERPENT_AVX2_X86_64 is not set
+# CONFIG_CRYPTO_SM4_AESNI_AVX_X86_64 is not set
+# CONFIG_CRYPTO_SM4_AESNI_AVX2_X86_64 is not set
+# CONFIG_CRYPTO_TWOFISH_X86_64 is not set
+# CONFIG_CRYPTO_TWOFISH_X86_64_3WAY is not set
+# CONFIG_CRYPTO_TWOFISH_AVX_X86_64 is not set
+# CONFIG_CRYPTO_ARIA_AESNI_AVX_X86_64 is not set
+# CONFIG_CRYPTO_CHACHA20_X86_64 is not set
+# CONFIG_CRYPTO_AEGIS128_AESNI_SSE2 is not set
+# CONFIG_CRYPTO_NHPOLY1305_SSE2 is not set
+# CONFIG_CRYPTO_NHPOLY1305_AVX2 is not set
+# CONFIG_CRYPTO_BLAKE2S_X86 is not set
+# CONFIG_CRYPTO_POLYVAL_CLMUL_NI is not set
+# CONFIG_CRYPTO_POLY1305_X86_64 is not set
+# CONFIG_CRYPTO_SHA1_SSSE3 is not set
+# CONFIG_CRYPTO_SHA256_SSSE3 is not set
+# CONFIG_CRYPTO_SHA512_SSSE3 is not set
+# CONFIG_CRYPTO_SM3_AVX_X86_64 is not set
+# CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL is not set
+# CONFIG_CRYPTO_CRC32C_INTEL is not set
+# CONFIG_CRYPTO_CRC32_PCLMUL is not set
+# end of Accelerated Cryptographic Algorithms for CPU (x86)
+
+CONFIG_CRYPTO_HW=y
+# CONFIG_CRYPTO_DEV_PADLOCK is not set
+# 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_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_NITROX_CNN55XX is not set
+CONFIG_CRYPTO_DEV_VIRTIO=y
+# CONFIG_CRYPTO_DEV_SAFEXCEL 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_PACKING is not set
+CONFIG_BITREVERSE=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_GENERIC_IOMAP=y
+CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
+CONFIG_ARCH_HAS_FAST_MULTIPLIER=y
+CONFIG_ARCH_USE_SYM_ANNOTATIONS=y
+
+#
+# Crypto library routines
+#
+CONFIG_CRYPTO_LIB_UTILS=y
+CONFIG_CRYPTO_LIB_AES=y
+CONFIG_CRYPTO_LIB_ARC4=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=11
+# 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 is not set
+# CONFIG_CRC64_ROCKSOFT is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC32_SELFTEST is not set
+CONFIG_CRC32_SLICEBY8=y
+# CONFIG_CRC32_SLICEBY4 is not set
+# CONFIG_CRC32_SARWATE is not set
+# CONFIG_CRC32_BIT is not set
+# CONFIG_CRC64 is not set
+# CONFIG_CRC4 is not set
+# CONFIG_CRC7 is not set
+# CONFIG_LIBCRC32C is not set
+# CONFIG_CRC8 is not set
+CONFIG_XXHASH=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_ZSTD_COMMON=y
+CONFIG_ZSTD_DECOMPRESS=y
+CONFIG_XZ_DEC=y
+CONFIG_XZ_DEC_X86=y
+CONFIG_XZ_DEC_POWERPC=y
+CONFIG_XZ_DEC_IA64=y
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_ARMTHUMB=y
+CONFIG_XZ_DEC_SPARC=y
+# 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_GENERIC_ALLOCATOR=y
+CONFIG_INTERVAL_TREE=y
+CONFIG_XARRAY_MULTI=y
+CONFIG_ASSOCIATIVE_ARRAY=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT_MAP=y
+CONFIG_HAS_DMA=y
+CONFIG_DMA_OPS=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
+CONFIG_SWIOTLB=y
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_DMA_MAP_BENCHMARK is not set
+CONFIG_SGL_ALLOC=y
+CONFIG_CHECK_SIGNATURE=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_IRQ_POLL is not set
+CONFIG_MPILIB=y
+CONFIG_OID_REGISTRY=y
+CONFIG_UCS2_STRING=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_HAS_COPY_MC=y
+CONFIG_ARCH_STACKWALK=y
+CONFIG_STACKDEPOT=y
+CONFIG_SBITMAP=y
+# end of Library routines
+
+#
+# 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=4
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# 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
+
+CONFIG_DEBUG_KERNEL=y
+CONFIG_DEBUG_MISC=y
+
+#
+# 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_OBJTOOL=y
+# 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=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_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
+# 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_ARCH_HAS_DEBUG_WX=y
+# CONFIG_DEBUG_WX is not set
+CONFIG_GENERIC_PTDUMP=y
+# CONFIG_PTDUMP_DEBUGFS is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SHRINKER_DEBUG is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+CONFIG_DEBUG_STACK_USAGE=y
+# 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=y
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
+CONFIG_ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP=y
+# CONFIG_DEBUG_KMAP_LOCAL_FORCE_MAP is not set
+CONFIG_HAVE_ARCH_KASAN=y
+CONFIG_HAVE_ARCH_KASAN_VMALLOC=y
+CONFIG_CC_HAS_KASAN_GENERIC=y
+CONFIG_HAVE_ARCH_KFENCE=y
+# CONFIG_KFENCE is not set
+CONFIG_HAVE_ARCH_KMSAN=y
+# 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=0
+# CONFIG_SOFTLOCKUP_DETECTOR is not set
+CONFIG_HARDLOCKUP_CHECK_TIMESTAMP=y
+# CONFIG_HARDLOCKUP_DETECTOR is not set
+# CONFIG_DETECT_HUNG_TASK is not set
+# CONFIG_WQ_WATCHDOG 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
+
+#
+# Lock Debugging (spinlocks, mutexes, etc...)
+#
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
+# CONFIG_DEBUG_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_BUG_ON_DATA_CORRUPTION is not set
+# CONFIG_DEBUG_MAPLE_TREE is not set
+# end of Debug kernel data structures
+
+# CONFIG_DEBUG_CREDENTIALS is not set
+
+#
+# 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=21
+CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=0
+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_CPU_HOTPLUG_STATE_CONTROL is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_USER_STACKTRACE_SUPPORT=y
+CONFIG_NOP_TRACER=y
+CONFIG_HAVE_RETHOOK=y
+CONFIG_RETHOOK=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
+CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y
+CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS=y
+CONFIG_HAVE_DYNAMIC_FTRACE_NO_PATCHABLE=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_HAVE_FENTRY=y
+CONFIG_HAVE_OBJTOOL_MCOUNT=y
+CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_HAVE_BUILDTIME_MCOUNT_SORT=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 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_MMIOTRACE 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_BLK_DEV_IO_TRACE=y
+CONFIG_KPROBE_EVENTS=y
+CONFIG_UPROBE_EVENTS=y
+CONFIG_DYNAMIC_EVENTS=y
+CONFIG_PROBE_EVENTS=y
+# CONFIG_SYNTH_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_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_KPROBE_EVENT_GEN_TEST is not set
+# CONFIG_RV is not set
+CONFIG_PROVIDE_OHCI1394_DMA_INIT=y
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_SAMPLE_FTRACE_DIRECT=y
+CONFIG_HAVE_SAMPLE_FTRACE_DIRECT_MULTI=y
+CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
+CONFIG_STRICT_DEVMEM=y
+# CONFIG_IO_STRICT_DEVMEM is not set
+
+#
+# x86 Debugging
+#
+CONFIG_EARLY_PRINTK_USB=y
+CONFIG_X86_VERBOSE_BOOTUP=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_EARLY_PRINTK_DBGP=y
+# CONFIG_EARLY_PRINTK_USB_XDBC is not set
+# CONFIG_EFI_PGT_DUMP is not set
+# CONFIG_DEBUG_TLBFLUSH is not set
+CONFIG_HAVE_MMIOTRACE_SUPPORT=y
+# CONFIG_X86_DECODER_SELFTEST is not set
+CONFIG_IO_DELAY_0X80=y
+# CONFIG_IO_DELAY_0XED is not set
+# CONFIG_IO_DELAY_UDELAY is not set
+# CONFIG_IO_DELAY_NONE is not set
+CONFIG_DEBUG_BOOT_PARAMS=y
+# CONFIG_CPA_DEBUG is not set
+# CONFIG_DEBUG_ENTRY is not set
+# CONFIG_DEBUG_NMI_SELFTEST is not set
+CONFIG_X86_DEBUG_FPU=y
+# CONFIG_PUNIT_ATOM_DEBUG is not set
+CONFIG_UNWINDER_ORC=y
+# CONFIG_UNWINDER_FRAME_POINTER is not set
+# end of x86 Debugging
+
+#
+# Kernel Testing and Coverage
+#
+# CONFIG_KUNIT is not set
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
+CONFIG_FUNCTION_ERROR_INJECTION=y
+# 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_LKDTM 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_STRSCPY 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_SIPHASH 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_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_TEST_FPU is not set
+# CONFIG_TEST_CLOCKSOURCE_WATCHDOG 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/packages/base/any/kernels/6.1-lts/kconfig.mk b/packages/base/any/kernels/6.1-lts/kconfig.mk
new file mode 100644
index 0000000000..74e6527fa7
--- /dev/null
+++ b/packages/base/any/kernels/6.1-lts/kconfig.mk
@@ -0,0 +1,7 @@
+THIS_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
+K_MAJOR_VERSION := 6
+K_PATCH_LEVEL := 1
+K_SUB_LEVEL := 107
+K_SUFFIX :=
+K_PATCH_DIR := $(THIS_DIR)/patches
+K_MODSYNCLIST := tools/objtool
diff --git a/packages/base/any/kernels/modules/accton_i2c_psu.c b/packages/base/any/kernels/modules/accton_i2c_psu.c
index 279ffd9d54..8fc38c5a66 100755
--- a/packages/base/any/kernels/modules/accton_i2c_psu.c
+++ b/packages/base/any/kernels/modules/accton_i2c_psu.c
@@ -302,6 +302,38 @@ static const struct attribute_group accton_i2c_psu_group = {
.attrs = accton_i2c_psu_attributes,
};
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,9,0)
+static umode_t accton_i2c_psu_is_visible(const void *drvdata,
+ enum hwmon_sensor_types type,
+ u32 attr, int channel)
+{
+ return 0;
+}
+
+static u32 accton_i2c_psu_hwmon_config[] = {
+ HWMON_P_LABEL,
+};
+
+static const struct hwmon_channel_info accton_i2c_psu_hwmon_channel_info = {
+ .type = hwmon_power,
+ .config = accton_i2c_psu_hwmon_config,
+};
+
+static const struct hwmon_channel_info *accton_i2c_psu_hwmon_info[] = {
+ &accton_i2c_psu_hwmon_channel_info,
+ NULL,
+};
+
+static const struct hwmon_ops accton_i2c_psu_hwmon_ops = {
+ .is_visible = accton_i2c_psu_is_visible,
+};
+
+static const struct hwmon_chip_info accton_i2c_psu_chip_info = {
+ .ops = &accton_i2c_psu_hwmon_ops,
+ .info = accton_i2c_psu_hwmon_info,
+};
+#endif
+
static int accton_i2c_psu_probe(struct i2c_client *client,
const struct i2c_device_id *dev_id)
{
@@ -334,7 +366,7 @@ static int accton_i2c_psu_probe(struct i2c_client *client,
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,9,0)
data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "accton_i2c_psu",
- NULL, NULL, NULL);
+ NULL, &accton_i2c_psu_chip_info, NULL);
#else
data->hwmon_dev = hwmon_device_register(&client->dev);
#endif
@@ -357,7 +389,11 @@ static int accton_i2c_psu_probe(struct i2c_client *client,
return status;
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6,1,0)
static int accton_i2c_psu_remove(struct i2c_client *client)
+#else
+static void accton_i2c_psu_remove(struct i2c_client *client)
+#endif
{
struct accton_i2c_psu_data *data = i2c_get_clientdata(client);
@@ -365,7 +401,10 @@ static int accton_i2c_psu_remove(struct i2c_client *client)
sysfs_remove_group(&client->dev.kobj, &accton_i2c_psu_group);
kfree(data);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6,1,0)
return 0;
+#endif
+
}
/* Support psu moduel
*/
diff --git a/packages/base/any/kernels/modules/cpr_4011_4mxx.c b/packages/base/any/kernels/modules/cpr_4011_4mxx.c
index cfb58ee4d0..27e5ab7932 100644
--- a/packages/base/any/kernels/modules/cpr_4011_4mxx.c
+++ b/packages/base/any/kernels/modules/cpr_4011_4mxx.c
@@ -270,7 +270,11 @@ static int cpr_4011_4mxx_probe(struct i2c_client *client,
return status;
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6,1,0)
static int cpr_4011_4mxx_remove(struct i2c_client *client)
+#else
+static void cpr_4011_4mxx_remove(struct i2c_client *client)
+#endif
{
struct cpr_4011_4mxx_data *data = i2c_get_clientdata(client);
@@ -278,7 +282,9 @@ static int cpr_4011_4mxx_remove(struct i2c_client *client)
sysfs_remove_group(&client->dev.kobj, &cpr_4011_4mxx_group);
kfree(data);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6,1,0)
return 0;
+#endif
}
static const struct i2c_device_id cpr_4011_4mxx_id[] = {
diff --git a/packages/base/any/kernels/modules/dps850.c b/packages/base/any/kernels/modules/dps850.c
index cb7c1d8f55..0a00600c37 100755
--- a/packages/base/any/kernels/modules/dps850.c
+++ b/packages/base/any/kernels/modules/dps850.c
@@ -280,7 +280,11 @@ static int dps850_probe(struct i2c_client *client,
return status;
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6,1,0)
static int dps850_remove(struct i2c_client *client)
+#else
+static void dps850_remove(struct i2c_client *client)
+#endif
{
struct dps850_data *data = i2c_get_clientdata(client);
@@ -288,7 +292,9 @@ static int dps850_remove(struct i2c_client *client)
sysfs_remove_group(&client->dev.kobj, &dps850_group);
kfree(data);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6,1,0)
return 0;
+#endif
}
static const struct i2c_device_id dps850_id[] = {
diff --git a/packages/base/any/kernels/modules/emerson700.c b/packages/base/any/kernels/modules/emerson700.c
index b1a537c8f2..807b0ad698 100644
--- a/packages/base/any/kernels/modules/emerson700.c
+++ b/packages/base/any/kernels/modules/emerson700.c
@@ -237,4 +237,8 @@ MODULE_AUTHOR("Audi Hsu ");
MODULE_DESCRIPTION("Emerson 700 PMBus driver");
MODULE_LICENSE("GPL");
+#else
+
+MODULE_LICENSE("GPL");
+
#endif /* #if LINUX_VERSION_CODE < KERNEL_VERSION(5,4,0) */
diff --git a/packages/base/any/kernels/modules/optoe.c b/packages/base/any/kernels/modules/optoe.c
index 6354674a88..36d5229c80 100644
--- a/packages/base/any/kernels/modules/optoe.c
+++ b/packages/base/any/kernels/modules/optoe.c
@@ -125,6 +125,7 @@
#include
#include
#include
+#include
#ifdef EEPROM_CLASS
#include
@@ -801,7 +802,11 @@ static ssize_t optoe_bin_write(struct file *filp, struct kobject *kobj,
return optoe_read_write(optoe, buf, off, count, OPTOE_WRITE_OP);
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6,1,0)
static int optoe_remove(struct i2c_client *client)
+#else
+static void optoe_remove(struct i2c_client *client)
+#endif
{
struct optoe_data *optoe;
int i;
@@ -819,7 +824,10 @@ static int optoe_remove(struct i2c_client *client)
kfree(optoe->writebuf);
kfree(optoe);
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6,1,0)
return 0;
+#endif
}
static ssize_t show_dev_class(struct device *dev,
@@ -860,8 +868,13 @@ static ssize_t set_dev_class(struct device *dev,
/* SFP family */
/* if it doesn't exist, create 0x51 i2c address */
if (!optoe->client[1]) {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,5,0)
optoe->client[1] = i2c_new_dummy(client->adapter, 0x51);
if (!optoe->client[1]) {
+#else
+ optoe->client[1] = i2c_new_dummy_device(client->adapter, 0x51);
+ if (IS_ERR(optoe->client[1])) {
+#endif
dev_err(&client->dev,
"address 0x51 unavailable\n");
mutex_unlock(&optoe->lock);
@@ -1095,8 +1108,13 @@ static int optoe_probe(struct i2c_client *client,
/* SFF-8472 spec requires that the second I2C address be 0x51 */
if (num_addresses == 2) {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,5,0)
optoe->client[1] = i2c_new_dummy(client->adapter, 0x51);
if (!optoe->client[1]) {
+#else
+ optoe->client[1] = i2c_new_dummy_device(client->adapter, 0x51);
+ if (IS_ERR(optoe->client[1])) {
+#endif
dev_err(&client->dev, "address 0x51 unavailable\n");
err = -EADDRINUSE;
goto err_struct;
diff --git a/packages/base/any/kernels/modules/ym2651y.c b/packages/base/any/kernels/modules/ym2651y.c
index d85e84541c..5ac4ca77b7 100755
--- a/packages/base/any/kernels/modules/ym2651y.c
+++ b/packages/base/any/kernels/modules/ym2651y.c
@@ -518,7 +518,10 @@ static ssize_t show_vout(struct device *dev, struct device_attribute *da,
return show_vout_by_mode(dev, da, buf);
}
else if ((strncmp(ptr, "DPS-850A", strlen("DPS-850A")) == 0)||
- (strncmp(ptr, "YM-2851J", strlen("YM-2851J")) == 0)) {
+ (strncmp(ptr, "YM-2851J", strlen("YM-2851J")) == 0) ||
+ (strncmp(ptr, "UPD1501SA-1190G", strlen("UPD1501SA-1190G")) == 0) ||
+ (strncmp(ptr, "UPD1501SA-1290G", strlen("UPD1501SA-1290G")) == 0)) {
+
return show_vout_by_mode(dev, da, buf);
}
else {
@@ -530,6 +533,38 @@ static const struct attribute_group ym2651y_group = {
.attrs = ym2651y_attributes,
};
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,9,0)
+static umode_t ym2651y_is_visible(const void *drvdata,
+ enum hwmon_sensor_types type,
+ u32 attr, int channel)
+{
+ return 0;
+}
+
+static u32 ym2651y_hwmon_config[] = {
+ HWMON_P_LABEL,
+};
+
+static const struct hwmon_channel_info ym2651y_hwmon_channel_info = {
+ .type = hwmon_power,
+ .config = ym2651y_hwmon_config,
+};
+
+static const struct hwmon_channel_info *ym2651y_hwmon_info[] = {
+ &ym2651y_hwmon_channel_info,
+ NULL,
+};
+
+static const struct hwmon_ops ym2651y_hwmon_ops = {
+ .is_visible = ym2651y_is_visible,
+};
+
+static const struct hwmon_chip_info ym2651y_chip_info = {
+ .ops = &ym2651y_hwmon_ops,
+ .info = ym2651y_hwmon_info,
+};
+#endif
+
static int ym2651y_probe(struct i2c_client *client,
const struct i2c_device_id *dev_id)
{
@@ -567,7 +602,7 @@ static int ym2651y_probe(struct i2c_client *client,
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,9,0)
data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "ym2651y",
- NULL, NULL, NULL);
+ NULL, &ym2651y_chip_info, NULL);
#else
data->hwmon_dev = hwmon_device_register(&client->dev);
#endif
@@ -590,7 +625,11 @@ static int ym2651y_probe(struct i2c_client *client,
return status;
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6,1,0)
static int ym2651y_remove(struct i2c_client *client)
+#else
+static void ym2651y_remove(struct i2c_client *client)
+#endif
{
struct ym2651y_data *data = i2c_get_clientdata(client);
@@ -598,7 +637,9 @@ static int ym2651y_remove(struct i2c_client *client)
sysfs_remove_group(&client->dev.kobj, &ym2651y_group);
kfree(data);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6,1,0)
return 0;
+#endif
}
static const struct i2c_device_id ym2651y_id[] = {
@@ -827,23 +868,30 @@ static struct ym2651y_data *ym2651y_update_device(struct device *dev)
goto exit;
}
- /* Read mfr_model_opt */
- command = 0xd0;
- length = 1;
-
- /* Read first byte to determine the length of data */
- status = ym2651y_read_block(client, command, &buf, length);
- if (status < 0) {
- dev_dbg(&client->dev, "reg %d, err %d\n", command, status);
- goto exit;
- }
-
- status = ym2651y_read_block(client, command, data->mfr_model_opt, buf+1);
- data->mfr_model_opt[buf+1] = '\0';
-
- if (status < 0) {
- dev_dbg(&client->dev, "reg %d, err %d\n", command, status);
- goto exit;
+ if ((strncmp((data->mfr_model+1), "YM-2851J", strlen("YM-2851J")) == 0)||
+ (strncmp((data->mfr_model+1), "YM-2651Y", strlen("YM-2651Y")) == 0)||
+ (strncmp((data->mfr_model+1), "YPEB1200AM", strlen("YPEB1200AM")) == 0)) {
+
+ /* Read mfr_model_opt */
+ command = 0xd0;
+ length = 1;
+
+ /* Read first byte to determine the length of data */
+ status = ym2651y_read_block(client, command, &buf, length);
+ if (status < 0) {
+ dev_dbg(&client->dev, "reg %d, err %d\n", command, status);
+ goto exit;
+ }
+
+ status = ym2651y_read_block(
+ client, command, data->mfr_model_opt, buf+1);
+
+ data->mfr_model_opt[buf+1] = '\0';
+
+ if (status < 0) {
+ dev_dbg(&client->dev, "reg %d, err %d\n", command, status);
+ goto exit;
+ }
}
/* Read mfr_revsion */
diff --git a/packages/platforms/accton/x86-64/as4630-54pe/modules/PKG.yml b/packages/platforms/accton/x86-64/as4630-54pe/modules/PKG.yml
index 02f8cdbb85..7f745325e8 100755
--- a/packages/platforms/accton/x86-64/as4630-54pe/modules/PKG.yml
+++ b/packages/platforms/accton/x86-64/as4630-54pe/modules/PKG.yml
@@ -1 +1 @@
-!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as4630-54pe ARCH=amd64 KERNELS="onl-kernel-4.14-lts-x86-64-all:amd64"
+!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as4630-54pe ARCH=amd64 KERNELS="onl-kernel-6.1-lts-x86-64-all:amd64"
diff --git a/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/Makefile b/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/Makefile
index 9af0808cbc..62ee757d51 100755
--- a/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/Makefile
+++ b/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/Makefile
@@ -1,5 +1,5 @@
-KERNELS := onl-kernel-4.14-lts-x86-64-all:amd64
-KMODULES := $(wildcard *.c)
+KERNELS := onl-kernel-6.1-lts-x86-64-all:amd64
+KMODULES := src
VENDOR := accton
BASENAME := x86-64-accton-as4630-54pe
ARCH := x86_64
diff --git a/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/src/Makefile b/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/src/Makefile
new file mode 100644
index 0000000000..aa11d9dba1
--- /dev/null
+++ b/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/src/Makefile
@@ -0,0 +1,3 @@
+obj-m += x86-64-accton-as4630-54pe-cpld.o
+obj-m += x86-64-accton-as4630-54pe-leds.o
+obj-m += x86-64-accton-as4630-54pe-psu.o
\ No newline at end of file
diff --git a/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/x86-64-accton-as4630-54pe-cpld.c b/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/src/x86-64-accton-as4630-54pe-cpld.c
similarity index 99%
rename from packages/platforms/accton/x86-64/as4630-54pe/modules/builds/x86-64-accton-as4630-54pe-cpld.c
rename to packages/platforms/accton/x86-64/as4630-54pe/modules/builds/src/x86-64-accton-as4630-54pe-cpld.c
index 97e49402f0..a2c40c8f00 100755
--- a/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/x86-64-accton-as4630-54pe-cpld.c
+++ b/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/src/x86-64-accton-as4630-54pe-cpld.c
@@ -723,7 +723,7 @@ static int as4630_54pe_cpld_probe(struct i2c_client *client,
return ret;
}
-static int as4630_54pe_cpld_remove(struct i2c_client *client)
+static void as4630_54pe_cpld_remove(struct i2c_client *client)
{
struct as4630_54pe_cpld_data *data = i2c_get_clientdata(client);
const struct attribute_group *group = NULL;
@@ -745,8 +745,6 @@ static int as4630_54pe_cpld_remove(struct i2c_client *client)
}
kfree(data);
-
- return 0;
}
static int as4630_54pe_cpld_read_internal(struct i2c_client *client, u8 reg)
diff --git a/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/x86-64-accton-as4630-54pe-leds.c b/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/src/x86-64-accton-as4630-54pe-leds.c
similarity index 100%
rename from packages/platforms/accton/x86-64/as4630-54pe/modules/builds/x86-64-accton-as4630-54pe-leds.c
rename to packages/platforms/accton/x86-64/as4630-54pe/modules/builds/src/x86-64-accton-as4630-54pe-leds.c
diff --git a/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/x86-64-accton-as4630-54pe-psu.c b/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/src/x86-64-accton-as4630-54pe-psu.c
similarity index 65%
rename from packages/platforms/accton/x86-64/as4630-54pe/modules/builds/x86-64-accton-as4630-54pe-psu.c
rename to packages/platforms/accton/x86-64/as4630-54pe/modules/builds/src/x86-64-accton-as4630-54pe-psu.c
index 73f1e672e5..0a3d8b5b16 100755
--- a/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/x86-64-accton-as4630-54pe-psu.c
+++ b/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/src/x86-64-accton-as4630-54pe-psu.c
@@ -37,6 +37,7 @@
#define MAX_MODEL_NAME 20
#define MAX_SERIAL_NUMBER 19
+static int models_min_offset = 0;
static ssize_t show_status(struct device *dev, struct device_attribute *da, char *buf);
static ssize_t show_string(struct device *dev, struct device_attribute *da, char *buf);
static int as4630_54pe_psu_read_block(struct i2c_client *client, u8 command, u8 *data,int data_len);
@@ -68,6 +69,37 @@ enum as4630_54pe_psu_sysfs_attributes {
PSU_SERIAL_NUMBER
};
+enum psu_type {
+ PSU_YPEB1200, /* F2B */
+ PSU_YPEB1200AM, /* F2B */
+ PSU_UP1K21R_1085G, /* F2B */
+ UNKNOWN_PSU
+};
+
+struct model_name_info {
+ enum psu_type type;
+ u8 offset;
+ u8 length;
+ char* model_name;
+};
+
+struct model_name_info models[] = {
+{PSU_YPEB1200, 0x20, 11, "YPEB1200"},
+{PSU_YPEB1200AM, 0x20, 11, "YPEB1200AM"}, /* Replace YPEB1200-AM to YPEB1200AM */
+{PSU_UP1K21R_1085G, 0x20, 13, "UP1K21R-1085G"},
+};
+
+struct serial_number_info {
+ u8 offset;
+ u8 length;
+};
+
+struct serial_number_info serials[] = {
+ [PSU_YPEB1200] = {0x35, 17},
+ [PSU_YPEB1200AM] = {0x35, 18},
+ [PSU_UP1K21R_1085G] = {0x3B, 9},
+};
+
/* sysfs attributes for hwmon
*/
static SENSOR_DEVICE_ATTR(psu_present, S_IRUGO, show_status, NULL, PSU_PRESENT);
@@ -148,6 +180,40 @@ static const struct attribute_group as4630_54pe_psu_group = {
.attrs = as4630_54pe_psu_attributes,
};
+static umode_t as4630_54pe_psu_is_visible(const void *drvdata,
+ enum hwmon_sensor_types type,
+ u32 attr, int channel)
+{
+ return 0;
+}
+
+static const struct hwmon_channel_info *as4630_54pe_psu_info[] = {
+ HWMON_CHANNEL_INFO(power,
+ HWMON_P_ENABLE),
+ NULL,
+};
+
+static const struct hwmon_ops as4630_54pe_psu_hwmon_ops = {
+ .is_visible = as4630_54pe_psu_is_visible,
+};
+
+static const struct hwmon_chip_info as4630_54pe_psu_chip_info = {
+ .ops = &as4630_54pe_psu_hwmon_ops,
+ .info = as4630_54pe_psu_info,
+};
+
+static int find_models_min_offset(void) {
+ int i, min_offset = models[0].offset;
+
+ for(i = 1; i < (sizeof(models) / sizeof(models[0])); i++) {
+ if(models[i].offset < min_offset) {
+ min_offset = models[i].offset;
+ }
+ }
+
+ return min_offset;
+}
+
static int as4630_54pe_psu_probe(struct i2c_client *client,
const struct i2c_device_id *dev_id)
{
@@ -169,6 +235,7 @@ static int as4630_54pe_psu_probe(struct i2c_client *client,
data->valid = 0;
data->index = dev_id->driver_data;
mutex_init(&data->update_lock);
+ models_min_offset = find_models_min_offset();
dev_info(&client->dev, "chip found\n");
@@ -178,7 +245,10 @@ static int as4630_54pe_psu_probe(struct i2c_client *client,
goto exit_free;
}
- data->hwmon_dev = hwmon_device_register(&client->dev);
+ data->hwmon_dev = hwmon_device_register_with_info(
+ &client->dev, "as4630_54pe_psu",
+ NULL, &as4630_54pe_psu_chip_info, NULL);
+
if (IS_ERR(data->hwmon_dev)) {
status = PTR_ERR(data->hwmon_dev);
goto exit_remove;
@@ -198,15 +268,13 @@ static int as4630_54pe_psu_probe(struct i2c_client *client,
return status;
}
-static int as4630_54pe_psu_remove(struct i2c_client *client)
+static void as4630_54pe_psu_remove(struct i2c_client *client)
{
struct as4630_54pe_psu_data *data = i2c_get_clientdata(client);
hwmon_device_unregister(data->hwmon_dev);
sysfs_remove_group(&client->dev.kobj, &as4630_54pe_psu_group);
kfree(data);
-
- return 0;
}
enum psu_index
@@ -266,11 +334,12 @@ static struct as4630_54pe_psu_data *as4630_54pe_psu_update_device(struct device
{
struct i2c_client *client = to_i2c_client(dev);
struct as4630_54pe_psu_data *data = i2c_get_clientdata(client);
+ char temp_model_name[MAX_MODEL_NAME] = {0};
if (time_after(jiffies, data->last_updated + HZ + HZ / 2)
|| !data->valid) {
int status;
- int power_good = 0;
+ int i, power_good = 0;
dev_dbg(&client->dev, "Starting as4630_54pe update\n");
@@ -293,47 +362,83 @@ static struct as4630_54pe_psu_data *as4630_54pe_psu_update_device(struct device
power_good = ( (data->status >> 2) & 0x1);
if (power_good) {
- status = as4630_54pe_psu_read_block(client, 0x20, data->model_name,
- ARRAY_SIZE(data->model_name)-1);
+ enum psu_type type = UNKNOWN_PSU;
+
+ status = as4630_54pe_psu_read_block(client, models_min_offset,
+ temp_model_name,
+ ARRAY_SIZE(temp_model_name));
if (status < 0) {
- data->model_name[0] = '\0';
dev_dbg(&client->dev, "unable to read model name from (0x%x)\n", client->addr);
+ goto exit;
}
- else if(!strncmp(data->model_name, "YPEB1200", strlen("YPEB1200")))
- {
- if (data->model_name[9]=='A' && data->model_name[10]=='M')
- {
- data->model_name[8]='A';
- data->model_name[9]='M';
- data->model_name[strlen("YPEB1200AM")]='\0';
- }
- else
- data->model_name[strlen("YPEB1200")]='\0';
- }
- else
- {
- data->model_name[ARRAY_SIZE(data->model_name)-1] = '\0';
+
+ for (i = 0; i < ARRAY_SIZE(models); i++) {
+ if ((models[i].length+1) > ARRAY_SIZE(data->model_name)) {
+ dev_dbg(&client->dev,
+ "invalid models[%d].length(%d), should not exceed the size of data->model_name(%ld)\n",
+ i, models[i].length, ARRAY_SIZE(data->model_name));
+ continue;
+ }
+
+ snprintf(data->model_name, models[i].length + 1, "%s",
+ temp_model_name + (models[i].offset - models_min_offset));
+
+ if(!strncmp(data->model_name, "YPEB1200", strlen("YPEB1200")))
+ {
+ if (data->model_name[9]=='A' && data->model_name[10]=='M')
+ {
+ data->model_name[8]='A';
+ data->model_name[9]='M';
+ data->model_name[strlen("YPEB1200AM")]='\0';
+ }
+ else
+ data->model_name[strlen("YPEB1200")]='\0';
+ }
+
+ /* Determine if the model name is known, if not, read next index */
+ if (strcmp(data->model_name, models[i].model_name) == 0) {
+ type = models[i].type;
+ break;
+ }
+
+ data->model_name[0] = '\0';
}
- /* Read from offset 0x35 ~ 0x46 (18 bytes) */
- status = as4630_54pe_psu_read_block(client, 0x35,data->serial_number, MAX_SERIAL_NUMBER);
- if (status < 0)
- {
- data->serial_number[0] = '\0';
- dev_dbg(&client->dev, "unable to read model name from (0x%x) offset(0x35)\n", client->addr);
+
+ if (type < ARRAY_SIZE(serials)) {
+ if ((serials[type].length+1) > ARRAY_SIZE(data->serial_number)) {
+ dev_dbg(&client->dev,
+ "invalid serials[%d].length(%d), should not exceed the size of data->serial_number(%ld)\n",
+ type, serials[type].length, ARRAY_SIZE(data->serial_number));
+ goto exit;
+ }
+
+ memset(data->serial_number, 0, sizeof(data->serial_number));
+ status = as4630_54pe_psu_read_block(client, serials[type].offset,
+ data->serial_number,
+ serials[type].length);
+ if (status < 0) {
+ dev_dbg(&client->dev,
+ "unable to read serial from (0x%x) offset(0x%02x)\n",
+ client->addr, serials[type].length);
+ goto exit;
+ }
+ else {
+ data->serial_number[serials[type].length]= '\0';
+ }
}
- if (!strncmp(data->model_name, "YPEB1200AM", strlen("YPEB1200AM"))) /*for YPEB1200AM, SN length=18*/
- {
- data->serial_number[MAX_SERIAL_NUMBER-1]='\0';
+ else {
+ dev_dbg(&client->dev, "invalid PSU type(%d)\n", type);
+ goto exit;
}
- else
- data->serial_number[MAX_SERIAL_NUMBER-2]='\0';
-
}
+
data->last_updated = jiffies;
data->valid = 1;
}
+exit:
+
return data;
}
diff --git a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/fani.c b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/fani.c
index e83ddced4b..df1034beb3 100755
--- a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/fani.c
+++ b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/fani.c
@@ -168,7 +168,10 @@ _onlp_get_fan_direction_on_psu(void)
continue;
}
- if (PSU_TYPE_AC_F2B == psu_type) {
+ if (PSU_TYPE_ACBEL == psu_type ||
+ PSU_TYPE_YM2651Y == psu_type ||
+ PSU_TYPE_YPEB1200A == psu_type ||
+ PSU_TYPE_UP1K21R_1085G == psu_type) {
return ONLP_FAN_STATUS_F2B;
}
else {
diff --git a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/platform_lib.c b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/platform_lib.c
index 5f51e1cc1d..f7a9734b3d 100755
--- a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/platform_lib.c
+++ b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/platform_lib.c
@@ -90,7 +90,7 @@ int onlp_file_read_string(char *filename, char *buffer, int buf_size, int data_l
return ret;
}
-#define I2C_PSU_MODEL_NAME_LEN 11
+#define I2C_PSU_MODEL_NAME_LEN 14
#define I2C_PSU_FAN_DIR_LEN 3
psu_type_t get_psu_type(int id, char* modelname, int modelname_len)
@@ -126,6 +126,13 @@ psu_type_t get_psu_type(int id, char* modelname, int modelname_len)
aim_strlcpy(modelname, model_name, (modelname_len>strlen(model_name))?strlen(model_name):modelname_len-1);
return PSU_TYPE_YPEB1200A;
}
+
+ if (!strncmp(model_name, "UP1K21R-1085G", strlen("UP1K21R-1085G")))
+ {
+ if (modelname)
+ aim_strlcpy(modelname, model_name, (modelname_len>strlen(model_name))?strlen(model_name):modelname_len-1);
+ return PSU_TYPE_UP1K21R_1085G;
+ }
return PSU_TYPE_UNKNOWN;
}
int
diff --git a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/platform_lib.h b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/platform_lib.h
index fe8a92ac0e..92e00387a3 100755
--- a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/platform_lib.h
+++ b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/platform_lib.h
@@ -73,6 +73,7 @@ typedef enum psu_type {
PSU_TYPE_ACBEL,
PSU_TYPE_YM2651Y,
PSU_TYPE_YPEB1200A,
+ PSU_TYPE_UP1K21R_1085G,
PSU_TYPE_AC_F2B,
PSU_TYPE_AC_B2F
} psu_type_t;
diff --git a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/psui.c b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/psui.c
index 9b08dcba22..f41bbdd721 100755
--- a/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/psui.c
+++ b/packages/platforms/accton/x86-64/as4630-54pe/onlp/builds/x86_64_accton_as4630_54pe/module/src/psui.c
@@ -222,6 +222,7 @@ onlp_psui_info_get(onlp_oid_t id, onlp_psu_info_t* info)
break;
case PSU_TYPE_YM2651Y:
case PSU_TYPE_YPEB1200A:
+ case PSU_TYPE_UP1K21R_1085G:
ret = psu_ym2651y_info_get(info);
break;
case PSU_TYPE_UNKNOWN: /* User insert a unknown PSU or unplugged.*/
diff --git a/packages/platforms/accton/x86-64/as4630-54pe/platform-config/r0/src/lib/x86-64-accton-as4630-54pe-r0.yml b/packages/platforms/accton/x86-64/as4630-54pe/platform-config/r0/src/lib/x86-64-accton-as4630-54pe-r0.yml
index 02d6535517..9e32ff6f06 100755
--- a/packages/platforms/accton/x86-64/as4630-54pe/platform-config/r0/src/lib/x86-64-accton-as4630-54pe-r0.yml
+++ b/packages/platforms/accton/x86-64/as4630-54pe/platform-config/r0/src/lib/x86-64-accton-as4630-54pe-r0.yml
@@ -18,7 +18,7 @@ x86-64-accton-as4630-54pe-r0:
--stop=1
kernel:
- <<: *kernel-4-14
+ <<: *kernel-6-1
args: >-
nopat
diff --git a/packages/platforms/accton/x86-64/as4630-54pe/platform-config/r0/src/python/x86_64_accton_as4630_54pe_r0/__init__.py b/packages/platforms/accton/x86-64/as4630-54pe/platform-config/r0/src/python/x86_64_accton_as4630_54pe_r0/__init__.py
index 7553c91479..e0452e3e0d 100755
--- a/packages/platforms/accton/x86-64/as4630-54pe/platform-config/r0/src/python/x86_64_accton_as4630_54pe_r0/__init__.py
+++ b/packages/platforms/accton/x86-64/as4630-54pe/platform-config/r0/src/python/x86_64_accton_as4630_54pe_r0/__init__.py
@@ -9,8 +9,10 @@ class OnlPlatform_x86_64_accton_as4630_54pe_r0(OnlPlatformAccton,
SYS_OBJECT_ID=".4630.54"
def baseconfig(self):
+ os.system("modprobe i2c-ismt")
self.insmod('optoe')
self.insmod('ym2651y')
+
for m in [ 'cpld', 'psu', 'leds' ]:
self.insmod("x86-64-accton-as4630-54pe-%s.ko" % m)
@@ -42,6 +44,9 @@ def baseconfig(self):
('ype1200am', 0x59, 11),
])
+ # initialize pca9548 idle_state
+ subprocess.call('echo -2 | tee /sys/bus/i2c/drivers/pca954x/*-00*/idle_state > /dev/null', shell=True)
+
# initialize SFP port 49~52
for port in range(49, 53):
self.new_i2c_device('optoe2', 0x50, port-31)
diff --git a/packages/platforms/accton/x86-64/as4630-54te/modules/PKG.yml b/packages/platforms/accton/x86-64/as4630-54te/modules/PKG.yml
index 3d860c487a..86ffb28c87 100644
--- a/packages/platforms/accton/x86-64/as4630-54te/modules/PKG.yml
+++ b/packages/platforms/accton/x86-64/as4630-54te/modules/PKG.yml
@@ -1 +1 @@
-!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as4630-54te ARCH=amd64 KERNELS="onl-kernel-4.19-lts-x86-64-all:amd64"
+!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as4630-54te ARCH=amd64 KERNELS="onl-kernel-6.1-lts-x86-64-all:amd64"
diff --git a/packages/platforms/accton/x86-64/as4630-54te/modules/builds/Makefile b/packages/platforms/accton/x86-64/as4630-54te/modules/builds/Makefile
index 46f6a838c1..5655f9e9d0 100644
--- a/packages/platforms/accton/x86-64/as4630-54te/modules/builds/Makefile
+++ b/packages/platforms/accton/x86-64/as4630-54te/modules/builds/Makefile
@@ -1,5 +1,5 @@
-KERNELS := onl-kernel-4.19-lts-x86-64-all:amd64
-KMODULES := $(wildcard *.c)
+KERNELS := onl-kernel-6.1-lts-x86-64-all:amd64
+KMODULES := src
VENDOR := accton
BASENAME := x86-64-accton-as4630-54te
ARCH := x86_64
diff --git a/packages/platforms/accton/x86-64/as4630-54te/modules/builds/src/Makefile b/packages/platforms/accton/x86-64/as4630-54te/modules/builds/src/Makefile
new file mode 100644
index 0000000000..4a501b9f5f
--- /dev/null
+++ b/packages/platforms/accton/x86-64/as4630-54te/modules/builds/src/Makefile
@@ -0,0 +1,3 @@
+obj-m += x86-64-accton-as4630-54te-cpld.o
+obj-m += x86-64-accton-as4630-54te-leds.o
+obj-m += x86-64-accton-as4630-54te-psu.o
\ No newline at end of file
diff --git a/packages/platforms/accton/x86-64/as4630-54te/modules/builds/x86-64-accton-as4630-54te-cpld.c b/packages/platforms/accton/x86-64/as4630-54te/modules/builds/src/x86-64-accton-as4630-54te-cpld.c
similarity index 99%
rename from packages/platforms/accton/x86-64/as4630-54te/modules/builds/x86-64-accton-as4630-54te-cpld.c
rename to packages/platforms/accton/x86-64/as4630-54te/modules/builds/src/x86-64-accton-as4630-54te-cpld.c
index e0f9d87e54..1ddccd08da 100644
--- a/packages/platforms/accton/x86-64/as4630-54te/modules/builds/x86-64-accton-as4630-54te-cpld.c
+++ b/packages/platforms/accton/x86-64/as4630-54te/modules/builds/src/x86-64-accton-as4630-54te-cpld.c
@@ -771,7 +771,7 @@ static int as4630_54te_cpld_probe(struct i2c_client *client,
return ret;
}
-static int as4630_54te_cpld_remove(struct i2c_client *client)
+static void as4630_54te_cpld_remove(struct i2c_client *client)
{
struct as4630_54te_cpld_data *data = i2c_get_clientdata(client);
@@ -781,8 +781,6 @@ static int as4630_54te_cpld_remove(struct i2c_client *client)
sysfs_remove_group(&client->dev.kobj, &as4630_54te_cpld_group);
kfree(data);
-
- return 0;
}
static int as4630_54te_cpld_read_internal(struct i2c_client *client, u8 reg)
diff --git a/packages/platforms/accton/x86-64/as4630-54te/modules/builds/x86-64-accton-as4630-54te-leds.c b/packages/platforms/accton/x86-64/as4630-54te/modules/builds/src/x86-64-accton-as4630-54te-leds.c
similarity index 100%
rename from packages/platforms/accton/x86-64/as4630-54te/modules/builds/x86-64-accton-as4630-54te-leds.c
rename to packages/platforms/accton/x86-64/as4630-54te/modules/builds/src/x86-64-accton-as4630-54te-leds.c
diff --git a/packages/platforms/accton/x86-64/as4630-54te/modules/builds/x86-64-accton-as4630-54te-psu.c b/packages/platforms/accton/x86-64/as4630-54te/modules/builds/src/x86-64-accton-as4630-54te-psu.c
similarity index 66%
rename from packages/platforms/accton/x86-64/as4630-54te/modules/builds/x86-64-accton-as4630-54te-psu.c
rename to packages/platforms/accton/x86-64/as4630-54te/modules/builds/src/x86-64-accton-as4630-54te-psu.c
index f39985560a..6500ad1faa 100644
--- a/packages/platforms/accton/x86-64/as4630-54te/modules/builds/x86-64-accton-as4630-54te-psu.c
+++ b/packages/platforms/accton/x86-64/as4630-54te/modules/builds/src/x86-64-accton-as4630-54te-psu.c
@@ -34,12 +34,13 @@
#include
#include
-#define MAX_MODEL_NAME 13
+#define MAX_MODEL_NAME 15
#define MAX_SERIAL_NUMBER 18
#define IS_POWER_GOOD(id, value) (!!(value >> (6-id*4) & 0x1))
#define IS_PRESENT(id, value) (!(value >> (5-id*4) & 0x1))
+static int models_min_offset = 0;
static ssize_t show_status(struct device *dev, struct device_attribute *da,
char *buf);
static ssize_t show_string(struct device *dev, struct device_attribute *da,
@@ -66,7 +67,7 @@ struct as4630_54te_psu_data {
};
static struct as4630_54te_psu_data*as4630_54te_psu_update_device(
- struct device *dev);
+ struct device *dev);
enum as4630_54te_psu_sysfs_attributes {
PSU_PRESENT,
@@ -75,6 +76,43 @@ enum as4630_54te_psu_sysfs_attributes {
PSU_SERIAL_NUMBER
};
+enum psu_type {
+ PSU_YM_1151D_A02R, /* B2F */
+ PSU_YM_1151D_A03R, /* F2B */
+ PSU_YM_1151F_A01R, /* F2B */
+ PSU_UPD1501SA_1190G, /* F2B */
+ PSU_UPD1501SA_1290G, /* B2F */
+ UNKNOWN_PSU
+};
+
+struct model_name_info {
+ enum psu_type type;
+ u8 offset;
+ u8 length;
+ char* model_name;
+};
+
+struct model_name_info models[] = {
+{PSU_YM_1151D_A02R, 0x20, 13, "YM-1151D-A02R"},
+{PSU_YM_1151D_A03R, 0x20, 13, "YM-1151D-A03R"},
+{PSU_YM_1151F_A01R, 0x20, 13, "YM-1151F-A01R"},
+{PSU_UPD1501SA_1190G, 0x20, 15, "UPD1501SA-1190G"},
+{PSU_UPD1501SA_1290G, 0x20, 15, "UPD1501SA-1290G"},
+};
+
+struct serial_number_info {
+ u8 offset;
+ u8 length;
+};
+
+struct serial_number_info serials[] = {
+ [PSU_YM_1151D_A02R] = {0x35, 18},
+ [PSU_YM_1151D_A03R] = {0x2E, 18},
+ [PSU_YM_1151F_A01R] = {0x2E, 18},
+ [PSU_UPD1501SA_1190G] = {0x3B, 9},
+ [PSU_UPD1501SA_1290G] = {0x3B, 9},
+};
+
/* sysfs attributes for hwmon
*/
static SENSOR_DEVICE_ATTR(psu_present, S_IRUGO, show_status, NULL, PSU_PRESENT);
@@ -153,8 +191,41 @@ static const struct attribute_group as4630_54te_psu_group = {
.attrs = as4630_54te_psu_attributes,
};
+static umode_t as4630_54te_psu_is_visible(const void *drvdata,
+ enum hwmon_sensor_types type,
+ u32 attr, int channel)
+{
+ return 0;
+}
+
+static const struct hwmon_channel_info *as4630_54te_psu_info[] = {
+ HWMON_CHANNEL_INFO(power, HWMON_F_ENABLE),
+ NULL,
+};
+
+static const struct hwmon_ops as4630_54te_psu_hwmon_ops = {
+ .is_visible = as4630_54te_psu_is_visible,
+};
+
+static const struct hwmon_chip_info as4630_54te_psu_chip_info = {
+ .ops = &as4630_54te_psu_hwmon_ops,
+ .info = as4630_54te_psu_info,
+};
+
+static int find_models_min_offset(void) {
+ int i, min_offset = models[0].offset;
+
+ for(i = 1; i < (sizeof(models) / sizeof(models[0])); i++) {
+ if(models[i].offset < min_offset) {
+ min_offset = models[i].offset;
+ }
+ }
+
+ return min_offset;
+}
+
static int as4630_54te_psu_probe(struct i2c_client *client,
- const struct i2c_device_id *dev_id)
+ const struct i2c_device_id *dev_id)
{
struct as4630_54te_psu_data *data;
int status;
@@ -174,6 +245,7 @@ static int as4630_54te_psu_probe(struct i2c_client *client,
data->valid = 0;
data->index = dev_id->driver_data;
mutex_init(&data->update_lock);
+ models_min_offset = find_models_min_offset();
dev_info(&client->dev, "chip found\n");
@@ -183,8 +255,11 @@ static int as4630_54te_psu_probe(struct i2c_client *client,
goto exit_free;
}
- data->hwmon_dev = hwmon_device_register_with_info(&client->dev,
- "as4630_54te_psu", NULL, NULL, NULL);
+ data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "as4630_54te_psu",
+ NULL,
+ &as4630_54te_psu_chip_info,
+ NULL);
+
if (IS_ERR(data->hwmon_dev)) {
status = PTR_ERR(data->hwmon_dev);
goto exit_remove;
@@ -204,15 +279,13 @@ static int as4630_54te_psu_probe(struct i2c_client *client,
return status;
}
-static int as4630_54te_psu_remove(struct i2c_client *client)
+static void as4630_54te_psu_remove(struct i2c_client *client)
{
struct as4630_54te_psu_data *data = i2c_get_clientdata(client);
hwmon_device_unregister(data->hwmon_dev);
sysfs_remove_group(&client->dev.kobj, &as4630_54te_psu_group);
kfree(data);
-
- return 0;
}
enum psu_index {
@@ -239,7 +312,7 @@ static struct i2c_driver as4630_54te_psu_driver = {
};
static int as4630_54te_psu_read_block(struct i2c_client *client, u8 command,
- u8 *data, int data_len)
+ u8 *data, int data_len)
{
int result = 0;
int retry_count = 5;
@@ -272,12 +345,12 @@ as4630_54te_psu_data *as4630_54te_psu_update_device(struct device *dev)
{
struct i2c_client *client = to_i2c_client(dev);
struct as4630_54te_psu_data *data = i2c_get_clientdata(client);
+ char temp_model_name[MAX_MODEL_NAME+1] = {0};
if (time_after(jiffies, data->last_updated + HZ + HZ / 2)
|| !data->valid) {
int status;
- u8 serial_offset;
- int power_good = 0;
+ int i, power_good = 0;
dev_dbg(&client->dev, "Starting as4630_54te update\n");
@@ -299,43 +372,77 @@ as4630_54te_psu_data *as4630_54te_psu_update_device(struct device *dev)
power_good = IS_POWER_GOOD(data->index, data->status);
if (power_good) {
- status = as4630_54te_psu_read_block(client, 0x20,
- data->model_name,
- ARRAY_SIZE(data->model_name)-1);
+ enum psu_type type = UNKNOWN_PSU;
+
+ status = as4630_54te_psu_read_block(client, models_min_offset,
+ temp_model_name,
+ ARRAY_SIZE(temp_model_name));
if (status < 0) {
- data->model_name[0] = '\0';
dev_dbg(&client->dev,
- "unable to read model name from (0x%x) offset(0x20)\n",
- client->addr);
- }
- else {
- data->model_name[8] = '-';
- data->model_name[ARRAY_SIZE(data->model_name)-1] = '\0';
+ "unable to read model name from (0x%x) offset(0x%02x)\n",
+ client->addr, models_min_offset);
+ goto exit;
}
- if (strncmp(data->model_name, "YM-1151D-A03R", MAX_MODEL_NAME) == 0 ||
- strncmp(data->model_name, "YM-1151F-A01R", MAX_MODEL_NAME) == 0)
- serial_offset = 0x2E; /* YM-1151D-A03R or YM-1151F-A01R */
- else
- serial_offset = 0x35; /* YM-1151D-A02R */
+ for (i = 0; i < ARRAY_SIZE(models); i++) {
+ if ((models[i].length+1) > ARRAY_SIZE(data->model_name)) {
+ dev_dbg(&client->dev,
+ "invalid models[%d].length(%d), should not exceed the size of data->model_name(%ld)\n",
+ i, models[i].length, ARRAY_SIZE(data->model_name));
+ continue;
+ }
+
+ snprintf(data->model_name, models[i].length + 1, "%s",
+ temp_model_name + (models[i].offset - models_min_offset));
+
+ if (i == PSU_YM_1151D_A03R ||
+ i == PSU_YM_1151F_A01R ||
+ i == PSU_YM_1151D_A02R) {
+ data->model_name[8] = '-';
+ }
+
+ /* Determine if the model name is known, if not, read next index */
+ if (strncmp(data->model_name, models[i].model_name, models[i].length) == 0) {
+ type = models[i].type;
+ break;
+ }
- /* Read from offset 0x2e or 0x35 (18 bytes) */
- status = as4630_54te_psu_read_block(client, serial_offset,
- data->serial_number,
- ARRAY_SIZE(data->serial_number)-1);
- if (status < 0) {
- data->serial_number[0] = '\0';
- dev_dbg(&client->dev,
- "unable to read serial from (0x%x) offset(0x%x)\n",
- client->addr, serial_offset);
+ data->model_name[0] = '\0';
+ }
+
+ if (type < ARRAY_SIZE(serials)) {
+ if ((serials[type].length+1) > ARRAY_SIZE(data->serial_number)) {
+ dev_dbg(&client->dev,
+ "invalid serials[%d].length(%d), should not exceed the size of data->serial_number(%ld)\n",
+ type, serials[type].length, ARRAY_SIZE(data->serial_number));
+ goto exit;
+ }
+
+ memset(data->serial_number, 0, sizeof(data->serial_number));
+ status = as4630_54te_psu_read_block(client, serials[type].offset,
+ data->serial_number,
+ serials[type].length);
+ if (status < 0) {
+ dev_dbg(&client->dev,
+ "unable to read serial from (0x%x) offset(0x%02x)\n",
+ client->addr, serials[type].length);
+ goto exit;
+ }
+ else {
+ data->serial_number[serials[type].length]= '\0';
+ }
+ }
+ else {
+ dev_dbg(&client->dev, "invalid PSU type(%d)\n", type);
+ goto exit;
}
- data->serial_number[ARRAY_SIZE(data->serial_number)-1]= '\0';
}
data->last_updated = jiffies;
data->valid = 1;
}
+exit:
return data;
}
diff --git a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/fani.c b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/fani.c
index c7e55f359f..f929f1ea8c 100644
--- a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/fani.c
+++ b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/fani.c
@@ -150,14 +150,14 @@ _onlp_get_fan_direction_on_psu(void)
}
if (PSU_TYPE_YM1151D_F2B == psu_type ||
- PSU_TYPE_YM1151F_F2B == psu_type) {
+ PSU_TYPE_YM1151F_F2B == psu_type ||
+ PSU_TYPE_UPD1501SA_1190G_F2B == psu_type) {
return ONLP_FAN_STATUS_F2B;
}
else {
return ONLP_FAN_STATUS_B2F;
}
}
-
return 0;
}
diff --git a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/platform_lib.c b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/platform_lib.c
index 21a8246250..23d577d346 100644
--- a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/platform_lib.c
+++ b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/platform_lib.c
@@ -28,6 +28,10 @@ psu_type_t get_psu_type(int id, char *data_buf, int data_len)
ptype = PSU_TYPE_YM1151F_F2B;
else if (strncmp(str, "YM-1151D-A03R", strlen("YM-1151D-A03R")) == 0)
ptype = PSU_TYPE_YM1151D_F2B;
+ else if (strncmp(str, "UPD1501SA-1190G", strlen("UPD1501SA-1190G")) == 0)
+ ptype = PSU_TYPE_UPD1501SA_1190G_F2B;
+ else if (strncmp(str, "UPD1501SA-1290G", strlen("UPD1501SA-1290G")) == 0)
+ ptype = PSU_TYPE_UPD1501SA_1290G_B2F;
else
ptype = PSU_TYPE_YM1151D_B2F;
diff --git a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/platform_lib.h b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/platform_lib.h
index 8efc344491..5b3b06bbb8 100644
--- a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/platform_lib.h
+++ b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/platform_lib.h
@@ -60,7 +60,9 @@ typedef enum psu_type {
PSU_TYPE_UNKNOWN,
PSU_TYPE_YM1151D_F2B,
PSU_TYPE_YM1151D_B2F,
- PSU_TYPE_YM1151F_F2B
+ PSU_TYPE_YM1151F_F2B,
+ PSU_TYPE_UPD1501SA_1190G_F2B,
+ PSU_TYPE_UPD1501SA_1290G_B2F
} psu_type_t;
psu_type_t get_psu_type(int id, char* modelname, int modelname_len);
diff --git a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/psui.c b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/psui.c
index 5bf35ff66d..e28b97a26e 100644
--- a/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/psui.c
+++ b/packages/platforms/accton/x86-64/as4630-54te/onlp/builds/x86_64_accton_as4630_54pe/module/src/psui.c
@@ -149,6 +149,8 @@ onlp_psui_info_get(onlp_oid_t id, onlp_psu_info_t* info)
case PSU_TYPE_YM1151F_F2B:
case PSU_TYPE_YM1151D_F2B:
case PSU_TYPE_YM1151D_B2F:
+ case PSU_TYPE_UPD1501SA_1190G_F2B:
+ case PSU_TYPE_UPD1501SA_1290G_B2F:
ret = psu_ym2651y_info_get(info);
break;
case PSU_TYPE_UNKNOWN: /* User insert a unknown PSU or unplugged.*/
diff --git a/packages/platforms/accton/x86-64/as4630-54te/platform-config/r0/src/lib/x86-64-accton-as4630-54te-r0.yml b/packages/platforms/accton/x86-64/as4630-54te/platform-config/r0/src/lib/x86-64-accton-as4630-54te-r0.yml
index b45ea7d8c6..7e230627f2 100644
--- a/packages/platforms/accton/x86-64/as4630-54te/platform-config/r0/src/lib/x86-64-accton-as4630-54te-r0.yml
+++ b/packages/platforms/accton/x86-64/as4630-54te/platform-config/r0/src/lib/x86-64-accton-as4630-54te-r0.yml
@@ -18,7 +18,7 @@ x86-64-accton-as4630-54te-r0:
--stop=1
kernel:
- <<: *kernel-4-19
+ <<: *kernel-6-1
args: >-
console=ttyS0,115200n8
diff --git a/packages/platforms/accton/x86-64/as4630-54te/platform-config/r0/src/python/x86_64_accton_as4630_54te_r0/__init__.py b/packages/platforms/accton/x86-64/as4630-54te/platform-config/r0/src/python/x86_64_accton_as4630_54te_r0/__init__.py
index 168e97cdef..b6cb692c1e 100644
--- a/packages/platforms/accton/x86-64/as4630-54te/platform-config/r0/src/python/x86_64_accton_as4630_54te_r0/__init__.py
+++ b/packages/platforms/accton/x86-64/as4630-54te/platform-config/r0/src/python/x86_64_accton_as4630_54te_r0/__init__.py
@@ -42,6 +42,9 @@ def baseconfig(self):
('ym1921', 0x59, 11),
])
+ # initialize pca9548 idle_state
+ subprocess.call('echo -2 | tee /sys/bus/i2c/drivers/pca954x/*-00*/idle_state > /dev/null', shell=True)
+
# initialize SFP port 49~52
for port in range(49, 53):
self.new_i2c_device('optoe2', 0x50, port-31)
diff --git a/packages/platforms/accton/x86-64/as7326-56x/modules/PKG.yml b/packages/platforms/accton/x86-64/as7326-56x/modules/PKG.yml
index 4a30266ae1..ef0cac8a48 100644
--- a/packages/platforms/accton/x86-64/as7326-56x/modules/PKG.yml
+++ b/packages/platforms/accton/x86-64/as7326-56x/modules/PKG.yml
@@ -1 +1 @@
-!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as7326-56x ARCH=amd64 KERNELS="onl-kernel-4.14-lts-x86-64-all:amd64"
+!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as7326-56x ARCH=amd64 KERNELS="onl-kernel-6.1-lts-x86-64-all:amd64"
diff --git a/packages/platforms/accton/x86-64/as7326-56x/modules/builds/Makefile b/packages/platforms/accton/x86-64/as7326-56x/modules/builds/Makefile
index 3085e2269d..26dfa61bb3 100644
--- a/packages/platforms/accton/x86-64/as7326-56x/modules/builds/Makefile
+++ b/packages/platforms/accton/x86-64/as7326-56x/modules/builds/Makefile
@@ -1,5 +1,5 @@
-KERNELS := onl-kernel-4.14-lts-x86-64-all:amd64
-KMODULES := $(wildcard *.c)
+KERNELS := onl-kernel-6.1-lts-x86-64-all:amd64
+KMODULES := src
VENDOR := accton
BASENAME := x86-64-accton-as7326-56x
ARCH := x86_64
diff --git a/packages/platforms/accton/x86-64/as7326-56x/modules/builds/src/Makefile b/packages/platforms/accton/x86-64/as7326-56x/modules/builds/src/Makefile
new file mode 100644
index 0000000000..0014ad047c
--- /dev/null
+++ b/packages/platforms/accton/x86-64/as7326-56x/modules/builds/src/Makefile
@@ -0,0 +1,4 @@
+obj-m += x86-64-accton-as7326-56x-cpld.o
+obj-m += x86-64-accton-as7326-56x-fan.o
+obj-m += x86-64-accton-as7326-56x-leds.o
+obj-m += x86-64-accton-as7326-56x-psu.o
\ No newline at end of file
diff --git a/packages/platforms/accton/x86-64/as7326-56x/modules/builds/x86-64-accton-as7326-56x-cpld.c b/packages/platforms/accton/x86-64/as7326-56x/modules/builds/src/x86-64-accton-as7326-56x-cpld.c
similarity index 96%
rename from packages/platforms/accton/x86-64/as7326-56x/modules/builds/x86-64-accton-as7326-56x-cpld.c
rename to packages/platforms/accton/x86-64/as7326-56x/modules/builds/src/x86-64-accton-as7326-56x-cpld.c
index 7985f09aa9..b4ce861469 100644
--- a/packages/platforms/accton/x86-64/as7326-56x/modules/builds/x86-64-accton-as7326-56x-cpld.c
+++ b/packages/platforms/accton/x86-64/as7326-56x/modules/builds/src/x86-64-accton-as7326-56x-cpld.c
@@ -999,7 +999,7 @@ static int as7326_56x_cpld_probe(struct i2c_client *client,
return ret;
}
-static int as7326_56x_cpld_remove(struct i2c_client *client)
+static void as7326_56x_cpld_remove(struct i2c_client *client)
{
struct as7326_56x_cpld_data *data = i2c_get_clientdata(client);
const struct attribute_group *group = NULL;
@@ -1026,8 +1026,6 @@ static int as7326_56x_cpld_remove(struct i2c_client *client)
}
kfree(data);
-
- return 0;
}
static int as7326_56x_cpld_read_internal(struct i2c_client *client, u8 reg)
diff --git a/packages/platforms/accton/x86-64/as7326-56x/modules/builds/x86-64-accton-as7326-56x-fan.c b/packages/platforms/accton/x86-64/as7326-56x/modules/builds/src/x86-64-accton-as7326-56x-fan.c
similarity index 71%
rename from packages/platforms/accton/x86-64/as7326-56x/modules/builds/x86-64-accton-as7326-56x-fan.c
rename to packages/platforms/accton/x86-64/as7326-56x/modules/builds/src/x86-64-accton-as7326-56x-fan.c
index 69364115d7..b75c900292 100644
--- a/packages/platforms/accton/x86-64/as7326-56x/modules/builds/x86-64-accton-as7326-56x-fan.c
+++ b/packages/platforms/accton/x86-64/as7326-56x/modules/builds/src/x86-64-accton-as7326-56x-fan.c
@@ -57,7 +57,7 @@ static ssize_t show_wdt_max_pwm(struct device *dev, struct device_attribute *da,
static ssize_t get_enable(struct device *dev, struct device_attribute *da, char *buf);
static ssize_t set_enable(struct device *dev, struct device_attribute *da,
const char *buf, size_t count);
-static ssize_t get_sys_temp(struct device *dev, struct device_attribute *da, char *buf);
+
extern int accton_i2c_cpld_read(unsigned short cpld_addr, u8 reg);
extern int accton_i2c_cpld_write(unsigned short cpld_addr, u8 reg, u8 value);
@@ -165,12 +165,6 @@ enum sysfs_fan_attributes {
&sensor_dev_attr_pwm##index.dev_attr.attr, \
&sensor_dev_attr_pwm##index##_enable.dev_attr.attr
-#define DECLARE_FAN_SYSTEM_TEMP_SENSOR_DEV_ATTR() \
- static SENSOR_DEVICE_ATTR(sys_temp, S_IRUGO, get_sys_temp, NULL, FAN_DUTY_CYCLE_PERCENTAGE)
-
-#define DECLARE_FAN_SYSTEM_TEMP_ATTR() &sensor_dev_attr_sys_temp.dev_attr.attr
-
-
#define DECLARE_FAN_PRESENT_SENSOR_DEV_ATTR(index) \
static SENSOR_DEVICE_ATTR(fan##index##_present, S_IRUGO, fan_show_value, NULL, FAN##index##_PRESENT)
#define DECLARE_FAN_PRESENT_ATTR(index) &sensor_dev_attr_fan##index##_present.dev_attr.attr
@@ -223,8 +217,6 @@ DECLARE_FAN_DIRECTION_SENSOR_DEV_ATTR(5);
DECLARE_FAN_DIRECTION_SENSOR_DEV_ATTR(6);
/* 1 fan duty cycle attribute in this platform */
DECLARE_FAN_DUTY_CYCLE_SENSOR_DEV_ATTR(1);
-/* System temperature for fancontrol */
-DECLARE_FAN_SYSTEM_TEMP_SENSOR_DEV_ATTR();
/* 3 fan wdt attribute in this platform */
DECLARE_FAN_WDT_SENSOR_DEV_ATTR();
@@ -256,7 +248,6 @@ static struct attribute *as7326_56x_fan_attributes[] = {
DECLARE_FAN_DIRECTION_ATTR(5),
DECLARE_FAN_DIRECTION_ATTR(6),
DECLARE_FAN_DUTY_CYCLE_ATTR(1),
- DECLARE_FAN_SYSTEM_TEMP_ATTR(),
DECLARE_FAN_WDT_TIMER_ATTR(),
DECLARE_FAN_WDT_MAX_PWM_ATTR(),
DECLARE_FAN_WDT_STATUS_ATTR(),
@@ -393,272 +384,6 @@ static ssize_t set_duty_cycle(struct device *dev, struct device_attribute *da,
return count;
}
-/* Due to this struct is declared at lm75.c, it cannot be include
- * under Sonic environment. I duplicate it from lm75.c.
- */
-struct lm75_data {
- struct i2c_client *client;
- struct device *hwmon_dev;
- struct thermal_zone_device *tz;
- struct mutex update_lock;
- u8 orig_conf;
- u8 resolution; /* In bits, between 9 and 12 */
- u8 resolution_limits;
- char valid; /* !=0 if registers are valid */
- unsigned long last_updated; /* In jiffies */
- unsigned long sample_time; /* In jiffies */
- s16 temp[3]; /* Register values,
- 0 = input
- 1 = max
- 2 = hyst */
-};
-
-/*Copied from lm75.c*/
-static inline long lm75_reg_to_mc(s16 temp, u8 resolution)
-{
- return ((temp >> (16 - resolution)) * 1000) >> (resolution - 8);
-}
-
-/*Get hwmon_dev from i2c_client, set hwmon_dev = NULL is failed.*/
-static struct device * get_hwmon_dev(
- struct i2c_client *client)
-{
- struct lm75_data *data = NULL;
-
- data = i2c_get_clientdata(client);
- if(data)
- {
- if( data->valid == 1 && data->hwmon_dev)
- {
- return data->hwmon_dev;
- }
-
- }
- return NULL;
-}
-
-/* To find hwmon index by opening hwmon under that i2c address.
- */
-static int find_hwmon_index_by_FileOpen(
- int bus_nr,
- unsigned short addr,
- OUT int *index)
-{
-#define MAX_HWMON_DEVICE (10) /* Find hwmon device in 0~10*/
- struct file *sfd;
- char client_name[96];
- int i=0;
-
- do {
- snprintf(client_name, sizeof(client_name),
- "/sys/bus/i2c/devices/%d-%04x/hwmon/hwmon%d/temp1_input",
- bus_nr, addr, i);
-
- sfd = filp_open(client_name, O_RDONLY, 0);
- i++;
- } while( IS_ERR(sfd) && i < MAX_HWMON_DEVICE);
-
- if (IS_ERR(sfd)) {
- pr_err("Failed to open file(%s)#%d\r\n", client_name, __LINE__);
- return -ENOENT;
- }
- filp_close(sfd, 0);
- *index = i - 1;
- return 0;
-
-#undef MAX_HWMON_DEVICE
-}
-
-static int get_temp_file_path(
- int bus_nr, unsigned short addr,
- struct device *hwmon_dev
- ,char *path, int max_len)
-{
-
- if(hwmon_dev && strlen(dev_name(hwmon_dev)))
- {
- snprintf(path, max_len,
- "/sys/bus/i2c/devices/%d-%04x/hwmon/%s/temp1_input",
- bus_nr, addr, dev_name(hwmon_dev));
- }
- else
- {
- int i=0;
- if(find_hwmon_index_by_FileOpen( bus_nr, addr, &i))
- {
- return -EIO;
- }
- snprintf(path, max_len,
- "/sys/bus/i2c/devices/%d-%04x/hwmon/hwmon%d/temp1_input",
- bus_nr, addr, i);
- }
- return 0;
-}
-
-/*File read the dev file at user space.*/
-static int read_devfile_temp1_input(
- struct device *dev,
- int bus_nr,
- unsigned short addr,
- struct device *hwmon_dev,
- int *miniCelsius)
-{
- struct file *sfd;
- char buffer[96];
- char devfile[96];
- int rc, status;
- int rdlen, value;
- mm_segment_t old_fs;
-
- rc = 0;
- get_temp_file_path(bus_nr, addr, hwmon_dev, devfile, sizeof(devfile));
- sfd = filp_open(devfile, O_RDONLY, 0);
- if (IS_ERR(sfd)) {
- pr_err("Failed to open file(%s)#%d\r\n", devfile, __LINE__);
- return -ENOENT;
- }
- dev_dbg(dev, "Found device:%s\n",devfile);
-
- if(!(sfd->f_op) || !(sfd->f_op->read) ) {
- pr_err("file %s cann't readable ?\n",devfile);
- return -ENOENT;
- }
-
- old_fs = get_fs();
- set_fs(KERNEL_DS);
- rdlen = sfd->f_op->read(sfd, buffer, sizeof(buffer), &sfd->f_pos);
- if (rdlen == 0) {
- pr_err( "File(%s) empty!\n", devfile);
- rc = -EIO;
- goto exit;
- }
- status = sscanf(buffer, "%d", &value);
- if (status != 1) {
- rc = -EIO;
- goto exit;
- }
- *miniCelsius = value;
- dev_dbg(dev,"found sensors: %d @i2c %d-%04x\n", value, bus_nr, addr);
-
-exit:
- set_fs(old_fs);
- filp_close(sfd, 0);
- return rc;
-}
-
-static u8 is_lm75_data_due(struct i2c_client *client)
-{
- struct lm75_data *data = NULL;
-
- data = i2c_get_clientdata(client);
- if (time_after(jiffies, data->last_updated + data->sample_time))
- {
- return 1;
- }
- return 0;
-}
-static int get_lm75_temp(struct i2c_client *client, int *miniCelsius)
-{
- struct lm75_data *data = NULL;
-
- data = i2c_get_clientdata(client);
- *miniCelsius = lm75_reg_to_mc(data->temp[0], data->resolution);
-
- return 0;
-}
-
-static bool lm75_addr_mached(unsigned short addr)
-{
- int i;
- unsigned short addrs[] = THERMAL_SENSORS_ADDRS;
-
- for (i = 0; i < ARRAY_SIZE(addrs); i++)
- {
- if( addr == addrs[i])
- return 1;
- }
- return 0;
-}
-
-static int _find_lm75_device(struct device *dev, void *data)
-{
- struct device_driver *driver;
- struct as7326_56x_fan_data *prv = data;
- char *driver_name = THERMAL_SENSORS_DRIVER;
-
- driver = dev->driver;
- if (driver && driver->name &&
- strcmp(driver->name, driver_name) == 0)
- {
- struct i2c_client *client;
- client = to_i2c_client(dev);
- if (client)
- {
- /*cannot use "struct i2c_adapter *adap = to_i2c_adapter(dev);"*/
- struct i2c_adapter *adap = client->adapter;
- int miniCelsius = 0;
-
- if (! lm75_addr_mached(client->addr))
- {
- return 0;
- }
-
- if (!adap) {
- return -ENXIO;
- }
-
- /* If the data is not updated, read them from devfile
- to drive them updateing data from chip.*/
- if (is_lm75_data_due(client))
- {
- struct device *hwmon_dev;
-
- hwmon_dev = get_hwmon_dev(client);
- if(0 == read_devfile_temp1_input(dev, adap->nr,
- client->addr, hwmon_dev, &miniCelsius))
- {
- prv->system_temp += miniCelsius;
- prv->sensors_found++;
- }
-
- }
- else
- {
- get_lm75_temp(client, &miniCelsius);
- prv->system_temp += miniCelsius;
- prv->sensors_found++;
-
- }
- }
- }
- return 0;
-}
-
-/*Find all lm75 devices and return sum of temperatures.*/
-static ssize_t get_sys_temp(struct device *dev, struct device_attribute *da,
- char *buf)
-{
- ssize_t ret = 0;
- struct i2c_client *client = to_i2c_client(dev);
- struct as7326_56x_fan_data *data = i2c_get_clientdata(client);
-
- mutex_lock(&data->update_lock);
- data = as7326_56x_fan_update_device(dev);
-
- data->system_temp=0;
- data->sensors_found=0;
- i2c_for_each_dev(data, _find_lm75_device);
- if (NUM_THERMAL_SENSORS != data->sensors_found)
- {
- dev_dbg(dev,"only %d of %d temps are found\n",
- data->sensors_found, NUM_THERMAL_SENSORS);
- data->system_temp = INT_MAX;
- }
- ret = sprintf(buf, "%d\n",data->system_temp);
- mutex_unlock(&data->update_lock);
- return ret;
-}
-
static ssize_t set_wdt_status(struct device *dev, struct device_attribute *da,
const char *buf, size_t count)
{
@@ -871,6 +596,28 @@ static struct as7326_56x_fan_data *as7326_56x_fan_update_device(struct device *d
return data;
}
+static umode_t as7326_56x_fan_is_visible(const void *drvdata,
+ enum hwmon_sensor_types type,
+ u32 attr, int channel)
+{
+ return 0;
+}
+
+static const struct hwmon_channel_info *as7326_56x_fan_info[] = {
+ HWMON_CHANNEL_INFO(fan,
+ HWMON_F_ENABLE),
+ NULL,
+};
+
+static const struct hwmon_ops as7326_56x_fan_hwmon_ops = {
+ .is_visible = as7326_56x_fan_is_visible,
+};
+
+static const struct hwmon_chip_info as7326_56x_fan_chip_info = {
+ .ops = &as7326_56x_fan_hwmon_ops,
+ .info = as7326_56x_fan_info,
+};
+
static int as7326_56x_fan_probe(struct i2c_client *client,
const struct i2c_device_id *dev_id)
{
@@ -902,7 +649,10 @@ static int as7326_56x_fan_probe(struct i2c_client *client,
}
data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "as7326_56x_fan",
- NULL, NULL, NULL);
+ NULL,
+ &as7326_56x_fan_chip_info,
+ NULL);
+
if (IS_ERR(data->hwmon_dev)) {
status = PTR_ERR(data->hwmon_dev);
goto exit_remove;
@@ -922,13 +672,11 @@ static int as7326_56x_fan_probe(struct i2c_client *client,
return status;
}
-static int as7326_56x_fan_remove(struct i2c_client *client)
+static void as7326_56x_fan_remove(struct i2c_client *client)
{
struct as7326_56x_fan_data *data = i2c_get_clientdata(client);
hwmon_device_unregister(data->hwmon_dev);
sysfs_remove_group(&client->dev.kobj, &as7326_56x_fan_group);
-
- return 0;
}
/* Addresses to scan */
diff --git a/packages/platforms/accton/x86-64/as7326-56x/modules/builds/x86-64-accton-as7326-56x-leds.c b/packages/platforms/accton/x86-64/as7326-56x/modules/builds/src/x86-64-accton-as7326-56x-leds.c
similarity index 100%
rename from packages/platforms/accton/x86-64/as7326-56x/modules/builds/x86-64-accton-as7326-56x-leds.c
rename to packages/platforms/accton/x86-64/as7326-56x/modules/builds/src/x86-64-accton-as7326-56x-leds.c
diff --git a/packages/platforms/accton/x86-64/as7326-56x/modules/builds/x86-64-accton-as7326-56x-psu.c b/packages/platforms/accton/x86-64/as7326-56x/modules/builds/src/x86-64-accton-as7326-56x-psu.c
similarity index 90%
rename from packages/platforms/accton/x86-64/as7326-56x/modules/builds/x86-64-accton-as7326-56x-psu.c
rename to packages/platforms/accton/x86-64/as7326-56x/modules/builds/src/x86-64-accton-as7326-56x-psu.c
index 1c9bdc1d25..5d09cbe907 100644
--- a/packages/platforms/accton/x86-64/as7326-56x/modules/builds/x86-64-accton-as7326-56x-psu.c
+++ b/packages/platforms/accton/x86-64/as7326-56x/modules/builds/src/x86-64-accton-as7326-56x-psu.c
@@ -155,6 +155,28 @@ static const struct attribute_group as7326_56x_psu_group = {
.attrs = as7326_56x_psu_attributes,
};
+static umode_t as7326_56x_psu_is_visible(const void *drvdata,
+ enum hwmon_sensor_types type,
+ u32 attr, int channel)
+{
+ return 0;
+}
+
+static const struct hwmon_channel_info *as7326_56x_psu_info[] = {
+ HWMON_CHANNEL_INFO(power,
+ HWMON_P_ENABLE),
+ NULL,
+};
+
+static const struct hwmon_ops as7326_56x_psu_hwmon_ops = {
+ .is_visible = as7326_56x_psu_is_visible,
+};
+
+static const struct hwmon_chip_info as7326_56x_psu_chip_info = {
+ .ops = &as7326_56x_psu_hwmon_ops,
+ .info = as7326_56x_psu_info,
+};
+
static int as7326_56x_psu_probe(struct i2c_client *client,
const struct i2c_device_id *dev_id)
{
@@ -185,8 +207,10 @@ static int as7326_56x_psu_probe(struct i2c_client *client,
goto exit_free;
}
- data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "as7326_56x_psu",
- NULL, NULL, NULL);
+ data->hwmon_dev = hwmon_device_register_with_info(
+ &client->dev, "as7326_56x_psu",
+ NULL, &as7326_56x_psu_chip_info, NULL);
+
if (IS_ERR(data->hwmon_dev)) {
status = PTR_ERR(data->hwmon_dev);
goto exit_remove;
@@ -206,15 +230,13 @@ static int as7326_56x_psu_probe(struct i2c_client *client,
return status;
}
-static int as7326_56x_psu_remove(struct i2c_client *client)
+static void as7326_56x_psu_remove(struct i2c_client *client)
{
struct as7326_56x_psu_data *data = i2c_get_clientdata(client);
hwmon_device_unregister(data->hwmon_dev);
sysfs_remove_group(&client->dev.kobj, &as7326_56x_psu_group);
kfree(data);
-
- return 0;
}
enum psu_index
diff --git a/packages/platforms/accton/x86-64/as7326-56x/platform-config/r0/src/lib/x86-64-accton-as7326-56x-r0.yml b/packages/platforms/accton/x86-64/as7326-56x/platform-config/r0/src/lib/x86-64-accton-as7326-56x-r0.yml
index 31f3a13a42..b9712d23db 100644
--- a/packages/platforms/accton/x86-64/as7326-56x/platform-config/r0/src/lib/x86-64-accton-as7326-56x-r0.yml
+++ b/packages/platforms/accton/x86-64/as7326-56x/platform-config/r0/src/lib/x86-64-accton-as7326-56x-r0.yml
@@ -18,7 +18,7 @@ x86-64-accton-as7326-56x-r0:
--stop=1
kernel:
- <<: *kernel-4-14
+ <<: *kernel-6-1
args: >-
nopat
diff --git a/packages/platforms/accton/x86-64/as7326-56x/platform-config/r0/src/python/x86_64_accton_as7326_56x_r0/__init__.py b/packages/platforms/accton/x86-64/as7326-56x/platform-config/r0/src/python/x86_64_accton_as7326_56x_r0/__init__.py
index e78ae81263..78f5c10e97 100755
--- a/packages/platforms/accton/x86-64/as7326-56x/platform-config/r0/src/python/x86_64_accton_as7326_56x_r0/__init__.py
+++ b/packages/platforms/accton/x86-64/as7326-56x/platform-config/r0/src/python/x86_64_accton_as7326_56x_r0/__init__.py
@@ -1,50 +1,66 @@
from onl.platform.base import *
from onl.platform.accton import *
-import commands
import os.path
import time
#IR3570A chip casue problem when read eeprom by i2c-block mode.
#It happen when read 16th-byte offset that value is 0x8. So disable chip
def disable_i2c_ir3570a(addr):
- check_i2c="i2cget -y 0 0x4 0x1"
- status, output = commands.getstatusoutput(check_i2c)
- if status!=0:
+ check_i2c = "i2cget -y 0 0x4 0x1"
+ process = subprocess.Popen(check_i2c, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = process.communicate()
+ status = process.returncode
+ if status != 0:
return -1
+
cmd = "i2cset -y 0 0x%x 0xE5 0x01" % addr
- status, output = commands.getstatusoutput(cmd)
+ process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ process.communicate()
+ if process.returncode != 0:
+ return process.returncode
+
cmd = "i2cset -y 0 0x%x 0x12 0x02" % addr
- status, output = commands.getstatusoutput(cmd)
- return status
+ process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ process.communicate()
+
+ return process.returncode
def ir3570_check():
- check_i2c="i2cget -y 0 0x42 0x1"
- status, output = commands.getstatusoutput(check_i2c)
- if status!=0:
+ check_i2c = "i2cget -y 0 0x42 0x1"
+ process = subprocess.Popen(check_i2c, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = process.communicate()
+ status = process.returncode
+ if status != 0:
return -1
+
cmd = "i2cdump -y 0 0x42 s 0x9a"
try:
- status, output = commands.getstatusoutput(cmd)
+ process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = process.communicate()
+ output = stdout.strip()
+
lines = output.split('\n')
hn = re.findall(r'\w+', lines[-1])
version = int(hn[1], 16)
- if version == 0x24: #Find IR3570A
+ if version == 0x24: # Find IR3570A
ret = disable_i2c_ir3570a(4)
else:
ret = 0
except Exception as e:
- print "Error on ir3570_check() e:" + str(e)
+ print("Error on ir3570_check() e:", str(e))
return -1
return ret
def _8v89307_init():
script = os.path.join(os.path.dirname(os.path.realpath(__file__)), "8v89307_init.sh")
if os.path.exists(script):
- status, output = commands.getstatusoutput(script)
- print output
+ process = subprocess.Popen(script, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = process.communicate()
+ status = process.returncode
+ print(stdout)
if status != 0:
- print "Error in 8v89307_init: " + str(e)
+ print("Error in 8v89307_init: " + stderr)
return False
return True
@@ -111,6 +127,9 @@ def baseconfig(self):
]
)
+ # initialize pca9548 idle_state
+ subprocess.call('echo -2 | tee /sys/bus/i2c/drivers/pca954x/*-00*/idle_state > /dev/null', shell=True)
+
sfp_map = [
42,41,44,43,47,45,46,50,
48,49,52,51,53,56,55,54,
diff --git a/packages/platforms/accton/x86-64/as7535-28xb/modules/PKG.yml b/packages/platforms/accton/x86-64/as7535-28xb/modules/PKG.yml
index 01ab73d127..4dd78fa946 100644
--- a/packages/platforms/accton/x86-64/as7535-28xb/modules/PKG.yml
+++ b/packages/platforms/accton/x86-64/as7535-28xb/modules/PKG.yml
@@ -1 +1 @@
-!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as7535-28xb ARCH=amd64 KERNELS="onl-kernel-4.19-lts-x86-64-all:amd64"
+!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as7535-28xb ARCH=amd64 KERNELS="onl-kernel-6.1-lts-x86-64-all:amd64"
diff --git a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/Makefile b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/Makefile
index 4c3b74572a..2797cd687f 100644
--- a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/Makefile
+++ b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/Makefile
@@ -1,5 +1,5 @@
-KERNELS := onl-kernel-4.19-lts-x86-64-all:amd64
-KMODULES := $(wildcard *.c)
+KERNELS := onl-kernel-6.1-lts-x86-64-all:amd64
+KMODULES := src
VENDOR := accton
BASENAME := x86-64-accton-as7535-28xb
ARCH := x86_64
diff --git a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/Makefile b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/Makefile
new file mode 100644
index 0000000000..602553bf08
--- /dev/null
+++ b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/Makefile
@@ -0,0 +1,7 @@
+obj-m += x86-64-accton-as7535-28xb-cpld.o
+obj-m += x86-64-accton-as7535-28xb-fan.o
+obj-m += x86-64-accton-as7535-28xb-fpga.o
+obj-m += x86-64-accton-as7535-28xb-leds.o
+obj-m += x86-64-accton-as7535-28xb-psu.o
+obj-m += x86-64-accton-as7535-28xb-sys.o
+obj-m += x86-64-accton-as7535-28xb-thermal.o
\ No newline at end of file
diff --git a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-cpld.c b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-cpld.c
similarity index 98%
rename from packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-cpld.c
rename to packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-cpld.c
index bafbfddb80..9c1ad7ea64 100644
--- a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-cpld.c
+++ b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-cpld.c
@@ -190,6 +190,7 @@ enum as7535_28xb_cpld_sysfs_attributes {
MODULE_PRESENT_ALL,
MODULE_RXLOS_ALL,
CPLD_VERSION,
+ MINOR_VERSION,
ACCESS,
};
@@ -225,6 +226,10 @@ enum as7535_28xb_cpld_sysfs_attributes {
&sensor_dev_attr_module_rx_los_##index.dev_attr.attr
static SENSOR_DEVICE_ATTR(version, S_IRUGO, show_version, NULL, CPLD_VERSION);
+
+static SENSOR_DEVICE_ATTR(minor_version, S_IRUGO, show_version, NULL, \
+ MINOR_VERSION);
+
static SENSOR_DEVICE_ATTR(access, S_IWUSR, NULL, access, ACCESS);
static SENSOR_DEVICE_ATTR(module_present_all, S_IRUGO, show_present_all, \
@@ -293,6 +298,7 @@ static struct attribute *as7535_28xb_cpld_attributes[] = {
DECLARE_SFP_TRANSCEIVER_ATTR(27),
DECLARE_SFP_TRANSCEIVER_ATTR(28),
&sensor_dev_attr_version.dev_attr.attr,
+ &sensor_dev_attr_minor_version.dev_attr.attr,
&sensor_dev_attr_access.dev_attr.attr,
&sensor_dev_attr_module_present_all.dev_attr.attr,
&sensor_dev_attr_module_rx_los_all.dev_attr.attr,
@@ -707,6 +713,13 @@ static ssize_t show_version(struct device *dev, struct device_attribute *da,
addr = 0x61;
reg = 0x1;
break;
+
+ case MINOR_VERSION:
+ bus = 12;
+ addr = 0x61;
+ reg = 0x2;
+ break;
+
default:
return -ENXIO;
}
@@ -770,15 +783,13 @@ static int as7535_28xb_cpld_probe(struct i2c_client *client,
return status;
}
-static int as7535_28xb_cpld_remove(struct i2c_client *client)
+static void as7535_28xb_cpld_remove(struct i2c_client *client)
{
struct as7535_28xb_cpld_data *data = i2c_get_clientdata(client);
sysfs_remove_group(&client->dev.kobj, cpld_groups[data->index]);
kfree(data);
as7535_28xb_cpld_remove_client(client);
-
- return 0;
}
static const struct i2c_device_id as7535_28xb_cpld_id[] = {
diff --git a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-fan.c b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-fan.c
similarity index 97%
rename from packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-fan.c
rename to packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-fan.c
index 5877ea4e91..c7d4170649 100644
--- a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-fan.c
+++ b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-fan.c
@@ -85,7 +85,7 @@ enum fan_data_index {
struct ipmi_data {
struct completion read_complete;
struct ipmi_addr address;
- ipmi_user_t user;
+ struct ipmi_user *user;
int interface;
struct kernel_ipmi_msg tx_message;
@@ -106,7 +106,7 @@ struct as7535_28xb_fan_data {
unsigned long last_updated; /* In jiffies */
/* 4 bytes for each fan, the last 2 bytes is fan dir */
unsigned char ipmi_resp[NUM_OF_FAN * FAN_DATA_COUNT + 2];
- unsigned char ipmi_resp_cpld;
+ unsigned char ipmi_resp_cpld[2];
unsigned char ipmi_resp_speed[NUM_OF_FAN * FAN_SPEED_DATA_COUNT];
struct ipmi_data ipmi;
unsigned char ipmi_tx_data[3]; /* 0: FAN id, 1: 0x02, 2: PWM */
@@ -151,6 +151,7 @@ enum as7535_28xb_fan_sysfs_attrs {
FAN_ATTR(6),
NUM_OF_FAN_ATTR,
FAN_VERSION,
+ FAN_MINOR_VERSION,
FAN_MAX_RPM,
NUM_OF_PER_FAN_ATTR = (NUM_OF_FAN_ATTR/NUM_OF_FAN),
FAN_RPM_THRESHOLD_ATTR(1),
@@ -163,9 +164,14 @@ enum as7535_28xb_fan_sysfs_attrs {
/* fan attributes */
#define DECLARE_FAN_VER_SENSOR_DEVICE_ATTR() \
- static SENSOR_DEVICE_ATTR(version, S_IRUGO, show_version, NULL, FAN_VERSION)
+ static SENSOR_DEVICE_ATTR(version, S_IRUGO, show_version, NULL, \
+ FAN_VERSION); \
+ static SENSOR_DEVICE_ATTR(minor_version, S_IRUGO, show_version, NULL, \
+ FAN_MINOR_VERSION)
+
#define DECLARE_FAN_VER_ATTR() \
- &sensor_dev_attr_version.dev_attr.attr
+ &sensor_dev_attr_version.dev_attr.attr, \
+ &sensor_dev_attr_minor_version.dev_attr.attr
#define DECLARE_FAN_SENSOR_DEVICE_ATTR(index) \
static SENSOR_DEVICE_ATTR(fan##index##_present, S_IRUGO, show_fan, NULL, \
@@ -511,7 +517,7 @@ static struct as7535_28xb_fan_data *as7535_28xb_fan_update_cpld_ver(void)
data->ipmi_tx_data[0] = 0x66;
status = ipmi_send_message(&data->ipmi, IPMI_FAN_REG_READ_CMD,
data->ipmi_tx_data, 1,
- &data->ipmi_resp_cpld,
+ data->ipmi_resp_cpld,
sizeof(data->ipmi_resp_cpld));
if (unlikely(status != 0))
goto exit;
@@ -531,6 +537,7 @@ static struct as7535_28xb_fan_data *as7535_28xb_fan_update_cpld_ver(void)
static ssize_t show_version(struct device *dev, struct device_attribute *da,
char *buf)
{
+ struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
unsigned char value = 0;
int error = 0;
@@ -542,7 +549,11 @@ static ssize_t show_version(struct device *dev, struct device_attribute *da,
goto exit;
}
- value = data->ipmi_resp_cpld;
+ if (attr->index == FAN_VERSION)
+ value = data->ipmi_resp_cpld[0];
+ else if (attr->index == FAN_MINOR_VERSION)
+ value = data->ipmi_resp_cpld[1];
+
mutex_unlock(&data->update_lock);
return sprintf(buf, "%d\n", value);
diff --git a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-fpga.c b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-fpga.c
similarity index 99%
rename from packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-fpga.c
rename to packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-fpga.c
index 3be0de131c..1956ad7d18 100644
--- a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-fpga.c
+++ b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-fpga.c
@@ -362,15 +362,13 @@ static int as7535_28xb_fpga_probe(struct i2c_client *client,
return status;
}
-static int as7535_28xb_fpga_remove(struct i2c_client *client)
+static void as7535_28xb_fpga_remove(struct i2c_client *client)
{
struct as7535_28xb_fpga_data *data = i2c_get_clientdata(client);
sysfs_remove_group(&client->dev.kobj, fpga_groups[data->index]);
kfree(data);
as7535_28xb_fpga_remove_client(client);
-
- return 0;
}
static const struct i2c_device_id as7535_28xb_fpga_id[] = {
diff --git a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-leds.c b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-leds.c
similarity index 99%
rename from packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-leds.c
rename to packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-leds.c
index a3e2b145c9..34facdabcc 100644
--- a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-leds.c
+++ b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-leds.c
@@ -49,7 +49,7 @@ static int as7535_28xb_led_remove(struct platform_device *pdev);
struct ipmi_data {
struct completion read_complete;
struct ipmi_addr address;
- ipmi_user_t user;
+ struct ipmi_user *user;
int interface;
struct kernel_ipmi_msg tx_message;
diff --git a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-psu.c b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-psu.c
similarity index 99%
rename from packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-psu.c
rename to packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-psu.c
index dd8c9e33e6..9180fa5947 100644
--- a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-psu.c
+++ b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-psu.c
@@ -149,7 +149,7 @@ enum psu_data_index {
struct ipmi_data {
struct completion read_complete;
struct ipmi_addr address;
- ipmi_user_t user;
+ struct ipmi_user *user;
int interface;
struct kernel_ipmi_msg tx_message;
diff --git a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-sys.c b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-sys.c
similarity index 73%
rename from packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-sys.c
rename to packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-sys.c
index fb9fb65923..c5f0fce56c 100644
--- a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-sys.c
+++ b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-sys.c
@@ -37,6 +37,8 @@
#define IPMI_TIMEOUT (5 * HZ)
#define IPMI_ERR_RETRY_TIMES 1
#define IPMI_READ_MAX_LEN 128
+#define IPMI_RESET_CMD 0x65
+#define IPMI_RESET_CMD_LENGTH 6
#define EEPROM_NAME "eeprom"
#define EEPROM_SIZE 256 /* 256 byte eeprom */
@@ -48,12 +50,16 @@ static void ipmi_msg_handler(struct ipmi_recv_msg *msg, void *user_msg_data);
static int as7535_28xb_sys_probe(struct platform_device *pdev);
static int as7535_28xb_sys_remove(struct platform_device *pdev);
static ssize_t show_version(struct device *dev,
- struct device_attribute *da, char *buf);
+ struct device_attribute *da, char *buf);
+static ssize_t get_reset(struct device *dev, struct device_attribute *da,
+ char *buf);
+static ssize_t set_reset(struct device *dev, struct device_attribute *da,
+ const char *buf, size_t count);
struct ipmi_data {
struct completion read_complete;
struct ipmi_addr address;
- ipmi_user_t user;
+ struct ipmi_user *user;
int interface;
struct kernel_ipmi_msg tx_message;
@@ -74,8 +80,10 @@ struct as7535_28xb_sys_data {
unsigned long last_updated; /* In jiffies */
struct ipmi_data ipmi;
unsigned char ipmi_resp_eeprom[EEPROM_SIZE];
- unsigned char ipmi_resp_cpld;
+ unsigned char ipmi_resp_cpld[2];
unsigned char ipmi_tx_data[2];
+ unsigned char ipmi_resp_rst[2];
+ unsigned char ipmi_tx_data_rst[IPMI_RESET_CMD_LENGTH];
struct bin_attribute eeprom; /* eeprom data */
};
@@ -91,13 +99,41 @@ static struct platform_driver as7535_28xb_sys_driver = {
};
enum as7535_28xb_sys_sysfs_attrs {
+ RESET_MUX,
+ RESET_MAC,
FPGA_VER, /* FPGA version */
+ FPGA_MINOR_VER, /* FPGA minor version */
+ CPU_CPLD_VER, /* CPU CPLD version */
+ CPU_CPLD_MINOR_VER, /* CPU CPLD minor version */
};
-static SENSOR_DEVICE_ATTR(fpga_version, S_IRUGO, show_version, NULL, FPGA_VER);
+static SENSOR_DEVICE_ATTR(fpga_version, S_IRUGO, show_version, NULL, \
+ FPGA_VER);
+static SENSOR_DEVICE_ATTR(fpga_minor_version, S_IRUGO, show_version, NULL, \
+ FPGA_MINOR_VER);
+static SENSOR_DEVICE_ATTR(cpu_cpld_version, S_IRUGO, show_version, NULL, \
+ CPU_CPLD_VER);
+static SENSOR_DEVICE_ATTR(cpu_cpld_minor_version, S_IRUGO, show_version, NULL, \
+ CPU_CPLD_MINOR_VER);
+
+#define DECLARE_RESET_SENSOR_DEVICE_ATTR() \
+ static SENSOR_DEVICE_ATTR(reset_mac, S_IWUSR | S_IRUGO, \
+ get_reset, set_reset, RESET_MAC); \
+ static SENSOR_DEVICE_ATTR(reset_mux, S_IWUSR | S_IRUGO, \
+ get_reset, set_reset, RESET_MUX)
+#define DECLARE_RESET_ATTR() \
+ &sensor_dev_attr_reset_mac.dev_attr.attr, \
+ &sensor_dev_attr_reset_mux.dev_attr.attr
+
+DECLARE_RESET_SENSOR_DEVICE_ATTR();
static struct attribute *as7535_28xb_sys_attributes[] = {
+ /* sysfs attributes */
+ DECLARE_RESET_ATTR(),
&sensor_dev_attr_fpga_version.dev_attr.attr,
+ &sensor_dev_attr_fpga_minor_version.dev_attr.attr,
+ &sensor_dev_attr_cpu_cpld_version.dev_attr.attr,
+ &sensor_dev_attr_cpu_cpld_minor_version.dev_attr.attr,
NULL
};
@@ -245,6 +281,71 @@ static void ipmi_msg_handler(struct ipmi_recv_msg *msg, void *user_msg_data)
complete(&ipmi->read_complete);
}
+static ssize_t get_reset(struct device *dev, struct device_attribute *da,
+ char *buf)
+{
+ int status = 0;
+
+ mutex_lock(&data->update_lock);
+ status = ipmi_send_message(&data->ipmi, IPMI_RESET_CMD, NULL, 0,
+ data->ipmi_resp_rst, sizeof(data->ipmi_resp_rst));
+ if (unlikely(status != 0))
+ goto exit;
+
+ if (unlikely(data->ipmi.rx_result != 0)) {
+ status = -EIO;
+ goto exit;
+ }
+
+ mutex_unlock(&data->update_lock);
+ return sprintf(buf, "0x%x 0x%x", data->ipmi_resp_rst[0], data->ipmi_resp_rst[1]);
+
+ exit:
+ mutex_unlock(&data->update_lock);
+ return status;
+}
+
+static ssize_t set_reset(struct device *dev, struct device_attribute *da,
+ const char *buf, size_t count)
+{
+ u32 magic[2];
+ int status;
+ struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
+
+ if (sscanf(buf, "0x%x 0x%x", &magic[0], &magic[1]) != 2)
+ return -EINVAL;
+
+ if (magic[0] > 0xFF || magic[1] > 0xFF)
+ return -EINVAL;
+
+ mutex_lock(&data->update_lock);
+
+ /* Send IPMI write command */
+ data->ipmi_tx_data_rst[0] = 0;
+ data->ipmi_tx_data_rst[1] = 0;
+ data->ipmi_tx_data_rst[2] = (attr->index == RESET_MUX) ? 0 : (attr->index);
+ data->ipmi_tx_data_rst[3] = (attr->index == RESET_MUX) ? 2 : 1;
+ data->ipmi_tx_data_rst[4] = magic[0];
+ data->ipmi_tx_data_rst[5] = magic[1];
+
+ status = ipmi_send_message(&data->ipmi, IPMI_RESET_CMD,
+ data->ipmi_tx_data_rst,
+ sizeof(data->ipmi_tx_data_rst), NULL, 0);
+ if (unlikely(status != 0))
+ goto exit;
+
+ if (unlikely(data->ipmi.rx_result != 0)) {
+ status = -EIO;
+ goto exit;
+ }
+
+ status = count;
+
+ exit:
+ mutex_unlock(&data->update_lock);
+ return status;
+}
+
static ssize_t sys_eeprom_read(loff_t off, char *buf, size_t count)
{
int status = 0;
@@ -329,15 +430,17 @@ static int sysfs_eeprom_cleanup(struct kobject *kobj,
return 0;
}
-static struct as7535_28xb_sys_data *as7535_28xb_sys_update_fpga_ver(void)
+static struct as7535_28xb_sys_data *as7535_28xb_sys_update_ver(
+ unsigned char reg)
{
int status = 0;
data->valid = 0;
- data->ipmi_tx_data[0] = 0x60;
+
+ data->ipmi_tx_data[0] = reg;
status = ipmi_send_message(&data->ipmi, IPMI_CPLD_READ_CMD,
data->ipmi_tx_data, 1,
- &data->ipmi_resp_cpld,
+ data->ipmi_resp_cpld,
sizeof(data->ipmi_resp_cpld));
if (unlikely(status != 0))
goto exit;
@@ -357,18 +460,31 @@ static struct as7535_28xb_sys_data *as7535_28xb_sys_update_fpga_ver(void)
static ssize_t show_version(struct device *dev,
struct device_attribute *da, char *buf)
{
+ struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
+ unsigned char reg;
unsigned char value = 0;
int error = 0;
mutex_lock(&data->update_lock);
- data = as7535_28xb_sys_update_fpga_ver();
+ if ((attr->index == FPGA_VER) || (attr->index == FPGA_MINOR_VER))
+ reg = 0x60;
+ else if ((attr->index == CPU_CPLD_VER) ||
+ (attr->index == CPU_CPLD_MINOR_VER))
+ reg = 0x65;
+
+ data = as7535_28xb_sys_update_ver(reg);
+
if (!data->valid) {
error = -EIO;
goto exit;
}
- value = data->ipmi_resp_cpld;
+ if ((attr->index == FPGA_VER) || (attr->index == CPU_CPLD_VER))
+ value = data->ipmi_resp_cpld[0];
+ else if (attr->index == FPGA_MINOR_VER || attr->index == CPU_CPLD_MINOR_VER)
+ value = data->ipmi_resp_cpld[1];
+
mutex_unlock(&data->update_lock);
return sprintf(buf, "%d\n", value);
diff --git a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-thermal.c b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-thermal.c
similarity index 99%
rename from packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-thermal.c
rename to packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-thermal.c
index 715197af9f..86bd5adc40 100644
--- a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-thermal.c
+++ b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/src/x86-64-accton-as7535-28xb-thermal.c
@@ -61,7 +61,7 @@ enum temp_data_index {
struct ipmi_data {
struct completion read_complete;
struct ipmi_addr address;
- ipmi_user_t user;
+ struct ipmi_user *user;
int interface;
struct kernel_ipmi_msg tx_message;
diff --git a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/platform_lib.c b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/platform_lib.c
index 57d05d7608..46bee4ffa5 100644
--- a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/platform_lib.c
+++ b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/platform_lib.c
@@ -27,6 +27,8 @@
#include
#include "platform_lib.h"
+#define WARM_RESET_FORMAT "/sys/devices/platform/as7535_28xb_sys/reset_%s"
+
enum onlp_fan_dir onlp_get_fan_dir(int fid)
{
int len = 0;
@@ -79,4 +81,39 @@ int get_pcb_id()
pcb_id = (atoi(data) >> 2) & 0xff;
return pcb_id;
-}
\ No newline at end of file
+}
+
+/**
+ * @brief warm reset for mac, mux
+ * @param unit_id The warm reset device unit id, should be 0
+ * @param reset_dev The warm reset device id, should be 1 ~ (WARM_RESET_MAX-1)
+ * @param ret return value.
+ */
+int onlp_data_path_reset(uint8_t unit_id, uint8_t reset_dev)
+{
+ int len = 0;
+ int ret = ONLP_STATUS_OK;
+ char *magic_num = NULL;
+ char *device_id[] = { NULL, "mac", NULL, "mux" };
+
+ if (unit_id != 0 || reset_dev >= WARM_RESET_MAX)
+ return ONLP_STATUS_E_PARAM;
+
+ if (reset_dev == 0 || reset_dev == WARM_RESET_PHY)
+ return ONLP_STATUS_E_UNSUPPORTED;
+
+ /* Reset device */
+ len = onlp_file_read_str(&magic_num, WARM_RESET_FORMAT, device_id[reset_dev]);
+ if (magic_num && len) {
+ ret = onlp_file_write_str(magic_num, WARM_RESET_FORMAT, device_id[reset_dev]);
+ if (ret < 0) {
+ AIM_LOG_ERROR("Reset device-%d:(%s) failed.", reset_dev, device_id[reset_dev]);
+ }
+ }
+ else {
+ ret = ONLP_STATUS_E_INTERNAL;
+ }
+
+ AIM_FREE_IF_PTR(magic_num);
+ return ret;
+}
diff --git a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/platform_lib.h b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/platform_lib.h
index a0a324bd17..f9e17371be 100644
--- a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/platform_lib.h
+++ b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/platform_lib.h
@@ -65,6 +65,13 @@ enum onlp_thermal_id {
THERMAL_COUNT
};
+enum reset_dev_type {
+ WARM_RESET_MAC = 1,
+ WARM_RESET_PHY, /* Not supported */
+ WARM_RESET_MUX,
+ WARM_RESET_MAX
+};
+
enum onlp_led_id {
LED_LOC = 1,
LED_DIAG,
diff --git a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/psui.c b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/psui.c
index 2333ded181..50ecb4584c 100644
--- a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/psui.c
+++ b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/psui.c
@@ -90,13 +90,11 @@ onlp_psui_info_get(onlp_oid_t id, onlp_psu_info_t* info)
if (ret < 0) {
AIM_LOG_ERROR("Unable to read status from (%s""psu%d_power_good)\r\n",
PSU_SYSFS_PATH, pid);
- info->status |= ONLP_PSU_STATUS_FAILED;
return ONLP_STATUS_E_INTERNAL;
}
if (val != PSU_STATUS_POWER_GOOD) {
- info->status |= ONLP_PSU_STATUS_FAILED;
- return ONLP_STATUS_OK;
+ info->status |= ONLP_PSU_STATUS_UNPLUGGED;
}
/* Set capability
diff --git a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sysi.c b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sysi.c
index 8e0b8ad559..d9679dac7c 100644
--- a/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sysi.c
+++ b/packages/platforms/accton/x86-64/as7535-28xb/onlp/builds/x86_64_accton_as7535_28xb/module/src/sysi.c
@@ -34,12 +34,22 @@
#include "x86_64_accton_as7535_28xb_int.h"
#include "x86_64_accton_as7535_28xb_log.h"
-#define NUM_OF_CPLD_VER 3
+
+#define NUM_OF_CPLD_VER 8
+#define BMC_AUX_FW_VER_LEN 20
+
+#define BIOS_VER_PATH "/sys/devices/virtual/dmi/id/bios_version"
+#define BMC_VER_PREFIX "/sys/devices/pci0000:00/0000:00:1f.0/IPI0001:00/bmc/"
static char* cpld_ver_path[NUM_OF_CPLD_VER] = {
+ "/sys/devices/platform/as7535_28xb_sys/cpu_cpld_version",
+ "/sys/devices/platform/as7535_28xb_sys/cpu_cpld_minor_version",
"/sys/bus/i2c/devices/12-0061/version", /* Main CPLD */
- "/sys/devices/platform/as7535_28xb_sys/fpga_version", /* FPGA */
- "/sys/devices/platform/as7535_28xb_fan/version", /* Fan CPLD */
+ "/sys/bus/i2c/devices/12-0061/minor_version",
+ "/sys/devices/platform/as7535_28xb_fan/version",
+ "/sys/devices/platform/as7535_28xb_fan/minor_version",
+ "/sys/devices/platform/as7535_28xb_sys/fpga_version",
+ "/sys/devices/platform/as7535_28xb_sys/fpga_minor_version",
};
const char*
@@ -110,6 +120,12 @@ int
onlp_sysi_platform_info_get(onlp_platform_info_t* pi)
{
int i, v[NUM_OF_CPLD_VER] = {0};
+ int len = 0;
+ onlp_onie_info_t onie;
+ char *bios_ver = NULL;
+ char *bmc_fw_ver = NULL;
+ char *tmp = NULL;
+ char bmc_aux_fw_ver[BMC_AUX_FW_VER_LEN] = {0};
for (i = 0; i < AIM_ARRAYSIZE(cpld_ver_path); i++) {
v[i] = 0;
@@ -119,8 +135,31 @@ onlp_sysi_platform_info_get(onlp_platform_info_t* pi)
}
}
- pi->cpld_versions = aim_fstrdup("\r\nCPLD:%02x\r\nFPGA:%02x\r\nFan CPLD:%02x",
- v[0], v[1], v[2]);
+ onlp_file_read_str(&bios_ver, BIOS_VER_PATH);
+ onlp_onie_decode_file(&onie, IDPROM_PATH);
+ onlp_file_read_str(&bmc_fw_ver, BMC_VER_PREFIX"firmware_revision");
+ len = onlp_file_read_str(&tmp, BMC_VER_PREFIX"aux_firmware_revision");
+
+ if(tmp && len){
+ memcpy(bmc_aux_fw_ver, tmp, len);
+ bmc_aux_fw_ver[len] = '\0';
+ }
+
+ pi->cpld_versions = aim_fstrdup("\r\n\t CPU CPLD(0x65): %02X.%02X"
+ "\r\n\t Main CPLD(0x61): %02X.%02X"
+ "\r\n\t Fan CPLD(0x66): %02X.%02X"
+ "\r\n\t FPGA(0x60): %02X.%02X\r\n",
+ v[0], v[1], v[2], v[3],
+ v[4], v[5], v[6], v[7]);
+
+ pi->other_versions = aim_fstrdup("\r\n\t BIOS: %s\r\n\t ONIE: %s"
+ "\r\n\t BMC: %s.%c%c",
+ bios_ver, onie.onie_version, bmc_fw_ver,
+ bmc_aux_fw_ver[17], bmc_aux_fw_ver[18]);
+
+ AIM_FREE_IF_PTR(bios_ver);
+ AIM_FREE_IF_PTR(bmc_fw_ver);
+ AIM_FREE_IF_PTR(tmp);
return ONLP_STATUS_OK;
}
@@ -129,4 +168,5 @@ void
onlp_sysi_platform_info_free(onlp_platform_info_t* pi)
{
aim_free(pi->cpld_versions);
+ aim_free(pi->other_versions);
}
diff --git a/packages/platforms/accton/x86-64/as7535-28xb/platform-config/r0/src/lib/x86-64-accton-as7535-28xb-r0.yml b/packages/platforms/accton/x86-64/as7535-28xb/platform-config/r0/src/lib/x86-64-accton-as7535-28xb-r0.yml
index 3a7f926703..841694c11d 100644
--- a/packages/platforms/accton/x86-64/as7535-28xb/platform-config/r0/src/lib/x86-64-accton-as7535-28xb-r0.yml
+++ b/packages/platforms/accton/x86-64/as7535-28xb/platform-config/r0/src/lib/x86-64-accton-as7535-28xb-r0.yml
@@ -18,7 +18,7 @@ x86-64-accton-as7535-28xb-r0:
--stop=1
kernel:
- <<: *kernel-4-19
+ <<: *kernel-6-1
args: >-
console=ttyS0,115200n8
diff --git a/packages/platforms/accton/x86-64/as7535-28xb/platform-config/r0/src/python/x86_64_accton_as7535_28xb_r0/__init__.py b/packages/platforms/accton/x86-64/as7535-28xb/platform-config/r0/src/python/x86_64_accton_as7535_28xb_r0/__init__.py
index af8375b89b..73225d8365 100644
--- a/packages/platforms/accton/x86-64/as7535-28xb/platform-config/r0/src/python/x86_64_accton_as7535_28xb_r0/__init__.py
+++ b/packages/platforms/accton/x86-64/as7535-28xb/platform-config/r0/src/python/x86_64_accton_as7535_28xb_r0/__init__.py
@@ -30,6 +30,9 @@ def baseconfig(self):
]
)
+ # initialize pca9548 idle_state
+ subprocess.call('echo -2 | tee /sys/bus/i2c/drivers/pca954x/*-00*/idle_state > /dev/null', shell=True)
+
# initialize SFP devices
for port in range(1, 5):
subprocess.call('echo 0 > /sys/bus/i2c/devices/12-0061/module_reset_%d' % (port), shell=True)
diff --git a/packages/platforms/accton/x86-64/as7712-32x/modules/PKG.yml b/packages/platforms/accton/x86-64/as7712-32x/modules/PKG.yml
index b3780a0624..7f8368ca86 100644
--- a/packages/platforms/accton/x86-64/as7712-32x/modules/PKG.yml
+++ b/packages/platforms/accton/x86-64/as7712-32x/modules/PKG.yml
@@ -1 +1 @@
-!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as7712-32x ARCH=amd64 KERNELS="onl-kernel-4.14-lts-x86-64-all:amd64"
+!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as7712-32x ARCH=amd64 KERNELS="onl-kernel-6.1-lts-x86-64-all:amd64"
diff --git a/packages/platforms/accton/x86-64/as7712-32x/modules/builds/Makefile b/packages/platforms/accton/x86-64/as7712-32x/modules/builds/Makefile
index 52dac67b27..8819581958 100644
--- a/packages/platforms/accton/x86-64/as7712-32x/modules/builds/Makefile
+++ b/packages/platforms/accton/x86-64/as7712-32x/modules/builds/Makefile
@@ -1,5 +1,5 @@
-KERNELS := onl-kernel-4.14-lts-x86-64-all:amd64
-KMODULES := $(wildcard *.c)
+KERNELS := onl-kernel-6.1-lts-x86-64-all:amd64
+KMODULES := src
VENDOR := accton
BASENAME := x86-64-accton-as7712-32x
ARCH := x86_64
diff --git a/packages/platforms/accton/x86-64/as7712-32x/modules/builds/src/Makefile b/packages/platforms/accton/x86-64/as7712-32x/modules/builds/src/Makefile
new file mode 100644
index 0000000000..323998a686
--- /dev/null
+++ b/packages/platforms/accton/x86-64/as7712-32x/modules/builds/src/Makefile
@@ -0,0 +1,4 @@
+obj-m += x86-64-accton-as7712-32x-cpld1.o
+obj-m += x86-64-accton-as7712-32x-fan.o
+obj-m += x86-64-accton-as7712-32x-leds.o
+obj-m += x86-64-accton-as7712-32x-psu.o
\ No newline at end of file
diff --git a/packages/platforms/accton/x86-64/as7712-32x/modules/builds/x86-64-accton-as7712-32x-cpld1.c b/packages/platforms/accton/x86-64/as7712-32x/modules/builds/src/x86-64-accton-as7712-32x-cpld1.c
similarity index 90%
rename from packages/platforms/accton/x86-64/as7712-32x/modules/builds/x86-64-accton-as7712-32x-cpld1.c
rename to packages/platforms/accton/x86-64/as7712-32x/modules/builds/src/x86-64-accton-as7712-32x-cpld1.c
index 3ffb77f3f3..6c2b266f13 100644
--- a/packages/platforms/accton/x86-64/as7712-32x/modules/builds/x86-64-accton-as7712-32x-cpld1.c
+++ b/packages/platforms/accton/x86-64/as7712-32x/modules/builds/src/x86-64-accton-as7712-32x-cpld1.c
@@ -152,8 +152,8 @@ DECLARE_TRANSCEIVER_SENSOR_DEVICE_ATTR(31);
DECLARE_TRANSCEIVER_SENSOR_DEVICE_ATTR(32);
static struct attribute *as7712_32x_cpld_attributes[] = {
- &sensor_dev_attr_version.dev_attr.attr,
- &sensor_dev_attr_access.dev_attr.attr,
+ &sensor_dev_attr_version.dev_attr.attr,
+ &sensor_dev_attr_access.dev_attr.attr,
/* transceiver attributes */
&sensor_dev_attr_module_present_all.dev_attr.attr,
DECLARE_TRANSCEIVER_ATTR(1),
@@ -208,7 +208,7 @@ static ssize_t show_present_all(struct device *dev, struct device_attribute *da,
for (i = 0; i < ARRAY_SIZE(regs); i++) {
status = as7712_32x_cpld_read_internal(client, regs[i]);
-
+
if (status < 0) {
goto exit;
}
@@ -231,9 +231,9 @@ static ssize_t show_present_all(struct device *dev, struct device_attribute *da,
static ssize_t show_present(struct device *dev, struct device_attribute *da,
char *buf)
{
- struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
- struct i2c_client *client = to_i2c_client(dev);
- struct as7712_32x_cpld_data *data = i2c_get_clientdata(client);
+ struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
+ struct i2c_client *client = to_i2c_client(dev);
+ struct as7712_32x_cpld_data *data = i2c_get_clientdata(client);
int status = 0;
u8 reg = 0, mask = 0;
@@ -259,7 +259,7 @@ static ssize_t show_present(struct device *dev, struct device_attribute *da,
}
- mutex_lock(&data->update_lock);
+ mutex_lock(&data->update_lock);
status = as7712_32x_cpld_read_internal(client, reg);
if (unlikely(status < 0)) {
goto exit;
@@ -277,9 +277,9 @@ static ssize_t show_version(struct device *dev, struct device_attribute *da,
char *buf)
{
u8 reg = 0, mask = 0;
- struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
- struct i2c_client *client = to_i2c_client(dev);
- struct as7712_32x_cpld_data *data = i2c_get_clientdata(client);
+ struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
+ struct i2c_client *client = to_i2c_client(dev);
+ struct as7712_32x_cpld_data *data = i2c_get_clientdata(client);
int status = 0;
switch (attr->index) {
@@ -309,8 +309,8 @@ static ssize_t access(struct device *dev, struct device_attribute *da,
{
int status;
u32 addr, val;
- struct i2c_client *client = to_i2c_client(dev);
- struct as7712_32x_cpld_data *data = i2c_get_clientdata(client);
+ struct i2c_client *client = to_i2c_client(dev);
+ struct as7712_32x_cpld_data *data = i2c_get_clientdata(client);
if (sscanf(buf, "0x%x 0x%x", &addr, &val) != 2) {
return -EINVAL;
@@ -348,7 +348,7 @@ static int as7712_32x_cpld_read_internal(struct i2c_client *client, u8 reg)
break;
}
- return status;
+ return status;
}
static int as7712_32x_cpld_write_internal(struct i2c_client *client, u8 reg, u8 value)
@@ -372,14 +372,14 @@ static int as7712_32x_cpld_write_internal(struct i2c_client *client, u8 reg, u8
static void as7712_32x_cpld_add_client(struct i2c_client *client)
{
struct cpld_client_node *node = kzalloc(sizeof(struct cpld_client_node), GFP_KERNEL);
-
+
if (!node) {
dev_dbg(&client->dev, "Can't allocate cpld_client_node (0x%x)\n", client->addr);
return;
}
-
+
node->client = client;
-
+
mutex_lock(&list_lock);
list_add(&node->list, &cpld_client_list);
mutex_unlock(&list_lock);
@@ -390,7 +390,7 @@ static void as7712_32x_cpld_remove_client(struct i2c_client *client)
struct list_head *list_node = NULL;
struct cpld_client_node *cpld_node = NULL;
int found = 0;
-
+
mutex_lock(&list_lock);
list_for_each(list_node, &cpld_client_list)
@@ -402,15 +402,36 @@ static void as7712_32x_cpld_remove_client(struct i2c_client *client)
break;
}
}
-
+
if (found) {
list_del(list_node);
kfree(cpld_node);
}
-
+
mutex_unlock(&list_lock);
}
+static umode_t as7712_32x_cpld_is_visible(const void *drvdata,
+ enum hwmon_sensor_types type,
+ u32 attr, int channel)
+{
+ return 0;
+}
+
+static const struct hwmon_channel_info *as7712_32x_cpld_info[] = {
+ HWMON_CHANNEL_INFO(chip, HWMON_C_REGISTER_TZ),
+ NULL,
+};
+
+static const struct hwmon_ops as7712_32x_cpld_hwmon_ops = {
+ .is_visible = as7712_32x_cpld_is_visible,
+};
+
+static const struct hwmon_chip_info as7712_32x_cpld_chip_info = {
+ .ops = &as7712_32x_cpld_hwmon_ops,
+ .info = as7712_32x_cpld_info,
+};
+
static int as7712_32x_cpld_probe(struct i2c_client *client,
const struct i2c_device_id *dev_id)
{
@@ -440,7 +461,10 @@ static int as7712_32x_cpld_probe(struct i2c_client *client,
}
data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "as7712_32x_cpld",
- NULL, NULL, NULL);
+ NULL,
+ &as7712_32x_cpld_chip_info,
+ NULL);
+
if (IS_ERR(data->hwmon_dev)) {
status = PTR_ERR(data->hwmon_dev);
goto exit_remove;
@@ -458,20 +482,18 @@ static int as7712_32x_cpld_probe(struct i2c_client *client,
exit_free:
kfree(data);
exit:
-
+
return status;
}
-static int as7712_32x_cpld_remove(struct i2c_client *client)
+static void as7712_32x_cpld_remove(struct i2c_client *client)
{
struct as7712_32x_cpld_data *data = i2c_get_clientdata(client);
hwmon_device_unregister(data->hwmon_dev);
sysfs_remove_group(&client->dev.kobj, &as7712_32x_cpld_group);
kfree(data);
- as7712_32x_cpld_remove_client(client);
-
- return 0;
+ as7712_32x_cpld_remove_client(client);
}
int as7712_32x_cpld_read(unsigned short cpld_addr, u8 reg)
@@ -479,19 +501,19 @@ int as7712_32x_cpld_read(unsigned short cpld_addr, u8 reg)
struct list_head *list_node = NULL;
struct cpld_client_node *cpld_node = NULL;
int ret = -EPERM;
-
+
mutex_lock(&list_lock);
list_for_each(list_node, &cpld_client_list)
{
cpld_node = list_entry(list_node, struct cpld_client_node, list);
-
+
if (cpld_node->client->addr == cpld_addr) {
ret = i2c_smbus_read_byte_data(cpld_node->client, reg);
break;
}
}
-
+
mutex_unlock(&list_lock);
return ret;
@@ -503,19 +525,19 @@ int as7712_32x_cpld_write(unsigned short cpld_addr, u8 reg, u8 value)
struct list_head *list_node = NULL;
struct cpld_client_node *cpld_node = NULL;
int ret = -EIO;
-
+
mutex_lock(&list_lock);
list_for_each(list_node, &cpld_client_list)
{
cpld_node = list_entry(list_node, struct cpld_client_node, list);
-
+
if (cpld_node->client->addr == cpld_addr) {
ret = i2c_smbus_write_byte_data(cpld_node->client, reg, value);
break;
}
}
-
+
mutex_unlock(&list_lock);
return ret;
diff --git a/packages/platforms/accton/x86-64/as7712-32x/modules/builds/x86-64-accton-as7712-32x-fan.c b/packages/platforms/accton/x86-64/as7712-32x/modules/builds/src/x86-64-accton-as7712-32x-fan.c
similarity index 94%
rename from packages/platforms/accton/x86-64/as7712-32x/modules/builds/x86-64-accton-as7712-32x-fan.c
rename to packages/platforms/accton/x86-64/as7712-32x/modules/builds/src/x86-64-accton-as7712-32x-fan.c
index 8b2be6d881..c28ce987a8 100644
--- a/packages/platforms/accton/x86-64/as7712-32x/modules/builds/x86-64-accton-as7712-32x-fan.c
+++ b/packages/platforms/accton/x86-64/as7712-32x/modules/builds/src/x86-64-accton-as7712-32x-fan.c
@@ -278,18 +278,18 @@ static ssize_t set_duty_cycle(struct device *dev, struct device_attribute *da,
if (value < 0 || value > FAN_MAX_DUTY_CYCLE) {
return -EINVAL;
}
-
+
mutex_lock(&data->update_lock);
/* Disable the watchdog timer
*/
error = as7712_32x_fan_write_value(client, 0x33, 0);
-
+
if (error != 0) {
dev_dbg(&client->dev, "Unable to disable the watchdog timer\n");
mutex_unlock(&data->update_lock);
return error;
- }
+ }
as7712_32x_fan_write_value(client, fan_reg[FAN_DUTY_CYCLE_PERCENTAGE], duty_cycle_to_reg_val(value));
data->valid = 0;
@@ -361,11 +361,11 @@ static ssize_t fan_show_value(struct device *dev, struct device_attribute *da,
break;
default:
break;
- }
+ }
}
mutex_unlock(&data->update_lock);
-
+
return ret;
}
@@ -384,12 +384,12 @@ static struct as7712_32x_fan_data *as7712_32x_fan_update_device(struct device *d
dev_dbg(&client->dev, "Starting as7712_32x_fan update\n");
data->valid = 0;
-
+
/* Update fan data
*/
for (i = 0; i < ARRAY_SIZE(data->reg_val); i++) {
int status = as7712_32x_fan_read_value(client, fan_reg[i]);
-
+
if (status < 0) {
data->valid = 0;
mutex_unlock(&data->update_lock);
@@ -408,6 +408,27 @@ static struct as7712_32x_fan_data *as7712_32x_fan_update_device(struct device *d
return data;
}
+static umode_t as7712_32x_fan_is_visible(const void *drvdata,
+ enum hwmon_sensor_types type,
+ u32 attr, int channel)
+{
+ return 0;
+}
+
+static const struct hwmon_channel_info *as7712_32x_fan_info[] = {
+ HWMON_CHANNEL_INFO(fan, HWMON_F_ENABLE),
+ NULL,
+};
+
+static const struct hwmon_ops as7712_32x_fan_hwmon_ops = {
+ .is_visible = as7712_32x_fan_is_visible,
+};
+
+static const struct hwmon_chip_info as7712_32x_fan_chip_info = {
+ .ops = &as7712_32x_fan_hwmon_ops,
+ .info = as7712_32x_fan_info,
+};
+
static int as7712_32x_fan_probe(struct i2c_client *client,
const struct i2c_device_id *dev_id)
{
@@ -437,8 +458,12 @@ static int as7712_32x_fan_probe(struct i2c_client *client,
goto exit_free;
}
- data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "as7712_32x_fan",
- NULL, NULL, NULL);
+ data->hwmon_dev = hwmon_device_register_with_info(&client->dev,
+ "as7712_32x_fan",
+ NULL,
+ &as7712_32x_fan_chip_info,
+ NULL);
+
if (IS_ERR(data->hwmon_dev)) {
status = PTR_ERR(data->hwmon_dev);
goto exit_remove;
@@ -446,7 +471,7 @@ static int as7712_32x_fan_probe(struct i2c_client *client,
dev_info(&client->dev, "%s: fan '%s'\n",
dev_name(data->hwmon_dev), client->name);
-
+
return 0;
exit_remove:
@@ -454,17 +479,15 @@ static int as7712_32x_fan_probe(struct i2c_client *client,
exit_free:
kfree(data);
exit:
-
+
return status;
}
-static int as7712_32x_fan_remove(struct i2c_client *client)
+static void as7712_32x_fan_remove(struct i2c_client *client)
{
struct as7712_32x_fan_data *data = i2c_get_clientdata(client);
hwmon_device_unregister(data->hwmon_dev);
sysfs_remove_group(&client->dev.kobj, &as7712_32x_fan_group);
-
- return 0;
}
/* Addresses to scan */
diff --git a/packages/platforms/accton/x86-64/as7712-32x/modules/builds/x86-64-accton-as7712-32x-leds.c b/packages/platforms/accton/x86-64/as7712-32x/modules/builds/src/x86-64-accton-as7712-32x-leds.c
similarity index 95%
rename from packages/platforms/accton/x86-64/as7712-32x/modules/builds/x86-64-accton-as7712-32x-leds.c
rename to packages/platforms/accton/x86-64/as7712-32x/modules/builds/src/x86-64-accton-as7712-32x-leds.c
index d7b293540c..597fc4c3d1 100644
--- a/packages/platforms/accton/x86-64/as7712-32x/modules/builds/x86-64-accton-as7712-32x-leds.c
+++ b/packages/platforms/accton/x86-64/as7712-32x/modules/builds/src/x86-64-accton-as7712-32x-leds.c
@@ -112,14 +112,11 @@ static struct led_type_mode led_type_mode_data[] = {
static void accton_as7712_32x_led_set(struct led_classdev *led_cdev,
- enum led_brightness led_light_mode, enum led_type type);
-
-
-
-
+ enum led_brightness led_light_mode,
+ enum led_type type);
static int accton_getLedReg(enum led_type type, u8 *reg)
-{
+{
int i;
for (i = 0; i < ARRAY_SIZE(led_reg_map); i++) {
if(led_reg_map[i].types & (type<<1)){
@@ -133,26 +130,26 @@ static int accton_getLedReg(enum led_type type, u8 *reg)
static int led_reg_val_to_light_mode(enum led_type type, u8 reg_val) {
int i;
-
+
for (i = 0; i < ARRAY_SIZE(led_type_mode_data); i++) {
if (type != led_type_mode_data[i].type)
continue;
-
+
if ((led_type_mode_data[i].reg_bit_mask & reg_val) ==
led_type_mode_data[i].mode_value)
{
return led_type_mode_data[i].mode;
}
}
-
+
return 0;
}
static u8 led_light_mode_to_reg_val(enum led_type type,
enum led_light_mode mode, u8 reg_val) {
int i;
-
+
for (i = 0; i < ARRAY_SIZE(led_type_mode_data); i++) {
if (type != led_type_mode_data[i].type)
continue;
@@ -164,7 +161,7 @@ static u8 led_light_mode_to_reg_val(enum led_type type,
(reg_val & (~led_type_mode_data[i].reg_bit_mask));
break;
}
-
+
return reg_val;
}
@@ -203,18 +200,18 @@ static void accton_as7712_32x_led_update(void)
ledctl->reg_val[i] = status;
}
}
-
+
ledctl->last_updated = jiffies;
ledctl->valid = 1;
}
-
-exit:
+
+exit:
mutex_unlock(&ledctl->update_lock);
}
static void accton_as7712_32x_led_set(struct led_classdev *led_cdev,
- enum led_brightness led_light_mode,
- enum led_type type)
+ enum led_brightness led_light_mode,
+ enum led_type type)
{
int reg_val;
u8 reg ;
@@ -224,7 +221,7 @@ static void accton_as7712_32x_led_set(struct led_classdev *led_cdev,
{
dev_dbg(&ledctl->pdev->dev, "Not match item for %d.\n", type);
}
-
+
reg_val = accton_as7712_32x_led_read_value(reg);
if (reg_val < 0) {
@@ -243,7 +240,7 @@ static void accton_as7712_32x_led_set(struct led_classdev *led_cdev,
static void accton_as7712_32x_led_diag_set(struct led_classdev *led_cdev,
- enum led_brightness led_light_mode)
+ enum led_brightness led_light_mode)
{
accton_as7712_32x_led_set(led_cdev, led_light_mode, LED_TYPE_DIAG);
}
@@ -255,7 +252,7 @@ static enum led_brightness accton_as7712_32x_led_diag_get(struct led_classdev *c
}
static void accton_as7712_32x_led_loc_set(struct led_classdev *led_cdev,
- enum led_brightness led_light_mode)
+ enum led_brightness led_light_mode)
{
accton_as7712_32x_led_set(led_cdev, led_light_mode, LED_TYPE_LOC);
}
@@ -267,7 +264,7 @@ static enum led_brightness accton_as7712_32x_led_loc_get(struct led_classdev *cd
}
static void accton_as7712_32x_led_auto_set(struct led_classdev *led_cdev,
- enum led_brightness led_light_mode)
+ enum led_brightness led_light_mode)
{
}
@@ -323,7 +320,7 @@ static int accton_as7712_32x_led_suspend(struct platform_device *dev,
pm_message_t state)
{
int i = 0;
-
+
for (i = 0; i < ARRAY_SIZE(accton_as7712_32x_leds); i++) {
led_classdev_suspend(&accton_as7712_32x_leds[i]);
}
@@ -334,7 +331,7 @@ static int accton_as7712_32x_led_suspend(struct platform_device *dev,
static int accton_as7712_32x_led_resume(struct platform_device *dev)
{
int i = 0;
-
+
for (i = 0; i < ARRAY_SIZE(accton_as7712_32x_leds); i++) {
led_classdev_resume(&accton_as7712_32x_leds[i]);
}
@@ -352,7 +349,7 @@ static int accton_as7712_32x_led_probe(struct platform_device *pdev)
if (ret < 0)
break;
}
-
+
/* Check if all LEDs were successfully registered */
if (i != ARRAY_SIZE(accton_as7712_32x_leds)){
int j;
@@ -392,11 +389,6 @@ static int __init accton_as7712_32x_led_init(void)
{
int ret;
- extern int platform_accton_as7712_32x(void);
- if (!platform_accton_as7712_32x()) {
- return -ENODEV;
- }
-
ret = platform_driver_register(&accton_as7712_32x_led_driver);
if (ret < 0) {
goto exit;
diff --git a/packages/platforms/accton/x86-64/as7712-32x/modules/builds/x86-64-accton-as7712-32x-psu.c b/packages/platforms/accton/x86-64/as7712-32x/modules/builds/src/x86-64-accton-as7712-32x-psu.c
similarity index 90%
rename from packages/platforms/accton/x86-64/as7712-32x/modules/builds/x86-64-accton-as7712-32x-psu.c
rename to packages/platforms/accton/x86-64/as7712-32x/modules/builds/src/x86-64-accton-as7712-32x-psu.c
index 5f470f8c39..312d330e5c 100644
--- a/packages/platforms/accton/x86-64/as7712-32x/modules/builds/x86-64-accton-as7712-32x-psu.c
+++ b/packages/platforms/accton/x86-64/as7712-32x/modules/builds/src/x86-64-accton-as7712-32x-psu.c
@@ -101,8 +101,8 @@ static struct attribute *as7712_32x_psu_attributes[] = {
static ssize_t show_status(struct device *dev, struct device_attribute *da,
char *buf)
{
- struct i2c_client *client = to_i2c_client(dev);
- struct as7712_32x_psu_data *data = i2c_get_clientdata(client);
+ struct i2c_client *client = to_i2c_client(dev);
+ struct as7712_32x_psu_data *data = i2c_get_clientdata(client);
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
u8 status = 0;
@@ -130,16 +130,16 @@ static ssize_t show_string(struct device *dev, struct device_attribute *da,
{
struct i2c_client *client = to_i2c_client(dev);
struct as7712_32x_psu_data *data = i2c_get_clientdata(client);
- struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
- char *ptr = NULL;
+ struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
+ char *ptr = NULL;
- mutex_lock(&data->update_lock);
+ mutex_lock(&data->update_lock);
- data = as7712_32x_psu_update_device(dev);
- if (!data->valid) {
- mutex_unlock(&data->update_lock);
- return -EIO;
- }
+ data = as7712_32x_psu_update_device(dev);
+ if (!data->valid) {
+ mutex_unlock(&data->update_lock);
+ return -EIO;
+ }
switch (attr->index) {
case PSU_MODEL_NAME:
@@ -156,14 +156,35 @@ static ssize_t show_string(struct device *dev, struct device_attribute *da,
return -EINVAL;
}
- mutex_unlock(&data->update_lock);
- return sprintf(buf, "%s\n", ptr);
+ mutex_unlock(&data->update_lock);
+ return sprintf(buf, "%s\n", ptr);
}
static const struct attribute_group as7712_32x_psu_group = {
.attrs = as7712_32x_psu_attributes,
};
+static umode_t as7712_32x_psu_is_visible(const void *drvdata,
+ enum hwmon_sensor_types type,
+ u32 attr, int channel)
+{
+ return 0;
+}
+
+static const struct hwmon_channel_info *as7712_32x_psu_info[] = {
+ HWMON_CHANNEL_INFO(power, HWMON_P_ENABLE),
+ NULL,
+};
+
+static const struct hwmon_ops as7712_32x_psu_hwmon_ops = {
+ .is_visible = as7712_32x_psu_is_visible,
+};
+
+static const struct hwmon_chip_info as7712_32x_psu_chip_info = {
+ .ops = &as7712_32x_psu_hwmon_ops,
+ .info = as7712_32x_psu_info,
+};
+
static int as7712_32x_psu_probe(struct i2c_client *client,
const struct i2c_device_id *dev_id)
{
@@ -195,7 +216,10 @@ static int as7712_32x_psu_probe(struct i2c_client *client,
}
data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "as7712_32x_psu",
- NULL, NULL, NULL);
+ NULL,
+ &as7712_32x_psu_chip_info,
+ NULL);
+
if (IS_ERR(data->hwmon_dev)) {
status = PTR_ERR(data->hwmon_dev);
goto exit_remove;
@@ -211,19 +235,17 @@ static int as7712_32x_psu_probe(struct i2c_client *client,
exit_free:
kfree(data);
exit:
-
+
return status;
}
-static int as7712_32x_psu_remove(struct i2c_client *client)
+static void as7712_32x_psu_remove(struct i2c_client *client)
{
struct as7712_32x_psu_data *data = i2c_get_clientdata(client);
hwmon_device_unregister(data->hwmon_dev);
sysfs_remove_group(&client->dev.kobj, &as7712_32x_psu_group);
kfree(data);
-
- return 0;
}
enum psu_index
@@ -255,27 +277,27 @@ static int as7712_32x_psu_read_block(struct i2c_client *client, u8 command, u8 *
{
int result = 0;
int retry_count = 5;
-
+
while (retry_count) {
retry_count--;
-
+
result = i2c_smbus_read_i2c_block_data(client, command, data_len, data);
if (unlikely(result < 0)) {
msleep(10);
continue;
}
-
+
if (unlikely(result != data_len)) {
result = -EIO;
msleep(10);
continue;
}
-
+
result = 0;
break;
}
-
+
return result;
}
@@ -391,7 +413,7 @@ static struct as7712_32x_psu_data *as7712_32x_psu_update_device(struct device *d
else {
data->status = status;
}
-
+
/* Read model name */
memset(data->model_name, 0, sizeof(data->model_name));
memset(data->fan_dir, 0, sizeof(data->fan_dir));
@@ -422,7 +444,7 @@ static struct as7712_32x_psu_data *as7712_32x_psu_update_device(struct device *d
goto exit;
}
}
-
+
data->last_updated = jiffies;
data->valid = 1;
}
diff --git a/packages/platforms/accton/x86-64/as7712-32x/platform-config/r0/src/lib/x86-64-accton-as7712-32x-r0.yml b/packages/platforms/accton/x86-64/as7712-32x/platform-config/r0/src/lib/x86-64-accton-as7712-32x-r0.yml
index 1eee2120c0..bd19b834bf 100644
--- a/packages/platforms/accton/x86-64/as7712-32x/platform-config/r0/src/lib/x86-64-accton-as7712-32x-r0.yml
+++ b/packages/platforms/accton/x86-64/as7712-32x/platform-config/r0/src/lib/x86-64-accton-as7712-32x-r0.yml
@@ -18,7 +18,7 @@ x86-64-accton-as7712-32x-r0:
--stop=1
kernel:
- <<: *kernel-4-14
+ <<: *kernel-6-1
args: >-
nopat
diff --git a/packages/platforms/accton/x86-64/as7712-32x/platform-config/r0/src/python/x86_64_accton_as7712_32x_r0/__init__.py b/packages/platforms/accton/x86-64/as7712-32x/platform-config/r0/src/python/x86_64_accton_as7712_32x_r0/__init__.py
index 6b70daad52..289299bf7b 100644
--- a/packages/platforms/accton/x86-64/as7712-32x/platform-config/r0/src/python/x86_64_accton_as7712_32x_r0/__init__.py
+++ b/packages/platforms/accton/x86-64/as7712-32x/platform-config/r0/src/python/x86_64_accton_as7712_32x_r0/__init__.py
@@ -8,9 +8,9 @@ class OnlPlatform_x86_64_accton_as7712_32x_r0(OnlPlatformAccton,
SYS_OBJECT_ID=".7712.32"
def baseconfig(self):
+ os.system("modprobe i2c-ismt")
self.insmod('optoe')
self.insmod('ym2651y')
- self.insmod('accton_i2c_cpld')
for m in [ 'fan', 'cpld1', 'psu', 'leds' ]:
self.insmod("x86-64-accton-as7712-32x-%s.ko" % m)
@@ -30,8 +30,6 @@ def baseconfig(self):
('lm75', 0x4b, 3),
('as7712_32x_cpld1', 0x60, 4),
- ('accton_i2c_cpld', 0x62, 5),
- ('accton_i2c_cpld', 0x64, 6),
])
########### initialize I2C bus 1 ###########
@@ -56,6 +54,9 @@ def baseconfig(self):
]
)
+ # initialize pca9548 idle_state
+ subprocess.call('echo -2 | tee /sys/bus/i2c/drivers/pca954x/*-00*/idle_state > /dev/null', shell=True)
+
# initialize QSFP port 1~32
self.new_i2c_devices([
('optoe1', 0x50, 18),
diff --git a/packages/platforms/accton/x86-64/as7726-32x/modules/PKG.yml b/packages/platforms/accton/x86-64/as7726-32x/modules/PKG.yml
index fdb63c918f..3570a22b22 100755
--- a/packages/platforms/accton/x86-64/as7726-32x/modules/PKG.yml
+++ b/packages/platforms/accton/x86-64/as7726-32x/modules/PKG.yml
@@ -1 +1 @@
-!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as7726-32x ARCH=amd64 KERNELS="onl-kernel-4.14-lts-x86-64-all:amd64"
+!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as7726-32x ARCH=amd64 KERNELS="onl-kernel-6.1-lts-x86-64-all:amd64"
diff --git a/packages/platforms/accton/x86-64/as7726-32x/modules/builds/Makefile b/packages/platforms/accton/x86-64/as7726-32x/modules/builds/Makefile
index 2f5b1a4d92..5ba23ef320 100755
--- a/packages/platforms/accton/x86-64/as7726-32x/modules/builds/Makefile
+++ b/packages/platforms/accton/x86-64/as7726-32x/modules/builds/Makefile
@@ -1,5 +1,5 @@
-KERNELS := onl-kernel-4.14-lts-x86-64-all:amd64
-KMODULES := $(wildcard *.c)
+KERNELS := onl-kernel-6.1-lts-x86-64-all:amd64
+KMODULES := src
VENDOR := accton
BASENAME := x86-64-accton-as7726-32x
ARCH := x86_64
diff --git a/packages/platforms/accton/x86-64/as7726-32x/modules/builds/src/Makefile b/packages/platforms/accton/x86-64/as7726-32x/modules/builds/src/Makefile
new file mode 100644
index 0000000000..f5cfa02a76
--- /dev/null
+++ b/packages/platforms/accton/x86-64/as7726-32x/modules/builds/src/Makefile
@@ -0,0 +1,4 @@
+obj-m += x86-64-accton-as7726-32x-cpld.o
+obj-m += x86-64-accton-as7726-32x-fan.o
+obj-m += x86-64-accton-as7726-32x-leds.o
+obj-m += x86-64-accton-as7726-32x-psu.o
\ No newline at end of file
diff --git a/packages/platforms/accton/x86-64/as7726-32x/modules/builds/x86-64-accton-as7726-32x-cpld.c b/packages/platforms/accton/x86-64/as7726-32x/modules/builds/src/x86-64-accton-as7726-32x-cpld.c
similarity index 99%
rename from packages/platforms/accton/x86-64/as7726-32x/modules/builds/x86-64-accton-as7726-32x-cpld.c
rename to packages/platforms/accton/x86-64/as7726-32x/modules/builds/src/x86-64-accton-as7726-32x-cpld.c
index ab0b9c4527..df24df05d3 100755
--- a/packages/platforms/accton/x86-64/as7726-32x/modules/builds/x86-64-accton-as7726-32x-cpld.c
+++ b/packages/platforms/accton/x86-64/as7726-32x/modules/builds/src/x86-64-accton-as7726-32x-cpld.c
@@ -595,7 +595,7 @@ static int as7726_32x_cpld_probe(struct i2c_client *client,
return ret;
}
-static int as7726_32x_cpld_remove(struct i2c_client *client)
+static void as7726_32x_cpld_remove(struct i2c_client *client)
{
struct as7726_32x_cpld_data *data = i2c_get_clientdata(client);
const struct attribute_group *group = NULL;
@@ -622,8 +622,6 @@ static int as7726_32x_cpld_remove(struct i2c_client *client)
}
kfree(data);
-
- return 0;
}
static int as7726_32x_cpld_read_internal(struct i2c_client *client, u8 reg)
diff --git a/packages/platforms/accton/x86-64/as7726-32x/modules/builds/x86-64-accton-as7726-32x-fan.c b/packages/platforms/accton/x86-64/as7726-32x/modules/builds/src/x86-64-accton-as7726-32x-fan.c
similarity index 96%
rename from packages/platforms/accton/x86-64/as7726-32x/modules/builds/x86-64-accton-as7726-32x-fan.c
rename to packages/platforms/accton/x86-64/as7726-32x/modules/builds/src/x86-64-accton-as7726-32x-fan.c
index d84f9743cb..ff186d50ba 100755
--- a/packages/platforms/accton/x86-64/as7726-32x/modules/builds/x86-64-accton-as7726-32x-fan.c
+++ b/packages/platforms/accton/x86-64/as7726-32x/modules/builds/src/x86-64-accton-as7726-32x-fan.c
@@ -540,6 +540,28 @@ static struct as7726_32x_fan_data *as7726_32x_fan_update_device(struct device *d
return data;
}
+static umode_t as7726_32x_fan_is_visible(const void *drvdata,
+ enum hwmon_sensor_types type,
+ u32 attr, int channel)
+{
+ return 0;
+}
+
+static const struct hwmon_channel_info *as7726_32x_fan_info[] = {
+ HWMON_CHANNEL_INFO(fan, HWMON_F_ENABLE),
+ NULL,
+};
+
+static const struct hwmon_ops as7726_32x_fan_hwmon_ops = {
+ .is_visible = as7726_32x_fan_is_visible,
+};
+
+static const struct hwmon_chip_info as7726_32x_fan_chip_info = {
+ .ops = &as7726_32x_fan_hwmon_ops,
+ .info = as7726_32x_fan_info,
+};
+
+
static int as7726_32x_fan_probe(struct i2c_client *client,
const struct i2c_device_id *dev_id)
{
@@ -570,7 +592,9 @@ static int as7726_32x_fan_probe(struct i2c_client *client,
}
data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "as7726_32x_fan",
- NULL, NULL, NULL);
+ NULL,
+ &as7726_32x_fan_chip_info,
+ NULL);
if (IS_ERR(data->hwmon_dev)) {
status = PTR_ERR(data->hwmon_dev);
goto exit_remove;
@@ -590,13 +614,11 @@ static int as7726_32x_fan_probe(struct i2c_client *client,
return status;
}
-static int as7726_32x_fan_remove(struct i2c_client *client)
+static void as7726_32x_fan_remove(struct i2c_client *client)
{
struct as7726_32x_fan_data *data = i2c_get_clientdata(client);
hwmon_device_unregister(data->hwmon_dev);
sysfs_remove_group(&client->dev.kobj, &as7726_32x_fan_group);
-
- return 0;
}
/* Addresses to scan */
diff --git a/packages/platforms/accton/x86-64/as7726-32x/modules/builds/x86-64-accton-as7726-32x-leds.c b/packages/platforms/accton/x86-64/as7726-32x/modules/builds/src/x86-64-accton-as7726-32x-leds.c
similarity index 100%
rename from packages/platforms/accton/x86-64/as7726-32x/modules/builds/x86-64-accton-as7726-32x-leds.c
rename to packages/platforms/accton/x86-64/as7726-32x/modules/builds/src/x86-64-accton-as7726-32x-leds.c
diff --git a/packages/platforms/accton/x86-64/as7726-32x/modules/builds/x86-64-accton-as7726-32x-psu.c b/packages/platforms/accton/x86-64/as7726-32x/modules/builds/src/x86-64-accton-as7726-32x-psu.c
similarity index 93%
rename from packages/platforms/accton/x86-64/as7726-32x/modules/builds/x86-64-accton-as7726-32x-psu.c
rename to packages/platforms/accton/x86-64/as7726-32x/modules/builds/src/x86-64-accton-as7726-32x-psu.c
index f835b5fc04..05aba143a1 100755
--- a/packages/platforms/accton/x86-64/as7726-32x/modules/builds/x86-64-accton-as7726-32x-psu.c
+++ b/packages/platforms/accton/x86-64/as7726-32x/modules/builds/src/x86-64-accton-as7726-32x-psu.c
@@ -155,6 +155,27 @@ static const struct attribute_group as7726_32x_psu_group = {
.attrs = as7726_32x_psu_attributes,
};
+static umode_t as7726_32x_psu_is_visible(const void *drvdata,
+ enum hwmon_sensor_types type,
+ u32 attr, int channel)
+{
+ return 0;
+}
+
+static const struct hwmon_channel_info *as7726_32x_psu_info[] = {
+ HWMON_CHANNEL_INFO(power, HWMON_F_ENABLE),
+ NULL,
+};
+
+static const struct hwmon_ops as7726_32x_psu_hwmon_ops = {
+ .is_visible = as7726_32x_psu_is_visible,
+};
+
+static const struct hwmon_chip_info as7726_32x_psu_chip_info = {
+ .ops = &as7726_32x_psu_hwmon_ops,
+ .info = as7726_32x_psu_info,
+};
+
static int as7726_32x_psu_probe(struct i2c_client *client,
const struct i2c_device_id *dev_id)
{
@@ -186,7 +207,9 @@ static int as7726_32x_psu_probe(struct i2c_client *client,
}
data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "as7726_32x_psu",
- NULL, NULL, NULL);
+ NULL,
+ &as7726_32x_psu_chip_info,
+ NULL);
if (IS_ERR(data->hwmon_dev)) {
status = PTR_ERR(data->hwmon_dev);
goto exit_remove;
@@ -206,15 +229,13 @@ static int as7726_32x_psu_probe(struct i2c_client *client,
return status;
}
-static int as7726_32x_psu_remove(struct i2c_client *client)
+static void as7726_32x_psu_remove(struct i2c_client *client)
{
struct as7726_32x_psu_data *data = i2c_get_clientdata(client);
hwmon_device_unregister(data->hwmon_dev);
sysfs_remove_group(&client->dev.kobj, &as7726_32x_psu_group);
kfree(data);
-
- return 0;
}
enum psu_index
diff --git a/packages/platforms/accton/x86-64/as7726-32x/platform-config/r0/src/lib/x86-64-accton-as7726-32x-r0.yml b/packages/platforms/accton/x86-64/as7726-32x/platform-config/r0/src/lib/x86-64-accton-as7726-32x-r0.yml
index b5d950f496..eab13b5ab6 100755
--- a/packages/platforms/accton/x86-64/as7726-32x/platform-config/r0/src/lib/x86-64-accton-as7726-32x-r0.yml
+++ b/packages/platforms/accton/x86-64/as7726-32x/platform-config/r0/src/lib/x86-64-accton-as7726-32x-r0.yml
@@ -18,7 +18,7 @@ x86-64-accton-as7726-32x-r0:
--stop=1
kernel:
- <<: *kernel-4-14
+ <<: *kernel-6-1
args: >-
nopat
diff --git a/packages/platforms/accton/x86-64/as7726-32x/platform-config/r0/src/python/x86_64_accton_as7726_32x_r0/__init__.py b/packages/platforms/accton/x86-64/as7726-32x/platform-config/r0/src/python/x86_64_accton_as7726_32x_r0/__init__.py
index bb8e0ac475..dfd2dfe987 100755
--- a/packages/platforms/accton/x86-64/as7726-32x/platform-config/r0/src/python/x86_64_accton_as7726_32x_r0/__init__.py
+++ b/packages/platforms/accton/x86-64/as7726-32x/platform-config/r0/src/python/x86_64_accton_as7726_32x_r0/__init__.py
@@ -1,48 +1,63 @@
from onl.platform.base import *
from onl.platform.accton import *
-import commands
-
#IR3570A chip casue problem when read eeprom by i2c-block mode.
#It happen when read 16th-byte offset that value is 0x8. So disable chip
def disable_i2c_ir3570a(addr):
- check_i2c="i2cget -y 0 0x4 0x1"
- status, output = commands.getstatusoutput(check_i2c)
- if status!=0:
+ check_i2c = "i2cget -y 0 0x4 0x1"
+ process = subprocess.Popen(check_i2c, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = process.communicate()
+ status = process.returncode
+ if status != 0:
return -1
+
cmd = "i2cset -y 0 0x%x 0xE5 0x01" % addr
- status, output = commands.getstatusoutput(cmd)
+ process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ process.communicate()
+ if process.returncode != 0:
+ return process.returncode
+
cmd = "i2cset -y 0 0x%x 0x12 0x02" % addr
- status, output = commands.getstatusoutput(cmd)
- return status
+ process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ process.communicate()
+
+ return process.returncode
def ir3570_check():
- check_i2c="i2cget -y 0 0x42 0x1"
- status, output = commands.getstatusoutput(check_i2c)
- if status!=0:
+ check_i2c = "i2cget -y 0 0x42 0x1"
+ process = subprocess.Popen(check_i2c, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = process.communicate()
+ status = process.returncode
+ if status != 0:
return -1
+
cmd = "i2cdump -y 0 0x42 s 0x9a"
try:
- status, output = commands.getstatusoutput(cmd)
+ process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = process.communicate()
+ output = stdout.strip()
+
lines = output.split('\n')
hn = re.findall(r'\w+', lines[-1])
version = int(hn[1], 16)
- if version == 0x24: #Find IR3570A
+ if version == 0x24: # Find IR3570A
ret = disable_i2c_ir3570a(4)
else:
ret = 0
except Exception as e:
- print "Error on ir3570_check() e:" + str(e)
+ print("Error on ir3570_check() e:", str(e))
return -1
return ret
def _8v89307_init():
script = os.path.join(os.path.dirname(os.path.realpath(__file__)), "8v89307_init.sh")
if os.path.exists(script):
- status, output = commands.getstatusoutput(script)
- print output
+ process = subprocess.Popen(script, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = process.communicate()
+ status = process.returncode
+ print(stdout)
if status != 0:
- print "Error in 8v89307_init: " + str(e)
+ print("Error in 8v89307_init: " + stderr)
return False
return True
@@ -103,6 +118,9 @@ def baseconfig(self):
('ym2651', 0x58, 49),
])
+ # initialize pca9548 idle_state
+ subprocess.call('echo -2 | tee /sys/bus/i2c/drivers/pca954x/*-00*/idle_state > /dev/null', shell=True)
+
# initialize QSFP port 1~8
for port in range(1, 5):
self.new_i2c_device('optoe1', 0x50, port+20)
diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/modules/PKG.yml b/packages/platforms/accton/x86-64/as7926-40xfb/modules/PKG.yml
index 35fe60ad55..c316297114 100644
--- a/packages/platforms/accton/x86-64/as7926-40xfb/modules/PKG.yml
+++ b/packages/platforms/accton/x86-64/as7926-40xfb/modules/PKG.yml
@@ -1 +1 @@
-!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as7926-40xfb ARCH=amd64 KERNELS="onl-kernel-4.19-lts-x86-64-all:amd64"
+!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as7926-40xfb ARCH=amd64 KERNELS="onl-kernel-6.1-lts-x86-64-all:amd64"
diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/Makefile b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/Makefile
index a86a026659..5c6a1205a4 100644
--- a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/Makefile
+++ b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/Makefile
@@ -1,5 +1,5 @@
-KERNELS := onl-kernel-4.19-lts-x86-64-all:amd64
-KMODULES := $(wildcard *.c)
+KERNELS := onl-kernel-6.1-lts-x86-64-all:amd64
+KMODULES := src
VENDOR := accton
BASENAME := x86-64-accton-as7926-40xfb
ARCH := x86_64
diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/src/Makefile b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/src/Makefile
new file mode 100644
index 0000000000..c3198e8228
--- /dev/null
+++ b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/src/Makefile
@@ -0,0 +1,6 @@
+obj-m += x86-64-accton-as7926-40xfb-cpld.o
+obj-m += x86-64-accton-as7926-40xfb-fan.o
+obj-m += x86-64-accton-as7926-40xfb-leds.o
+obj-m += x86-64-accton-as7926-40xfb-psu.o
+obj-m += x86-64-accton-as7926-40xfb-sys.o
+obj-m += x86-64-accton-as7926-40xfb-thermal.o
\ No newline at end of file
diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-cpld.c b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/src/x86-64-accton-as7926-40xfb-cpld.c
similarity index 97%
rename from packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-cpld.c
rename to packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/src/x86-64-accton-as7926-40xfb-cpld.c
index 6cd6d22823..049ca623cb 100644
--- a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-cpld.c
+++ b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/src/x86-64-accton-as7926-40xfb-cpld.c
@@ -934,6 +934,27 @@ static ssize_t show_version(struct device *dev, struct device_attribute *attr,
return status;
}
+static umode_t as7926_40xfb_cpld_is_visible(const void *drvdata,
+ enum hwmon_sensor_types type,
+ u32 attr, int channel)
+{
+ return 0;
+}
+
+static const struct hwmon_channel_info *as7926_40xfb_cpld_info[] = {
+ HWMON_CHANNEL_INFO(chip, HWMON_C_REGISTER_TZ),
+ NULL,
+};
+
+static const struct hwmon_ops as7926_40xfb_cpld_hwmon_ops = {
+ .is_visible = as7926_40xfb_cpld_is_visible,
+};
+
+static const struct hwmon_chip_info as7926_40xfb_cpld_chip_info = {
+ .ops = &as7926_40xfb_cpld_hwmon_ops,
+ .info = as7926_40xfb_cpld_info,
+};
+
static int as7926_40xfb_cpld_probe(struct i2c_client *client,
const struct i2c_device_id *dev_id)
{
@@ -963,9 +984,10 @@ static int as7926_40xfb_cpld_probe(struct i2c_client *client,
if (status)
goto exit_free;
- data->hwmon_dev =
- hwmon_device_register_with_info(&client->dev, DRVNAME, NULL, NULL,
- NULL);
+ data->hwmon_dev = hwmon_device_register_with_info(&client->dev,
+ DRVNAME, NULL,
+ &as7926_40xfb_cpld_chip_info, NULL);
+
if (IS_ERR(data->hwmon_dev)) {
status = PTR_ERR(data->hwmon_dev);
goto exit_remove;
@@ -987,7 +1009,7 @@ static int as7926_40xfb_cpld_probe(struct i2c_client *client,
return status;
}
-static int as7926_40xfb_cpld_remove(struct i2c_client *client)
+static void as7926_40xfb_cpld_remove(struct i2c_client *client)
{
struct as7926_40xfb_cpld_data *data = i2c_get_clientdata(client);
@@ -995,8 +1017,6 @@ static int as7926_40xfb_cpld_remove(struct i2c_client *client)
sysfs_remove_group(&client->dev.kobj, cpld_groups[data->index]);
kfree(data);
as7926_40xfb_cpld_remove_client(client);
-
- return 0;
}
static const struct i2c_device_id as7926_40xfb_cpld_id[] = {
diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-fan.c b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/src/x86-64-accton-as7926-40xfb-fan.c
similarity index 100%
rename from packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-fan.c
rename to packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/src/x86-64-accton-as7926-40xfb-fan.c
diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-leds.c b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/src/x86-64-accton-as7926-40xfb-leds.c
similarity index 100%
rename from packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-leds.c
rename to packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/src/x86-64-accton-as7926-40xfb-leds.c
diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-psu.c b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/src/x86-64-accton-as7926-40xfb-psu.c
similarity index 100%
rename from packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-psu.c
rename to packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/src/x86-64-accton-as7926-40xfb-psu.c
diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-sys.c b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/src/x86-64-accton-as7926-40xfb-sys.c
similarity index 73%
rename from packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-sys.c
rename to packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/src/x86-64-accton-as7926-40xfb-sys.c
index fe909e7d75..e860d05a2a 100644
--- a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-sys.c
+++ b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/src/x86-64-accton-as7926-40xfb-sys.c
@@ -42,6 +42,8 @@
#define IPMI_TIMEOUT (5 * HZ)
#define IPMI_ERR_RETRY_TIMES 1
#define IPMI_READ_MAX_LEN 128
+#define IPMI_RESET_CMD 0x65
+#define IPMI_RESET_CMD_LENGTH 6
#define EEPROM_NAME "eeprom"
#define EEPROM_SIZE 256 /* 256 byte eeprom */
@@ -49,6 +51,10 @@
static int as7926_40xfb_sys_probe(struct platform_device *pdev);
static int as7926_40xfb_sys_remove(struct platform_device *pdev);
static void ipmi_msg_handler(struct ipmi_recv_msg *msg, void *user_msg_data);
+static ssize_t get_reset(struct device *dev, struct device_attribute *da,
+ char *buf);
+static ssize_t set_reset(struct device *dev, struct device_attribute *da,
+ const char *buf, size_t count);
struct ipmi_data {
struct completion read_complete;
@@ -75,6 +81,8 @@ struct as7926_40xfb_sys_data {
struct ipmi_data ipmi;
unsigned char ipmi_resp_eeprom[EEPROM_SIZE];
unsigned char ipmi_tx_data[2];
+ unsigned char ipmi_resp_rst[2];
+ unsigned char ipmi_tx_data_rst[IPMI_RESET_CMD_LENGTH];
struct bin_attribute eeprom; /* eeprom data */
};
@@ -89,6 +97,45 @@ static struct platform_driver as7926_40xfb_sys_driver = {
},
};
+/* sysfs attributes */
+enum as7926_40xfb_sysfs_attrs {
+ RESET_MUX,
+ RESET_MAC,
+ RESET_JR2,
+ RESET_OP2,
+ RESET_GEARBOX
+};
+
+#define DECLARE_RESET_SENSOR_DEVICE_ATTR() \
+ static SENSOR_DEVICE_ATTR(reset_mac, S_IWUSR | S_IRUGO, \
+ get_reset, set_reset, RESET_MAC); \
+ static SENSOR_DEVICE_ATTR(reset_jr2, S_IWUSR | S_IRUGO, \
+ get_reset, set_reset, RESET_JR2); \
+ static SENSOR_DEVICE_ATTR(reset_op2, S_IWUSR | S_IRUGO, \
+ get_reset, set_reset, RESET_OP2); \
+ static SENSOR_DEVICE_ATTR(reset_gb, S_IWUSR | S_IRUGO, \
+ get_reset, set_reset, RESET_GEARBOX); \
+ static SENSOR_DEVICE_ATTR(reset_mux, S_IWUSR | S_IRUGO, \
+ get_reset, set_reset, RESET_MUX)
+#define DECLARE_RESET_ATTR() \
+ &sensor_dev_attr_reset_mac.dev_attr.attr, \
+ &sensor_dev_attr_reset_jr2.dev_attr.attr, \
+ &sensor_dev_attr_reset_op2.dev_attr.attr, \
+ &sensor_dev_attr_reset_gb.dev_attr.attr, \
+ &sensor_dev_attr_reset_mux.dev_attr.attr
+
+DECLARE_RESET_SENSOR_DEVICE_ATTR();
+
+static struct attribute *as7926_40xfb_sys_attributes[] = {
+ /* sysfs attributes */
+ DECLARE_RESET_ATTR(),
+ NULL
+};
+
+static const struct attribute_group as7926_40xfb_sys_group = {
+ .attrs = as7926_40xfb_sys_attributes,
+};
+
/* Functions to talk to the IPMI layer */
/* Initialize IPMI address, message buffers and user data */
@@ -225,6 +272,71 @@ static void ipmi_msg_handler(struct ipmi_recv_msg *msg, void *user_msg_data)
complete(&ipmi->read_complete);
}
+static ssize_t get_reset(struct device *dev, struct device_attribute *da,
+ char *buf)
+{
+ int status = 0;
+
+ mutex_lock(&data->update_lock);
+ status = ipmi_send_message(&data->ipmi, IPMI_RESET_CMD, NULL, 0,
+ data->ipmi_resp_rst, sizeof(data->ipmi_resp_rst));
+ if (unlikely(status != 0))
+ goto exit;
+
+ if (unlikely(data->ipmi.rx_result != 0)) {
+ status = -EIO;
+ goto exit;
+ }
+
+ mutex_unlock(&data->update_lock);
+ return sprintf(buf, "0x%x 0x%x", data->ipmi_resp_rst[0], data->ipmi_resp_rst[1]);
+
+ exit:
+ mutex_unlock(&data->update_lock);
+ return status;
+}
+
+static ssize_t set_reset(struct device *dev, struct device_attribute *da,
+ const char *buf, size_t count)
+{
+ u32 magic[2];
+ int status;
+ struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
+
+ if (sscanf(buf, "0x%x 0x%x", &magic[0], &magic[1]) != 2)
+ return -EINVAL;
+
+ if (magic[0] > 0xFF || magic[1] > 0xFF)
+ return -EINVAL;
+
+ mutex_lock(&data->update_lock);
+
+ /* Send IPMI write command */
+ data->ipmi_tx_data_rst[0] = 0;
+ data->ipmi_tx_data_rst[1] = 0;
+ data->ipmi_tx_data_rst[2] = (attr->index == RESET_MUX) ? 0 : (attr->index);
+ data->ipmi_tx_data_rst[3] = (attr->index == RESET_MUX) ? 2 : 1;
+ data->ipmi_tx_data_rst[4] = magic[0];
+ data->ipmi_tx_data_rst[5] = magic[1];
+
+ status = ipmi_send_message(&data->ipmi, IPMI_RESET_CMD,
+ data->ipmi_tx_data_rst,
+ sizeof(data->ipmi_tx_data_rst), NULL, 0);
+ if (unlikely(status != 0))
+ goto exit;
+
+ if (unlikely(data->ipmi.rx_result != 0)) {
+ status = -EIO;
+ goto exit;
+ }
+
+ status = count;
+
+ exit:
+ mutex_unlock(&data->update_lock);
+ return status;
+}
+
static ssize_t sys_eeprom_read(loff_t off, char *buf, size_t count)
{
int status = 0;
@@ -322,19 +434,27 @@ static int as7926_40xfb_sys_probe(struct platform_device *pdev)
/* Register sysfs hooks */
status = sysfs_eeprom_init(&pdev->dev.kobj, &data->eeprom);
if (status) {
- goto exit;
+ goto exit_eeprom;
+ }
+
+ status = sysfs_create_group(&pdev->dev.kobj, &as7926_40xfb_sys_group);
+ if (status) {
+ goto exit_sysfs;
}
dev_info(&pdev->dev, "device created\n");
return 0;
- exit:
+exit_sysfs:
+ sysfs_eeprom_cleanup(&pdev->dev.kobj, &data->eeprom);
+ exit_eeprom:
return status;
}
static int as7926_40xfb_sys_remove(struct platform_device *pdev)
{
+ sysfs_remove_group(&pdev->dev.kobj, &as7926_40xfb_sys_group);
sysfs_eeprom_cleanup(&pdev->dev.kobj, &data->eeprom);
return 0;
diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-thermal.c b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/src/x86-64-accton-as7926-40xfb-thermal.c
similarity index 100%
rename from packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-thermal.c
rename to packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/src/x86-64-accton-as7926-40xfb-thermal.c
diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/fani.c b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/fani.c
index afa1efc265..d1efce68ca 100644
--- a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/fani.c
+++ b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/fani.c
@@ -64,15 +64,6 @@ enum fan_id {
{ 0 },\
}
-#define AIM_FREE_IF_PTR(p) \
- do \
- { \
- if (p) { \
- aim_free(p); \
- p = NULL; \
- } \
- } while (0)
-
/* Static fan information */
onlp_fan_info_t finfo[] = {
{ }, /* Not used */
diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/platform_lib.c b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/platform_lib.c
new file mode 100644
index 0000000000..24798e21f5
--- /dev/null
+++ b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/platform_lib.c
@@ -0,0 +1,65 @@
+/************************************************************
+ *
+ *
+ * Copyright 2014 Big Switch Networks, Inc.
+ *
+ * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/legal/epl-v10.html
+ *
+ * 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.
+ *
+ *
+ ************************************************************
+ *
+ * Platform Library
+ *
+ ***********************************************************/
+#include
+#include
+#include
+#include "platform_lib.h"
+
+#define WARM_RESET_FORMAT "/sys/devices/platform/as7926_40xfb_sys/reset_%s"
+
+/**
+ * @brief warm reset for mac, mux, op2, gb and jr2
+ * @param unit_id The warm reset device unit id, should be 0
+ * @param reset_dev The warm reset device id, should be 1 ~ (WARM_RESET_MAX-1)
+ * @param ret return value.
+ */
+int onlp_data_path_reset(uint8_t unit_id, uint8_t reset_dev)
+{
+ int len = 0;
+ int ret = ONLP_STATUS_OK;
+ char *magic_num = NULL;
+ char *device_id[] = { NULL, "mac", NULL, "mux", "op2", "gb", "jr2" };
+
+ if (unit_id != 0 || reset_dev >= WARM_RESET_MAX)
+ return ONLP_STATUS_E_PARAM;
+
+ if (reset_dev == 0 || reset_dev == WARM_RESET_PHY)
+ return ONLP_STATUS_E_UNSUPPORTED;
+
+ /* Reset device */
+ len = onlp_file_read_str(&magic_num, WARM_RESET_FORMAT, device_id[reset_dev]);
+ if (magic_num && len) {
+ ret = onlp_file_write_str(magic_num, WARM_RESET_FORMAT, device_id[reset_dev]);
+ if (ret < 0) {
+ AIM_LOG_ERROR("Reset device-%d:(%s) failed.", reset_dev, device_id[reset_dev]);
+ }
+ }
+ else {
+ ret = ONLP_STATUS_E_INTERNAL;
+ }
+
+ AIM_FREE_IF_PTR(magic_num);
+ return ret;
+}
diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/platform_lib.h b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/platform_lib.h
index 194bda08e2..4ed9a3d82d 100644
--- a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/platform_lib.h
+++ b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/platform_lib.h
@@ -41,6 +41,15 @@
#define FAN_BOARD_PATH "/sys/devices/platform/as7926_40xfb_fan/"
#define IDPROM_PATH "/sys/devices/platform/as7926_40xfb_sys/eeprom"
+#define AIM_FREE_IF_PTR(p) \
+ do \
+ { \
+ if (p) { \
+ aim_free(p); \
+ p = NULL; \
+ } \
+ } while (0)
+
enum onlp_led_id
{
LED_RESERVED = 0,
@@ -68,4 +77,14 @@ enum onlp_thermal_id {
THERMAL_1_ON_PSU2,
};
+enum reset_dev_type {
+ WARM_RESET_MAC = 1,
+ WARM_RESET_PHY, /* Not supported */
+ WARM_RESET_MUX,
+ WARM_RESET_OP2,
+ WARM_RESET_GB,
+ WARM_RESET_JR2,
+ WARM_RESET_MAX
+};
+
#endif /* __PLATFORM_LIB_H__ */
diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/psui.c b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/psui.c
index 58a55d9be8..5a5db62afa 100644
--- a/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/psui.c
+++ b/packages/platforms/accton/x86-64/as7926-40xfb/onlp/builds/x86_64_accton_as7926_40xfb/module/src/psui.c
@@ -37,15 +37,6 @@
} \
} while(0)
-#define AIM_FREE_IF_PTR(p) \
- do \
- { \
- if (p) { \
- aim_free(p); \
- p = NULL; \
- } \
- } while (0)
-
int
onlp_psui_init(void)
{
@@ -102,11 +93,7 @@ onlp_psui_info_get(onlp_oid_t id, onlp_psu_info_t* info)
}
if (val != PSU_STATUS_POWER_GOOD) {
- info->status |= ONLP_PSU_STATUS_FAILED;
- }
-
- if (info->status & ONLP_PSU_STATUS_FAILED) {
- return ONLP_STATUS_OK;
+ info->status |= ONLP_PSU_STATUS_UNPLUGGED;
}
/* Read voltage, current and power */
diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/platform-config/r0/src/lib/x86-64-accton-as7926-40xfb-r0.yml b/packages/platforms/accton/x86-64/as7926-40xfb/platform-config/r0/src/lib/x86-64-accton-as7926-40xfb-r0.yml
index 1f528a154d..08d9c4d23c 100644
--- a/packages/platforms/accton/x86-64/as7926-40xfb/platform-config/r0/src/lib/x86-64-accton-as7926-40xfb-r0.yml
+++ b/packages/platforms/accton/x86-64/as7926-40xfb/platform-config/r0/src/lib/x86-64-accton-as7926-40xfb-r0.yml
@@ -18,7 +18,7 @@ x86-64-accton-as7926-40xfb-r0:
--stop=1
kernel:
- <<: *kernel-4-19
+ <<: *kernel-6-1
args: >-
console=ttyS0,115200n8
diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/platform-config/r0/src/python/x86_64_accton_as7926_40xfb_r0/__init__.py b/packages/platforms/accton/x86-64/as7926-40xfb/platform-config/r0/src/python/x86_64_accton_as7926_40xfb_r0/__init__.py
index caedc39601..d2f15f1f07 100644
--- a/packages/platforms/accton/x86-64/as7926-40xfb/platform-config/r0/src/python/x86_64_accton_as7926_40xfb_r0/__init__.py
+++ b/packages/platforms/accton/x86-64/as7926-40xfb/platform-config/r0/src/python/x86_64_accton_as7926_40xfb_r0/__init__.py
@@ -20,7 +20,8 @@ def init_ipmi_dev_intf():
return (True, (ATTEMPTS - attempts) * interval)
for i in range(0, len(init_ipmi_dev)):
- commands.getstatusoutput(init_ipmi_dev[i])
+ process = subprocess.Popen(init_ipmi_dev[i], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ output, error = process.communicate()
attempts -= 1
sleep(interval)
@@ -32,7 +33,10 @@ def init_ipmi_oem_cmd():
interval = INTERVAL
while attempts:
- status, output = commands.getstatusoutput('ipmitool raw 0x34 0x95')
+ cmd = "ipmitool raw 0x34 0x95"
+ process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ output, error = process.communicate()
+ status = process.returncode
if status:
attempts -= 1
sleep(interval)
@@ -106,6 +110,9 @@ def baseconfig(self):
('as7926_40xfb_cpld4', 0x64, 20)
])
+ # initialize pca9548 idle_state
+ subprocess.call('echo -2 | tee /sys/bus/i2c/drivers/pca954x/*-00*/idle_state > /dev/null', shell=True)
+
for port in chain(range(1, 11), range(21, 31)):
subprocess.call('echo 0 > /sys/bus/i2c/devices/12-0062/module_reset_%d' % port, shell=True)
diff --git a/packages/platforms/accton/x86-64/as7946-30xb/modules/PKG.yml b/packages/platforms/accton/x86-64/as7946-30xb/modules/PKG.yml
index 23f19187f0..0ecadbcca0 100644
--- a/packages/platforms/accton/x86-64/as7946-30xb/modules/PKG.yml
+++ b/packages/platforms/accton/x86-64/as7946-30xb/modules/PKG.yml
@@ -1 +1 @@
-!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as7946-30xb ARCH=amd64 KERNELS="onl-kernel-5.4-lts-x86-64-all:amd64"
+!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as7946-30xb ARCH=amd64 KERNELS="onl-kernel-6.1-lts-x86-64-all:amd64"
diff --git a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/Makefile b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/Makefile
index b2b102a717..b230571d85 100644
--- a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/Makefile
+++ b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/Makefile
@@ -1,5 +1,5 @@
-KERNELS := onl-kernel-5.4-lts-x86-64-all:amd64
-KMODULES := $(wildcard *.c)
+KERNELS := onl-kernel-6.1-lts-x86-64-all:amd64
+KMODULES := src
VENDOR := accton
BASENAME := x86-64-accton-as7946-30xb
ARCH := x86_64
diff --git a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/src/Makefile b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/src/Makefile
new file mode 100644
index 0000000000..6be83a0b4d
--- /dev/null
+++ b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/src/Makefile
@@ -0,0 +1,6 @@
+obj-m += x86-64-accton-as7946-30xb-cpld.o
+obj-m += x86-64-accton-as7946-30xb-fan.o
+obj-m += x86-64-accton-as7946-30xb-leds.o
+obj-m += x86-64-accton-as7946-30xb-psu.o
+obj-m += x86-64-accton-as7946-30xb-sys.o
+obj-m += x86-64-accton-as7946-30xb-thermal.o
\ No newline at end of file
diff --git a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-cpld.c b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/src/x86-64-accton-as7946-30xb-cpld.c
similarity index 97%
rename from packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-cpld.c
rename to packages/platforms/accton/x86-64/as7946-30xb/modules/builds/src/x86-64-accton-as7946-30xb-cpld.c
index 4718a8f26e..83ddf8db2e 100644
--- a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-cpld.c
+++ b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/src/x86-64-accton-as7946-30xb-cpld.c
@@ -793,6 +793,26 @@ static ssize_t show_version(struct device *dev, struct device_attribute *attr,
return status;
}
+static umode_t as7946_30xb_cpld_is_visible(const void *drvdata,
+ enum hwmon_sensor_types type,
+ u32 attr, int channel)
+{
+ return 0;
+}
+
+static const struct hwmon_channel_info *as7946_30xb_cpld_info[] = {
+ HWMON_CHANNEL_INFO(chip, HWMON_C_REGISTER_TZ),
+ NULL,
+};
+
+static const struct hwmon_ops as7946_30xb_cpld_hwmon_ops = {
+ .is_visible = as7946_30xb_cpld_is_visible,
+};
+
+static const struct hwmon_chip_info as7946_30xb_cpld_chip_info = {
+ .ops = &as7946_30xb_cpld_hwmon_ops,
+ .info = as7946_30xb_cpld_info,
+};
static int as7946_30xb_cpld_probe(struct i2c_client *client,
const struct i2c_device_id *dev_id)
@@ -823,7 +843,10 @@ static int as7946_30xb_cpld_probe(struct i2c_client *client,
if (status)
goto exit_free;
- data->hwmon_dev = hwmon_device_register_with_info(&client->dev, DRVNAME, NULL, NULL, NULL);
+ data->hwmon_dev = hwmon_device_register_with_info(&client->dev,
+ DRVNAME, NULL,
+ &as7946_30xb_cpld_chip_info, NULL);
+
if (IS_ERR(data->hwmon_dev)) {
status = PTR_ERR(data->hwmon_dev);
goto exit_remove;
@@ -845,7 +868,7 @@ static int as7946_30xb_cpld_probe(struct i2c_client *client,
return status;
}
-static int as7946_30xb_cpld_remove(struct i2c_client *client)
+static void as7946_30xb_cpld_remove(struct i2c_client *client)
{
struct as7946_30xb_cpld_data *data = i2c_get_clientdata(client);
@@ -853,8 +876,6 @@ static int as7946_30xb_cpld_remove(struct i2c_client *client)
sysfs_remove_group(&client->dev.kobj, cpld_groups[data->index]);
kfree(data);
as7946_30xb_cpld_remove_client(client);
-
- return 0;
}
static const struct i2c_device_id as7946_30xb_cpld_id[] = {
diff --git a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-fan.c b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/src/x86-64-accton-as7946-30xb-fan.c
similarity index 100%
rename from packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-fan.c
rename to packages/platforms/accton/x86-64/as7946-30xb/modules/builds/src/x86-64-accton-as7946-30xb-fan.c
diff --git a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-leds.c b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/src/x86-64-accton-as7946-30xb-leds.c
similarity index 100%
rename from packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-leds.c
rename to packages/platforms/accton/x86-64/as7946-30xb/modules/builds/src/x86-64-accton-as7946-30xb-leds.c
diff --git a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-psu.c b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/src/x86-64-accton-as7946-30xb-psu.c
similarity index 100%
rename from packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-psu.c
rename to packages/platforms/accton/x86-64/as7946-30xb/modules/builds/src/x86-64-accton-as7946-30xb-psu.c
diff --git a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-sys.c b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/src/x86-64-accton-as7946-30xb-sys.c
similarity index 85%
rename from packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-sys.c
rename to packages/platforms/accton/x86-64/as7946-30xb/modules/builds/src/x86-64-accton-as7946-30xb-sys.c
index fdd6ac5d28..b733d89212 100644
--- a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-sys.c
+++ b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/src/x86-64-accton-as7946-30xb-sys.c
@@ -36,6 +36,8 @@
#define IPMI_SYSEEPROM_READ_CMD 0x18
#define IPMI_TIMEOUT (20 * HZ)
#define IPMI_READ_MAX_LEN 128
+#define IPMI_RESET_CMD 0x65
+#define IPMI_RESET_CMD_LENGTH 6
#define EEPROM_NAME "eeprom"
#define EEPROM_SIZE 512 /*512 byte eeprom */
@@ -51,6 +53,10 @@ static int as7946_30xb_sys_probe(struct platform_device *pdev);
static int as7946_30xb_sys_remove(struct platform_device *pdev);
static ssize_t show_cpld_version(struct device *dev,
struct device_attribute *da, char *buf);
+static ssize_t get_reset(struct device *dev, struct device_attribute *da,
+ char *buf);
+static ssize_t set_reset(struct device *dev, struct device_attribute *da,
+ const char *buf, size_t count);
struct ipmi_data {
struct completion read_complete;
@@ -78,6 +84,8 @@ struct as7946_30xb_sys_data {
unsigned char ipmi_resp_eeprom[EEPROM_SIZE];
unsigned char ipmi_resp_cpld[2];
unsigned char ipmi_tx_data[3];
+ unsigned char ipmi_resp_rst[2];
+ unsigned char ipmi_tx_data_rst[IPMI_RESET_CMD_LENGTH];
struct bin_attribute eeprom; /* eeprom data */
};
@@ -96,6 +104,7 @@ enum as7946_30xb_sys_sysfs_attrs {
CPU_CPLD_VER, /* CPU board CPLD version */
SYSTEM_CPLD1_VER, /* System cpld1 version */
FAN_CPLD_VER, /* FAN CPLD version */
+ RESET_MAC,
};
static SENSOR_DEVICE_ATTR(cpu_cpld_ver, S_IRUGO, show_cpld_version,
@@ -104,11 +113,14 @@ static SENSOR_DEVICE_ATTR(system_cpld1_ver, S_IRUGO, show_cpld_version,
NULL, SYSTEM_CPLD1_VER);
static SENSOR_DEVICE_ATTR(fan_cpld_ver, S_IRUGO, show_cpld_version,
NULL, FAN_CPLD_VER);
+static SENSOR_DEVICE_ATTR(reset_mac, S_IWUSR | S_IRUGO, \
+ get_reset, set_reset, RESET_MAC);
static struct attribute *as7946_30xb_sys_attributes[] = {
&sensor_dev_attr_cpu_cpld_ver.dev_attr.attr,
&sensor_dev_attr_system_cpld1_ver.dev_attr.attr,
&sensor_dev_attr_fan_cpld_ver.dev_attr.attr,
+ &sensor_dev_attr_reset_mac.dev_attr.attr,
NULL
};
@@ -225,6 +237,70 @@ static void ipmi_msg_handler(struct ipmi_recv_msg *msg, void *user_msg_data)
complete(&ipmi->read_complete);
}
+static ssize_t get_reset(struct device *dev, struct device_attribute *da,
+ char *buf)
+{
+ int status = 0;
+
+ mutex_lock(&data->update_lock);
+ status = ipmi_send_message(&data->ipmi, IPMI_RESET_CMD, NULL, 0,
+ data->ipmi_resp_rst, sizeof(data->ipmi_resp_rst));
+ if (unlikely(status != 0))
+ goto exit;
+
+ if (unlikely(data->ipmi.rx_result != 0)) {
+ status = -EIO;
+ goto exit;
+ }
+
+ mutex_unlock(&data->update_lock);
+ return sprintf(buf, "0x%x 0x%x", data->ipmi_resp_rst[0], data->ipmi_resp_rst[1]);
+
+ exit:
+ mutex_unlock(&data->update_lock);
+ return status;
+}
+
+static ssize_t set_reset(struct device *dev, struct device_attribute *da,
+ const char *buf, size_t count)
+{
+ u32 magic[2];
+ int status;
+
+ if (sscanf(buf, "0x%x 0x%x", &magic[0], &magic[1]) != 2)
+ return -EINVAL;
+
+ if (magic[0] > 0xFF || magic[1] > 0xFF)
+ return -EINVAL;
+
+ mutex_lock(&data->update_lock);
+
+ /* Send IPMI write command */
+ data->ipmi_tx_data_rst[0] = 0;
+ data->ipmi_tx_data_rst[1] = 0;
+ data->ipmi_tx_data_rst[2] = 1;
+ data->ipmi_tx_data_rst[3] = 1;
+ data->ipmi_tx_data_rst[4] = magic[0];
+ data->ipmi_tx_data_rst[5] = magic[1];
+
+ status = ipmi_send_message(&data->ipmi, IPMI_RESET_CMD,
+ data->ipmi_tx_data_rst,
+ sizeof(data->ipmi_tx_data_rst), NULL, 0);
+ if (unlikely(status != 0))
+ goto exit;
+
+ if (unlikely(data->ipmi.rx_result != 0)) {
+ status = -EIO;
+ goto exit;
+ }
+
+ status = count;
+
+ exit:
+ mutex_unlock(&data->update_lock);
+ return status;
+}
+
static ssize_t sys_eeprom_read(loff_t off, char *buf, size_t count)
{
int status = 0;
diff --git a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-thermal.c b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/src/x86-64-accton-as7946-30xb-thermal.c
similarity index 100%
rename from packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-thermal.c
rename to packages/platforms/accton/x86-64/as7946-30xb/modules/builds/src/x86-64-accton-as7946-30xb-thermal.c
diff --git a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/fani.c b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/fani.c
index e32e9e0039..79d8799115 100644
--- a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/fani.c
+++ b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/fani.c
@@ -62,15 +62,6 @@ enum fan_id {
{ 0 },\
}
-#define AIM_FREE_IF_PTR(p) \
- do \
- { \
- if (p) { \
- aim_free(p); \
- p = NULL; \
- } \
- } while (0)
-
/* Static fan information */
onlp_fan_info_t finfo[] = {
{ }, /* Not used */
diff --git a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/platform_lib.c b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/platform_lib.c
new file mode 100644
index 0000000000..2e748c7f6b
--- /dev/null
+++ b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/platform_lib.c
@@ -0,0 +1,65 @@
+/************************************************************
+ *
+ *
+ * Copyright 2014 Big Switch Networks, Inc.
+ *
+ * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/legal/epl-v10.html
+ *
+ * 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.
+ *
+ *
+ ************************************************************
+ *
+ * Platform Library
+ *
+ ***********************************************************/
+#include
+#include
+#include
+#include "platform_lib.h"
+
+#define WARM_RESET_FORMAT "/sys/devices/platform/as7946_30xb_sys/reset_%s"
+
+/**
+ * @brief warm reset for mac
+ * @param unit_id The warm reset device unit id, should be 0
+ * @param reset_dev The warm reset device id, should be 1 ~ (WARM_RESET_MAX-1)
+ * @param ret return value.
+ */
+int onlp_data_path_reset(uint8_t unit_id, uint8_t reset_dev)
+{
+ int len = 0;
+ int ret = ONLP_STATUS_OK;
+ char *magic_num = NULL;
+ char *device_id[] = { NULL, "mac" };
+
+ if (unit_id != 0 || reset_dev >= WARM_RESET_MAX)
+ return ONLP_STATUS_E_PARAM;
+
+ if (reset_dev == 0)
+ return ONLP_STATUS_E_UNSUPPORTED;
+
+ /* Reset device */
+ len = onlp_file_read_str(&magic_num, WARM_RESET_FORMAT, device_id[reset_dev]);
+ if (magic_num && len) {
+ ret = onlp_file_write_str(magic_num, WARM_RESET_FORMAT, device_id[reset_dev]);
+ if (ret < 0) {
+ AIM_LOG_ERROR("Reset device-%d:(%s) failed.", reset_dev, device_id[reset_dev]);
+ }
+ }
+ else {
+ ret = ONLP_STATUS_E_INTERNAL;
+ }
+
+ AIM_FREE_IF_PTR(magic_num);
+ return ret;
+}
diff --git a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/platform_lib.h b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/platform_lib.h
index b47291fd8e..b17ef498f6 100644
--- a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/platform_lib.h
+++ b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/platform_lib.h
@@ -42,6 +42,15 @@
#define FAN_BOARD_PATH "/sys/devices/platform/as7946_30xb_fan/"
#define IDPROM_PATH "/sys/devices/platform/as7946_30xb_sys/eeprom"
+#define AIM_FREE_IF_PTR(p) \
+ do \
+ { \
+ if (p) { \
+ aim_free(p); \
+ p = NULL; \
+ } \
+ } while (0)
+
enum onlp_led_id {
LED_LOC = 1,
LED_DIAG,
@@ -70,4 +79,9 @@ enum onlp_thermal_id {
THERMAL_3_ON_PSU2,
};
+enum reset_dev_type {
+ WARM_RESET_MAC = 1,
+ WARM_RESET_MAX
+};
+
#endif /* __PLATFORM_LIB_H__ */
diff --git a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/psui.c b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/psui.c
index 284f06064a..66c33ee032 100644
--- a/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/psui.c
+++ b/packages/platforms/accton/x86-64/as7946-30xb/onlp/builds/x86_64_accton_as7946_30xb/module/src/psui.c
@@ -37,15 +37,6 @@
} \
} while(0)
-#define AIM_FREE_IF_PTR(p) \
- do \
- { \
- if (p) { \
- aim_free(p); \
- p = NULL; \
- } \
- } while (0)
-
int
onlp_psui_init(void)
{
@@ -117,11 +108,7 @@ onlp_psui_info_get(onlp_oid_t id, onlp_psu_info_t* info)
}
if (val != PSU_STATUS_POWER_GOOD) {
- info->status |= ONLP_PSU_STATUS_FAILED;
- }
-
- if (info->status & ONLP_PSU_STATUS_FAILED) {
- return ONLP_STATUS_OK;
+ info->status |= ONLP_PSU_STATUS_UNPLUGGED;
}
/* Read voltage, current and power */
diff --git a/packages/platforms/accton/x86-64/as7946-30xb/platform-config/r0/src/lib/x86-64-accton-as7946-30xb-r0.yml b/packages/platforms/accton/x86-64/as7946-30xb/platform-config/r0/src/lib/x86-64-accton-as7946-30xb-r0.yml
index 60f71c7c52..762a0865ad 100644
--- a/packages/platforms/accton/x86-64/as7946-30xb/platform-config/r0/src/lib/x86-64-accton-as7946-30xb-r0.yml
+++ b/packages/platforms/accton/x86-64/as7946-30xb/platform-config/r0/src/lib/x86-64-accton-as7946-30xb-r0.yml
@@ -18,7 +18,7 @@ x86-64-accton-as7946-30xb-r0:
--stop=1
kernel:
- <<: *kernel-5-4
+ <<: *kernel-6-1
args: >-
console=ttyS0,115200n8
diff --git a/packages/platforms/accton/x86-64/as7946-30xb/platform-config/r0/src/python/x86_64_accton_as7946_30xb_r0/__init__.py b/packages/platforms/accton/x86-64/as7946-30xb/platform-config/r0/src/python/x86_64_accton_as7946_30xb_r0/__init__.py
index 23d355faf2..bc317eaf8a 100644
--- a/packages/platforms/accton/x86-64/as7946-30xb/platform-config/r0/src/python/x86_64_accton_as7946_30xb_r0/__init__.py
+++ b/packages/platforms/accton/x86-64/as7946-30xb/platform-config/r0/src/python/x86_64_accton_as7946_30xb_r0/__init__.py
@@ -1,4 +1,3 @@
-import commands
from itertools import chain
from onl.platform.base import *
from onl.platform.accton import *
@@ -20,7 +19,8 @@ def init_ipmi_dev_intf():
return (True, (ATTEMPTS - attempts) * interval)
for i in range(0, len(init_ipmi_dev)):
- commands.getstatusoutput(init_ipmi_dev[i])
+ process = subprocess.Popen(init_ipmi_dev[i], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = process.communicate()
attempts -= 1
sleep(interval)
@@ -32,7 +32,10 @@ def init_ipmi_oem_cmd():
interval = INTERVAL
while attempts:
- status, output = commands.getstatusoutput('ipmitool raw 0x34 0x95')
+ cmd = "ipmitool raw 0x34 0x95"
+ process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = process.communicate()
+ status = process.returncode
if status:
attempts -= 1
sleep(interval)
@@ -101,7 +104,7 @@ def baseconfig(self):
('as7946_30xb_cpld2', 0x62, 13),
])
- # initialize pca9548 idle_state in kernel 5.4.40 version
+ # initialize pca9548 idle_state
subprocess.call('echo -2 | tee /sys/bus/i2c/drivers/pca954x/*-00*/idle_state > /dev/null', shell=True)
# initialize QSFP port(0-3), QSFP28 port(4-25), SFP port(26-29)
port_i2c_bus = [ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/modules/PKG.yml b/packages/platforms/accton/x86-64/as7946-74xkb/modules/PKG.yml
index dd17b4506d..c3af41ad15 100644
--- a/packages/platforms/accton/x86-64/as7946-74xkb/modules/PKG.yml
+++ b/packages/platforms/accton/x86-64/as7946-74xkb/modules/PKG.yml
@@ -1 +1 @@
-!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as7946-74xkb ARCH=amd64 KERNELS="onl-kernel-5.4-lts-x86-64-all:amd64"
+!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as7946-74xkb ARCH=amd64 KERNELS="onl-kernel-6.1-lts-x86-64-all:amd64"
diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/Makefile b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/Makefile
index 19e99372fe..10e7c79657 100644
--- a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/Makefile
+++ b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/Makefile
@@ -1,5 +1,5 @@
-KERNELS := onl-kernel-5.4-lts-x86-64-all:amd64
-KMODULES := $(wildcard *.c)
+KERNELS := onl-kernel-6.1-lts-x86-64-all:amd64
+KMODULES := src
VENDOR := accton
BASENAME := x86-64-accton-as7946-74xkb
ARCH := x86_64
diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/src/Makefile b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/src/Makefile
new file mode 100644
index 0000000000..b93aea97db
--- /dev/null
+++ b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/src/Makefile
@@ -0,0 +1,6 @@
+obj-m += x86-64-accton-as7946-74xkb-cpld.o
+obj-m += x86-64-accton-as7946-74xkb-fan.o
+obj-m += x86-64-accton-as7946-74xkb-leds.o
+obj-m += x86-64-accton-as7946-74xkb-psu.o
+obj-m += x86-64-accton-as7946-74xkb-sys.o
+obj-m += x86-64-accton-as7946-74xkb-thermal.o
\ No newline at end of file
diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-cpld.c b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/src/x86-64-accton-as7946-74xkb-cpld.c
similarity index 94%
rename from packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-cpld.c
rename to packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/src/x86-64-accton-as7946-74xkb-cpld.c
index ec4922df8f..7de6250d3c 100644
--- a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-cpld.c
+++ b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/src/x86-64-accton-as7946-74xkb-cpld.c
@@ -80,6 +80,7 @@ static const unsigned short normal_i2c[] = { I2C_CLIENT_END };
#define TRANSCEIVER_RESET_ATTR_ID(index) MODULE_RESET_##index
#define TRANSCEIVER_TXDISABLE_ATTR_ID(index) MODULE_TXDISABLE_##index
#define TRANSCEIVER_RXLOS_ATTR_ID(index) MODULE_RXLOS_##index
+#define TRANSCEIVER_LPMODE_ATTR_ID(index) MODULE_LPMODE_##index
enum as7946_74xkb_cpld_sysfs_attributes {
/* transceiver attributes */
@@ -167,6 +168,16 @@ enum as7946_74xkb_cpld_sysfs_attributes {
TRANSCEIVER_RESET_ATTR_ID(8),
TRANSCEIVER_RESET_ATTR_ID(9),
TRANSCEIVER_RESET_ATTR_ID(10),
+ TRANSCEIVER_LPMODE_ATTR_ID(1),
+ TRANSCEIVER_LPMODE_ATTR_ID(2),
+ TRANSCEIVER_LPMODE_ATTR_ID(3),
+ TRANSCEIVER_LPMODE_ATTR_ID(4),
+ TRANSCEIVER_LPMODE_ATTR_ID(5),
+ TRANSCEIVER_LPMODE_ATTR_ID(6),
+ TRANSCEIVER_LPMODE_ATTR_ID(7),
+ TRANSCEIVER_LPMODE_ATTR_ID(8),
+ TRANSCEIVER_LPMODE_ATTR_ID(9),
+ TRANSCEIVER_LPMODE_ATTR_ID(10),
TRANSCEIVER_TXDISABLE_ATTR_ID(11),
TRANSCEIVER_TXDISABLE_ATTR_ID(12),
TRANSCEIVER_TXDISABLE_ATTR_ID(13),
@@ -308,20 +319,25 @@ enum as7946_74xkb_cpld_sysfs_attributes {
static SENSOR_DEVICE_ATTR(module_present_##index, S_IRUGO, show_status, \
NULL, MODULE_PRESENT_##index); \
static SENSOR_DEVICE_ATTR(module_reset_##index, S_IRUGO | S_IWUSR, \
- show_status, set_control, MODULE_RESET_##index)
+ show_status, set_control, MODULE_RESET_##index); \
+ static SENSOR_DEVICE_ATTR(module_lpmode_##index, S_IRUGO | S_IWUSR, \
+ show_status, set_control, MODULE_LPMODE_##index);
#define DECLARE_QSFP28_TRANSCEIVER_ATTR(index) \
&sensor_dev_attr_module_present_##index.dev_attr.attr, \
- &sensor_dev_attr_module_reset_##index.dev_attr.attr
+ &sensor_dev_attr_module_reset_##index.dev_attr.attr, \
+ &sensor_dev_attr_module_lpmode_##index.dev_attr.attr
#define DECLARE_QSFPDD_TRANSCEIVER_SENSOR_DEVICE_ATTR(index) \
static SENSOR_DEVICE_ATTR(module_present_##index, S_IRUGO, \
show_status, NULL, MODULE_PRESENT_##index); \
static SENSOR_DEVICE_ATTR(module_reset_##index, S_IRUGO | S_IWUSR, \
- show_status, set_control, MODULE_RESET_##index)
+ show_status, set_control, MODULE_RESET_##index); \
+ static SENSOR_DEVICE_ATTR(module_lpmode_##index, S_IRUGO | S_IWUSR, \
+ show_status, set_control, MODULE_LPMODE_##index);
#define DECLARE_QSFPDD_TRANSCEIVER_ATTR(index) \
&sensor_dev_attr_module_present_##index.dev_attr.attr, \
- &sensor_dev_attr_module_reset_##index.dev_attr.attr
-
+ &sensor_dev_attr_module_reset_##index.dev_attr.attr, \
+ &sensor_dev_attr_module_lpmode_##index.dev_attr.attr
/* sfp transceiver attributes */
#define DECLARE_SFP_TRANSCEIVER_SENSOR_DEVICE_ATTR(index) \
static SENSOR_DEVICE_ATTR(module_present_##index, S_IRUGO, show_status, \
@@ -644,6 +660,15 @@ static ssize_t show_status(struct device *dev, struct device_attribute *da,
reg = 0x9;
mask = 0x1 << (attr->index - MODULE_RESET_9);
break;
+ /* lpmode */
+ case MODULE_LPMODE_1 ... MODULE_LPMODE_8:
+ reg = 0xC;
+ mask = 0x1 << (attr->index - MODULE_LPMODE_1);
+ break;
+ case MODULE_LPMODE_9 ... MODULE_LPMODE_10:
+ reg = 0xD;
+ mask = 0x1 << (attr->index - MODULE_LPMODE_9);
+ break;
case MODULE_TXDISABLE_11 ... MODULE_TXDISABLE_18:
reg = 0xA;
mask = 0x1 << (attr->index - MODULE_TXDISABLE_11);
@@ -941,6 +966,14 @@ static ssize_t set_control(struct device *dev, struct device_attribute *da,
reg = 0x9;
mask = 0x1 << (attr->index - MODULE_RESET_9);
break;
+ case MODULE_LPMODE_1 ... MODULE_LPMODE_8:/*QSFP*/
+ reg = 0xC;
+ mask = 0x1 << (attr->index - MODULE_LPMODE_1);
+ break;
+ case MODULE_LPMODE_9 ... MODULE_LPMODE_10:/*QSFP*/
+ reg = 0xD;
+ mask = 0x1 << (attr->index - MODULE_LPMODE_9);
+ break;
default:
return -ENXIO;
}
@@ -1104,6 +1137,26 @@ static ssize_t show_version(struct device *dev, struct device_attribute *attr,
return status;
}
+static umode_t as7946_74xkb_cpld_is_visible(const void *drvdata,
+ enum hwmon_sensor_types type,
+ u32 attr, int channel)
+{
+ return 0;
+}
+
+static const struct hwmon_channel_info *as7946_74xkb_cpld_info[] = {
+ HWMON_CHANNEL_INFO(chip, HWMON_C_REGISTER_TZ),
+ NULL,
+};
+
+static const struct hwmon_ops as7946_74xkb_cpld_hwmon_ops = {
+ .is_visible = as7946_74xkb_cpld_is_visible,
+};
+
+static const struct hwmon_chip_info as7946_74xkb_cpld_chip_info = {
+ .ops = &as7946_74xkb_cpld_hwmon_ops,
+ .info = as7946_74xkb_cpld_info,
+};
static int as7946_74xkb_cpld_probe(struct i2c_client *client,
const struct i2c_device_id *dev_id)
@@ -1134,7 +1187,10 @@ static int as7946_74xkb_cpld_probe(struct i2c_client *client,
if (status)
goto exit_free;
- data->hwmon_dev = hwmon_device_register_with_info(&client->dev, DRVNAME, NULL, NULL, NULL);
+ data->hwmon_dev = hwmon_device_register_with_info(&client->dev,
+ DRVNAME, NULL,
+ &as7946_74xkb_cpld_chip_info, NULL);
+
if (IS_ERR(data->hwmon_dev)) {
status = PTR_ERR(data->hwmon_dev);
goto exit_remove;
@@ -1156,7 +1212,7 @@ static int as7946_74xkb_cpld_probe(struct i2c_client *client,
return status;
}
-static int as7946_74xkb_cpld_remove(struct i2c_client *client)
+static void as7946_74xkb_cpld_remove(struct i2c_client *client)
{
struct as7946_74xkb_cpld_data *data = i2c_get_clientdata(client);
@@ -1164,8 +1220,6 @@ static int as7946_74xkb_cpld_remove(struct i2c_client *client)
sysfs_remove_group(&client->dev.kobj, cpld_groups[data->index]);
kfree(data);
as7946_74xkb_cpld_remove_client(client);
-
- return 0;
}
static const struct i2c_device_id as7946_74xkb_cpld_id[] = {
diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-fan.c b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/src/x86-64-accton-as7946-74xkb-fan.c
similarity index 91%
rename from packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-fan.c
rename to packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/src/x86-64-accton-as7946-74xkb-fan.c
index c17a1117e3..7e01781730 100644
--- a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-fan.c
+++ b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/src/x86-64-accton-as7946-74xkb-fan.c
@@ -151,13 +151,13 @@ enum as7946_74xkb_fan_sysfs_attrs {
#define DECLARE_FAN_SENSOR_DEVICE_ATTR(index) \
static SENSOR_DEVICE_ATTR(fan##index##_present, S_IRUGO, show_fan, NULL, \
- FAN##index##_PRESENT); \
+ FAN##index##_PRESENT); \
static SENSOR_DEVICE_ATTR(fan##index##_pwm, S_IWUSR | S_IRUGO, show_fan, \
- set_fan, FAN##index##_PWM); \
+ set_fan, FAN##index##_PWM); \
static SENSOR_DEVICE_ATTR(fan##index##_input, S_IRUGO, show_fan, NULL, \
- FAN##index##_INPUT); \
+ FAN##index##_INPUT); \
static SENSOR_DEVICE_ATTR(fan##index##_dir, S_IRUGO, show_dir, NULL, \
- FAN##index##_DIR)
+ FAN##index##_DIR)
#define DECLARE_FAN_ATTR(index) \
&sensor_dev_attr_fan##index##_present.dev_attr.attr, \
&sensor_dev_attr_fan##index##_pwm.dev_attr.attr, \
@@ -379,47 +379,47 @@ static ssize_t show_fan(struct device *dev, struct device_attribute *da,
present = !!data->ipmi_resp[index + FAN_PRESENT];
switch (attr->index) {
- case FAN1_PRESENT:
- case FAN2_PRESENT:
- case FAN3_PRESENT:
- case FAN4_PRESENT:
- case FAN5_PRESENT:
- case FAN6_PRESENT:
- case FAN7_PRESENT:
- case FAN8_PRESENT:
- case FAN9_PRESENT:
- case FAN10_PRESENT:
- value = present;
- break;
- case FAN1_PWM:
- case FAN2_PWM:
- case FAN3_PWM:
- case FAN4_PWM:
- case FAN5_PWM:
- case FAN6_PWM:
- case FAN7_PWM:
- case FAN8_PWM:
- case FAN9_PWM:
- case FAN10_PWM:
- index = (fid % NUM_OF_FAN_MODULE) * FAN_DATA_COUNT;
- value = data->ipmi_resp[index + FAN_PWM] + 1;
- break;
- case FAN1_INPUT:
- case FAN2_INPUT:
- case FAN3_INPUT:
- case FAN4_INPUT:
- case FAN5_INPUT:
- case FAN6_INPUT:
- case FAN7_INPUT:
- case FAN8_INPUT:
- case FAN9_INPUT:
- case FAN10_INPUT:
- value = (int)data->ipmi_resp[index + FAN_SPEED0] |
- (int)data->ipmi_resp[index + FAN_SPEED1] << 8;
- break;
- default:
- error = -EINVAL;
- goto exit;
+ case FAN1_PRESENT:
+ case FAN2_PRESENT:
+ case FAN3_PRESENT:
+ case FAN4_PRESENT:
+ case FAN5_PRESENT:
+ case FAN6_PRESENT:
+ case FAN7_PRESENT:
+ case FAN8_PRESENT:
+ case FAN9_PRESENT:
+ case FAN10_PRESENT:
+ value = present;
+ break;
+ case FAN1_PWM:
+ case FAN2_PWM:
+ case FAN3_PWM:
+ case FAN4_PWM:
+ case FAN5_PWM:
+ case FAN6_PWM:
+ case FAN7_PWM:
+ case FAN8_PWM:
+ case FAN9_PWM:
+ case FAN10_PWM:
+ index = (fid % NUM_OF_FAN_MODULE) * FAN_DATA_COUNT;
+ value = data->ipmi_resp[index + FAN_PWM] + 1;
+ break;
+ case FAN1_INPUT:
+ case FAN2_INPUT:
+ case FAN3_INPUT:
+ case FAN4_INPUT:
+ case FAN5_INPUT:
+ case FAN6_INPUT:
+ case FAN7_INPUT:
+ case FAN8_INPUT:
+ case FAN9_INPUT:
+ case FAN10_INPUT:
+ value = (int)data->ipmi_resp[index + FAN_SPEED0] |
+ (int)data->ipmi_resp[index + FAN_SPEED1] << 8;
+ break;
+ default:
+ error = -EINVAL;
+ goto exit;
}
mutex_unlock(&data->update_lock);
@@ -451,8 +451,9 @@ static ssize_t set_fan(struct device *dev, struct device_attribute *da,
data->ipmi_tx_data[1] = 0x02;
data->ipmi_tx_data[2] = pwm;
status = ipmi_send_message(&data->ipmi, IPMI_FAN_WRITE_CMD,
- data->ipmi_tx_data, sizeof(data->ipmi_tx_data),
- NULL, 0);
+ data->ipmi_tx_data, sizeof(data->ipmi_tx_data),
+ NULL, 0);
+
if (unlikely(status != 0))
goto exit;
@@ -477,9 +478,9 @@ static struct as7946_74xkb_fan_data *as7946_74xkb_fan_update_cpld_ver(void)
data->valid = 0;
data->ipmi_tx_data[0] = 0x68;
status = ipmi_send_message(&data->ipmi, IPMI_FAN_REG_READ_CMD,
- data->ipmi_tx_data, 1,
- data->ipmi_resp_cpld,
- sizeof(data->ipmi_resp_cpld));
+ data->ipmi_tx_data, 1,
+ data->ipmi_resp_cpld,
+ sizeof(data->ipmi_resp_cpld));
if (unlikely(status != 0))
goto exit;
@@ -546,7 +547,7 @@ static ssize_t show_dir(struct device *dev, struct device_attribute *da,
return sprintf(buf, "0\n");
else
return sprintf(buf, "%s\n",
- (value & BIT(fid % NUM_OF_FAN_MODULE)) ? "B2F" : "F2B");
+ (value & BIT(fid % NUM_OF_FAN_MODULE)) ? "B2F" : "F2B");
exit:
mutex_unlock(&data->update_lock);
diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-leds.c b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/src/x86-64-accton-as7946-74xkb-leds.c
similarity index 100%
rename from packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-leds.c
rename to packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/src/x86-64-accton-as7946-74xkb-leds.c
diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-psu.c b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/src/x86-64-accton-as7946-74xkb-psu.c
similarity index 100%
rename from packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-psu.c
rename to packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/src/x86-64-accton-as7946-74xkb-psu.c
diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-sys.c b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/src/x86-64-accton-as7946-74xkb-sys.c
similarity index 100%
rename from packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-sys.c
rename to packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/src/x86-64-accton-as7946-74xkb-sys.c
diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-thermal.c b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/src/x86-64-accton-as7946-74xkb-thermal.c
similarity index 100%
rename from packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-thermal.c
rename to packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/src/x86-64-accton-as7946-74xkb-thermal.c
diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/psui.c b/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/psui.c
index 284f06064a..68bbd7268d 100644
--- a/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/psui.c
+++ b/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/psui.c
@@ -117,11 +117,7 @@ onlp_psui_info_get(onlp_oid_t id, onlp_psu_info_t* info)
}
if (val != PSU_STATUS_POWER_GOOD) {
- info->status |= ONLP_PSU_STATUS_FAILED;
- }
-
- if (info->status & ONLP_PSU_STATUS_FAILED) {
- return ONLP_STATUS_OK;
+ info->status |= ONLP_PSU_STATUS_UNPLUGGED;
}
/* Read voltage, current and power */
diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sfpi.c b/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sfpi.c
index a0874e49a2..97fada6cc0 100644
--- a/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sfpi.c
+++ b/packages/platforms/accton/x86-64/as7946-74xkb/onlp/builds/x86_64_accton_as7946_74xkb/module/src/sfpi.c
@@ -61,6 +61,7 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = {
#define MODULE_RESET_MAIN_BOARD_CPLD1_FORMAT "/sys/bus/i2c/devices/12-0061/module_reset_%d"
#define MODULE_RESET_MAIN_BOARD_CPLD2_FORMAT "/sys/bus/i2c/devices/13-0062/module_reset_%d"
#define MODULE_RESET_MAIN_BOARD_CPLD3_FORMAT "/sys/bus/i2c/devices/16-0063/module_reset_%d"
+#define MODULE_LPMODE_MAIN_BOARD_CPLD1_FORMAT "/sys/bus/i2c/devices/12-0061/module_lpmode_%d"
#define MODULE_PRESENT_MAIN_BOARD_CPLD1_FORMAT "/sys/bus/i2c/devices/12-0061/module_present_%d"
#define MODULE_PRESENT_MAIN_BOARD_CPLD2_FORMAT "/sys/bus/i2c/devices/13-0062/module_present_%d"
#define MODULE_PRESENT_MAIN_BOARD_CPLD3_FORMAT "/sys/bus/i2c/devices/16-0063/module_present_%d"
@@ -71,7 +72,6 @@ static const int port_bus_index[NUM_OF_SFP_PORT] = {
#define MODULE_TXDISABLE_MAIN_BOARD_CPLD2_FORMAT "/sys/bus/i2c/devices/13-0062/module_tx_disable_%d"
#define MODULE_TXDISABLE_MAIN_BOARD_CPLD3_FORMAT "/sys/bus/i2c/devices/16-0063/module_tx_disable_%d"
-
/************************************************************
*
* SFPI Entry Points
@@ -308,6 +308,23 @@ onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value)
}
break;
}
+ case ONLP_SFP_CONTROL_LP_MODE:
+ {
+ VALIDATE_QSFP(port);
+
+ switch (port) {
+ case 0 ... 9:
+ path = MODULE_LPMODE_MAIN_BOARD_CPLD1_FORMAT;
+ break;
+ default:
+ break;
+ }
+ if (onlp_file_write_int(value, path, (port+1)) < 0) {
+ AIM_LOG_ERROR("Unable to write LP mode status to port(%d)\r\n", port);
+ rv = ONLP_STATUS_E_INTERNAL;
+ }
+ break;
+ }
default:
rv = ONLP_STATUS_E_UNSUPPORTED;
break;
@@ -393,6 +410,24 @@ onlp_sfpi_control_get(int port, onlp_sfp_control_t control, int* value)
}
break;
}
+ case ONLP_SFP_CONTROL_LP_MODE:
+ {
+ VALIDATE_QSFP(port);
+
+ switch (port) {
+ case 0 ... 9:
+ path = MODULE_LPMODE_MAIN_BOARD_CPLD1_FORMAT;
+ break;
+ default:
+ break;
+ }
+
+ if (onlp_file_read_int(value, path, (port+1)) < 0) {
+ AIM_LOG_ERROR("Unable to read LP mode status from port(%d)\r\n", port);
+ rv = ONLP_STATUS_E_INTERNAL;
+ }
+ break;
+ }
default:
rv = ONLP_STATUS_E_UNSUPPORTED;
break;
diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/platform-config/r0/src/lib/x86-64-accton-as7946-74xkb-r0.yml b/packages/platforms/accton/x86-64/as7946-74xkb/platform-config/r0/src/lib/x86-64-accton-as7946-74xkb-r0.yml
index e46ed64f39..bf80f42223 100644
--- a/packages/platforms/accton/x86-64/as7946-74xkb/platform-config/r0/src/lib/x86-64-accton-as7946-74xkb-r0.yml
+++ b/packages/platforms/accton/x86-64/as7946-74xkb/platform-config/r0/src/lib/x86-64-accton-as7946-74xkb-r0.yml
@@ -18,7 +18,7 @@ x86-64-accton-as7946-74xkb-r0:
--stop=1
kernel:
- <<: *kernel-5-4
+ <<: *kernel-6-1
args: >-
console=ttyS0,115200n8
diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/platform-config/r0/src/python/x86_64_accton_as7946_74xkb_r0/__init__.py b/packages/platforms/accton/x86-64/as7946-74xkb/platform-config/r0/src/python/x86_64_accton_as7946_74xkb_r0/__init__.py
index bb85cea5ff..571e7df38e 100644
--- a/packages/platforms/accton/x86-64/as7946-74xkb/platform-config/r0/src/python/x86_64_accton_as7946_74xkb_r0/__init__.py
+++ b/packages/platforms/accton/x86-64/as7946-74xkb/platform-config/r0/src/python/x86_64_accton_as7946_74xkb_r0/__init__.py
@@ -1,4 +1,3 @@
-import commands
from itertools import chain
from onl.platform.base import *
from onl.platform.accton import *
@@ -20,7 +19,8 @@ def init_ipmi_dev_intf():
return (True, (ATTEMPTS - attempts) * interval)
for i in range(0, len(init_ipmi_dev)):
- commands.getstatusoutput(init_ipmi_dev[i])
+ process = subprocess.Popen(init_ipmi_dev[i], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = process.communicate()
attempts -= 1
sleep(interval)
@@ -32,7 +32,10 @@ def init_ipmi_oem_cmd():
interval = INTERVAL
while attempts:
- status, output = commands.getstatusoutput('ipmitool raw 0x34 0x95')
+ cmd = "ipmitool raw 0x34 0x95"
+ process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = process.communicate()
+ status = process.returncode
if status:
attempts -= 1
sleep(interval)
@@ -109,7 +112,7 @@ def baseconfig(self):
('as7946_74xkb_cpld3', 0x63, 16),
])
- # initialize pca9548 idle_state in kernel 5.4.40 version
+ # initialize pca9548 idle_state
subprocess.call('echo -2 | tee /sys/bus/i2c/drivers/pca954x/*-00*/idle_state > /dev/null', shell=True)
# initialize QSFP port(0-1), QSFP28 port(2-10), SFP port(11-74)
port_i2c_bus = [ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
diff --git a/packages/platforms/accton/x86-64/as9716_32d/modules/PKG.yml b/packages/platforms/accton/x86-64/as9716_32d/modules/PKG.yml
index b19154f4a9..a8489949da 100755
--- a/packages/platforms/accton/x86-64/as9716_32d/modules/PKG.yml
+++ b/packages/platforms/accton/x86-64/as9716_32d/modules/PKG.yml
@@ -1 +1 @@
-!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as9716-32d ARCH=amd64 KERNELS="onl-kernel-4.14-lts-x86-64-all:amd64"
+!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as9716-32d ARCH=amd64 KERNELS="onl-kernel-6.1-lts-x86-64-all:amd64"
diff --git a/packages/platforms/accton/x86-64/as9716_32d/modules/builds/Makefile b/packages/platforms/accton/x86-64/as9716_32d/modules/builds/Makefile
index d72b2fdce8..d65018408b 100755
--- a/packages/platforms/accton/x86-64/as9716_32d/modules/builds/Makefile
+++ b/packages/platforms/accton/x86-64/as9716_32d/modules/builds/Makefile
@@ -1,5 +1,5 @@
-KERNELS := onl-kernel-4.14-lts-x86-64-all:amd64
-KMODULES := $(wildcard *.c)
+KERNELS := onl-kernel-6.1-lts-x86-64-all:amd64
+KMODULES := src
VENDOR := accton
BASENAME := x86-64-accton-as9716-32d
ARCH := x86_64
diff --git a/packages/platforms/accton/x86-64/as9716_32d/modules/builds/src/Makefile b/packages/platforms/accton/x86-64/as9716_32d/modules/builds/src/Makefile
new file mode 100644
index 0000000000..363337db17
--- /dev/null
+++ b/packages/platforms/accton/x86-64/as9716_32d/modules/builds/src/Makefile
@@ -0,0 +1,4 @@
+obj-m += x86-64-accton-as9716-32d-cpld.o
+obj-m += x86-64-accton-as9716-32d-fan.o
+obj-m += x86-64-accton-as9716-32d-leds.o
+obj-m += x86-64-accton-as9716-32d-psu.o
\ No newline at end of file
diff --git a/packages/platforms/accton/x86-64/as9716_32d/modules/builds/x86-64-accton-as9716-32d-cpld.c b/packages/platforms/accton/x86-64/as9716_32d/modules/builds/src/x86-64-accton-as9716-32d-cpld.c
similarity index 99%
rename from packages/platforms/accton/x86-64/as9716_32d/modules/builds/x86-64-accton-as9716-32d-cpld.c
rename to packages/platforms/accton/x86-64/as9716_32d/modules/builds/src/x86-64-accton-as9716-32d-cpld.c
index a2d3e934fc..47057d190c 100755
--- a/packages/platforms/accton/x86-64/as9716_32d/modules/builds/x86-64-accton-as9716-32d-cpld.c
+++ b/packages/platforms/accton/x86-64/as9716_32d/modules/builds/src/x86-64-accton-as9716-32d-cpld.c
@@ -655,7 +655,7 @@ static int as9716_32d_cpld_probe(struct i2c_client *client,
return ret;
}
-static int as9716_32d_cpld_remove(struct i2c_client *client)
+static void as9716_32d_cpld_remove(struct i2c_client *client)
{
struct as9716_32d_cpld_data *data = i2c_get_clientdata(client);
const struct attribute_group *group = NULL;
@@ -682,8 +682,6 @@ static int as9716_32d_cpld_remove(struct i2c_client *client)
}
kfree(data);
-
- return 0;
}
static int as9716_32d_cpld_read_internal(struct i2c_client *client, u8 reg)
diff --git a/packages/platforms/accton/x86-64/as9716_32d/modules/builds/x86-64-accton-as9716-32d-fan.c b/packages/platforms/accton/x86-64/as9716_32d/modules/builds/src/x86-64-accton-as9716-32d-fan.c
similarity index 95%
rename from packages/platforms/accton/x86-64/as9716_32d/modules/builds/x86-64-accton-as9716-32d-fan.c
rename to packages/platforms/accton/x86-64/as9716_32d/modules/builds/src/x86-64-accton-as9716-32d-fan.c
index 2647e3e486..e1dea44678 100755
--- a/packages/platforms/accton/x86-64/as9716_32d/modules/builds/x86-64-accton-as9716-32d-fan.c
+++ b/packages/platforms/accton/x86-64/as9716_32d/modules/builds/src/x86-64-accton-as9716-32d-fan.c
@@ -402,6 +402,27 @@ static struct as9716_32d_fan_data *as9716_32d_fan_update_device(struct device *d
return data;
}
+static umode_t as9716_32d_fan_is_visible(const void *drvdata,
+ enum hwmon_sensor_types type,
+ u32 attr, int channel)
+{
+ return 0;
+}
+
+static const struct hwmon_channel_info *as9716_32d_fan_info[] = {
+ HWMON_CHANNEL_INFO(fan, HWMON_F_ENABLE),
+ NULL,
+};
+
+static const struct hwmon_ops as9716_32d_fan_hwmon_ops = {
+ .is_visible = as9716_32d_fan_is_visible,
+};
+
+static const struct hwmon_chip_info as9716_32d_fan_chip_info = {
+ .ops = &as9716_32d_fan_hwmon_ops,
+ .info = as9716_32d_fan_info,
+};
+
static int as9716_32d_fan_probe(struct i2c_client *client,
const struct i2c_device_id *dev_id)
{
@@ -432,7 +453,10 @@ static int as9716_32d_fan_probe(struct i2c_client *client,
}
data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "as9716_32d_fan",
- NULL, NULL, NULL);
+ NULL,
+ &as9716_32d_fan_chip_info,
+ NULL);
+
if (IS_ERR(data->hwmon_dev)) {
status = PTR_ERR(data->hwmon_dev);
goto exit_remove;
@@ -452,13 +476,11 @@ static int as9716_32d_fan_probe(struct i2c_client *client,
return status;
}
-static int as9716_32d_fan_remove(struct i2c_client *client)
+static void as9716_32d_fan_remove(struct i2c_client *client)
{
struct as9716_32d_fan_data *data = i2c_get_clientdata(client);
hwmon_device_unregister(data->hwmon_dev);
sysfs_remove_group(&client->dev.kobj, &as9716_32d_fan_group);
-
- return 0;
}
/* Addresses to scan */
diff --git a/packages/platforms/accton/x86-64/as9716_32d/modules/builds/x86-64-accton-as9716-32d-leds.c b/packages/platforms/accton/x86-64/as9716_32d/modules/builds/src/x86-64-accton-as9716-32d-leds.c
similarity index 100%
rename from packages/platforms/accton/x86-64/as9716_32d/modules/builds/x86-64-accton-as9716-32d-leds.c
rename to packages/platforms/accton/x86-64/as9716_32d/modules/builds/src/x86-64-accton-as9716-32d-leds.c
diff --git a/packages/platforms/accton/x86-64/as9716_32d/modules/builds/x86-64-accton-as9716-32d-psu.c b/packages/platforms/accton/x86-64/as9716_32d/modules/builds/src/x86-64-accton-as9716-32d-psu.c
similarity index 93%
rename from packages/platforms/accton/x86-64/as9716_32d/modules/builds/x86-64-accton-as9716-32d-psu.c
rename to packages/platforms/accton/x86-64/as9716_32d/modules/builds/src/x86-64-accton-as9716-32d-psu.c
index 9375b933e1..8e158f786d 100755
--- a/packages/platforms/accton/x86-64/as9716_32d/modules/builds/x86-64-accton-as9716-32d-psu.c
+++ b/packages/platforms/accton/x86-64/as9716_32d/modules/builds/src/x86-64-accton-as9716-32d-psu.c
@@ -147,6 +147,27 @@ static const struct attribute_group as9716_32d_psu_group = {
.attrs = as9716_32d_psu_attributes,
};
+static umode_t as9716_32d_psu_is_visible(const void *drvdata,
+ enum hwmon_sensor_types type,
+ u32 attr, int channel)
+{
+ return 0;
+}
+
+static const struct hwmon_channel_info *as9716_32d_psu_info[] = {
+ HWMON_CHANNEL_INFO(power, HWMON_F_ENABLE),
+ NULL,
+};
+
+static const struct hwmon_ops as9716_32d_psu_hwmon_ops = {
+ .is_visible = as9716_32d_psu_is_visible,
+};
+
+static const struct hwmon_chip_info as9716_32d_psu_chip_info = {
+ .ops = &as9716_32d_psu_hwmon_ops,
+ .info = as9716_32d_psu_info,
+};
+
static int as9716_32d_psu_probe(struct i2c_client *client,
const struct i2c_device_id *dev_id)
{
@@ -178,7 +199,10 @@ static int as9716_32d_psu_probe(struct i2c_client *client,
}
data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "as9716_32d_psu",
- NULL, NULL, NULL);
+ NULL,
+ &as9716_32d_psu_chip_info,
+ NULL);
+
if (IS_ERR(data->hwmon_dev)) {
status = PTR_ERR(data->hwmon_dev);
goto exit_remove;
@@ -198,15 +222,13 @@ static int as9716_32d_psu_probe(struct i2c_client *client,
return status;
}
-static int as9716_32d_psu_remove(struct i2c_client *client)
+static void as9716_32d_psu_remove(struct i2c_client *client)
{
struct as9716_32d_psu_data *data = i2c_get_clientdata(client);
hwmon_device_unregister(data->hwmon_dev);
sysfs_remove_group(&client->dev.kobj, &as9716_32d_psu_group);
kfree(data);
-
- return 0;
}
enum psu_index
diff --git a/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/platform_lib.h b/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/platform_lib.h
index 3d07146956..e48cbf4f53 100755
--- a/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/platform_lib.h
+++ b/packages/platforms/accton/x86-64/as9716_32d/onlp/builds/x86_64_accton_as9716_32d/module/src/platform_lib.h
@@ -43,15 +43,15 @@
#define PSU_NODE_MAX_INT_LEN 8
#define PSU_NODE_MAX_PATH_LEN 64
-#define PSU1_AC_PMBUS_PREFIX "/sys/bus/i2c/devices/10-0059/"
-#define PSU2_AC_PMBUS_PREFIX "/sys/bus/i2c/devices/9-0058/"
+#define PSU1_AC_PMBUS_PREFIX "/sys/bus/i2c/devices/9-0058/"
+#define PSU2_AC_PMBUS_PREFIX "/sys/bus/i2c/devices/10-0059/"
#define PSU1_AC_PMBUS_NODE(node) PSU1_AC_PMBUS_PREFIX#node
#define PSU2_AC_PMBUS_NODE(node) PSU2_AC_PMBUS_PREFIX#node
-#define PSU1_AC_HWMON_PREFIX "/sys/bus/i2c/devices/10-0051/"
-#define PSU2_AC_HWMON_PREFIX "/sys/bus/i2c/devices/9-0050/"
+#define PSU1_AC_HWMON_PREFIX "/sys/bus/i2c/devices/9-0050/"
+#define PSU2_AC_HWMON_PREFIX "/sys/bus/i2c/devices/10-0051/"
diff --git a/packages/platforms/accton/x86-64/as9716_32d/platform-config/r0/src/lib/x86-64-accton-as9716-32d-r0.yml b/packages/platforms/accton/x86-64/as9716_32d/platform-config/r0/src/lib/x86-64-accton-as9716-32d-r0.yml
index 35f03e0328..57ff52bc67 100755
--- a/packages/platforms/accton/x86-64/as9716_32d/platform-config/r0/src/lib/x86-64-accton-as9716-32d-r0.yml
+++ b/packages/platforms/accton/x86-64/as9716_32d/platform-config/r0/src/lib/x86-64-accton-as9716-32d-r0.yml
@@ -18,7 +18,7 @@ x86-64-accton-as9716-32d-r0:
--stop=1
kernel:
- <<: *kernel-4-14
+ <<: *kernel-6-1
args: >-
nopat
diff --git a/packages/platforms/accton/x86-64/as9716_32d/platform-config/r0/src/python/x86_64_accton_as9716_32d_r0/__init__.py b/packages/platforms/accton/x86-64/as9716_32d/platform-config/r0/src/python/x86_64_accton_as9716_32d_r0/__init__.py
index 437eadd86e..63480e5e9d 100755
--- a/packages/platforms/accton/x86-64/as9716_32d/platform-config/r0/src/python/x86_64_accton_as9716_32d_r0/__init__.py
+++ b/packages/platforms/accton/x86-64/as9716_32d/platform-config/r0/src/python/x86_64_accton_as9716_32d_r0/__init__.py
@@ -1,31 +1,40 @@
from onl.platform.base import *
from onl.platform.accton import *
-import commands
-
-
def eeprom_check():
cmd = "i2cget -y 0 0x57"
- status, output = commands.getstatusoutput(cmd)
+ process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ output, error = process.communicate()
+ status = process.returncode
+
return status
#IR3570A chip casue problem when read eeprom by i2c-block mode.
#It happen when read 16th-byte offset that value is 0x8. So disable chip
def disable_i2c_ir3570a(addr):
cmd = "i2cset -y 0 0x%x 0xE5 0x01" % addr
- status, output = commands.getstatusoutput(cmd)
+ process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ process.communicate()
+ if process.returncode != 0:
+ return process.returncode
+
cmd = "i2cset -y 0 0x%x 0x12 0x02" % addr
- status, output = commands.getstatusoutput(cmd)
- return status
+ process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ process.communicate()
+
+ return process.returncode
def ir3570_check():
cmd = "i2cdump -y 0 0x42 s 0x9a"
try:
- status, output = commands.getstatusoutput(cmd)
+ process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = process.communicate()
+ output = stdout.strip()
+
lines = output.split('\n')
hn = re.findall(r'\w+', lines[-1])
version = int(hn[1], 16)
- if version == 0x24: #Find IR3570A
+ if version == 0x24: # Find IR3570A
ret = disable_i2c_ir3570a(4)
else:
ret = 0
@@ -47,7 +56,9 @@ def config_sfp_retimer():
for cmd in cmd_list:
retimer_chips = [ "0x18", "0x19", "0x1a", "0x1b" ]
for chip in retimer_chips:
- status, output = commands.getstatusoutput(cmd.format(chip))
+ process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ process.communicate()
+ status = process.returncode
if status != 0:
return False
@@ -120,6 +131,9 @@ def baseconfig(self):
('acbel_fsh082', 0x58, 9),
])
+ # initialize pca9548 idle_state
+ subprocess.call('echo -2 | tee /sys/bus/i2c/drivers/pca954x/*-00*/idle_state > /dev/null', shell=True)
+
# initialize QSFP port 1~32. SFP port 33~34
for port in range(1, 35):
if port <= 32 :
diff --git a/packages/platforms/accton/x86-64/as9817-64/as9817-64d/modules/PKG.yml b/packages/platforms/accton/x86-64/as9817-64/as9817-64d/modules/PKG.yml
index a37425946a..0cdb515a92 100644
--- a/packages/platforms/accton/x86-64/as9817-64/as9817-64d/modules/PKG.yml
+++ b/packages/platforms/accton/x86-64/as9817-64/as9817-64d/modules/PKG.yml
@@ -1 +1 @@
-!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as9817-64d ARCH=amd64 KERNELS="onl-kernel-4.19-lts-x86-64-all:amd64"
+!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as9817-64d ARCH=amd64 KERNELS="onl-kernel-6.1-lts-x86-64-all:amd64"
diff --git a/packages/platforms/accton/x86-64/as9817-64/as9817-64d/modules/builds/Makefile b/packages/platforms/accton/x86-64/as9817-64/as9817-64d/modules/builds/Makefile
index 0035c3bba5..c1aff1c243 100644
--- a/packages/platforms/accton/x86-64/as9817-64/as9817-64d/modules/builds/Makefile
+++ b/packages/platforms/accton/x86-64/as9817-64/as9817-64d/modules/builds/Makefile
@@ -1,4 +1,4 @@
-KERNELS := onl-kernel-4.19-lts-x86-64-all:amd64
+KERNELS := onl-kernel-6.1-lts-x86-64-all:amd64
KMODULES := $(ONL)/packages/platforms/accton/x86-64/as9817-64/src/modules/
VENDOR := accton
BASENAME := x86-64-accton-as9817-64d
diff --git a/packages/platforms/accton/x86-64/as9817-64/as9817-64d/platform-config/r0/src/lib/x86-64-accton-as9817-64d-r0.yml b/packages/platforms/accton/x86-64/as9817-64/as9817-64d/platform-config/r0/src/lib/x86-64-accton-as9817-64d-r0.yml
index f5b6624c34..9625f29dc7 100644
--- a/packages/platforms/accton/x86-64/as9817-64/as9817-64d/platform-config/r0/src/lib/x86-64-accton-as9817-64d-r0.yml
+++ b/packages/platforms/accton/x86-64/as9817-64/as9817-64d/platform-config/r0/src/lib/x86-64-accton-as9817-64d-r0.yml
@@ -18,7 +18,7 @@ x86-64-accton-as9817-64d-r0:
--stop=1
kernel:
- <<: *kernel-4-19
+ <<: *kernel-6-1
args: >-
console=ttyS0,115200n8
diff --git a/packages/platforms/accton/x86-64/as9817-64/as9817-64d/platform-config/r0/src/python/x86_64_accton_as9817_64d_r0/__init__.py b/packages/platforms/accton/x86-64/as9817-64/as9817-64d/platform-config/r0/src/python/x86_64_accton_as9817_64d_r0/__init__.py
index 893e4c9f1b..d4754ce062 100644
--- a/packages/platforms/accton/x86-64/as9817-64/as9817-64d/platform-config/r0/src/python/x86_64_accton_as9817_64d_r0/__init__.py
+++ b/packages/platforms/accton/x86-64/as9817-64/as9817-64d/platform-config/r0/src/python/x86_64_accton_as9817_64d_r0/__init__.py
@@ -1,4 +1,3 @@
-import commands
from itertools import chain
from onl.platform.base import *
from onl.platform.accton import *
@@ -20,7 +19,8 @@ def init_ipmi_dev_intf():
return (True, (ATTEMPTS - attempts) * interval)
for i in range(0, len(init_ipmi_dev)):
- commands.getstatusoutput(init_ipmi_dev[i])
+ process = subprocess.Popen(init_ipmi_dev[i], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = process.communicate()
attempts -= 1
sleep(interval)
@@ -32,7 +32,10 @@ def init_ipmi_oem_cmd():
interval = INTERVAL
while attempts:
- status, output = commands.getstatusoutput('ipmitool raw 0x34 0x95')
+ cmd = "ipmitool raw 0x34 0x95"
+ process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = process.communicate()
+ status = process.returncode
if status:
attempts -= 1
sleep(interval)
diff --git a/packages/platforms/accton/x86-64/as9817-64/as9817-64o/modules/PKG.yml b/packages/platforms/accton/x86-64/as9817-64/as9817-64o/modules/PKG.yml
index 0ceae1d01d..7f690a045b 100644
--- a/packages/platforms/accton/x86-64/as9817-64/as9817-64o/modules/PKG.yml
+++ b/packages/platforms/accton/x86-64/as9817-64/as9817-64o/modules/PKG.yml
@@ -1 +1 @@
-!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as9817-64o ARCH=amd64 KERNELS="onl-kernel-4.19-lts-x86-64-all:amd64"
+!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as9817-64o ARCH=amd64 KERNELS="onl-kernel-6.1-lts-x86-64-all:amd64"
diff --git a/packages/platforms/accton/x86-64/as9817-64/as9817-64o/modules/builds/Makefile b/packages/platforms/accton/x86-64/as9817-64/as9817-64o/modules/builds/Makefile
index 2a633594e2..fc172d0d03 100644
--- a/packages/platforms/accton/x86-64/as9817-64/as9817-64o/modules/builds/Makefile
+++ b/packages/platforms/accton/x86-64/as9817-64/as9817-64o/modules/builds/Makefile
@@ -1,4 +1,4 @@
-KERNELS := onl-kernel-4.19-lts-x86-64-all:amd64
+KERNELS := onl-kernel-6.1-lts-x86-64-all:amd64
KMODULES := $(ONL)/packages/platforms/accton/x86-64/as9817-64/src/modules/
VENDOR := accton
BASENAME := x86-64-accton-as9817-64o
diff --git a/packages/platforms/accton/x86-64/as9817-64/as9817-64o/platform-config/r0/src/lib/x86-64-accton-as9817-64o-r0.yml b/packages/platforms/accton/x86-64/as9817-64/as9817-64o/platform-config/r0/src/lib/x86-64-accton-as9817-64o-r0.yml
index 6131536d9c..bce01686e2 100644
--- a/packages/platforms/accton/x86-64/as9817-64/as9817-64o/platform-config/r0/src/lib/x86-64-accton-as9817-64o-r0.yml
+++ b/packages/platforms/accton/x86-64/as9817-64/as9817-64o/platform-config/r0/src/lib/x86-64-accton-as9817-64o-r0.yml
@@ -18,7 +18,7 @@ x86-64-accton-as9817-64o-r0:
--stop=1
kernel:
- <<: *kernel-4-19
+ <<: *kernel-6-1
args: >-
console=ttyS0,115200n8
diff --git a/packages/platforms/accton/x86-64/as9817-64/as9817-64o/platform-config/r0/src/python/x86_64_accton_as9817_64o_r0/__init__.py b/packages/platforms/accton/x86-64/as9817-64/as9817-64o/platform-config/r0/src/python/x86_64_accton_as9817_64o_r0/__init__.py
index 0b2d016266..68245bed4c 100644
--- a/packages/platforms/accton/x86-64/as9817-64/as9817-64o/platform-config/r0/src/python/x86_64_accton_as9817_64o_r0/__init__.py
+++ b/packages/platforms/accton/x86-64/as9817-64/as9817-64o/platform-config/r0/src/python/x86_64_accton_as9817_64o_r0/__init__.py
@@ -1,4 +1,3 @@
-import commands
from itertools import chain
from onl.platform.base import *
from onl.platform.accton import *
@@ -20,7 +19,8 @@ def init_ipmi_dev_intf():
return (True, (ATTEMPTS - attempts) * interval)
for i in range(0, len(init_ipmi_dev)):
- commands.getstatusoutput(init_ipmi_dev[i])
+ process = subprocess.Popen(init_ipmi_dev[i], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = process.communicate()
attempts -= 1
sleep(interval)
@@ -32,7 +32,10 @@ def init_ipmi_oem_cmd():
interval = INTERVAL
while attempts:
- status, output = commands.getstatusoutput('ipmitool raw 0x34 0x95')
+ cmd = "ipmitool raw 0x34 0x95"
+ process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = process.communicate()
+ status = process.returncode
if status:
attempts -= 1
sleep(interval)
diff --git a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-fan.c b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-fan.c
index d0b105a13d..7f89b319db 100644
--- a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-fan.c
+++ b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-fan.c
@@ -684,13 +684,36 @@ static ssize_t show_threshold(struct device *dev, struct device_attribute *da,
return error;
}
+static umode_t as9817_64_fan_is_visible(const void *drvdata,
+ enum hwmon_sensor_types type,
+ u32 attr, int channel)
+{
+ return 0;
+}
+
+static const struct hwmon_channel_info *as9817_64_fan_info[] = {
+ HWMON_CHANNEL_INFO(fan, HWMON_F_ENABLE),
+ NULL,
+};
+
+static const struct hwmon_ops as9817_64_fan_hwmon_ops = {
+ .is_visible = as9817_64_fan_is_visible,
+};
+
+static const struct hwmon_chip_info as9817_64_fan_chip_info = {
+ .ops = &as9817_64_fan_hwmon_ops,
+ .info = as9817_64_fan_info,
+};
+
static int as9817_64_fan_probe(struct platform_device *pdev)
{
int status = 0;
struct device *hwmon_dev;
hwmon_dev = hwmon_device_register_with_info(&pdev->dev, DRVNAME,
- NULL, NULL, as9817_64_fan_groups);
+ NULL, &as9817_64_fan_chip_info,
+ as9817_64_fan_groups);
+
if (IS_ERR(data->hwmon_dev)) {
status = PTR_ERR(data->hwmon_dev);
return status;
diff --git a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-i2c-ocores.c b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-i2c-ocores.c
index bb7db80314..a0187d0ac4 100644
--- a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-i2c-ocores.c
+++ b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-i2c-ocores.c
@@ -795,8 +795,8 @@ static int ocores_i2c_probe(struct platform_device *pdev)
init_waitqueue_head(&i2c->wait);
- //irq = platform_get_irq_optional(pdev, 0);
- irq = platform_get_irq(pdev, 0);
+ irq = platform_get_irq_optional(pdev, 0);
+ /*irq = platform_get_irq(pdev, 0);*/
if (irq == -ENXIO) {
ocores_algorithm.master_xfer = ocores_xfer_polling;
@@ -840,8 +840,8 @@ static int ocores_i2c_probe(struct platform_device *pdev)
/* add in known devices to the bus */
if (pdata) {
for (i = 0; i < pdata->num_devices; i++){
- //i2c_new_client_device(&i2c->adap, pdata->devices + i);
- i2c_new_device(&i2c->adap, pdata->devices + i);
+ i2c_new_client_device(&i2c->adap, pdata->devices + i);
+ /*i2c_new_device(&i2c->adap, pdata->devices + i);*/
}
}
diff --git a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-mux.c b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-mux.c
index 674ae9df44..663020c8a2 100644
--- a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-mux.c
+++ b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-mux.c
@@ -172,11 +172,10 @@ static int as9817_64_mux_probe(struct i2c_client *client,
return ret;
}
-static int as9817_64_mux_remove(struct i2c_client *client)
+static void as9817_64_mux_remove(struct i2c_client *client)
{
struct i2c_mux_core *muxc = i2c_get_clientdata(client);
as9817_64_mux_cleanup(muxc);
- return 0;
}
static struct i2c_driver as9817_64_mux_driver = {
diff --git a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-psu.c b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-psu.c
index c69fdf7be0..c7a6a32c95 100644
--- a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-psu.c
+++ b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-psu.c
@@ -985,13 +985,37 @@ static ssize_t show_string(struct device *dev, struct device_attribute *da,
return error;
}
+static umode_t as9817_64_psu_is_visible(const void *drvdata,
+ enum hwmon_sensor_types type,
+ u32 attr, int channel)
+{
+ return 0;
+}
+
+static const struct hwmon_channel_info *as9817_64_psu_info[] = {
+ HWMON_CHANNEL_INFO(power,
+ HWMON_P_ENABLE),
+ NULL,
+};
+
+static const struct hwmon_ops as9817_64_psu_hwmon_ops = {
+ .is_visible = as9817_64_psu_is_visible,
+};
+
+static const struct hwmon_chip_info as9817_64_psu_chip_info = {
+ .ops = &as9817_64_psu_hwmon_ops,
+ .info = as9817_64_psu_info,
+};
+
static int as9817_64_psu_probe(struct platform_device *pdev)
{
int status = 0;
struct device *hwmon_dev = NULL;
- hwmon_dev = hwmon_device_register_with_info(&pdev->dev, DRVNAME,
- NULL, NULL, as9817_64_psu_groups[pdev->id]);
+ hwmon_dev = hwmon_device_register_with_info(&pdev->dev, DRVNAME,
+ NULL, &as9817_64_psu_chip_info,
+ as9817_64_psu_groups[pdev->id]);
+
if (IS_ERR(hwmon_dev)) {
status = PTR_ERR(hwmon_dev);
return status;
diff --git a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-thermal.c b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-thermal.c
index 0604005849..14555d49ab 100644
--- a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-thermal.c
+++ b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-thermal.c
@@ -435,13 +435,36 @@ static ssize_t show_temp(struct device *dev, struct device_attribute *da,
return status;
}
+static umode_t as9817_64_thermal_is_visible(const void *drvdata,
+ enum hwmon_sensor_types type,
+ u32 attr, int channel)
+{
+ return 0;
+}
+
+static const struct hwmon_channel_info *as9817_64_thermal_info[] = {
+ HWMON_CHANNEL_INFO(temp, HWMON_T_ENABLE),
+ NULL,
+};
+
+static const struct hwmon_ops as9817_64_thermal_hwmon_ops = {
+ .is_visible = as9817_64_thermal_is_visible,
+};
+
+static const struct hwmon_chip_info as9817_64_thermal_chip_info = {
+ .ops = &as9817_64_thermal_hwmon_ops,
+ .info = as9817_64_thermal_info,
+};
+
static int as9817_64_thermal_probe(struct platform_device *pdev)
{
int status = 0;
struct device *hwmon_dev;
- hwmon_dev = hwmon_device_register_with_info(&pdev->dev, DRVNAME,
- NULL, NULL, as9817_64_thermal_groups);
+ hwmon_dev = hwmon_device_register_with_info(&pdev->dev, DRVNAME,
+ NULL, &as9817_64_thermal_chip_info,
+ as9817_64_thermal_groups);
+
if (IS_ERR(data->hwmon_dev)) {
status = PTR_ERR(data->hwmon_dev);
return status;
diff --git a/packages/platforms/accton/x86-64/as9926-24db/modules/PKG.yml b/packages/platforms/accton/x86-64/as9926-24db/modules/PKG.yml
index 3bf5c779ab..c46b045a2c 100644
--- a/packages/platforms/accton/x86-64/as9926-24db/modules/PKG.yml
+++ b/packages/platforms/accton/x86-64/as9926-24db/modules/PKG.yml
@@ -1 +1 @@
-!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as9926-24db ARCH=amd64 KERNELS="onl-kernel-4.19-lts-x86-64-all:amd64"
+!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as9926-24db ARCH=amd64 KERNELS="onl-kernel-6.1-lts-x86-64-all:amd64"
diff --git a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/Makefile b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/Makefile
index 9e1f0f7879..bd931f94d3 100644
--- a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/Makefile
+++ b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/Makefile
@@ -1,5 +1,5 @@
-KERNELS := onl-kernel-4.19-lts-x86-64-all:amd64
-KMODULES := $(wildcard *.c)
+KERNELS := onl-kernel-6.1-lts-x86-64-all:amd64
+KMODULES := src
VENDOR := accton
BASENAME := x86-64-accton-as9926-24db
ARCH := x86_64
diff --git a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/Makefile b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/Makefile
new file mode 100644
index 0000000000..6d9286965a
--- /dev/null
+++ b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/Makefile
@@ -0,0 +1,6 @@
+obj-m += x86-64-accton-as9926-24db-fan.o
+obj-m += x86-64-accton-as9926-24db-leds.o
+obj-m += x86-64-accton-as9926-24db-psu.o
+obj-m += x86-64-accton-as9926-24db-sfp.o
+obj-m += x86-64-accton-as9926-24db-sys.o
+obj-m += x86-64-accton-as9926-24db-thermal.o
\ No newline at end of file
diff --git a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-fan.c b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/x86-64-accton-as9926-24db-fan.c
similarity index 95%
rename from packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-fan.c
rename to packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/x86-64-accton-as9926-24db-fan.c
index 1050c6b15c..98eb1774b3 100644
--- a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-fan.c
+++ b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/x86-64-accton-as9926-24db-fan.c
@@ -75,7 +75,7 @@ enum fan_data_index {
struct ipmi_data {
struct completion read_complete;
struct ipmi_addr address;
- ipmi_user_t user;
+ struct ipmi_user *user;
int interface;
struct kernel_ipmi_msg tx_message;
diff --git a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-leds.c b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/x86-64-accton-as9926-24db-leds.c
similarity index 95%
rename from packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-leds.c
rename to packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/x86-64-accton-as9926-24db-leds.c
index ec344d0882..683b1b7d98 100644
--- a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-leds.c
+++ b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/x86-64-accton-as9926-24db-leds.c
@@ -52,7 +52,7 @@ enum led_data_index {
struct ipmi_data {
struct completion read_complete;
struct ipmi_addr address;
- ipmi_user_t user;
+ struct ipmi_user *user;
int interface;
struct kernel_ipmi_msg tx_message;
diff --git a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-psu.c b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/x86-64-accton-as9926-24db-psu.c
similarity index 99%
rename from packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-psu.c
rename to packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/x86-64-accton-as9926-24db-psu.c
index 2221e48b24..c8e6c9296d 100644
--- a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-psu.c
+++ b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/x86-64-accton-as9926-24db-psu.c
@@ -97,7 +97,7 @@ enum psu_data_index {
struct ipmi_data {
struct completion read_complete;
struct ipmi_addr address;
- ipmi_user_t user;
+ struct ipmi_user *user;
int interface;
struct kernel_ipmi_msg tx_message;
diff --git a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-sfp.c b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/x86-64-accton-as9926-24db-sfp.c
similarity index 96%
rename from packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-sfp.c
rename to packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/x86-64-accton-as9926-24db-sfp.c
index 66bbf76c89..116f516173 100644
--- a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-sfp.c
+++ b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/x86-64-accton-as9926-24db-sfp.c
@@ -87,7 +87,7 @@ static struct as9926_24db_sfp_data *as9926_24db_qsfp_update_reset(void);
struct ipmi_data {
struct completion read_complete;
struct ipmi_addr address;
- ipmi_user_t user;
+ struct ipmi_user *user;
int interface;
struct kernel_ipmi_msg tx_message;
diff --git a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-sys.c b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/x86-64-accton-as9926-24db-sys.c
similarity index 95%
rename from packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-sys.c
rename to packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/x86-64-accton-as9926-24db-sys.c
index da679a6e9a..537ca2f8ed 100644
--- a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-sys.c
+++ b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/x86-64-accton-as9926-24db-sys.c
@@ -57,7 +57,7 @@ static ssize_t show_cpld_version(struct device *dev,
struct ipmi_data {
struct completion read_complete;
struct ipmi_addr address;
- ipmi_user_t user;
+ struct ipmi_user *user;
int interface;
struct kernel_ipmi_msg tx_message;
diff --git a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-thermal.c b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/x86-64-accton-as9926-24db-thermal.c
similarity index 96%
rename from packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-thermal.c
rename to packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/x86-64-accton-as9926-24db-thermal.c
index 1b0b8b7aa2..9665f8ee59 100644
--- a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-thermal.c
+++ b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/src/x86-64-accton-as9926-24db-thermal.c
@@ -51,7 +51,7 @@ enum temp_data_index {
struct ipmi_data {
struct completion read_complete;
struct ipmi_addr address;
- ipmi_user_t user;
+ struct ipmi_user *user;
int interface;
struct kernel_ipmi_msg tx_message;
diff --git a/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/psui.c b/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/psui.c
index a97a64ef79..bf5acb67b0 100644
--- a/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/psui.c
+++ b/packages/platforms/accton/x86-64/as9926-24db/onlp/builds/x86_64_accton_as9926_24db/module/src/psui.c
@@ -101,19 +101,14 @@ int onlp_psui_info_get(onlp_oid_t id, onlp_psu_info_t* info)
pid);
if (ret < 0) {
- AIM_LOG_ERROR("Unable to read status \
- from (%s""psu%d_power_good)\r\n",
+ AIM_LOG_ERROR("Unable to read status from (%s""psu%d_power_good)\r\n",
PSU_SYSFS_PATH, pid);
return ONLP_STATUS_E_INTERNAL;
}
if (val != PSU_STATUS_POWER_GOOD) {
- info->status |= ONLP_PSU_STATUS_FAILED;
- }
-
- if (info->status & ONLP_PSU_STATUS_FAILED) {
- return ONLP_STATUS_OK;
- }
+ info->status |= ONLP_PSU_STATUS_UNPLUGGED;
+ }
/* Read voltage, current and power */
val = 0;
diff --git a/packages/platforms/accton/x86-64/as9926-24db/platform-config/r0/src/lib/x86-64-accton-as9926-24db-r0.yml b/packages/platforms/accton/x86-64/as9926-24db/platform-config/r0/src/lib/x86-64-accton-as9926-24db-r0.yml
index 1ebf5b2e23..6faa9f964c 100644
--- a/packages/platforms/accton/x86-64/as9926-24db/platform-config/r0/src/lib/x86-64-accton-as9926-24db-r0.yml
+++ b/packages/platforms/accton/x86-64/as9926-24db/platform-config/r0/src/lib/x86-64-accton-as9926-24db-r0.yml
@@ -18,7 +18,7 @@ x86-64-accton-as9926-24db-r0:
--stop=1
kernel:
- <<: *kernel-4-19
+ <<: *kernel-6-1
args: >-
console=ttyS0,115200n8
diff --git a/packages/platforms/accton/x86-64/as9926-24db/platform-config/r0/src/python/x86_64_accton_as9926_24db_r0/__init__.py b/packages/platforms/accton/x86-64/as9926-24db/platform-config/r0/src/python/x86_64_accton_as9926_24db_r0/__init__.py
index bbcc984e61..b00733779d 100644
--- a/packages/platforms/accton/x86-64/as9926-24db/platform-config/r0/src/python/x86_64_accton_as9926_24db_r0/__init__.py
+++ b/packages/platforms/accton/x86-64/as9926-24db/platform-config/r0/src/python/x86_64_accton_as9926_24db_r0/__init__.py
@@ -1,4 +1,3 @@
-import commands
import time
from itertools import chain
from onl.platform.base import *
@@ -24,7 +23,8 @@ def init_ipmi_dev_intf():
return (True, (ATTEMPTS - attempts) * interval)
for i in range(0, len(init_ipmi_dev)):
- commands.getstatusoutput(init_ipmi_dev[i])
+ process = subprocess.Popen(init_ipmi_dev[i], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = process.communicate()
attempts -= 1
time.sleep(interval)
@@ -37,7 +37,10 @@ def init_ipmi_oem_cmd():
while attempts:
# to see if BMC is scanning
- status, output = commands.getstatusoutput('ipmitool raw 0x34 0x95')
+ cmd = "ipmitool raw 0x34 0x95"
+ process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = process.communicate()
+ status = process.returncode
if status:
attempts -= 1
time.sleep(interval)
@@ -97,6 +100,9 @@ def baseconfig(self):
]
)
+ # initialize pca9548 idle_state
+ subprocess.call('echo -2 | tee /sys/bus/i2c/drivers/pca954x/*-00*/idle_state > /dev/null', shell=True)
+
# initialize QSFP devices
for port in range(1, 25):
self.new_i2c_device('optoe1', 0x50, port+8)